/* * Conversion */ #ifndef DUI_UTIL_CONVERT_H_INCLUDED #define DUI_UTIL_CONVERT_H_INCLUDED #pragma once namespace DirectUI { #define DUIARRAYSIZE(a) (sizeof(a) / sizeof(a[0])) ///////////////////////////////////////////////////////////////////////////// // String conversion #define DUI_CODEPAGE CP_ACP // String conversion codepage LPSTR UnicodeToMultiByte(LPCWSTR pszUnicode, int cChars = -1, int* pMultiBytes = NULL); LPWSTR MultiByteToUnicode(LPCSTR pszMulti, int dBytes = -1, int* pUniChars = NULL); ///////////////////////////////////////////////////////////////////////////// // Atom conversion ATOM StrToID(LPCWSTR psz); ///////////////////////////////////////////////////////////////////////////// // Bitmap conversion HBITMAP LoadDDBitmap(LPCWSTR pszBitmap, HINSTANCE hResLoad, int cx, int cy); #ifdef GADGET_ENABLE_GDIPLUS HRESULT LoadDDBitmap(LPCWSTR pszBitmap, HINSTANCE hResLoad, int cx, int cy, UINT nFormat, OUT Gdiplus::Bitmap** ppgpbmp); #endif HBITMAP ProcessAlphaBitmapI(HBITMAP hbmSource); #ifdef GADGET_ENABLE_GDIPLUS Gdiplus::Bitmap * ProcessAlphaBitmapF(HBITMAP hbmSource, UINT nFormat); #endif ///////////////////////////////////////////////////////////////////////////// // Color conversion inline COLORREF RemoveAlpha(COLORREF cr) { return ~(255 << 24) & cr; } inline COLORREF NearestPalColor(COLORREF cr) { return (0x02000000) | cr; } const int SysColorEnumOffset = 10000; // Used to identify a system color enum inline bool IsSysColorEnum(int c) { return c >= SysColorEnumOffset; } inline int MakeSysColorEnum(int c) { return c + SysColorEnumOffset; } inline int ConvertSysColorEnum(int c) { return c - SysColorEnumOffset; } HBRUSH BrushFromEnumI(int c); COLORREF ColorFromEnumI(int c); #ifdef GADGET_ENABLE_GDIPLUS Gdiplus::Color ColorFromEnumF(int c); #endif #ifdef GADGET_ENABLE_GDIPLUS inline Gdiplus::Color RemoveAlpha(Gdiplus::Color cr) { return Gdiplus::Color(cr.GetR(), cr.GetG(), cr.GetB()); } inline Gdiplus::Color Convert(COLORREF cr) { return Gdiplus::Color(GetAValue(cr), GetRValue(cr), GetGValue(cr), GetBValue(cr)); } #endif inline IsOpaque(BYTE bAlphaLevel) { return bAlphaLevel >= 250; } inline IsTransparent(BYTE bAlphaLevel) { return bAlphaLevel <= 5; } int PointToPixel(int nPoint); int RelPixToPixel(int nRelPix); inline int PointToPixel(int nPoint, int nDPI) { return -MulDiv(nPoint, nDPI, 72); } inline int RelPixToPixel(int nRelPix, int nDPI) { return MulDiv(nRelPix, nDPI, 96); } ///////////////////////////////////////////////////////////////////////////// // Bitmap conversion bool IsPalette(HWND hWnd = NULL); //HPALETTE PALToHPALETTE(LPWSTR pPALFile, bool bMemFile = false, DWORD dMemFileSize = 0, LPRGBQUAD pRGBQuad = NULL, LPWSTR pError = NULL); } // namespace DirectUI #endif // DUI_UTIL_CONVERT_H_INCLUDED