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