7 HRESULT Uninitialize ();
9 LONG GetShift (DWORD dwMask)
20 DWORD ShiftLeft (DWORD dwVal, LONG lShift)
23 return dwVal << lShift;
25 return dwVal >> (-lShift);
30 DWORD dwPal = *(DWORD*) &m_rgpe [b];
33 w = ShiftLeft (dwPal, m_cshftR - 8) & m_mskR;
34 w |= ShiftLeft (dwPal, m_cshftG - 16) & m_mskG;
35 w |= ShiftLeft (dwPal, m_cshftB - 24) & m_mskB;
40 BOOL IsPow2 () const { return m_bPow2; }
41 BOOL IsSquare () const { return m_bSquare; }
43 void GetPixelFormat (DDPIXELFORMAT *pddpf) { *pddpf = m_ddpfPixelFormat; }
44 BOOL IsIndexed () const { return m_ddpfPixelFormat.dwRGBBitCount == 8; }
45 void SetPaletteEntries (PALETTEENTRY rgpe [256]);
46 void GetPaletteEntries (PALETTEENTRY rgpe [256]);
48 LPDIRECTDRAWPALETTE GetPalette () { return m_spddpPalette; }
49 PALETTEENTRY ReadPalette (BYTE b) const { return m_rgpe [b]; }
51 DWORD m_mskR, m_mskG, m_mskB;
52 ULONG m_cshftR, m_cshftG, m_cshftB;
53 DDPIXELFORMAT m_ddpfPixelFormat;
54 BOOL m_bPow2, m_bSquare;
55 PALETTEENTRY m_rgpe [256];
56 CComPtr <IDirectDrawPalette> m_spddpPalette;
61 HRESULT Initialize (BYTE *rgbSource, ULONG ulWidth, ULONG ulHeight, ULONG ulPitch);
63 HRESULT Allocate (CPaletteInfo *ppi);
67 HRESULT Unlock (void);
68 void PlotPixel (ULONG ulX, ULONG ulY, BYTE b);
69 void SetBitmapData (BYTE *rgb, BOOL bRle);
70 void CopyFromSource (void);
72 void DirtyMemory (void) { m_bDirtyMemory = TRUE; }
73 BOOL isDirtyMemory (void) const { return m_bDirtyMemory; }
74 HRESULT CleanMemory (void);
76 void SetTransparent (BOOL bTransparent) { m_bTransparent = bTransparent; }
77 BOOL IsTransparent (void) const { return m_bTransparent; }
79 ULONG GetPixelCount () const { return m_ulHeight * m_ulWidth; }
80 void GetBitmapAdj (D3DVALUE *pflAdjX, D3DVALUE *pflAdjY)
86 IDirectDrawSurface4 *GetSurface () { return m_spddsMemory; }
87 IDirect3DTexture2 *GetTexture ();
91 ULONG m_ulWidthSource;
92 ULONG m_ulHeightSource;
95 CComPtr <IDirectDrawSurface4> m_spddsMemory;
96 CComQIPtr <IDirect3DTexture2, &IID_IDirect3DTexture2> m_spddtMemory;
97 ULONG m_ulPitchSource;
104 D3DVALUE m_flAdjX, m_flAdjY;
107 static CPaletteInfo *m_ppi;
108 static DDSURFACEDESC2 s_ddsd;
109 static BOOL s_bLocked;
114 HRESULT Initialize ();
115 HRESULT Uninitialize ();
117 CTexture *CreateTexture (BYTE *rgbSource, ULONG dx, ULONG dy, ULONG ulPitch);
118 void FreeTexture (CTexture *pTexture);
119 void SetPaletteEntries (PALETTEENTRY rgpe [256]);
120 void GetPaletteEntries (PALETTEENTRY rgpe [256]);
121 void DirtyTextures (void);
123 PALETTEENTRY ReadPalette (BYTE b) { return m_pi.ReadPalette (b); }
124 BOOL HasPalette () { return m_pi.IsIndexed (); }
127 typedef std::set <CTexture *> TEXTURE_SET;
128 TEXTURE_SET m_setTextures;
134 #endif // __TEXTURE_H__