summaryrefslogtreecommitdiffstats
path: root/src/bmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bmp.c')
-rw-r--r--src/bmp.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/bmp.c b/src/bmp.c
new file mode 100644
index 0000000..e8cdd87
--- /dev/null
+++ b/src/bmp.c
@@ -0,0 +1,64 @@
+void GetBMPHeaderInfo (unsigned char *Image,unsigned int *offset,unsigned int *x_size,unsigned int *y_size, unsigned char *depth)
+{
+ *offset = ((int)Image[13] << 24) + ((int)Image[12] << 16) + ((int)Image[11] << 8) + Image[10];
+ *x_size = ((int)Image[21] << 24) + ((int)Image[20] << 16) + ((int)Image[19] << 8) + Image[18];
+ *y_size = ((int)Image[25] << 24) + ((int)Image[24] << 16) + ((int)Image[23] << 8) + Image[22];
+ *depth = ((int)Image[29] << 8) + Image[28];
+}
+
+void WriteBMPHeaderInfo(unsigned char *Image,unsigned int offset,unsigned int x_size,unsigned int y_size, unsigned char depth)
+{
+ unsigned int ByteSize, i;
+ ByteSize = (x_size*y_size*(depth/8));
+ // 2 - signature, must be 4D42 hex
+ Image[0]=0x42;
+ Image[1]=0x4d;
+ // 4 - size of BMP file in bytes (unreliable)
+ Image[5] = (ByteSize+offset) >> 24;
+ Image[4] = (ByteSize+offset) >> 16;
+ Image[3] = (ByteSize+offset) >> 8;
+ Image[2] = (ByteSize+offset);
+ // 4 - reserved, must be zero
+ Image[6] = 0;
+ Image[7] = 0;
+ Image[8] = 0;
+ Image[9] = 0;
+ // 4 - offset
+ Image[13] = offset >> 24;
+ Image[12] = offset >> 16;
+ Image[11] = offset >> 8;
+ Image[10] = offset;
+ // 4 - size of BITMAPINFOHEADER structure, must be 40
+ Image[14] = 40;
+ Image[15] = 0;
+ Image[16] = 0;
+ Image[17] = 0;
+ // 4 - x_size
+ Image[21] = x_size >> 24;
+ Image[20] = x_size >> 16;
+ Image[19] = x_size >> 8;
+ Image[18] = x_size;
+ // 4 - y_size
+ Image[25] = y_size >> 24;
+ Image[24] = y_size >> 16;
+ Image[23] = y_size >> 8;
+ Image[22] = y_size;
+ // 2 - number of planes in the image, must be 1
+ Image[26] = 1;
+ Image[27] = 0;
+ // 2 - depth
+ Image[29]= 0x0;
+ Image[28]= depth;
+ // 4 - compression type (0=none, 1=RLE-8, 2=RLE-4)
+ Image[30] = 0;
+ Image[31] = 0;
+ Image[32] = 0;
+ Image[33] = 0;
+ // 34 4 - size of image data in bytes (including padding)
+ Image[37] = ByteSize >> 24;
+ Image[36] = ByteSize >> 16;
+ Image[35] = ByteSize >> 8;
+ Image[34] = ByteSize;
+ for(i = 38; i < offset; i++)
+ Image[i]=0;
+}