brw1

Dependencies:   mbed

Committer:
reiniermarcel
Date:
Mon Nov 30 11:13:18 2015 +0000
Revision:
0:a115ff47d1c1
ok

Who changed what in which revision?

UserRevisionLine numberNew contents of line
reiniermarcel 0:a115ff47d1c1 1 //
reiniermarcel 0:a115ff47d1c1 2 // Windows BMP file definitions.
reiniermarcel 0:a115ff47d1c1 3 //
reiniermarcel 0:a115ff47d1c1 4 // Adapted from code written by Michael Sweet from Paul Bourke's
reiniermarcel 0:a115ff47d1c1 5 // web site: http://paulbourke.net/dataformats/bmp/
reiniermarcel 0:a115ff47d1c1 6 //
reiniermarcel 0:a115ff47d1c1 7
reiniermarcel 0:a115ff47d1c1 8 #ifndef _BITMAP_H_
reiniermarcel 0:a115ff47d1c1 9 #define _BITMAP_H_
reiniermarcel 0:a115ff47d1c1 10
reiniermarcel 0:a115ff47d1c1 11 #include <mbed.h>
reiniermarcel 0:a115ff47d1c1 12
reiniermarcel 0:a115ff47d1c1 13 // BITMAPFILEHEADER
reiniermarcel 0:a115ff47d1c1 14 // BITMAPINFOHEADER
reiniermarcel 0:a115ff47d1c1 15 // Optional Palette
reiniermarcel 0:a115ff47d1c1 16 // Raw Data
reiniermarcel 0:a115ff47d1c1 17
reiniermarcel 0:a115ff47d1c1 18 //
reiniermarcel 0:a115ff47d1c1 19 // Bitmap file data structures
reiniermarcel 0:a115ff47d1c1 20 //
reiniermarcel 0:a115ff47d1c1 21 // must align to 2-byte boundaries so it doesn't alter the memory image when
reiniermarcel 0:a115ff47d1c1 22 // bytes are read from the file system into this footprint.
reiniermarcel 0:a115ff47d1c1 23 #pragma push
reiniermarcel 0:a115ff47d1c1 24 #pragma pack(2)
reiniermarcel 0:a115ff47d1c1 25
reiniermarcel 0:a115ff47d1c1 26 typedef struct /**** BMP file header structure ****/
reiniermarcel 0:a115ff47d1c1 27 {
reiniermarcel 0:a115ff47d1c1 28 uint16_t bfType; /* Magic number for file */
reiniermarcel 0:a115ff47d1c1 29 uint32_t bfSize; /* Size of file */
reiniermarcel 0:a115ff47d1c1 30 uint16_t bfReserved1; /* Reserved */
reiniermarcel 0:a115ff47d1c1 31 uint16_t bfReserved2; /* ... */
reiniermarcel 0:a115ff47d1c1 32 uint32_t bfOffBits; /* Offset to bitmap data */
reiniermarcel 0:a115ff47d1c1 33 } BITMAPFILEHEADER;
reiniermarcel 0:a115ff47d1c1 34
reiniermarcel 0:a115ff47d1c1 35 typedef struct /**** BMP file info structure ****/
reiniermarcel 0:a115ff47d1c1 36 {
reiniermarcel 0:a115ff47d1c1 37 uint32_t biSize; /* Size of info header */
reiniermarcel 0:a115ff47d1c1 38 uint32_t biWidth; /* Width of image */
reiniermarcel 0:a115ff47d1c1 39 uint32_t biHeight; /* Height of image */
reiniermarcel 0:a115ff47d1c1 40 uint16_t biPlanes; /* Number of color planes */
reiniermarcel 0:a115ff47d1c1 41 uint16_t biBitCount; /* Number of bits per pixel */
reiniermarcel 0:a115ff47d1c1 42 uint32_t biCompression; /* Type of compression to use */
reiniermarcel 0:a115ff47d1c1 43 uint32_t biSizeImage; /* Size of image data */
reiniermarcel 0:a115ff47d1c1 44 int32_t biXPelsPerMeter; /* X pixels per meter */
reiniermarcel 0:a115ff47d1c1 45 int32_t biYPelsPerMeter; /* Y pixels per meter */
reiniermarcel 0:a115ff47d1c1 46 uint32_t biClrUsed; /* Number of colors used */
reiniermarcel 0:a115ff47d1c1 47 uint32_t biClrImportant; /* Number of important colors */
reiniermarcel 0:a115ff47d1c1 48 } BITMAPINFOHEADER;
reiniermarcel 0:a115ff47d1c1 49 #pragma pop
reiniermarcel 0:a115ff47d1c1 50
reiniermarcel 0:a115ff47d1c1 51 #define BF_TYPE 0x4D42 /* "MB" */
reiniermarcel 0:a115ff47d1c1 52
reiniermarcel 0:a115ff47d1c1 53 /*
reiniermarcel 0:a115ff47d1c1 54 * Constants for the biCompression field...
reiniermarcel 0:a115ff47d1c1 55 */
reiniermarcel 0:a115ff47d1c1 56
reiniermarcel 0:a115ff47d1c1 57 # define BI_RGB 0 /* No compression - straight BGR data */
reiniermarcel 0:a115ff47d1c1 58 # define BI_RLE8 1 /* 8-bit run-length compression */
reiniermarcel 0:a115ff47d1c1 59 # define BI_RLE4 2 /* 4-bit run-length compression */
reiniermarcel 0:a115ff47d1c1 60 # define BI_BITFIELDS 3 /* RGB bitmap with RGB masks */
reiniermarcel 0:a115ff47d1c1 61
reiniermarcel 0:a115ff47d1c1 62 typedef struct /**** Colormap entry structure ****/
reiniermarcel 0:a115ff47d1c1 63 {
reiniermarcel 0:a115ff47d1c1 64 uint8_t rgbBlue; /* Blue value */
reiniermarcel 0:a115ff47d1c1 65 uint8_t rgbGreen; /* Green value */
reiniermarcel 0:a115ff47d1c1 66 uint8_t rgbRed; /* Red value */
reiniermarcel 0:a115ff47d1c1 67 uint8_t rgbReserved; /* Reserved */
reiniermarcel 0:a115ff47d1c1 68 } RGBQUAD;
reiniermarcel 0:a115ff47d1c1 69
reiniermarcel 0:a115ff47d1c1 70 //typedef struct /**** Bitmap information structure ****/
reiniermarcel 0:a115ff47d1c1 71 // {
reiniermarcel 0:a115ff47d1c1 72 // BITMAPINFOHEADER bmiHeader; /* Image header */
reiniermarcel 0:a115ff47d1c1 73 // RGBQUAD bmiColors[256]; /* Image colormap */
reiniermarcel 0:a115ff47d1c1 74 // } BITMAPINFO;
reiniermarcel 0:a115ff47d1c1 75
reiniermarcel 0:a115ff47d1c1 76
reiniermarcel 0:a115ff47d1c1 77 #pragma push
reiniermarcel 0:a115ff47d1c1 78 #pragma pack(2)
reiniermarcel 0:a115ff47d1c1 79
reiniermarcel 0:a115ff47d1c1 80 typedef struct /**** ICO file header structure ****/
reiniermarcel 0:a115ff47d1c1 81 {
reiniermarcel 0:a115ff47d1c1 82 uint16_t Reserved_zero; // Always zero
reiniermarcel 0:a115ff47d1c1 83 uint16_t icType; // 1 for .ico, 2 for .cur
reiniermarcel 0:a115ff47d1c1 84 uint16_t icImageCount; // number of images in the file
reiniermarcel 0:a115ff47d1c1 85 } ICOFILEHEADER;
reiniermarcel 0:a115ff47d1c1 86
reiniermarcel 0:a115ff47d1c1 87 typedef struct /**** ICO file Directory Entry structure (1 or more) ****/
reiniermarcel 0:a115ff47d1c1 88 {
reiniermarcel 0:a115ff47d1c1 89 uint8_t biWidth; /* Width of image */
reiniermarcel 0:a115ff47d1c1 90 uint8_t biHeight; /* Height of image */
reiniermarcel 0:a115ff47d1c1 91 uint8_t biClrUsed; /* Number of colors used */
reiniermarcel 0:a115ff47d1c1 92 uint8_t Reserved_zero;
reiniermarcel 0:a115ff47d1c1 93 uint16_t biPlanes; /* Number of color planes (ICO should be 0 or 1, CUR horz hotspot */
reiniermarcel 0:a115ff47d1c1 94 uint16_t biBitCount; /* Number of bits per pixel (ICO bits per pixel, CUR vert hotspot */
reiniermarcel 0:a115ff47d1c1 95 uint32_t biSizeImage; /* Size of image data */
reiniermarcel 0:a115ff47d1c1 96 uint32_t bfOffBits; /* Offset into file for the bitmap data */
reiniermarcel 0:a115ff47d1c1 97 } ICODIRENTRY;
reiniermarcel 0:a115ff47d1c1 98 #pragma pop
reiniermarcel 0:a115ff47d1c1 99
reiniermarcel 0:a115ff47d1c1 100 #define IC_TYPE 0x0001 /* 1 = ICO (icon), 2 = CUR (cursor) */
reiniermarcel 0:a115ff47d1c1 101
reiniermarcel 0:a115ff47d1c1 102 #endif // _BITMAP_H_