diff options
Diffstat (limited to 'lib/bmp_layout.h')
-rw-r--r-- | lib/bmp_layout.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/bmp_layout.h b/lib/bmp_layout.h new file mode 100644 index 0000000000..d7db537539 --- /dev/null +++ b/lib/bmp_layout.h @@ -0,0 +1,84 @@ +/* (C) Copyright 2002 + * Detlev Zundel, DENX Software Engineering, dzu@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/************************************************************************/ +/* ** Layout of a bmp file */ +/************************************************************************/ + +#ifndef _BMP_H_ +#define _BMP_H_ + +struct bmp_color_table_entry { + __u8 blue; + __u8 green; + __u8 red; + __u8 reserved; +} __attribute__ ((packed)); + +/* When accessing these fields, remember that they are stored in little + endian format, so use linux macros, e.g. le32_to_cpu(width) */ + +struct bmp_header { + /* Header */ + char signature[2]; + __u32 file_size; + __u32 reserved; + __u32 data_offset; + /* InfoHeader */ + __u32 size; + __u32 width; + __u32 height; + __u16 planes; + __u16 bit_count; + __u32 compression; + __u32 image_size; + __u32 x_pixels_per_m; + __u32 y_pixels_per_m; + __u32 colors_used; + __u32 colors_important; + /* ColorTable */ + +} __attribute__ ((packed)); + +struct bmp_image { + struct bmp_header header; + /* We use a zero sized array just as a placeholder for variable + sized array */ + struct bmp_color_table_entry color_table[0]; +}; + +/* Data in the bmp_image is aligned to this length */ +#define BMP_DATA_ALIGN 4 + +/* Constants for the compression field */ +#define BMP_BI_RGB 0 +#define BMP_BI_RLE8 1 +#define BMP_BI_RLE4 2 + +#ifdef CONFIG_BMP +int bmp_render_file(struct fb_info *info, const char* bmpfile, void* fb, + int startx, int starty, int xres, int yres, void* offscreenbuf); +#else +static inline int bmp_render_file(struct fb_info *info, const char* bmpfile, void* fb, + int startx, int starty, int xres, int yres, void* offscreenbuf) +{ + return -ENOSYS; +} +#endif + +#endif /* _BMP_H_ */ |