// CPixmap.h #pragma once #include <ddraw.h> ///////////////////////////////////////////////////////////// #define MAXIMAGE 100 class CPixmap { public: CPixmap(); ~CPixmap(); void SetDebug(BOOL bDebug); BOOL Create(HWND hwnd, POINT dim, BOOL bFullScreen, int mouseType); BOOL Flush(); BOOL Restore(); BOOL InitSysPalette(); BOOL IsPalette(); void Fill(RECT rect, COLORREF color); BOOL SavePalette(); BOOL RestorePalette(); int SearchColor(int red, int green, int blue); BOOL Cache(int channel, char *pFilename, POINT totalDim, POINT iconDim, BOOL bUsePalette); BOOL Cache(int channel, char *pFilename, POINT totalDim, BOOL bUsePalette); BOOL Cache(int channel, HBITMAP hbm, POINT totalDim); void Flush(int channel); void SetTransparent(int channel, COLORREF color); void SetTransparent2(int channel, COLORREF color1, COLORREF color2); void SetClipping(RECT clip); RECT GetClipping(); BOOL IsIconPixel(int channel, int rank, POINT pos); BOOL DrawIcon(int chDst, int channel, int rank, POINT pos, int mode=0, BOOL bMask=FALSE); BOOL DrawIconDemi(int chDst, int channel, int rank, POINT pos, int mode=0, BOOL bMask=FALSE); BOOL DrawIconPart(int chDst, int channel, int rank, POINT pos, int startY, int endY, int mode=0, BOOL bMask=FALSE); BOOL DrawPart(int chDst, int channel, POINT dest, RECT rect, int mode=0, BOOL bMask=FALSE); BOOL DrawImage(int chDst, int channel, RECT rect, int mode=0); BOOL BuildIconMask(int channelMask, int rankMask, int channel, int rankSrc, int rankDst); BOOL Display(); void SetMousePosSprite(POINT pos, int sprite, BOOL bDemoPlay); void SetMousePos(POINT pos, BOOL bDemoPlay); void SetMouseSprite(int sprite, BOOL bDemoPlay); void MouseShow(BOOL bShow); void MouseInvalidate(); void MouseBackClear(); void MouseBackDraw(); protected: HRESULT RestoreAll(); HRESULT BltFast(int chDst, int channel, POINT dst, RECT rcRect, int mode); HRESULT BltFast(LPDIRECTDRAWSURFACE lpDD, int channel, POINT dst, RECT rcRect, int mode); void MouseUpdate(); BOOL MouseQuickDraw(RECT rect); void MouseBackSave(); void MouseBackRestore(); void MouseBackDebug(); RECT MouseRectSprite(); void MouseHotSpot(); protected: BOOL m_bFullScreen; BOOL m_bBenchmarkSuccess; BOOL m_bTrueColor; BOOL m_bTrueColorDecor; BOOL m_field5_0x14; //Need to figure out BOOL m_field5_0x18; //Need to figure out int m_mouseType; BOOL m_bDebug; BOOL m_bPalette; HWND m_hWnd; POINT m_dim; RECT m_clipRect; POINT m_mousePos; int m_mouseSprite; POINT m_mouseHotSpot; POINT m_mouseBackPos; BOOL m_bMouseBack; BOOL m_bMouseShow; BOOL m_bBackDisplayed; LPDIRECTDRAW m_lpDD; LPDIRECTDRAWSURFACE m_lpDDSPrimary; LPDIRECTDRAWSURFACE m_lpDDSBack; LPDIRECTDRAWSURFACE m_lpDDSMouse; LPDIRECTDRAWPALETTE m_lpDDPal; LPDIRECTDRAWSURFACE m_lpDDSurface[MAXIMAGE]; LPDIRECTDRAWCLIPPER m_lpClipper; PALETTEENTRY m_pal[256]; PALETTEENTRY m_sysPal[256]; COLORREF m_colorSurface[2*MAXIMAGE]; char m_filename[MAXIMAGE][20]; POINT m_totalDim[MAXIMAGE]; POINT m_iconDim[MAXIMAGE]; DDBLTFX m_DDbltfx }