hkColor.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:8k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /* 
  2.  * 
  3.  * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
  4.  * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
  5.  * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2009 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
  6.  * 
  7.  */
  8. #ifndef HK_VISUALIZE_COLOR
  9. #define HK_VISUALIZE_COLOR
  10. /// Colors are represented as unsigned ints [0xAARRGGBB] though there are helper
  11. /// functions to create them from floats (and chars)
  12. class hkColor
  13. {
  14. HK_DECLARE_REFLECTION();
  15. public:
  16. /// Creates a color using the specified char values.
  17. static int HK_CALL rgbFromChars(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha = 0xff);
  18. /// Creates a color using the specified floating-point values interpreted as RGB colors in [0,1].
  19. static int HK_CALL rgbFromFloats(const hkReal red, const hkReal green, const hkReal blue, const hkReal alpha = 1.0f);
  20. /// Creates a color using the specified floating-point values interpreted as HSV colors in [0,1]
  21. static int HK_CALL rgbFromHSV(const hkReal h, const hkReal s, const hkReal v, const hkReal alpha = 1.0f);
  22. /// Creates a random color
  23. static int HK_CALL getRandomColor();
  24. /// Gets the Alpha component of a color.
  25. inline static char HK_CALL getAlphaAsChar(int color) { return char((unsigned(color) >> 24) & 0xFF); }
  26. inline static hkReal HK_CALL getAlphaAsFloat(int color) { return getAlphaAsChar(color) * (1.0f / 255.0f); }
  27. /// Gets the Red component of a color.
  28. inline static char HK_CALL getRedAsChar(int color) { return char((unsigned(color) >> 16) & 0xFF); }
  29. inline static hkReal HK_CALL getRedAsFloat(int color) { return getRedAsChar(color) * (1.0f / 255.0f); }
  30. /// Gets the Green component of a color.
  31. inline static char HK_CALL getGreenAsChar(int color) { return char((unsigned(color) >> 8) & 0xFF); }
  32. inline static hkReal HK_CALL getGreenAsFloat(int color) { return getGreenAsChar(color) * (1.0f / 255.0f); }
  33. /// Gets the Blue component of a color.
  34. inline static char HK_CALL getBlueAsChar(int color) { return char(unsigned(color) & 0xFF); }
  35. inline static hkReal HK_CALL getBlueAsFloat(int color) { return getBlueAsChar(color) * (1.0f / 255.0f); }
  36. /// Halve the alpha 
  37. inline static int HK_CALL semiTransparent(int color) { return (color & 0x7FFFFFFF); }
  38. /// Make the color darker
  39. inline static int HK_CALL darken(int col) { return ( (col & 0xff000000) | ((col >> 17 & 0x7f) << 16) | ((col >> 9 & 0x7f) << 8) | (col >> 1 & 0x7f) ); }
  40. /// Make the color lighter
  41. inline static int HK_CALL lighten(int col) { return ( (col & 0xff000000) | ( hkMath::max2((col >> 15) & 0x1ff, 0xff) << 16) | (hkMath::max2((col >> 7) & 0x1ff, 0xff) << 8) | (hkMath::max2((col << 1) & 0x1ff, 0xff) ) ); }
  42. public:
  43. // Colors taken from http://www.keller.com/rgb.html
  44. enum ExtendedColors
  45. {
  46. MAROON = 0xFF800000,
  47. DARKRED = 0xFF8B0000,
  48. RED = 0xFFFF0000,
  49. LIGHTPINK = 0xFFFFB6C1,
  50. CRIMSON = 0xFFDC143C,
  51. PALEVIOLETRED = 0xFFDB7093,
  52. HOTPINK = 0xFFFF69B4,
  53. DEEPPINK = 0xFFFF1493,
  54. MEDIUMVIOLETRED = 0xFFC71585,
  55. PURPLE = 0xFF800080,
  56. DARKMAGENTA = 0xFF8B008B,
  57. ORCHID = 0xFFDA70D6,
  58. THISTLE = 0xFFD8BFD8,
  59. PLUM = 0xFFDDA0DD,
  60. VIOLET = 0xFFEE82EE,
  61. FUCHSIA = 0xFFFF00FF,
  62. MAGENTA = 0xFFFF00FF,
  63. MEDIUMORCHID = 0xFFBA55D3,
  64. DARKVIOLET = 0xFF9400D3,
  65. DARKORCHID = 0xFF9932CC,
  66. BLUEVIOLET = 0xFF8A2BE2,
  67. INDIGO = 0xFF4B0082,
  68. MEDIUMPURPLE = 0xFF9370DB,
  69. SLATEBLUE = 0xFF6A5ACD,
  70. MEDIUMSLATEBLUE = 0xFF7B68EE,
  71. DARKBLUE = 0xFF00008B,
  72. MEDIUMBLUE = 0xFF0000CD,
  73. BLUE = 0xFF0000FF,
  74. NAVY = 0xFF000080,
  75. MIDNIGHTBLUE = 0xFF191970,
  76. DARKSLATEBLUE = 0xFF483D8B,
  77. ROYALBLUE = 0xFF4169E1,
  78. CORNFLOWERBLUE = 0xFF6495ED,
  79. LIGHTSTEELBLUE = 0xFFB0C4DE,
  80. ALICEBLUE = 0xFFF0F8FF,
  81. GHOSTWHITE = 0xFFF8F8FF,
  82. LAVENDER = 0xFFE6E6FA,
  83. DODGERBLUE = 0xFF1E90FF,
  84. STEELBLUE = 0xFF4682B4,
  85. DEEPSKYBLUE = 0xFF00BFFF,
  86. SLATEGRAY = 0xFF708090,
  87. LIGHTSLATEGRAY = 0xFF778899,
  88. LIGHTSKYBLUE = 0xFF87CEFA,
  89. SKYBLUE = 0xFF87CEEB,
  90. LIGHTBLUE = 0xFFADD8E6,
  91. TEAL = 0xFF008080,
  92. DARKCYAN = 0xFF008B8B,
  93. DARKTURQUOISE = 0xFF00CED1,
  94. CYAN = 0xFF00FFFF,
  95. MEDIUMTURQUOISE = 0xFF48D1CC,
  96. CADETBLUE = 0xFF5F9EA0,
  97. PALETURQUOISE = 0xFFAFEEEE,
  98. LIGHTCYAN = 0xFFE0FFFF,
  99. AZURE = 0xFFF0FFFF,
  100. LIGHTSEAGREEN = 0xFF20B2AA,
  101. TURQUOISE = 0xFF40E0D0,
  102. POWDERBLUE = 0xFFB0E0E6,
  103. DARKSLATEGRAY = 0xFF2F4F4F,
  104. AQUAMARINE = 0xFF7FFFD4,
  105. MEDIUMSPRINGGREEN = 0xFF00FA9A,
  106. MEDIUMAQUAMARINE = 0xFF66CDAA,
  107. SPRINGGREEN = 0xFF00FF7F,
  108. MEDIUMSEAGREEN = 0xFF3CB371,
  109. SEAGREEN = 0xFF2E8B57,
  110. LIMEGREEN = 0xFF32CD32,
  111. DARKGREEN = 0xFF006400,
  112. GREEN = 0xFF008000,
  113. LIME = 0xFF00FF00,
  114. FORESTGREEN = 0xFF228B22,
  115. DARKSEAGREEN = 0xFF8FBC8F,
  116. LIGHTGREEN = 0xFF90EE90,
  117. PALEGREEN = 0xFF98FB98,
  118. MINTCREAM = 0xFFF5FFFA,
  119. HONEYDEW = 0xFFF0FFF0,
  120. CHARTREUSE = 0xFF7FFF00,
  121. LAWNGREEN = 0xFF7CFC00,
  122. OLIVEDRAB = 0xFF6B8E23,
  123. DARKOLIVEGREEN = 0xFF556B2F,
  124. YELLOWGREEN = 0xFF9ACD32,
  125. GREENYELLOW = 0xFFADFF2F,
  126. BEIGE = 0xFFF5F5DC,
  127. LINEN = 0xFFFAF0E6,
  128. LIGHTGOLDENRODYELLOW = 0xFFFAFAD2,
  129. OLIVE = 0xFF808000,
  130. YELLOW = 0xFFFFFF00,
  131. LIGHTYELLOW = 0xFFFFFFE0,
  132. IVORY = 0xFFFFFFF0,
  133. DARKKHAKI = 0xFFBDB76B,
  134. KHAKI = 0xFFF0E68C,
  135. PALEGOLDENROD = 0xFFEEE8AA,
  136. WHEAT = 0xFFF5DEB3,
  137. GOLD = 0xFFFFD700,
  138. LEMONCHIFFON = 0xFFFFFACD,
  139. PAPAYAWHIP = 0xFFFFEFD5,
  140. DARKGOLDENROD = 0xFFB8860B,
  141. GOLDENROD = 0xFFDAA520,
  142. ANTIQUEWHITE = 0xFFFAEBD7,
  143. CORNSILK = 0xFFFFF8DC,
  144. OLDLACE = 0xFFFDF5E6,
  145. MOCCASIN = 0xFFFFE4B5,
  146. NAVAJOWHITE = 0xFFFFDEAD,
  147. ORANGE = 0xFFFFA500,
  148. BISQUE = 0xFFFFE4C4,
  149. TAN = 0xFFD2B48C,
  150. DARKORANGE = 0xFFFF8C00,
  151. BURLYWOOD = 0xFFDEB887,
  152. SADDLEBROWN = 0xFF8B4513,
  153. SANDYBROWN = 0xFFF4A460,
  154. BLANCHEDALMOND = 0xFFFFEBCD,
  155. LAVENDERBLUSH = 0xFFFFF0F5,
  156. SEASHELL = 0xFFFFF5EE,
  157. FLORALWHITE = 0xFFFFFAF0,
  158. SNOW = 0xFFFFFAFA,
  159. PERU = 0xFFCD853F,
  160. PEACHPUFF = 0xFFFFDAB9,
  161. CHOCOLATE = 0xFFD2691E,
  162. SIENNA = 0xFFA0522D,
  163. LIGHTSALMON = 0xFFFFA07A,
  164. CORAL = 0xFFFF7F50,
  165. DARKSALMON = 0xFFE9967A,
  166. MISTYROSE = 0xFFFFE4E1,
  167. ORANGERED = 0xFFFF4500,
  168. SALMON = 0xFFFA8072,
  169. TOMATO = 0xFFFF6347,
  170. ROSYBROWN = 0xFFBC8F8F,
  171. PINK = 0xFFFFC0CB,
  172. INDIANRED = 0xFFCD5C5C,
  173. LIGHTCORAL = 0xFFF08080,
  174. BROWN = 0xFFA52A2A,
  175. FIREBRICK = 0xFFB22222,
  176. BLACK = 0xFF000000,
  177. DIMGRAY = 0xFF696969,
  178. GRAY = 0xFF808080,
  179. DARKGRAY = 0xFFA9A9A9,
  180. SILVER = 0xFFC0C0C0,
  181. LIGHTGREY = 0xFFD3D3D3,
  182. GAINSBORO = 0xFFDCDCDC,
  183. WHITESMOKE = 0xFFF5F5F5,
  184. WHITE = 0xFFFFFFFF,
  185. GREY = 0xff888888,
  186. GREY25 = 0xff404040,
  187. GREY50 = 0xff808080,
  188. GREY75 = 0xffc0c0c0,
  189. };
  190. // A simple color table - arrange in batches of 8 colors light to dark
  191. static int s_colorTable[32];
  192. };
  193. #endif // HK_VISUALIZE_COLOR
  194. /*
  195. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  196. * Confidential Information of Havok.  (C) Copyright 1999-2009
  197. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  198. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  199. * rights, and intellectual property rights in the Havok software remain in
  200. * Havok and/or its suppliers.
  201. * Use of this software for evaluation purposes is subject to and indicates
  202. * acceptance of the End User licence Agreement for this product. A copy of
  203. * the license is included with this software and is also available at www.havok.com/tryhavok.
  204. */