cleanup of unnecessarily convoluted function call
[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 #define GD_DEFAULT_COLOR_TYPE                   GD_COLOR_TYPE_RGB
42
43 // traditional c64 color indexes.
44 #define GD_COLOR_INDEX_BLACK                    0
45 #define GD_COLOR_INDEX_WHITE                    1
46 #define GD_COLOR_INDEX_RED                      2
47 #define GD_COLOR_INDEX_CYAN                     3
48 #define GD_COLOR_INDEX_PURPLE                   4
49 #define GD_COLOR_INDEX_GREEN                    5
50 #define GD_COLOR_INDEX_BLUE                     6
51 #define GD_COLOR_INDEX_YELLOW                   7
52 #define GD_COLOR_INDEX_ORANGE                   8
53 #define GD_COLOR_INDEX_BROWN                    9
54 #define GD_COLOR_INDEX_LIGHTRED                 10
55 #define GD_COLOR_INDEX_GRAY1                    11
56 #define GD_COLOR_INDEX_GRAY2                    12
57 #define GD_COLOR_INDEX_LIGHTGREEN               13
58 #define GD_COLOR_INDEX_LIGHTBLUE                14
59 #define GD_COLOR_INDEX_GRAY3                    15
60
61 #define GD_GDASH_BLACK                          gd_gdash_color(GD_COLOR_INDEX_BLACK)
62 #define GD_GDASH_WHITE                          gd_gdash_color(GD_COLOR_INDEX_WHITE)
63 #define GD_GDASH_RED                            gd_gdash_color(GD_COLOR_INDEX_RED)
64 #define GD_GDASH_CYAN                           gd_gdash_color(GD_COLOR_INDEX_CYAN)
65 #define GD_GDASH_PURPLE                         gd_gdash_color(GD_COLOR_INDEX_PURPLE)
66 #define GD_GDASH_GREEN                          gd_gdash_color(GD_COLOR_INDEX_GREEN)
67 #define GD_GDASH_BLUE                           gd_gdash_color(GD_COLOR_INDEX_BLUE)
68 #define GD_GDASH_YELLOW                         gd_gdash_color(GD_COLOR_INDEX_YELLOW)
69 #define GD_GDASH_ORANGE                         gd_gdash_color(GD_COLOR_INDEX_ORANGE)
70 #define GD_GDASH_BROWN                          gd_gdash_color(GD_COLOR_INDEX_BROWN)
71 #define GD_GDASH_LIGHTRED                       gd_gdash_color(GD_COLOR_INDEX_LIGHTRED)
72 #define GD_GDASH_GRAY1                          gd_gdash_color(GD_COLOR_INDEX_GRAY1)
73 #define GD_GDASH_GRAY2                          gd_gdash_color(GD_COLOR_INDEX_GRAY2)
74 #define GD_GDASH_LIGHTGREEN                     gd_gdash_color(GD_COLOR_INDEX_LIGHTGREEN)
75 #define GD_GDASH_LIGHTBLUE                      gd_gdash_color(GD_COLOR_INDEX_LIGHTBLUE)
76 #define GD_GDASH_GRAY3                          gd_gdash_color(GD_COLOR_INDEX_GRAY3)
77
78 #define GD_GDASH_MIDDLEBLUE                     gd_gdash_color(16)
79
80 #define GD_COLOR_INVALID                        0xFFFFFFFF
81
82 #define GD_C64_COLOR(index)                     ((GD_COLOR_TYPE_C64 << 24) + (index))
83
84 // palette numbers must match pointer array positions in source file
85 #define GD_PALETTE_C64_VICE_NEW                 0
86 #define GD_PALETTE_C64_VICE_OLD                 1
87 #define GD_PALETTE_C64_VIDE_DEFAULT             2
88 #define GD_PALETTE_C64_C64HQ                    3
89 #define GD_PALETTE_C64_C64S                     4
90 #define GD_PALETTE_C64_CCS64                    5
91 #define GD_PALETTE_C64_FRODO                    6
92 #define GD_PALETTE_C64_GODOT                    7
93 #define GD_PALETTE_C64_PC64                     8
94 #define GD_PALETTE_C64_RTADASH                  9
95
96 #define GD_DEFAULT_PALETTE_C64                  GD_PALETTE_C64_VICE_NEW
97
98 // palette numbers must match pointer array positions in source file
99 #define GD_PALETTE_C64DTV_SPIFF                 0
100 #define GD_PALETTE_C64DTV_MURRAY                1
101
102 #define GD_DEFAULT_PALETTE_C64DTV               GD_PALETTE_C64DTV_SPIFF
103
104 // palette numbers must match pointer array positions in source file
105 #define GD_PALETTE_ATARI_BUILTIN                0
106 #define GD_PALETTE_ATARI_BUILTIN_CONTRAST       1
107 #define GD_PALETTE_ATARI_DEFAULT                2
108 #define GD_PALETTE_ATARI_JAKUB                  3
109 #define GD_PALETTE_ATARI_JAKUB_CONTRAST         4
110 #define GD_PALETTE_ATARI_REAL                   5
111 #define GD_PALETTE_ATARI_REAL_CONTRAST          6
112 #define GD_PALETTE_ATARI_XFORMER                7
113
114 #define GD_DEFAULT_PALETTE_ATARI                GD_PALETTE_ATARI_BUILTIN
115
116
117 // color
118 GdColor gd_c64_color(int index);
119 GdColor gd_atari_color(int index);
120 GdColor gd_c64dtv_color(int index);
121
122 GdColor gd_atari_color_huesat(int hue, int sat);
123 GdColor gd_c64dtv_color_huesat(int hue, int sat);
124
125 unsigned int gd_color_get_r(GdColor color);
126 unsigned int gd_color_get_g(GdColor color);
127 unsigned int gd_color_get_b(GdColor color);
128
129 GdColor gd_color_get_rgb(GdColor color);
130 GdColor gd_color_get_from_rgb(int r, int g, int b);
131 GdColor gd_color_get_from_hsv(double h, double s, double v);
132 GdColor gd_color_get_from_string(const char *color);
133 const char *gd_color_get_string(GdColor color);
134
135 boolean gd_color_is_c64(GdColor color);
136 boolean gd_color_is_atari(GdColor color);
137 boolean gd_color_is_dtv(GdColor color);
138 boolean gd_color_is_unknown(GdColor color);
139
140 GdColor gd_gdash_color(int c);
141
142 #endif  // BD_COLORS_H