xref: /rk3399_rockchip-uboot/include/bmp_layout.h (revision 1a4596601fd395f3afb8f82f3f840c5e00bdd57a)
1059ae173Swdenk /* (C) Copyright 2002
2059ae173Swdenk  * Detlev Zundel, DENX Software Engineering, dzu@denx.de.
3059ae173Swdenk  *
4*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
5059ae173Swdenk  */
6059ae173Swdenk 
7059ae173Swdenk /************************************************************************/
8059ae173Swdenk /* ** Layout of a bmp file						*/
9059ae173Swdenk /************************************************************************/
10059ae173Swdenk 
11059ae173Swdenk #ifndef _BMP_H_
12059ae173Swdenk #define _BMP_H_
13059ae173Swdenk 
14059ae173Swdenk typedef struct bmp_color_table_entry {
15059ae173Swdenk 	__u8	blue;
16059ae173Swdenk 	__u8	green;
17059ae173Swdenk 	__u8	red;
18059ae173Swdenk 	__u8	reserved;
19059ae173Swdenk } __attribute__ ((packed)) bmp_color_table_entry_t;
20059ae173Swdenk 
21059ae173Swdenk /* When accessing these fields, remember that they are stored in little
22059ae173Swdenk    endian format, so use linux macros, e.g. le32_to_cpu(width)          */
23059ae173Swdenk 
24059ae173Swdenk typedef struct bmp_header {
25059ae173Swdenk 	/* Header */
26059ae173Swdenk 	char signature[2];
27059ae173Swdenk 	__u32	file_size;
28059ae173Swdenk 	__u32	reserved;
29059ae173Swdenk 	__u32	data_offset;
30059ae173Swdenk 	/* InfoHeader */
31059ae173Swdenk 	__u32	size;
32059ae173Swdenk 	__u32	width;
33059ae173Swdenk 	__u32	height;
34059ae173Swdenk 	__u16	planes;
35059ae173Swdenk 	__u16	bit_count;
36059ae173Swdenk 	__u32	compression;
37059ae173Swdenk 	__u32	image_size;
38059ae173Swdenk 	__u32	x_pixels_per_m;
39059ae173Swdenk 	__u32	y_pixels_per_m;
40059ae173Swdenk 	__u32	colors_used;
41059ae173Swdenk 	__u32	colors_important;
42059ae173Swdenk 	/* ColorTable */
43059ae173Swdenk 
44059ae173Swdenk } __attribute__ ((packed)) bmp_header_t;
45059ae173Swdenk 
46059ae173Swdenk typedef struct bmp_image {
47059ae173Swdenk 	bmp_header_t header;
48059ae173Swdenk 	/* We use a zero sized array just as a placeholder for variable
49059ae173Swdenk 	   sized array */
50059ae173Swdenk 	bmp_color_table_entry_t color_table[0];
51059ae173Swdenk } bmp_image_t;
52059ae173Swdenk 
53059ae173Swdenk /* Data in the bmp_image is aligned to this length */
54059ae173Swdenk #define BMP_DATA_ALIGN	4
55059ae173Swdenk 
56059ae173Swdenk /* Constants for the compression field */
57059ae173Swdenk #define BMP_BI_RGB	0
58059ae173Swdenk #define BMP_BI_RLE8	1
59059ae173Swdenk #define BMP_BI_RLE4	2
60059ae173Swdenk 
61059ae173Swdenk #endif							/* _BMP_H_ */
62