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