palettes.h

Go to the documentation of this file.
00001 /* $Id: palettes.h 17900 2009-10-29 11:24:58Z rubidium $ */
00002 
00003 /*
00004  * This file is part of OpenTTD.
00005  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
00006  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00007  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
00008  */
00009 
00012 #include "../core/endian_type.hpp"
00013 
00014 #define M(r, g, b) { 0xff << 24 | (r) << 16 | (g) << 8 | (b) }
00015 
00016 static const Colour _palettes[][256] = {
00017   /* palette 0 (mixed TTD DOS + TTD Windows palette */
00018   {
00019     {             0}, M( 16,  16,  16), M( 32,  32,  32), M( 48,  48,  48),
00020     M( 65,  64,  65), M( 82,  80,  82), M( 98, 101,  98), M(115, 117, 115),
00021     M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184),
00022     M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
00023     M( 52,  60,  72), M( 68,  76,  92), M( 88,  96, 112), M(108, 116, 132),
00024     M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
00025     M( 48,  44,   4), M( 64,  60,  12), M( 80,  76,  20), M( 96,  92,  28),
00026     M(120, 120,  64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
00027     M( 72,  44,   4), M( 88,  60,  20), M(104,  80,  44), M(124, 104,  72),
00028     M(152, 132,  92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
00029     M( 64,   0,   4), M( 88,   4,  16), M(112,  16,  32), M(136,  32,  52),
00030     M(160,  56,  76), M(188,  84, 108), M(204, 104, 124), M(220, 132, 144),
00031     M(236, 156, 164), M(252, 188, 192), M(252, 212,   0), M(252, 232,  60),
00032     M(252, 248, 128), M( 76,  40,   0), M( 96,  60,   8), M(116,  88,  28),
00033     M(136, 116,  56), M(156, 136,  80), M(176, 156, 108), M(196, 180, 136),
00034     M( 68,  24,   0), M( 96,  44,   4), M(128,  68,   8), M(156,  96,  16),
00035     M(184, 120,  24), M(212, 156,  32), M(232, 184,  16), M(252, 212,   0),
00036     M(252, 248, 128), M(252, 252, 192), M( 32,   4,   0), M( 64,  20,   8),
00037     M( 84,  28,  16), M(108,  44,  28), M(128,  56,  40), M(148,  72,  56),
00038     M(168,  92,  76), M(184, 108,  88), M(196, 128, 108), M(212, 148, 128),
00039     M(  8,  52,   0), M( 16,  64,   0), M( 32,  80,   4), M( 48,  96,   4),
00040     M( 64, 112,  12), M( 84, 132,  20), M(104, 148,  28), M(128, 168,  44),
00041     M( 28,  52,  24), M( 44,  68,  32), M( 60,  88,  48), M( 80, 104,  60),
00042     M(104, 124,  76), M(128, 148,  92), M(152, 176, 108), M(180, 204, 124),
00043     M( 16,  52,  24), M( 32,  72,  44), M( 56,  96,  72), M( 76, 116,  88),
00044     M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
00045     M( 32,  24,   0), M( 56,  28,   0), M( 72,  40,   0), M( 88,  52,  12),
00046     M(104,  64,  24), M(124,  84,  44), M(140, 108,  64), M(160, 128,  88),
00047     M( 76,  40,  16), M( 96,  52,  24), M(116,  68,  40), M(136,  84,  56),
00048     M(164,  96,  64), M(184, 112,  80), M(204, 128,  96), M(212, 148, 112),
00049     M(224, 168, 128), M(236, 188, 148), M( 80,  28,   4), M(100,  40,  20),
00050     M(120,  56,  40), M(140,  76,  64), M(160, 100,  96), M(184, 136, 136),
00051     M( 36,  40,  68), M( 48,  52,  84), M( 64,  64, 100), M( 80,  80, 116),
00052     M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
00053     M( 40,  20, 112), M( 64,  44, 144), M( 88,  64, 172), M(104,  76, 196),
00054     M(120,  88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
00055     M(  0,  24, 108), M(  0,  36, 132), M(  0,  52, 160), M(  0,  72, 184),
00056     M(  0,  96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
00057     M(128, 196, 252), M(188, 224, 252), M( 16,  64,  96), M( 24,  80, 108),
00058     M( 40,  96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
00059     M(156, 204, 220), M(204, 240, 252), M(172,  52,  52), M(212,  52,  52),
00060     M(252,  52,  52), M(252, 100,  88), M(252, 144, 124), M(252, 184, 160),
00061     M(252, 216, 200), M(252, 244, 236), M( 72,  20, 112), M( 92,  44, 140),
00062     M(112,  68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
00063     M(204, 180, 252), M(232, 208, 252), M( 60,   0,   0), M( 92,   0,   0),
00064     M(128,   0,   0), M(160,   0,   0), M(196,   0,   0), M(224,   0,   0),
00065     M(252,   0,   0), M(252,  80,   0), M(252, 108,   0), M(252, 136,   0),
00066     M(252, 164,   0), M(252, 192,   0), M(252, 220,   0), M(252, 252,   0),
00067     M(204, 136,   8), M(228, 144,   4), M(252, 156,   0), M(252, 176,  48),
00068     M(252, 196, 100), M(252, 216, 152), M(  8,  24,  88), M( 12,  36, 104),
00069     M( 20,  52, 124), M( 28,  68, 140), M( 40,  92, 164), M( 56, 120, 188),
00070     M( 72, 152, 216), M(100, 172, 224), M( 92, 156,  52), M(108, 176,  64),
00071     M(124, 200,  76), M(144, 224,  92), M(224, 244, 252), M(204, 240, 252),
00072     M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16,  16,  16),
00073     M( 32,  32,  32), M(  8,  92, 104), M( 16, 100, 112), M( 24, 108, 120),
00074     M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
00075     M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M(  0,   0,   0),
00076     M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00077     M(252,  60,   0), M(252,  80,   0), M(252, 104,   0), M(252, 128,   0),
00078     M(252, 148,   0), M(252, 172,   0), M(252, 196,   0), M(252,   0,   0),
00079     M(252,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00080     M(252, 228,   0), M(148, 148, 148), M( 16, 101, 115), M( 24, 109, 123),
00081     M( 32, 117, 131), M( 41, 125, 139), M( 90, 165, 189), M(115, 182, 197),
00082     M(148, 202, 222), M(180, 222, 238), M(222, 246, 255), M(252, 252, 252)
00083   },
00084 
00085   /* palette 1 (TTD Windows) */
00086   {
00087     {             0}, M(212,   0, 212), M(212,   0, 212), M(212,   0, 212),
00088     M(212,   0, 212), M(212,   0, 212), M(212,   0, 212), M(212,   0, 212),
00089     M(212,   0, 212), M(212,   0, 212), M(168, 168, 168), M(184, 184, 184),
00090     M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
00091     M( 52,  60,  72), M( 68,  76,  92), M( 88,  96, 112), M(108, 116, 132),
00092     M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
00093     M( 48,  44,   4), M( 64,  60,  12), M( 80,  76,  20), M( 96,  92,  28),
00094     M(120, 120,  64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
00095     M(100, 100, 100), M(116, 116, 116), M(104,  80,  44), M(124, 104,  72),
00096     M(152, 132,  92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
00097     M(132, 132, 132), M( 88,   4,  16), M(112,  16,  32), M(136,  32,  52),
00098     M(160,  56,  76), M(188,  84, 108), M(204, 104, 124), M(220, 132, 144),
00099     M(236, 156, 164), M(252, 188, 192), M(252, 212,   0), M(252, 232,  60),
00100     M(252, 248, 128), M( 76,  40,   0), M( 96,  60,   8), M(116,  88,  28),
00101     M(136, 116,  56), M(156, 136,  80), M(176, 156, 108), M(196, 180, 136),
00102     M( 68,  24,   0), M( 96,  44,   4), M(128,  68,   8), M(156,  96,  16),
00103     M(184, 120,  24), M(212, 156,  32), M(232, 184,  16), M(252, 212,   0),
00104     M(252, 248, 128), M(252, 252, 192), M( 32,   4,   0), M( 64,  20,   8),
00105     M( 84,  28,  16), M(108,  44,  28), M(128,  56,  40), M(148,  72,  56),
00106     M(168,  92,  76), M(184, 108,  88), M(196, 128, 108), M(212, 148, 128),
00107     M(  8,  52,   0), M( 16,  64,   0), M( 32,  80,   4), M( 48,  96,   4),
00108     M( 64, 112,  12), M( 84, 132,  20), M(104, 148,  28), M(128, 168,  44),
00109     M( 64,  64,  64), M( 44,  68,  32), M( 60,  88,  48), M( 80, 104,  60),
00110     M(104, 124,  76), M(128, 148,  92), M(152, 176, 108), M(180, 204, 124),
00111     M( 16,  52,  24), M( 32,  72,  44), M( 56,  96,  72), M( 76, 116,  88),
00112     M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
00113     M( 32,  24,   0), M( 56,  28,   0), M( 80,  80,  80), M( 88,  52,  12),
00114     M(104,  64,  24), M(124,  84,  44), M(140, 108,  64), M(160, 128,  88),
00115     M( 76,  40,  16), M( 96,  52,  24), M(116,  68,  40), M(136,  84,  56),
00116     M(164,  96,  64), M(184, 112,  80), M(204, 128,  96), M(212, 148, 112),
00117     M(224, 168, 128), M(236, 188, 148), M( 80,  28,   4), M(100,  40,  20),
00118     M(120,  56,  40), M(140,  76,  64), M(160, 100,  96), M(184, 136, 136),
00119     M( 36,  40,  68), M( 48,  52,  84), M( 64,  64, 100), M( 80,  80, 116),
00120     M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
00121     M( 48,  48,  48), M( 64,  44, 144), M( 88,  64, 172), M(104,  76, 196),
00122     M(120,  88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
00123     M(  0,  24, 108), M(  0,  36, 132), M(  0,  52, 160), M(  0,  72, 184),
00124     M(  0,  96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
00125     M(128, 196, 252), M(188, 224, 252), M( 16,  64,  96), M( 24,  80, 108),
00126     M( 40,  96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
00127     M(156, 204, 220), M(204, 240, 252), M(172,  52,  52), M(212,  52,  52),
00128     M(252,  52,  52), M(252, 100,  88), M(252, 144, 124), M(252, 184, 160),
00129     M(252, 216, 200), M(252, 244, 236), M( 72,  20, 112), M( 92,  44, 140),
00130     M(112,  68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
00131     M(204, 180, 252), M(232, 208, 252), M( 60,   0,   0), M( 92,   0,   0),
00132     M(128,   0,   0), M(160,   0,   0), M(196,   0,   0), M(224,   0,   0),
00133     M(252,   0,   0), M(252,  80,   0), M(252, 108,   0), M(252, 136,   0),
00134     M(252, 164,   0), M(252, 192,   0), M(252, 220,   0), M(252, 252,   0),
00135     M(204, 136,   8), M(228, 144,   4), M(252, 156,   0), M(252, 176,  48),
00136     M(252, 196, 100), M(252, 216, 152), M(  8,  24,  88), M( 12,  36, 104),
00137     M( 20,  52, 124), M( 28,  68, 140), M( 40,  92, 164), M( 56, 120, 188),
00138     M( 72, 152, 216), M(100, 172, 224), M( 92, 156,  52), M(108, 176,  64),
00139     M(124, 200,  76), M(144, 224,  92), M(224, 244, 252), M(204, 240, 252),
00140     M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16,  16,  16),
00141     M( 32,  32,  32), M(  8,  92, 104), M( 16, 100, 112), M( 24, 108, 120),
00142     M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
00143     M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M(  0,   0,   0),
00144     M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00145     M(252,  60,   0), M(252,  80,   0), M(252, 104,   0), M(252, 128,   0),
00146     M(252, 148,   0), M(252, 172,   0), M(252, 196,   0), M(252,   0,   0),
00147     M(252,   0,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0),
00148     M(252, 228,   0), M(148, 148, 148), M(212,   0, 212), M(212,   0, 212),
00149     M(212,   0, 212), M(212,   0, 212), M(212,   0, 212), M(212,   0, 212),
00150     M(212,   0, 212), M(212,   0, 212), M(212,   0, 212), M(252, 252, 252)
00151   }
00152 };
00153 
00154 #define GET_PALETTE(x) _palettes[x]
00155 
00157 enum {
00158   EPV_CYCLES_DARK_WATER    =  5, 
00159   EPV_CYCLES_LIGHTHOUSE    =  4, 
00160   EPV_CYCLES_OIL_REFINERY  =  7, 
00161   EPV_CYCLES_FIZZY_DRINK   =  5, 
00162   EPV_CYCLES_GLITTER_WATER = 15, 
00163 };
00164 
00166 struct ExtraPaletteValues {
00167   Colour dark_water[EPV_CYCLES_DARK_WATER];               
00168   Colour dark_water_toyland[EPV_CYCLES_DARK_WATER];       
00169   Colour lighthouse[EPV_CYCLES_LIGHTHOUSE];               
00170   Colour oil_refinery[EPV_CYCLES_OIL_REFINERY];           
00171   Colour fizzy_drink[EPV_CYCLES_FIZZY_DRINK];             
00172   Colour glitter_water[EPV_CYCLES_GLITTER_WATER];         
00173   Colour glitter_water_toyland[EPV_CYCLES_GLITTER_WATER]; 
00174 };
00175 
00177 static const ExtraPaletteValues _extra_palette_values = {
00178   /* dark blue water */
00179   { M( 32,  68, 112), M( 36,  72, 116), M( 40,  76, 120), M( 44,  80, 124),
00180     M( 48,  84, 128) },
00181 
00182   /* dark blue water Toyland */
00183   { M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136),
00184     M( 44, 124, 140) },
00185 
00186   /* lighthouse & stadium */
00187   { M(240, 208,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0) },
00188 
00189   /* oil refinery */
00190   { M(252,  60,   0), M(252,  84,   0), M(252, 108,   0), M(252, 124,   0),
00191     M(252, 148,   0), M(252, 172,   0), M(252, 196,   0) },
00192 
00193   /* fizzy drinks */
00194   { M( 76,  24,   8), M(108,  44,  24), M(144,  72,  52), M(176, 108,  84),
00195     M(212, 148, 128) },
00196 
00197   /* glittery water */
00198   { M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168),
00199     M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00200     M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00201     M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) },
00202 
00203   /* glittery water Toyland */
00204   { M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196),
00205     M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00206     M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00207     M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) }
00208 };
00209 #undef M
00210 
00211 /* Colour table for colours in lang files (e.g. {BLACK}) */
00212 struct StringColour {
00213   byte text;
00214   byte shadow;
00215 };
00216 
00217 static const StringColour _string_colourmap[][17] = {
00218   { // DOS palette.
00219     { 150,   1 }, // TC_BLUE
00220     {  12,   1 }, // TC_SILVER
00221     { 189,   1 }, // TC_GOLD
00222     { 184,   1 }, // TC_RED
00223     { 174,   1 }, // TC_PURPLE
00224     {  30,   1 }, // TC_LIGHT_BROWN
00225     { 195,   1 }, // TC_ORANGE
00226     { 209,   1 }, // TC_GREEN
00227     {  68,   1 }, // TC_YELLOW
00228     {  95,   1 }, // TC_DARK_GREEN
00229     {  79,   1 }, // TC_CREAM
00230     { 116,   1 }, // TC_BROWN
00231     {  15,   1 }, // TC_WHITE
00232     { 152,   1 }, // TC_LIGHT_BLUE
00233     {   6,   1 }, // TC_GREY
00234     { 133,   1 }, // TC_DARK_BLUE
00235     {   1,   0 }, // TC_BLACK
00236   },
00237   { // Windows palette.
00238     { 150, 215 }, // TC_BLUE
00239     {  12, 215 }, // TC_SILVER
00240     { 189, 215 }, // TC_GOLD
00241     { 184, 215 }, // TC_RED
00242     { 174, 215 }, // TC_PURPLE
00243     {  30, 215 }, // TC_LIGHT_BROWN
00244     { 195, 215 }, // TC_ORANGE
00245     { 209, 215 }, // TC_GREEN
00246     {  68, 215 }, // TC_YELLOW
00247     {  95, 215 }, // TC_DARK_GREEN
00248     {  79, 215 }, // TC_CREAM
00249     { 116, 215 }, // TC_BROWN
00250     {  15, 215 }, // TC_WHITE
00251     { 152, 215 }, // TC_LIGHT_BLUE
00252     {  32, 215 }, // TC_GREY
00253     { 133, 215 }, // TC_DARK_BLUE
00254     { 215,   0 }, // TC_BLACK
00255   }
00256 };

Generated on Sat Jun 19 17:14:54 2010 for OpenTTD by  doxygen 1.6.1