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

对话框与窗口

开发平台:

Visual C++

  1. // XTColorRef.h: interface for the CXTColorRef class.
  2. //
  3. // This file is a part of the XTREME CONTROLS 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. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTCOLORREF_H__)
  22. #define __XTCOLORREF_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //===========================================================================
  28. // Summary:
  29. //     CXTColorRef is a stand alone class. It is used to create a
  30. //     CXTColorRef object. This object is used for manipulation of RGB values.
  31. //===========================================================================
  32. class _XTP_EXT_CLASS CXTColorRef
  33. {
  34. public:
  35. // --------------------------------------------------------------------------
  36. // Summary:
  37. //     Constructs a CXTColorRef object
  38. // Parameters:
  39. //     cr -  An RGB value.
  40. //     r -   Specifies the intensity of the red color component. 'r' can
  41. //           range from 0 to 255. Zero is the minimum color intensity; 255 is
  42. //           the maximum color intensity.
  43. //     g -   Specifies the intensity of the green color component. 'g' can
  44. //           range from 0 to 255. Zero is the minimum color intensity; 255 is
  45. //           the maximum color intensity.
  46. //     b -   Specifies the intensity of the blue color component. 'b' can
  47. //           range from 0 to 255. Zero is the minimum color intensity; 255 is
  48. //           the maximum color intensity.
  49. // --------------------------------------------------------------------------
  50. CXTColorRef();
  51. CXTColorRef(COLORREF cr);         //<combine CXTColorRef::CXTColorRef>
  52. CXTColorRef(int r, int g, int b); //<combine CXTColorRef::CXTColorRef>
  53. //-----------------------------------------------------------------------
  54. // Summary:
  55. //     This assignment operator is used to initialize a CXTColorRef
  56. //     object.
  57. // Parameters:
  58. //     cr - An RGB value.
  59. // Returns:
  60. //     A reference to a valid CXTColorRef object.
  61. //-----------------------------------------------------------------------
  62. CXTColorRef& operator=(COLORREF cr);
  63. //-----------------------------------------------------------------------
  64. // Summary:
  65. //     This assignment operator is used to modify a CXTColorRef object.
  66. // Parameters:
  67. //     val - Specifies the intensity of the color component. 'val'
  68. //           can range from 0 to 255. Zero is the minimum color intensity;
  69. //           255 is the maximum color intensity.
  70. //     cr - An RGB value.
  71. // Returns:
  72. //     A CXTColorRef object.
  73. //-----------------------------------------------------------------------
  74. CXTColorRef operator+(int val) const;
  75. CXTColorRef operator+(COLORREF cr) const; //<combine CXTColorRef::+@int@const>
  76. //-----------------------------------------------------------------------
  77. // Summary:
  78. //     This assignment operator is used to modify a CXTColorRef object.
  79. // Parameters:
  80. //     val - Specifies the intensity of the color component. 'val'
  81. //           can range from 0 to 255. Zero is the minimum color intensity;
  82. //           255 is the maximum color intensity.
  83. //     cr - An RGB value.
  84. // Returns:
  85. //     A CXTColorRef object.
  86. //-----------------------------------------------------------------------
  87. CXTColorRef operator-(int val) const;
  88. CXTColorRef operator-(COLORREF cr) const; //<combine CXTColorRef::-@int@const>
  89. //-----------------------------------------------------------------------
  90. // Summary:
  91. //     This assignment operator is used to modify a CXTColorRef object.
  92. // Parameters:
  93. //     val - Specifies the intensity of the color component. 'val' can
  94. //           range from 0 to 255. Zero is the minimum color intensity;
  95. //           255 is the maximum color intensity.
  96. //     cr - An RGB value.
  97. // Returns:
  98. //     A CXTColorRef object.
  99. //-----------------------------------------------------------------------
  100. CXTColorRef operator*(int val) const;
  101. CXTColorRef operator*(COLORREF cr) const; //<combine CXTColorRef::*@int@const>
  102. //-----------------------------------------------------------------------
  103. // Summary:
  104. //     This assignment operator is used to modify a CXTColorRef object.
  105. // Returns:
  106. //     A CXTColorRef object.
  107. // Parameters:
  108. //     val - Specifies the intensity of the color component. 'val' can
  109. //           range from 0 to 255. Zero is the minimum color intensity;
  110. //           255 is the maximum color intensity.
  111. //     cr - An RGB value.
  112. //-----------------------------------------------------------------------
  113. CXTColorRef operator/(int val) const;
  114. CXTColorRef operator/(COLORREF cr) const; //<combine CXTColorRef::/@int@const>
  115. //-----------------------------------------------------------------------
  116. // Summary:
  117. //     This assignment operator is used to modify a CXTColorRef object.
  118. // Parameters:
  119. //     val - Specifies the intensity of the color component. 'val' can
  120. //           range from 0 to 255. Zero is the minimum color intensity;
  121. //           255 is the maximum color intensity.
  122. //     cr - An RGB value.
  123. // Returns:
  124. //     A reference to a valid CXTColorRef object.
  125. //-----------------------------------------------------------------------
  126. CXTColorRef& operator+=(int val);
  127. CXTColorRef& operator+=(COLORREF cr); // <combine CXTColorRef::+=@int>
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     This assignment operator is used to modify a CXTColorRef object.
  131. // Parameters:
  132. //     val - Specifies the intensity of the color component. 'val' can
  133. //           range from 0 to 255. Zero is the minimum color intensity;
  134. //           255 is the maximum color intensity.
  135. //     cr - An RGB value.
  136. // Returns:
  137. //     A reference to a valid CXTColorRef object.
  138. //-----------------------------------------------------------------------
  139. CXTColorRef& operator-=(int val);
  140. CXTColorRef& operator-=(COLORREF cr); // <combine CXTColorRef::-=@int>
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     This assignment operator is used to modify a CXTColorRef object.
  144. // Parameters:
  145. //     val - Specifies the intensity of the color component. 'val' can
  146. //           range from 0 to 255. Zero is the minimum color intensity;
  147. //           255 is the maximum color intensity.
  148. //     cr - An RGB value.
  149. // Returns:
  150. //     A reference to a valid CXTColorRef object.
  151. //-----------------------------------------------------------------------
  152. CXTColorRef& operator*=(int val);
  153. CXTColorRef& operator*=(COLORREF cr); // <combine CXTColorRef::*=@int>
  154. //-----------------------------------------------------------------------
  155. // Summary:
  156. //     This assignment operator is used to modify a CXTColorRef object.
  157. // Parameters:
  158. //     val - Specifies the intensity of the color component. 'val' can
  159. //           range from 0 to 255. Zero is the minimum color intensity;
  160. //           255 is the maximum color intensity.
  161. //     cr - An RGB value.
  162. // Returns:
  163. //     A reference to a valid CXTColorRef object.
  164. //-----------------------------------------------------------------------
  165. CXTColorRef& operator/=(int val);
  166. CXTColorRef& operator/=(COLORREF cr); // <combine CXTColorRef::/=@int>
  167. //-----------------------------------------------------------------------
  168. // Summary:
  169. //     This operator retrieves the RGB value for the CXTColorRef object.
  170. // Returns:
  171. //     An RGB value.
  172. //-----------------------------------------------------------------------
  173. operator COLORREF () const;
  174. //////////////////////////////////////////////////////////////
  175. // RGB Values
  176. //////////////////////////////////////////////////////////////
  177. //-----------------------------------------------------------------------
  178. // Summary:
  179. //     This method gets the red component of this object.
  180. // Returns:
  181. //     The red component of the color.
  182. //-----------------------------------------------------------------------
  183. int getRValue() const;
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     This method gets the green component of this object.
  187. // Returns:
  188. //     The green component of the color.
  189. //-----------------------------------------------------------------------
  190. int getGValue() const;
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //     This method gets the blue component of this object.
  194. // Returns:
  195. //     The blue component of the color.
  196. //-----------------------------------------------------------------------
  197. int getBValue() const;
  198. //-----------------------------------------------------------------------
  199. // Summary:
  200. //     Call this member function to set the red intensity value for
  201. //     the CXTColorRef object.
  202. // Parameters:
  203. //     val - Specifies the intensity of the color component. 'val' can
  204. //           range from 0 to 255. Zero is the minimum color intensity;
  205. //           255 is the maximum color intensity.
  206. //-----------------------------------------------------------------------
  207. void setRValue(int val);
  208. //-----------------------------------------------------------------------
  209. // Summary:
  210. //     Call this member function to set the green intensity value for the
  211. //     CXTColorRef object.
  212. // Parameters:
  213. //     val - Specifies the intensity of the color component. 'val' can
  214. //           range from 0 to 255. Zero is the minimum color intensity;
  215. //           255 is the maximum color intensity.
  216. //-----------------------------------------------------------------------
  217. void setGValue(int val);
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Call this member function to set the blue intensity value for the CXTColorRef
  221. //     object.
  222. // Parameters:
  223. //     val - Specifies the intensity of the color component. 'val' can
  224. //           range from 0 to 255. Zero is the minimum color intensity;
  225. //           255 is the maximum color intensity.
  226. //-----------------------------------------------------------------------
  227. void setBValue(int val);
  228. //////////////////////////////////////////////////////////////
  229. // Misc Information
  230. //////////////////////////////////////////////////////////////
  231. //-----------------------------------------------------------------------
  232. // Summary:
  233. //     This member function will retrieve the overall intensity of the
  234. //     CXTColorRef object.
  235. // Returns:
  236. //     A double that represents the current color intensity.
  237. //-----------------------------------------------------------------------
  238. double getIntensity() const;
  239. //////////////////////////////////////////////////////////////
  240. // Color Conversion
  241. //////////////////////////////////////////////////////////////
  242. //-----------------------------------------------------------------------
  243. // Summary:
  244. //     This function converts the RGB color to an HSL (hue, saturation,
  245. //     luminance) trio.
  246. // Parameters:
  247. //     h - The variable to receive the hue value.
  248. //     s - The variable to receive the saturation value.
  249. //     l - The variable to receive the luminance value.
  250. //-----------------------------------------------------------------------
  251. void toHSL(double& h, double& s, double& l) const;
  252. //-----------------------------------------------------------------------
  253. // Summary:
  254. //     This function converts the RGB color to an HSB (hue, saturation,
  255. //     brightness) trio.
  256. // Parameters:
  257. //     h - The variable to receive the hue value.
  258. //     s - The variable to receive the saturation value.
  259. //     b - The variable to receive the brightness value.
  260. //-----------------------------------------------------------------------
  261. void toHSB(double& h, double& s, double& b) const;
  262. //-----------------------------------------------------------------------
  263. // Summary:
  264. //     This function sets an RGB value that is the equivalent of a specific
  265. //     HSL (hue, saturation, luminance) color.
  266. // Parameters:
  267. //     h - The hue of the source color.
  268. //     s - The saturation of the source color.
  269. //     l - The luminance of the source color.
  270. //-----------------------------------------------------------------------
  271. void setHSL(double h, double s, double l);
  272. //-----------------------------------------------------------------------
  273. // Summary:
  274. //     This function sets an RGB value that is the equivalent of a specific
  275. //     HSB (hue, saturation, brightness) color.
  276. // Parameters:
  277. //     h - The hue of the source color.
  278. //     s - The saturation of the source color.
  279. //     b - The brightness of the source color.
  280. //-----------------------------------------------------------------------
  281. void setHSB(double h, double s, double b);
  282. // ----------------------------------------------------------------------
  283. // Summary:
  284. //     Creates a new CXTColorRef based on hue saturation and luminance.
  285. // Parameters:
  286. //     h -  The hue of the source color.
  287. // s -  The saturation of the source color.
  288. // l -  The luminance of the source color.
  289. // Remarks:
  290. //     This static function creates a new CXTColorRef object out of an
  291. //     HSL (hue, saturation, luminance) color trio. Returns a CXTColorRef
  292. //     object.
  293. // ----------------------------------------------------------------------
  294. static CXTColorRef AFX_CDECL fromHSL(double h, double s, double l);
  295. // ---------------------------------------------------------------------
  296. // Summary:
  297. //     Creates a new CXTColorRef based on hue saturation and brightness.
  298. // Parameters:
  299. //     h -  The hue of the source color.
  300. // s -  The saturation of the source color.
  301. // b -  The brightness of the source color.
  302. // Remarks:
  303. //     This static function creates a new CXTColorRef object out of an
  304. //     HSB (hue, saturation, brightness) color trio. Returns a
  305. //     CXTColorRef object.
  306. // ---------------------------------------------------------------------
  307. static CXTColorRef AFX_CDECL fromHSB(double h, double s, double b);
  308. //////////////////////////////////////////////////////////////////////
  309. // Color Manipulation
  310. //////////////////////////////////////////////////////////////////////
  311. // ----------------------------------------------------------------------
  312. // Summary:
  313. //     Blends two CXTColorRef objects into a single color.
  314. // Parameters:
  315. //     clr -      A reference to a valid CXTColorRef object.
  316. // opacity -  The amount of transparency.
  317. // Remarks:
  318. //     Call this member function to blend the CXTColorRef object with the
  319. //     object specified by 'clr'.
  320. // Returns:
  321. //     A reference to a valid CXTColorRef object.
  322. // ----------------------------------------------------------------------
  323. CXTColorRef& blend(const CXTColorRef& clr, int opacity);
  324. //-----------------------------------------------------------------------
  325. // Summary:
  326. //     Call this member function to add the CXTColorRef object specified by 'clr'.
  327. // Parameters:
  328. //     clr - A reference to a valid CXTColorRef object.
  329. // Returns:
  330. //     A reference to a valid CXTColorRef object.
  331. //-----------------------------------------------------------------------
  332. CXTColorRef& add(const CXTColorRef& clr);
  333. //-----------------------------------------------------------------------
  334. // Summary:
  335. //     Call this member function to subtract the CXTColorRef object specified
  336. //     by 'clr'.
  337. // Parameters:
  338. //     clr - A reference to a valid CXTColorRef object.
  339. // Returns:
  340. //     A reference to a valid CXTColorRef object.
  341. //-----------------------------------------------------------------------
  342. CXTColorRef& subtract(const CXTColorRef& clr);
  343. //////////////////////////////////////////////////////////////////////
  344. // Standard Colors
  345. //////////////////////////////////////////////////////////////////////
  346. static const CXTColorRef BLACK;   // RGB value that represents the color black.
  347. static const CXTColorRef WHITE;   // RGB value that represents the color white.
  348. static const CXTColorRef GRAY_25; // RGB value that represents the 25% gray color.
  349. static const CXTColorRef GRAY_50; // RGB value that represents the 50% gray color.
  350. static const CXTColorRef GRAY_75; // RGB value that represents the 75% gray color.
  351. //////////////////////////////////////////////////////////////////////
  352. // Helper Functions
  353. //////////////////////////////////////////////////////////////////////
  354. // -----------------------------------------------------------------------------------
  355. // Summary:
  356. //     Adds two color values.
  357. // Parameters:
  358. //     iVal -  Specifies the color intensity that is the source of the
  359. //             operation.
  360. // iAdd -  Specifies the intensity to add to the source. It can be negative.
  361. // Remarks:
  362. //     This member function adds two color intensities to ensure that the
  363. //     sum is in the proper color value range (0-255). For example, addColorValue(200,
  364. //     100) will return 255 and not 300. addColorValue(100, -200) will
  365. //     return 0.
  366. // -----------------------------------------------------------------------------------
  367. static int AFX_CDECL addColorValue(int iVal, int iAdd);
  368. // ----------------------------------------------------------------------------
  369. // Summary:
  370. //     Modifies a color value based on intensity and multiplication.
  371. // Parameters:
  372. //     iVal -   Specifies the color intensity that is the source of the
  373. //              operation.
  374. // iMult -  Specifies a value to multiply the source by.
  375. // iDiv -   Specifies a value to divide the source by.
  376. // Remarks:
  377. //     This member function manipulates a color value by performing a
  378. //     multiplication and then a division. For instance, multiplyColorValue(10,
  379. //     2, 3) will return 10 * 2 / 3 which is 6. The function guarantees
  380. //     that the resulting value does not exceeded 255.
  381. // ----------------------------------------------------------------------------
  382. static int AFX_CDECL multiplyColorValue(int iVal, int iMult, int iDiv);
  383. // ------------------------------------------------------------------------------
  384. // Summary:
  385. //     Blends two color intensities.
  386. // Parameters:
  387. //     iClrFront :  Specifies the intensity of the foreground color component.
  388. //                  'iClrFront' can range from 0 to 255. Zero is the minimum
  389. //                  color intensity; 255 is the maximum color intensity.
  390. // iClrBack :   Specifies the intensity of the background color component.
  391. //                  'iClrBack' can range from 0 to 255. Zero is the minimum color
  392. //                  intensity; 255 is the maximum color intensity.
  393. // opacity :    The amount of transparency.
  394. // Remarks:
  395. //     This function takes a blended color intensity which is
  396. //     ((100-opacity)% * iClrFront and opacity% * iClrBack).
  397. // ------------------------------------------------------------------------------
  398. static int AFX_CDECL BlendColor(int iClrFront, int iClrBack, int opacity);
  399. // -------------------------------------------------------------------------
  400. // Summary:
  401. //     Adjusts color intensity to a valid range.
  402. // Parameters:
  403. //     iVal -  Specifies the intensity of the color component. 'iVal' can
  404. //             range from 0 to 255. Zero is the minimum color intensity; 255
  405. //             is the maximum color intensity.
  406. // Remarks:
  407. //     This function takes in a color intensity and ensures that it is
  408. //     between 0 and 255. Anything out of range will be adjusted to the
  409. //     closest number in range (i.e. -100 will become 0, 300 will become
  410. //     255).
  411. // -------------------------------------------------------------------------
  412. static int AFX_CDECL fixColorValue(int iVal);
  413. //-----------------------------------------------------------------------
  414. // Summary:
  415. //     This function will refresh the display element colors defined
  416. //     in the CXTColorRef object.
  417. //-----------------------------------------------------------------------
  418. static void AFX_CDECL RefreshColors();
  419. // ---------------------------------------------------------------------------
  420. // Summary:
  421. //     Retrieves the current color of the specified display element.
  422. // Parameters:
  423. //     nIndex -  Specifies the display element whose color is to be retrieved.
  424. //               This parameter can be one of the values listed in the remarks
  425. //               section.
  426. // Remarks:
  427. //     This function retrieves the current color of the specified XP
  428. //     display element. Display elements are the parts of a window and
  429. //     the display that appear on the system display screen.
  430. //
  431. //     Color can be defined as one of the following values:
  432. //     * <b>XPCOLOR_BASE</b> An RGB value that represents the XP base
  433. //           color.
  434. //     * <b>XPCOLOR_BARFACE</b> An RGB value that represents the XP
  435. //           toolbar background color.
  436. //     * <b>XPCOLOR_HIGHLIGHT</b> An RGB value that represents the XP
  437. //           menu item selected color.
  438. //     * <b>XPCOLOR_HIGHLIGHT_BORDER</b> An RGB value that represents
  439. //           the XP menu item selected border color.
  440. //     * <b>XPCOLOR_HIGHLIGHT_PUSHED</b> An RGB value that represents
  441. //           the XP menu item pushed color.
  442. //     * <b>XPCOLOR_ICONSHADDOW</b> An RGB value that represents the
  443. //           XP menu item icon shadow.
  444. //     * <b>XPCOLOR_GRAYTEXT</b> An RGB value that represents the XP
  445. //           menu item disabled text color.
  446. //     * <b>XPCOLOR_HIGHLIGHT_CHECKED</b> An RGB value that
  447. //           represents the XP menu item checked color.
  448. //     * <b>XPCOLOR_HIGHLIGHT_CHECKED_BORDER</b> An RGB value that
  449. //           represents the XP menu item checked border color.
  450. //     * <b>XPCOLOR_GRIPPER</b> An RGB value that represents the XP
  451. //           toolbar gripper color.
  452. //     * <b>XPCOLOR_SEPARATOR</b> An RGB value that represents the XP
  453. //           toolbar separator color.
  454. //     * <b>XPCOLOR_DISABLED</b> An RGB value that represents the XP
  455. //           menu icon disabled color.
  456. //     * <b>XPCOLOR_MENUTEXT_BACK</b> An RGB value that represents
  457. //           the XP menu item text background color.
  458. //     * <b>XPCOLOR_MENU_EXPANDED</b> An RGB value that represents
  459. //           the XP hidden menu commands background color.
  460. //     * <b>XPCOLOR_MENU_BORDER</b> An RGB value that represents the
  461. //           XP menu border color.
  462. //     * <b>XPCOLOR_MENUTEXT</b> An RGB value that represents the XP
  463. //           menu item text color.
  464. //     * <b>XPCOLOR_HIGHLIGHT_TEXT</b> An RGB value that represents
  465. //           the XP menu item selected text color.
  466. //     * <b>XPCOLOR_BARTEXT</b> An RGB value that represents the XP
  467. //           toolbar text color.
  468. //     * <b>XPCOLOR_BARTEXT_PUSHED</b> An RGB value that represents
  469. //           the XP toolbar pushed text color.
  470. //     * <b>XPCOLOR_TAB_INACTIVE_BACK</b> An RGB value that
  471. //           represents the XP inactive tab background color.
  472. //     * <b>XPCOLOR_TAB_INACTIVE_TEXT</b> An RGB value that
  473. //           represents the XP inactive tab text color.
  474. // Returns:
  475. //     The red, green, blue (RGB) color value of the given element.
  476. // ---------------------------------------------------------------------------
  477. static COLORREF AFX_CDECL GetColor(int nIndex);
  478. protected:
  479. COLORREF m_ColorRef; // Current RGB value for this object
  480. // -------------------------------------------------------------------------
  481. // Summary:
  482. //     Retrieves a save COLORREF value from the specified r, g, b values.
  483. // Parameters:
  484. //     r -  Specifies the intensity of the red color component. 'r' can
  485. //          range from 0 to 255. Zero is the minimum color intensity; 255 is
  486. //          the maximum color intensity.
  487. // g -  Specifies the intensity of the green color component. 'g' can
  488. //          range from 0 to 255. Zero is the minimum color intensity; 255 is
  489. //          the maximum color intensity.
  490. // b -  Specifies the intensity of the blue color component. 'b' can
  491. //          range from 0 to 255. Zero is the minimum color intensity; 255 is
  492. //          the maximum color intensity.
  493. // Remarks:
  494. //     This function takes in a color intensity and ensures that it is
  495. //     between 0 and 255. Anything out of range will be adjusted to the
  496. //     closest number in range (i.e. -100 will become 0, 300 will become
  497. //     255).
  498. // Returns:
  499. //     An RGB value.
  500. // -------------------------------------------------------------------------
  501. static COLORREF AFX_CDECL SafeRGB(int r, int g, int b);
  502. };
  503. //////////////////////////////////////////////////////////////////////
  504. AFX_INLINE CXTColorRef::CXTColorRef() {
  505. m_ColorRef = 0;
  506. }
  507. AFX_INLINE CXTColorRef& CXTColorRef::operator=(COLORREF cr) {
  508. m_ColorRef = cr; return *this;
  509. }
  510. AFX_INLINE CXTColorRef::CXTColorRef(COLORREF r) {
  511. *this = r;
  512. }
  513. AFX_INLINE CXTColorRef::CXTColorRef(int r, int g, int b) {
  514. *this = RGB(r, g, b);
  515. }
  516. AFX_INLINE int CXTColorRef::fixColorValue(int iVal) {
  517. if (iVal > 255) return 255; if (iVal < 0) return 0; return iVal;
  518. }
  519. AFX_INLINE CXTColorRef::operator COLORREF () const {
  520. return m_ColorRef;
  521. }
  522. AFX_INLINE int CXTColorRef::getRValue() const {
  523. return GetRValue(m_ColorRef);
  524. }
  525. AFX_INLINE int CXTColorRef::getGValue() const {
  526. return GetGValue(m_ColorRef);
  527. }
  528. AFX_INLINE int CXTColorRef::getBValue() const {
  529. return GetBValue(m_ColorRef);
  530. }
  531. AFX_INLINE void CXTColorRef::setRValue(int val) {
  532. m_ColorRef = RGB(val, getGValue(), getBValue());
  533. }
  534. AFX_INLINE void CXTColorRef::setGValue(int val) {
  535. m_ColorRef = RGB(getRValue(), val, getBValue());
  536. }
  537. AFX_INLINE void CXTColorRef::setBValue(int val) {
  538. m_ColorRef = RGB(getRValue(), getGValue(), val);
  539. }
  540. AFX_INLINE double CXTColorRef::getIntensity() const {
  541. return  ((299 * getRValue()) + (587 * getGValue()) + (114 * getBValue())) / 1000.0;
  542. }
  543. AFX_INLINE int CXTColorRef::addColorValue(int iVal, int iAdd) {
  544. return fixColorValue(iVal + iAdd);
  545. }
  546. AFX_INLINE int CXTColorRef::multiplyColorValue(int iVal, int iMult, int iDiv) {
  547. return fixColorValue(iVal*  iMult / iDiv);
  548. }
  549. AFX_INLINE int CXTColorRef::BlendColor(int iClrFront, int iClrBack, int opacity) {
  550. return fixColorValue(((iClrFront * opacity) + (iClrBack * (100 - opacity))) / 100);
  551. }
  552. #endif // !defined(__XTCOLORREF_H__)