⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pbmpdec.h

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 H
字号:
/******************************************************
Copyright(C)2007,Rockchip Co., Ltd. All Rights Reserved.
File:  bmphead_32bits.h
Desc:
Note:
Author:  Eddie CF
$Log:
Revision  1.2 2007/01/09 Eddie CF

******************************************************/
#include "..\..\ImageWin\ImageWin.h"
#ifndef BMP_DEC_H
#define BMP_DEC_H
/*********************************************************************
INCLUDE
************************************************************************/

/*********************************************************************
DEFINE
************************************************************************/

#define BMP_TYPE            0x4d42 // 输入文件格式
#define BI_RGB            0     // No compression
#define BI_RLE8           1     // RLE8 compression (256 colors)
#define BI_RLE4           2     // RLE4 compression (16 colors)
#define BI_BITFIELDS      3     // BITFIELDS compression (16 bits and 32 bits)
#define ERROR_MARKER     -4
#define ROW_EXCHANGE_ERROR   -100
#if 0
#define NEAREST     1
#define BILNEAR     2
#define ROTATE     3
#define PI      3.14159265357
#endif

#define READ_TEMP_LEN   512
#define BMP_READ_MAX_ONCE  10*1024
#define BMP_FILE    MY_FILE
#define RGB565_MARK_R   0xF800
#define RGB565_MARK_G   0x07E0
#define RGB565_MARK_B   0x001F
#define RGB555_MARK_R   0x7C00
#define RGB555_MARK_G   0x03E0
#define RGB555_MARK_B   0x001F

#define MIN(x,y)     ((x)>(y)?(y):(x))

//#define _DEBUG_
//#define DebugRLE
/*************************************************************************
STRUCT
**************************************************************************/

#ifdef BOARD
typedef __packed struct tagBITMAPINFOHEADER
{
    INT32S  biSize;
    INT32S  biWidth;
    INT32S  biHeight;
    INT16S  biPlanes;
    INT16S  biBitCount;
    INT32S  biCompression;
    INT32S  biSizeImage;
    INT32S  biXPelsPerMeter;
    INT32S  biYPelsPerMeter;
    INT32S  biClrUsed;
    INT32S  biClrImportant;
} BITMAPINFOHEADER;

typedef  __packed  struct tagBITMAPFILEHEADER
{
    INT16S  bfType;
    INT32S  bfSize;
    INT16S  bfReserved1;
    INT16S  bfReserved2;
    INT32S  bfOffBits;
} BITMAPFILEHEADER;
#else
#pragma pack(push)
#pragma pack(1)
typedef struct tagBITMAPINFOHEADER
{
    INT32S  biSize;
    INT32S  biWidth;
    INT32S  biHeight;
    INT16S  biPlanes;
    INT16S  biBitCount;
    INT32S  biCompression;
    INT32S  biSizeImage;
    INT32S  biXPelsPerMeter;
    INT32S  biYPelsPerMeter;
    INT32S  biClrUsed;
    INT32S  biClrImportant;
} BITMAPINFOHEADER;
#pragma pack(pop)

#pragma pack(push)
#pragma pack(1)
typedef struct tagBITMAPFILEHEADER
{
    INT16S  bfType;
    INT32S  bfSize;
    INT16S  bfReserved1;
    INT16S  bfReserved2;
    INT32S  bfOffBits;
} BITMAPFILEHEADER;
#pragma pack(pop)
#endif

typedef struct _RGBQUAD
{
    INT8S    rgbBlue;
    INT8S    rgbGreen;
    INT8S    rgbRed;
    INT8S    rgbReserved;
} RGBQUAD;

typedef struct tagMARK
{
    INT32U    BmpReservedMark;
    INT32U    BmpRedMark;
    INT32U    BmpGreenMark;
    INT32U    BmpBlueMark;
}BMPMARK;

typedef struct tagBMP
{
    BITMAPFILEHEADER bmfh;
    BITMAPINFOHEADER bmih;
    RGBQUAD    *bmiColors;
    INT32U    bmnumcolors;
    BMPMARK    BmpMark;
    INT8U    *BmpOutBuf;
    INT32S    bytes_per_line;
    INT32U    FileOffset;
    INT8U    *data;
}BMP;

typedef struct tagBMP* pBMP;


typedef struct
{
    unsigned int (*read_func)(void *pBuff, unsigned int size, unsigned int cnt,  void *Handle);
    unsigned int (*seek_func)(void *stream,   long offset,   int origin);
    unsigned int (*write_func)(IM_PIX_INFO out_info);
}BMP_CALLBACKS_DECODE;

typedef struct TagBmpOutFactor
{
    BMP_FILE* BmpFile;
    unsigned long *ImageWInBuf;
    unsigned long *ImageHInBuf;
    unsigned char *ImageBufAddr;
}BMPOUTFACTOR;

typedef struct TagBmpFactor
{
    INT8U *ReadBuf;
    INT32S height;
    float  BytesPerPixs;
    INT32S ReadBufSize;
    tpicregion Dst;
    unsigned long dstxInt;
    unsigned long dstyInt;
    double zoomx;
    double zoomy;
    INT32S x;
    INT32S y;
}BMPFACTOR;


/*************************************************************************
LOCAL VARIABLES
**************************************************************************/
extern INT32S BMP_Decode(BMP_CALLBACKS_DECODE BMP_callbacks_decode, BMPOUTFACTOR *BmpOutFactor, BMP *bmp, int ScreenWidth, int ScreenHigh);
extern INT32S BMP_ThumbNail_Decode(BMP_CALLBACKS_DECODE BMP_callbacks_decode, BMPOUTFACTOR *BmpOutFactor, BMP *bmp, int BufWidth, int BufHeight);
extern  INT8U BMP_InitHead(BMP_CALLBACKS_DECODE BMP_callbacks_decode, BMP_FILE* BmpFile, BMP *bmp);

extern INT32U BMP_CustomOutput_32BitRGB888(IM_PIX_INFO out_info);

extern unsigned long BMPFunction(unsigned long ulSubFn, unsigned long ulParam1,
                                     unsigned long ulParam2, unsigned long ulParam3,
                                     unsigned long ulParam4);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -