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