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

📄 jzimagebmp.h

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 H
字号:
// JzImageBmp.h: interface for the CJzImageBmp class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_JZIMAGEBMP_H__4FB9F02A_EDEF_424D_9550_737CA6B42225__INCLUDED_)
#define AFX_JZIMAGEBMP_H__4FB9F02A_EDEF_424D_9550_737CA6B42225__INCLUDED_

#include "JzImage.h"
#include "xiofile.h"
const int RLE_COMMAND     = 0;
const int RLE_ENDOFLINE   = 0;
const int RLE_ENDOFBITMAP = 1;
const int RLE_DELTA       = 2;

#if !defined(BI_RLE8)
 #define BI_RLE8  1L
#endif
#if !defined(BI_RLE4)
 #define BI_RLE4  2L
#endif
class CJzImageBmp : public CJzImage  
{
/*	
typedef struct tagBITMAPFILEHEADER {
        WORD    bfType;
        DWORD   bfSize;
        WORD    bfReserved1;
        WORD    bfReserved2;
        DWORD   bfOffBits;
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
*/
public:
	CJzImageBmp();
	CJzImageBmp(PSCRINFO pscr):CJzImage(pscr){};
	virtual bool Decode(CxFile * hFile);

	virtual ~CJzImageBmp();
private:
	bool Read4BPPData(unsigned int wBpp);
	bool Read32BPPData(unsigned int wBpp,unsigned int *mask);
	bool DibReadBitmapInfo(CxFile* fh, BITMAPINFOHEADER *pdib);
	BITMAPFILEHEADER   bf;
	BITMAPINFOHEADER bmpHeader;
	DWORD dwCompression;;
	DWORD dwBitCount;
	bool bIsOldBmp;
	bool bTopDownDib;
	CxFile *hFile;
	DWORD off;

};
#define BFT_ICON   0x4349   /* 'IC' */
#define BFT_BITMAP 0x4d42   /* 'BM' */
#define BFT_CURSOR 0x5450   /* 'PT' */

#ifndef WIDTHBYTES
#define WIDTHBYTES(i)           ((unsigned)((i+31)&(~31))/8)  /* ULONG aligned ! */
#endif

#define DibWidthBytesN(lpbi, n) (UINT)WIDTHBYTES((UINT)(lpbi)->biWidth * (UINT)(n))
#define DibWidthBytes(lpbi)     DibWidthBytesN(lpbi, (lpbi)->biBitCount)

#define DibSizeImage(lpbi)      ((lpbi)->biSizeImage == 0 \
                                    ? ((DWORD)(UINT)DibWidthBytes(lpbi) * (DWORD)(UINT)(lpbi)->biHeight) \
                                    : (lpbi)->biSizeImage)

#define DibNumColors(lpbi)      ((lpbi)->biClrUsed == 0 && (lpbi)->biBitCount <= 8 \
                                    ? (int)(1 << (int)(lpbi)->biBitCount)          \
                                    : (int)(lpbi)->biClrUsed)

#define FixBitmapInfo(lpbi)     if ((lpbi)->biSizeImage == 0)                 \
												(lpbi)->biSizeImage = DibSizeImage(lpbi); \
                                if ((lpbi)->biClrUsed == 0)                   \
                                    (lpbi)->biClrUsed = DibNumColors(lpbi);

#endif // !defined(AFX_JZIMAGEBMP_H__4FB9F02A_EDEF_424D_9550_737CA6B42225__INCLUDED_)


⌨️ 快捷键说明

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