palettes.h

Go to the documentation of this file.
00001 /* $Id$ */
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 static const uint EPV_CYCLES_DARK_WATER    =  5; 
00158 static const uint EPV_CYCLES_LIGHTHOUSE    =  4; 
00159 static const uint EPV_CYCLES_OIL_REFINERY  =  7; 
00160 static const uint EPV_CYCLES_FIZZY_DRINK   =  5; 
00161 static const uint EPV_CYCLES_GLITTER_WATER = 15; 
00162 
00164 struct ExtraPaletteValues {
00165   Colour dark_water[EPV_CYCLES_DARK_WATER];               
00166   Colour dark_water_toyland[EPV_CYCLES_DARK_WATER];       
00167   Colour lighthouse[EPV_CYCLES_LIGHTHOUSE];               
00168   Colour oil_refinery[EPV_CYCLES_OIL_REFINERY];           
00169   Colour fizzy_drink[EPV_CYCLES_FIZZY_DRINK];             
00170   Colour glitter_water[EPV_CYCLES_GLITTER_WATER];         
00171   Colour glitter_water_toyland[EPV_CYCLES_GLITTER_WATER]; 
00172 };
00173 
00175 static const ExtraPaletteValues _extra_palette_values = {
00176   /* dark blue water */
00177   { M( 32,  68, 112), M( 36,  72, 116), M( 40,  76, 120), M( 44,  80, 124),
00178     M( 48,  84, 128) },
00179 
00180   /* dark blue water Toyland */
00181   { M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136),
00182     M( 44, 124, 140) },
00183 
00184   /* lighthouse & stadium */
00185   { M(240, 208,   0), M(  0,   0,   0), M(  0,   0,   0), M(  0,   0,   0) },
00186 
00187   /* oil refinery */
00188   { M(252,  60,   0), M(252,  84,   0), M(252, 108,   0), M(252, 124,   0),
00189     M(252, 148,   0), M(252, 172,   0), M(252, 196,   0) },
00190 
00191   /* fizzy drinks */
00192   { M( 76,  24,   8), M(108,  44,  24), M(144,  72,  52), M(176, 108,  84),
00193     M(212, 148, 128) },
00194 
00195   /* glittery water */
00196   { M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168),
00197     M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00198     M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00199     M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) },
00200 
00201   /* glittery water Toyland */
00202   { M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196),
00203     M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00204     M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00205     M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) }
00206 };
00207 #undef M
00208 
00210 static const byte _string_colourmap[][17] = {
00211   { // DOS palette.
00212     150, // TC_BLUE
00213      12, // TC_SILVER
00214     189, // TC_GOLD
00215     184, // TC_RED
00216     174, // TC_PURPLE
00217      30, // TC_LIGHT_BROWN
00218     195, // TC_ORANGE
00219     209, // TC_GREEN
00220      68, // TC_YELLOW
00221      95, // TC_DARK_GREEN
00222      79, // TC_CREAM
00223     116, // TC_BROWN
00224      15, // TC_WHITE
00225     152, // TC_LIGHT_BLUE
00226       6, // TC_GREY
00227     133, // TC_DARK_BLUE
00228       1, // TC_BLACK
00229   },
00230   { // Windows palette.
00231     150, // TC_BLUE
00232      12, // TC_SILVER
00233     189, // TC_GOLD
00234     184, // TC_RED
00235     174, // TC_PURPLE
00236      30, // TC_LIGHT_BROWN
00237     195, // TC_ORANGE
00238     209, // TC_GREEN
00239      68, // TC_YELLOW
00240      95, // TC_DARK_GREEN
00241      79, // TC_CREAM
00242     116, // TC_BROWN
00243      15, // TC_WHITE
00244     152, // TC_LIGHT_BLUE
00245      32, // TC_GREY
00246     133, // TC_DARK_BLUE
00247     215, // TC_BLACK
00248   }
00249 };

Generated on Sun Jan 23 01:49:10 2011 for OpenTTD by  doxygen 1.6.1