2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef __BMP_H__
|
|
|
|
|
#define __BMP_H__
|
|
|
|
|
#include "base.h"
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
|
|
|
|
//ALIENTEK STM32F407<30><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-bmp<6D><70><EFBFBD>벿<EFBFBD><EBB2BF>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2014/5/15
|
|
|
|
|
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
|
|
|
|
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
|
|
|
|
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2014-2024
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//All rights reserved
|
|
|
|
|
//********************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//V1.1 20140722
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><EFBFBD>minibmp_decode<64><65><EFBFBD><EFBFBD>,ʹͼƬ<CDBC><C6AC><EFBFBD>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//////////////////////////////////////////<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>///////////////////////////////
|
|
|
|
|
#define BMP_USE_MALLOC 1 //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>malloc,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ʹ<EFBFBD><CAB9>malloc
|
|
|
|
|
#define BMP_DBUF_SIZE 2048 //<2F><><EFBFBD><EFBFBD>bmp<6D><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С(<28><><EFBFBD><EFBFBD>ӦΪLCD<43><44><EFBFBD><EFBFBD>*3)
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//////////////////////////////////////////////END/////////////////////////////////
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//BMP<4D><50>Ϣͷ
|
2025-06-28 18:16:25 +08:00
|
|
|
|
typedef struct __packed
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 biSize ; //˵<><CBB5>BITMAPINFOHEADER<45>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
long biWidth ; //˵<><CBB5>ͼ<EFBFBD><CDBC><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
|
|
|
|
long biHeight ; //˵<><CBB5>ͼ<EFBFBD><CDBC><EFBFBD>ĸ߶ȣ<DFB6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ
|
|
|
|
|
u16 biPlanes ; //ΪĿ<CEAA><C4BF><EFBFBD>豸˵<E8B1B8><CBB5>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD>Ϊ1
|
|
|
|
|
u16 biBitCount ; //˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>ֵΪ1<CEAA><31>4<EFBFBD><34>8<EFBFBD><38>16<31><36>24<32><34><EFBFBD><EFBFBD>32
|
|
|
|
|
u32 biCompression ; //˵<><CBB5>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD><CDA1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ֮һ<D6AE><D2BB>
|
|
|
|
|
//BI_RGB<47><42>û<EFBFBD><C3BB>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
|
|
|
|
|
//BI_RLE8<45><38>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD>ص<EFBFBD>RLEѹ<45><D1B9><EFBFBD><EFBFBD><EFBFBD>룬ѹ<EBA3AC><D1B9><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>2<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>(<28>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>)<29><>
|
|
|
|
|
//BI_RLE4<45><34>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD>ص<EFBFBD>RLEѹ<45><D1B9><EFBFBD><EFBFBD><EFBFBD>룬ѹ<EBA3AC><D1B9><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>2<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//BI_BITFIELDS<44><53>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>صı<D8B5><C4B1><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
u32 biSizeImage ; //˵<><CBB5>ͼ<EFBFBD><CDBC><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BI_RGB<47><42>ʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
|
|
|
|
|
long biXPelsPerMeter ; //˵<><CBB5>ˮƽ<CBAE>ֱ<EFBFBD><D6B1>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>ױ<EFBFBD>ʾ
|
|
|
|
|
long biYPelsPerMeter ; //˵<><CBB5><EFBFBD><EFBFBD>ֱ<EFBFBD>ֱ<EFBFBD><D6B1>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>ױ<EFBFBD>ʾ
|
|
|
|
|
u32 biClrUsed ; //˵<><CBB5>λͼʵ<CDBC><CAB5>ʹ<EFBFBD>õIJ<C3B5>ɫ<EFBFBD><C9AB><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
u32 biClrImportant ; //˵<><CBB5><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ҪӰ<D2AA><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}BITMAPINFOHEADER ;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//BMPͷ<50>ļ<EFBFBD>
|
2025-06-28 18:16:25 +08:00
|
|
|
|
typedef struct __packed
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u16 bfType ; //<2F>ļ<EFBFBD><C4BC><EFBFBD>־.ֻ<><D6BB>'BM',<2C><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>BMPλͼ<CEBB><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
u32 bfSize ; //<2F>ļ<EFBFBD><C4BC><EFBFBD>С,ռ<>ĸ<EFBFBD><C4B8>ֽ<EFBFBD>
|
|
|
|
|
u16 bfReserved1 ;//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
u16 bfReserved2 ;//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
u32 bfOffBits ; //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʼ<EFBFBD><CABC>λͼ<CEBB><CDBC><EFBFBD><EFBFBD>(bitmap data)<29><>ʼ֮<CABC><D6AE><EFBFBD>ĵ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}BITMAPFILEHEADER ;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ɫ<EFBFBD><C9AB>
|
2025-06-28 18:16:25 +08:00
|
|
|
|
typedef struct __packed
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u8 rgbBlue ; //ָ<><D6B8><EFBFBD><EFBFBD>ɫǿ<C9AB><C7BF>
|
|
|
|
|
u8 rgbGreen ; //ָ<><D6B8><EFBFBD><EFBFBD>ɫǿ<C9AB><C7BF>
|
|
|
|
|
u8 rgbRed ; //ָ<><D6B8><EFBFBD><EFBFBD>ɫǿ<C9AB><C7BF>
|
|
|
|
|
u8 rgbReserved ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}RGBQUAD ;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//λͼ<CEBB><CDBC>Ϣͷ
|
2025-06-28 18:16:25 +08:00
|
|
|
|
typedef struct __packed
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
|
|
|
|
BITMAPFILEHEADER bmfHeader;
|
|
|
|
|
BITMAPINFOHEADER bmiHeader;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 RGB_MASK[3]; //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>RGB<47><42><EFBFBD><EFBFBD>.
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//RGBQUAD bmiColors[256];
|
|
|
|
|
}BITMAPINFO;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
typedef RGBQUAD * LPRGBQUAD;//<2F><>ɫ<EFBFBD><C9AB>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
#define BI_RGB 0 //û<><C3BB>ѹ<EFBFBD><D1B9>.RGB 5,5,5.
|
|
|
|
|
#define BI_RLE8 1 //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD>ص<EFBFBD>RLEѹ<45><D1B9><EFBFBD><EFBFBD><EFBFBD>룬ѹ<EBA3AC><D1B9><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>2<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>(<28>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>)<29><>
|
|
|
|
|
#define BI_RLE4 2 //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD>ص<EFBFBD>RLEѹ<45><D1B9><EFBFBD><EFBFBD><EFBFBD>룬ѹ<EBA3AC><D1B9><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>2<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
#define BI_BITFIELDS 3 //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>صı<D8B5><C4B1><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
int x_size;
|
|
|
|
|
int y_size;
|
|
|
|
|
u16 *data;
|
|
|
|
|
}BMP_DecodeStruct;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int BMP_Decode(const u8 *filename,BMP_DecodeStruct *bmp) ;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//BMP<4D><50><EFBFBD><EFBFBD><EFBFBD>뺯<EFBFBD><EBBAAF>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
u8 stdbmp_decode(const u8 *filename);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u8 minibmp_decode(u8 *filename,u16 x,u16 y,u16 width,u16 height,u16 acolor,u8 mode);//<2F>ߴ<EFBFBD>С<EFBFBD><D0A1>240*320<32><30>bmpͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>.
|
2025-06-27 00:32:57 +08:00
|
|
|
|
u8 bmp_encode(u8 *filename,u16 x,u16 y,u16 width,u16 height,u8 mode);
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|