|
|
//-------------------------------------------------------------------------
// TmUtils.h - theme manager shared utilities
//-------------------------------------------------------------------------
#ifndef _TMUTILS_H_
#define _TMUTILS_H_
//-------------------------------------------------------------------------
#include "themefile.h"
//-------------------------------------------------------------------------
#define DIBDATA(infohdr) (((BYTE *)(infohdr)) + infohdr->biSize + \
infohdr->biClrUsed*sizeof(RGBQUAD))
#define THEME_OFFSET(x) int(x - _LoadingThemeFile._pbThemeData)
#define THEMEFILE_OFFSET(x) int(x - pThemeFile->_pbThemeData)
//------------------------------------------------------------------------------------
class CMemoryDC { public: CMemoryDC(); ~CMemoryDC(); HRESULT OpenDC(HDC hdcSource, int iWidth, int iHeight); void CloseDC(); operator HDC() {return _hdc;}
HBITMAP _hBitmap;
protected: //---- private data ----
HDC _hdc; HBITMAP _hOldBitmap; }; //------------------------------------------------------------------------------------
class CBitmapPixels { public: CBitmapPixels(); ~CBitmapPixels();
//---- "OpenBitmap()" returns a ptr to pixel values in bitmap. ----
//---- Rows go from bottom to top; Colums go from left to right. ----
//---- IMPORTANT: pixel DWORDS have RGB bytes reversed from COLORREF ----
HRESULT OpenBitmap(HDC hdc, HBITMAP bitmap, BOOL fForceRGB32, DWORD OUT **pPixels, OPTIONAL OUT int *piWidth=NULL, OPTIONAL OUT int *piHeight=NULL, OPTIONAL OUT int *piBytesPerPixel=NULL, OPTIONAL OUT int *piBytesPerRow=NULL, OPTIONAL OUT int *piPreviousBytesPerPixel = NULL, OPTIONAL UINT cbBytesBefore = 0);
void CloseBitmap(HDC hdc, HBITMAP hBitmap);
//---- Pointer to the total buffer (including cbBytesBefore)
BYTE *Buffer();
//---- public data ----
BITMAPINFOHEADER *_hdrBitmap;
protected: //---- private data ----
int _iWidth; int _iHeight; BYTE* _buffer; }; //------------------------------------------------------------------------------------
HRESULT LoadThemeLibrary(LPCWSTR pszThemeName, HINSTANCE *phInst);
LPCWSTR ThemeString(CUxThemeFile *pThemeFile, int iOffset);
HRESULT GetThemeNameId(CUxThemeFile *pThemeFile, LPWSTR pszFileNameBuff, UINT cchFileNameBuff, LPWSTR pszColorParam, UINT cchColorParam, LPWSTR pszSizeParam, UINT cchSizeParam, int *piSysMetricsIndex, LANGID *pwLangID); BOOL ThemeMatch (CUxThemeFile *pThemeFile, LPCWSTR pszThemeName, LPCWSTR pszColorName, LPCWSTR pszSizeName, LANGID wLangID);
HRESULT _EnumThemeSizes(HINSTANCE hInst, LPCWSTR pszThemeName, OPTIONAL LPCWSTR pszColorScheme, DWORD dwSizeIndex, OUT THEMENAMEINFO *ptn, BOOL fCheckColorDepth); HRESULT _EnumThemeColors(HINSTANCE hInst, LPCWSTR pszThemeName, OPTIONAL LPCWSTR pszSizeName, DWORD dwColorIndex, OUT THEMENAMEINFO *ptn, BOOL fCheckColorDepth);
HRESULT GetSizeIndex(HINSTANCE hInst, LPCWSTR pszSize, int *piIndex); HRESULT GetColorSchemeIndex(HINSTANCE hInst, LPCWSTR pszSize, int *piIndex); HRESULT FindComboData(HINSTANCE hDll, COLORSIZECOMBOS **ppCombos); HRESULT GetThemeSizeId(int iSysSizeId, int *piThemeSizeId); int GetLoadIdFromTheme(CUxThemeFile *pThemeFile); //---------------------------------------------------------------------------
#endif // _TMUTILS_H_
//-------------------------------------------------------------------------
|