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

对话框与窗口

开发平台:

Visual C++

  1. // GnomeTheme.cpp: implementation of the CGnomeTheme class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "GUI_Gnome.h"
  22. #include "GnomeTheme.h"
  23. #ifdef _DEBUG
  24. #undef THIS_FILE
  25. static char THIS_FILE[]=__FILE__;
  26. #define new DEBUG_NEW
  27. #endif
  28. //////////////////////////////////////////////////////////////////////
  29. // Construction/Destruction
  30. //////////////////////////////////////////////////////////////////////
  31. CGnomeTheme::CGnomeTheme()
  32. {
  33. }
  34. CGnomeTheme::~CGnomeTheme()
  35. {
  36. }
  37. void CGnomeTheme::FillStatusBar(CDC* pDC, CXTPStatusBar* pBar)
  38. {
  39. pDC->FillSolidRect(CXTPClientRect(pBar), GNOMECOLOR_3DFACE);
  40. }
  41. void CGnomeTheme::FillDockBar(CDC* pDC, CXTPDockBar* pBar)
  42. {
  43. pDC->FillSolidRect(CXTPClientRect(pBar), GNOMECOLOR_3DFACE);
  44. }
  45. void CGnomeTheme::DrawStatusBarGripper(CDC* pDC, CRect rcClient)
  46. {
  47. int i;
  48. CXTPPenDC penBorder(*pDC, GNOMECOLOR_3DSHADOW);
  49. for (i = 0; i < 4; i++ ) Line(pDC, CPoint(rcClient.Width() - 4 - i * 4, rcClient.Height() - 2),
  50. CPoint(rcClient.Width() - 1, rcClient.Height() - 5 - i * 4));
  51. CXTPPenDC penBorderWhite(*pDC, GNOMECOLOR_BTNHIGHLIGHT);
  52. for (i = 0; i < 4; i++ )
  53. Line(pDC, CPoint(rcClient.Width() - 5 -i * 4, rcClient.Height() - 2), CPoint(rcClient.Width() - 1 , rcClient.Height() - 4 - i * 4 - 2));
  54. }
  55. void CGnomeTheme::DrawStatusBarPane(CDC* pDC, CRect& rc, DWORD dwStyle, CString str)
  56. {
  57. if (!(dwStyle & SBPS_DISABLED))
  58. {
  59. rc.DeflateRect(2, 1);
  60. pDC->SetBkMode(TRANSPARENT);
  61. pDC->DrawText(str, rc, DT_SINGLELINE | DT_VCENTER) ;
  62. }
  63. }
  64. void CGnomeTheme::FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar)
  65. {
  66. CRect rc;
  67. pBar->GetClientRect(&rc);
  68. pDC->FillSolidRect(rc, GNOMECOLOR_3DFACE);
  69. if (pBar->GetPosition() == xtpBarFloating || pBar->GetPosition() == xtpBarPopup)
  70. {
  71. Draw3dRect(pDC, rc, GNOMECOLOR_3DSHADOW, GNOMECOLOR_3DSHADOW);
  72. rc.DeflateRect(1, 1);
  73. Draw3dRect(pDC, rc, GNOMECOLOR_BTNHIGHLIGHT, RGB(206, 206, 206));
  74. }
  75. else
  76. {
  77. Draw3dRect(pDC, rc, RGB(245, 245, 245), RGB(196, 196, 196));
  78. }
  79. }
  80. CSize CGnomeTheme::DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw)
  81. {
  82. CRect rc;
  83. pBar->GetClientRect(&rc);
  84. CXTPPenDC pen(*pDC, 0);
  85. if (pBar->GetPosition() == xtpBarFloating)
  86. {
  87. ASSERT(pDC);
  88. CXTPFontDC font(pDC, GetSmCaptionFont());
  89. CSize sz = pDC->GetTextExtent(_T(" "));
  90. rc.SetRect(3, 3, rc.right - 3, 3 + max(15, sz.cy));
  91. if (pDC && bDraw)
  92. {
  93. pDC->FillSolidRect(rc, RGB(68, 100, 172));
  94. pDC->SetTextColor(GetXtremeColor(COLOR_3DHIGHLIGHT));
  95. pDC->DrawText(pBar->GetTitle(), CRect(5, 3, rc.right - 2* rc.Size().cy, rc.bottom), DT_SINGLELINE | DT_VCENTER );
  96. }
  97. return rc.Size();
  98. }
  99. else if (pBar->GetPosition() == xtpBarRight || pBar->GetPosition() == xtpBarLeft)
  100. {
  101. if (pDC && bDraw)
  102. {
  103. for (int i = 4; i < rc.right - 4; i += 5)
  104. {
  105. //pen.Color(clrGripper[i % 2]); pDC->MoveTo(i, 3); pDC->LineTo(i, 8);
  106. pen.Color(GNOMECOLOR_3DSHADOW); pDC->MoveTo(i, 7); pDC->LineTo(i + 4, 3);
  107. pen.Color(GNOMECOLOR_BTNHIGHLIGHT); pDC->MoveTo(i, 8); pDC->LineTo(i + 4, 4);
  108. }
  109. }
  110. return CSize(0, 8);
  111. }
  112. else if (pBar->GetPosition() == xtpBarTop || pBar->GetPosition() == xtpBarBottom)
  113. {
  114. if (pDC && bDraw)
  115. {
  116. for (int i = 8; i < rc.bottom - 4; i += 5)
  117. {
  118. pen.Color(GNOMECOLOR_BTNHIGHLIGHT); pDC->MoveTo(3, i); pDC->LineTo(7, i - 4);
  119. pen.Color(GNOMECOLOR_3DSHADOW); pDC->MoveTo(3, i-1); pDC->LineTo(7, i - 5);
  120. }
  121. }
  122. return CSize(8, 0);
  123. }
  124. return 0;
  125. }
  126. CSize CGnomeTheme::DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw)
  127. {
  128. if (!bDraw)
  129. {
  130. if (pBar->GetType() == xtpBarTypePopup)
  131. return CSize(8, 8);
  132. return CSize(6, 6);
  133. }
  134. CRect rc;
  135. pBar->GetClientRect(&rc);
  136. CRect rcControl = pControl->GetRect();
  137. CRect rcRow = pControl->GetRowRect();
  138. if (pBar->GetType() == xtpBarTypePopup)
  139. {
  140. Draw3dRect(pDC, CRect(14, rcControl.top - 2 - 2 -1, rc.right - 14, rcControl.top - 0 - 2 -  1), RGB(206, 206, 206), GNOMECOLOR_BTNHIGHLIGHT);
  141. }
  142. else if (pBar->GetPosition() != xtpBarPopup && IsVerticalPosition(pBar->GetPosition()))
  143. {
  144. if (!pControl->GetWrap())
  145. pDC->FillSolidRect(rcRow.left + 4, rcControl.top - 4, rcRow.Width() - 8, 1, RGB(161, 161, 161));
  146. else
  147. pDC->FillSolidRect(rcRow.right + 2, rcRow.top + 4, 1,  rcRow.Height() - 8, RGB(161, 161, 161));
  148. } else
  149. {
  150. if (!pControl->GetWrap())
  151. pDC->FillSolidRect(rcControl.left - 4, rcRow.top + 4, 1, rcRow.Height() - 8, RGB(161, 161, 161));
  152. else
  153. pDC->FillSolidRect(rcRow.left + 4, rcRow.top - 4, rcRow.Width() - 8, 1, RGB(161, 161, 161));
  154. }
  155. return 0;
  156. }
  157. void CGnomeTheme::DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, BOOL /*bToolBar*/, XTPBarPosition /*barPosition = xtpBarPopup*/)
  158. {
  159. if ((bSelected || bPressed || bPopuped) && bEnabled)
  160. pDC->FillSolidRect(rc, RGB(221, 221, 221));
  161. if (!bEnabled)
  162. {
  163. if (IsKeyboardSelected(bSelected)) Draw3dRect(pDC, rc, COLOR_3DSHADOW, COLOR_BTNHILIGHT);
  164. }
  165. else if (bChecked && !bSelected && !bPressed)
  166. {
  167. Draw3dRect(pDC, rc, GNOMECOLOR_3DSHADOW, GNOMECOLOR_BTNHIGHLIGHT);
  168. }
  169. else if (bChecked ||bPopuped || IsKeyboardSelected(bPressed) || (bSelected && bPressed))
  170. {
  171. //Draw3dRect(pDC, rc, COLOR_3DSHADOW, COLOR_BTNHILIGHT);
  172. pDC->FillSolidRect(rc, RGB(204, 204, 204));
  173. pDC->Draw3dRect(rc, RGB(92, 92, 92), RGB(92, 92, 92));
  174. rc.DeflateRect(1, 1);
  175. pDC->Draw3dRect(rc, RGB(204, 204, 204), GNOMECOLOR_BTNHIGHLIGHT);
  176. }
  177. else if (bSelected || bPressed)
  178. {
  179. pDC->FillSolidRect(rc, RGB(245, 245, 245));
  180. pDC->Draw3dRect(rc, RGB(92, 92, 92), RGB(92, 92, 92));
  181. rc.DeflateRect(1, 1);
  182. pDC->Draw3dRect(rc, GNOMECOLOR_BTNHIGHLIGHT, RGB(206, 206, 206));
  183. }
  184. }
  185. void CGnomeTheme::AdjustExcludeRect(CRect& /*rc*/, CXTPControl* /*pControl*/)
  186. {
  187. }