You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
780 lines
38 KiB
C
780 lines
38 KiB
C
2 years ago
|
// XTPColorManager.h: interface for the CXTPColorManager class.
|
||
|
//
|
||
|
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
||
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
||
|
//
|
||
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
//
|
||
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
// SINGLE COMPUTER.
|
||
|
//
|
||
|
// CONTACT INFORMATION:
|
||
|
// support@codejock.com
|
||
|
// http://www.codejock.com
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#if !defined(__XTPCOLORMANAGER_H__)
|
||
|
#define __XTPCOLORMANAGER_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Enumeration used to determine the current Windows XP theme in use
|
||
|
// See Also:
|
||
|
// CXTPColorManager::GetCurrentSystemTheme
|
||
|
// Example:
|
||
|
// <code>XTPCurrentSystemTheme systemTheme = XTPColorManager()->GetCurrentSystemTheme();</code>
|
||
|
//
|
||
|
// <KEYWORDS xtpSystemThemeUnknown, xtpSystemThemeBlue, xtpSystemThemeOlive, xtpSystemThemeSilver, xtpSystemThemeAuto, xtpSystemThemeDefault>
|
||
|
//-----------------------------------------------------------------------
|
||
|
enum XTPCurrentSystemTheme
|
||
|
{
|
||
|
xtpSystemThemeUnknown, // No known theme in use
|
||
|
xtpSystemThemeBlue, // Luna Blue Windows XP theme in use
|
||
|
xtpSystemThemeOlive, // Luna Olive Windows XP theme in use
|
||
|
xtpSystemThemeSilver, // Luna Silver Windows XP theme in use
|
||
|
xtpSystemThemeRoyale, // Royale Windows XP theme in use
|
||
|
xtpSystemThemeAero, // Aero Vista theme in use
|
||
|
xtpSystemThemeAuto, // Use OS theme.
|
||
|
xtpSystemThemeDefault // Default theme (xtpSystemThemeAuto)
|
||
|
};
|
||
|
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#ifndef COLOR_GRADIENTACTIVECAPTION
|
||
|
#define COLOR_GRADIENTACTIVECAPTION 27
|
||
|
#endif
|
||
|
|
||
|
#ifndef COLOR_GRADIENTINACTIVECAPTION
|
||
|
#define COLOR_GRADIENTINACTIVECAPTION 28
|
||
|
#endif
|
||
|
|
||
|
#define COLORREF_NULL (COLORREF)-1
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
const UINT XPCOLOR_BASE = 30; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_TOOLBAR_FACE = XPCOLOR_BASE; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT = 31; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT_BORDER = 32; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT_PUSHED = 33; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT_CHECKED = 36; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT_CHECKED_BORDER = 37; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_ICONSHADDOW = 34; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_MENUBAR_GRAYTEXT = 35; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_GRAYTEXT = XPCOLOR_MENUBAR_GRAYTEXT; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_TOOLBAR_GRIPPER = 38; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_SEPARATOR = 39; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_DISABLED = 40; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_MENUBAR_FACE = 41; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_MENUBAR_EXPANDED = 42; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_MENUBAR_BORDER = 43; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_MENUBAR_TEXT = 44; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT_TEXT = 45; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_TOOLBAR_TEXT = 46; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_PUSHED_TEXT = 47; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_TAB_INACTIVE_BACK = 48; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_TAB_INACTIVE_TEXT = 49; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT_PUSHED_BORDER = 50; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_CHECKED_TEXT = XPCOLOR_HIGHLIGHT_TEXT; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_3DFACE = 51; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_3DSHADOW = 52; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_EDITCTRLBORDER = 53; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_FRAME = 54; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_SPLITTER_FACE = 55; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_LABEL = 56; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_STATICFRAME = 57; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_HIGHLIGHT_DISABLED_BORDER = 58; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_SHADOW_FACTOR = 59; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_TOOLBAR_GRAYTEXT = 60; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_FLOATBAR_BORDER = 61; //<ALIAS CXTPColorManager::GetColor>
|
||
|
const UINT XPCOLOR_LAST = 62; //<ALIAS CXTPColorManager::GetColor>
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// The CXTPPaintManagerColor class is used to manage COLORREF values for
|
||
|
// determining default and application defined colors.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPPaintManagerColor
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPPaintManagerColor object and initializes default
|
||
|
// and application defined colors for the class
|
||
|
// Parameters:
|
||
|
// clr - n RGB value that represents default color to set.
|
||
|
// See Also:
|
||
|
// SetStandardValue, SetCustomValue
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPPaintManagerColor();
|
||
|
CXTPPaintManagerColor(COLORREF clr); // <combine CXTPPaintManagerColor::CXTPPaintManagerColor>
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function determines if application defined colors are
|
||
|
// used.
|
||
|
// Returns:
|
||
|
// TRUE if application defined colors are used, otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsDefaultValue() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function determines if the standard color is set and
|
||
|
// used.
|
||
|
// Returns:
|
||
|
// TRUE if standard color is set and custom color is not set,
|
||
|
// otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsStandardValue() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function determines if the custom color is set and
|
||
|
// used.
|
||
|
// Returns:
|
||
|
// TRUE if custom color is set, otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsCustomValue() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will retrieves the default color for the
|
||
|
// CXTPPaintManagerColor class.
|
||
|
// Returns:
|
||
|
// An RGB value that represents the default color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
COLORREF GetStandardColor() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will sets the application defined color for
|
||
|
// the CXTPPaintManagerColor class.
|
||
|
// Parameters:
|
||
|
// clr - n RGB value that represents application defined color to set.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetCustomValue(COLORREF clr);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will sets the default color for
|
||
|
// the CXTPPaintManagerColor class.
|
||
|
// Parameters:
|
||
|
// clr - n RGB value that represents default color to set.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetStandardValue(COLORREF clr);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will remove the application defined color (if any)
|
||
|
// that was defined for the CXTPPaintManagerColor class.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetDefaultValue();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Operator used to retrieve an RGB color value that represents
|
||
|
// the current color defined for the CXTPPaintManagerColor class.
|
||
|
// Returns:
|
||
|
// An RGB value that represents the current color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
operator COLORREF() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This operator assigns a new COLORREF value for the application defined color
|
||
|
// Parameters:
|
||
|
// clr - RGB value that represents application defined color to set.
|
||
|
// refclr - Reference to CXTPPaintManagerColor value that represents application defined color to set.
|
||
|
// See Also:
|
||
|
// SetStandardValue, SetCustomValue
|
||
|
//-----------------------------------------------------------------------
|
||
|
const CXTPPaintManagerColor& operator=(COLORREF clr);
|
||
|
const CXTPPaintManagerColor& operator=(const CXTPPaintManagerColor& refclr); // <combine CXTPPaintManagerColor::=@COLORREF>
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method reads or writes data from or to an archive.
|
||
|
// Parameters:
|
||
|
// ar - A CArchive object to serialize to or from.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Serialize(CArchive& ar);
|
||
|
protected:
|
||
|
COLORREF m_clrStandardValue; // Standard color
|
||
|
COLORREF m_clrCustomValue; // Application defined color
|
||
|
};
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
AFX_INLINE BOOL CXTPPaintManagerColor::IsDefaultValue() const {
|
||
|
return (m_clrCustomValue == COLORREF_NULL) && (m_clrStandardValue == COLORREF_NULL);
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPPaintManagerColor::IsStandardValue() const {
|
||
|
return (m_clrCustomValue == COLORREF_NULL) && (m_clrStandardValue != COLORREF_NULL);
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPPaintManagerColor::IsCustomValue() const {
|
||
|
return m_clrCustomValue != COLORREF_NULL;
|
||
|
}
|
||
|
AFX_INLINE COLORREF CXTPPaintManagerColor::GetStandardColor() const {
|
||
|
return m_clrStandardValue;
|
||
|
}
|
||
|
AFX_INLINE void CXTPPaintManagerColor::SetCustomValue(COLORREF clr) {
|
||
|
m_clrCustomValue = clr;
|
||
|
}
|
||
|
AFX_INLINE void CXTPPaintManagerColor::SetStandardValue(COLORREF clr) {
|
||
|
m_clrStandardValue = clr;
|
||
|
}
|
||
|
AFX_INLINE void CXTPPaintManagerColor::SetDefaultValue() {
|
||
|
m_clrCustomValue = COLORREF_NULL;
|
||
|
}
|
||
|
AFX_INLINE CXTPPaintManagerColor::operator COLORREF() const{
|
||
|
return (m_clrCustomValue == COLORREF_NULL) ? m_clrStandardValue : m_clrCustomValue;
|
||
|
}
|
||
|
AFX_INLINE const CXTPPaintManagerColor& CXTPPaintManagerColor::operator=(COLORREF clr) {
|
||
|
SetCustomValue(clr); return *this;
|
||
|
}
|
||
|
AFX_INLINE const CXTPPaintManagerColor& CXTPPaintManagerColor::operator=(const CXTPPaintManagerColor& clr) {
|
||
|
m_clrCustomValue = clr.m_clrCustomValue;
|
||
|
m_clrStandardValue = clr.m_clrStandardValue;
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// The CXTPPaintManagerColorGradient class is used to manage COLORREF values
|
||
|
// for determining light and dark gradient colors.
|
||
|
// See Also: CXTPPaintManagerColor
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPPaintManagerColorGradient
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPPaintManagerColorGradient object and initializes
|
||
|
// default dark and light colors equal to the specified COLORREF value.
|
||
|
// Parameters:
|
||
|
// clr - An RGB COLORREF value representing the dark and light colors.
|
||
|
// clrLight - An RGB COLORREF value representing the light color.
|
||
|
// clrDark - An RGB COLORREF value representing the dark color.
|
||
|
// See Also:
|
||
|
// SetStandardValue, SetCustomValue
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPPaintManagerColorGradient();
|
||
|
CXTPPaintManagerColorGradient(const COLORREF clr); // <combine CXTPPaintManagerColorGradient::CXTPPaintManagerColorGradient>
|
||
|
CXTPPaintManagerColorGradient(const CXTPPaintManagerColor clr); // <combine CXTPPaintManagerColorGradient::CXTPPaintManagerColorGradient>
|
||
|
CXTPPaintManagerColorGradient(COLORREF clrLight, COLORREF clrDark); // <combine CXTPPaintManagerColorGradient::CXTPPaintManagerColorGradient>
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function sets the value of the default
|
||
|
// dark and light colors equal to the specified COLORREF value.
|
||
|
// Parameters:
|
||
|
// clr - An RGB COLORREF value representing the dark and light colors.
|
||
|
// clrref - An reference to CXTPPaintManagerColorGradient value
|
||
|
// representing the dark and light colors.
|
||
|
// clrLight - An RGB COLORREF value representing the light color.
|
||
|
// clrDark - An RGB COLORREF value representing the dark color.
|
||
|
// fGradientFactor - Gradient divider factor
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetStandardValue(const COLORREF clr);
|
||
|
// ----------------------------------------------------------------
|
||
|
// <combine CXTPPaintManagerColorGradient::SetStandardValue@COLORREF>
|
||
|
// ----------------------------------------------------------------
|
||
|
void SetStandardValue(CXTPPaintManagerColorGradient& clrref);
|
||
|
// ----------------------------------------------------------------
|
||
|
// <combine CXTPPaintManagerColorGradient::SetStandardValue@COLORREF>
|
||
|
// ----------------------------------------------------------------
|
||
|
void SetStandardValue(COLORREF clrLight, COLORREF clrDark, float fGradientFactor = 0.5f);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will sets the application defined 4 color gradient values for
|
||
|
// the CXTPPaintManagerColorGradient class.
|
||
|
// Parameters:
|
||
|
// clr - An RGB COLORREF value representing the dark and light colors.
|
||
|
// clrref - An reference to CXTPPaintManagerColorGradient value
|
||
|
// representing the dark and light colors.
|
||
|
// clrLight - An RGB COLORREF value representing the light color.
|
||
|
// clrDark - An RGB COLORREF value representing the dark color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetCustomValue(const COLORREF clr);
|
||
|
// ----------------------------------------------------------------
|
||
|
// <combine CXTPPaintManagerColorGradient::SetCustomValue@COLORREF>
|
||
|
// ----------------------------------------------------------------
|
||
|
void SetCustomValue(CXTPPaintManagerColorGradient& clrref);
|
||
|
// ----------------------------------------------------------------
|
||
|
// <combine CXTPPaintManagerColorGradient::SetCustomValue@COLORREF>
|
||
|
// ----------------------------------------------------------------
|
||
|
void SetCustomValue(COLORREF clrLight, COLORREF clrDark);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Operator used to retrieve an RGB color value that represents
|
||
|
// the dark gradient color used for the CXTPPaintManagerColorGradient class.
|
||
|
// Returns:
|
||
|
// An RGB value that represents the dark gradient color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
operator COLORREF () const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves a reference to the CXTPPaintManagerColor dark gradient color
|
||
|
// member.
|
||
|
// Returns:
|
||
|
// A reference to the CXTPPaintManagerColor dark gradient color used
|
||
|
// for the CXTPPaintManagerColorGradient class.
|
||
|
//-----------------------------------------------------------------------
|
||
|
operator CXTPPaintManagerColor& ();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This operator copy all values from the specified source object;
|
||
|
// Parameters: //
|
||
|
// refSrc - Reference to CXTPPaintManagerColorGradient source object.
|
||
|
// See Also:
|
||
|
// SetStandardValue, SetCustomValue
|
||
|
//-----------------------------------------------------------------------
|
||
|
const CXTPPaintManagerColorGradient& operator=(const CXTPPaintManagerColorGradient& refSrc);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if the CXTPPaintManagerColorGradient object's colors
|
||
|
// have been initialized.
|
||
|
// Returns:
|
||
|
// TRUE if both light and dark gradient colors have not been initialized,
|
||
|
// otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsNull() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method reads or writes data from or to an archive.
|
||
|
// Parameters:
|
||
|
// ar - A CArchive object to serialize to or from.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Serialize(CArchive& ar);
|
||
|
|
||
|
public:
|
||
|
CXTPPaintManagerColor clrLight; // Light color.
|
||
|
CXTPPaintManagerColor clrDark; // Dark color.
|
||
|
float fGradientFactor; // Gradient divider factor
|
||
|
};
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
AFX_INLINE CXTPPaintManagerColorGradient::operator COLORREF () const {
|
||
|
return clrDark;
|
||
|
}
|
||
|
AFX_INLINE CXTPPaintManagerColorGradient::operator CXTPPaintManagerColor& () {
|
||
|
return clrDark;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPPaintManagerColorGradient::IsNull() const {
|
||
|
return ((clrDark == COLORREF_NULL) && (clrLight == COLORREF_NULL));
|
||
|
}
|
||
|
AFX_INLINE const CXTPPaintManagerColorGradient& CXTPPaintManagerColorGradient::operator=(const CXTPPaintManagerColorGradient& refSrc) {
|
||
|
clrLight = refSrc.clrLight;
|
||
|
clrDark = refSrc.clrDark;
|
||
|
fGradientFactor = refSrc.fGradientFactor;
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPColorManager is a stand alone class. This object is used for manipulation of
|
||
|
// RGB values.
|
||
|
// See Also: XTPColorManager
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPColorManager : public CXTPCmdTarget
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Application-defined callback function used with the SetGetSysColorPtr function.
|
||
|
// See Also: SetGetSysColorPtr
|
||
|
//-----------------------------------------------------------------------
|
||
|
typedef DWORD (__stdcall* PFNGETSYSCOLOR)(int nIndex);
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This function will refresh the display element colors defined
|
||
|
// in the CXTPColorManager object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RefreshColors();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves the current color of the specified XP display element.
|
||
|
// Parameters:
|
||
|
// nIndex - Specifies the display element whose color is to be
|
||
|
// retrieved. This parameter can be one of the
|
||
|
// following values displayed in the table below:
|
||
|
// Remarks:
|
||
|
// Display elements are the parts of a window
|
||
|
// and the display that appear on the system display screen.
|
||
|
// The function returns the red, green, blue (RGB) color value
|
||
|
// of the given element. To provide a consistent look to all
|
||
|
// Windows applications, the operating system provides and
|
||
|
// maintains global settings that define the colors of various
|
||
|
// aspects of the display. These settings as a group are sometimes
|
||
|
// referred to as a "color scheme." To view the current color
|
||
|
// settings, click Control Panel, double-click the Display icon,
|
||
|
// and then click the "Appearance" tab.
|
||
|
//<TABLE>
|
||
|
// <b>Constant</b> <b>Value</b> <b>Description</b>
|
||
|
// -------------------------------- ============ ------------------------------------------------------------
|
||
|
// COLOR_SCROLLBAR 0 Scroll bar color
|
||
|
// COLOR_BACKGROUND 1 Desktop color
|
||
|
// COLOR_ACTIVECAPTION 2 Color of the title bar for the active window, Specifies the left side color in the color gradient of an active window's title bar if the gradient effect is enabled.
|
||
|
// COLOR_INACTIVECAPTION 3 Color of the title bar for the inactive window, Specifies the left side color in the color gradient of an inactive window's title bar if the gradient effect is enabled.
|
||
|
// COLOR_MENU 4 Menu background color
|
||
|
// COLOR_WINDOW 5 Window background color
|
||
|
// COLOR_WINDOWFRAME 6 Window frame color
|
||
|
// COLOR_MENUTEXT 7 Color of text on menus
|
||
|
// COLOR_WINDOWTEXT 8 Color of text in windows
|
||
|
// COLOR_CAPTIONTEXT 9 Color of text in caption, size box, and scroll arrow
|
||
|
// COLOR_ACTIVEBORDER 10 Border color of active window
|
||
|
// COLOR_INACTIVEBORDER 11 Border color of inactive window
|
||
|
// COLOR_APPWORKSPACE 12 Background color of multiple-document interface (MDI) applications
|
||
|
// COLOR_HIGHLIGHT 13 Background color of items selected in a control
|
||
|
// COLOR_HIGHLIGHTTEXT 14 Text color of items selected in a control
|
||
|
// COLOR_BTNFACE 15 Face color for three-dimensional display elements and for dialog box backgrounds.
|
||
|
// COLOR_BTNSHADOW 16 Color of shading on the edge of command buttons
|
||
|
// COLOR_GRAYTEXT 17 Grayed (disabled) text
|
||
|
// COLOR_BTNTEXT 18 Text color on push buttons
|
||
|
// COLOR_INACTIVECAPTIONTEXT 19 Color of text in an inactive caption
|
||
|
// COLOR_BTNHIGHLIGHT 20 Highlight color for 3-D display elements
|
||
|
// COLOR_3DDKSHADOW 21 Darkest shadow color for 3-D display elements
|
||
|
// COLOR_3DLIGHT 22 Second lightest 3-D color after 3DHighlight, Light color for three-dimensional display elements (for edges facing the light source.)
|
||
|
// COLOR_INFOTEXT 23 Color of text in ToolTips
|
||
|
// COLOR_INFOBK 24 Background color of ToolTips
|
||
|
// COLOR_HOTLIGHT 26 Color for a hot-tracked item. Single clicking a hot-tracked item executes the item.
|
||
|
// COLOR_GRADIENTACTIVECAPTION 27 Right side color in the color gradient of an active window's title bar. COLOR_ACTIVECAPTION specifies the left side color.
|
||
|
// COLOR_GRADIENTINACTIVECAPTION 28 Right side color in the color gradient of an inactive window's title bar. COLOR_INACTIVECAPTION specifies the left side color.
|
||
|
// XPCOLOR_TOOLBAR_FACE 30 XP toolbar background color.
|
||
|
// XPCOLOR_HIGHLIGHT 31 XP menu item selected color.
|
||
|
// XPCOLOR_HIGHLIGHT_BORDER 32 XP menu item selected border color.
|
||
|
// XPCOLOR_HIGHLIGHT_PUSHED 33 XP menu item pushed color.
|
||
|
// XPCOLOR_HIGHLIGHT_CHECKED 36 XP menu item checked color.
|
||
|
// XPCOLOR_HIGHLIGHT_CHECKED_BORDER 37 An RGB value that represents the XP menu item checked border color.
|
||
|
// XPCOLOR_ICONSHADDOW 34 XP menu item icon shadow.
|
||
|
// XPCOLOR_GRAYTEXT 35 XP menu item disabled text color.
|
||
|
// XPCOLOR_TOOLBAR_GRIPPER 38 XP toolbar gripper color.
|
||
|
// XPCOLOR_SEPARATOR 39 XP toolbar separator color.
|
||
|
// XPCOLOR_DISABLED 40 XP menu icon disabled color.
|
||
|
// XPCOLOR_MENUBAR_FACE 41 XP menu item57- text background color.
|
||
|
// XPCOLOR_MENUBAR_EXPANDED 42 XP hidden menu commands background color.
|
||
|
// XPCOLOR_MENUBAR_BORDER 43 XP menu border color.
|
||
|
// XPCOLOR_MENUBAR_TEXT 44 XP menu item text color.
|
||
|
// XPCOLOR_HIGHLIGHT_TEXT 45 XP menu item selected text color.
|
||
|
// XPCOLOR_TOOLBAR_TEXT 46 XP toolbar text color.
|
||
|
// XPCOLOR_PUSHED_TEXT 47 XP toolbar pushed text color.
|
||
|
// XPCOLOR_TAB_INACTIVE_BACK 48 XP inactive tab background color.
|
||
|
// XPCOLOR_TAB_INACTIVE_TEXT 49 XP inactive tab text color.
|
||
|
// XPCOLOR_HIGHLIGHT_PUSHED_BORDER 50 An RGB value that represents the XP border color for pushed in 3D elements.
|
||
|
// XPCOLOR_CHECKED_TEXT 45 XP color for text displayed in a checked button.
|
||
|
// XPCOLOR_3DFACE 51 XP face color for three- dimensional display elements and for dialog box backgrounds.
|
||
|
// XPCOLOR_3DSHADOW 52 XP shadow color for three-dimensional display elements (for edges facing away from the light source).
|
||
|
// XPCOLOR_EDITCTRLBORDER 53 XP color for the border color of edit controls.
|
||
|
// XPCOLOR_FRAME 54 Office 2003 frame color.
|
||
|
// XPCOLOR_SPLITTER_FACE 55 XP splitter face color.
|
||
|
// XPCOLOR_LABEL 56 Color for label control (xtpControlLabel)
|
||
|
// XPCOLOR_STATICFRAME 57 WinXP Static frame color
|
||
|
//</TABLE>
|
||
|
// Returns:
|
||
|
// The red, green, blue (RGB) color value of the given element.
|
||
|
//-----------------------------------------------------------------------
|
||
|
COLORREF GetColor(int nIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the Luna color specified by nIndes.
|
||
|
// Parameters:
|
||
|
// nIndex - Specifies the display element whose color is to be
|
||
|
// retrieved.
|
||
|
// Returns:
|
||
|
// An RGB color value representing the Luna color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
COLORREF GetLunaColor(int nIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to blend the light and dark colors
|
||
|
// by the amount specified in nDelta.
|
||
|
// Parameters:
|
||
|
// clrLight - RGB light color
|
||
|
// clrDark - RGB dark color
|
||
|
// nDelta - Amount saturation to blend colors.
|
||
|
// Returns:
|
||
|
// An RGB color value representing the two blended colors.
|
||
|
//-----------------------------------------------------------------------
|
||
|
COLORREF LightColor(COLORREF clrLight, COLORREF clrDark, int nDelta) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to disable the luna (Blue, Olive
|
||
|
// and Green) colors for Office 2003 theme for Windows XP and
|
||
|
// later operating systems.
|
||
|
// Parameters:
|
||
|
// bDisable - TRUE to disable luna colors, otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DisableLunaColors(BOOL bDisable = TRUE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if Luna colors for Office 2003 style is disabled.
|
||
|
// Returns:
|
||
|
// TRUE if the luna colors are disabled, otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsLunaColorsDisabled() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set the color for the specified index.
|
||
|
// See GetColor for a complete list of index values.
|
||
|
// Parameters:
|
||
|
// nIndex - Color index.
|
||
|
// clrValue - RGB color value to set.
|
||
|
// See Also: SetColors
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetColor(int nIndex, COLORREF clrValue);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set the colors for each element to the
|
||
|
// color in the specified color array.
|
||
|
// Parameters:
|
||
|
// cElements - Number of elements in array.
|
||
|
// lpaElements - Array of elements.
|
||
|
// lpaRgbValues - Array of RGB values.
|
||
|
// See Also: SetColor
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetColors(int cElements, const int* lpaElements, const COLORREF* lpaRgbValues);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set the Office 2003 Luna colors for each element to correspond with
|
||
|
// the current Windows XP visual style.
|
||
|
// See Also: SetColor, SetColors
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RefreshLunaColors();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to determine the current Windows XP
|
||
|
// theme in use.
|
||
|
// Returns:
|
||
|
// A XTPCurrentSystemTheme enumeration that represents the
|
||
|
// current Windows theme in use, can be one of the following
|
||
|
// values:
|
||
|
// * <b>xtpSystemThemeUnknown</b> Indicates no known theme in use
|
||
|
// * <b>xtpSystemThemeBlue</b> Indicates blue theme in use
|
||
|
// * <b>xtpSystemThemeOlive</b> Indicates olive theme in use
|
||
|
// * <b>xtpSystemThemeSilver</b> Indicates silver theme in use
|
||
|
// See Also: SetLunaTheme, RefreshLunaColors
|
||
|
//-----------------------------------------------------------------------
|
||
|
XTPCurrentSystemTheme GetCurrentSystemTheme() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to determine the current Windows XP
|
||
|
// theme in use.
|
||
|
// Returns:
|
||
|
// A XTPCurrentSystemTheme enumeration that represents the
|
||
|
// current Windows theme in use, can be one of the following
|
||
|
// values:
|
||
|
// * <b>xtpSystemThemeUnknown</b> Indicates no known theme in use
|
||
|
// * <b>xtpSystemThemeBlue</b> Indicates blue theme in use
|
||
|
// * <b>xtpSystemThemeOlive</b> Indicates olive theme in use
|
||
|
// * <b>xtpSystemThemeSilver</b> Indicates silver theme in use
|
||
|
//-----------------------------------------------------------------------
|
||
|
XTPCurrentSystemTheme GetWinThemeWrapperTheme() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to force system theme.
|
||
|
// Parameters:
|
||
|
// systemTheme - theme to use. Can be any of the values listed in the Remarks section.
|
||
|
// Remarks:
|
||
|
// theme can be one of the following:
|
||
|
// * <b>xtpSystemThemeUnknown</b> Disables <i>luna</i> theme support.
|
||
|
// * <b>xtpSystemThemeBlue</b> Enables blue theme
|
||
|
// * <b>xtpSystemThemeOlive</b> Enables olive theme
|
||
|
// * <b>xtpSystemThemeSilver</b> Enables silver theme
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetLunaTheme(XTPCurrentSystemTheme systemTheme);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method replace standard GetSysColor to application defined.
|
||
|
// Parameters:
|
||
|
// pfnGetSysColor - Pointer to the PFNGETSYSCOLOR procedure
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetGetSysColorPtr(PFNGETSYSCOLOR pfnGetSysColor);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to determine if the system display
|
||
|
// is set to low resolution.
|
||
|
// Parameters:
|
||
|
// hDC - Handle to a device context, if NULL the desktop window
|
||
|
// device context is used.
|
||
|
// Returns:
|
||
|
// TRUE if the system display is set to low resolution,
|
||
|
// otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsLowResolution(HDC hDC = 0);
|
||
|
|
||
|
public:
|
||
|
BOOL LongColor(COLORREF clrMain, COLORREF clrSub, BOOL bCalcLength, float fDistance);
|
||
|
|
||
|
private:
|
||
|
CXTPColorManager();
|
||
|
void RefreshSysColors();
|
||
|
void RefreshXPColors();
|
||
|
void RefreshGradientColors();
|
||
|
float ColorWidth(int nLength, int nWidth);
|
||
|
float ColorDelta(COLORREF clrA, COLORREF clrB);
|
||
|
float Length(COLORREF clrA, COLORREF clrB);
|
||
|
COLORREF MixColor(COLORREF clrMain, COLORREF clrSub, float fDistance);
|
||
|
COLORREF AdjustColor(COLORREF clrMain, COLORREF clrSub, float fDistance);
|
||
|
double GetRDelta(COLORREF clr);
|
||
|
double GetGDelta(COLORREF clr);
|
||
|
double GetBDelta(COLORREF clr);
|
||
|
XTPCurrentSystemTheme _GetWinThemeWrapperTheme();
|
||
|
|
||
|
// singleton, instantiate on demand.
|
||
|
static CXTPColorManager& AFX_CDECL Instance();
|
||
|
|
||
|
public:
|
||
|
CXTPPaintManagerColorGradient grcCaption; // Office 2003 Caption gradient color.
|
||
|
CXTPPaintManagerColorGradient grcDockBar; // Office 2003 Dockbar gradient color.
|
||
|
CXTPPaintManagerColorGradient grcShortcutBarGripper; // Office 2003 Shortcut bar gripper.
|
||
|
|
||
|
CXTPPaintManagerColorGradient grcToolBar; // Office 2003 ToolBar gradient color.
|
||
|
CXTPPaintManagerColorGradient grcMenu; // Office 2003 Menu sidebar gradient color.
|
||
|
CXTPPaintManagerColorGradient grcMenuExpanded; // Office 2003 Expanded menu sidebar gradient color.
|
||
|
CXTPPaintManagerColorGradient grcMenuItemPopup; // Office 2003 Menu item popup gradient color.
|
||
|
|
||
|
CXTPPaintManagerColorGradient grcLunaChecked; // Office 2003 checked button gradient color.
|
||
|
CXTPPaintManagerColorGradient grcLunaPushed; // Office 2003 pushed button gradient color.
|
||
|
CXTPPaintManagerColorGradient grcLunaSelected; // Office 2003 selected button gradient color.
|
||
|
|
||
|
BOOL m_bEnableLunaBlueForRoyaleTheme; // TRUE if Office2003 blue theme will be used for xtpSystemThemeRoyale
|
||
|
BOOL m_bEnableLunaBlueForAeroTheme; // TRUE if Office2003 blue theme will be used for xtpSystemThemeAero
|
||
|
|
||
|
private:
|
||
|
BOOL m_bDisableLunaColors;
|
||
|
COLORREF m_arrStandardColor[XPCOLOR_LAST + 1];
|
||
|
COLORREF m_arrCustomColor[XPCOLOR_LAST + 1];
|
||
|
COLORREF m_arrLunaColor[XPCOLOR_LAST + 1];
|
||
|
PFNGETSYSCOLOR m_pfnGetSysColor;
|
||
|
XTPCurrentSystemTheme m_systemTheme;
|
||
|
XTPCurrentSystemTheme m_winThemeWrapperTheme;
|
||
|
|
||
|
|
||
|
friend CXTPColorManager* XTPColorManager();
|
||
|
};
|
||
|
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to access CXTPColorManager members.
|
||
|
// Since this class is designed as a single instance object you can
|
||
|
// only access version info through this method. You <b>cannot</b>
|
||
|
// directly instantiate an object of type CXTPColorManager.
|
||
|
// Example:
|
||
|
// <code>
|
||
|
// COLORREF cr = XTPColorManager()->GetColor(nIndex);
|
||
|
// </code>
|
||
|
//---------------------------------------------------------------------------
|
||
|
CXTPColorManager* XTPColorManager();
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member as a convenient way to call
|
||
|
// XTPColorManager()->GetColor, see CXTPColorManager::GetColor for
|
||
|
// more details.
|
||
|
// Parameters:
|
||
|
// nIndex - Specifies the display element whose color is to be
|
||
|
// retrieved.
|
||
|
// Returns:
|
||
|
// The red, green, blue (RGB) color value of the given element.
|
||
|
// Example:
|
||
|
// <code>
|
||
|
// if (eState == xtMouseNormal)
|
||
|
// {
|
||
|
// pDC->Draw3dRect(rcItem,
|
||
|
// GetXtremeColor(COLOR_3DFACE),
|
||
|
// GetXtremeColor(COLOR_3DFACE));
|
||
|
// }
|
||
|
// </code>
|
||
|
// See Also:
|
||
|
// CXTPColorManager::GetColor
|
||
|
//---------------------------------------------------------------------------
|
||
|
COLORREF GetXtremeColor(UINT nIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the MS Office color represented by nIndex.
|
||
|
// Parameters:
|
||
|
// nIndex - Specifies the display element whose color is to be
|
||
|
// retrieved.
|
||
|
// Returns:
|
||
|
// An RGB color value representing the color value of the MS Office color.
|
||
|
// Example:
|
||
|
// <code>
|
||
|
// switch (XTPColorManager()->GetCurrentSystemTheme())
|
||
|
// {
|
||
|
// case xtpSystemThemeBlue:
|
||
|
// case xtpSystemThemeOlive:
|
||
|
// case xtpSystemThemeSilver:
|
||
|
// m_clr3DFacePushed.SetStandardValue(GetMSO2003Color(XPCOLOR_HIGHLIGHT_PUSHED));
|
||
|
// m_clr3DFaceHilite.SetStandardValue(GetMSO2003Color(XPCOLOR_HIGHLIGHT));
|
||
|
// m_clrBtnTextPushed.SetStandardValue(GetMSO2003Color(XPCOLOR_PUSHED_TEXT));
|
||
|
// m_clrBtnTextHilite.SetStandardValue(GetMSO2003Color(XPCOLOR_HIGHLIGHT_TEXT));
|
||
|
// m_clrBorder3DShadow.SetStandardValue(GetMSO2003Color(XPCOLOR_HIGHLIGHT_BORDER));
|
||
|
// m_clrBorder3DHilite.SetStandardValue(GetMSO2003Color(XPCOLOR_HIGHLIGHT_BORDER));
|
||
|
// break;
|
||
|
// }
|
||
|
// </code>
|
||
|
// See Also:
|
||
|
// CXTPColorManager::GetColor
|
||
|
//-----------------------------------------------------------------------
|
||
|
COLORREF GetMSO2003Color(UINT nIndex);
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
AFX_INLINE CXTPColorManager* XTPColorManager() {
|
||
|
return &CXTPColorManager::Instance();
|
||
|
}
|
||
|
AFX_INLINE COLORREF GetXtremeColor(UINT nIndex) {
|
||
|
return XTPColorManager()->GetColor(nIndex);
|
||
|
}
|
||
|
AFX_INLINE COLORREF GetMSO2003Color(UINT nIndex) {
|
||
|
return XTPColorManager()->GetLunaColor(nIndex);
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This global function will refresh the display element
|
||
|
// colors defined in the CXTPColorManager class.
|
||
|
// See Also:
|
||
|
// CXTPColorManager::RefreshColors
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS void AFX_CDECL RefreshXtremeColors();
|
||
|
|
||
|
#endif // !defined(__XTPCOLORMANAGER_H__)
|