📄 dib.h
字号:
#ifndef __RXDIB_H__#define __RXDIB_H__// cdib.h// new version for WIN32#include "Windows.h"class RxDib : public CObject{ DECLARE_SERIAL(RxDib)public: LPVOID m_lpvColorTable; HBITMAP m_hBitmap; // DIB object LPBYTE m_lpImage; // starting address of DIB bits LPBITMAPINFOHEADER m_lpBmih; // buffer containing the BITMAPINFOHEADERpublic: enum IMAGE_TYPE {IT_BMP, IT_JPG, IT_JPG32, IT_DCM};private: DWORD m_dwSizeImage; // of bits -- not BITMAPINFOHEADER // or BITMAPFILEHEADER // int m_nColorTableEntries; HANDLE m_hFile; HANDLE m_hMap; LPVOID m_lpvFile; int m_iColorTableEntries; BOOL m_bCompressed;public: RxDib* GetDecompressedDIB(); BOOL IsCompressed() {return m_bCompressed;} BOOL CompressAsJPEG(); BOOL DecompressAsBMP(); BOOL Stretch(CDC *pDC, CPoint origin, CSize size); BOOL DrawForAvi(CDC *pDC, CPoint origin, CSize size); RxDib(); RxDib(CSize size, int iBitCount); // allocate memory RxDib(CDC* pDC, const CSize& szImage); RxDib(LPVOID hDib); RxDib(const RxDib& dib); ~RxDib(); int GetSizeImage() {return m_dwSizeImage;} int GetSizeHeader() {return sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_iColorTableEntries;} CSize GetDimensions();// BOOL AttachMapFile(const char* strPathname, BOOL bShare = FALSE);// BOOL CopyToMapFile(const char* strPathname); BOOL Draw(CDC* pDC, CPoint origin, CSize size); // until we implement CreateDibSection BOOL Read(CString strFilename, int iType = IT_BMP); //BOOL ReadJPG(CString strFilename); BOOL Write(CString strFilename, int iType = IT_BMP); //BOOL WriteJPG(CString strFilename); void Serialize(CArchive& ar); void Empty(); DWORD Bpl(); void MakeColorTable(); BOOL DecodeJPGFileToGeneralBuffer(LPCSTR lpszPathName, DWORD* width, DWORD* height, DWORD* nchannels, BYTE** buffer, DWORD *buffersize); BOOL EncodeJPGFileFromDIB(LPCSTR lpszPathName); RxDib operator=(const RxDib& dib);private: BOOL ReadBMP(CString strFilename); BOOL ReadJPG(CString strFilename); BOOL WriteBMP(CString strFilename); BOOL WriteJPG(CString strFilename); void RGBA_FPX_to_BGRA(BYTE* pData, int iWidth, int iHeight); void BGRA_to_RGBA(BYTE* pData, int iWidth, int iHeight); void DetachMapFile(); void ComputePaletteSize(int iBitCount); void ComputeMetrics(); int ComputeMetrics(const CSize& szImage, int iBitCount); BOOL Convert16To32(int iWidth, int iHeight, LPBYTE lpDst, unsigned short* lpSrc, BOOL bWithPadding = FALSE); BOOL Convert24To32(int iWidth, int iHeight, LPBYTE lpDst, LPBYTE lpSrc, BOOL bWithPadding = FALSE);protected:};#endif //__RXDIB_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -