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