palettes.h

Go to the documentation of this file.
00001 /* $Id: palettes.h 15717 2009-03-15 00:03:27Z rubidium $ */
00002 
00005 #include "../core/endian_type.hpp"
00006 
00007 #if TTD_ENDIAN == TTD_BIG_ENDIAN
00008   #define M(r, g, b) { 0xff, r, g, b }
00009 #else
00010   #define M(r, g, b) { b, g, r, 0xff }
00011 #endif /* TTD_ENDIAN == TTD_BIG_ENDIAN */
00012 
00013 static const Colour _palettes[][256] = {
00014   /* palette 0 (mixed TTD DOS + TTD Windows palette */
00015   {
00016     {  0, 0, 0, 0  }, M( 16,  16,  16), M( 32,  32,  32), M( 48,  48,  48),
00017     M( 65,  64,  65), M( 82,  80,  82), M( 98, 101,  98), M(115, 117, 115),
00018     M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184),
00019     M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
00020     M( 52,  60,  72), M( 68,  76,  92), M( 88,  96, 112), M(108, 116, 132),
00021     M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
00022     M( 48,  44,   4), M( 64,  60,  12), M( 80,  76,  20), M( 96,  92,  28),
00023     M(120, 120,  64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
00024     M( 72,  44,   4), M( 88,  60,  20), M(104,  80,  44), M(124, 104,  72),
00025     M(152, 132,  92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
00026     M( 64,   0,   4), M( 88,   4,  16), M(112,  16,  32), M(136,  32,  52),
00027     M(160,  56,  76), M(188,  84, 108), M(204, 104, 124), M(220, 132, 144),
00028     M(236, 156, 164), M(252, 188, 192), M(252, 212,   0), M(252, 232,  60),
00029     M(252, 248, 128), M( 76,  40,   0), M( 96,  60,   8), M(116,  88,  28),
00030     M(136, 116,  56), M(156, 136,  80), M(176, 156, 108), M(196, 180, 136),
00031     M( 68,  24,   0), M( 96,  44,   4), M(128,  68,   8), M(156,  96,  16),
00032     M(184, 120,  24), M(212, 156,  32), M(232, 184,  16), M(252, 212,   0),
00033     M(252, 248, 128), M(252, 252, 192), M( 32,   4,   0), M( 64,  20,   8),
00034     M( 84,  28,  16), M(108,  44,  28), M(128,  56,  40), M(148,  72,  56),
00035     M(168,  92,  76), M(184, 108,  88), M(196, 128, 108), M(212, 148, 128),
00036     M(  8,  52,   0), M( 16,  64,   0), M( 32,  80,   4), M( 48,  96,   4),
00037     M( 64, 112,  12), M( 84, 132,  20), M(104, 148,  28), M(128, 168,  44),
00038     M( 28,  52,  24), M( 44,  68,  32), M( 60,  88,  48), M( 80, 104,  60),
00039     M(104, 124,  76), M(128, 148,  92), M(152, 176, 108), M(180, 204, 124),
00040     M( 16,  52,  24), M( 32,  72,  44), M( 56,  96,  72), M( 76, 116,  88),
00041     M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
00042     M( 32,  24,   0), M( 56,  28,   0), M( 72,  40,   0), M( 88,  52,  12),
00043     M(104,  64,  24), M(124,  84,  44), M(140, 108,  64), M(160, 128,  88),
00044     M( 76,  40,  16), M( 96,  52,  24), M(116,  68,  40), M(136,  84,  56),
00045     M(164,  96,  64), M(184, 112,  80), M(204, 128,  96), M(212, 148, 112),
00046     M(224, 168, 128), M(236, 188, 148), M( 80,  28,   4), M(100,  40,  20),
00047     M(120,  56,  40), M(140,  76,  64), M(160, 100,  96), M(184, 136, 136),
00048     M( 36,  40,  68), M( 48,  52,  84), M( 64,  64, 100), M( 80,  80, 116),
00049     M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
00050     M( 40,  20, 112), M( 64,  44, 144), M( 88,  64, 172), M(104,  76, 196),
00051     M(120,  88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
00052     M(  0,  24, 108), M(  0,  36, 132), M(  0,  52, 160), M(  0,  72, 184),
00053     M(  0,  96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
00054     M(128, 196, 252), M(188, 224, 252), M( 16,  64,  96), M( 24,  80, 108),
00055     M( 40,  96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
00056     M(156, 204, 220), M(204, 240, 252), M(172,  52,  52), M(212,  52,  52),
00057     M(252,  52,  52), M(252, 100,  88), M(252, 144, 124), M(252, 184, 160),
00058     M(252, 216, 200), M(252, 244, 236), M( 72,  20, 112), M( 92,  44, 140),
00059     M(112,  68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
00060     M(204, 180, 252), M(232, 208, 252), M( 60,   0,   0), M( 92,   0,   0),
00061     M(128,   0,   0), M(160,   0,   0), M(196,   0,   0), M(224,   0,   0),
00062     M(252,   0,   0), M(252,  80,   0), M(252, 108,   0), M(252, 136,   0),
00063     M(252, 164,   0), M(252, 192,   0), M(252, 220,   0), M(252, 252,   0),
00064     M(204, 136,   8), M(228, 144,   4), M(252, 156,   0), M(252, 176,  48),
00065     M(252, 196, 100), M(252, 216, 152), M(  8,  24,  88), M( 12,  36, 104),
00066     M( 20,  52, 124), M( 28,  68, 140), M( 40,  92, 164), M( 56, 120, 188),
00067     M( 72, 152, 216), M(100, 172, 224), M( 92, 156,  52), M(108, 176,  64),
00068     M(124, 200,  76), M(144, 224,  92), M(224, 244, 252), M(204, 240, 252),
00069     M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16,  16,  16),
00070     M( 32,  32,  32), M(  8,  92, 104), M( 16, 100, 112), M( 24, 108, 120),
00071     M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
00072     M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M(  0,   0,   0),
00073     M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00074     M(252,  60,   0), M(252,  80,   0), M(252, 104,   0), M(252, 128,   0),
00075     M(252, 148,   0), M(252, 172,   0), M(252, 196,   0), M(252,   0,   0),
00076     M(252,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00077     M(252, 228,   0), M(148, 148, 148), M( 16, 101, 115), M( 24, 109, 123),
00078     M( 32, 117, 131), M( 41, 125, 139), M( 90, 165, 189), M(115, 182, 197),
00079     M(148, 202, 222), M(180, 222, 238), M(222, 246, 255), M(252, 252, 252)
00080   },
00081 
00082   /* palette 1 (TTD Windows) */
00083   {
00084     {  0, 0, 0, 0  }, M(212,   0, 212), M(212,   0, 212), M(212,   0, 212),
00085     M(212,   0, 212), M(212,   0, 212), M(212,   0, 212), M(212,   0, 212),
00086     M(212,   0, 212), M(212,   0, 212), M(168, 168, 168), M(184, 184, 184),
00087     M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
00088     M( 52,  60,  72), M( 68,  76,  92), M( 88,  96, 112), M(108, 116, 132),
00089     M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
00090     M( 48,  44,   4), M( 64,  60,  12), M( 80,  76,  20), M( 96,  92,  28),
00091     M(120, 120,  64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
00092     M(100, 100, 100), M(116, 116, 116), M(104,  80,  44), M(124, 104,  72),
00093     M(152, 132,  92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
00094     M(132, 132, 132), M( 88,   4,  16), M(112,  16,  32), M(136,  32,  52),
00095     M(160,  56,  76), M(188,  84, 108), M(204, 104, 124), M(220, 132, 144),
00096     M(236, 156, 164), M(252, 188, 192), M(252, 212,   0), M(252, 232,  60),
00097     M(252, 248, 128), M( 76,  40,   0), M( 96,  60,   8), M(116,  88,  28),
00098     M(136, 116,  56), M(156, 136,  80), M(176, 156, 108), M(196, 180, 136),
00099     M( 68,  24,   0), M( 96,  44,   4), M(128,  68,   8), M(156,  96,  16),
00100     M(184, 120,  24), M(212, 156,  32), M(232, 184,  16), M(252, 212,   0),
00101     M(252, 248, 128), M(252, 252, 192), M( 32,   4,   0), M( 64,  20,   8),
00102     M( 84,  28,  16), M(108,  44,  28), M(128,  56,  40), M(148,  72,  56),
00103     M(168,  92,  76), M(184, 108,  88), M(196, 128, 108), M(212, 148, 128),
00104     M(  8,  52,   0), M( 16,  64,   0), M( 32,  80,   4), M( 48,  96,   4),
00105     M( 64, 112,  12), M( 84, 132,  20), M(104, 148,  28), M(128, 168,  44),
00106     M( 64,  64,  64), M( 44,  68,  32), M( 60,  88,  48), M( 80, 104,  60),
00107     M(104, 124,  76), M(128, 148,  92), M(152, 176, 108), M(180, 204, 124),
00108     M( 16,  52,  24), M( 32,  72,  44), M( 56,  96,  72), M( 76, 116,  88),
00109     M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
00110     M( 32,  24,   0), M( 56,  28,   0), M( 80,  80,  80), M( 88,  52,  12),
00111     M(104,  64,  24), M(124,  84,  44), M(140, 108,  64), M(160, 128,  88),
00112     M( 76,  40,  16), M( 96,  52,  24), M(116,  68,  40), M(136,  84,  56),
00113     M(164,  96,  64), M(184, 112,  80), M(204, 128,  96), M(212, 148, 112),
00114     M(224, 168, 128), M(236, 188, 148), M( 80,  28,   4), M(100,  40,  20),
00115     M(120,  56,  40), M(140,  76,  64), M(160, 100,  96), M(184, 136, 136),
00116     M( 36,  40,  68), M( 48,  52,  84), M( 64,  64, 100), M( 80,  80, 116),
00117     M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
00118     M( 48,  48,  48), M( 64,  44, 144), M( 88,  64, 172), M(104,  76, 196),
00119     M(120,  88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
00120     M(  0,  24, 108), M(  0,  36, 132), M(  0,  52, 160), M(  0,  72, 184),
00121     M(  0,  96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
00122     M(128, 196, 252), M(188, 224, 252), M( 16,  64,  96), M( 24,  80, 108),
00123     M( 40,  96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
00124     M(156, 204, 220), M(204, 240, 252), M(172,  52,  52), M(212,  52,  52),
00125     M(252,  52,  52), M(252, 100,  88), M(252, 144, 124), M(252, 184, 160),
00126     M(252, 216, 200), M(252, 244, 236), M( 72,  20, 112), M( 92,  44, 140),
00127     M(112,  68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
00128     M(204, 180, 252), M(232, 208, 252), M( 60,   0,   0), M( 92,   0,   0),
00129     M(128,   0,   0), M(160,   0,   0), M(196,   0,   0), M(224,   0,   0),
00130     M(252,   0,   0), M(252,  80,   0), M(252, 108,   0), M(252, 136,   0),
00131     M(252, 164,   0), M(252, 192,   0), M(252, 220,   0), M(252, 252,   0),
00132     M(204, 136,   8), M(228, 144,   4), M(252, 156,   0), M(252, 176,  48),
00133     M(252, 196, 100), M(252, 216, 152), M(  8,  24,  88), M( 12,  36, 104),
00134     M( 20,  52, 124), M( 28,  68, 140), M( 40,  92, 164), M( 56, 120, 188),
00135     M( 72, 152, 216), M(100, 172, 224), M( 92, 156,  52), M(108, 176,  64),
00136     M(124, 200,  76), M(144, 224,  92), M(224, 244, 252), M(204, 240, 252),
00137     M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16,  16,  16),
00138     M( 32,  32,  32), M(  8,  92, 104), M( 16, 100, 112), M( 24, 108, 120),
00139     M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
00140     M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M(  0,   0,   0),
00141     M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00142     M(252,  60,   0), M(252,  80,   0), M(252, 104,   0), M(252, 128,   0),
00143     M(252, 148,   0), M(252, 172,   0), M(252, 196,   0), M(252,   0,   0),
00144     M(252,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00145     M(252, 228,   0), M(148, 148, 148), M(212,   0, 212), M(212,   0, 212),
00146     M(212,   0, 212), M(212,   0, 212), M(212,   0, 212), M(212,   0, 212),
00147     M(212,   0, 212), M(212,   0, 212), M(212,   0, 212), M(252, 252, 252)
00148   }
00149 };
00150 
00151 #define GET_PALETTE(x) _palettes[x]
00152 
00153 struct ExtraPaletteValues {
00154   Colour dark_water[15];        
00155   Colour dark_water_TOY[15];    
00156   Colour lighthouse[12];        
00157   Colour oil_ref[21];           
00158   Colour fizzy_drink[15];       
00159   Colour glitter_water[45];     
00160   Colour glitter_water_TOY[45]; 
00161 };
00162 
00163 static const ExtraPaletteValues _extra_palette_values = {
00164   /* dark blue water */
00165   { M( 32,  68, 112), M( 36,  72, 116), M( 40,  76, 120), M( 44,  80, 124),
00166     M( 48,  84, 128) },
00167 
00168   /* dark blue water Toyland */
00169   { M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136),
00170     M( 44, 124, 140) },
00171 
00172   /* lighthouse & stadium */
00173   { M(240, 208,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0) },
00174 
00175   /* oil refinery */
00176   { M(252,  60,   0), M(252,  84,   0), M(252, 108,   0), M(252, 124,   0),
00177     M(252, 148,   0), M(252, 172,   0), M(252, 196,   0) },
00178 
00179   /* fizzy drinks */
00180   { M( 76,  24,   8), M(108,  44,  24), M(144,  72,  52), M(176, 108,  84),
00181     M(212, 148, 128) },
00182 
00183   /* glittery water */
00184   { M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168),
00185     M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00186     M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00187     M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) },
00188 
00189   /* glittery water Toyland */
00190   { M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196),
00191     M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00192     M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00193     M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) }
00194 };
00195 #undef M
00196 
00197 /* Colour table for colours in lang files (e.g. {BLACK}) */
00198 struct StringColour {
00199   byte text;
00200   byte shadow;
00201 };
00202 
00203 static const StringColour _string_colourmap[][17] = {
00204   { // DOS palette.
00205     { 150,   1 }, // TC_BLUE
00206     {  12,   1 }, // TC_SILVER
00207     { 189,   1 }, // TC_GOLD
00208     { 184,   1 }, // TC_RED
00209     { 174,   1 }, // TC_PURPLE
00210     {  30,   1 }, // TC_LIGHT_BROWN
00211     { 195,   1 }, // TC_ORANGE
00212     { 209,   1 }, // TC_GREEN
00213     {  68,   1 }, // TC_YELLOW
00214     {  95,   1 }, // TC_DARK_GREEN
00215     {  79,   1 }, // TC_CREAM
00216     { 116,   1 }, // TC_BROWN
00217     {  15,   1 }, // TC_WHITE
00218     { 152,   1 }, // TC_LIGHT_BLUE
00219     {   6,   1 }, // TC_GREY
00220     { 133,   1 }, // TC_DARK_BLUE
00221     {   1,   0 }, // TC_BLACK
00222   },
00223   { // Windows palette.
00224     { 150, 215 }, // TC_BLUE
00225     {  12, 215 }, // TC_SILVER
00226     { 189, 215 }, // TC_GOLD
00227     { 184, 215 }, // TC_RED
00228     { 174, 215 }, // TC_PURPLE
00229     {  30, 215 }, // TC_LIGHT_BROWN
00230     { 195, 215 }, // TC_ORANGE
00231     { 209, 215 }, // TC_GREEN
00232     {  68, 215 }, // TC_YELLOW
00233     {  95, 215 }, // TC_DARK_GREEN
00234     {  79, 215 }, // TC_CREAM
00235     { 116, 215 }, // TC_BROWN
00236     {  15, 215 }, // TC_WHITE
00237     { 152, 215 }, // TC_LIGHT_BLUE
00238     {  32, 215 }, // TC_GREY
00239     { 133, 215 }, // TC_DARK_BLUE
00240     { 215,   0 }, // TC_BLACK
00241   }
00242 };

Generated on Wed Jul 15 20:36:02 2009 for OpenTTD by  doxygen 1.5.6