palettes.h

Go to the documentation of this file.
00001 /* $Id: palettes.h 19812 2010-05-13 09:44:44Z 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 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 
00209 /* Colour table for colours in lang files (e.g. {BLACK}) */
00210 struct StringColour {
00211   byte text;
00212   byte shadow;
00213 };
00214 
00215 static const StringColour _string_colourmap[][17] = {
00216   { // DOS palette.
00217     { 150,   1 }, // TC_BLUE
00218     {  12,   1 }, // TC_SILVER
00219     { 189,   1 }, // TC_GOLD
00220     { 184,   1 }, // TC_RED
00221     { 174,   1 }, // TC_PURPLE
00222     {  30,   1 }, // TC_LIGHT_BROWN
00223     { 195,   1 }, // TC_ORANGE
00224     { 209,   1 }, // TC_GREEN
00225     {  68,   1 }, // TC_YELLOW
00226     {  95,   1 }, // TC_DARK_GREEN
00227     {  79,   1 }, // TC_CREAM
00228     { 116,   1 }, // TC_BROWN
00229     {  15,   1 }, // TC_WHITE
00230     { 152,   1 }, // TC_LIGHT_BLUE
00231     {   6,   1 }, // TC_GREY
00232     { 133,   1 }, // TC_DARK_BLUE
00233     {   1,   0 }, // TC_BLACK
00234   },
00235   { // Windows palette.
00236     { 150, 215 }, // TC_BLUE
00237     {  12, 215 }, // TC_SILVER
00238     { 189, 215 }, // TC_GOLD
00239     { 184, 215 }, // TC_RED
00240     { 174, 215 }, // TC_PURPLE
00241     {  30, 215 }, // TC_LIGHT_BROWN
00242     { 195, 215 }, // TC_ORANGE
00243     { 209, 215 }, // TC_GREEN
00244     {  68, 215 }, // TC_YELLOW
00245     {  95, 215 }, // TC_DARK_GREEN
00246     {  79, 215 }, // TC_CREAM
00247     { 116, 215 }, // TC_BROWN
00248     {  15, 215 }, // TC_WHITE
00249     { 152, 215 }, // TC_LIGHT_BLUE
00250     {  32, 215 }, // TC_GREY
00251     { 133, 215 }, // TC_DARK_BLUE
00252     { 215,   0 }, // TC_BLACK
00253   }
00254 };

Generated on Thu Dec 23 23:41:33 2010 for OpenTTD by  doxygen 1.6.1