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.

1235 lines
40 KiB
C++

// XTPTabPaintManager.cpp: implementation of the CXTPTabPaintManager 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
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Common/XTPColorManager.h"
#include "Common/XTPDrawHelpers.h"
#include "Common/XTPResourceImage.h"
#include "Common/XTPWinThemeWrapper.h"
#include "Common/XTPImageManager.h"
#include "Common/XTPSystemHelpers.h"
#include "Common/XTPVC80Helpers.h"
#include "XTPTabManager.h"
#include "XTPTabPaintManager.h"
#include "XTPTabPaintManager.inl"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////////
// CXTPTabPaintManagerColorSet
CXTPTabPaintManagerColorSet::CXTPTabPaintManagerColorSet()
{
m_pPaintManager = NULL;
}
CXTPTabPaintManagerColorSet::~CXTPTabPaintManagerColorSet()
{
}
BOOL CXTPTabPaintManagerColorSet::IsAppThemed() const
{
return FALSE;
}
void CXTPTabPaintManagerColorSet::RefreshMetrics()
{
RefreshXtremeColors();
m_clrFrameBorder.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_clrHeaderFace.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrControlFace.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrPaneFace.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrBorderHighlight.SetStandardValue(GetXtremeColor(COLOR_BTNHILIGHT));
m_clrInActiveText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_clrNormalText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_clrSelectedText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_clrHighlightText.SetStandardValue(RGB(0, 0, 128));
m_clrDisabledText.SetStandardValue(GetXtremeColor(COLOR_GRAYTEXT));
m_csStateButton.clrFace.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
m_csStateButton.clrBorder.SetStandardValue(GetXtremeColor(COLOR_HIGHLIGHT));
m_csPropertyPage2003.clrDarkShadow.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_csPropertyPage2003.clrBorderLeftHighlight.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_csPropertyPage2003.clrBorderTopHighlight.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_csPropertyPage.clrHighlight.SetStandardValue(GetXtremeColor(COLOR_BTNHILIGHT));
m_csPropertyPage.clrShadow.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_csPropertyPage.clrDarkShadow.SetStandardValue(GetXtremeColor(COLOR_3DDKSHADOW));
m_csExcelSelected.clrRightInnerBorder.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_csExcelSelected.clrLeftInnerBorder.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_csExcelSelected.clrTopInnerBorder.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_csExcelSelected.clrLeftOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelSelected.clrRightOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelSelected.clrTopOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelNormal = m_csExcelSelected;
m_csExcelNormal.clrLeftOuterBorder.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
m_csExcelNormal.clrRightOuterBorder.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_clrButtonSelected.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrButtonNormal.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrButtonHighlighted.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrButtonPressed.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
if (m_pPaintManager->GetAppearance() == xtpTabAppearanceExcel)
{
m_clrButtonSelected.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
}
m_clrAutoHideFace = m_clrHeaderFace;
}
void CXTPTabPaintManagerColorSet::GradientFill(CDC* pDC, CRect rc, COLORREF clrLight, COLORREF clrDark, XTPTabPosition position)
{
if (clrLight == XTP_TABMANAGER_COLOR_SHADED)
{
WORD bits[] =
{
0x0055, 0x00AA, 0x0055, 0x00AA,
0x0055, 0x00AA, 0x0055, 0x00AA
};
CBitmap bitmap;
bitmap.CreateBitmap(8, 8, 1, 1, &bits);
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = pDC->SelectObject(&brush);
pDC->SetBkColor(GetXtremeColor(COLOR_3DFACE));
pDC->SetTextColor(GetXtremeColor(COLOR_3DHIGHLIGHT));
pDC->PatBlt(rc.left, rc.top, rc.Width(), rc.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
}
else
{
BOOL bHoriz = IsHorizontalTabPosition(position);
if (!IsTopLeftTabPosition(position)) SwapColors(clrLight, clrDark);
if (m_pPaintManager->m_bInvertGradient) SwapColors(clrLight, clrDark);
XTPDrawHelpers()->GradientFill(pDC, rc, clrLight, clrDark, !bHoriz);
}
}
void CXTPTabPaintManagerColorSet::FillHeader(CDC* pDC, CRect rc, CXTPTabManager* pTabManager)
{
COLORREF clrLight = m_clrHeaderFace.clrLight, clrDark = m_clrHeaderFace.clrDark;
if (clrLight == clrDark && clrLight == GetXtremeColor(COLOR_3DFACE))
{
if (pTabManager->DrawParentBackground(pDC, rc))
return;
}
GradientFill(pDC, rc, clrLight, clrDark, pTabManager->GetPosition());
}
COLORREF CXTPTabPaintManagerColorSet::FillClient(CDC* pDC, CRect rc, CXTPTabManager* pTabManager)
{
CXTPTabManagerItem* pItem = pTabManager->GetSelectedItem();
COLORREF clrClient = pItem ? GetItemColor(pItem) : m_clrButtonSelected;
pDC->FillSolidRect(rc, clrClient);
return clrClient;
}
void CXTPTabPaintManagerColorSet::SetTextColor(CDC* pDC, CXTPTabManagerItem* pItem)
{
pDC->SetTextColor(!pItem->IsEnabled() ? m_clrDisabledText: !pItem->GetTabManager()->IsActive() ? m_clrInActiveText :
pItem->IsSelected() ? m_clrSelectedText: pItem->IsHighlighted() ? m_clrHighlightText : m_clrNormalText);
}
COLORREF CXTPTabPaintManagerColorSet::GetItemColor(CXTPTabManagerItem* pItem)
{
if (m_pPaintManager->m_bOneNoteColors)
{
return pItem->GetColor();
}
return pItem->IsSelected() ? m_clrButtonSelected : m_clrButtonNormal;
}
COLORREF CXTPTabPaintManagerColorSet::FillPropertyButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
COLORREF clr = GetItemColor(pItem);
pDC->FillSolidRect(rcItem, clr);
return clr;
}
void CXTPTabPaintManagerColorSet::FillStateButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
if (!pItem->IsSelected())
{
if (pItem->GetTabManager()->IsHorizontalPosition())
pDC->Draw3dRect(rcItem.right, rcItem.top + 2, 2, rcItem.Height() - 4, GetXtremeColor(COLOR_3DSHADOW), GetXtremeColor(COLOR_3DHIGHLIGHT));
else
pDC->Draw3dRect(rcItem.left + 2, rcItem.bottom, rcItem.Width() - 4, 2, GetXtremeColor(COLOR_3DSHADOW), GetXtremeColor(COLOR_3DHIGHLIGHT));
}
else
{
if (m_pPaintManager->m_bOneNoteColors)
{
pDC->FillSolidRect(rcItem, GetItemColor(pItem));
}
else
{
GradientFill(pDC, rcItem, m_csStateButton.clrFace.clrLight, m_csStateButton.clrFace.clrDark, pItem->GetTabManager()->GetPosition());
}
pDC->Draw3dRect(rcItem, m_csStateButton.clrBorder.clrLight, m_csStateButton.clrBorder.clrDark);
}
}
//////////////////////////////////////////////////////////////////////////
// CColorSetDefault
void CXTPTabPaintManager::CColorSetDefault::RefreshMetrics()
{
CXTPTabPaintManagerColorSet::RefreshMetrics();
m_csStateButton.clrFace.SetStandardValue(XTP_TABMANAGER_COLOR_SHADED);
m_csStateButton.clrBorder.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW), GetXtremeColor(COLOR_3DHIGHLIGHT));
m_csExcelSelected.clrRightInnerBorder.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_csExcelSelected.clrLeftInnerBorder.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_csExcelSelected.clrTopInnerBorder.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_csExcelSelected.clrLeftOuterBorder.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
m_csExcelSelected.clrTopOuterBorder.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_csExcelSelected.clrRightOuterBorder.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
m_csExcelNormal = m_csExcelSelected;
m_csExcelNormal.clrLeftOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelNormal.clrRightOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelNormal.clrTopOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
if (m_pPaintManager->GetAppearance() == xtpTabAppearanceExcel)
{
m_clrButtonSelected.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrButtonNormal.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
m_clrFrameBorder.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
}
}
void CXTPTabPaintManager::CColorSetDefault::FillNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc)
{
COLORREF clrFrameTopLeft = GetXtremeColor(COLOR_3DSHADOW), clrFrameBottomRight = GetXtremeColor(COLOR_BTNHIGHLIGHT);
if (pButton->IsEnabled())
{
if (pButton->IsPressed())
{
pDC->Draw3dRect(rc, clrFrameTopLeft, clrFrameBottomRight);
rc.OffsetRect(1, 1);
}
else if (pButton->IsHighlighted())
pDC->Draw3dRect(rc, clrFrameBottomRight, clrFrameTopLeft);
}
pDC->SetTextColor(GetXtremeColor(COLOR_BTNTEXT));
}
//////////////////////////////////////////////////////////////////////////
// CColorSetVisualStudio2003
void CXTPTabPaintManager::CColorSetVisualStudio2003::RefreshMetrics()
{
CXTPTabPaintManagerColorSet::RefreshMetrics();
if (m_pPaintManager->GetAppearance() != xtpTabAppearanceExcel && m_pPaintManager->GetAppearance() != xtpTabAppearanceStateButtons)
m_clrHeaderFace.SetStandardValue(GetXtremeColor(XPCOLOR_TAB_INACTIVE_BACK));
if (m_pPaintManager->GetAppearance() == xtpTabAppearanceVisualStudio)
{
m_clrInActiveText.SetStandardValue(GetXtremeColor(XPCOLOR_TAB_INACTIVE_TEXT));
m_clrNormalText.SetStandardValue(GetXtremeColor(XPCOLOR_TAB_INACTIVE_TEXT));
}
m_clrAutoHideFace.SetStandardValue(XTPDrawHelpers()->IsLowResolution() ? GetXtremeColor(COLOR_3DFACE) : m_clrHeaderFace);
}
void CXTPTabPaintManager::CColorSetVisualStudio2003::FillNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc)
{
if (m_pPaintManager->GetAppearance() == xtpTabAppearanceExcel || m_pPaintManager->GetAppearance() == xtpTabAppearanceStateButtons)
{
CColorSetDefault::FillNavigateButton(pDC, pButton, rc);
return;
}
COLORREF clrFrameTopLeft = GetXtremeColor(COLOR_BTNTEXT), clrFrameBottomRight = GetXtremeColor(COLOR_3DFACE);
if (pButton->IsEnabled())
{
if (pButton->IsPressed())
{
pDC->Draw3dRect(rc, clrFrameTopLeft, clrFrameBottomRight);
rc.OffsetRect(1, 1);
}
else if (pButton->IsHighlighted())
pDC->Draw3dRect(rc, clrFrameBottomRight, clrFrameTopLeft);
}
pDC->SetTextColor(GetXtremeColor(XPCOLOR_TAB_INACTIVE_TEXT));
}
//////////////////////////////////////////////////////////////////////////
// CColorSetOffice2003
void CXTPTabPaintManager::CColorSetOffice2003::RefreshMetrics()
{
CXTPTabPaintManagerColorSet::RefreshMetrics();
m_clrHeaderFace.SetStandardValue(GetXtremeColor(COLOR_3DFACE), XTPColorManager()->LightColor(GetXtremeColor(COLOR_3DFACE), GetXtremeColor(COLOR_WINDOW), 0xcd));
m_csStateButton.clrFace.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
m_csStateButton.clrBorder.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED_BORDER));
m_clrButtonHighlighted.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
m_clrButtonPressed.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_PUSHED));
m_clrHighlightText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_clrAutoHideFace = m_clrHeaderFace;
m_bLunaTheme = FALSE;
if (!m_pPaintManager->IsLunaColorsDisabled())
{
XTPCurrentSystemTheme systemTheme = XTPColorManager()->GetCurrentSystemTheme();
switch (systemTheme)
{
case xtpSystemThemeBlue:
case xtpSystemThemeRoyale:
case xtpSystemThemeAero:
m_clrFrameBorder.SetStandardValue(RGB(59, 97, 156));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(RGB(59, 97, 156));
m_csPropertyPage.clrDarkShadow.SetStandardValue(RGB(0, 53, 154));
m_csPropertyPage2003.clrDarkShadow.SetStandardValue(RGB(0, 53, 154));
m_csPropertyPage.clrShadow.SetStandardValue(RGB(117, 166, 241));
m_csPropertyPage2003.clrBorderLeftHighlight.SetStandardValue(RGB(117, 166, 241));
m_csPropertyPage2003.clrBorderTopHighlight.SetStandardValue(RGB(255, 255, 255));
m_csStateButton.clrFace.SetStandardValue(RGB(255, 192, 111));
m_csStateButton.clrBorder.SetStandardValue(RGB(0, 0, 128));
m_clrHeaderFace.SetStandardValue(RGB(196, 218, 250), RGB(252, 253, 254));
m_clrButtonNormal.SetStandardValue(RGB(162, 192, 246));
m_clrButtonSelected.SetStandardValue(RGB(255, 194, 115));
m_clrButtonHighlighted.SetStandardValue(RGB(255, 240, 201));
m_clrAutoHideFace.SetStandardValue(RGB(158, 190, 245), RGB(196, 218, 250));
m_clrNavigateButtonBorder.SetStandardValue(RGB(0, 0, 128));
m_bLunaTheme = TRUE;
break;
case xtpSystemThemeOlive:
m_clrFrameBorder.SetStandardValue(RGB(96, 128, 88));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(RGB(96, 128, 88));
m_csPropertyPage.clrDarkShadow.SetStandardValue(RGB(96, 119, 107));
m_csPropertyPage2003.clrDarkShadow.SetStandardValue(RGB(96, 119, 107));
m_csPropertyPage.clrShadow.SetStandardValue(RGB(176, 194, 140));
m_csPropertyPage2003.clrBorderLeftHighlight.SetStandardValue(RGB(176, 194, 140));
m_csPropertyPage2003.clrBorderTopHighlight.SetStandardValue(RGB(255, 255, 255));
m_csStateButton.clrFace.SetStandardValue(RGB(255, 192, 111));
m_csStateButton.clrBorder.SetStandardValue(RGB(63, 93, 56));
m_clrHeaderFace.SetStandardValue(RGB(242, 241, 228), RGB(252, 254, 254));
m_clrButtonNormal.SetStandardValue(RGB(208, 222, 170));
m_clrButtonSelected.SetStandardValue(RGB(255, 194, 115));
m_clrButtonHighlighted.SetStandardValue(RGB(255, 240, 199));
m_clrAutoHideFace.SetStandardValue(RGB(217, 217, 167), RGB(242, 241, 228));
m_clrNavigateButtonBorder.SetStandardValue(RGB(63, 93, 56));
m_bLunaTheme = TRUE;
break;
case xtpSystemThemeSilver:
m_clrFrameBorder.SetStandardValue(RGB(124, 124, 148));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(RGB(124, 124, 148));
m_csPropertyPage.clrDarkShadow.SetStandardValue(RGB(118, 116, 146));
m_csPropertyPage2003.clrDarkShadow.SetStandardValue(RGB(118, 116, 146));
m_csPropertyPage.clrShadow.SetStandardValue(RGB(186, 185, 206));
m_csPropertyPage2003.clrBorderLeftHighlight.SetStandardValue(RGB(186, 185, 206));
m_csPropertyPage2003.clrBorderTopHighlight.SetStandardValue(RGB(255, 255, 255));
m_csStateButton.clrFace.SetStandardValue(RGB(255, 192, 111));
m_csStateButton.clrBorder.SetStandardValue(RGB(75, 75, 111));
m_clrHeaderFace.SetStandardValue(RGB(243, 243, 247), RGB(252, 254, 254));
m_clrButtonNormal.SetStandardValue(RGB(217, 217, 230));
m_clrButtonSelected.SetStandardValue(RGB(255, 194, 115));
m_clrButtonHighlighted.SetStandardValue(RGB(255, 238, 194));
m_clrAutoHideFace.SetStandardValue(RGB(215, 215, 229), RGB(243, 243, 247));
m_clrNavigateButtonBorder.SetStandardValue(RGB(75, 75, 111));
m_bLunaTheme = TRUE;
break;
default:
m_clrButtonSelected.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
}
}
if (m_bLunaTheme)
{
m_clrButtonPressed.SetStandardValue(RGB(254, 142, 75));
}
m_csExcelSelected.clrRightInnerBorder.SetStandardValue(m_clrFrameBorder);
m_csExcelSelected.clrLeftInnerBorder.SetStandardValue(m_clrFrameBorder);
m_csExcelSelected.clrTopInnerBorder.SetStandardValue(m_clrFrameBorder);
m_csExcelSelected.clrTopOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelSelected.clrRightOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelSelected.clrLeftOuterBorder.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csExcelNormal = m_csExcelSelected;
if (m_pPaintManager->GetAppearance() == xtpTabAppearanceStateButtons)
{
m_clrAutoHideFace.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
m_clrHeaderFace.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
}
}
void CXTPTabPaintManager::CColorSetOffice2003::Rectangle(CDC* pDC, CRect rc, int nPen, int nBrush)
{
pDC->FillSolidRect(rc, GetXtremeColor(nBrush));
pDC->Draw3dRect(rc, GetXtremeColor(nPen), GetXtremeColor(nPen));
}
void CXTPTabPaintManager::CColorSetOffice2003::FillNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc)
{
int nColor = COLOR_BTNTEXT;
if (pButton->IsEnabled())
{
if ((pButton->IsHighlighted() && pButton->IsPressed()))
{
if (!m_bLunaTheme)
{
Rectangle(pDC, rc, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED);
nColor = XPCOLOR_PUSHED_TEXT;
}
else
{
XTPDrawHelpers()->GradientFill(pDC, rc, RGB(254, 142, 75), RGB(255, 207, 139), FALSE);
pDC->Draw3dRect(rc, m_clrNavigateButtonBorder, m_clrNavigateButtonBorder);
}
}
else if (pButton->IsPressed() || pButton->IsHighlighted())
{
if (!m_bLunaTheme)
{
Rectangle(pDC, rc, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT);
nColor = XPCOLOR_HIGHLIGHT_TEXT;
}
else
{
XTPDrawHelpers()->GradientFill(pDC, rc, RGB(255, 242, 200), RGB(255, 212, 151), FALSE);
pDC->Draw3dRect(rc, m_clrNavigateButtonBorder, m_clrNavigateButtonBorder);
}
}
}
pDC->SetTextColor(GetXtremeColor(nColor));
}
COLORREF CXTPTabPaintManager::CColorSetOffice2003::FillPropertyButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
COLORREF clrItem = GetItemColor(pItem);
if (pItem->IsPressed())
{
clrItem = m_clrButtonPressed;
}
else if (pItem->IsHighlighted())
{
clrItem = m_clrButtonHighlighted;
}
GradientFill(pDC, rcItem, XTPColorManager()->LightColor(clrItem, RGB(255, 255, 255), 300),
clrItem, pItem->GetTabManager()->GetPosition());
return clrItem;
}
void CXTPTabPaintManager::CColorSetOffice2007::RefreshMetrics()
{
CColorSetOffice2003::RefreshMetrics();
CXTPResourceImages* pImages = XTPResourceImages();
if (pImages->IsValid())
{
m_clrHighlightText.SetStandardValue(0);
m_clrFrameBorder.SetStandardValue(pImages->GetImageColor(_T("TabManager"), _T("FrameBorder")));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(m_clrFrameBorder);
m_csPropertyPage.clrDarkShadow.SetStandardValue(pImages->GetImageColor(_T("TabManager"), _T("DarkShadow")));
m_csPropertyPage2003.clrDarkShadow.SetStandardValue(m_csPropertyPage.clrDarkShadow);
m_csPropertyPage.clrShadow.SetStandardValue(pImages->GetImageColor(_T("TabManager"), _T("LightShadow")));
m_csPropertyPage2003.clrBorderLeftHighlight.SetStandardValue(m_csPropertyPage.clrShadow);
m_csPropertyPage2003.clrBorderTopHighlight.SetStandardValue(RGB(255, 255, 255));
m_clrHeaderFace.SetStandardValue(pImages->GetImageColor(_T("Ribbon"), _T("RibbonFace")));
m_clrAutoHideFace.SetStandardValue(m_clrHeaderFace);
m_clrButtonNormal.SetStandardValue(pImages->GetImageColor(_T("Window"), _T("ButtonFace")));
m_clrButtonSelected.SetStandardValue(pImages->GetImageColor(_T("Window"), _T("HighlightChecked")));
m_clrButtonHighlighted.SetStandardValue(pImages->GetImageColor(_T("Window"), _T("HighlightSelected")));
m_clrNavigateButtonBorder.SetStandardValue(pImages->GetImageColor(_T("Window"), _T("WindowFrame")));
m_clrHighlightText.SetStandardValue(pImages->GetImageColor(_T("Ribbon"), _T("TabNormalText")));
m_clrNormalText.SetStandardValue(pImages->GetImageColor(_T("Ribbon"), _T("TabNormalText")));
m_clrSelectedText.SetStandardValue(pImages->GetImageColor(_T("Ribbon"), _T("TabSelectedText")));
}
else
{
m_clrButtonPressed.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_PUSHED));
m_clrHighlightText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_clrFrameBorder.SetStandardValue(RGB(59, 97, 156));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(m_clrFrameBorder);
m_csPropertyPage.clrDarkShadow.SetStandardValue(RGB(0, 53, 154));
m_csPropertyPage2003.clrDarkShadow.SetStandardValue(RGB(0, 53, 154));
m_csPropertyPage.clrShadow.SetStandardValue(RGB(117, 166, 241));
m_csPropertyPage2003.clrBorderLeftHighlight.SetStandardValue(RGB(117, 166, 241));
m_csPropertyPage2003.clrBorderTopHighlight.SetStandardValue(RGB(255, 255, 255));
m_csStateButton.clrFace.SetStandardValue(RGB(255, 192, 111));
m_csStateButton.clrBorder.SetStandardValue(RGB(0, 0, 128));
m_clrHeaderFace.SetStandardValue(RGB(196, 218, 250), RGB(252, 253, 254));
m_clrButtonNormal.SetStandardValue(RGB(162, 192, 246));
m_clrButtonSelected.SetStandardValue(RGB(255, 194, 115));
m_clrButtonHighlighted.SetStandardValue(RGB(255, 240, 201));
m_clrAutoHideFace.SetStandardValue(RGB(158, 190, 245), RGB(196, 218, 250));
m_clrNavigateButtonBorder.SetStandardValue(RGB(0, 0, 128));
}
m_clrButtonText.SetStandardValue(m_clrNormalText);
m_bLunaTheme = TRUE;
}
void CXTPTabPaintManager::CColorSetOffice2007::FillNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc)
{
CXTPResourceImages* pImages = XTPResourceImages();
if (!pImages->IsValid())
{
CColorSetDefault::FillNavigateButton(pDC, pButton, rc);
return;
}
if (pButton->GetItem() == NULL) pDC->SetTextColor(m_clrButtonText);
if (pButton->IsEnabled() && (pButton->IsPressed() || pButton->IsHighlighted()))
{
CXTPResourceImage* pImage = pImages->LoadFile(_T("TOOLBARBUTTONS22"));
ASSERT(pImage);
if (!pImage)
return;
int nState = pButton->IsPressed() ? 1 : 0;
pImage->DrawImage(pDC, rc, pImage->GetSource(nState, 4), CRect(8, 8, 8, 8), COLORREF_NULL);
pDC->SetTextColor(0);
}
}
//////////////////////////////////////////////////////////////////////////
//
void CXTPTabPaintManager::CColorSetOffice2007Access::RefreshMetrics()
{
CColorSetOffice2007::RefreshMetrics();
CXTPResourceImages* pImages = XTPResourceImages();
if (pImages->IsValid())
{
m_clrSelectedText.SetStandardValue(0);
m_clrNormalText.SetStandardValue(0);
m_clrHighlightText.SetStandardValue(0);
m_clrFrameBorder.SetStandardValue(pImages->GetImageColor(_T("TabManager"), _T("AccessBorder")));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(m_clrFrameBorder);
m_clrHeaderFace.SetStandardValue(pImages->GetImageColor(_T("TabManager"), _T("AccessHeader")));
m_clrAutoHideFace.SetStandardValue(m_clrHeaderFace);
m_clrButtonText.SetStandardValue(pImages->GetImageColor(_T("Ribbon"), _T("TabNormalText")));
}
}
//////////////////////////////////////////////////////////////////////////
// CColorSetWinNative
CXTPTabPaintManager::CColorSetWinNative::CColorSetWinNative()
{
m_themeTabButton = new CXTPWinThemeWrapper();
m_themeToolbar = new CXTPWinThemeWrapper();
}
CXTPTabPaintManager::CColorSetWinNative::~CColorSetWinNative()
{
SAFE_DELETE(m_themeTabButton);
SAFE_DELETE(m_themeToolbar);
}
void CXTPTabPaintManager::CColorSetWinNative::RefreshMetrics()
{
CColorSetDefault::RefreshMetrics();
m_themeTabButton->OpenThemeData(0, L"TAB");
if (m_themeTabButton->IsAppThemed())
{
m_csPropertyPage.clrHighlight.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csPropertyPage.clrShadow.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
m_csPropertyPage.clrDarkShadow.SetStandardValue(XTP_TABMANAGER_COLOR_NONE);
COLORREF clrClientFace = m_clrPaneFace;
if (SUCCEEDED(m_themeTabButton->GetThemeColor(TABP_PANE, 0, TMT_FILLCOLORHINT, &clrClientFace)))
{
m_clrPaneFace.SetStandardValue(clrClientFace);
}
COLORREF clrText;
if (SUCCEEDED(m_themeTabButton->GetThemeColor(TABP_TOPTABITEM, TIS_NORMAL, TMT_TEXTCOLOR, &clrText)))
{
m_clrNormalText.SetStandardValue(clrText);
}
if (SUCCEEDED(m_themeTabButton->GetThemeColor(TABP_TOPTABITEM, TIS_SELECTED, TMT_TEXTCOLOR, &clrText)))
{
m_clrSelectedText.SetStandardValue(clrText);
}
m_clrHighlightText = m_clrNormalText;
if (SUCCEEDED(m_themeTabButton->GetThemeColor(TABP_TOPTABITEM, TIS_HOT, TMT_TEXTCOLOR, &clrText)))
{
m_clrHighlightText.SetStandardValue(clrText);
}
m_clrInActiveText = m_clrNormalText;
}
m_themeToolbar->OpenThemeData(0, L"TOOLBAR");
}
BOOL CXTPTabPaintManager::CColorSetWinNative::IsAppThemed() const
{
return m_themeTabButton->IsAppThemed();
}
void CXTPTabPaintManager::CColorSetWinNative::DrawRotatedBitsBottom(int cx, int cy, UINT* pSrcBits, UINT* pDestBits)
{
UINT* pSrc = &pSrcBits[cx * (cy - 1)];
for (int i = 0; i < cy; i++)
{
pSrcBits = pSrc;
for (int j = 0; j < cx; j++)
{
*pDestBits++ = *pSrcBits++;
}
pSrc -= cx;
}
}
void CXTPTabPaintManager::CColorSetWinNative::DrawRotatedBitsInvertRight(int cx, int cy, UINT* pSrcBits, UINT* pDestBits)
{
UINT* pSrc = pSrcBits;
UINT* pDest = pDestBits + cx - 1;
for (int i = 0; i < cx; i++)
{
pSrcBits = pSrc;
pDestBits = pDest;
for (int j = 0; j < cy; j++)
{
*pDestBits = *pSrcBits;
pSrcBits++;
pDestBits += cx;
}
pSrc += cy;
pDest -= 1;
}
}
void CXTPTabPaintManager::CColorSetWinNative::DrawRotatedBitsRight(int cx, int cy, UINT* pSrcBits, UINT* pDestBits)
{
UINT* pSrc = pSrcBits;
UINT* pDest = pDestBits + cx * cy - cx;
for (int i = 0; i < cy; i++)
{
pSrcBits = pSrc;
pDestBits = pDest;
for (int j = 0; j < cx; j++)
{
*pDestBits++ = *pSrcBits;
pSrcBits += cy;
}
pSrc += 1;
pDest -= cx;
}
}
void CXTPTabPaintManager::CColorSetWinNative::DrawRotatedBitsLeft(int cx, int cy, UINT* pSrcBits, UINT* pDestBits)
{
UINT* pSrc = pSrcBits;
pDestBits += cx * cy - 1;
for (int i = 0; i < cy; i++)
{
pSrcBits = pSrc;
for (int j = 0; j < cx; j++)
{
*pDestBits-- = *pSrcBits;
pSrcBits += cy;
}
pSrc += 1;
}
}
void CXTPTabPaintManager::CColorSetWinNative::DrawRotatedButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem, BOOL bSwap, LPFNDRAWROTATEDBITS pfnRotatedProc)
{
const int cx = rcItem.Width();
const int cy = rcItem.Height();
UINT* pSrcBits = NULL;
HBITMAP hbmSrc = CXTPImageManager::Create32BPPDIBSection(NULL, bSwap ? cy : cx, bSwap ? cx : cy, (LPBYTE*)&pSrcBits);
if (!pSrcBits)
return;
UINT* pDestBits = NULL;
HBITMAP hbmDest = CXTPImageManager::Create32BPPDIBSection(NULL, cx, cy, (LPBYTE*)&pDestBits);
if (!pDestBits)
return;
CDC dc;
dc.CreateCompatibleDC(NULL);
HGDIOBJ hbmpOld = ::SelectObject(dc, hbmSrc);
CRect rcDraw(0, 0, bSwap ? cy: cx, bSwap ? cx : cy);
dc.FillSolidRect(rcDraw, GetXtremeColor(COLOR_3DFACE));
m_themeTabButton->DrawThemeBackground(dc.GetSafeHdc(), pItem->GetIndex() == 0 ? TABP_TOPTABITEMLEFTEDGE :
pItem->GetIndex() == pItem->GetTabManager()->GetItemCount() - 1 && !pItem->IsSelected() ? TABP_TOPTABITEMRIGHTEDGE : TABP_TOPTABITEM,
pItem->IsSelected() ? TIS_SELECTED: pItem->IsHighlighted() ? TIS_HOT : TIS_NORMAL, &rcDraw, 0);
(*pfnRotatedProc)(cx, cy, pSrcBits, pDestBits);
pDC->DrawState(rcItem.TopLeft(), rcItem.Size(), hbmDest, DST_BITMAP);
::SelectObject(dc, hbmpOld);
DeleteObject(hbmSrc);
DeleteObject(hbmDest);
}
COLORREF CXTPTabPaintManager::CColorSetWinNative::FillPropertyButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
if (!m_themeTabButton->IsAppThemed())
return CColorSetDefault::FillPropertyButton(pDC, rcItem, pItem);
if (pItem->IsSelected())
{
switch (pItem->GetTabManager()->GetPosition())
{
case xtpTabPositionTop:
rcItem.InflateRect(0, 0, 0, 2);
break;
case xtpTabPositionLeft:
rcItem.InflateRect(0, 0, 1, 0);
break;
}
}
switch (pItem->GetTabManager()->GetPosition())
{
case xtpTabPositionTop:
rcItem.InflateRect(1, 1, 1, 0);
m_themeTabButton->DrawThemeBackground(pDC->GetSafeHdc(),
pItem->GetIndex() == 0 ? TABP_TOPTABITEMLEFTEDGE :
pItem->GetIndex() == pItem->GetTabManager()->GetItemCount() - 1 && !pItem->IsSelected() ? TABP_TOPTABITEMRIGHTEDGE : TABP_TOPTABITEM,
pItem->IsSelected() ? TIS_SELECTED : pItem->IsHighlighted() ? TIS_HOT : TIS_NORMAL, &rcItem, 0);
break;
case xtpTabPositionBottom:
rcItem.InflateRect(1, 0, 1, 2);
DrawRotatedButton(pDC, rcItem, pItem, FALSE, DrawRotatedBitsBottom);
break;
case xtpTabPositionLeft:
rcItem.InflateRect(1, 1, 0, 1);
DrawRotatedButton(pDC, rcItem, pItem, TRUE, DrawRotatedBitsLeft);
break;
case xtpTabPositionRight:
rcItem.InflateRect(0, 1, 2, 1);
DrawRotatedButton(pDC, rcItem, pItem, TRUE, DrawRotatedBitsRight);
break;
}
return XTP_TABMANAGER_COLOR_NONE;
}
COLORREF CXTPTabPaintManager::CColorSetWinNative::FillClient(CDC* pDC, CRect rc, CXTPTabManager* pTabManager)
{
if (!m_themeTabButton->IsAppThemed())
return CColorSetDefault::FillClient(pDC, rc, pTabManager);
switch (pTabManager->GetPosition())
{
case xtpTabPositionBottom:
rc.InflateRect(0, 0, 0, 1);
break;
case xtpTabPositionRight:
rc.InflateRect(0, 0, 1, 0);
break;
}
m_themeTabButton->DrawThemeBackground(pDC->GetSafeHdc(), TABP_PANE, 0, &rc, 0);
return 0;
}
void CXTPTabPaintManager::CColorSetWinNative::SelectClipRgn(CDC* pDC, CRect rcClient, CXTPTabManager* pTabManager)
{
if (!m_themeTabButton->IsAppThemed())
{
CColorSetDefault::SelectClipRgn(pDC, rcClient, pTabManager);
return;
}
CRect rc = m_pPaintManager->GetAppearanceSet()->GetClientRect(rcClient, pTabManager);
switch (pTabManager->GetPosition())
{
case xtpTabPositionBottom:
pDC->ExcludeClipRect(rc.left, rc.bottom - 2, rc.left + 1, rc.bottom - 1);
break;
case xtpTabPositionTop:
case xtpTabPositionLeft:
pDC->ExcludeClipRect(rc.left, rc.top, rc.left + 1, rc.top + 1);
break;
case xtpTabPositionRight:
pDC->ExcludeClipRect(rc.right - 2, rc.top, rc.right - 1, rc.top + 1);
break;
}
}
void CXTPTabPaintManager::CColorSetWinNative::FillNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc)
{
if (!m_themeToolbar->IsAppThemed())
{
CColorSetDefault::FillNavigateButton(pDC, pButton, rc);
return;
}
if (pButton->IsEnabled())
{
m_themeToolbar->DrawThemeBackground(pDC->GetSafeHdc(), TP_BUTTON,
pButton->IsPressed() ? TS_PRESSED :
pButton->IsHighlighted() ? TS_HOT : TS_NORMAL, &rc, 0);
}
pDC->SetTextColor(GetXtremeColor(COLOR_BTNTEXT));
}
void CXTPTabPaintManager::CColorSetWinNative::FillStateButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
if (!m_themeToolbar->IsAppThemed() || !pItem->IsSelected())
{
CColorSetDefault::FillStateButton(pDC, rcItem, pItem);
return;
}
m_themeToolbar->DrawThemeBackground(pDC->GetSafeHdc(), TP_BUTTON,
pItem->IsHighlighted() ? TS_HOTCHECKED : TS_CHECKED, &rcItem, 0);
}
//////////////////////////////////////////////////////////////////////////
// void CXTPTabPaintManager::CColorSetVisualStudio2005
CXTPTabPaintManager::CColorSetVisualStudio2005::CColorSetVisualStudio2005()
{
m_bGradientButton = FALSE;
}
void CXTPTabPaintManager::CColorSetVisualStudio2005::RefreshMetrics()
{
CXTPTabPaintManagerColorSet::RefreshMetrics();
m_clrButtonSelected.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
m_clrSelectedText.SetStandardValue(GetXtremeColor(COLOR_WINDOWTEXT));
m_bLunaTheme = FALSE;
m_bGradientButton = FALSE;
m_clrButtonHighlighted.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
m_clrButtonPressed.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_PUSHED));
m_clrHighlightText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
if (!m_pPaintManager->IsLunaColorsDisabled())
{
CColorSetOffice2003::RefreshMetrics();
}
else
{
switch (XTPColorManager()->GetCurrentSystemTheme())
{
case xtpSystemThemeBlue:
case xtpSystemThemeOlive:
m_clrHeaderFace.SetStandardValue(RGB(228, 226, 213));
m_bGradientButton = TRUE;
break;
case xtpSystemThemeSilver:
m_clrButtonNormal.SetStandardValue(RGB(245, 245, 248));
m_clrHeaderFace.SetStandardValue(RGB(238, 238, 238));
m_bGradientButton = TRUE;
break;
}
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(GetXtremeColor(XPCOLOR_STATICFRAME));
m_clrFrameBorder.SetStandardValue(GetXtremeColor(XPCOLOR_STATICFRAME));
}
}
COLORREF CXTPTabPaintManager::CColorSetVisualStudio2005::FillPropertyButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
COLORREF clrItem = GetItemColor(pItem);
if (pItem->IsHighlighted())
{
clrItem = m_clrButtonHighlighted;
}
if (m_bGradientButton)
{
GradientFill(pDC, rcItem, XTPColorManager()->LightColor(clrItem, RGB(255, 255, 255), 300),
clrItem, pItem->GetTabManager()->GetPosition());
}
else
{
pDC->FillSolidRect(rcItem, clrItem);
}
return clrItem;
}
//////////////////////////////////////////////////////////////////////////
// void CXTPTabPaintManager::CColorSetVisualStudio2008
CXTPTabPaintManager::CColorSetVisualStudio2008::CColorSetVisualStudio2008()
{
m_bGradientButton = FALSE;
}
void CXTPTabPaintManager::CColorSetVisualStudio2008::RefreshMetrics()
{
CXTPTabPaintManagerColorSet::RefreshMetrics();
m_clrButtonSelected.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
m_clrSelectedText.SetStandardValue(GetXtremeColor(COLOR_WINDOWTEXT));
m_bLunaTheme = FALSE;
m_bGradientButton = FALSE;
m_clrButtonHighlighted.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
m_clrButtonPressed.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_PUSHED));
m_clrHighlightText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(GetXtremeColor(XPCOLOR_STATICFRAME));
m_clrFrameBorder.SetStandardValue(GetXtremeColor(XPCOLOR_STATICFRAME));
m_clrButtonSelected.SetStandardValue(GetXtremeColor(COLOR_BTNFACE));
m_clrButtonHighlighted.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
m_clrButtonNormal.SetStandardValue(GetXtremeColor(COLOR_BTNFACE));
m_clrHeaderFace.SetStandardValue(GetXtremeColor(COLOR_BTNFACE));
if (!m_pPaintManager->IsLunaColorsDisabled())
{
CColorSetOffice2003::RefreshMetrics();
}
else
{
switch (XTPColorManager()->GetCurrentSystemTheme())
{
case xtpSystemThemeBlue:
case xtpSystemThemeRoyale:
m_clrButtonSelected.SetStandardValue(RGB(193, 210, 238));
m_clrButtonHighlighted.SetStandardValue(RGB(167, 191, 227));
m_clrFrameBorder.SetStandardValue(RGB(152, 181, 226));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(m_clrFrameBorder);
m_bGradientButton = TRUE;
break;
case xtpSystemThemeAero:
m_clrButtonSelected.SetStandardValue(RGB(210, 230, 250));
m_clrButtonNormal.SetStandardValue(RGB(152, 180, 210));
m_clrButtonHighlighted.SetStandardValue(RGB(129, 208, 241));
m_clrFrameBorder.SetStandardValue(RGB(105, 161, 191));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(m_clrFrameBorder);
m_bGradientButton = TRUE;
break;
case xtpSystemThemeOlive:
m_clrButtonSelected.SetStandardValue(RGB(182, 198, 141));
m_clrButtonHighlighted.SetStandardValue(RGB(175, 175, 142));
m_clrFrameBorder.SetStandardValue(RGB(147, 160, 112));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(m_clrFrameBorder);
m_bGradientButton = TRUE;
break;
case xtpSystemThemeSilver:
m_clrButtonSelected.SetStandardValue(RGB(225, 226, 236));
m_clrButtonHighlighted.SetStandardValue(RGB(255, 201, 128));
m_clrFrameBorder.SetStandardValue(RGB(147, 145, 176));
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(m_clrFrameBorder);
m_bGradientButton = TRUE;
break;
}
}
}
COLORREF CXTPTabPaintManager::CColorSetVisualStudio2008::FillPropertyButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
COLORREF clrItem = GetItemColor(pItem);
if (pItem->IsHighlighted() && !pItem->IsSelected())
{
clrItem = m_clrButtonHighlighted;
}
if (m_bGradientButton || pItem->IsSelected())
{
GradientFill(pDC, rcItem, RGB(253, 253, 253), clrItem, pItem->GetTabManager()->GetPosition());
}
else
{
pDC->FillSolidRect(rcItem, clrItem);
}
return clrItem;
}
//////////////////////////////////////////////////////////////////////////
// void CXTPTabPaintManager::CColorSetVisualStudio2005
CXTPTabPaintManager::CColorSetVisualStudio2010::CColorSetVisualStudio2010(BOOL bPaneColor /* = FALSE */)
{
m_bGradientButton = FALSE;
m_bPaneColor = bPaneColor;
const DWORD _cb[] =
{
0x293956, 0x2d3f5c, 0x2d3f5c, 0x2d3f5c,
0x35496a, 0x2d3f5c, 0x2d3f5c, 0x2d3f5c,
0x2d3f5c, 0x2d3f5c, 0x293956, 0x2d3f5c,
0x2d3f5c, 0x2d3f5c, 0x35496a, 0x2d3f5c,
};
CBitmap bmp;
LPBYTE lpBits;
bmp.Attach(CXTPImageManager::Create32BPPDIBSection(0, 4, 4, &lpBits));
if (lpBits)
{
MEMCPY_S(lpBits, _cb, 4 * 4 * sizeof(DWORD));
m_brushHeader.CreatePatternBrush(&bmp);
}
}
void CXTPTabPaintManager::CColorSetVisualStudio2010::FillHeader(CDC* pDC, CRect rc, CXTPTabManager* /*pTabManager*/)
{
if (m_brushHeader.GetSafeHandle() == 0)
pDC->FillSolidRect(rc, m_clrHeaderFace);
else
FillRect(pDC->GetSafeHdc(), rc, m_brushHeader);
}
void CXTPTabPaintManager::CColorSetVisualStudio2010::RefreshMetrics()
{
CXTPTabPaintManagerColorSet::RefreshMetrics();
m_bLunaTheme = XTPSystemVersion()->IsWinVistaOrGreater();
m_bGradientButton = TRUE;
m_clrSelectedText.SetStandardValue(0);
m_clrHighlightText.SetStandardValue(RGB(255, 255, 255));
m_clrNormalText.SetStandardValue(RGB(255, 255, 255));
m_clrInActiveText.SetStandardValue(RGB(206, 212, 221));
m_clrDisabledText.SetStandardValue(RGB(206, 212, 221));
m_clrButtonNormal.SetStandardValue(RGB(74, 93, 128));
m_clrButtonSelected.SetStandardValue(RGB(255, 232, 166));
m_clrButtonHighlighted.SetStandardValue(RGB(95, 107, 117));
m_clrButtonPressed.SetStandardValue(RGB(255, 232, 166));
m_clrHeaderFace.SetStandardValue(RGB(45, 63, 92));
m_clrAutoHideFace.SetStandardValue(RGB(45, 63, 92));
m_clrNavigateButtonBorder = RGB(229, 195, 101);
m_csPropertyPage2003.clrFrameBorder.SetStandardValue(RGB(47, 65, 95));
m_clrFrameBorder.SetStandardValue(RGB(47, 65, 95));
m_clrFrameHighlightBorder.SetStandardValue(RGB(155, 167, 183));
m_csPropertyPage2003.clrBorderLeftHighlight.SetStandardValue(RGB(41,58,86));
m_csPropertyPage2003.clrBorderTopHighlight.SetStandardValue(RGB(41,58,86));
m_csPropertyPage2003.clrDarkShadow.SetStandardValue(RGB(155, 167, 183));
if (!m_bLunaTheme)
{
m_clrButtonHighlighted.SetStandardValue(RGB(74, 93, 115));
m_clrButtonNormal.SetStandardValue(RGB(57, 81, 115));
m_clrButtonSelected.SetStandardValue(RGB(255, 243, 206));
}
if (m_bPaneColor)
{
m_clrButtonSelected.SetStandardValue(RGB(255, 255, 255));
}
}
COLORREF CXTPTabPaintManager::CColorSetVisualStudio2010::FillPropertyButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem)
{
COLORREF clrItem = GetItemColor(pItem);
if (pItem->IsSelected())
{
if (m_bLunaTheme)
{
pDC->FillSolidRect(rcItem, m_clrButtonSelected);
if (!m_bPaneColor)
{
CRect rTop = rcItem;
int nHalf = IsHorizontalTabPosition(pItem->GetTabManager()->GetPosition()) ? rcItem.Height() / 2 : rcItem.Width() / 2;
CXTPTabPaintManagerAppearanceSet::DeflateRectEx(rTop, CRect(0, 0, 0, nHalf), pItem->GetTabManager()->GetPosition());
GradientFill(pDC, rTop, RGB(255, 252, 242), RGB(255, 243, 207), pItem->GetTabManager()->GetPosition());
}
}
else
{
pDC->FillSolidRect(rcItem, m_clrButtonSelected);
}
clrItem = m_clrButtonHighlighted;
}
else if (pItem->IsHighlighted())
{
GradientFill(pDC, rcItem, RGB(109, 117, 118), m_clrButtonHighlighted, pItem->GetTabManager()->GetPosition());
clrItem = m_clrButtonHighlighted;
}
else
{
pDC->FillSolidRect(rcItem, clrItem);
}
return clrItem;
}
void CXTPTabPaintManager::CColorSetVisualStudio2010::FillNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc)
{
COLORREF clrColor = pButton->GetItem() ?
(pButton->GetItem()->IsSelected() ? RGB(117, 99, 61) :
pButton->GetItem()->IsHighlighted() ? RGB(206, 212, 221) : RGB(41, 56, 82)) : RGB(206, 212, 221);
if (pButton->IsEnabled())
{
if ((pButton->IsHighlighted() && pButton->IsPressed()))
{
pDC->FillSolidRect(rc, RGB(255, 232, 166));
pDC->Draw3dRect(rc, m_clrNavigateButtonBorder, m_clrNavigateButtonBorder);
clrColor = RGB(0, 0, 0);
}
else if (pButton->IsPressed() || pButton->IsHighlighted())
{
pDC->FillSolidRect(rc, RGB(255, 252, 244));
pDC->Draw3dRect(rc, m_clrNavigateButtonBorder, m_clrNavigateButtonBorder);
clrColor = RGB(0, 0, 0);
}
else
{
}
}
pDC->SetTextColor(clrColor);
}
void CXTPTabPaintManager::CColorSetVisualStudio2010::SetTextColor(CDC* pDC, CXTPTabManagerItem* pItem)
{
pDC->SetTextColor(!pItem->IsEnabled() ? m_clrDisabledText:
pItem->IsSelected() ? m_clrSelectedText: pItem->IsHighlighted() ? m_clrHighlightText : m_clrNormalText);
}