added setup options to select color palettes for BD engine
[rocksndiamonds.git] / src / game_bd / bd_colors.h
1 /*
2  * Copyright (c) 2007, 2008, 2009, Czirkos Zoltan <cirix@fw.hu>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #ifndef BD_COLORS_H
18 #define BD_COLORS_H
19
20
21 typedef unsigned int GdColor;
22
23 /* color internal:
24    XXRRGGBB;
25    XX is 0 for RGB,
26          1 for c64 colors (bb=index)
27          3 for c64dtv (bb=index)
28          2 for atari colors (bb=index)
29 */
30
31 typedef enum _color_type
32 {
33   GD_COLOR_TYPE_RGB     = 0,
34   GD_COLOR_TYPE_C64     = 1,
35   GD_COLOR_TYPE_C64DTV  = 2,
36   GD_COLOR_TYPE_ATARI   = 3,
37
38   GD_COLOR_TYPE_UNKNOWN         // should be the last one
39 } GdColorType;
40
41 // traditional c64 color indexes.
42 #define GD_COLOR_INDEX_BLACK                    0
43 #define GD_COLOR_INDEX_WHITE                    1
44 #define GD_COLOR_INDEX_RED                      2
45 #define GD_COLOR_INDEX_CYAN                     3
46 #define GD_COLOR_INDEX_PURPLE                   4
47 #define GD_COLOR_INDEX_GREEN                    5
48 #define GD_COLOR_INDEX_BLUE                     6
49 #define GD_COLOR_INDEX_YELLOW                   7
50 #define GD_COLOR_INDEX_ORANGE                   8
51 #define GD_COLOR_INDEX_BROWN                    9
52 #define GD_COLOR_INDEX_LIGHTRED                 10
53 #define GD_COLOR_INDEX_GRAY1                    11
54 #define GD_COLOR_INDEX_GRAY2                    12
55 #define GD_COLOR_INDEX_LIGHTGREEN               13
56 #define GD_COLOR_INDEX_LIGHTBLUE                14
57 #define GD_COLOR_INDEX_GRAY3                    15
58
59 #define GD_GDASH_BLACK                          gd_gdash_color(GD_COLOR_INDEX_BLACK)
60 #define GD_GDASH_WHITE                          gd_gdash_color(GD_COLOR_INDEX_WHITE)
61 #define GD_GDASH_RED                            gd_gdash_color(GD_COLOR_INDEX_RED)
62 #define GD_GDASH_CYAN                           gd_gdash_color(GD_COLOR_INDEX_CYAN)
63 #define GD_GDASH_PURPLE                         gd_gdash_color(GD_COLOR_INDEX_PURPLE)
64 #define GD_GDASH_GREEN                          gd_gdash_color(GD_COLOR_INDEX_GREEN)
65 #define GD_GDASH_BLUE                           gd_gdash_color(GD_COLOR_INDEX_BLUE)
66 #define GD_GDASH_YELLOW                         gd_gdash_color(GD_COLOR_INDEX_YELLOW)
67 #define GD_GDASH_ORANGE                         gd_gdash_color(GD_COLOR_INDEX_ORANGE)
68 #define GD_GDASH_BROWN                          gd_gdash_color(GD_COLOR_INDEX_BROWN)
69 #define GD_GDASH_LIGHTRED                       gd_gdash_color(GD_COLOR_INDEX_LIGHTRED)
70 #define GD_GDASH_GRAY1                          gd_gdash_color(GD_COLOR_INDEX_GRAY1)
71 #define GD_GDASH_GRAY2                          gd_gdash_color(GD_COLOR_INDEX_GRAY2)
72 #define GD_GDASH_LIGHTGREEN                     gd_gdash_color(GD_COLOR_INDEX_LIGHTGREEN)
73 #define GD_GDASH_LIGHTBLUE                      gd_gdash_color(GD_COLOR_INDEX_LIGHTBLUE)
74 #define GD_GDASH_GRAY3                          gd_gdash_color(GD_COLOR_INDEX_GRAY3)
75
76 #define GD_GDASH_MIDDLEBLUE                     gd_gdash_color(16)
77
78 #define GD_COLOR_INVALID                        0xFFFFFFFF
79
80 #define GD_C64_COLOR(index)                     ((GD_COLOR_TYPE_C64 << 24) + (index))
81
82 // palette numbers must match pointer array positions in source file
83 #define GD_PALETTE_C64_VICE_NEW                 0
84 #define GD_PALETTE_C64_VICE_OLD                 1
85 #define GD_PALETTE_C64_VIDE_DEFAULT             2
86 #define GD_PALETTE_C64_C64HQ                    3
87 #define GD_PALETTE_C64_C64S                     4
88 #define GD_PALETTE_C64_CCS64                    5
89 #define GD_PALETTE_C64_FRODO                    6
90 #define GD_PALETTE_C64_GODOT                    7
91 #define GD_PALETTE_C64_PC64                     8
92 #define GD_PALETTE_C64_RTADASH                  9
93
94 #define GD_DEFAULT_PALETTE_C64                  GD_PALETTE_C64_VICE_NEW
95
96 // palette numbers must match pointer array positions in source file
97 #define GD_PALETTE_C64DTV_SPIFF                 0
98 #define GD_PALETTE_C64DTV_MURRAY                1
99
100 #define GD_DEFAULT_PALETTE_C64DTV               GD_PALETTE_C64DTV_SPIFF
101
102 // palette numbers must match pointer array positions in source file
103 #define GD_PALETTE_ATARI_BUILTIN                0
104 #define GD_PALETTE_ATARI_BUILTIN_CONTRAST       1
105 #define GD_PALETTE_ATARI_DEFAULT                2
106 #define GD_PALETTE_ATARI_JAKUB                  3
107 #define GD_PALETTE_ATARI_JAKUB_CONTRAST         4
108 #define GD_PALETTE_ATARI_REAL                   5
109 #define GD_PALETTE_ATARI_REAL_CONTRAST          6
110 #define GD_PALETTE_ATARI_XFORMER                7
111
112 #define GD_DEFAULT_PALETTE_ATARI                GD_PALETTE_ATARI_BUILTIN
113
114
115 // color
116 GdColor gd_c64_color(int index);
117 GdColor gd_atari_color(int index);
118 GdColor gd_c64dtv_color(int index);
119
120 GdColor gd_atari_color_huesat(int hue, int sat);
121 GdColor gd_c64dtv_color_huesat(int hue, int sat);
122
123 unsigned int gd_color_get_r(GdColor color);
124 unsigned int gd_color_get_g(GdColor color);
125 unsigned int gd_color_get_b(GdColor color);
126
127 GdColor gd_color_get_rgb(GdColor color);
128 GdColor gd_color_get_from_rgb(int r, int g, int b);
129 GdColor gd_color_get_from_hsv(double h, double s, double v);
130 GdColor gd_color_get_from_string(const char *color);
131 const char *gd_color_get_string(GdColor color);
132
133 boolean gd_color_is_c64(GdColor color);
134 boolean gd_color_is_atari(GdColor color);
135 boolean gd_color_is_dtv(GdColor color);
136 boolean gd_color_is_unknown(GdColor color);
137
138 GdColor gd_gdash_color(int c);
139
140 #endif  // BD_COLORS_H