xref: /OK3568_Linux_fs/u-boot/include/bmp_layout.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* (C) Copyright 2002
2*4882a593Smuzhiyun  * Detlev Zundel, DENX Software Engineering, dzu@denx.de.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun /************************************************************************/
8*4882a593Smuzhiyun /* ** Layout of a bmp file						*/
9*4882a593Smuzhiyun /************************************************************************/
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #ifndef _BMP_H_
12*4882a593Smuzhiyun #define _BMP_H_
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun struct __packed bmp_color_table_entry {
15*4882a593Smuzhiyun 	__u8	blue;
16*4882a593Smuzhiyun 	__u8	green;
17*4882a593Smuzhiyun 	__u8	red;
18*4882a593Smuzhiyun 	__u8	reserved;
19*4882a593Smuzhiyun };
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun /* When accessing these fields, remember that they are stored in little
22*4882a593Smuzhiyun    endian format, so use linux macros, e.g. le32_to_cpu(width)          */
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun struct __packed bmp_header {
25*4882a593Smuzhiyun 	/* Header */
26*4882a593Smuzhiyun 	char signature[2];
27*4882a593Smuzhiyun 	__u32	file_size;
28*4882a593Smuzhiyun 	__u32	reserved;
29*4882a593Smuzhiyun 	__u32	data_offset;
30*4882a593Smuzhiyun 	/* InfoHeader */
31*4882a593Smuzhiyun 	__u32	size;
32*4882a593Smuzhiyun 	__u32	width;
33*4882a593Smuzhiyun 	__u32	height;
34*4882a593Smuzhiyun 	__u16	planes;
35*4882a593Smuzhiyun 	__u16	bit_count;
36*4882a593Smuzhiyun 	__u32	compression;
37*4882a593Smuzhiyun 	__u32	image_size;
38*4882a593Smuzhiyun 	__u32	x_pixels_per_m;
39*4882a593Smuzhiyun 	__u32	y_pixels_per_m;
40*4882a593Smuzhiyun 	__u32	colors_used;
41*4882a593Smuzhiyun 	__u32	colors_important;
42*4882a593Smuzhiyun 	/* ColorTable */
43*4882a593Smuzhiyun };
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun struct bmp_image {
46*4882a593Smuzhiyun 	struct bmp_header header;
47*4882a593Smuzhiyun 	/* We use a zero sized array just as a placeholder for variable
48*4882a593Smuzhiyun 	   sized array */
49*4882a593Smuzhiyun 	struct bmp_color_table_entry color_table[0];
50*4882a593Smuzhiyun };
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun /* Data in the bmp_image is aligned to this length */
53*4882a593Smuzhiyun #define BMP_DATA_ALIGN	4
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /* Constants for the compression field */
56*4882a593Smuzhiyun #define BMP_BI_RGB	0
57*4882a593Smuzhiyun #define BMP_BI_RLE8	1
58*4882a593Smuzhiyun #define BMP_BI_RLE4	2
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun #endif							/* _BMP_H_ */
61