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
13struct __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
23struct __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
44struct 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