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

📄 bmpprocessor.h

📁 Resource editor base speadrum Chinese mobile
💻 H
字号:
// BmpProcessor.h: interface for the CBmpProcessor class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BMPPROCESSOR_H__800DDF1C_4D32_4B1F_87E8_5F54EC9569B2__INCLUDED_)
#define AFX_BMPPROCESSOR_H__800DDF1C_4D32_4B1F_87E8_5F54EC9569B2__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "sci_types.h"
/////////////////////////////////////////
#define MAX_FRAME_NUM 99

typedef struct     /*****  Frame infomation structure  ****/
{
	uint32 code_size;       /*code size */ //Zhemin.Lin, the MSB indicate if the code stream isn't commpressed
	                                       //if bit[31] == 0, it's run length encoding, else not encoding
	uint32 code_offset;     /*code start address*/
}FRAMEINFO;

typedef  struct                             /*****  Movie infomation structure  ****/
{
	uint32 frame_num;                       /* frame number */
	FRAMEINFO frame_infos[MAX_FRAME_NUM];   /* frame infomations*/
}MOVIEINFO;

class CBmpProcessor  
{
public:
    // 
    BOOL LoadBmpFile( LPCTSTR pszFileName, LPBYTE * pBmpStream, int * pSize = NULL, BOOL b565 = TRUE );
    void FreeBmpStream( LPBYTE pBmpStream ) { _ASSERTE( pBmpStream != NULL ); free(pBmpStream); }

    CSize GetBmpSize( LPBYTE pBmp );
    CSize GetMovieSize( LPBYTE pMovie );

    HBITMAP CreateBitmap( LPBYTE pBmpStream );
    HBITMAP CreateBitmap( LPCTSTR pszFileName );
    void    DeleteBitmap( HBITMAP hBmp );

    // 将原始位图数据流转换为16位565格式的数据流(这里的数据流指完整的位图文件内容)
    // 如果pBmp就是16位565格式的,直接返回此指针,否则会产生新的内存块
    BOOL Convert24To565Stream( LPBYTE p24Bmp, LPBYTE &p16Bmp, int &nSize );
    BOOL Convert555To565Stream( LPBYTE p555Bmp, LPBYTE &p565Bmp, int &nSize );
    BOOL Convert16To24Stream( LPBYTE p16Bmp, LPBYTE & p24Bmp, int &nSize );

    BOOL CompressBmp( LPBYTE p565Bmp, LPBYTE &pCompressed, int &nCompressedSize );
    BOOL CompressMovie( LPCTSTR pszDirName, LPBYTE &pCompressed, int &nCompressedSize, int &nNum, UINT nTransColor = 0 );
    void ReleaseCompressedStream( LPBYTE pCompressed );

    BOOL UnCompressBmp( LPBYTE pCompressed, LPBYTE &pBmp, int &nSize );
    BOOL UnCompressMovie( LPBYTE pMovie, LPCTSTR pszDirName );
    BOOL UnCompressMovie( LPBYTE pMovie, int nIdx, LPBYTE &pBmp );
	
	BOOL BmpConvertToBigEndian(LPBYTE p565Bmp, int nSize, BOOL bCompressed);
	BOOL BmpConvertToLitEndian(LPBYTE p565Bmp, int nSize, BOOL bCompressed);

	BOOL MovieConvertToBigEndian(LPBYTE pMovie, int nSize, BOOL bCompressed = TRUE);
	BOOL MovieConvertToLitEndian(LPBYTE pMovie, int nSize, BOOL bCompressed = TRUE);
	BOOL IsMovieValidate(LPCTSTR pszDirName, int * pFrameNum);
    
	UINT GetAnimTransColor(LPBYTE pMovie);
	void ForceConvertBmpFile( LPCTSTR pszFileName );
	BOOL DeleteDirectory(LPCTSTR lpszDirName);
    LPCTSTR GetErrMsg(void) const { return m_szErrMsg; }
public:
	CBmpProcessor();
	~CBmpProcessor();
protected:
    
    // 注意:此函数不考虑对齐的情况(用在只转换一行的情况下)
    void Bmp16To24( LPWORD p16Bmp, int nPixel, LPBYTE p24Bmp, int n24Size, BOOL bIs555 = TRUE );

    void Bmp24To565(LPBYTE p888, int n888Size, LPWORD p565, int n565Size);


private:
    _TCHAR m_szErrMsg[ 380 ];
};

#endif // !defined(AFX_BMPPROCESSOR_H__800DDF1C_4D32_4B1F_87E8_5F54EC9569B2__INCLUDED_)

⌨️ 快捷键说明

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