You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.9 KiB
102 lines
2.9 KiB
/*
|
|
* 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
|