color.cpp
Public Defines
define
DEFAULT_UNKNOWN_STOCK_COLOR_NAME() "White"
Public Typedefs
typeColorFToNameHash
typeColorIToNameHash
typeNameToColorFHash
typeNameToColorIHash
Public Variables
Public Functions
DefineEngineFunction(getStockColorCount , S32 , () , "@brief Gets <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1ad43c3812e6d13e0518d9f8b8f463ffcf">count</a> of available stock <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">colors.\n</a>" "@return A <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1ad43c3812e6d13e0518d9f8b8f463ffcf">count</a> of available stock colors." )
DefineEngineFunction(getStockColorF , LinearColorF , (const char *stockColorName) , "@brief Gets <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> floating-point-based stock color by <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">name.\n</a>" "@param stockColorName - The stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">retrieve.\n</a>" "@return The stock color that matches the specified color name. Returns nothing <a href="/coding/file/tsmeshintrinsics_8cpp/#tsmeshintrinsics_8cpp_1a4e4fa7e3399708e0777b5308db01278c">if</a> the color name is not <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">found.\n</a>" )
DefineEngineFunction(getStockColorI , ColorI , (const char *stockColorName) , "@brief Gets <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> byte-based stock color by <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">name.\n</a>" "@param stockColorName - The stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">retrieve.\n</a>" "@return The stock color that matches the specified color name. Returns nothing <a href="/coding/file/tsmeshintrinsics_8cpp/#tsmeshintrinsics_8cpp_1a4e4fa7e3399708e0777b5308db01278c">if</a> the color name is not <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">found.\n</a>" )
DefineEngineFunction(getStockColorName , const char * , (S32 stockColorIndex) , "@brief Gets the stock color name at the specified <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">index.\n</a>" "@param stockColorIndex The zero-based index of the stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">retrieve.\n</a>" "@return The stock color name at the specified index or nothing <a href="/coding/file/tsmeshintrinsics_8cpp/#tsmeshintrinsics_8cpp_1a4e4fa7e3399708e0777b5308db01278c">if</a> the string is invalid." )
DefineEngineFunction(isStockColor , bool , (const char *stockColorName) , "@brief Gets whether the specified name is <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> stock color or <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">not.\n</a>" "@param stockColorName - The stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> test <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">for.\n</a>" "@return Whether the specified name is <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> stock color or <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">not.\n</a>" )
Detailed Description
Public Defines
DEFAULT_UNKNOWN_STOCK_COLOR_NAME() "White"
Public Typedefs
typedef HashTable< LinearColorF, StringTableEntry > typeColorFToNameHash
typedef HashTable< ColorI, StringTableEntry > typeColorIToNameHash
typedef HashTable< StringTableEntry, LinearColorF > typeNameToColorFHash
typedef HashTable< StringTableEntry, ColorI > typeNameToColorIHash
Public Variables
typeColorFToNameHash mColorFToName
typeColorIToNameHash mColorIToName
typeNameToColorFHash mNameToColorF
typeNameToColorIHash mNameToColorI
MODULE_END
MODULE_INIT
MODULE_SHUTDOWN
bool stockColorsCreated
StockColorItem StockColorTable []
Public Functions
DefineEngineFunction(getStockColorCount , S32 , () , "@brief Gets <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1ad43c3812e6d13e0518d9f8b8f463ffcf">count</a> of available stock <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">colors.\n</a>" "@return A <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1ad43c3812e6d13e0518d9f8b8f463ffcf">count</a> of available stock colors." )
DefineEngineFunction(getStockColorF , LinearColorF , (const char *stockColorName) , "@brief Gets <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> floating-point-based stock color by <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">name.\n</a>" "@param stockColorName - The stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">retrieve.\n</a>" "@return The stock color that matches the specified color name. Returns nothing <a href="/coding/file/tsmeshintrinsics_8cpp/#tsmeshintrinsics_8cpp_1a4e4fa7e3399708e0777b5308db01278c">if</a> the color name is not <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">found.\n</a>" )
DefineEngineFunction(getStockColorI , ColorI , (const char *stockColorName) , "@brief Gets <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> byte-based stock color by <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">name.\n</a>" "@param stockColorName - The stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">retrieve.\n</a>" "@return The stock color that matches the specified color name. Returns nothing <a href="/coding/file/tsmeshintrinsics_8cpp/#tsmeshintrinsics_8cpp_1a4e4fa7e3399708e0777b5308db01278c">if</a> the color name is not <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">found.\n</a>" )
DefineEngineFunction(getStockColorName , const char * , (S32 stockColorIndex) , "@brief Gets the stock color name at the specified <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">index.\n</a>" "@param stockColorIndex The zero-based index of the stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">retrieve.\n</a>" "@return The stock color name at the specified index or nothing <a href="/coding/file/tsmeshintrinsics_8cpp/#tsmeshintrinsics_8cpp_1a4e4fa7e3399708e0777b5308db01278c">if</a> the string is invalid." )
DefineEngineFunction(isStockColor , bool , (const char *stockColorName) , "@brief Gets whether the specified name is <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> stock color or <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">not.\n</a>" "@param stockColorName - The stock color name <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> test <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">for.\n</a>" "@return Whether the specified name is <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> stock color or <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">not.\n</a>" )
1 2//----------------------------------------------------------------------------- 3// Copyright (c) 2012 GarageGames, LLC 4// 5// Permission is hereby granted, free of charge, to any person obtaining a copy 6// of this software and associated documentation files (the "Software"), to 7// deal in the Software without restriction, including without limitation the 8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9// sell copies of the Software, and to permit persons to whom the Software is 10// furnished to do so, subject to the following conditions: 11// 12// The above copyright notice and this permission notice shall be included in 13// all copies or substantial portions of the Software. 14// 15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21// IN THE SOFTWARE. 22//----------------------------------------------------------------------------- 23 24#include "platform/platform.h" 25#include "core/color.h" 26 27const LinearColorF LinearColorF::ZERO( 0, 0, 0, 0 ); 28const LinearColorF LinearColorF::ONE( 1, 1, 1, 1 ); 29const LinearColorF LinearColorF::WHITE( 1, 1, 1 ); 30const LinearColorF LinearColorF::BLACK( 0, 0, 0 ); 31const LinearColorF LinearColorF::RED( 1, 0, 0 ); 32const LinearColorF LinearColorF::GREEN( 0, 1, 0 ); 33const LinearColorF LinearColorF::BLUE( 0, 0, 1 ); 34 35const ColorI ColorI::ZERO( 0, 0, 0, 0 ); 36const ColorI ColorI::ONE( 255, 255, 255, 255 ); 37const ColorI ColorI::WHITE( 255, 255, 255 ); 38const ColorI ColorI::BLACK( 0, 0, 0 ); 39const ColorI ColorI::RED( 255, 0, 0 ); 40const ColorI ColorI::GREEN( 0, 255, 0 ); 41const ColorI ColorI::BLUE( 0, 0, 255 ); 42 43#include "console/console.h" 44#include "console/consoleTypes.h" 45 46#ifndef _STRINGUNIT_H_ 47#include "core/strings/stringUnit.h" 48#endif 49 50#ifndef _TDICTIONARY_H_ 51#include "core/util/tDictionary.h" 52#endif 53 54#include "console/consoleInternal.h" 55 56//----------------------------------------------------------------------------- 57 58typedef HashTable<StringTableEntry, LinearColorF> typeNameToColorFHash; 59typedef HashTable<StringTableEntry, ColorI> typeNameToColorIHash; 60typedef HashTable<LinearColorF, StringTableEntry> typeColorFToNameHash; 61typedef HashTable<ColorI, StringTableEntry> typeColorIToNameHash; 62 63static typeNameToColorFHash mNameToColorF; 64static typeNameToColorIHash mNameToColorI; 65static typeColorFToNameHash mColorFToName; 66static typeColorIToNameHash mColorIToName; 67 68#define DEFAULT_UNKNOWN_STOCK_COLOR_NAME "White" 69 70MODULE_BEGIN( StockColors ) 71 72 MODULE_INIT_AFTER( GFX ) 73 74 MODULE_INIT 75 { 76 // Create the stock colors. 77 StockColor::create(); 78 } 79 80 MODULE_SHUTDOWN 81 { 82 // Destroy the stock colors. 83 StockColor::destroy(); 84 } 85 86MODULE_END; 87 88//----------------------------------------------------------------------------- 89 90StockColorItem StockColorTable[] = 91{ 92 StockColorItem( "InvisibleBlack", 0, 0, 0, 0 ), 93 StockColorItem( "TransparentWhite", 255, 255, 255, 0 ), 94 StockColorItem( "AliceBlue", 240, 248, 255 ), 95 StockColorItem( "AntiqueWhite", 250, 235, 215 ), 96 StockColorItem( "Aqua", 0, 255, 255 ), 97 StockColorItem( "Aquamarine", 127, 255, 212 ), 98 StockColorItem( "Azure", 240, 255, 255 ), 99 StockColorItem( "Beige", 245, 245, 220 ), 100 StockColorItem( "Bisque", 255, 228, 196 ), 101 StockColorItem( "Black", 0, 0, 0, 255 ), 102 StockColorItem( "BlanchedAlmond", 255, 235, 205, 255 ), 103 StockColorItem( "Blue", 0, 0, 255 ), 104 StockColorItem( "BlueViolet", 138, 43, 226 ), 105 StockColorItem( "Brown", 165, 42, 42, 255 ), 106 StockColorItem( "BurlyWood", 222, 184, 135 ), 107 StockColorItem( "CadetBlue", 95, 158, 160 ), 108 StockColorItem( "Chartreuse", 127, 255, 0 ), 109 StockColorItem( "Chocolate", 210, 105, 30 ), 110 StockColorItem( "Coral", 255, 127, 80 ), 111 StockColorItem( "CornflowerBlue", 100, 149, 237 ), 112 StockColorItem( "Cornsilk", 255, 248, 220 ), 113 StockColorItem( "Crimson", 220, 20, 60 ), 114 StockColorItem( "Cyan", 0, 255, 255 ), 115 StockColorItem( "DarkBlue", 0, 0, 139 ), 116 StockColorItem( "DarkCyan", 0, 139, 139 ), 117 StockColorItem( "DarkGoldenrod", 184, 134, 11 ), 118 StockColorItem( "DarkGray", 169, 169, 169), 119 StockColorItem( "DarkGreen", 0, 100, 0 ), 120 StockColorItem( "DarkKhaki", 189, 183, 107 ), 121 StockColorItem( "DarkMagenta", 139, 0, 139 ), 122 StockColorItem( "DarkOliveGreen", 85, 107, 47 ), 123 StockColorItem( "DarkOrange", 255, 140, 0 ), 124 StockColorItem( "DarkOrchid", 153, 50, 204 ), 125 StockColorItem( "DarkRed", 139, 0, 0 ), 126 StockColorItem( "DarkSalmon", 233, 150, 122 ), 127 StockColorItem( "DarkSeaGreen", 143, 188, 139 ), 128 StockColorItem( "DarkSlateBlue", 72, 61, 139 ), 129 StockColorItem( "DarkSlateGray", 47, 79, 79 ), 130 StockColorItem( "DarkTurquoise", 0, 206, 209 ), 131 StockColorItem( "DarkViolet", 148, 0, 211 ), 132 StockColorItem( "DeepPink", 255, 20, 147 ), 133 StockColorItem( "DeepSkyBlue", 0, 191, 255 ), 134 StockColorItem( "DimGray", 105, 105, 105 ), 135 StockColorItem( "DodgerBlue", 30, 144, 255 ), 136 StockColorItem( "Firebrick", 178, 34, 34 ), 137 StockColorItem( "FloralWhite", 255, 250, 240 ), 138 StockColorItem( "ForestGreen", 34, 139, 34 ), 139 StockColorItem( "Fuchsia", 255, 0, 255 ), 140 StockColorItem( "Gainsboro", 220, 220, 220 ), 141 StockColorItem( "GhostWhite", 248, 248, 255 ), 142 StockColorItem( "Gold", 255, 215, 0 ), 143 StockColorItem( "Goldenrod", 218, 165, 32 ), 144 StockColorItem( "Gray", 128, 128, 128 ), 145 StockColorItem( "Green", 0, 128, 0 ), 146 StockColorItem( "GreenYellow", 173, 255, 47 ), 147 StockColorItem( "Honeydew", 240, 255, 24 ), 148 StockColorItem( "HotPink", 255, 105, 180 ), 149 StockColorItem( "IndianRed", 205, 92, 92 ), 150 StockColorItem( "Indigo", 75, 0, 130 ), 151 StockColorItem( "Ivory", 255, 255, 240 ), 152 StockColorItem( "Khaki", 240, 230, 140 ), 153 StockColorItem( "Lavender", 230, 230, 250 ), 154 StockColorItem( "LavenderBlush", 255, 240, 245 ), 155 StockColorItem( "LawnGreen", 124, 252, 0 ), 156 StockColorItem( "LemonChiffon", 255, 250, 205 ), 157 StockColorItem( "LightBlue", 173, 216, 230 ), 158 StockColorItem( "LightCoral", 240, 128, 128 ), 159 StockColorItem( "LightCyan", 224, 255, 255), 160 StockColorItem( "LightGoldenrodYellow", 250, 250, 210 ), 161 StockColorItem( "LightGray", 211, 211, 211), 162 StockColorItem( "LightGreen", 144, 238, 144 ), 163 StockColorItem( "LightPink", 255, 182, 193 ), 164 StockColorItem( "LightSalmon", 255, 160, 122 ), 165 StockColorItem( "LightSeaGreen", 32, 178, 170 ), 166 StockColorItem( "LightSkyBlue",135, 206, 250 ), 167 StockColorItem( "LightSlateGray", 119, 136, 153 ), 168 StockColorItem( "LightSteelBlue", 176, 196, 222 ), 169 StockColorItem( "LightYellow", 255, 255, 224 ), 170 StockColorItem( "Lime", 0, 255, 0 ), 171 StockColorItem( "LimeGreen", 50, 205, 50 ), 172 StockColorItem( "Linen", 250, 240, 230 ), 173 StockColorItem( "Magenta", 255, 0, 255 ), 174 StockColorItem( "Maroon", 128, 0, 0 ), 175 StockColorItem( "MediumAquamarine", 102, 205, 170 ), 176 StockColorItem( "MediumBlue", 0, 0, 205 ), 177 StockColorItem( "MediumOrchid", 186, 85, 211 ), 178 StockColorItem( "MediumPurple", 147, 112, 219 ), 179 StockColorItem( "MediumSeaGreen", 60, 179, 113 ), 180 StockColorItem( "MediumSlateBlue", 123, 104, 238 ), 181 StockColorItem( "MediumSpringGreen", 0, 250, 154 ), 182 StockColorItem( "MediumTurquoise", 72, 209, 204 ), 183 StockColorItem( "MediumVioletRed", 199, 21, 133 ), 184 StockColorItem( "MidnightBlue", 25, 25, 112 ), 185 StockColorItem( "MintCream", 245, 255, 250 ), 186 StockColorItem( "MistyRose", 255, 228, 225 ), 187 StockColorItem( "Moccasin", 255, 228, 181 ), 188 StockColorItem( "NavajoWhite", 255, 222, 173 ), 189 StockColorItem( "Navy", 0, 0, 128 ), 190 StockColorItem( "OldLace", 253, 245, 230 ), 191 StockColorItem( "Olive", 128, 128, 0 ), 192 StockColorItem( "OliveDrab", 107, 142, 35 ), 193 StockColorItem( "Orange", 255, 165, 0 ), 194 StockColorItem( "OrangeRed", 255, 69, 0 ), 195 StockColorItem( "Orchid", 218, 112, 214 ), 196 StockColorItem( "PaleGoldenrod", 238, 232, 170 ), 197 StockColorItem( "PaleGreen", 152, 251, 152 ), 198 StockColorItem( "PaleTurquoise", 175, 238, 238 ), 199 StockColorItem( "PaleVioletRed", 219, 112, 147 ), 200 StockColorItem( "PapayaWhip", 255, 239, 213 ), 201 StockColorItem( "PeachPuff", 255, 218, 185 ), 202 StockColorItem( "Peru", 205, 133, 63 ), 203 StockColorItem( "Pink", 55, 192, 203 ), 204 StockColorItem( "Plum", 221, 160, 221 ), 205 StockColorItem( "PowderBlue", 176, 224, 230 ), 206 StockColorItem( "Purple", 128, 0, 128 ), 207 StockColorItem( "Red", 255, 0, 0 ), 208 StockColorItem( "RosyBrown", 188, 143, 143 ), 209 StockColorItem( "RoyalBlue", 65, 105, 225 ), 210 StockColorItem( "SaddleBrown", 139, 69, 19 ), 211 StockColorItem( "Salmon", 250, 128, 114 ), 212 StockColorItem( "SandyBrown", 244, 164, 96 ), 213 StockColorItem( "SeaGreen", 46, 139, 87 ), 214 StockColorItem( "SeaShell", 255, 245, 238 ), 215 StockColorItem( "Sienna", 160, 82, 45 ), 216 StockColorItem( "Silver", 192, 192, 192 ), 217 StockColorItem( "SkyBlue", 135, 206, 235 ), 218 StockColorItem( "SlateBlue", 106, 90, 205 ), 219 StockColorItem( "SlateGray", 112, 128, 144 ), 220 StockColorItem( "Snow", 255, 250, 250 ), 221 StockColorItem( "SpringGreen", 0, 255, 127 ), 222 StockColorItem( "SteelBlue", 70, 130, 180 ), 223 StockColorItem( "Tan", 210, 180, 140 ), 224 StockColorItem( "Teal", 0, 128, 128 ), 225 StockColorItem( "Thistle", 216, 191, 216 ), 226 StockColorItem( "Tomato", 255, 99, 71 ), 227 StockColorItem( "Turquoise", 64, 224, 208 ), 228 StockColorItem( "Violet", 238, 130, 238 ), 229 StockColorItem( "Wheat", 245, 222, 179 ), 230 StockColorItem( "White", 255, 255, 255 ), 231 StockColorItem( "WhiteSmoke", 245, 245, 245 ), 232 StockColorItem( "Yellow", 255, 255, 0 ), 233 StockColorItem( "YellowGreen", 154, 205, 50 ) 234}; 235 236//----------------------------------------------------------------------------- 237 238static bool stockColorsCreated = false; 239 240void StockColor::create( void ) 241{ 242 // Finish if already created. 243 if ( stockColorsCreated ) 244 return; 245 246 // Fetch stock color count. 247 const S32 stockColorCount = sizeof(StockColorTable) / sizeof(StockColorItem); 248 249 // Insert all stock colors. 250 for( S32 index = 0; index < stockColorCount; ++index ) 251 { 252 // Fetch stock color item. 253 StockColorItem& stockColor = StockColorTable[index]; 254 255 // Fetch stock color item. 256 StringTableEntry colorName = StringTable->insert( stockColor.mColorName ); 257 258 // Insert stock color mappings. 259 mNameToColorF.insertUnique(colorName, stockColor.mColorF); 260 mNameToColorI.insertUnique(colorName, stockColor.mColorI); 261 mColorFToName.insertUnique(stockColor.mColorF, colorName); 262 mColorIToName.insertUnique(stockColor.mColorI, colorName); 263 } 264 265 // Flag as created. 266 stockColorsCreated = true; 267} 268 269//----------------------------------------------------------------------------- 270 271void StockColor::destroy( void ) 272{ 273 // Finish if not created. 274 if ( !stockColorsCreated ) 275 return; 276 277 // Clear stock color mappings. 278 mNameToColorF.clear(); 279 mNameToColorI.clear(); 280 mColorFToName.clear(); 281 mColorIToName.clear(); 282 283 // Flag as not created. 284 stockColorsCreated = false; 285} 286 287//----------------------------------------------------------------------------- 288 289bool StockColor::isColor( const char* pStockColorName ) 290{ 291 // Sanity! 292 AssertFatal( pStockColorName != NULL, "Cannot fetch a NULL stock color name." ); 293 294 // Fetch color name. 295 StringTableEntry colorName = StringTable->insert( pStockColorName ); 296 297 // Find if color name exists or not. 298 return mNameToColorF.find( colorName ) != mNameToColorF.end(); 299} 300 301//----------------------------------------------------------------------------- 302 303const LinearColorF& StockColor::colorF( const char* pStockColorName ) 304{ 305 // Sanity! 306 AssertFatal( pStockColorName != NULL, "Cannot fetch a NULL stock color name." ); 307 308 // Fetch color name. 309 StringTableEntry colorName = StringTable->insert( pStockColorName ); 310 311 // Find stock color. 312 typeNameToColorFHash::Iterator colorItr = mNameToColorF.find( colorName ); 313 314 // Return color if found. 315 if ( colorItr != mNameToColorF.end() ) 316 return colorItr->value; 317 318 // Warn. 319 Con::warnf( "Could not find stock color name '%s'.", pStockColorName ); 320 321 // Return default stock color. 322 return mNameToColorF.find( DEFAULT_UNKNOWN_STOCK_COLOR_NAME )->value; 323} 324 325//----------------------------------------------------------------------------- 326 327const ColorI& StockColor::colorI( const char* pStockColorName ) 328{ 329 // Sanity! 330 AssertFatal( pStockColorName != NULL, "Cannot fetch a NULL stock color name." ); 331 332 // Fetch color name. 333 StringTableEntry colorName = StringTable->insert( pStockColorName ); 334 335 // Find stock color. 336 typeNameToColorIHash::Iterator colorItr = mNameToColorI.find( colorName ); 337 338 // Return color if found. 339 if ( colorItr != mNameToColorI.end() ) 340 return colorItr->value; 341 342 // Warn. 343 Con::warnf( "Could not find stock color name '%s'.", colorName ); 344 345 // Return default stock color. 346 return mNameToColorI.find( DEFAULT_UNKNOWN_STOCK_COLOR_NAME )->value; 347} 348 349//----------------------------------------------------------------------------- 350 351StringTableEntry StockColor::name( const LinearColorF& color ) 352{ 353 // Find stock color name. 354 typeColorFToNameHash::Iterator colorNameItr = mColorFToName.find( color ); 355 356 // Return name if found. 357 if ( colorNameItr != mColorFToName.end() ) 358 return colorNameItr->value; 359 360 // Return empty string. 361 return StringTable->EmptyString(); 362} 363 364//----------------------------------------------------------------------------- 365 366StringTableEntry StockColor::name( const ColorI& color ) 367{ 368 // Find stock color name. 369 typeColorIToNameHash::Iterator colorNameItr = mColorIToName.find( color ); 370 371 // Return name if found. 372 if ( colorNameItr != mColorIToName.end() ) 373 return colorNameItr->value; 374 375 // Return empty string. 376 return StringTable->EmptyString(); 377} 378 379//----------------------------------------------------------------------------- 380 381S32 StockColor::getCount( void ) 382{ 383 return sizeof(StockColorTable) / sizeof(StockColorItem); 384} 385 386//----------------------------------------------------------------------------- 387 388const StockColorItem* StockColor::getColorItem( const S32 index ) 389{ 390 // Fetch stock color count. 391 const S32 stockColorCount = StockColor::getCount(); 392 393 // Is the stock color index in range? 394 if ( index < 0 || index >= stockColorCount ) 395 { 396 // No, so warn. 397 Con::warnf("StockColor::getName() - Specified color index '%d' is out of range. Range is 0 to %d.", index, stockColorCount-1 ); 398 return NULL; 399 } 400 401 // Return color name. 402 return &(StockColorTable[index]); 403} 404 405//----------------------------------------------------------------------------- 406 407LinearColorF::LinearColorF( const char* pStockColorName ) 408{ 409 // Set stock color. 410 *this = StockColor::colorF( pStockColorName ); 411} 412 413//----------------------------------------------------------------------------- 414 415void LinearColorF::set( const char* pStockColorName ) 416{ 417 // Set stock color. 418 *this = StockColor::colorF( pStockColorName ); 419} 420 421//----------------------------------------------------------------------------- 422 423const LinearColorF& LinearColorF::StockColor( const char* pStockColorName ) 424{ 425 return StockColor::colorF( pStockColorName ); 426} 427 428//----------------------------------------------------------------------------- 429 430StringTableEntry LinearColorF::StockColor( void ) 431{ 432 // Return stock color name. 433 return StockColor::name( *this ); 434} 435 436//----------------------------------------------------------------------------- 437 438ColorI::ColorI( const char* pStockColorName ) 439{ 440 // Set stock color. 441 *this = StockColor::colorI( pStockColorName ); 442} 443 444//----------------------------------------------------------------------------- 445 446void ColorI::set( const char* pStockColorName ) 447{ 448 // Set stock color. 449 *this = StockColor::colorI( pStockColorName ); 450} 451 452//----------------------------------------------------------------------------- 453 454const ColorI& ColorI::StockColor( const char* pStockColorName ) 455{ 456 return StockColor::colorI( pStockColorName ); 457} 458 459//----------------------------------------------------------------------------- 460 461StringTableEntry ColorI::StockColor( void ) 462{ 463 // Return stock color name. 464 return StockColor::name( *this ); 465} 466 467//----------------------------------------------------------------------------- 468 469#ifdef TORQUE_USE_LEGACY_GAMMA 470//legacy pow 2.2 - powf(color, 2.2f); 471float LinearColorF::sSrgbToLinear[256] = 472{ 473 0.000000f, 0.000005f, 0.000023f, 0.000057f, 0.000107f, 0.000175f, 0.000262f, 0.000367f, 0.000493f, 474 0.000638f, 0.000805f, 0.000992f, 0.001202f, 0.001433f, 0.001687f, 0.001963f, 0.002263f, 0.002586f, 475 0.002932f, 0.003303f, 0.003697f, 0.004116f, 0.004560f, 0.005028f, 0.005522f, 0.006041f, 0.006585f, 476 0.007155f, 0.007751f, 0.008373f, 0.009021f, 0.009696f, 0.010398f, 0.011126f, 0.011881f, 0.012664f, 477 0.013473f, 0.014311f, 0.015175f, 0.016068f, 0.016988f, 0.017936f, 0.018913f, 0.019918f, 0.020951f, 478 0.022013f, 0.023104f, 0.024223f, 0.025371f, 0.026549f, 0.027755f, 0.028991f, 0.030257f, 0.031551f, 479 0.032876f, 0.034230f, 0.035614f, 0.037029f, 0.038473f, 0.039947f, 0.041452f, 0.042987f, 0.044553f, 480 0.046149f, 0.047776f, 0.049433f, 0.051122f, 0.052842f, 0.054592f, 0.056374f, 0.058187f, 0.060032f, 481 0.061907f, 0.063815f, 0.065754f, 0.067725f, 0.069727f, 0.071761f, 0.073828f, 0.075926f, 0.078057f, 482 0.080219f, 0.082414f, 0.084642f, 0.086901f, 0.089194f, 0.091518f, 0.093876f, 0.096266f, 0.098689f, 483 0.101145f, 0.103634f, 0.106156f, 0.108711f, 0.111299f, 0.113921f, 0.116576f, 0.119264f, 0.121986f, 484 0.124741f, 0.127530f, 0.130352f, 0.133209f, 0.136099f, 0.139022f, 0.141980f, 0.144972f, 0.147998f, 485 0.151058f, 0.154152f, 0.157281f, 0.160444f, 0.163641f, 0.166872f, 0.170138f, 0.173439f, 0.176774f, 486 0.180144f, 0.183549f, 0.186989f, 0.190463f, 0.193972f, 0.197516f, 0.201096f, 0.204710f, 0.208360f, 487 0.212044f, 0.215764f, 0.219520f, 0.223310f, 0.227137f, 0.230998f, 0.234895f, 0.238828f, 0.242796f, 488 0.246800f, 0.250840f, 0.254916f, 0.259027f, 0.263175f, 0.267358f, 0.271577f, 0.275833f, 0.280124f, 489 0.284452f, 0.288816f, 0.293216f, 0.297653f, 0.302126f, 0.306635f, 0.311181f, 0.315763f, 0.320382f, 490 0.325037f, 0.329729f, 0.334458f, 0.339223f, 0.344026f, 0.348865f, 0.353741f, 0.358654f, 0.363604f, 491 0.368591f, 0.373615f, 0.378676f, 0.383775f, 0.388910f, 0.394083f, 0.399293f, 0.404541f, 0.409826f, 492 0.415148f, 0.420508f, 0.425905f, 0.431340f, 0.436813f, 0.442323f, 0.447871f, 0.453456f, 0.459080f, 493 0.464741f, 0.470440f, 0.476177f, 0.481952f, 0.487765f, 0.493616f, 0.499505f, 0.505432f, 0.511398f, 494 0.517401f, 0.523443f, 0.529523f, 0.535642f, 0.541798f, 0.547994f, 0.554227f, 0.560499f, 0.566810f, 495 0.573159f, 0.579547f, 0.585973f, 0.592438f, 0.598942f, 0.605484f, 0.612066f, 0.618686f, 0.625345f, 496 0.632043f, 0.638779f, 0.645555f, 0.652370f, 0.659224f, 0.666117f, 0.673049f, 0.680020f, 0.687031f, 497 0.694081f, 0.701169f, 0.708298f, 0.715465f, 0.722672f, 0.729919f, 0.737205f, 0.744530f, 0.751895f, 498 0.759300f, 0.766744f, 0.774227f, 0.781751f, 0.789314f, 0.796917f, 0.804559f, 0.812241f, 0.819964f, 499 0.827726f, 0.835528f, 0.843370f, 0.851252f, 0.859174f, 0.867136f, 0.875138f, 0.883180f, 0.891262f, 500 0.899384f, 0.907547f, 0.915750f, 0.923993f, 0.932277f, 0.940601f, 0.948965f, 0.957370f, 0.965815f, 501 0.974300f, 0.982826f, 0.991393f, 1.000000f 502}; 503#else 504//sRGB - color < 0.04045f ? (1.0f / 12.92f) * color : powf((color + 0.055f) * (1.0f / 1.055f), 2.4f); 505float LinearColorF::sSrgbToLinear[256] = 506{ 507 0.000000f, 0.000304f, 0.000607f, 0.000911f, 0.001214f, 0.001518f, 0.001821f, 0.002125f, 0.002428f, 508 0.002732f, 0.003035f, 0.003347f, 0.003677f, 0.004025f, 0.004391f, 0.004777f, 0.005182f, 0.005605f, 509 0.006049f, 0.006512f, 0.006995f, 0.007499f, 0.008023f, 0.008568f, 0.009134f, 0.009721f, 0.010330f, 510 0.010960f, 0.011612f, 0.012286f, 0.012983f, 0.013702f, 0.014444f, 0.015209f, 0.015996f, 0.016807f, 511 0.017642f, 0.018500f, 0.019382f, 0.020289f, 0.021219f, 0.022174f, 0.023153f, 0.024158f, 0.025187f, 512 0.026241f, 0.027321f, 0.028426f, 0.029557f, 0.030713f, 0.031896f, 0.033105f, 0.034340f, 0.035601f, 513 0.036889f, 0.038204f, 0.039546f, 0.040915f, 0.042311f, 0.043735f, 0.045186f, 0.046665f, 0.048172f, 514 0.049707f, 0.051269f, 0.052861f, 0.054480f, 0.056128f, 0.057805f, 0.059511f, 0.061246f, 0.063010f, 515 0.064803f, 0.066626f, 0.068478f, 0.070360f, 0.072272f, 0.074214f, 0.076185f, 0.078187f, 0.080220f, 516 0.082283f, 0.084376f, 0.086500f, 0.088656f, 0.090842f, 0.093059f, 0.095307f, 0.097587f, 0.099899f, 517 0.102242f, 0.104616f, 0.107023f, 0.109462f, 0.111932f, 0.114435f, 0.116971f, 0.119538f, 0.122139f, 518 0.124772f, 0.127438f, 0.130136f, 0.132868f, 0.135633f, 0.138432f, 0.141263f, 0.144128f, 0.147027f, 519 0.149960f, 0.152926f, 0.155926f, 0.158961f, 0.162029f, 0.165132f, 0.168269f, 0.171441f, 0.174647f, 520 0.177888f, 0.181164f, 0.184475f, 0.187821f, 0.191202f, 0.194618f, 0.198069f, 0.201556f, 0.205079f, 521 0.208637f, 0.212231f, 0.215861f, 0.219526f, 0.223228f, 0.226966f, 0.230740f, 0.234551f, 0.238398f, 522 0.242281f, 0.246201f, 0.250158f, 0.254152f, 0.258183f, 0.262251f, 0.266356f, 0.270498f, 0.274677f, 523 0.278894f, 0.283149f, 0.287441f, 0.291771f, 0.296138f, 0.300544f, 0.304987f, 0.309469f, 0.313989f, 524 0.318547f, 0.323143f, 0.327778f, 0.332452f, 0.337164f, 0.341914f, 0.346704f, 0.351533f, 0.356400f, 525 0.361307f, 0.366253f, 0.371238f, 0.376262f, 0.381326f, 0.386430f, 0.391573f, 0.396755f, 0.401978f, 526 0.407240f, 0.412543f, 0.417885f, 0.423268f, 0.428691f, 0.434154f, 0.439657f, 0.445201f, 0.450786f, 527 0.456411f, 0.462077f, 0.467784f, 0.473532f, 0.479320f, 0.485150f, 0.491021f, 0.496933f, 0.502886f, 528 0.508881f, 0.514918f, 0.520996f, 0.527115f, 0.533276f, 0.539480f, 0.545725f, 0.552011f, 0.558340f, 529 0.564712f, 0.571125f, 0.577581f, 0.584078f, 0.590619f, 0.597202f, 0.603827f, 0.610496f, 0.617207f, 530 0.623960f, 0.630757f, 0.637597f, 0.644480f, 0.651406f, 0.658375f, 0.665387f, 0.672443f, 0.679543f, 531 0.686685f, 0.693872f, 0.701102f, 0.708376f, 0.715694f, 0.723055f, 0.730461f, 0.737911f, 0.745404f, 532 0.752942f, 0.760525f, 0.768151f, 0.775822f, 0.783538f, 0.791298f, 0.799103f, 0.806952f, 0.814847f, 533 0.822786f, 0.830770f, 0.838799f, 0.846873f, 0.854993f, 0.863157f, 0.871367f, 0.879622f, 0.887923f, 534 0.896269f, 0.904661f, 0.913099f, 0.921582f, 0.930111f, 0.938686f, 0.947307f, 0.955974f, 0.964686f, 535 0.973445f, 0.982251f, 0.991102f, 1.000000f 536}; 537#endif 538//----------------------------------------------------------------------------- 539 540DefineEngineFunction(getStockColorCount, S32, (),, 541 "@brief Gets a count of available stock colors.\n" 542 "@return A count of available stock colors.") 543{ 544 return StockColor::getCount(); 545} 546 547//----------------------------------------------------------------------------- 548 549DefineEngineFunction(getStockColorName, const char*, (S32 stockColorIndex),, 550 "@brief Gets the stock color name at the specified index.\n" 551 "@param stockColorIndex The zero-based index of the stock color name to retrieve.\n" 552 "@return The stock color name at the specified index or nothing if the string is invalid.") 553{ 554 // Fetch the color item. 555 const StockColorItem* pColorItem = StockColor::getColorItem(stockColorIndex); 556 557 return pColorItem == NULL ? NULL : pColorItem->getColorName(); 558} 559 560//----------------------------------------------------------------------------- 561 562DefineEngineFunction(isStockColor, bool, (const char* stockColorName),, 563 "@brief Gets whether the specified name is a stock color or not.\n" 564 "@param stockColorName - The stock color name to test for.\n" 565 "@return Whether the specified name is a stock color or not.\n") 566{ 567 // Return whether this is a stock color name or not. 568 return StockColor::isColor(stockColorName); 569} 570 571//----------------------------------------------------------------------------- 572 573DefineEngineFunction(getStockColorF, LinearColorF, (const char* stockColorName),, 574 "@brief Gets a floating-point-based stock color by name.\n" 575 "@param stockColorName - The stock color name to retrieve.\n" 576 "@return The stock color that matches the specified color name. Returns nothing if the color name is not found.\n") 577{ 578 // Return nothing if stock color name is invalid. 579 if (!StockColor::isColor(stockColorName)) 580 return StringTable->EmptyString(); 581 582 // Fetch stock color. 583 const LinearColorF& color = StockColor::colorF(stockColorName); 584 585 return color; 586} 587 588//----------------------------------------------------------------------------- 589 590DefineEngineFunction(getStockColorI, ColorI, (const char* stockColorName),, 591 "@brief Gets a byte-based stock color by name.\n" 592 "@param stockColorName - The stock color name to retrieve.\n" 593 "@return The stock color that matches the specified color name. Returns nothing if the color name is not found.\n") 594{ 595 // Return nothing if stock color name is invalid. 596 if (!StockColor::isColor(stockColorName)) 597 return StringTable->EmptyString(); 598 599 // Fetch stock color. 600 const ColorI& color = StockColor::colorI(stockColorName); 601 602 return color; 603} 604