mirror of
https://github.com/reactos/reactos.git
synced 2025-04-06 05:34:22 +00:00
[SDK] cicuif.h: Add CUIFColorTable (#6305)
Supporting TIPs... JIRA issue: CORE-19360 - Improve cicGetFN function. - Add CUIFColorTable, CUIFColorTableSys, and CUIFColorTableOff10 classes. - Implement cicInitUIFScheme, cicUpdateUIFScheme, and cicDoneUIFScheme functions.
This commit is contained in:
parent
d689cfe158
commit
46cf45414c
2 changed files with 245 additions and 70 deletions
|
@ -62,20 +62,6 @@ inline void operator delete[](void* ptr, size_t size) noexcept
|
|||
cicMemFree(ptr);
|
||||
}
|
||||
|
||||
template <typename T_FN>
|
||||
static inline BOOL
|
||||
cicGetFN(HINSTANCE& hinstDLL, T_FN& fn, LPCTSTR pszDllName, LPCSTR pszFuncName)
|
||||
{
|
||||
if (fn)
|
||||
return TRUE;
|
||||
if (!hinstDLL)
|
||||
hinstDLL = LoadLibrary(pszDllName);
|
||||
if (!hinstDLL)
|
||||
return FALSE;
|
||||
fn = reinterpret_cast<T_FN>(GetProcAddress(hinstDLL, pszFuncName));
|
||||
return !!fn;
|
||||
}
|
||||
|
||||
typedef struct CIC_LIBTHREAD
|
||||
{
|
||||
IUnknown *m_pUnknown1;
|
||||
|
@ -176,6 +162,20 @@ cicLoadSystemLibrary(
|
|||
return ::LoadLibrary(ModPath.m_szPath);
|
||||
}
|
||||
|
||||
template <typename T_FN>
|
||||
static inline BOOL
|
||||
cicGetFN(HINSTANCE& hinstDLL, T_FN& fn, LPCTSTR pszDllName, LPCSTR pszFuncName)
|
||||
{
|
||||
if (fn)
|
||||
return TRUE;
|
||||
if (!hinstDLL)
|
||||
hinstDLL = cicLoadSystemLibrary(pszDllName, FALSE);
|
||||
if (!hinstDLL)
|
||||
return FALSE;
|
||||
fn = reinterpret_cast<T_FN>(GetProcAddress(hinstDLL, pszFuncName));
|
||||
return !!fn;
|
||||
}
|
||||
|
||||
#include <ndk/pstypes.h> /* for PROCESSINFOCLASS */
|
||||
|
||||
/* ntdll!NtQueryInformationProcess */
|
||||
|
|
|
@ -154,16 +154,16 @@ public:
|
|||
|
||||
STDMETHOD_(void, Initialize)();
|
||||
STDMETHOD_(void, OnPaint)(HWND hWnd);
|
||||
STDMETHOD_(void, OnHideToolTip)();
|
||||
STDMETHOD_(void, OnLButtonDown)(POINT pt);
|
||||
STDMETHOD_(void, OnLButtonDblClk)(POINT pt);
|
||||
STDMETHOD_(void, OnLButtonUp)(POINT pt);
|
||||
STDMETHOD_(void, OnMButtonDown)(POINT pt);
|
||||
STDMETHOD_(void, OnMButtonDblClk)(POINT pt);
|
||||
STDMETHOD_(void, OnMButtonUp)(POINT pt);
|
||||
STDMETHOD_(void, OnRButtonDown)(POINT pt);
|
||||
STDMETHOD_(void, OnRButtonDblClk)(POINT pt);
|
||||
STDMETHOD_(void, OnRButtonUp)(POINT pt);
|
||||
STDMETHOD_(void, OnHideToolTip)() { } // FIXME: name
|
||||
STDMETHOD_(void, OnLButtonDown)(POINT pt) { }
|
||||
STDMETHOD_(void, OnMButtonDown)(POINT pt) { }
|
||||
STDMETHOD_(void, OnRButtonDown)(POINT pt) { }
|
||||
STDMETHOD_(void, OnLButtonUp)(POINT pt) { }
|
||||
STDMETHOD_(void, OnMButtonUp)(POINT pt) { }
|
||||
STDMETHOD_(void, OnRButtonUp)(POINT pt) { }
|
||||
STDMETHOD_(void, OnMouseMove)(POINT pt) { }
|
||||
STDMETHOD_(void, OnRButtonDblClk)(POINT pt) { } //FIXME: name
|
||||
STDMETHOD_(void, OnRButtonUp2)(POINT pt) { } //FIXME: name
|
||||
STDMETHOD_(void, OnUnknown)(DWORD x1, DWORD x2, DWORD x3); //FIXME: name and type
|
||||
STDMETHOD_(void, GetRect)(LPRECT prc);
|
||||
STDMETHOD_(void, SetRect)(LPCRECT prc);
|
||||
|
@ -181,7 +181,7 @@ public:
|
|||
STDMETHOD_(void, SetToolTip)(LPCWSTR pszToolTip);
|
||||
STDMETHOD_(LPCWSTR, GetToolTip)();
|
||||
STDMETHOD_(LRESULT, OnShowToolTip)();
|
||||
STDMETHOD_(void, OnHideToolTip2)();
|
||||
STDMETHOD_(void, OnHideToolTip2)() { } // FIXME: name
|
||||
STDMETHOD_(void, DetachWndObj)();
|
||||
STDMETHOD_(void, ClearWndObj)();
|
||||
STDMETHOD_(LRESULT, OnPaintTheme)(HWND hWnd);
|
||||
|
@ -191,6 +191,76 @@ public:
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class CUIFColorTable
|
||||
{
|
||||
public:
|
||||
CUIFColorTable() { }
|
||||
virtual ~CUIFColorTable() { }
|
||||
|
||||
STDMETHOD_(void, InitColor)() = 0;
|
||||
STDMETHOD_(void, DoneColor)() { }
|
||||
STDMETHOD_(void, InitBrush)() = 0;
|
||||
STDMETHOD_(void, DoneBrush)() = 0;
|
||||
|
||||
void Update()
|
||||
{
|
||||
DoneColor();
|
||||
DoneBrush();
|
||||
InitColor();
|
||||
InitBrush();
|
||||
}
|
||||
};
|
||||
|
||||
class CUIFColorTableSys : public CUIFColorTable
|
||||
{
|
||||
protected:
|
||||
COLORREF m_rgbColors[16];
|
||||
HBRUSH m_hBrushes[16];
|
||||
|
||||
public:
|
||||
CUIFColorTableSys() { }
|
||||
|
||||
HBRUSH GetBrush(INT iColor);
|
||||
|
||||
STDMETHOD_(void, InitColor)() override;
|
||||
STDMETHOD_(void, InitBrush)() override;
|
||||
STDMETHOD_(void, DoneBrush)() override;
|
||||
};
|
||||
|
||||
class CUIFColorTableOff10 : public CUIFColorTable
|
||||
{
|
||||
protected:
|
||||
COLORREF m_rgbColors[32];
|
||||
HBRUSH m_hBrushes[32];
|
||||
|
||||
public:
|
||||
CUIFColorTableOff10() { }
|
||||
|
||||
HBRUSH GetBrush(INT iColor);
|
||||
|
||||
STDMETHOD_(void, InitColor)() override;
|
||||
STDMETHOD_(void, InitBrush)() override;
|
||||
STDMETHOD_(void, DoneBrush)() override;
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class CUIFScheme
|
||||
{
|
||||
public:
|
||||
static CUIFColorTableSys *s_pColorTableSys;
|
||||
static CUIFColorTableOff10 *s_pColorTableOff10;
|
||||
};
|
||||
|
||||
DECLSPEC_SELECTANY CUIFColorTableSys *CUIFScheme::s_pColorTableSys = NULL;
|
||||
DECLSPEC_SELECTANY CUIFColorTableOff10 *CUIFScheme::s_pColorTableOff10 = NULL;
|
||||
|
||||
void cicInitUIFScheme(void);
|
||||
void cicUpdateUIFScheme(void);
|
||||
void cicDoneUIFScheme(void);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class CUIFWindow : public CUIFObject
|
||||
{
|
||||
//FIXME
|
||||
|
@ -450,46 +520,6 @@ inline STDMETHODIMP_(void) CUIFObject::OnPaint(HWND hWnd)
|
|||
OnSetFocus(hWnd);
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnHideToolTip()
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnLButtonDown(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnLButtonDblClk(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnLButtonUp(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnMButtonDown(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnMButtonDblClk(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnMButtonUp(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnRButtonDown(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnRButtonDblClk(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnRButtonUp(POINT pt)
|
||||
{
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnUnknown(DWORD x1, DWORD x2, DWORD x3)
|
||||
{
|
||||
}
|
||||
|
@ -631,11 +661,6 @@ inline STDMETHODIMP_(LRESULT) CUIFObject::OnShowToolTip()
|
|||
return 0;
|
||||
}
|
||||
|
||||
// FIXME: name
|
||||
inline STDMETHODIMP_(void) CUIFObject::OnHideToolTip2()
|
||||
{
|
||||
}
|
||||
|
||||
/// @unimplemented
|
||||
inline STDMETHODIMP_(void) CUIFObject::DetachWndObj()
|
||||
{
|
||||
|
@ -665,3 +690,153 @@ inline STDMETHODIMP_(void) CUIFObject::ClearTheme()
|
|||
for (size_t iItem = 0; iItem < m_ObjectArray.size(); ++iItem)
|
||||
m_ObjectArray[iItem]->ClearTheme();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFColorTableSys::InitColor()
|
||||
{
|
||||
m_rgbColors[0] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[1] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[2] = GetSysColor(COLOR_ACTIVEBORDER);
|
||||
m_rgbColors[3] = GetSysColor(COLOR_ACTIVECAPTION);
|
||||
m_rgbColors[4] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[5] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[6] = GetSysColor(COLOR_BTNTEXT);
|
||||
m_rgbColors[7] = GetSysColor(COLOR_CAPTIONTEXT);
|
||||
m_rgbColors[8] = GetSysColor(COLOR_GRAYTEXT);
|
||||
m_rgbColors[9] = GetSysColor(COLOR_HIGHLIGHT);
|
||||
m_rgbColors[10] = GetSysColor(COLOR_HIGHLIGHTTEXT);
|
||||
m_rgbColors[11] = GetSysColor(COLOR_INACTIVECAPTION);
|
||||
m_rgbColors[12] = GetSysColor(COLOR_INACTIVECAPTIONTEXT);
|
||||
m_rgbColors[13] = GetSysColor(COLOR_MENUTEXT);
|
||||
m_rgbColors[14] = GetSysColor(COLOR_WINDOW);
|
||||
m_rgbColors[15] = GetSysColor(COLOR_WINDOWTEXT);
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFColorTableSys::InitBrush()
|
||||
{
|
||||
ZeroMemory(m_hBrushes, sizeof(m_hBrushes));
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFColorTableSys::DoneBrush()
|
||||
{
|
||||
for (size_t i = 0; i < _countof(m_hBrushes); ++i)
|
||||
{
|
||||
if (m_hBrushes[i])
|
||||
{
|
||||
::DeleteObject(m_hBrushes[i]);
|
||||
m_hBrushes[i] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline HBRUSH CUIFColorTableSys::GetBrush(INT iColor)
|
||||
{
|
||||
if (!m_hBrushes[iColor])
|
||||
m_hBrushes[iColor] = ::CreateSolidBrush(m_rgbColors[iColor]);
|
||||
return m_hBrushes[iColor];
|
||||
}
|
||||
|
||||
inline HBRUSH CUIFColorTableOff10::GetBrush(INT iColor)
|
||||
{
|
||||
if (!m_hBrushes[iColor])
|
||||
m_hBrushes[iColor] = ::CreateSolidBrush(m_rgbColors[iColor]);
|
||||
return m_hBrushes[iColor];
|
||||
}
|
||||
|
||||
/// @unimplemented
|
||||
inline STDMETHODIMP_(void) CUIFColorTableOff10::InitColor()
|
||||
{
|
||||
m_rgbColors[0] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[1] = GetSysColor(COLOR_WINDOW);
|
||||
m_rgbColors[2] = GetSysColor(COLOR_WINDOW);
|
||||
m_rgbColors[3] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[4] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[5] = GetSysColor(COLOR_WINDOW);
|
||||
m_rgbColors[6] = GetSysColor(COLOR_HIGHLIGHT);
|
||||
m_rgbColors[7] = GetSysColor(COLOR_WINDOWTEXT);
|
||||
m_rgbColors[8] = GetSysColor(COLOR_HIGHLIGHT);
|
||||
m_rgbColors[9] = GetSysColor(COLOR_HIGHLIGHT);
|
||||
m_rgbColors[10] = GetSysColor(COLOR_HIGHLIGHTTEXT);
|
||||
m_rgbColors[11] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[12] = GetSysColor(COLOR_BTNTEXT);
|
||||
m_rgbColors[13] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[14] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[15] = GetSysColor(COLOR_WINDOW);
|
||||
m_rgbColors[16] = GetSysColor(COLOR_HIGHLIGHT);
|
||||
m_rgbColors[17] = GetSysColor(COLOR_BTNTEXT);
|
||||
m_rgbColors[18] = GetSysColor(COLOR_WINDOW);
|
||||
m_rgbColors[19] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[20] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[21] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[22] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[23] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[24] = GetSysColor(COLOR_CAPTIONTEXT);
|
||||
m_rgbColors[25] = GetSysColor(COLOR_HIGHLIGHT);
|
||||
m_rgbColors[26] = GetSysColor(COLOR_HIGHLIGHTTEXT);
|
||||
m_rgbColors[27] = GetSysColor(COLOR_BTNFACE);
|
||||
m_rgbColors[28] = GetSysColor(COLOR_BTNTEXT);
|
||||
m_rgbColors[29] = GetSysColor(COLOR_BTNSHADOW);
|
||||
m_rgbColors[30] = GetSysColor(COLOR_BTNTEXT);
|
||||
m_rgbColors[31] = GetSysColor(COLOR_WINDOWTEXT);
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFColorTableOff10::InitBrush()
|
||||
{
|
||||
ZeroMemory(m_hBrushes, sizeof(m_hBrushes));
|
||||
}
|
||||
|
||||
inline STDMETHODIMP_(void) CUIFColorTableOff10::DoneBrush()
|
||||
{
|
||||
for (size_t i = 0; i < _countof(m_hBrushes); ++i)
|
||||
{
|
||||
if (m_hBrushes[i])
|
||||
{
|
||||
::DeleteObject(m_hBrushes[i]);
|
||||
m_hBrushes[i] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline void cicInitUIFScheme(void)
|
||||
{
|
||||
CUIFColorTable *pColorTable;
|
||||
|
||||
pColorTable = CUIFScheme::s_pColorTableSys = new(cicNoThrow) CUIFColorTableSys();
|
||||
if (pColorTable)
|
||||
{
|
||||
pColorTable->InitColor();
|
||||
pColorTable->InitBrush();
|
||||
}
|
||||
|
||||
pColorTable = CUIFScheme::s_pColorTableOff10 = new(cicNoThrow) CUIFColorTableOff10();
|
||||
if (pColorTable)
|
||||
{
|
||||
pColorTable->InitColor();
|
||||
pColorTable->InitBrush();
|
||||
}
|
||||
}
|
||||
|
||||
inline void cicUpdateUIFScheme(void)
|
||||
{
|
||||
if (CUIFScheme::s_pColorTableSys)
|
||||
CUIFScheme::s_pColorTableSys->Update();
|
||||
if (CUIFScheme::s_pColorTableOff10)
|
||||
CUIFScheme::s_pColorTableOff10->Update();
|
||||
}
|
||||
|
||||
inline void cicDoneUIFScheme(void)
|
||||
{
|
||||
if (CUIFScheme::s_pColorTableSys)
|
||||
{
|
||||
delete CUIFScheme::s_pColorTableSys;
|
||||
CUIFScheme::s_pColorTableSys = NULL;
|
||||
}
|
||||
if (CUIFScheme::s_pColorTableOff10)
|
||||
{
|
||||
delete CUIFScheme::s_pColorTableOff10;
|
||||
CUIFScheme::s_pColorTableOff10 = NULL;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue