588 lines
19 KiB
C++
588 lines
19 KiB
C++
|
|
// GalleryItems.cpp: implementation of the CGalleryItemStyleSet class.
|
||
|
|
//
|
||
|
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
|
||
|
|
#include "stdafx.h"
|
||
|
|
#include "GalleryItems.h"
|
||
|
|
|
||
|
|
#ifdef _DEBUG
|
||
|
|
#undef THIS_FILE
|
||
|
|
static char THIS_FILE[]=__FILE__;
|
||
|
|
#define new DEBUG_NEW
|
||
|
|
#endif
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
// CGalleryItemStyleSet
|
||
|
|
|
||
|
|
CGalleryItemStyleSet::CGalleryItemStyleSet(int nId, LPCTSTR lpszCaption)
|
||
|
|
{
|
||
|
|
m_strCaption = lpszCaption;
|
||
|
|
m_nId = nId;
|
||
|
|
}
|
||
|
|
|
||
|
|
CGalleryItemStyleSet::~CGalleryItemStyleSet()
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CGalleryItemStyleSet::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
|
||
|
|
{
|
||
|
|
CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
|
||
|
|
|
||
|
|
COLORREF clrTextColor = pPaintManager->GetRectangleTextColor(bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
|
||
|
|
|
||
|
|
pDC->SetTextColor(clrTextColor);
|
||
|
|
CXTPFontDC font(pDC, pPaintManager->GetRegularFont());
|
||
|
|
|
||
|
|
int cx = pPaintManager->GetPopupBarGripperWidth(pGallery->GetParent()) - 1;
|
||
|
|
pPaintManager->DrawPopupBarGripper(pDC, rcItem.left - 1, rcItem.top, cx + 1, rcItem.Height());
|
||
|
|
|
||
|
|
pPaintManager->DrawRectangle(pDC, rcItem, bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
|
||
|
|
|
||
|
|
if (bChecked && bEnabled)
|
||
|
|
{
|
||
|
|
CRect rcCheck(rcItem.left + 1, rcItem.top + 1, rcItem.left + cx - 2, rcItem.bottom - 1);
|
||
|
|
pPaintManager->DrawRectangle(pDC, rcCheck, bSelected, bPressed, bEnabled, TRUE, FALSE, xtpBarTypePopup, xtpBarPopup);
|
||
|
|
|
||
|
|
pPaintManager->DrawCheckMark(pDC, rcCheck);
|
||
|
|
}
|
||
|
|
|
||
|
|
CRect rcText(rcItem);
|
||
|
|
rcText.left += pPaintManager->m_nPopupBarTextPadding + cx;
|
||
|
|
|
||
|
|
pDC->DrawText(m_strCaption, rcText, DT_END_ELLIPSIS|DT_SINGLELINE|DT_VCENTER);
|
||
|
|
}
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////////
|
||
|
|
// CGalleryItemThemeColors
|
||
|
|
|
||
|
|
|
||
|
|
CGalleryItemThemeColors::CGalleryItemThemeColors(int nId, LPCTSTR lpszCaption)
|
||
|
|
{
|
||
|
|
m_strToolTip = m_strCaption = lpszCaption;
|
||
|
|
m_nId = nId;
|
||
|
|
}
|
||
|
|
|
||
|
|
const struct COLORPREVIEWREC
|
||
|
|
{
|
||
|
|
COLORREF clr;
|
||
|
|
LPCTSTR lpszCaption;
|
||
|
|
};
|
||
|
|
|
||
|
|
const struct COLORPREVIEW
|
||
|
|
{
|
||
|
|
COLORPREVIEWREC rec[10];
|
||
|
|
}
|
||
|
|
themeColors[] =
|
||
|
|
{
|
||
|
|
{//Office
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(238, 236, 225), _T("Tan"), RGB(31, 73, 125), _T("Dark Blue"), RGB(79, 129, 189), _T("Blue"), RGB(192, 80, 77), _T("Red"),
|
||
|
|
RGB(155, 187, 89), _T("Olive Green"), RGB(128, 100, 162), _T("Purple"), RGB(75, 172, 198), _T("Aqua"), RGB(247, 150, 70), _T("Orange")
|
||
|
|
},
|
||
|
|
{//Grayscale
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(248, 248, 248), NULL, RGB(0, 0, 0), NULL, RGB(221, 221, 221), NULL, RGB(178, 178, 178), NULL,
|
||
|
|
RGB(150, 150, 150), NULL, RGB(128, 128, 128), NULL, RGB(95, 95, 95), NULL, RGB(77, 77, 77), NULL
|
||
|
|
},
|
||
|
|
{//Apex
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(201, 194, 209), NULL, RGB(105, 103, 109), NULL, RGB(206, 185, 102), NULL, RGB(156, 176, 132), NULL,
|
||
|
|
RGB(107, 177, 201), NULL, RGB(101, 133, 207),NULL, RGB(126, 107, 201), NULL, RGB(163, 121, 187), NULL
|
||
|
|
},
|
||
|
|
{//Aspect
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(227, 222, 209), NULL, RGB(50, 50, 50), NULL, RGB(240, 127, 9), NULL, RGB(159, 41, 54), NULL,
|
||
|
|
RGB(27, 88, 124), NULL, RGB(78, 133, 66), NULL, RGB(96, 72, 120), NULL, RGB(193, 152, 89), NULL
|
||
|
|
},
|
||
|
|
{//Civic
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(197, 209, 215), NULL, RGB(100, 107, 134), NULL, RGB(209, 99, 73), NULL, RGB(204, 180, 0), NULL,
|
||
|
|
RGB(140, 173, 174), NULL, RGB(140, 123, 112), NULL, RGB(143, 176, 140), NULL, RGB(209, 144, 73)
|
||
|
|
},
|
||
|
|
{//Concourse
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(222, 245, 250), NULL, RGB(70, 70, 70), NULL, RGB(045, 162, 191), NULL, RGB(218, 31, 40), NULL,
|
||
|
|
RGB(235, 100, 27), NULL, RGB(57, 99, 157), NULL, RGB(71, 75, 120), NULL, RGB(125, 60, 74)
|
||
|
|
},
|
||
|
|
{//Currency
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(209, 225, 227), NULL, RGB(74, 96, 110), NULL, RGB(121, 181, 176), NULL, RGB(180, 188, 76), NULL,
|
||
|
|
RGB(183, 120, 81), NULL, RGB(119, 106, 91), NULL, RGB(182, 173, 118), NULL, RGB(149, 174, 177)
|
||
|
|
},
|
||
|
|
{//Deluxe
|
||
|
|
RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
|
||
|
|
RGB(255, 249, 229), NULL, RGB(48, 53, 110), NULL, RGB(204, 71, 87), NULL, RGB(255, 111, 97), NULL,
|
||
|
|
RGB(255, 149, 62), NULL, RGB(248, 189, 82), NULL, RGB(70, 166, 189), NULL, RGB(84, 136, 188)
|
||
|
|
}
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
void CGalleryItemThemeColors::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
|
||
|
|
{
|
||
|
|
CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
|
||
|
|
|
||
|
|
COLORREF clrTextColor = pPaintManager->GetRectangleTextColor(bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
|
||
|
|
|
||
|
|
pDC->SetTextColor(clrTextColor);
|
||
|
|
CXTPFontDC font(pDC, pPaintManager->GetRegularFont());
|
||
|
|
|
||
|
|
pPaintManager->DrawRectangle(pDC, rcItem, bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
|
||
|
|
|
||
|
|
CRect rcPreview(rcItem.left + 2, rcItem.top + 2, rcItem.left + 2 + 108, rcItem.bottom - 2);
|
||
|
|
|
||
|
|
if (bChecked && bEnabled)
|
||
|
|
{
|
||
|
|
pPaintManager->DrawRectangle(pDC, rcPreview, bSelected, bPressed, bEnabled, TRUE, FALSE, xtpBarTypeNormal, xtpBarPopup);
|
||
|
|
}
|
||
|
|
|
||
|
|
CRect rcColor(rcPreview);
|
||
|
|
rcColor.DeflateRect(2, 2);
|
||
|
|
rcColor.right = rcColor.left + rcColor.Height();
|
||
|
|
|
||
|
|
const COLORPREVIEW& clrPreview = themeColors[GetID()];
|
||
|
|
int nOrder[] = {3, 2, 4, 5, 6, 7, 8, 9};
|
||
|
|
|
||
|
|
for (int i = 0; i < _countof(nOrder); i++)
|
||
|
|
{
|
||
|
|
pDC->FillSolidRect(rcColor, clrPreview.rec[nOrder[i]].clr);
|
||
|
|
pDC->Draw3dRect(rcColor, RGB(134, 134, 134), RGB(134, 134, 134));
|
||
|
|
|
||
|
|
rcColor.OffsetRect(rcColor.Width() + 1, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
CRect rcText(rcItem);
|
||
|
|
rcText.left += 120;
|
||
|
|
pDC->DrawText(m_strCaption, rcText, DT_END_ELLIPSIS|DT_SINGLELINE|DT_VCENTER);
|
||
|
|
}
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////////
|
||
|
|
// CGalleryItemThemeFonts
|
||
|
|
|
||
|
|
|
||
|
|
const struct FONTPREVIEW
|
||
|
|
{
|
||
|
|
LPCTSTR lpszBody;
|
||
|
|
LPCTSTR lpszHeadings;
|
||
|
|
}
|
||
|
|
themeFonts[] =
|
||
|
|
{
|
||
|
|
{//Office
|
||
|
|
_T("Cambria"), _T("Calibri")
|
||
|
|
},
|
||
|
|
{//Apex
|
||
|
|
_T("Arial"), _T("Times New Roman")
|
||
|
|
},
|
||
|
|
{//Aspect
|
||
|
|
_T("Verdana"), _T("Verdana")
|
||
|
|
},
|
||
|
|
{//Civic
|
||
|
|
_T("Georgia"), _T("Georgia")
|
||
|
|
},
|
||
|
|
{//Concourse
|
||
|
|
_T("Eras Medium ITC"), _T("Eras Medium ITC")
|
||
|
|
},
|
||
|
|
{//Currency
|
||
|
|
_T("Constantia"), _T("Constantia")
|
||
|
|
},
|
||
|
|
{//Deluxe
|
||
|
|
_T("Corbel"), _T("Corbel")
|
||
|
|
},
|
||
|
|
{//Equity
|
||
|
|
_T("Franklin Gothic Book"), _T("Perpetua")
|
||
|
|
}
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
CGalleryItemThemeFonts::CGalleryItemThemeFonts(int nId, LPCTSTR lpszCaption)
|
||
|
|
{
|
||
|
|
m_strToolTip = m_strCaption = lpszCaption;
|
||
|
|
m_nId = nId;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CGalleryItemThemeFonts::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
|
||
|
|
{
|
||
|
|
CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
|
||
|
|
pPaintManager->DrawRectangle(pDC, rcItem, bSelected, bPressed, bEnabled, bChecked, FALSE, xtpBarTypeNormal, xtpBarPopup);
|
||
|
|
|
||
|
|
CRect rcPreview(rcItem.left + 6, rcItem.top + 6, rcItem.left + 6 + 43, rcItem.bottom - 6);
|
||
|
|
pDC->Draw3dRect(rcPreview, RGB(97, 108, 129), RGB(97, 108, 129));
|
||
|
|
rcPreview.DeflateRect(1, 1);
|
||
|
|
pDC->Draw3dRect(rcPreview, RGB(255, 255, 255), RGB(255, 255, 255));
|
||
|
|
rcPreview.DeflateRect(1, 1);
|
||
|
|
pDC->Draw3dRect(rcPreview, RGB(195, 200, 213), RGB(195, 200, 213));
|
||
|
|
rcPreview.DeflateRect(1, 1);
|
||
|
|
pDC->FillSolidRect(rcPreview, RGB(243, 243, 244));
|
||
|
|
|
||
|
|
pDC->SetTextColor(0);
|
||
|
|
|
||
|
|
const FONTPREVIEW& fontPreview = themeFonts[GetID()];
|
||
|
|
|
||
|
|
CFont fntBody;
|
||
|
|
fntBody.CreatePointFont(130, fontPreview.lpszBody);
|
||
|
|
|
||
|
|
CFont fntHeadings;
|
||
|
|
fntHeadings.CreatePointFont(120, fontPreview.lpszHeadings);
|
||
|
|
|
||
|
|
CRect rcFontPreviewBody(rcPreview.left + 5, rcPreview.top, rcPreview.right, rcPreview.bottom - 5);
|
||
|
|
CXTPFontDC fnt(pDC, &fntBody);
|
||
|
|
pDC->DrawText(_T("A"), rcFontPreviewBody, DT_BOTTOM | DT_SINGLELINE);
|
||
|
|
|
||
|
|
CRect rcFontPreviewBodyText(rcItem.left + 70, rcItem.top + 17, rcItem.right, rcItem.bottom);
|
||
|
|
pDC->DrawText(fontPreview.lpszBody, rcFontPreviewBodyText, DT_TOP | DT_SINGLELINE);
|
||
|
|
|
||
|
|
CRect rcFontPreviewHeadings(rcPreview.left + 20, rcPreview.top, rcPreview.right, rcPreview.bottom - 5);
|
||
|
|
fnt.SetFont(&fntHeadings);
|
||
|
|
pDC->DrawText(_T("a"), rcFontPreviewHeadings, DT_BOTTOM | DT_SINGLELINE);
|
||
|
|
|
||
|
|
CRect rcFontPreviewHeadingsText(rcItem.left + 70, rcItem.top + 37, rcItem.right, rcItem.bottom);
|
||
|
|
pDC->DrawText(fontPreview.lpszHeadings, rcFontPreviewHeadingsText, DT_TOP | DT_SINGLELINE);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////////
|
||
|
|
// CGalleryItemTable
|
||
|
|
|
||
|
|
|
||
|
|
CGalleryItemTable::CGalleryItemTable(int nId)
|
||
|
|
{
|
||
|
|
m_nId = nId;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CGalleryItemTable::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL /*bEnabled*/, BOOL bSelected, BOOL /*bPressed*/, BOOL /*bChecked*/)
|
||
|
|
{
|
||
|
|
int nItem = pGallery->IsItemSelected() ? pGallery->GetSelectedItem() : -1;
|
||
|
|
CRect rcItems = pGallery->GetItemsRect();
|
||
|
|
CSize szItems = pGallery->GetItems()->GetItemSize();
|
||
|
|
int nItemsPerRow = rcItems.Width() / szItems.cx;
|
||
|
|
|
||
|
|
int nColumns = nItem < 1 ? 0 : (nItem - 1) % nItemsPerRow + 1;
|
||
|
|
int nRows = nItem < 1 ? 0 : (nItem - 1) / nItemsPerRow + 1;
|
||
|
|
|
||
|
|
|
||
|
|
int nColumnItem = (GetIndex() - 1) % nItemsPerRow + 1;
|
||
|
|
int nRowItem = (GetIndex() - 1) / nItemsPerRow + 1;
|
||
|
|
|
||
|
|
bSelected = nRowItem <= nRows && nColumnItem <= nColumns;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
rcItem.DeflateRect(0, 0, 1, 1);
|
||
|
|
|
||
|
|
if (bSelected)
|
||
|
|
{
|
||
|
|
pDC->Draw3dRect(rcItem, RGB(239, 72, 16), RGB(239, 72, 16));
|
||
|
|
rcItem.DeflateRect(1, 1);
|
||
|
|
pDC->Draw3dRect(rcItem, RGB(255, 226, 148), RGB(255, 226, 148));
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
rcItem.DeflateRect(1, 1);
|
||
|
|
pDC->Draw3dRect(rcItem, 0, 0);
|
||
|
|
}
|
||
|
|
rcItem.DeflateRect(1, 1);
|
||
|
|
pDC->FillSolidRect(rcItem, GetXtremeColor(COLOR_WINDOW));
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
CGalleryItemTableLabel::CGalleryItemTableLabel()
|
||
|
|
{
|
||
|
|
m_bLabel = TRUE;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CGalleryItemTableLabel::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
|
||
|
|
{
|
||
|
|
int nItem = pGallery->IsItemSelected() ? pGallery->GetSelectedItem() : -1;
|
||
|
|
CRect rcItems = pGallery->GetItemsRect();
|
||
|
|
CSize szItems = pGallery->GetItems()->GetItemSize();
|
||
|
|
int nItemsPerRow = rcItems.Width() / szItems.cx;
|
||
|
|
|
||
|
|
int nColumns = nItem < 1 ? 0 : (nItem - 1) % nItemsPerRow + 1;
|
||
|
|
int nRows = nItem < 1 ? 0 : (nItem - 1) / nItemsPerRow + 1;
|
||
|
|
|
||
|
|
|
||
|
|
if (nItem < 1)
|
||
|
|
m_strCaption = _T("Insert Table");
|
||
|
|
else
|
||
|
|
m_strCaption.Format(_T("%ix%i Table"), nRows, nColumns);
|
||
|
|
|
||
|
|
CXTPControlGalleryItem::Draw(pDC, pGallery, rcItem, bEnabled, bSelected, bPressed, bChecked);
|
||
|
|
}
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////////
|
||
|
|
//
|
||
|
|
|
||
|
|
CGalleryItemFontColor::CGalleryItemFontColor(COLORREF clr, int nToolTip)
|
||
|
|
{
|
||
|
|
m_nId = clr;
|
||
|
|
m_strToolTip.LoadString(nToolTip);
|
||
|
|
|
||
|
|
m_bTopMargin = m_bBottomMargin = TRUE;
|
||
|
|
}
|
||
|
|
|
||
|
|
CGalleryItemFontColor::CGalleryItemFontColor(COLORREF clr, LPCTSTR lpszCaption, BOOL bTopMargin /*= TRUE*/, BOOL bBotttomMargin /*= TRUE*/)
|
||
|
|
{
|
||
|
|
m_nId = clr;
|
||
|
|
m_strCaption = m_strToolTip = lpszCaption;
|
||
|
|
|
||
|
|
m_bTopMargin = bTopMargin;
|
||
|
|
m_bBottomMargin = bBotttomMargin;
|
||
|
|
|
||
|
|
SetSize(CSize(17, 13 + (bTopMargin ? 2 : 0) + (bBotttomMargin ? 2 : 0)));
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CGalleryItemFontColor::Draw(CDC* pDC, CXTPControlGallery* /*pGallery*/, CRect rcItem, BOOL /*bEnabled*/, BOOL bSelected, BOOL /*bPressed*/, BOOL bChecked)
|
||
|
|
{
|
||
|
|
rcItem.DeflateRect(2, 0);
|
||
|
|
if (m_bTopMargin)
|
||
|
|
rcItem.DeflateRect(0, 2, 0, 0);
|
||
|
|
|
||
|
|
if (m_bBottomMargin)
|
||
|
|
rcItem.DeflateRect(0, 0, 0, 2);
|
||
|
|
|
||
|
|
pDC->FillSolidRect(rcItem, (COLORREF)m_nId);
|
||
|
|
|
||
|
|
if (bSelected || bChecked)
|
||
|
|
{
|
||
|
|
if (bSelected)
|
||
|
|
pDC->Draw3dRect(rcItem, RGB(242, 148, 54), RGB(242, 148, 54));
|
||
|
|
else
|
||
|
|
pDC->Draw3dRect(rcItem, RGB(239, 72, 16), RGB(239, 72, 16));
|
||
|
|
|
||
|
|
rcItem.DeflateRect(1, 1);
|
||
|
|
pDC->Draw3dRect(rcItem, RGB(255, 226, 148), RGB(255, 226, 148));
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if (m_bTopMargin) pDC->FillSolidRect(rcItem.left, rcItem.top, rcItem.Width(), 1, RGB(197, 197, 197));
|
||
|
|
pDC->FillSolidRect(rcItem.left, rcItem.top, 1, rcItem.Height(), RGB(197, 197, 197));
|
||
|
|
pDC->FillSolidRect(rcItem.right - 1, rcItem.top, 1, rcItem.Height(), RGB(197, 197, 197));
|
||
|
|
if (m_bBottomMargin) pDC->FillSolidRect(rcItem.left, rcItem.bottom - 1, rcItem.Width(), 1, RGB(197, 197, 197));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void CGalleryItemFontColor::AddStandardBackColors(CXTPControlGalleryItems* pItems)
|
||
|
|
{
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0xFF, 0xFF, 0x00), XTP_IDS_CLR_YELLOW));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0xFF, 0x00), XTP_IDS_CLR_BRIGHT_GREEN));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0xFF, 0xFF), XTP_IDS_CLR_TURQUOISE));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0xFF, 0x00, 0xFF), XTP_IDS_CLR_PINK));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x00, 0xFF), XTP_IDS_CLR_BLUE));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0xFF, 0x00, 0x00), XTP_IDS_CLR_RED));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x00, 0x80), XTP_IDS_CLR_DARK_BLUE));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x80, 0x80), XTP_IDS_CLR_TEAL));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x80, 0x00), XTP_IDS_CLR_GREEN));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x00, 0x80), XTP_IDS_CLR_VIOLET));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x00, 0x00), XTP_IDS_CLR_DARK_RED));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x80, 0x00), XTP_IDS_CLR_DARK_YELLOW));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x80, 0x80), XTP_IDS_CLR_GRAY50));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0xC0, 0xC0, 0xC0), XTP_IDS_CLR_GRAY25));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x00, 0x00), XTP_IDS_CLR_BLACK));
|
||
|
|
}
|
||
|
|
|
||
|
|
void CGalleryItemFontColor::AddStandardColors(CXTPControlGalleryItems* pItems)
|
||
|
|
{
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(192, 0, 0), _T("Dark Red")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(255, 0, 0), _T("Red")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(255, 192, 0), _T("Orange")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(255, 255, 0), _T("Yellow")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(146, 208, 80), _T("Light Green")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0, 176, 80), _T("Green")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0, 176, 240), _T("Light Blue")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0, 112, 192), _T("Blue")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(0, 32, 96), _T("Dark Blue")));
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(RGB(112, 48, 160), _T("Purple")));
|
||
|
|
}
|
||
|
|
|
||
|
|
COLORREF LightColor(COLORREF clr, int nTint)
|
||
|
|
{
|
||
|
|
double h, s, l;
|
||
|
|
|
||
|
|
CXTPDrawHelpers::RGBtoHSL(clr, h, s, l);
|
||
|
|
clr = CXTPDrawHelpers::HSLtoRGB(h, s, l + (1.0 - l) * (double)nTint / 100.0);
|
||
|
|
|
||
|
|
return clr;
|
||
|
|
}
|
||
|
|
|
||
|
|
COLORREF DarkColor(COLORREF clr, int nShade)
|
||
|
|
{
|
||
|
|
double h, s, l;
|
||
|
|
|
||
|
|
CXTPDrawHelpers::RGBtoHSL(clr, h, s, l);
|
||
|
|
clr = CXTPDrawHelpers::HSLtoRGB(h, s, l * (1 + (double)nShade / 100.0));
|
||
|
|
|
||
|
|
return clr;
|
||
|
|
}
|
||
|
|
|
||
|
|
int nMatrix[6][10] =
|
||
|
|
{
|
||
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||
|
|
{ -5, +50, -10, +80, +80, +80, +80, +80, +80, +80},
|
||
|
|
{ -15, +35, -25, +60, +60, +60, +60, +60, +60, +60},
|
||
|
|
{ -25, +25, -50, +40, +40, +40, +40, +40, +40, +40},
|
||
|
|
{ -35, +15, -75, -25, -25, -25, -25, -25, -25, -25},
|
||
|
|
{ -50, +5, -90, -50, -50, -50, -50, -50, -50, -50},
|
||
|
|
};
|
||
|
|
|
||
|
|
LPCTSTR strMatrixTip[10] =
|
||
|
|
{
|
||
|
|
_T("Background 1"), _T("Text 1"), _T("Background 2"), _T("Text 2"),
|
||
|
|
_T("Accent 1"), _T("Accent 2"), _T("Accent 3"), _T("Accent 4"), _T("Accent 5"), _T("Accent 6")
|
||
|
|
};
|
||
|
|
|
||
|
|
COLORREF TranslateColor(COLORREF clr, int nTransalte)
|
||
|
|
{
|
||
|
|
return nTransalte == 0 ? clr : nTransalte > 0 ? LightColor(clr, nTransalte) : DarkColor(clr, nTransalte);
|
||
|
|
}
|
||
|
|
|
||
|
|
CString GetColorTip(LPCTSTR lpszToolTip, LPCTSTR lpszAccent, int nTransalte)
|
||
|
|
{
|
||
|
|
CString strTranslate;
|
||
|
|
strTranslate.Format(_T(", %s %i%%"), nTransalte > 0 ? _T("Lighter") : _T("Darker"), abs(nTransalte));
|
||
|
|
|
||
|
|
return (lpszToolTip ? CString(lpszToolTip) + _T(", ") : CString(_T(""))) + CString(lpszAccent) + (nTransalte != 0 ? strTranslate : _T(""));
|
||
|
|
}
|
||
|
|
|
||
|
|
void CGalleryItemFontColor::AddThemeColors(CXTPControlGalleryItems* pItems, int nTheme)
|
||
|
|
{
|
||
|
|
const COLORPREVIEW& clrPreview = themeColors[nTheme];
|
||
|
|
|
||
|
|
for (int j = 0; j < 6; j++)
|
||
|
|
{
|
||
|
|
BOOL bTopMargin = j < 2;
|
||
|
|
BOOL bBottomMargin = j == 0 || j == 5;
|
||
|
|
|
||
|
|
for (int i = 0; i < 10; i++)
|
||
|
|
{
|
||
|
|
int nTranslate = nMatrix[j][i];
|
||
|
|
COLORREF clr = TranslateColor(clrPreview.rec[i].clr, nTranslate);
|
||
|
|
CString strToolTip = GetColorTip(clrPreview.rec[i].lpszCaption, strMatrixTip[i], nTranslate);
|
||
|
|
|
||
|
|
pItems->AddItem(new CGalleryItemFontColor(clr, strToolTip, bTopMargin, bBottomMargin));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////////
|
||
|
|
// CGalleryItemFontFace
|
||
|
|
|
||
|
|
CGalleryItemFontFace::CGalleryItemFontFace(LPCTSTR lpszCaption)
|
||
|
|
{
|
||
|
|
m_strCaption = lpszCaption;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CGalleryItemFontFace::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL /*bPressed*/, BOOL bChecked)
|
||
|
|
{
|
||
|
|
CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
|
||
|
|
|
||
|
|
pPaintManager->DrawRectangle(pDC, rcItem, bSelected, FALSE, bEnabled, bChecked, FALSE, xtpBarTypePopup, xtpBarPopup);
|
||
|
|
|
||
|
|
COLORREF clrTextColor = pPaintManager->GetRectangleTextColor(bSelected, FALSE, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
|
||
|
|
pDC->SetTextColor(clrTextColor);
|
||
|
|
|
||
|
|
CFont fnt;
|
||
|
|
fnt.CreatePointFont(150, m_strCaption);
|
||
|
|
|
||
|
|
CXTPFontDC font(pDC, &fnt);
|
||
|
|
|
||
|
|
CRect rcText(rcItem);
|
||
|
|
rcText.left += 4;
|
||
|
|
|
||
|
|
pDC->DrawText(m_strCaption, rcText, DT_END_ELLIPSIS|DT_SINGLELINE|DT_VCENTER);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CGalleryItemFontFace::AddFontItems(CXTPControlGalleryItems* pItems)
|
||
|
|
{
|
||
|
|
pItems->AddLabel(_T("Recently Used Fonts"));
|
||
|
|
|
||
|
|
pItems->AddLabel(_T("All Fonts"));
|
||
|
|
|
||
|
|
static CXTPControlFontComboBoxList::CFontDescHolder s_fontHolder;
|
||
|
|
s_fontHolder.EnumFontFamilies();
|
||
|
|
|
||
|
|
// now walk through the fonts and remove (charset) from fonts with only one
|
||
|
|
CArray<CXTPControlFontComboBoxList::CFontDesc*, CXTPControlFontComboBoxList::CFontDesc*>& arrFontDesc =
|
||
|
|
s_fontHolder.m_arrayFontDesc;
|
||
|
|
|
||
|
|
int nCount = (int)arrFontDesc.GetSize();
|
||
|
|
int i;
|
||
|
|
for (i = 0; i < nCount; i++)
|
||
|
|
{
|
||
|
|
CXTPControlFontComboBoxList::CFontDesc* pDesc = arrFontDesc[i];
|
||
|
|
CString str = pDesc->m_strName;
|
||
|
|
|
||
|
|
if (str == _T("Arial") || str == _T("Tahoma"))
|
||
|
|
{
|
||
|
|
CXTPControlGalleryItem* pItem = pItems->InsertItem(1, new CGalleryItemFontFace(str));
|
||
|
|
pItem->SetData((DWORD_PTR)pDesc);
|
||
|
|
}
|
||
|
|
|
||
|
|
CXTPControlGalleryItem* pItem = pItems->AddItem(new CGalleryItemFontFace(str));
|
||
|
|
pItem->SetData((DWORD_PTR)pDesc);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////////
|
||
|
|
// CControlGalleryUndo
|
||
|
|
|
||
|
|
IMPLEMENT_XTP_CONTROL(CControlGalleryUndo, CXTPControlGallery)
|
||
|
|
|
||
|
|
CControlGalleryUndo::CControlGalleryUndo()
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
void CControlGalleryUndo::OnSelectedItemChanged()
|
||
|
|
{
|
||
|
|
CXTPControlStatic* pInfo = FindInfoControl();
|
||
|
|
if (pInfo)
|
||
|
|
{
|
||
|
|
CString str;
|
||
|
|
if (!IsItemSelected())
|
||
|
|
{
|
||
|
|
str = _T("Cancel");
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
str.Format(_T("Undo %i Actions"), GetSelectedItem() + 1);
|
||
|
|
}
|
||
|
|
pInfo->SetCaption(str);
|
||
|
|
pInfo->RedrawParent(FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
CXTPControlStatic* CControlGalleryUndo::FindInfoControl()
|
||
|
|
{
|
||
|
|
CXTPCommandBar* pCommandBar = GetParent();
|
||
|
|
|
||
|
|
for (int i = 0; i < pCommandBar->GetControls()->GetCount(); i++)
|
||
|
|
{
|
||
|
|
CXTPControlStatic* pControlStatic = DYNAMIC_DOWNCAST(CXTPControlStatic, pCommandBar->GetControl(i));
|
||
|
|
if (pControlStatic && pControlStatic->GetID() == GetID())
|
||
|
|
{
|
||
|
|
return pControlStatic;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
CGalleryItemUndo::CGalleryItemUndo(LPCTSTR lpszCaption)
|
||
|
|
{
|
||
|
|
m_strCaption = lpszCaption;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CGalleryItemUndo::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
|
||
|
|
{
|
||
|
|
int nItem = pGallery->IsItemSelected() ? pGallery->GetSelectedItem() : -1;
|
||
|
|
bSelected = GetID() <= nItem;
|
||
|
|
|
||
|
|
CXTPControlGalleryItem::Draw(pDC, pGallery, rcItem, bEnabled, bSelected, bPressed, bChecked);
|
||
|
|
}
|