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.
1648 lines
59 KiB
C++
1648 lines
59 KiB
C++
// XTPOffice2003Theme.cpp : implementation of the CXTPOffice2003Theme class.
|
|
//
|
|
// This file is a part of the XTREME COMMANDBARS 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/XTPVC80Helpers.h"
|
|
#include "Common/XTPImageManager.h"
|
|
#include "Common/XTPDrawHelpers.h"
|
|
#include "Common/XTPColorManager.h"
|
|
#include "Common/XTPHookManager.h"
|
|
#include "Common/XTPSystemHelpers.h"
|
|
#include "Common/XTPWinThemeWrapper.h"
|
|
|
|
#include "XTPCommandBarsDefines.h"
|
|
#include "XTPCommandBar.h"
|
|
#include "XTPCommandBars.h"
|
|
#include "XTPDockBar.h"
|
|
#include "XTPToolBar.h"
|
|
#include "XTPDialogBar.h"
|
|
#include "XTPControls.h"
|
|
#include "XTPControl.h"
|
|
#include "XTPControlProgress.h"
|
|
#include "XTPMessageBar.h"
|
|
#include "XTPScrollBase.h"
|
|
#include "XTPStatusBar.h"
|
|
|
|
#include "XTPPaintManager.h"
|
|
#include "XTPOffice2003Theme.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// CXTPOffice2003Theme
|
|
|
|
IMPLEMENT_DYNAMIC(CXTPOffice2003Theme, CXTPOfficeTheme)
|
|
|
|
CXTPOffice2003Theme::CXTPOffice2003Theme()
|
|
{
|
|
m_iconsInfo.bUseFadedIcons = FALSE;
|
|
m_iconsInfo.bIconsWithShadow = FALSE;
|
|
|
|
m_grcLunaChecked.SetStandardValue(RGB(255, 213, 140), RGB(255, 173, 85));
|
|
m_grcLunaPushed.SetStandardValue(RGB(254, 142, 75), RGB(255, 207, 139));
|
|
m_grcLunaSelected.SetStandardValue(RGB(255, 242, 200), RGB(255, 212, 151));
|
|
|
|
m_bThemedStatusBar = TRUE;
|
|
m_bPlainSeparators = FALSE;
|
|
|
|
m_bFlatGripper = FALSE;
|
|
|
|
m_nToolbarSeparatorMargin = 4;
|
|
}
|
|
|
|
CXTPOffice2003Theme::~CXTPOffice2003Theme()
|
|
{
|
|
|
|
}
|
|
|
|
void CXTPOffice2003Theme::RefreshMetrics()
|
|
{
|
|
CXTPOfficeTheme::RefreshMetrics();
|
|
|
|
HWND hWnd = AfxGetMainWnd() ? AfxGetMainWnd()->GetSafeHwnd() : 0;
|
|
m_themeStatusBar->OpenThemeData(hWnd, L"STATUS");
|
|
|
|
m_clrMenuExpandedGripper.SetStandardValue(XTPColorManager()->LightColor(GetXtremeColor(COLOR_WINDOW), GetXtremeColor(XPCOLOR_MENUBAR_EXPANDED), 550), GetXtremeColor(XPCOLOR_MENUBAR_EXPANDED));
|
|
|
|
m_clrCommandBar.SetStandardValue(XTPColorManager()->LightColor(GetXtremeColor(COLOR_3DFACE), GetXtremeColor(COLOR_WINDOW), 0xcd), GetXtremeColor(COLOR_3DFACE));
|
|
m_clrDockBar.SetStandardValue(GetXtremeColor(COLOR_3DFACE), XTPColorManager()->LightColor(GetXtremeColor(COLOR_3DFACE), GetXtremeColor(COLOR_WINDOW), 0xcd));
|
|
|
|
m_clrTearOffGripper.SetStandardValue(GetXtremeColor(XPCOLOR_TOOLBAR_FACE));
|
|
m_clrToolbarShadow.SetStandardValue(GetXtremeColor(XPCOLOR_TOOLBAR_FACE));
|
|
m_clrFloatingGripper.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
|
|
m_clrPopupControl.SetStandardValue(GetXtremeColor(XPCOLOR_MENUBAR_FACE),
|
|
XTPColorManager()->LightColor(GetXtremeColor(COLOR_WINDOW), GetXtremeColor(COLOR_3DFACE), 550));
|
|
|
|
m_clrToolbarExpand.SetStandardValue(XTPColorManager()->LightColor(GetXtremeColor(XPCOLOR_3DFACE), GetXtremeColor(COLOR_3DSHADOW), 51), GetXtremeColor(COLOR_3DSHADOW));
|
|
|
|
m_bLunaTheme = FALSE;
|
|
|
|
m_clrMenuExpand.SetStandardValue(GetXtremeColor(XPCOLOR_MENUBAR_FACE),
|
|
XTPColorManager()->LightColor(GetXtremeColor(COLOR_WINDOW), GetXtremeColor(COLOR_3DFACE), 550));
|
|
|
|
m_clrStatusPane.SetStandardValue(XTPColorManager()->LightColor(GetXtremeColor(COLOR_3DFACE), GetXtremeColor(COLOR_WINDOW), 70));
|
|
|
|
|
|
m_arrColor[XPCOLOR_SPLITTER_FACE].SetStandardValue(XTPColorManager()->grcDockBar.clrDark);
|
|
|
|
if (XTPColorManager()->IsLowResolution())
|
|
{
|
|
m_clrCommandBar.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
|
|
m_clrDockBar.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
|
|
m_clrPopupControl.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
|
|
m_clrToolbarExpand.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
|
|
}
|
|
|
|
switch (GetCurrentSystemTheme())
|
|
{
|
|
case xtpSystemThemeBlue:
|
|
case xtpSystemThemeRoyale:
|
|
case xtpSystemThemeAero:
|
|
{
|
|
m_clrDockBar.SetStandardValue(RGB(158, 190, 245), RGB(196, 218, 250));
|
|
m_clrToolbarShadow.SetStandardValue(RGB(59, 97, 156));
|
|
m_clrCommandBar.SetStandardValue(RGB(221, 236, 254), RGB(129, 169, 226), 0.75f);
|
|
|
|
m_clrFloatingGripper.SetStandardValue(RGB(42, 102, 201));
|
|
m_clrPopupControl.SetStandardValue(RGB(227, 239, 255), RGB(147, 181, 231));
|
|
m_clrToolbarExpand.SetStandardValue(RGB(117, 166, 241), RGB(0, 53, 145), 0.75f);
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(203, 221, 246), RGB(121, 161, 220));
|
|
|
|
m_clrMenuExpand.SetStandardValue(0xFEEFE3, 0xE2A981);
|
|
|
|
m_clrStatusPane.SetStandardValue(RGB(211, 211, 211));
|
|
m_pShadowManager->SetShadowColor(RGB(0x16, 0x1E, 0x36));
|
|
m_clrTearOffGripper.SetStandardValue(RGB(169, 199, 240));
|
|
|
|
m_clrDisabledIcon.SetStandardValue(RGB(233, 236, 242), RGB(97, 122, 172));
|
|
|
|
m_arrColor[XPCOLOR_EDITCTRLBORDER].SetStandardValue(RGB(203, 225, 252));
|
|
m_arrColor[XPCOLOR_3DFACE].SetStandardValue(RGB(216, 231, 252));
|
|
m_arrColor[XPCOLOR_3DSHADOW].SetStandardValue(RGB(158, 190, 245));
|
|
m_arrColor[COLOR_APPWORKSPACE].SetStandardValue(RGB(144, 153, 174));
|
|
m_arrColor[XPCOLOR_LABEL].SetStandardValue(RGB(189, 211, 247));
|
|
|
|
INT nElements[] =
|
|
{
|
|
XPCOLOR_TOOLBAR_GRIPPER, XPCOLOR_SEPARATOR, XPCOLOR_DISABLED, XPCOLOR_MENUBAR_FACE, XPCOLOR_MENUBAR_BORDER, XPCOLOR_HIGHLIGHT, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_HIGHLIGHT_CHECKED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED, XPCOLOR_HIGHLIGHT_CHECKED, XPCOLOR_TOOLBAR_FACE, XPCOLOR_PUSHED_TEXT
|
|
};
|
|
COLORREF clrValues[] =
|
|
{
|
|
RGB(39, 65, 118), RGB(106, 140, 203), RGB(109, 150, 208), RGB(246, 246, 246), RGB(0, 45, 150), RGB(255, 238, 194), RGB(0, 0, 128), RGB(0, 0, 128), RGB(0, 0, 128), RGB(254, 128, 62), RGB(255, 192, 111), RGB(196, 219, 249), 0
|
|
};
|
|
SetColors(sizeof(nElements)/sizeof(INT), nElements, clrValues);
|
|
|
|
m_bLunaTheme = TRUE;
|
|
}
|
|
break;
|
|
|
|
case xtpSystemThemeOlive:
|
|
{
|
|
m_clrDockBar.SetStandardValue(RGB(217, 217, 167), RGB(242, 241, 228));
|
|
m_clrCommandBar.SetStandardValue(RGB(244, 247, 222), RGB(183, 198, 145), 0.3f);
|
|
|
|
m_clrToolbarShadow.SetStandardValue(RGB(96, 128, 88));
|
|
m_clrFloatingGripper.SetStandardValue(RGB(116, 134, 94));
|
|
m_clrPopupControl.SetStandardValue(RGB(236, 240, 213), RGB(194, 206, 159));
|
|
m_clrToolbarExpand.SetStandardValue(RGB(176, 194, 140), RGB(96, 119, 107), 0.3f);
|
|
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(230, 230, 209), RGB(164, 180, 120), 0.3f);
|
|
|
|
m_clrMenuExpand.SetStandardValue(0xD5F0EC, 0x93C6B8);
|
|
|
|
m_clrStatusPane.SetStandardValue(RGB(211, 211, 211));
|
|
m_pShadowManager->SetShadowColor(RGB(0x1F, 0x22, 0x19));
|
|
|
|
m_clrDisabledIcon.SetStandardValue(RGB(243, 244, 240), RGB(131, 144, 113));
|
|
m_clrTearOffGripper.SetStandardValue(RGB(197, 212, 159));
|
|
|
|
m_arrColor[XPCOLOR_EDITCTRLBORDER].SetStandardValue(RGB(216, 227, 182));
|
|
m_arrColor[XPCOLOR_3DFACE].SetStandardValue(RGB(226, 231, 191));
|
|
m_arrColor[XPCOLOR_3DSHADOW].SetStandardValue(RGB(171, 192, 138));
|
|
m_arrColor[COLOR_APPWORKSPACE].SetStandardValue(RGB(151, 160, 123));
|
|
m_arrColor[XPCOLOR_LABEL].SetStandardValue(RGB(222, 227, 189));
|
|
|
|
|
|
INT nElements[] =
|
|
{
|
|
XPCOLOR_TOOLBAR_GRIPPER, XPCOLOR_SEPARATOR, XPCOLOR_DISABLED, XPCOLOR_MENUBAR_FACE, XPCOLOR_MENUBAR_BORDER, XPCOLOR_HIGHLIGHT, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT_CHECKED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED, XPCOLOR_HIGHLIGHT_CHECKED, XPCOLOR_TOOLBAR_FACE, XPCOLOR_PUSHED_TEXT
|
|
};
|
|
COLORREF clrValues[] =
|
|
{
|
|
RGB(81, 94, 51), RGB(96, 128, 88), RGB(159, 174, 122), RGB(244, 244, 238), RGB(117, 141, 94), RGB(255, 238, 194), RGB(63, 93, 56), RGB(63, 93, 56), RGB(63, 93, 56), RGB(254, 128, 62), RGB(255, 192, 111), RGB(209, 222, 173), 0
|
|
};
|
|
SetColors(sizeof(nElements)/sizeof(INT), nElements, clrValues);
|
|
|
|
m_bLunaTheme = TRUE;
|
|
}
|
|
break;
|
|
|
|
case xtpSystemThemeSilver:
|
|
{
|
|
m_clrDockBar.SetStandardValue(RGB(215, 215, 229), RGB(243, 243, 247));
|
|
m_clrToolbarShadow.SetStandardValue(RGB(124, 124, 148));
|
|
m_clrCommandBar.SetStandardValue(RGB(249, 249, 255), RGB(156, 155, 183), 0.75f);
|
|
|
|
m_clrFloatingGripper.SetStandardValue(RGB(122, 121, 153));
|
|
m_clrPopupControl.SetStandardValue(RGB(233, 231, 241), RGB(186, 185, 205));
|
|
m_clrToolbarExpand.SetStandardValue(RGB(179, 178, 200), RGB(118, 116, 146), 0.75f);
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(215, 215, 226), RGB(133, 131, 162));
|
|
|
|
m_clrMenuExpand.SetStandardValue(0xF1E8E8, 0xC5AEB0);
|
|
|
|
m_clrStatusPane.SetStandardValue(RGB(236, 234, 218));
|
|
m_pShadowManager->SetShadowColor(RGB(0x24, 0x20, 0x29));
|
|
|
|
m_clrDisabledIcon.SetStandardValue(RGB(247, 245, 249), RGB(122, 121, 153));
|
|
m_clrTearOffGripper.SetStandardValue(RGB(192, 192, 211));
|
|
|
|
m_arrColor[XPCOLOR_EDITCTRLBORDER].SetStandardValue(RGB(214, 211, 231));
|
|
m_arrColor[XPCOLOR_3DFACE].SetStandardValue(RGB(223, 223, 234));
|
|
m_arrColor[XPCOLOR_3DSHADOW].SetStandardValue(RGB(177, 176, 195));
|
|
m_arrColor[COLOR_APPWORKSPACE].SetStandardValue(RGB(155, 154, 179));
|
|
m_arrColor[XPCOLOR_LABEL].SetStandardValue(RGB(214, 215, 231));
|
|
|
|
INT nElements[] =
|
|
{
|
|
XPCOLOR_TOOLBAR_GRIPPER, XPCOLOR_SEPARATOR, XPCOLOR_DISABLED, XPCOLOR_MENUBAR_FACE, XPCOLOR_MENUBAR_BORDER, XPCOLOR_HIGHLIGHT, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT_CHECKED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED, XPCOLOR_HIGHLIGHT_CHECKED, XPCOLOR_TOOLBAR_FACE, XPCOLOR_PUSHED_TEXT
|
|
};
|
|
COLORREF clrValues[] =
|
|
{
|
|
RGB(84, 84, 117), RGB(110, 109, 143), RGB(168, 167, 190), RGB(253, 250, 255), RGB(124, 124, 148), RGB(255, 238, 194), RGB(75, 75, 111), RGB(75, 75, 111), RGB(75, 75, 111), RGB(254, 128, 62), RGB(255, 192, 111), RGB(219, 218, 228), 0
|
|
};
|
|
SetColors(sizeof(nElements)/sizeof(INT), nElements, clrValues);
|
|
|
|
m_bLunaTheme = TRUE;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (m_bLunaTheme)
|
|
{
|
|
m_arrColor[XPCOLOR_HIGHLIGHT_DISABLED_BORDER].SetStandardValue(RGB(141, 141, 141));
|
|
m_arrColor[XPCOLOR_TOOLBAR_GRAYTEXT].SetStandardValue(RGB(141, 141, 141));
|
|
m_arrColor[XPCOLOR_MENUBAR_GRAYTEXT].SetStandardValue(RGB(141, 141, 141));
|
|
m_arrColor[XPCOLOR_FLOATBAR_BORDER].SetStandardValue(m_clrFloatingGripper);
|
|
}
|
|
|
|
m_clrMenuGripper.SetStandardValue(m_clrCommandBar);
|
|
|
|
|
|
CreateGradientCircle();
|
|
}
|
|
|
|
|
|
|
|
void CXTPOffice2003Theme::FillDockBar(CDC* pDC, CXTPDockBar* pBar)
|
|
{
|
|
if (pBar->GetPosition() == xtpBarTop && pBar->GetCommandBars()->IsDwmEnabled())
|
|
{
|
|
pDC->FillSolidRect(CXTPClientRect(pBar), 0);
|
|
return;
|
|
}
|
|
|
|
if (((CWnd*)pBar)->GetStyle() & CBRS_RIGHT)
|
|
pDC->FillSolidRect(CXTPClientRect((CWnd*)pBar), m_clrDockBar.clrDark);
|
|
else
|
|
{
|
|
CXTPClientRect rc((CWnd*)pBar);
|
|
CRect rcFill(rc.left, rc.top, max(rc.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2), rc.bottom);
|
|
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrDockBar, TRUE, rc);
|
|
}
|
|
}
|
|
|
|
void CXTPOffice2003Theme::FillMessageBar(CDC* pDC, CXTPMessageBar* pBar)
|
|
{
|
|
CXTPClientRect rc((CWnd*)pBar);
|
|
CRect rcFill(rc.left, rc.top, max(rc.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2), rc.bottom);
|
|
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrDockBar, TRUE, rc);
|
|
|
|
CRect rcMessage = pBar->GetMessageRect();
|
|
pDC->Draw3dRect(rcMessage, m_clrToolbarShadow, m_clrToolbarShadow);
|
|
|
|
rcMessage.DeflateRect(1, 1);
|
|
pDC->FillSolidRect(rcMessage, GetXtremeColor(COLOR_INFOBK));
|
|
}
|
|
|
|
void CXTPOffice2003Theme::ExcludeCorners(CDC* pDC, CRect rc)
|
|
{
|
|
pDC->ExcludeClipRect(rc.left, rc.top, rc.left + 1, rc.top + 1);
|
|
pDC->ExcludeClipRect(rc.right - 1, rc.top, rc.right, rc.top + 1);
|
|
pDC->ExcludeClipRect(rc.left, rc.bottom - 1, rc.left + 1, rc.bottom);
|
|
pDC->ExcludeClipRect(rc.right - 1, rc.bottom - 1, rc.right, rc.bottom);
|
|
}
|
|
|
|
void CXTPOffice2003Theme::DrawPopupBarGripper(CDC* pDC, int x, int y, int cx, int cy, BOOL bExpanded)
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, CRect(CPoint(x, y), CSize(cx, cy)),
|
|
bExpanded ? m_clrMenuExpandedGripper : m_clrMenuGripper, TRUE);
|
|
}
|
|
|
|
BOOL CXTPOffice2003Theme::HasFloatingBarGradientEntry(CXTPCommandBar* pBar)
|
|
{
|
|
return !IsFlatToolBar(pBar) && ((pBar->GetFlags() & xtpFlagAlignAny) != 0);
|
|
}
|
|
|
|
void CXTPOffice2003Theme::FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar)
|
|
{
|
|
CXTPClientRect rc((CWnd*)pBar);
|
|
|
|
if (pBar->GetPosition() == xtpBarPopup)
|
|
{
|
|
Rectangle(pDC, rc, XPCOLOR_MENUBAR_BORDER, XPCOLOR_MENUBAR_FACE);
|
|
|
|
FillIntersectRect(pDC, (CXTPPopupBar*)pBar, GetXtremeColor(XPCOLOR_MENUBAR_FACE));
|
|
}
|
|
else if (IsFlatToolBar(pBar))
|
|
{
|
|
CRect rcFill(rc.left, rc.top, max(rc.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2), rc.bottom);
|
|
if (IsDockingPosition(pBar->GetPosition()))
|
|
{
|
|
CWnd* pParent = pBar->GetParent();
|
|
if (pParent)
|
|
{
|
|
CRect rcClient;
|
|
pParent->GetWindowRect(rcClient);
|
|
pBar->ScreenToClient(rcClient);
|
|
rcFill = CRect(rcClient.left, rc.top, rcClient.left + max(rcClient.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2), rc.bottom);
|
|
}
|
|
}
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrDockBar, TRUE, rc);
|
|
|
|
if (pBar->GetPosition() == xtpBarFloating)
|
|
{
|
|
COLORREF clr = GetXtremeColor(XPCOLOR_FLOATBAR_BORDER);
|
|
pDC->Draw3dRect(rc, clr, clr);
|
|
rc.DeflateRect(1, 1);
|
|
pDC->Draw3dRect(rc, clr, clr);
|
|
|
|
pDC->SetPixel(2, 2, clr);
|
|
pDC->SetPixel(rc.right - 2, 2, clr);
|
|
pDC->SetPixel(2, rc.bottom - 2, clr);
|
|
pDC->SetPixel(rc.right - 2, rc.bottom - 2, clr);
|
|
}
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarTop || pBar->GetPosition() == xtpBarBottom)
|
|
{
|
|
COLORREF clr3DFace = GetXtremeColor(COLOR_3DFACE);
|
|
pDC->FillSolidRect(rc, clr3DFace);
|
|
|
|
CWnd* pWnd = pBar->GetParent();
|
|
if (pWnd)
|
|
{
|
|
CXTPWindowRect rcFill((CWnd*)pWnd);
|
|
pBar->ScreenToClient(rcFill);
|
|
rcFill.right = rcFill.left + max(rcFill.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2);
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrDockBar, TRUE, rc);
|
|
|
|
pDC->ExcludeClipRect(rc.left, rc.top, rc.left + 3, rc.bottom);
|
|
ExcludeCorners(pDC, CRect(rc.left + 3, rc.top + 1, rc.right, rc.bottom - 1));
|
|
}
|
|
|
|
CRect rcFill = rc;
|
|
rcFill.top += 1;
|
|
|
|
int nFirst = pBar->GetControls()->GetNext(-1, +1, FALSE, TRUE);
|
|
if (nFirst != -1)
|
|
{
|
|
CRect rcRow = pBar->GetControls()->GetAt(nFirst)->GetRowRect();
|
|
rcFill.bottom = rcRow.bottom + 1;
|
|
}
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrCommandBar, FALSE);
|
|
pDC->FillSolidRect(rcFill.left, rcFill.bottom, rcFill.Width(), rc.Height() - rcFill.Height() - 2, m_clrCommandBar.clrDark);
|
|
|
|
pDC->FillSolidRect(rc.left + 5, rc.bottom - 1, rc.Width() - 7, 1, m_clrToolbarShadow);
|
|
|
|
pDC->SelectClipRgn(0);
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarLeft || pBar->GetPosition() == xtpBarRight)
|
|
{
|
|
COLORREF clr3DFace = GetXtremeColor(COLOR_3DFACE);
|
|
pDC->FillSolidRect(rc, clr3DFace);
|
|
|
|
CWnd* pWnd = pBar->GetParent();
|
|
if (pWnd)
|
|
{
|
|
if (pWnd->GetStyle() & CBRS_RIGHT)
|
|
pDC->FillSolidRect(rc, m_clrDockBar.clrDark);
|
|
else
|
|
{
|
|
CXTPWindowRect rcFill((CWnd*)pWnd);
|
|
pBar->ScreenToClient(rcFill);
|
|
rcFill.right = rcFill.left + max(rcFill.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2);
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrDockBar, TRUE, rc);
|
|
}
|
|
|
|
pDC->ExcludeClipRect(rc.left, rc.top, rc.right, rc.top + 3);
|
|
ExcludeCorners(pDC, CRect(rc.left + 1, rc.top + 3, rc.right - 1, rc.bottom));
|
|
}
|
|
|
|
CRect rcFill = rc;
|
|
rcFill.left += 1;
|
|
|
|
int nFirst = pBar->GetControls()->GetNext(-1, +1, FALSE, TRUE);
|
|
if (nFirst != -1)
|
|
{
|
|
CRect rcRow = pBar->GetControls()->GetAt(nFirst)->GetRowRect();
|
|
rcFill.right = rcRow.right + 1;
|
|
}
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrCommandBar, TRUE);
|
|
pDC->FillSolidRect(rc.right - 1, rc.top + 5 , 1, rc.Height() - 7, m_clrToolbarShadow);
|
|
|
|
pDC->SelectClipRgn(0);
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarFloating && HasFloatingBarGradientEntry(pBar))
|
|
{
|
|
pDC->FillSolidRect(rc, GetXtremeColor(XPCOLOR_TOOLBAR_FACE));
|
|
|
|
COLORREF clrBorder = GetXtremeColor(XPCOLOR_FLOATBAR_BORDER);
|
|
pDC->Draw3dRect(rc, clrBorder, clrBorder);
|
|
rc.DeflateRect(1, 1);
|
|
pDC->Draw3dRect(rc, clrBorder, clrBorder);
|
|
|
|
CXTPFontDC font(pDC, GetSmCaptionFont());
|
|
CSize sz = pDC->GetTextExtent(_T(" "), 1);
|
|
|
|
CRect rcFill(rc.left + 2, rc.top + 2 + max(15, sz.cy), rc.right - 2, rc.bottom - 2);
|
|
|
|
for (int i = 0; i < pBar->GetControlCount(); i++)
|
|
{
|
|
CXTPControl* pControl = pBar->GetControl(i);
|
|
|
|
if (pControl->GetWrap() && pControl->IsVisible() && pControl->GetRect().top > rcFill.top)
|
|
{
|
|
CRect rcRow(rcFill.left, rcFill.top, rcFill.right, pControl->GetRowRect().top);
|
|
XTPDrawHelpers()->GradientFill(pDC, rcRow, m_clrCommandBar, FALSE);
|
|
|
|
rcFill.top = rcRow.bottom;
|
|
}
|
|
}
|
|
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrCommandBar, FALSE);
|
|
|
|
pDC->SetPixel(2, 2, clrBorder);
|
|
pDC->SetPixel(rc.right - 2, 2, clrBorder);
|
|
pDC->SetPixel(2, rc.bottom - 2, clrBorder);
|
|
pDC->SetPixel(rc.right - 2, rc.bottom - 2, clrBorder);
|
|
|
|
}
|
|
else
|
|
{
|
|
CXTPOfficeTheme::FillCommandBarEntry(pDC, pBar);
|
|
}
|
|
}
|
|
|
|
CSize CXTPOffice2003Theme::DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw)
|
|
{
|
|
BOOL bSkipWrapSeparators = pBar->GetPosition() == xtpBarFloating && pBar->GetType() != xtpBarTypePopup;
|
|
|
|
if (!bDraw && bSkipWrapSeparators)
|
|
{
|
|
return CSize(6, 0);
|
|
}
|
|
|
|
if (!bDraw)
|
|
{
|
|
return CXTPOfficeTheme::DrawCommandBarSeparator(pDC, pBar, pControl, bDraw);
|
|
}
|
|
|
|
CRect rc;
|
|
pBar->GetClientRect(&rc);
|
|
CRect rcControl = pControl->GetRect();
|
|
CRect rcRow = pControl->GetRowRect();
|
|
|
|
if (pBar->GetPosition() == xtpBarRight || pBar->GetPosition() == xtpBarLeft)
|
|
{
|
|
if (!pControl->GetWrap())
|
|
{
|
|
Line(pDC, rcRow.left + m_nToolbarSeparatorMargin, rcControl.top - 4, rcRow.right - m_nToolbarSeparatorMargin, rcControl.top - 4, XPCOLOR_SEPARATOR);
|
|
if (!m_bPlainSeparators) Line(pDC, rcRow.left + m_nToolbarSeparatorMargin + 1, rcControl.top - 3, rcRow.right - m_nToolbarSeparatorMargin + 1, rcControl.top - 3, COLOR_3DHIGHLIGHT);
|
|
}
|
|
else
|
|
{
|
|
Line(pDC, rcRow.right + 2, rcRow.top + m_nToolbarSeparatorMargin, rcRow.right + 2, rcRow.bottom, XPCOLOR_SEPARATOR);
|
|
Line(pDC, rcRow.right + 3, rcRow.top + m_nToolbarSeparatorMargin + 1, rcRow.right + 3, rcRow.bottom, COLOR_3DHIGHLIGHT);
|
|
}
|
|
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarTop || pBar->GetPosition() == xtpBarBottom || bSkipWrapSeparators)
|
|
{
|
|
if (!pControl->GetWrap())
|
|
{
|
|
Line(pDC, rcControl.left - 4, rcRow.top + m_nToolbarSeparatorMargin, rcControl.left - 4, rcRow.bottom - m_nToolbarSeparatorMargin, XPCOLOR_SEPARATOR);
|
|
if (!m_bPlainSeparators) Line(pDC, rcControl.left - 3, rcRow.top + m_nToolbarSeparatorMargin + 1, rcControl.left - 3, rcRow.bottom - m_nToolbarSeparatorMargin + 1, COLOR_3DHIGHLIGHT);
|
|
}
|
|
else if (!bSkipWrapSeparators)
|
|
{
|
|
Line(pDC, rcRow.left + m_nToolbarSeparatorMargin, rcRow.top - 4, rcRow.right, rcRow.top - 4, XPCOLOR_SEPARATOR);
|
|
Line(pDC, rcRow.left + m_nToolbarSeparatorMargin + 1, rcRow.top - 3, rcRow.right, rcRow.top - 3, COLOR_3DHIGHLIGHT);
|
|
}
|
|
}
|
|
else return CXTPOfficeTheme::DrawCommandBarSeparator(pDC, pBar, pControl, bDraw);
|
|
|
|
return 0;
|
|
}
|
|
|
|
CSize CXTPOffice2003Theme::DrawDialogBarGripper(CDC* pDC, CXTPDialogBar* pBar, BOOL bDraw)
|
|
{
|
|
CSize sz(8, max(25, m_nTextHeight + 6));
|
|
|
|
if (pDC && bDraw)
|
|
{
|
|
CRect rcGripper;
|
|
pBar->GetClientRect(&rcGripper);
|
|
|
|
rcGripper.DeflateRect(3, 3);
|
|
rcGripper.bottom = rcGripper.top + sz.cy;
|
|
|
|
if (pBar->IsActive())
|
|
{
|
|
if (m_bLunaTheme)
|
|
XTPDrawHelpers()->GradientFill(pDC, rcGripper, m_grcLunaChecked, FALSE);
|
|
else
|
|
pDC->FillSolidRect(rcGripper, GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
|
|
}
|
|
else
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, rcGripper, m_clrCommandBar, FALSE);
|
|
}
|
|
|
|
for (int y = rcGripper.top + 4; y < rcGripper.bottom - 5; y += 4)
|
|
{
|
|
pDC->FillSolidRect(CRect(4 + 2, y + 1, 6 + 2, y + 3), GetXtremeColor(COLOR_WINDOW));
|
|
pDC->FillSolidRect(CRect(3 + 2, y, 5 + 2, y + 2), GetXtremeColor(XPCOLOR_TOOLBAR_GRIPPER));
|
|
}
|
|
}
|
|
|
|
return sz;
|
|
}
|
|
|
|
CSize CXTPOffice2003Theme::DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw)
|
|
{
|
|
if (pBar->IsDialogBar())
|
|
return DrawDialogBarGripper(pDC, (CXTPDialogBar*)pBar, bDraw);
|
|
|
|
CRect rc;
|
|
pBar->GetClientRect(&rc);
|
|
|
|
if (pBar->GetPosition() == xtpBarPopup && pBar->GetType() == xtpBarTypePopup)
|
|
{
|
|
return CXTPOfficeTheme::DrawCommandBarGripper(pDC, pBar, bDraw);
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarFloating)
|
|
{
|
|
return CXTPOfficeTheme::DrawCommandBarGripper(pDC, pBar, bDraw);
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarRight || pBar->GetPosition() == xtpBarLeft)
|
|
{
|
|
if (!pDC || !bDraw) return CSize(0, 8 + 1);
|
|
for (int x = 5; x < rc.Width() - 7; x += 4)
|
|
{
|
|
if (!m_bFlatGripper) pDC->FillSolidRect(CRect(x + 1, 4 + 3, x + 3, 6 + 3), GetXtremeColor(COLOR_WINDOW));
|
|
pDC->FillSolidRect(CRect(x, 3 + 3, x + 2, 5 + 3), GetXtremeColor(XPCOLOR_TOOLBAR_GRIPPER));
|
|
}
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarTop || pBar->GetPosition() == xtpBarBottom)
|
|
{
|
|
if (!pDC || !bDraw) return CSize(6, 0);
|
|
for (int y = 5; y < rc.Height() - 7; y += 4)
|
|
{
|
|
if (!m_bFlatGripper) pDC->FillSolidRect(CRect(7, y + 1, 9, y + 3), GetXtremeColor(COLOR_WINDOW));
|
|
pDC->FillSolidRect(CRect(6, y, 8, y + 2), GetXtremeColor(XPCOLOR_TOOLBAR_GRIPPER));
|
|
}
|
|
}
|
|
return 0;
|
|
|
|
}
|
|
|
|
void CXTPOffice2003Theme::RectangleEx(CDC* pDC, CRect rc, int nColorBorder, BOOL bHoriz, CXTPPaintManagerColorGradient& color)
|
|
{
|
|
GradientFill(pDC, rc, color.clrLight, color.clrDark, bHoriz);
|
|
Draw3dRect(pDC, rc, nColorBorder, nColorBorder);
|
|
}
|
|
|
|
void CXTPOffice2003Theme::DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition /*= xtpBarPopup*/)
|
|
{
|
|
if (bPopuped)
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, rc, m_clrPopupControl, FALSE);
|
|
Draw3dRect(pDC, rc, XPCOLOR_MENUBAR_BORDER, XPCOLOR_MENUBAR_BORDER);
|
|
}
|
|
else if (m_bLunaTheme && barType != xtpBarTypePopup && (IsDockingPosition(barPosition) || (barPosition == xtpBarFloating)))
|
|
{
|
|
BOOL bHoriz = IsVerticalPosition(barPosition);
|
|
if (!bEnabled)
|
|
{
|
|
if (IsKeyboardSelected(bSelected))
|
|
RectangleEx(pDC, rc, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, bHoriz, bChecked ? m_grcLunaPushed : m_grcLunaSelected);
|
|
else if (bChecked)
|
|
RectangleEx(pDC, rc, XPCOLOR_HIGHLIGHT_DISABLED_BORDER, bHoriz, m_grcLunaChecked);
|
|
return;
|
|
}
|
|
else if (bChecked == 2 && !bSelected && !bPressed)
|
|
{
|
|
Rectangle(pDC, rc, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_3DFACE);
|
|
}
|
|
else if (bChecked && !bSelected && !bPressed) RectangleEx(pDC, rc, XPCOLOR_HIGHLIGHT_CHECKED_BORDER, bHoriz, m_grcLunaChecked);
|
|
else if (bChecked && bSelected && !bPressed) RectangleEx(pDC, rc, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, bHoriz, m_grcLunaPushed);
|
|
else if (IsKeyboardSelected(bPressed) || (bSelected && bPressed)) RectangleEx(pDC, rc, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, bHoriz, m_grcLunaPushed);
|
|
else if (bSelected || bPressed) RectangleEx(pDC, rc, XPCOLOR_HIGHLIGHT_BORDER, bHoriz, m_grcLunaSelected);
|
|
|
|
}
|
|
else CXTPOfficeTheme::DrawRectangle(pDC, rc, bSelected, bPressed, bEnabled, bChecked, bPopuped, barType, barPosition);
|
|
}
|
|
|
|
void CXTPOffice2003Theme::DrawExpandSymbols(CDC* pDC, BOOL bVertical, CRect rc, BOOL bHiddenExists, COLORREF clr)
|
|
{
|
|
if (!bVertical)
|
|
{
|
|
CPoint pt = CPoint(rc.left + rc.Width()/2, rc.bottom - 6);
|
|
|
|
HorizontalLine(pDC, pt.x - 2, pt.y - 4, pt.x + 3, clr);
|
|
Triangle(pDC, CPoint(pt.x -2 , pt.y - 1), CPoint(pt.x + 2, pt.y - 1), CPoint (pt.x, pt.y + 1), clr);
|
|
|
|
if (bHiddenExists)
|
|
{
|
|
Triangle(pDC, CPoint(rc.left + 3, rc.top + 5), CPoint(rc.left + 4, rc.top + 6), CPoint(rc.left + 3, rc.top + 7), clr);
|
|
Triangle(pDC, CPoint(rc.left + 7, rc.top + 5), CPoint(rc.left + 8, rc.top + 6), CPoint(rc.left + 7, rc.top + 7), clr);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CPoint pt = CPoint(rc.right - 5, rc.CenterPoint().y);
|
|
|
|
VerticalLine(pDC, pt.x - 5, pt.y - 2, pt.y + 3, clr);
|
|
|
|
Triangle(pDC, CPoint(pt.x , pt.y), CPoint(pt.x - 2, pt.y - 2), CPoint (pt.x - 2, pt.y + 2), clr);
|
|
|
|
if (bHiddenExists)
|
|
{
|
|
Triangle(pDC, CPoint(rc.left + 5, rc.top + 3), CPoint(rc.left + 6, rc.top + 4), CPoint(rc.left + 7, rc.top + 3), clr);
|
|
Triangle(pDC, CPoint(rc.left + 5, rc.top + 7), CPoint(rc.left + 6, rc.top + 8), CPoint(rc.left + 7, rc.top + 7), clr);
|
|
}
|
|
}
|
|
}
|
|
|
|
CSize CXTPOffice2003Theme::DrawSpecialControl(CDC* pDC, XTPSpecialControl controlType, CXTPControl* pButton, CXTPCommandBar* pBar, BOOL bDraw, LPVOID lpParam)
|
|
{
|
|
if (controlType == xtpButtonExpandToolbar)
|
|
{
|
|
if (!bDraw)
|
|
{
|
|
CSize szBar = *(CSize*)lpParam;
|
|
if (!IsVerticalPosition(pBar->GetPosition()))
|
|
pButton->SetRect(CRect(szBar.cx - (11 + 1), 1, szBar.cx - 0, szBar.cy - 0));
|
|
else
|
|
pButton->SetRect(CRect(0, szBar.cy - (11 + 1), szBar.cx - 0, szBar.cy - 0));
|
|
}
|
|
else
|
|
{
|
|
CRect rc = pButton->GetRect();
|
|
if (!IsVerticalPosition(pBar->GetPosition()))
|
|
{
|
|
pDC->ExcludeClipRect(rc.right - 1, rc.top, rc.right, rc.top + 1);
|
|
pDC->ExcludeClipRect(rc.right - 1, rc.bottom - 1, rc.right, rc.bottom);
|
|
pDC->ExcludeClipRect(rc.left, rc.top + 1, rc.left + 1, rc.bottom - 1);
|
|
}
|
|
else
|
|
{
|
|
pDC->ExcludeClipRect(rc.left, rc.bottom - 1, rc.left + 1, rc.bottom);
|
|
pDC->ExcludeClipRect(rc.right - 1, rc.bottom - 1, rc.right, rc.bottom);
|
|
pDC->ExcludeClipRect(rc.left + 1, rc.top, rc.right - 1, rc.top + 1);
|
|
}
|
|
|
|
if (pButton->GetPopuped())
|
|
{
|
|
if (m_bLunaTheme) GradientFill(pDC, rc, m_grcLunaPushed.clrLight, m_grcLunaPushed.clrDark, IsVerticalPosition(pBar->GetPosition()));
|
|
else pDC->FillSolidRect(rc, GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
|
|
}
|
|
else if (pButton->GetSelected())
|
|
{
|
|
if (m_bLunaTheme) GradientFill(pDC, rc, m_grcLunaSelected.clrLight, m_grcLunaSelected.clrDark, IsVerticalPosition(pBar->GetPosition()));
|
|
else pDC->FillSolidRect(rc, GetXtremeColor(XPCOLOR_HIGHLIGHT));
|
|
}
|
|
else
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, rc, m_clrToolbarExpand, IsVerticalPosition(pBar->GetPosition()));
|
|
}
|
|
|
|
COLORREF clrText = GetXtremeColor(pButton->GetPopuped() ? XPCOLOR_TOOLBAR_TEXT: pButton->GetSelected() ? XPCOLOR_HIGHLIGHT_TEXT : XPCOLOR_TOOLBAR_TEXT);
|
|
BOOL bHiddenExists = *(BOOL*)lpParam;
|
|
|
|
DrawExpandSymbols(pDC, IsVerticalPosition(pBar->GetPosition()), CRect(CPoint(rc.left + 1, rc.top + 1), rc.Size()) , bHiddenExists, GetXtremeColor(COLOR_BTNHIGHLIGHT));
|
|
DrawExpandSymbols(pDC, IsVerticalPosition(pBar->GetPosition()), rc, bHiddenExists, clrText);
|
|
|
|
pDC->SelectClipRgn(0);
|
|
}
|
|
return 0;
|
|
}
|
|
if (controlType == xtpButtonExpandMenu)
|
|
{
|
|
if (bDraw)
|
|
{
|
|
CXTPPaintManager::DrawControlEntry(pDC, pButton);
|
|
CRect rcButton = pButton->GetRect();
|
|
int nCenter = rcButton.CenterPoint().x;
|
|
|
|
m_ilGradientCircle.Draw(pDC, 0, CPoint(nCenter - 7, rcButton.top + 1), ILD_NORMAL);
|
|
|
|
int nTop = rcButton.top + 5;
|
|
CXTPPenDC pen(pDC->GetSafeHdc(), 0);
|
|
pDC->MoveTo(nCenter - 2, nTop);
|
|
pDC->LineTo(nCenter, nTop + 2);
|
|
pDC->LineTo(nCenter + 3, nTop - 1);
|
|
pDC->MoveTo(nCenter - 2, nTop + 1);
|
|
pDC->LineTo(nCenter, nTop + 3);
|
|
pDC->LineTo(nCenter + 3, nTop);
|
|
|
|
pDC->MoveTo(nCenter - 2, nTop + 4);
|
|
pDC->LineTo(nCenter, nTop + 6);
|
|
pDC->LineTo(nCenter + 3, nTop + 3);
|
|
pDC->MoveTo(nCenter - 2, nTop + 5);
|
|
pDC->LineTo(nCenter, nTop + 7);
|
|
pDC->LineTo(nCenter + 3, nTop + 4);
|
|
|
|
}
|
|
return CSize(0, 18);
|
|
}
|
|
|
|
return CXTPOfficeTheme::DrawSpecialControl(pDC, controlType, pButton, pBar, bDraw, lpParam);
|
|
}
|
|
|
|
|
|
void CXTPOffice2003Theme::CreateGradientCircle()
|
|
{
|
|
|
|
const BYTE clrMask[16 * 16] =
|
|
{
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xEA, 0xC6, 0xB4, 0xB4, 0xB4, 0xC6, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xFF, 0xEA, 0xEA, 0xEA, 0xEA, 0xC6, 0xB4, 0x90, 0x7E, 0x7E, 0xC6, 0xFF, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xEA, 0xFC, 0xFC, 0xEA, 0xEA, 0xC6, 0xB4, 0x90, 0x7E, 0x6C, 0x5A, 0x90, 0xFF, 0xFF,
|
|
0xFF, 0xEA, 0xFC, 0xFC, 0xFC, 0xEA, 0xEA, 0xC6, 0xB4, 0x90, 0x7E, 0x6C, 0x5A, 0x36, 0x7E, 0xFF,
|
|
0xEA, 0xFC, 0xFC, 0xFC, 0xFC, 0xEA, 0xEA, 0xC6, 0xB4, 0x90, 0x7E, 0x6C, 0x5A, 0x36, 0x24, 0xEA,
|
|
0xEA, 0xFC, 0xFC, 0xFC, 0xFC, 0xEA, 0xEA, 0xC6, 0xB4, 0x90, 0x7E, 0x6C, 0x48, 0x36, 0x24, 0x5A,
|
|
0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xC6, 0xB4, 0x90, 0x90, 0x7E, 0x6C, 0x48, 0x24, 0x12, 0x24,
|
|
0xC6, 0xEA, 0xEA, 0xEA, 0xC6, 0xC6, 0xC6, 0xB4, 0x90, 0x7E, 0x7E, 0x48, 0x36, 0x24, 0x12, 0x12,
|
|
0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xB4, 0xB4, 0x90, 0x7E, 0x7E, 0x6C, 0x48, 0x36, 0x12, 0x12, 0x00,
|
|
0xC6, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0x90, 0x7E, 0x7E, 0x6C, 0x5A, 0x36, 0x24, 0x12, 0x00, 0x00,
|
|
0xC6, 0x90, 0x90, 0x90, 0x90, 0x90, 0x7E, 0x7E, 0x6C, 0x6C, 0x48, 0x36, 0x24, 0x12, 0x00, 0x36,
|
|
0xFC, 0x90, 0x7E, 0x7E, 0x7E, 0x7E, 0x6C, 0x6C, 0x5A, 0x5A, 0x36, 0x24, 0x12, 0x00, 0x00, 0xB4,
|
|
0xFF, 0xC6, 0x6C, 0x6C, 0x6C, 0x6C, 0x5A, 0x5A, 0x5A, 0x48, 0x36, 0x24, 0x12, 0x00, 0x48, 0xFF,
|
|
0xFF, 0xFF, 0xB4, 0x6C, 0x5A, 0x5A, 0x5A, 0x48, 0x48, 0x36, 0x24, 0x12, 0x00, 0x36, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xFF, 0xC6, 0x5A, 0x48, 0x48, 0x48, 0x36, 0x24, 0x24, 0x12, 0x6C, 0xFF, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xB4, 0x6C, 0x48, 0x36, 0x5A, 0x7E, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF
|
|
};
|
|
|
|
m_ilGradientCircle.DeleteImageList();
|
|
|
|
COLORREF clrLight = m_clrMenuExpand.clrLight;
|
|
COLORREF clrDark = m_clrMenuExpand.clrDark;
|
|
|
|
CWindowDC dc(CWnd::GetDesktopWindow());
|
|
|
|
CDC dcCircle;
|
|
dcCircle.CreateCompatibleDC(&dc);
|
|
CBitmap bmp;
|
|
VERIFY(bmp.CreateCompatibleBitmap(&dc, 16, 16));
|
|
CBitmap* pOldBitmap = (CBitmap*)dcCircle.SelectObject(&bmp);
|
|
|
|
for (int i = 0; i < 16 * 16; i++)
|
|
{
|
|
int n = clrMask[i];
|
|
|
|
int nRed = GetRValue(clrDark) - n * (GetRValue(clrDark) - GetRValue(clrLight)) / 0xFF;
|
|
int nGreen = GetGValue(clrDark) - n * (GetGValue(clrDark) - GetGValue(clrLight)) / 0xFF;
|
|
int nBlue = GetBValue(clrDark) - n * (GetBValue(clrDark) - GetBValue(clrLight)) / 0xFF;
|
|
dcCircle.SetPixel(i / 16, i % 16, n == 0xFF ? RGB(0, 0xFF, 0) : RGB(nRed, nGreen, nBlue));
|
|
}
|
|
|
|
dcCircle.SelectObject(pOldBitmap);
|
|
|
|
m_ilGradientCircle.Create(16, 16, ILC_COLOR24 | ILC_MASK, 1, 0);
|
|
m_ilGradientCircle.Add(&bmp, RGB(0, 0xFF, 0));
|
|
|
|
ASSERT(m_ilGradientCircle.GetImageCount() == 1);
|
|
|
|
}
|
|
|
|
|
|
#define RGB_TO_RGBQUAD(r, g, b) (RGB(b, g, r))
|
|
|
|
|
|
HBITMAP CXTPOffice2003Theme::GetModernBitmap(UINT nIDResource)
|
|
{
|
|
static const struct
|
|
{
|
|
DWORD rgbqFrom;
|
|
DWORD rgbqTo;
|
|
}
|
|
modernColorMap[] =
|
|
{
|
|
{ RGB_TO_RGBQUAD(0, 128, 0), RGB_TO_RGBQUAD(0, 151, 94) },
|
|
{ RGB_TO_RGBQUAD(255, 0, 0), RGB_TO_RGBQUAD(255, 87, 42) },
|
|
{ RGB_TO_RGBQUAD(128, 0, 0), RGB_TO_RGBQUAD(213, 79, 74) },
|
|
{ RGB_TO_RGBQUAD(0, 0, 255), RGB_TO_RGBQUAD(58, 123, 252) },
|
|
{ RGB_TO_RGBQUAD(0, 0, 128), RGB_TO_RGBQUAD(1, 81, 205) },
|
|
{ RGB_TO_RGBQUAD(128, 128, 128), RGB_TO_RGBQUAD(149, 147, 145) },
|
|
{ RGB_TO_RGBQUAD(128, 128, 0), RGB_TO_RGBQUAD(228, 167, 8) },
|
|
{ RGB_TO_RGBQUAD(192, 192, 192), RGB_TO_RGBQUAD(205, 198, 187) },
|
|
{ RGB_TO_RGBQUAD(255, 255, 0), RGB_TO_RGBQUAD(255, 218, 33) }
|
|
};
|
|
|
|
|
|
LPCTSTR lpszResourceName = MAKEINTRESOURCE(nIDResource);
|
|
ASSERT(lpszResourceName != NULL);
|
|
if (!lpszResourceName)
|
|
return NULL;
|
|
|
|
// determine location of the bitmap in resource fork
|
|
HINSTANCE hInst = AfxFindResourceHandle(lpszResourceName, RT_BITMAP);
|
|
if (!hInst)
|
|
return NULL;
|
|
|
|
HRSRC hRsrc = ::FindResource(hInst, lpszResourceName, RT_BITMAP);
|
|
if (hRsrc == NULL)
|
|
return NULL;
|
|
|
|
HGLOBAL hglb = LoadResource(hInst, hRsrc);
|
|
if (hglb == NULL)
|
|
return NULL;
|
|
|
|
LPBITMAPINFOHEADER lpBitmap = (LPBITMAPINFOHEADER)LockResource(hglb);
|
|
if (lpBitmap == NULL)
|
|
return NULL;
|
|
|
|
// make copy of BITMAPINFOHEADER so we can modify the color table
|
|
const int nColorTableSize = 16;
|
|
UINT nSize = lpBitmap->biSize + nColorTableSize * sizeof(RGBQUAD);
|
|
LPBITMAPINFOHEADER lpBitmapInfo = (LPBITMAPINFOHEADER)::malloc(nSize);
|
|
if (lpBitmapInfo == NULL)
|
|
return NULL;
|
|
|
|
MEMCPY_S(lpBitmapInfo, lpBitmap, nSize);
|
|
|
|
// color table is in RGBQUAD DIB format
|
|
DWORD* pColorTable =
|
|
(DWORD*)(((LPBYTE)lpBitmapInfo) + (UINT)lpBitmapInfo->biSize);
|
|
|
|
COLORREF clrMask = XTPImageManager()->GetMaskColor();
|
|
|
|
for (int iColor = 0; iColor < nColorTableSize; iColor++)
|
|
{
|
|
// look for matching RGBQUAD color in original
|
|
for (int i = 0; i < _countof(modernColorMap); i++)
|
|
{
|
|
if (pColorTable[iColor] == modernColorMap[i].rgbqFrom
|
|
&& clrMask != pColorTable[iColor])
|
|
{
|
|
pColorTable[iColor] = modernColorMap[i].rgbqTo;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
int nWidth = (int)lpBitmapInfo->biWidth;
|
|
int nHeight = (int)lpBitmapInfo->biHeight;
|
|
HDC hDCScreen = ::GetDC(NULL);
|
|
HBITMAP hbm = ::CreateCompatibleBitmap(hDCScreen, nWidth, nHeight);
|
|
|
|
if (hbm != NULL)
|
|
{
|
|
HDC hDCGlyphs = ::CreateCompatibleDC(hDCScreen);
|
|
HBITMAP hbmOld = (HBITMAP)::SelectObject(hDCGlyphs, hbm);
|
|
|
|
LPBYTE lpBits;
|
|
lpBits = (LPBYTE)(lpBitmap + 1);
|
|
lpBits += ((size_t)1 << (lpBitmapInfo->biBitCount)) * sizeof(RGBQUAD);
|
|
|
|
StretchDIBits(hDCGlyphs, 0, 0, nWidth, nHeight, 0, 0, nWidth, nHeight,
|
|
lpBits, (LPBITMAPINFO)lpBitmapInfo, DIB_RGB_COLORS, SRCCOPY);
|
|
SelectObject(hDCGlyphs, hbmOld);
|
|
::DeleteDC(hDCGlyphs);
|
|
}
|
|
::ReleaseDC(NULL, hDCScreen);
|
|
|
|
// free copy of bitmap info struct and resource itself
|
|
::free(lpBitmapInfo);
|
|
::FreeResource(hglb);
|
|
|
|
return hbm;
|
|
}
|
|
|
|
BOOL CXTPOffice2003Theme::LoadModernToolbarIcons(UINT nIDResource)
|
|
{
|
|
|
|
HBITMAP hbm = GetModernBitmap(nIDResource);
|
|
if (!hbm)
|
|
return FALSE;
|
|
|
|
CBitmap bmp;
|
|
bmp.Attach(hbm);
|
|
|
|
return XTPImageManager()->SetIcons(nIDResource, bmp);
|
|
}
|
|
|
|
BOOL CXTPOffice2003Theme::LoadModernToolbarIcons(UINT nIDResource, UINT* pCommands, int nCount, CSize szIcon)
|
|
{
|
|
HBITMAP hbm = GetModernBitmap(nIDResource);
|
|
if (!hbm)
|
|
return FALSE;
|
|
|
|
CBitmap bmp;
|
|
bmp.Attach(hbm);
|
|
|
|
return XTPImageManager()->SetIcons(bmp, pCommands, nCount, szIcon);
|
|
}
|
|
|
|
|
|
|
|
CRect CXTPOffice2003Theme::GetCommandBarBorders(CXTPCommandBar* pBar)
|
|
{
|
|
if (pBar->GetPosition() == xtpBarTop || pBar->GetPosition() == xtpBarBottom)
|
|
return CRect(4, 2, 2, 2);
|
|
else return CXTPOfficeTheme::GetCommandBarBorders(pBar);
|
|
}
|
|
|
|
CSize CXTPOffice2003Theme::DrawTearOffGripper(CDC* pDC, CRect rcGripper, BOOL bSelected, BOOL bDraw)
|
|
{
|
|
if (bDraw)
|
|
{
|
|
CRect rc(1, 1, rcGripper.right + 1, rcGripper.Height() + 1);
|
|
pDC->FillSolidRect(rc, GetXtremeColor(XPCOLOR_MENUBAR_FACE));
|
|
rc.DeflateRect(1, 1);
|
|
int nLeft = rc.CenterPoint().x - min(32, rcGripper.Width() /2 - 10);
|
|
int nRight = rc.CenterPoint().x + min(32, rcGripper.Width() /2 - 10);
|
|
|
|
if (bSelected)
|
|
Rectangle(pDC, rc, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT);
|
|
else
|
|
pDC->FillSolidRect(rc, m_clrTearOffGripper);
|
|
|
|
for (int x = nLeft; x < nRight; x += 4)
|
|
{
|
|
pDC->FillSolidRect(CRect(x + 1, 4 + 1, x + 3, 6 + 1), GetXtremeColor(COLOR_BTNHIGHLIGHT));
|
|
pDC->FillSolidRect(CRect(x, 3 + 1, x + 2, 5 + 1), GetXtremeColor(XPCOLOR_TOOLBAR_GRIPPER));
|
|
}
|
|
}
|
|
|
|
return CSize(0, 9);
|
|
}
|
|
|
|
void CXTPOffice2003Theme::DrawStatusBarGripper(CDC* pDC, CRect rcClient)
|
|
{
|
|
if (m_bThemedStatusBar && m_themeStatusBar->IsAppThemed())
|
|
{
|
|
CRect rcGripper(rcClient.right - 18, rcClient.top, rcClient.right, rcClient.bottom);
|
|
m_themeStatusBar->DrawThemeBackground(pDC->GetSafeHdc(), SP_GRIPPER, 0, &rcGripper, 0);
|
|
|
|
}
|
|
else
|
|
{
|
|
CXTPPenDC penBorder(*pDC, GetXtremeColor(COLOR_3DSHADOW));
|
|
int i;
|
|
for (i = 0; i < 3; i++)
|
|
{
|
|
pDC->MoveTo(rcClient.Width() - i * 5, rcClient.Height() - 1);
|
|
pDC->LineTo(rcClient.Width(), rcClient.Height() - 1 - i * 5);
|
|
|
|
pDC->MoveTo(rcClient.Width() - 1 - i * 5, rcClient.Height() - 1);
|
|
pDC->LineTo(rcClient.Width(), rcClient.Height() - 2 - i * 5);
|
|
|
|
pDC->MoveTo(rcClient.Width() - 2 - i * 5, rcClient.Height() - 1);
|
|
pDC->LineTo(rcClient.Width(), rcClient.Height() - 3 - i * 5);
|
|
}
|
|
|
|
CXTPPenDC penBorderWhite(*pDC, GetXtremeColor(COLOR_BTNHIGHLIGHT));
|
|
for (i = 0; i < 3; i++)
|
|
{
|
|
pDC->MoveTo(rcClient.Width() - 3 - i * 5, rcClient.Height() - 1);
|
|
pDC->LineTo(rcClient.Width(), rcClient.Height() - 4 - i * 5);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
void CXTPOffice2003Theme::DrawStatusBarPaneBorder(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane, BOOL bGripperPane)
|
|
{
|
|
if (m_bThemedStatusBar && m_themeStatusBar->IsAppThemed())
|
|
{
|
|
CXTPPaintManager::DrawStatusBarPaneBorder(pDC, rc, pPane, bGripperPane);
|
|
}
|
|
else
|
|
{
|
|
pDC->Draw3dRect(rc, m_clrStatusPane, m_clrStatusPane);
|
|
}
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CXTPWhidbeyTheme
|
|
|
|
IMPLEMENT_DYNAMIC(CXTPWhidbeyTheme, CXTPOffice2003Theme)
|
|
|
|
CXTPWhidbeyTheme::CXTPWhidbeyTheme()
|
|
{
|
|
m_systemTheme = xtpSystemThemeUnknown;
|
|
m_bPlainSeparators = TRUE;
|
|
}
|
|
|
|
CXTPWhidbeyTheme::~CXTPWhidbeyTheme()
|
|
{
|
|
|
|
}
|
|
|
|
void CXTPWhidbeyTheme::RefreshMetrics()
|
|
{
|
|
CXTPOffice2003Theme::RefreshMetrics();
|
|
|
|
m_clrToolbarExpand.SetStandardValue(XTPColorManager()->LightColor(GetXtremeColor(COLOR_WINDOW), GetXtremeColor(COLOR_3DFACE), 550),
|
|
GetXtremeColor(COLOR_3DSHADOW));
|
|
|
|
if (XTPColorManager()->IsLowResolution())
|
|
{
|
|
m_clrToolbarExpand.SetStandardValue(GetXtremeColor(COLOR_3DFACE));
|
|
}
|
|
|
|
switch (XTPColorManager()->GetCurrentSystemTheme())
|
|
{
|
|
case xtpSystemThemeBlue:
|
|
m_clrCommandBar.SetStandardValue(RGB(250, 249, 245), RGB(192, 192, 168), 0.75f);
|
|
m_clrToolbarExpand.SetStandardValue(RGB(238, 237, 234), RGB(152, 152, 126), 0.75f);
|
|
m_clrDockBar.SetStandardValue(RGB(229, 229, 215), RGB(244, 241, 231));
|
|
m_clrToolbarShadow.SetStandardValue(RGB(163, 163, 124));
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(204, 199, 186));
|
|
m_clrMenuExpand.SetStandardValue(m_clrCommandBar);
|
|
m_clrDisabledIcon.SetStandardValue(RGB(247, 245, 249), RGB(122, 121, 153));
|
|
break;
|
|
|
|
case xtpSystemThemeOlive:
|
|
m_clrCommandBar.SetStandardValue(RGB(250, 249, 245), RGB(192, 192, 168), 0.75f);
|
|
m_clrToolbarExpand.SetStandardValue(RGB(238, 237, 234), RGB(176, 172, 158), 0.75f);
|
|
m_clrDockBar.SetStandardValue(RGB(229, 229, 215), RGB(244, 241, 231));
|
|
m_clrToolbarShadow.SetStandardValue(RGB(163, 163, 124));
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(204, 199, 186));
|
|
m_clrMenuExpand.SetStandardValue(m_clrCommandBar);
|
|
m_clrDisabledIcon.SetStandardValue(RGB(236, 233, 216), RGB(172, 168, 153));
|
|
|
|
m_arrColor[XPCOLOR_HIGHLIGHT].SetStandardValue(RGB(182, 198, 141));
|
|
m_arrColor[XPCOLOR_HIGHLIGHT_PUSHED].SetStandardValue(RGB(147, 160, 112));
|
|
m_arrColor[XPCOLOR_HIGHLIGHT_CHECKED].SetStandardValue(RGB(182, 198, 141));
|
|
m_arrColor[XPCOLOR_PUSHED_TEXT].SetStandardValue(RGB(255, 255, 255));
|
|
break;
|
|
|
|
case xtpSystemThemeSilver:
|
|
m_clrCommandBar.SetStandardValue(RGB(243, 244, 250), RGB(153, 151, 181), 0.75f);
|
|
m_clrToolbarExpand.SetStandardValue(RGB(179, 178, 200), RGB(118, 116, 146), 0.75f);
|
|
m_clrDockBar.SetStandardValue(RGB(215, 215, 229), RGB(243, 243, 247));
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(215, 215, 226), RGB(133, 131, 162));
|
|
m_clrMenuExpand.SetStandardValue(0xF1E8E8, 0xC5AEB0);
|
|
m_clrToolbarShadow.SetStandardValue(RGB(124, 124, 148));
|
|
m_clrDisabledIcon.SetStandardValue(RGB(247, 245, 249), RGB(122, 121, 153));
|
|
|
|
m_arrColor[XPCOLOR_TOOLBAR_GRAYTEXT].SetStandardValue(RGB(141, 141, 141));
|
|
m_arrColor[XPCOLOR_MENUBAR_GRAYTEXT].SetStandardValue(RGB(141, 141, 141));
|
|
m_arrColor[XPCOLOR_SEPARATOR].SetStandardValue(RGB(110, 109, 143));
|
|
m_arrColor[XPCOLOR_TOOLBAR_GRIPPER].SetStandardValue(RGB(84, 84, 117));
|
|
m_arrColor[XPCOLOR_TOOLBAR_FACE].SetStandardValue(RGB(219, 218, 228));
|
|
m_clrTearOffGripper.SetStandardValue(RGB(192, 192, 211));
|
|
m_clrFloatingGripper.SetStandardValue(RGB(122, 121, 153));
|
|
m_arrColor[XPCOLOR_FLOATBAR_BORDER].SetStandardValue(RGB(122, 121, 153));
|
|
|
|
INT nElements[] =
|
|
{
|
|
XPCOLOR_HIGHLIGHT, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT_CHECKED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED, XPCOLOR_HIGHLIGHT_CHECKED, XPCOLOR_PUSHED_TEXT
|
|
};
|
|
COLORREF clrValues[] =
|
|
{
|
|
RGB(255, 238, 194), RGB(75, 75, 111), RGB(75, 75, 111), RGB(75, 75, 111), RGB(254, 128, 62), RGB(255, 192, 111), 0
|
|
};
|
|
SetColors(sizeof(nElements)/sizeof(INT), nElements, clrValues);
|
|
|
|
break;
|
|
}
|
|
|
|
m_clrMenuGripper.SetStandardValue(m_clrCommandBar);
|
|
|
|
CreateGradientCircle();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CXTPVisualStudio2008Theme
|
|
|
|
CXTPVisualStudio2008Theme::CXTPVisualStudio2008Theme()
|
|
{
|
|
m_nPopupBarTextPadding = 10;
|
|
m_pShadowManager->SetShadowOptions(xtpShadowOfficeAlpha);
|
|
}
|
|
|
|
CXTPVisualStudio2008Theme::~CXTPVisualStudio2008Theme()
|
|
{
|
|
}
|
|
|
|
void CXTPVisualStudio2008Theme::RefreshMetrics()
|
|
{
|
|
CXTPWhidbeyTheme::RefreshMetrics();
|
|
|
|
m_clrMenuGripper.SetStandardValue(XTPColorManager()->LightColor(GetXtremeColor(COLOR_3DFACE), GetXtremeColor(COLOR_WINDOW), 40), GetXtremeColor(COLOR_3DFACE));
|
|
m_clrMenuSelection.SetStandardValue(GetXtremeColor(COLOR_HIGHLIGHT));
|
|
m_clrMenuSelectionBorder.SetStandardValue(GetXtremeColor(COLOR_HIGHLIGHT));
|
|
m_clrMenuSelectionText.SetStandardValue(GetXtremeColor(COLOR_HIGHLIGHTTEXT));
|
|
|
|
switch (XTPColorManager()->GetCurrentSystemTheme())
|
|
{
|
|
case xtpSystemThemeBlue:
|
|
case xtpSystemThemeRoyale:
|
|
{
|
|
m_clrMenuSelectionBorder.SetStandardValue(RGB(152, 181, 226));
|
|
m_clrMenuSelection.SetStandardValue(RGB(239,243,250), RGB(193,210,238));
|
|
m_clrMenuSelectionText.SetStandardValue(0);
|
|
m_clrMenuGripper.SetStandardValue(RGB(241, 241, 241));
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(215, 227, 234));
|
|
|
|
m_arrColor[XPCOLOR_LABEL].SetStandardValue(RGB(221, 231, 238));
|
|
}
|
|
break;
|
|
|
|
case xtpSystemThemeAero:
|
|
{
|
|
m_clrMenuSelectionBorder.SetStandardValue(RGB(150,217,249));
|
|
m_clrMenuSelection.SetStandardValue(RGB(241,248,251), RGB(186,228,246));
|
|
m_clrMenuSelectionText.SetStandardValue(0);
|
|
m_clrMenuGripper.SetStandardValue(RGB(244,247,252), RGB(212,216,230));
|
|
|
|
m_arrColor[XPCOLOR_SEPARATOR].SetStandardValue(RGB(160,160,180));
|
|
|
|
|
|
m_clrDockBar.SetStandardValue(RGB(233,236,250), RGB(244,247,252));
|
|
m_clrToolbarShadow.SetStandardValue(RGB(181,190,206));
|
|
m_clrCommandBar.SetStandardValue(RGB(250,250,253), RGB(196,203,219), 0.75f);
|
|
|
|
m_clrFloatingGripper.SetStandardValue(RGB(128, 128, 128));
|
|
m_clrPopupControl.SetStandardValue(RGB(255, 255, 255), RGB(118, 184, 219));
|
|
m_clrToolbarExpand.SetStandardValue(RGB(195,202,218), RGB(233,236,250), 0.75f);
|
|
|
|
m_clrStatusPane.SetStandardValue(RGB(160,160,180));
|
|
m_pShadowManager->SetShadowColor(0);
|
|
|
|
m_clrDisabledIcon.SetStandardValue(RGB(244,247,252), RGB(113,124,152));
|
|
|
|
m_arrColor[XPCOLOR_EDITCTRLBORDER].SetStandardValue(RGB(240, 240, 240));
|
|
|
|
INT nElements[] =
|
|
{
|
|
XPCOLOR_TOOLBAR_GRIPPER, XPCOLOR_SEPARATOR, XPCOLOR_DISABLED, XPCOLOR_MENUBAR_FACE, XPCOLOR_MENUBAR_BORDER, XPCOLOR_HIGHLIGHT, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_HIGHLIGHT_CHECKED_BORDER, XPCOLOR_HIGHLIGHT_PUSHED, XPCOLOR_HIGHLIGHT_CHECKED, XPCOLOR_TOOLBAR_FACE, XPCOLOR_PUSHED_TEXT
|
|
};
|
|
COLORREF clrValues[] =
|
|
{
|
|
RGB(160,160,180), RGB(160,160,180), RGB(128,128,128), RGB(240, 240, 240), RGB(160, 160, 160), RGB(182,228,247), RGB(41,153,255), RGB(41,153,255), RGB(48,127,177), RGB(206,237,250), RGB(206,237,250), RGB(233,236,250), 0
|
|
};
|
|
SetColors(sizeof(nElements)/sizeof(INT), nElements, clrValues);
|
|
|
|
m_grcLunaChecked.SetStandardValue(RGB(237,248,253), RGB(129,192,224));
|
|
m_grcLunaPushed.SetStandardValue(RGB(228,245,252), RGB(124,177,204));
|
|
m_grcLunaSelected.SetStandardValue(RGB(237,248,253), RGB(129,192,224));
|
|
|
|
m_bLunaTheme = TRUE;
|
|
|
|
}
|
|
break;
|
|
|
|
case xtpSystemThemeOlive:
|
|
{
|
|
m_clrMenuSelectionBorder.SetStandardValue(RGB(147,160,112));
|
|
m_clrMenuSelection.SetStandardValue(RGB(239,242,227), RGB(194,207,158));
|
|
m_clrMenuSelectionText.SetStandardValue(0);
|
|
m_clrMenuGripper.SetStandardValue(RGB(247,246,239), RGB(233,230,214));
|
|
}
|
|
break;
|
|
|
|
case xtpSystemThemeSilver:
|
|
{
|
|
m_clrMenuSelectionBorder.SetStandardValue(RGB(255,192,111));
|
|
m_clrMenuSelection.SetStandardValue(RGB(255,246,204), RGB(255,194,115));
|
|
m_clrMenuSelectionText.SetStandardValue(0);
|
|
m_clrMenuGripper.SetStandardValue(RGB(232,233,242), RGB(193,193,211));
|
|
m_arrColor[XPCOLOR_SEPARATOR].SetStandardValue(RGB(110,109,143));
|
|
m_clrPopupControl.SetStandardValue(RGB(232,233,241), RGB(192,191,209));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CXTPVisualStudio2008Theme::AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL /*bVertical*/)
|
|
{
|
|
CXTPCommandBar* pParent = pControl->GetParent();
|
|
|
|
if (pParent->GetType() == xtpBarTypePopup)
|
|
rc.InflateRect(1, 0);
|
|
}
|
|
|
|
CRect CXTPVisualStudio2008Theme::GetCommandBarBorders(CXTPCommandBar* pBar)
|
|
{
|
|
if (pBar->GetPosition() == xtpBarPopup && pBar->GetType() == xtpBarTypePopup)
|
|
return CRect(4, 3, 4, 3);
|
|
|
|
return CXTPWhidbeyTheme::GetCommandBarBorders(pBar);
|
|
}
|
|
|
|
void CXTPVisualStudio2008Theme::DrawPopupBarGripper(CDC* pDC, int x, int y, int cx, int cy, BOOL bExpanded)
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, CRect(CPoint(x, y), CSize(cx, cy)),
|
|
bExpanded ? m_clrMenuExpandedGripper : m_clrMenuGripper, TRUE);
|
|
|
|
pDC->FillSolidRect(x + cx, y, 1, cy, GetXtremeColor(XPCOLOR_SEPARATOR));
|
|
pDC->FillSolidRect(x + cx + 1, y, 1, cy, GetXtremeColor(COLOR_3DHILIGHT));
|
|
}
|
|
|
|
void CXTPVisualStudio2008Theme::AlphaPixel(CDC* pDC, int x, int y, COLORREF clr, int nAlpha)
|
|
{
|
|
if (nAlpha == 255)
|
|
{
|
|
pDC->SetPixel(x, y, clr);
|
|
}
|
|
else
|
|
{
|
|
COLORREF clrOld = pDC->GetPixel(x, y);
|
|
pDC->SetPixel(x, y, CXTPDrawHelpers::BlendColors(clr, clrOld, (double)nAlpha / 255));
|
|
}
|
|
}
|
|
|
|
void CXTPVisualStudio2008Theme::AlphaBorder(CDC* pDC, CRect rc, COLORREF clrBorder)
|
|
{
|
|
pDC->FillSolidRect(rc.left + 3, rc.top, rc.Width() - 6, 1, clrBorder);
|
|
pDC->FillSolidRect(rc.left + 3, rc.bottom - 1, rc.Width() - 6, 1, clrBorder);
|
|
pDC->FillSolidRect(rc.left, rc.top + 3, 1, rc.Height() - 6, clrBorder);
|
|
pDC->FillSolidRect(rc.right - 1 , rc.top + 3, 1, rc.Height() - 6, clrBorder);
|
|
|
|
AlphaPixel(pDC, rc.left + 1, rc.top + 1, clrBorder, 255);
|
|
AlphaPixel(pDC, rc.left + 1, rc.top, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.left + 2, rc.top, clrBorder, 120);
|
|
AlphaPixel(pDC, rc.left, rc.top + 1, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.left, rc.top + 2, clrBorder, 120);
|
|
|
|
AlphaPixel(pDC, rc.right - 2, rc.top + 1, clrBorder, 255);
|
|
AlphaPixel(pDC, rc.right - 3, rc.top, clrBorder, 120);
|
|
AlphaPixel(pDC, rc.right - 2, rc.top, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.right - 1, rc.top + 1, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.right - 1, rc.top + 2, clrBorder, 120);
|
|
|
|
AlphaPixel(pDC, rc.left + 1, rc.bottom - 2, clrBorder, 255);
|
|
AlphaPixel(pDC, rc.left + 1, rc.bottom - 1, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.left + 2, rc.bottom - 1, clrBorder, 120);
|
|
AlphaPixel(pDC, rc.left, rc.bottom - 2, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.left, rc.bottom - 3, clrBorder, 120);
|
|
|
|
|
|
AlphaPixel(pDC, rc.right - 2, rc.bottom - 2, clrBorder, 255);
|
|
AlphaPixel(pDC, rc.right - 3, rc.bottom - 1, clrBorder, 120);
|
|
AlphaPixel(pDC, rc.right - 2, rc.bottom - 1, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.right - 1, rc.bottom - 2, clrBorder, 60);
|
|
AlphaPixel(pDC, rc.right - 1, rc.bottom - 3, clrBorder, 120);
|
|
}
|
|
|
|
void CXTPVisualStudio2008Theme::DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition)
|
|
{
|
|
if (barPosition == xtpBarPopup && barType == xtpBarTypePopup && bSelected && !bChecked && !bPressed)
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, CRect(rc.left + 1, rc.top + 1, rc.right - 1, rc.bottom - 1), m_clrMenuSelection, FALSE);
|
|
|
|
COLORREF clrBorder = m_clrMenuSelectionBorder;
|
|
AlphaBorder(pDC, rc, clrBorder);
|
|
return;
|
|
}
|
|
|
|
if (barType == xtpBarTypeMenuBar && bSelected && !bChecked && !bPressed && bEnabled)
|
|
{
|
|
COLORREF clrShadow = GetXtremeColor(COLOR_WINDOW);
|
|
COLORREF clrBorder = GetXtremeColor(XPCOLOR_HIGHLIGHT_BORDER);
|
|
|
|
pDC->FillSolidRect(rc.left + 1, rc.top, rc.Width() - 2, 1, clrShadow);
|
|
pDC->FillSolidRect(rc.left + 1, rc.bottom - 1, rc.Width() - 2, 1, clrShadow);
|
|
pDC->FillSolidRect(rc.left, rc.top + 1, 1, rc.Height() - 2, clrShadow);
|
|
pDC->FillSolidRect(rc.right - 1 , rc.top + 1, 1, rc.Height() - 2, clrShadow);
|
|
rc.DeflateRect(1, 1);
|
|
|
|
pDC->Draw3dRect(rc, clrBorder, clrBorder);
|
|
COLORREF clrPixel = CXTPDrawHelpers::BlendColors(clrBorder, clrShadow, 0.5);
|
|
pDC->SetPixel(rc.left, rc.top, clrPixel);
|
|
pDC->SetPixel(rc.left, rc.bottom - 1, clrPixel);
|
|
pDC->SetPixel(rc.right - 1, rc.top, clrPixel);
|
|
pDC->SetPixel(rc.right - 1, rc.bottom - 1, clrPixel);
|
|
|
|
rc.DeflateRect(1, 1);
|
|
|
|
if (!bPopuped)
|
|
{
|
|
if (m_bLunaTheme) XTPDrawHelpers()->GradientFill(pDC, rc, m_grcLunaSelected, FALSE);
|
|
else pDC->FillSolidRect(rc, GetXtremeColor(XPCOLOR_HIGHLIGHT));
|
|
}
|
|
else
|
|
XTPDrawHelpers()->GradientFill(pDC, rc, m_clrPopupControl, FALSE);
|
|
|
|
return;
|
|
}
|
|
if (barType != xtpBarTypePopup && bPopuped && bEnabled)
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, rc, m_clrPopupControl, FALSE);
|
|
Draw3dRect(pDC, rc, XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT_BORDER);
|
|
return;
|
|
}
|
|
|
|
CXTPWhidbeyTheme::DrawRectangle(pDC, rc, bSelected, bPressed, bEnabled, bChecked, bPopuped, barType, barPosition);
|
|
}
|
|
|
|
COLORREF CXTPVisualStudio2008Theme::GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition)
|
|
{
|
|
if (barPosition == xtpBarPopup && barType == xtpBarTypePopup && bSelected && !bPressed && bEnabled)
|
|
{
|
|
return m_clrMenuSelectionText;
|
|
}
|
|
|
|
return CXTPWhidbeyTheme::GetRectangleTextColor(bSelected, bPressed, bEnabled, bChecked, bPopuped, barType, barPosition);
|
|
}
|
|
|
|
CSize CXTPVisualStudio2008Theme::DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw)
|
|
{
|
|
if (!bDraw || pBar->GetType() != xtpBarTypePopup || pBar->GetPosition() != xtpBarPopup)
|
|
return CXTPWhidbeyTheme::DrawCommandBarSeparator(pDC, pBar, pControl, bDraw);
|
|
|
|
CRect rc;
|
|
pBar->GetClientRect(&rc);
|
|
CRect rcControl = pControl->GetRect();
|
|
CRect rcRow = pControl->GetRowRect();
|
|
|
|
if (!pControl->GetWrap())
|
|
{
|
|
HorizontalLine(pDC, rcControl.left - 1 + GetPopupBarGripperWidth(pBar) + m_nPopupBarTextPadding, rcControl.top - 2, rcControl.right + 1, GetXtremeColor(XPCOLOR_SEPARATOR));
|
|
HorizontalLine(pDC, rcControl.left - 1 + GetPopupBarGripperWidth(pBar) + m_nPopupBarTextPadding, rcControl.top - 1, rcControl.right + 1, GetXtremeColor(COLOR_3DHILIGHT));
|
|
}
|
|
else
|
|
{
|
|
VerticalLine(pDC, rcControl.left - 2, rcRow.top - 1, rcRow.bottom + 1, GetXtremeColor(XPCOLOR_SEPARATOR));
|
|
VerticalLine(pDC, rcControl.left - 1, rcRow.top - 1, rcRow.bottom + 1, GetXtremeColor(COLOR_3DHILIGHT));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CXTPVisualStudio2010Theme
|
|
|
|
CXTPVisualStudio2010Theme::CXTPVisualStudio2010Theme()
|
|
{
|
|
m_nPopupBarTextPadding = 10;
|
|
m_pShadowManager->SetShadowOptions(xtpShadowOfficeAlpha);
|
|
|
|
m_bFlatGripper = TRUE;
|
|
m_bPlainSeparators = TRUE;
|
|
|
|
m_bThemedStatusBar = TRUE;
|
|
m_nToolbarSeparatorMargin = 2;
|
|
}
|
|
|
|
CXTPVisualStudio2010Theme::~CXTPVisualStudio2010Theme()
|
|
{
|
|
}
|
|
|
|
void CXTPVisualStudio2010Theme::RefreshMetrics()
|
|
{
|
|
CXTPOffice2003Theme::RefreshMetrics();
|
|
|
|
HWND hWnd = AfxGetMainWnd() ? AfxGetMainWnd()->GetSafeHwnd() : 0;
|
|
m_themeStatusBar->OpenThemeData(hWnd, L"STATUS");
|
|
|
|
|
|
m_clrCommandBar.SetStandardValue(RGB(188, 199, 216));
|
|
m_clrDockBar.SetStandardValue(RGB(156,170,193));
|
|
|
|
m_bLunaTheme = FALSE;
|
|
|
|
m_arrColor[XPCOLOR_SPLITTER_FACE].SetStandardValue(XTPColorManager()->grcDockBar.clrDark);
|
|
|
|
m_clrToolbarShadow.SetStandardValue(RGB(201, 210, 225));
|
|
|
|
m_clrFloatingGripper.SetStandardValue(RGB(72, 92, 127));
|
|
m_clrPopupControl.SetStandardValue(RGB(233, 236, 238));
|
|
m_clrToolbarExpand.SetStandardValue(RGB(213,220,232));
|
|
|
|
m_clrMenuExpandedGripper.SetStandardValue(RGB(203, 221, 246), RGB(121, 161, 220)); // TODO
|
|
m_clrMenuExpand.SetStandardValue(0xFEEFE3, 0xE2A981); // TODO
|
|
|
|
m_clrStatusPane.SetStandardValue(RGB(255, 255, 255));
|
|
m_pShadowManager->SetShadowColor(RGB(0, 0, 0));
|
|
m_clrTearOffGripper.SetStandardValue(RGB(169, 199, 240)); // TODO
|
|
|
|
m_clrDisabledIcon.SetStandardValue(RGB(221, 227, 235), RGB(95, 100, 108));
|
|
|
|
m_arrColor[XPCOLOR_EDITCTRLBORDER].SetStandardValue(RGB(133, 145, 162));
|
|
m_arrColor[XPCOLOR_3DFACE].SetStandardValue(RGB(156, 170, 193));
|
|
m_arrColor[XPCOLOR_3DSHADOW].SetStandardValue(RGB(96,114,140));
|
|
m_arrColor[COLOR_APPWORKSPACE].SetStandardValue(RGB(47, 65, 95));
|
|
m_arrColor[XPCOLOR_LABEL].SetStandardValue(RGB(233, 236, 238));
|
|
|
|
INT nElements[] =
|
|
{
|
|
XPCOLOR_TOOLBAR_GRIPPER, XPCOLOR_SEPARATOR, XPCOLOR_DISABLED,
|
|
XPCOLOR_MENUBAR_FACE, XPCOLOR_MENUBAR_BORDER, XPCOLOR_HIGHLIGHT,
|
|
XPCOLOR_HIGHLIGHT_BORDER, XPCOLOR_HIGHLIGHT_PUSHED_BORDER, XPCOLOR_HIGHLIGHT_CHECKED_BORDER,
|
|
XPCOLOR_HIGHLIGHT_PUSHED, XPCOLOR_HIGHLIGHT_CHECKED, XPCOLOR_TOOLBAR_FACE, XPCOLOR_PUSHED_TEXT
|
|
};
|
|
COLORREF clrValues[] =
|
|
{
|
|
RGB(97,115,140), RGB(133,145,162), RGB(128, 128, 128),
|
|
RGB(221,226,232), RGB(155,167,183), RGB(255, 243, 206),
|
|
RGB(231, 195, 99), RGB(229,195,101), RGB(229,195,101),
|
|
RGB(255, 235, 165), RGB(255, 239, 189), RGB(188,199,216), 0
|
|
};
|
|
SetColors(sizeof(nElements)/sizeof(INT), nElements, clrValues);
|
|
|
|
|
|
|
|
m_arrColor[XPCOLOR_HIGHLIGHT_DISABLED_BORDER].SetStandardValue(RGB(128, 128, 128));
|
|
m_arrColor[XPCOLOR_TOOLBAR_GRAYTEXT].SetStandardValue(RGB(128, 128, 128));
|
|
m_arrColor[XPCOLOR_MENUBAR_GRAYTEXT].SetStandardValue(RGB(128, 128, 128));
|
|
m_arrColor[XPCOLOR_FLOATBAR_BORDER].SetStandardValue(m_clrFloatingGripper);
|
|
|
|
m_clrMenuGripper.SetStandardValue(RGB(233, 236, 238));
|
|
|
|
m_bLunaTheme = XTPSystemVersion()->IsWinVistaOrGreater();
|
|
m_grcLunaChecked.SetStandardValue(RGB(255,251,241), RGB(255,238,190));
|
|
m_grcLunaPushed.SetStandardValue(RGB(255,232,166), RGB(255,232,166));
|
|
m_grcLunaSelected.SetStandardValue(RGB(255,252,242), RGB(255,236,181));
|
|
|
|
m_clrStatusPane.SetStandardValue(RGB(41, 57, 85));
|
|
m_clrStatusTextColor = RGB(255, 255, 255);
|
|
|
|
m_arrColor[XPCOLOR_TOOLBAR_TEXT].SetStandardValue(RGB(28, 42, 63));
|
|
m_clrMenuSeparator.SetStandardValue(RGB(190, 195, 203));
|
|
|
|
if (!m_bLunaTheme)
|
|
{
|
|
m_clrDockBar.SetStandardValue(RGB(173, 186, 206));
|
|
m_clrCommandBar.SetStandardValue(RGB(189, 199, 222));
|
|
m_clrToolbarShadow.SetStandardValue(RGB(206, 211, 231));
|
|
|
|
m_arrColor[XPCOLOR_MENUBAR_FACE].SetStandardValue(RGB(239, 239, 239));
|
|
m_arrColor[XPCOLOR_MENUBAR_BORDER].SetStandardValue(RGB(156, 166, 181));
|
|
m_arrColor[XPCOLOR_TOOLBAR_GRIPPER].SetStandardValue(RGB(99, 113, 140));
|
|
m_arrColor[XPCOLOR_SEPARATOR].SetStandardValue(RGB(132, 146, 165));
|
|
|
|
m_arrColor[XPCOLOR_TOOLBAR_TEXT].SetStandardValue(RGB(24, 40, 57));
|
|
|
|
m_clrMenuSeparator.SetStandardValue(RGB(189, 195, 206));
|
|
}
|
|
|
|
CreateGradientCircle();
|
|
|
|
}
|
|
|
|
void CXTPVisualStudio2010Theme::AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical)
|
|
{
|
|
CXTPOffice2003Theme::AdjustExcludeRect(rc, pControl, bVertical);
|
|
}
|
|
|
|
CRect CXTPVisualStudio2010Theme::GetCommandBarBorders(CXTPCommandBar* pBar)
|
|
{
|
|
if (pBar->GetPosition() == xtpBarPopup && pBar->GetType() == xtpBarTypePopup)
|
|
return CRect(3, 3, 3, 3);
|
|
|
|
return CXTPOffice2003Theme::GetCommandBarBorders(pBar);
|
|
}
|
|
|
|
void CXTPVisualStudio2010Theme::DrawPopupBarGripper(CDC* pDC, int x, int y, int cx, int cy, BOOL bExpanded)
|
|
{
|
|
CXTPOffice2003Theme::DrawPopupBarGripper(pDC, x, y, cx, cy, bExpanded);
|
|
}
|
|
|
|
void CXTPVisualStudio2010Theme::DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition)
|
|
{
|
|
if (barPosition == xtpBarPopup && barType == xtpBarTypePopup && bSelected && !bChecked && !bPressed)
|
|
{
|
|
if (m_bLunaTheme)
|
|
{
|
|
XTPDrawHelpers()->GradientFill(pDC, CRect(rc.left + 1, rc.top + 1, rc.right - 1, rc.bottom - 1), m_grcLunaSelected, FALSE);
|
|
}
|
|
else
|
|
{
|
|
pDC->FillSolidRect(CRect(rc.left + 1, rc.top + 1, rc.right - 1, rc.bottom - 1), GetXtremeColor(XPCOLOR_HIGHLIGHT));
|
|
}
|
|
|
|
COLORREF clrBorder = GetXtremeColor(XPCOLOR_HIGHLIGHT_BORDER);
|
|
CXTPVisualStudio2008Theme::AlphaBorder(pDC, rc, clrBorder);
|
|
|
|
return;
|
|
}
|
|
|
|
if (barType == xtpBarTypeMenuBar && bSelected && !bChecked && !bPressed && bEnabled && !bPopuped)
|
|
{
|
|
COLORREF clrBorder = GetXtremeColor(XPCOLOR_HIGHLIGHT_BORDER);
|
|
CXTPVisualStudio2008Theme::AlphaBorder(pDC, rc, clrBorder);
|
|
rc.DeflateRect(1, 1);
|
|
ExcludeCorners(pDC, rc);
|
|
|
|
if (m_bLunaTheme) XTPDrawHelpers()->GradientFill(pDC, rc, m_grcLunaSelected, FALSE);
|
|
else pDC->FillSolidRect(rc, GetXtremeColor(XPCOLOR_HIGHLIGHT));
|
|
|
|
return;
|
|
}
|
|
|
|
CXTPOffice2003Theme::DrawRectangle(pDC, rc, bSelected, bPressed, bEnabled, bChecked, bPopuped, barType, barPosition);
|
|
}
|
|
|
|
COLORREF CXTPVisualStudio2010Theme::GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition)
|
|
{
|
|
return CXTPOffice2003Theme::GetRectangleTextColor(bSelected, bPressed, bEnabled, bChecked, bPopuped, barType, barPosition);
|
|
}
|
|
|
|
CSize CXTPVisualStudio2010Theme::DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw)
|
|
{
|
|
if (bDraw && pBar->GetType() == xtpBarTypePopup)
|
|
{
|
|
CRect rc;
|
|
pBar->GetClientRect(&rc);
|
|
CRect rcControl = pControl->GetRect();
|
|
CRect rcRow = pControl->GetRowRect();
|
|
|
|
if (!pControl->GetWrap())
|
|
HorizontalLine(pDC, rcControl.left - 1 + GetPopupBarGripperWidth(pBar) + m_nPopupBarTextPadding,
|
|
rcControl.top - 2, rcControl.right + 1, m_clrMenuSeparator);
|
|
else
|
|
VerticalLine(pDC, rcControl.left - 2, rcRow.top - 1, rcRow.bottom + 1, m_clrMenuSeparator);
|
|
|
|
return 0;
|
|
|
|
}
|
|
return CXTPOffice2003Theme::DrawCommandBarSeparator(pDC, pBar, pControl, bDraw);
|
|
}
|
|
|
|
void CXTPVisualStudio2010Theme::FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar)
|
|
{
|
|
CXTPClientRect rc((CWnd*)pBar);
|
|
|
|
if (pBar->GetType() == xtpBarTypeMenuBar && pBar->GetPosition() != xtpBarFloating)
|
|
{
|
|
if (m_bLunaTheme)
|
|
XTPDrawHelpers()->GradientFill(pDC, rc, RGB(200,209,224), RGB(174,185,205), IsVerticalPosition(pBar->GetPosition()));
|
|
else
|
|
pDC->FillSolidRect(rc, m_clrDockBar);
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarTop || pBar->GetPosition() == xtpBarBottom)
|
|
{
|
|
COLORREF clr3DFace = GetXtremeColor(COLOR_3DFACE);
|
|
pDC->FillSolidRect(rc, clr3DFace);
|
|
|
|
CWnd* pWnd = pBar->GetParent();
|
|
if (pWnd)
|
|
{
|
|
CXTPWindowRect rcFill((CWnd*)pWnd);
|
|
pBar->ScreenToClient(rcFill);
|
|
rcFill.right = rcFill.left + max(rcFill.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2);
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrDockBar, TRUE, rc);
|
|
}
|
|
|
|
CRect rcFill = rc;
|
|
rcFill.top += 1;
|
|
rcFill.left += 2;
|
|
|
|
pDC->FillSolidRect(rcFill.left + 1, rcFill.top, rcFill.Width() - 2, 1, m_clrCommandBar.clrDark);
|
|
pDC->FillSolidRect(rcFill.left, rcFill.top + 1, rcFill.Width(), rcFill.Height() - 2, m_clrCommandBar.clrDark);
|
|
pDC->FillSolidRect(rcFill.left + 1, rcFill.bottom - 1, rcFill.Width() - 2, 1, m_clrCommandBar.clrDark);
|
|
|
|
CXTPVisualStudio2008Theme::AlphaBorder(pDC, rcFill, m_clrToolbarShadow);
|
|
}
|
|
else if (pBar->GetPosition() == xtpBarLeft || pBar->GetPosition() == xtpBarRight)
|
|
{
|
|
COLORREF clr3DFace = GetXtremeColor(COLOR_3DFACE);
|
|
pDC->FillSolidRect(rc, clr3DFace);
|
|
|
|
CWnd* pWnd = pBar->GetParent();
|
|
if (pWnd)
|
|
{
|
|
if (pWnd->GetStyle() & CBRS_RIGHT)
|
|
pDC->FillSolidRect(rc, m_clrDockBar.clrDark);
|
|
else
|
|
{
|
|
CXTPWindowRect rcFill((CWnd*)pWnd);
|
|
pBar->ScreenToClient(rcFill);
|
|
rcFill.right = rcFill.left + max(rcFill.Width(), GetSystemMetrics(SM_CXFULLSCREEN) / 2);
|
|
XTPDrawHelpers()->GradientFill(pDC, rcFill, m_clrDockBar, TRUE, rc);
|
|
}
|
|
}
|
|
|
|
CRect rcFill = rc;
|
|
rcFill.top += 2;
|
|
rcFill.left += 1;
|
|
|
|
pDC->FillSolidRect(rcFill.left + 1, rcFill.top, rcFill.Width() - 2, 1, m_clrCommandBar.clrDark);
|
|
pDC->FillSolidRect(rcFill.left, rcFill.top + 1, rcFill.Width(), rcFill.Height() - 2, m_clrCommandBar.clrDark);
|
|
pDC->FillSolidRect(rcFill.left + 1, rcFill.bottom - 1, rcFill.Width() - 2, 1, m_clrCommandBar.clrDark);
|
|
|
|
CXTPVisualStudio2008Theme::AlphaBorder(pDC, rcFill, m_clrToolbarShadow);
|
|
}
|
|
else
|
|
{
|
|
CXTPOffice2003Theme::FillCommandBarEntry(pDC, pBar);
|
|
}
|
|
}
|
|
|
|
void CXTPVisualStudio2010Theme::FillStatusBar(CDC* pDC, CXTPStatusBar* pBar)
|
|
{
|
|
pDC->FillSolidRect(CXTPClientRect(pBar), RGB(41, 57, 85));
|
|
}
|
|
|
|
void CXTPVisualStudio2010Theme::DrawStatusBarGripper(CDC* pDC, CRect rcClient)
|
|
{
|
|
if (m_bThemedStatusBar && m_themeStatusBar->IsAppThemed())
|
|
{
|
|
for (int y = 0; y <= 3; y++)
|
|
{
|
|
for (int x = 0; x <= 3 - y; x++)
|
|
{
|
|
int left = rcClient.right - x * 3 - 4;
|
|
int top = rcClient.bottom - y * 3 - 4;
|
|
|
|
pDC->SetPixel(left, top, RGB(248, 249, 250));
|
|
pDC->SetPixel(left + 1, top, RGB(198, 206, 221));
|
|
pDC->SetPixel(left, top + 1, RGB(227, 231, 238));
|
|
pDC->SetPixel(left + 1, top + 1, RGB(170, 183, 205));
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
CXTPOffice2003Theme::DrawStatusBarGripper(pDC, rcClient);
|
|
|
|
}
|
|
}
|