GalleryItems.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:20k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // GalleryItems.cpp: implementation of the CGalleryItemStyleSet class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "GalleryItems.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // CGalleryItemStyleSet
  13. CGalleryItemStyleSet::CGalleryItemStyleSet(int nId, LPCTSTR lpszCaption)
  14. {
  15. m_strCaption = lpszCaption;
  16. m_nId = nId;
  17. }
  18. CGalleryItemStyleSet::~CGalleryItemStyleSet()
  19. {
  20. }
  21. void CGalleryItemStyleSet::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
  22. {
  23. CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
  24. COLORREF clrTextColor = pPaintManager->GetRectangleTextColor(bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
  25. pDC->SetTextColor(clrTextColor);
  26. CXTPFontDC font(pDC, pPaintManager->GetRegularFont());
  27. int cx = pPaintManager->GetPopupBarGripperWidth(pGallery->GetParent()) - 1;
  28. pPaintManager->DrawPopupBarGripper(pDC, rcItem.left - 1, rcItem.top, cx + 1, rcItem.Height());
  29. pPaintManager->DrawRectangle(pDC, rcItem, bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
  30. if (bChecked && bEnabled)
  31. {
  32. CRect rcCheck(rcItem.left + 1, rcItem.top + 1, rcItem.left + cx - 2, rcItem.bottom - 1);
  33. pPaintManager->DrawRectangle(pDC, rcCheck, bSelected, bPressed, bEnabled, TRUE, FALSE, xtpBarTypePopup, xtpBarPopup);
  34. pPaintManager->DrawCheckMark(pDC, rcCheck);
  35. }
  36. CRect rcText(rcItem);
  37. rcText.left += pPaintManager->m_nPopupBarTextPadding + cx;
  38. pDC->DrawText(m_strCaption, rcText, DT_END_ELLIPSIS|DT_SINGLELINE|DT_VCENTER);
  39. }
  40. //////////////////////////////////////////////////////////////////////////
  41. // CGalleryItemThemeColors
  42. CGalleryItemThemeColors::CGalleryItemThemeColors(int nId, LPCTSTR lpszCaption)
  43. {
  44. m_strToolTip = m_strCaption = lpszCaption;
  45. m_nId = nId;
  46. }
  47. const struct COLORPREVIEWREC
  48. {
  49. COLORREF clr;
  50. LPCTSTR lpszCaption;
  51. };
  52. const struct COLORPREVIEW
  53. {
  54. COLORPREVIEWREC rec[10];
  55. themeColors[] = 
  56. {
  57. {//Office
  58. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  59. 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"),
  60. 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")
  61. },
  62. {//Grayscale
  63. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  64. RGB(248, 248, 248), NULL, RGB(0, 0, 0), NULL, RGB(221, 221, 221), NULL, RGB(178, 178, 178), NULL, 
  65. RGB(150, 150, 150), NULL,  RGB(128, 128, 128), NULL, RGB(95, 95, 95), NULL,  RGB(77, 77, 77), NULL
  66. },
  67. {//Apex
  68. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  69. RGB(201, 194, 209), NULL, RGB(105, 103, 109), NULL, RGB(206, 185, 102), NULL, RGB(156, 176, 132), NULL, 
  70. RGB(107, 177, 201), NULL, RGB(101, 133, 207),NULL,  RGB(126, 107, 201), NULL, RGB(163, 121, 187), NULL
  71. },
  72. {//Aspect
  73. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  74. RGB(227, 222, 209), NULL, RGB(50, 50, 50), NULL, RGB(240, 127, 9), NULL, RGB(159, 41, 54), NULL,
  75. RGB(27, 88, 124), NULL, RGB(78, 133, 66), NULL, RGB(96, 72, 120), NULL, RGB(193, 152, 89), NULL
  76. },
  77. {//Civic
  78. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  79. RGB(197, 209, 215), NULL, RGB(100, 107, 134), NULL, RGB(209, 99, 73), NULL, RGB(204, 180, 0), NULL,
  80. RGB(140, 173, 174), NULL, RGB(140, 123, 112), NULL, RGB(143, 176, 140), NULL, RGB(209, 144, 73)
  81. },
  82. {//Concourse
  83. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  84. RGB(222, 245, 250), NULL, RGB(70, 70, 70), NULL, RGB(045, 162, 191), NULL, RGB(218, 31, 40), NULL,
  85. RGB(235, 100, 27), NULL, RGB(57, 99, 157), NULL, RGB(71, 75, 120), NULL, RGB(125, 60, 74)
  86. },
  87. {//Currency
  88. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  89. RGB(209, 225, 227), NULL, RGB(74, 96, 110), NULL, RGB(121, 181, 176), NULL, RGB(180, 188, 76), NULL,
  90. RGB(183, 120, 81), NULL, RGB(119, 106, 91), NULL, RGB(182, 173, 118), NULL, RGB(149, 174, 177)
  91. },
  92. {//Deluxe
  93. RGB(255, 255, 255), _T("White"), RGB(0, 0, 0), _T("Black"),
  94. RGB(255, 249, 229), NULL, RGB(48, 53, 110), NULL, RGB(204, 71, 87), NULL, RGB(255, 111, 97), NULL,
  95. RGB(255, 149, 62), NULL, RGB(248, 189, 82), NULL, RGB(70, 166, 189), NULL, RGB(84, 136, 188)
  96. }
  97. };
  98. void CGalleryItemThemeColors::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
  99. {
  100. CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
  101. COLORREF clrTextColor = pPaintManager->GetRectangleTextColor(bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
  102. pDC->SetTextColor(clrTextColor);
  103. CXTPFontDC font(pDC, pPaintManager->GetRegularFont());
  104. pPaintManager->DrawRectangle(pDC, rcItem, bSelected, bPressed, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
  105. CRect rcPreview(rcItem.left + 2, rcItem.top + 2, rcItem.left + 2 + 108, rcItem.bottom - 2);
  106. if (bChecked && bEnabled)
  107. {
  108. pPaintManager->DrawRectangle(pDC, rcPreview, bSelected, bPressed, bEnabled, TRUE, FALSE, xtpBarTypeNormal, xtpBarPopup);
  109. }
  110. CRect rcColor(rcPreview);
  111. rcColor.DeflateRect(2, 2);
  112. rcColor.right = rcColor.left + rcColor.Height();
  113. const COLORPREVIEW& clrPreview = themeColors[GetID()];
  114. int nOrder[] = {3, 2, 4, 5, 6, 7, 8, 9};
  115. for (int i = 0; i < _countof(nOrder); i++)
  116. {
  117. pDC->FillSolidRect(rcColor, clrPreview.rec[nOrder[i]].clr);
  118. pDC->Draw3dRect(rcColor, RGB(134, 134, 134), RGB(134, 134, 134));
  119. rcColor.OffsetRect(rcColor.Width() + 1, 0);
  120. }
  121. CRect rcText(rcItem);
  122. rcText.left += 120;
  123. pDC->DrawText(m_strCaption, rcText, DT_END_ELLIPSIS|DT_SINGLELINE|DT_VCENTER);
  124. }
  125. //////////////////////////////////////////////////////////////////////////
  126. // CGalleryItemThemeFonts
  127. const struct FONTPREVIEW
  128. {
  129. LPCTSTR lpszBody;
  130. LPCTSTR lpszHeadings;
  131. themeFonts[] = 
  132. {
  133. {//Office
  134. _T("Cambria"), _T("Calibri")
  135. },
  136. {//Apex
  137. _T("Arial"), _T("Times New Roman")
  138. },
  139. {//Aspect
  140. _T("Verdana"), _T("Verdana")
  141. },
  142. {//Civic
  143. _T("Georgia"), _T("Georgia")
  144. },
  145. {//Concourse
  146. _T("Eras Medium ITC"), _T("Eras Medium ITC")
  147. },
  148. {//Currency
  149. _T("Constantia"), _T("Constantia")
  150. },
  151. {//Deluxe
  152. _T("Corbel"), _T("Corbel")
  153. },
  154. {//Equity
  155. _T("Franklin Gothic Book"), _T("Perpetua")
  156. }
  157. };
  158. CGalleryItemThemeFonts::CGalleryItemThemeFonts(int nId, LPCTSTR lpszCaption)
  159. {
  160. m_strToolTip = m_strCaption = lpszCaption;
  161. m_nId = nId;
  162. }
  163. void CGalleryItemThemeFonts::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
  164. {
  165. CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
  166. pPaintManager->DrawRectangle(pDC, rcItem, bSelected, bPressed, bEnabled, bChecked, FALSE, xtpBarTypeNormal, xtpBarPopup);
  167. CRect rcPreview(rcItem.left + 6, rcItem.top + 6, rcItem.left + 6 + 43, rcItem.bottom - 6);
  168. pDC->Draw3dRect(rcPreview, RGB(97, 108, 129), RGB(97, 108, 129));
  169. rcPreview.DeflateRect(1, 1);
  170. pDC->Draw3dRect(rcPreview, RGB(255, 255, 255), RGB(255, 255, 255));
  171. rcPreview.DeflateRect(1, 1);
  172. pDC->Draw3dRect(rcPreview, RGB(195, 200, 213), RGB(195, 200, 213));
  173. rcPreview.DeflateRect(1, 1);
  174. pDC->FillSolidRect(rcPreview, RGB(243, 243, 244));
  175. pDC->SetTextColor(0);
  176. const FONTPREVIEW& fontPreview = themeFonts[GetID()];
  177. CFont fntBody;
  178. fntBody.CreatePointFont(130, fontPreview.lpszBody);
  179. CFont fntHeadings;
  180. fntHeadings.CreatePointFont(120, fontPreview.lpszHeadings);
  181. CRect rcFontPreviewBody(rcPreview.left + 5, rcPreview.top, rcPreview.right, rcPreview.bottom - 5);
  182. CXTPFontDC fnt(pDC, &fntBody);
  183. pDC->DrawText(_T("A"), rcFontPreviewBody, DT_BOTTOM | DT_SINGLELINE);
  184. CRect rcFontPreviewBodyText(rcItem.left + 70, rcItem.top + 17, rcItem.right, rcItem.bottom);
  185. pDC->DrawText(fontPreview.lpszBody, rcFontPreviewBodyText, DT_TOP | DT_SINGLELINE);
  186. CRect rcFontPreviewHeadings(rcPreview.left + 20, rcPreview.top, rcPreview.right, rcPreview.bottom - 5);
  187. fnt.SetFont(&fntHeadings);
  188. pDC->DrawText(_T("a"), rcFontPreviewHeadings, DT_BOTTOM | DT_SINGLELINE);
  189. CRect rcFontPreviewHeadingsText(rcItem.left + 70, rcItem.top + 37, rcItem.right, rcItem.bottom);
  190. pDC->DrawText(fontPreview.lpszHeadings, rcFontPreviewHeadingsText, DT_TOP | DT_SINGLELINE);
  191. }
  192. //////////////////////////////////////////////////////////////////////////
  193. // CGalleryItemTable
  194. CGalleryItemTable::CGalleryItemTable(int nId)
  195. {
  196. m_nId = nId;
  197. }
  198. void CGalleryItemTable::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL /*bEnabled*/, BOOL bSelected, BOOL /*bPressed*/, BOOL /*bChecked*/)
  199. {
  200. int nItem = pGallery->IsItemSelected() ? pGallery->GetSelectedItem() : -1;
  201. CRect rcItems = pGallery->GetItemsRect();
  202. CSize szItems = pGallery->GetItems()->GetItemSize();
  203. int nItemsPerRow = rcItems.Width() / szItems.cx;
  204. int nColumns = nItem < 1 ? 0 : (nItem - 1) % nItemsPerRow + 1;
  205. int nRows = nItem < 1 ? 0 : (nItem - 1) / nItemsPerRow + 1;
  206. int nColumnItem = (GetIndex() - 1) % nItemsPerRow + 1;
  207. int nRowItem = (GetIndex() - 1) / nItemsPerRow + 1;
  208. bSelected = nRowItem <= nRows && nColumnItem <= nColumns;
  209. rcItem.DeflateRect(0, 0, 1, 1);
  210. if (bSelected)
  211. {
  212. pDC->Draw3dRect(rcItem, RGB(239, 72, 16), RGB(239, 72, 16));
  213. rcItem.DeflateRect(1, 1);
  214. pDC->Draw3dRect(rcItem, RGB(255, 226, 148), RGB(255, 226, 148));
  215. }
  216. else
  217. {
  218. rcItem.DeflateRect(1, 1);
  219. pDC->Draw3dRect(rcItem, 0, 0);
  220. }
  221. rcItem.DeflateRect(1, 1);
  222. pDC->FillSolidRect(rcItem, GetXtremeColor(COLOR_WINDOW));
  223. }
  224. CGalleryItemTableLabel::CGalleryItemTableLabel()
  225. {
  226. m_bLabel = TRUE;
  227. }
  228. void CGalleryItemTableLabel::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
  229. {
  230. int nItem = pGallery->IsItemSelected() ? pGallery->GetSelectedItem() : -1;
  231. CRect rcItems = pGallery->GetItemsRect();
  232. CSize szItems = pGallery->GetItems()->GetItemSize();
  233. int nItemsPerRow = rcItems.Width() / szItems.cx;
  234. int nColumns = nItem < 1 ? 0 : (nItem - 1) % nItemsPerRow + 1;
  235. int nRows = nItem < 1 ? 0 : (nItem - 1) / nItemsPerRow + 1;
  236. if (nItem < 1)
  237. m_strCaption = _T("Insert Table");
  238. else
  239. m_strCaption.Format(_T("%ix%i Table"), nRows, nColumns);
  240. CXTPControlGalleryItem::Draw(pDC, pGallery, rcItem, bEnabled, bSelected, bPressed, bChecked);
  241. }
  242. //////////////////////////////////////////////////////////////////////////
  243. //
  244. CGalleryItemFontColor::CGalleryItemFontColor(COLORREF clr, int nToolTip)
  245. {
  246. m_nId = clr;
  247. m_strToolTip.LoadString(nToolTip);
  248. m_bTopMargin = m_bBottomMargin = TRUE;
  249. }
  250. CGalleryItemFontColor::CGalleryItemFontColor(COLORREF clr, LPCTSTR lpszCaption, BOOL bTopMargin /*= TRUE*/, BOOL bBotttomMargin /*= TRUE*/)
  251. {
  252. m_nId = clr;
  253. m_strCaption = m_strToolTip = lpszCaption;
  254. m_bTopMargin = bTopMargin;
  255. m_bBottomMargin = bBotttomMargin;
  256. SetSize(CSize(17, 13 + (bTopMargin ? 2 : 0) + (bBotttomMargin ? 2 : 0)));
  257. }
  258. void CGalleryItemFontColor::Draw(CDC* pDC, CXTPControlGallery* /*pGallery*/, CRect rcItem, BOOL /*bEnabled*/, BOOL bSelected, BOOL /*bPressed*/, BOOL bChecked)
  259. {
  260. rcItem.DeflateRect(2, 0);
  261. if (m_bTopMargin)
  262. rcItem.DeflateRect(0, 2, 0, 0);
  263. if (m_bBottomMargin)
  264. rcItem.DeflateRect(0, 0, 0, 2);
  265. pDC->FillSolidRect(rcItem, (COLORREF)m_nId);
  266. if (bSelected || bChecked)
  267. {
  268. if (bSelected)
  269. pDC->Draw3dRect(rcItem, RGB(242, 148, 54), RGB(242, 148, 54));
  270. else
  271. pDC->Draw3dRect(rcItem, RGB(239, 72, 16), RGB(239, 72, 16));
  272. rcItem.DeflateRect(1, 1);
  273. pDC->Draw3dRect(rcItem, RGB(255, 226, 148), RGB(255, 226, 148));
  274. }
  275. else
  276. {
  277. if (m_bTopMargin) pDC->FillSolidRect(rcItem.left, rcItem.top, rcItem.Width(), 1, RGB(197, 197, 197));
  278. pDC->FillSolidRect(rcItem.left, rcItem.top, 1, rcItem.Height(), RGB(197, 197, 197));
  279. pDC->FillSolidRect(rcItem.right - 1, rcItem.top, 1, rcItem.Height(), RGB(197, 197, 197));
  280. if (m_bBottomMargin) pDC->FillSolidRect(rcItem.left, rcItem.bottom - 1, rcItem.Width(), 1, RGB(197, 197, 197));
  281. }
  282. }
  283. void CGalleryItemFontColor::AddStandardBackColors(CXTPControlGalleryItems* pItems)
  284. {
  285. pItems->AddItem(new CGalleryItemFontColor(RGB(0xFF, 0xFF, 0x00), XTP_IDS_CLR_YELLOW));
  286. pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0xFF, 0x00), XTP_IDS_CLR_BRIGHT_GREEN));
  287. pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0xFF, 0xFF), XTP_IDS_CLR_TURQUOISE));
  288. pItems->AddItem(new CGalleryItemFontColor(RGB(0xFF, 0x00, 0xFF), XTP_IDS_CLR_PINK));
  289. pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x00, 0xFF), XTP_IDS_CLR_BLUE));
  290. pItems->AddItem(new CGalleryItemFontColor(RGB(0xFF, 0x00, 0x00), XTP_IDS_CLR_RED));
  291. pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x00, 0x80), XTP_IDS_CLR_DARK_BLUE));
  292. pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x80, 0x80), XTP_IDS_CLR_TEAL));
  293. pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x80, 0x00), XTP_IDS_CLR_GREEN));
  294. pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x00, 0x80), XTP_IDS_CLR_VIOLET));
  295. pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x00, 0x00), XTP_IDS_CLR_DARK_RED));
  296. pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x80, 0x00), XTP_IDS_CLR_DARK_YELLOW));
  297. pItems->AddItem(new CGalleryItemFontColor(RGB(0x80, 0x80, 0x80), XTP_IDS_CLR_GRAY50));
  298. pItems->AddItem(new CGalleryItemFontColor(RGB(0xC0, 0xC0, 0xC0), XTP_IDS_CLR_GRAY25));
  299. pItems->AddItem(new CGalleryItemFontColor(RGB(0x00, 0x00, 0x00), XTP_IDS_CLR_BLACK));
  300. }
  301. void CGalleryItemFontColor::AddStandardColors(CXTPControlGalleryItems* pItems)
  302. {
  303. pItems->AddItem(new CGalleryItemFontColor(RGB(192, 0, 0), _T("Dark Red")));
  304. pItems->AddItem(new CGalleryItemFontColor(RGB(255, 0, 0), _T("Red")));
  305. pItems->AddItem(new CGalleryItemFontColor(RGB(255, 192, 0), _T("Orange")));
  306. pItems->AddItem(new CGalleryItemFontColor(RGB(255, 255, 0), _T("Yellow")));
  307. pItems->AddItem(new CGalleryItemFontColor(RGB(146, 208, 80), _T("Light Green")));
  308. pItems->AddItem(new CGalleryItemFontColor(RGB(0, 176, 80), _T("Green")));
  309. pItems->AddItem(new CGalleryItemFontColor(RGB(0, 176, 240), _T("Light Blue")));
  310. pItems->AddItem(new CGalleryItemFontColor(RGB(0, 112, 192), _T("Blue")));
  311. pItems->AddItem(new CGalleryItemFontColor(RGB(0, 32, 96), _T("Dark Blue")));
  312. pItems->AddItem(new CGalleryItemFontColor(RGB(112, 48, 160), _T("Purple")));
  313. }
  314. COLORREF LightColor(COLORREF clr, int nTint)
  315. {
  316. double h, s, l;
  317. CXTPDrawHelpers::RGBtoHSL(clr, h, s, l);
  318. clr = CXTPDrawHelpers::HSLtoRGB(h, s, l + (1.0 - l) * (double)nTint / 100.0);
  319. return clr;
  320. }
  321. COLORREF DarkColor(COLORREF clr, int nShade)
  322. {
  323. double h, s, l;
  324. CXTPDrawHelpers::RGBtoHSL(clr, h, s, l);
  325. clr = CXTPDrawHelpers::HSLtoRGB(h, s, l * (1 + (double)nShade / 100.0));
  326. return clr;
  327. }
  328. int nMatrix[6][10] = 
  329. {
  330. {  0,   0, 0, 0, 0, 0, 0, 0, 0, 0 },
  331. { -5, +50, -10, +80, +80, +80, +80, +80, +80, +80},
  332. { -15, +35, -25, +60, +60, +60, +60, +60, +60, +60},
  333. { -25, +25, -50, +40, +40, +40, +40, +40, +40, +40},
  334. { -35, +15, -75, -25, -25, -25, -25, -25, -25, -25},
  335. { -50, +5, -90, -50, -50, -50, -50, -50, -50, -50},
  336. };
  337. LPCTSTR strMatrixTip[10] = 
  338. {
  339. _T("Background 1"), _T("Text 1"), _T("Background 2"), _T("Text 2"), 
  340. _T("Accent 1"), _T("Accent 2"), _T("Accent 3"), _T("Accent 4"), _T("Accent 5"), _T("Accent 6")
  341. };
  342. COLORREF TranslateColor(COLORREF clr, int nTransalte)
  343. {
  344. return nTransalte == 0 ? clr : nTransalte > 0 ? LightColor(clr, nTransalte) : DarkColor(clr, nTransalte);
  345. }
  346. CString GetColorTip(LPCTSTR lpszToolTip, LPCTSTR lpszAccent, int nTransalte)
  347. {
  348. CString strTranslate;
  349. strTranslate.Format(_T(", %s %i%%"), nTransalte > 0 ? _T("Lighter") : _T("Darker"), abs(nTransalte));
  350. return (lpszToolTip ? CString(lpszToolTip) + _T(", ") : CString(_T(""))) + CString(lpszAccent) + (nTransalte != 0 ? strTranslate : _T(""));
  351. }
  352. void CGalleryItemFontColor::AddThemeColors(CXTPControlGalleryItems* pItems, int nTheme)
  353. {
  354. const COLORPREVIEW& clrPreview = themeColors[nTheme];
  355. for (int j = 0; j < 6; j++)
  356. {
  357. BOOL bTopMargin = j < 2;
  358. BOOL bBottomMargin = j == 0 || j == 5;
  359. for (int i = 0; i < 10; i++)
  360. {
  361. int nTranslate = nMatrix[j][i];
  362. COLORREF clr = TranslateColor(clrPreview.rec[i].clr, nTranslate);
  363. CString strToolTip = GetColorTip(clrPreview.rec[i].lpszCaption, strMatrixTip[i], nTranslate);
  364. pItems->AddItem(new CGalleryItemFontColor(clr, strToolTip, bTopMargin, bBottomMargin));
  365. }
  366. }
  367. }
  368. //////////////////////////////////////////////////////////////////////////
  369. // CGalleryItemFontFace
  370. CGalleryItemFontFace::CGalleryItemFontFace(LPCTSTR lpszCaption)
  371. {
  372. m_strCaption = lpszCaption;
  373. }
  374. void CGalleryItemFontFace::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL /*bPressed*/, BOOL bChecked)
  375. {
  376. CXTPPaintManager* pPaintManager = pGallery->GetPaintManager();
  377. pPaintManager->DrawRectangle(pDC, rcItem, bSelected, FALSE, bEnabled, bChecked, FALSE, xtpBarTypePopup, xtpBarPopup);
  378. COLORREF clrTextColor = pPaintManager->GetRectangleTextColor(bSelected, FALSE, bEnabled, FALSE, FALSE, xtpBarTypePopup, xtpBarPopup);
  379. pDC->SetTextColor(clrTextColor);
  380. CFont fnt;
  381. fnt.CreatePointFont(150, m_strCaption);
  382. CXTPFontDC font(pDC, &fnt);
  383. CRect rcText(rcItem);
  384. rcText.left += 4;
  385. pDC->DrawText(m_strCaption, rcText, DT_END_ELLIPSIS|DT_SINGLELINE|DT_VCENTER);
  386. }
  387. void CGalleryItemFontFace::AddFontItems(CXTPControlGalleryItems* pItems)
  388. {
  389. pItems->AddLabel(_T("Recently Used Fonts"));
  390. pItems->AddLabel(_T("All Fonts"));
  391. static CXTPControlFontComboBoxList::CFontDescHolder s_fontHolder;
  392. s_fontHolder.EnumFontFamilies();
  393. // now walk through the fonts and remove (charset) from fonts with only one
  394. CArray<CXTPControlFontComboBoxList::CFontDesc*, CXTPControlFontComboBoxList::CFontDesc*>& arrFontDesc = 
  395. s_fontHolder.m_arrayFontDesc;
  396. int nCount = (int)arrFontDesc.GetSize();
  397. int i;
  398. for (i = 0; i < nCount; i++)
  399. {
  400. CXTPControlFontComboBoxList::CFontDesc* pDesc = arrFontDesc[i];
  401. CString str = pDesc->m_strName;
  402. if (str == _T("Arial") || str == _T("Tahoma"))
  403. {
  404. CXTPControlGalleryItem* pItem = pItems->InsertItem(1, new CGalleryItemFontFace(str));
  405. pItem->SetData((DWORD_PTR)pDesc);
  406. }
  407. CXTPControlGalleryItem* pItem = pItems->AddItem(new CGalleryItemFontFace(str));
  408. pItem->SetData((DWORD_PTR)pDesc);
  409. }
  410. }
  411. //////////////////////////////////////////////////////////////////////////
  412. // CControlGalleryUndo
  413. IMPLEMENT_XTP_CONTROL(CControlGalleryUndo,  CXTPControlGallery)
  414. CControlGalleryUndo::CControlGalleryUndo()
  415. {
  416. }
  417. void CControlGalleryUndo::OnSelectedItemChanged()
  418. {
  419. CXTPControlStatic* pInfo = FindInfoControl();
  420. if (pInfo)
  421. {
  422. CString str;
  423. if (!IsItemSelected())
  424. {
  425. str = _T("Cancel");
  426. }
  427. else
  428. {
  429. str.Format(_T("Undo %i Actions"), GetSelectedItem() + 1);
  430. }
  431. pInfo->SetCaption(str);
  432. pInfo->RedrawParent(FALSE);
  433. }
  434. }
  435. CXTPControlStatic* CControlGalleryUndo::FindInfoControl()
  436. {
  437. CXTPCommandBar* pCommandBar = GetParent();
  438. for (int i = 0; i < pCommandBar->GetControls()->GetCount(); i++)
  439. {
  440. CXTPControlStatic* pControlStatic = DYNAMIC_DOWNCAST(CXTPControlStatic, pCommandBar->GetControl(i));
  441. if (pControlStatic && pControlStatic->GetID() == GetID())
  442. {
  443. return pControlStatic;
  444. }
  445. }
  446. return NULL;
  447. }
  448. CGalleryItemUndo::CGalleryItemUndo(LPCTSTR lpszCaption)
  449. {
  450. m_strCaption = lpszCaption;
  451. }
  452. void CGalleryItemUndo::Draw(CDC* pDC, CXTPControlGallery* pGallery, CRect rcItem, BOOL bEnabled, BOOL bSelected, BOOL bPressed, BOOL bChecked)
  453. {
  454. int nItem = pGallery->IsItemSelected() ? pGallery->GetSelectedItem() : -1;
  455. bSelected = GetID() <= nItem;
  456. CXTPControlGalleryItem::Draw(pDC, pGallery, rcItem, bEnabled, bSelected, bPressed, bChecked);
  457. }