A Bitmap library created a while back. Probably still works...

Dependencies:   mbed

Committer:
EricWieser
Date:
Wed Sep 08 18:18:42 2010 +0000
Revision:
0:ded454e83f81
Uploaded through the new system

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EricWieser 0:ded454e83f81 1 /**********************************************************/
EricWieser 0:ded454e83f81 2 /*BitmapFile.h */
EricWieser 0:ded454e83f81 3 /**********************************************************/
EricWieser 0:ded454e83f81 4
EricWieser 0:ded454e83f81 5 #include "mbed.h"
EricWieser 0:ded454e83f81 6
EricWieser 0:ded454e83f81 7 /* Class: BitmapFile
EricWieser 0:ded454e83f81 8 * A parser for bitmap files.
EricWieser 0:ded454e83f81 9 */
EricWieser 0:ded454e83f81 10 class BitmapFile
EricWieser 0:ded454e83f81 11 {
EricWieser 0:ded454e83f81 12 private:
EricWieser 0:ded454e83f81 13 FILE *m_pFile;
EricWieser 0:ded454e83f81 14 char *m_fileName;
EricWieser 0:ded454e83f81 15 int m_rowsize;
EricWieser 0:ded454e83f81 16
EricWieser 0:ded454e83f81 17 enum headerType { BITMAPCOREHEADER = 12,
EricWieser 0:ded454e83f81 18 BITMAPCOREHEADER2 = 64,
EricWieser 0:ded454e83f81 19 BITMAPINFOHEADER = 40,
EricWieser 0:ded454e83f81 20 BITMAPV4HEADER = 108,
EricWieser 0:ded454e83f81 21 BITMAPV5HEADER = 124};
EricWieser 0:ded454e83f81 22
EricWieser 0:ded454e83f81 23 enum compressType { BI_RGB,
EricWieser 0:ded454e83f81 24 BI_RLE8,
EricWieser 0:ded454e83f81 25 BI_RLE4,
EricWieser 0:ded454e83f81 26 BI_BITFIELDS,
EricWieser 0:ded454e83f81 27 BI_JPEG,
EricWieser 0:ded454e83f81 28 BI_PNG};
EricWieser 0:ded454e83f81 29
EricWieser 0:ded454e83f81 30 /* Struct: BMPHeader
EricWieser 0:ded454e83f81 31 *
EricWieser 0:ded454e83f81 32 * The BMP header of the bitmap is read into this.
EricWieser 0:ded454e83f81 33 *
EricWieser 0:ded454e83f81 34 * b - the first byte of the header. Should equal 'B'.
EricWieser 0:ded454e83f81 35 * m - the second byte of the header. Should equal 'M'.
EricWieser 0:ded454e83f81 36 * filesize - the size of the whole file, in bytes.
EricWieser 0:ded454e83f81 37 * reserved 1 and 2 - data specific to the applicaton which created the bitmap.
EricWieser 0:ded454e83f81 38 * offset - the offset at which the actual bitmap begins
EricWieser 0:ded454e83f81 39 */
EricWieser 0:ded454e83f81 40
EricWieser 0:ded454e83f81 41 __packed struct
EricWieser 0:ded454e83f81 42 {
EricWieser 0:ded454e83f81 43 char b:8;
EricWieser 0:ded454e83f81 44 char m:8;
EricWieser 0:ded454e83f81 45 int filesize:32;
EricWieser 0:ded454e83f81 46 int reserved1:16;
EricWieser 0:ded454e83f81 47 int reserved2:16;
EricWieser 0:ded454e83f81 48 int offset:32;
EricWieser 0:ded454e83f81 49
EricWieser 0:ded454e83f81 50 } BMPHeader;
EricWieser 0:ded454e83f81 51
EricWieser 0:ded454e83f81 52
EricWieser 0:ded454e83f81 53 /* Struct: DIBHeader
EricWieser 0:ded454e83f81 54 *
EricWieser 0:ded454e83f81 55 * The DIB header of the bitmap is read into this.
EricWieser 0:ded454e83f81 56 *
EricWieser 0:ded454e83f81 57 * headerlength - the length of the header. Should equal 40.
EricWieser 0:ded454e83f81 58 * height - the height of the bitmap.
EricWieser 0:ded454e83f81 59 * width - the width of the bitmap.
EricWieser 0:ded454e83f81 60 * cplanes - the number of color planes. Should equal 1.
EricWieser 0:ded454e83f81 61 * colordepth - the number of bits per pixel.
EricWieser 0:ded454e83f81 62 * compression - the compression method used.
EricWieser 0:ded454e83f81 63 * datasize - the size of the bitmap data, in bytes.
EricWieser 0:ded454e83f81 64 */
EricWieser 0:ded454e83f81 65
EricWieser 0:ded454e83f81 66 int m_headerlength;
EricWieser 0:ded454e83f81 67 __packed struct
EricWieser 0:ded454e83f81 68 {
EricWieser 0:ded454e83f81 69 int width:32;
EricWieser 0:ded454e83f81 70 int height:32;
EricWieser 0:ded454e83f81 71 int cplanes:16;
EricWieser 0:ded454e83f81 72 int colordepth:16;
EricWieser 0:ded454e83f81 73 int compression:32;
EricWieser 0:ded454e83f81 74 int datasize:32;
EricWieser 0:ded454e83f81 75 int hres:32;
EricWieser 0:ded454e83f81 76 int vres:32;
EricWieser 0:ded454e83f81 77 int numpalettecolors:32;
EricWieser 0:ded454e83f81 78 int importantcolors:32;
EricWieser 0:ded454e83f81 79 } DIBHeader;
EricWieser 0:ded454e83f81 80
EricWieser 0:ded454e83f81 81
EricWieser 0:ded454e83f81 82 public:
EricWieser 0:ded454e83f81 83 /* Constructor: BitmapFile
EricWieser 0:ded454e83f81 84 * Create the BitmapFile class, and call <Initialize>
EricWieser 0:ded454e83f81 85 *
EricWieser 0:ded454e83f81 86 * Parameters:
EricWieser 0:ded454e83f81 87 * fname - The path of the file to open.
EricWieser 0:ded454e83f81 88 */
EricWieser 0:ded454e83f81 89 BitmapFile(char* fname);
EricWieser 0:ded454e83f81 90 ~BitmapFile();
EricWieser 0:ded454e83f81 91
EricWieser 0:ded454e83f81 92 /* Function: Initialize
EricWieser 0:ded454e83f81 93 * Parses the headers of the bitmap.
EricWieser 0:ded454e83f81 94 *
EricWieser 0:ded454e83f81 95 * Returns:
EricWieser 0:ded454e83f81 96 * Whether the bitmap is valid.
EricWieser 0:ded454e83f81 97 */
EricWieser 0:ded454e83f81 98 bool Initialize(); //parses the header
EricWieser 0:ded454e83f81 99
EricWieser 0:ded454e83f81 100 /* Function: open
EricWieser 0:ded454e83f81 101 * Opens the bitmap for reading, if not already open.
EricWieser 0:ded454e83f81 102 */
EricWieser 0:ded454e83f81 103 void open();
EricWieser 0:ded454e83f81 104
EricWieser 0:ded454e83f81 105 /* Function: close
EricWieser 0:ded454e83f81 106 * Closes the bitmap.
EricWieser 0:ded454e83f81 107 */
EricWieser 0:ded454e83f81 108 void close();
EricWieser 0:ded454e83f81 109
EricWieser 0:ded454e83f81 110 /***BMP Header gets begin***/
EricWieser 0:ded454e83f81 111 int getFileSize();
EricWieser 0:ded454e83f81 112 int getReserved1();
EricWieser 0:ded454e83f81 113 int getReserved2();
EricWieser 0:ded454e83f81 114 int getOffset();
EricWieser 0:ded454e83f81 115
EricWieser 0:ded454e83f81 116 /***DIB Header gets begin***/
EricWieser 0:ded454e83f81 117 int getHeaderType();
EricWieser 0:ded454e83f81 118 int getHeight();
EricWieser 0:ded454e83f81 119 int getWidth();
EricWieser 0:ded454e83f81 120 int getCPlanes();
EricWieser 0:ded454e83f81 121 int getColorDepth();
EricWieser 0:ded454e83f81 122 int getCompression();
EricWieser 0:ded454e83f81 123 int getDataSize();
EricWieser 0:ded454e83f81 124 int getHRes();
EricWieser 0:ded454e83f81 125 int getVRes();
EricWieser 0:ded454e83f81 126 int getNumPaletteColors();
EricWieser 0:ded454e83f81 127 int getImportantColors();
EricWieser 0:ded454e83f81 128 /****DIB Header gets end****/
EricWieser 0:ded454e83f81 129
EricWieser 0:ded454e83f81 130 /******Data gets begin******/
EricWieser 0:ded454e83f81 131 /* Function: getPixel
EricWieser 0:ded454e83f81 132 * Gets the color of a pixel
EricWieser 0:ded454e83f81 133 *
EricWieser 0:ded454e83f81 134 * Parameters:
EricWieser 0:ded454e83f81 135 * x - The x coordinate of the pixel.
EricWieser 0:ded454e83f81 136 * y - The y coordinate of the pixel.
EricWieser 0:ded454e83f81 137 * closefile - if specified, close the file after reading
EricWieser 0:ded454e83f81 138 *
EricWieser 0:ded454e83f81 139 * Returns:
EricWieser 0:ded454e83f81 140 * the color of the pixel, in hexadecimal.
EricWieser 0:ded454e83f81 141 */
EricWieser 0:ded454e83f81 142 int getPixel(int x, int y, bool closefile = true);
EricWieser 0:ded454e83f81 143 /* Function: getRow
EricWieser 0:ded454e83f81 144 * Gets the colors of a row
EricWieser 0:ded454e83f81 145 *
EricWieser 0:ded454e83f81 146 * Parameters:
EricWieser 0:ded454e83f81 147 * row - The number of the row..
EricWieser 0:ded454e83f81 148 * closefile - if specified, close the file after reading
EricWieser 0:ded454e83f81 149 *
EricWieser 0:ded454e83f81 150 * Returns:
EricWieser 0:ded454e83f81 151 * An array of the colors of the pixels, in hexadecimal.
EricWieser 0:ded454e83f81 152 */
EricWieser 0:ded454e83f81 153 int *getRow(int row, bool closefile = true);
EricWieser 0:ded454e83f81 154 int *getRowBW(int row, bool closefile = true);
EricWieser 0:ded454e83f81 155 char *getRowBitstream(int row, bool closefile = true);
EricWieser 0:ded454e83f81 156 /*******Data gets end*******/
EricWieser 0:ded454e83f81 157 int getRowSize();
EricWieser 0:ded454e83f81 158 };