windows-nt/Source/XPSP1/NT/public/internal/windows/inc/duser/duiconvert.h

103 lines
2.8 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*
* 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