2 * Copyright (c) 2007, 2008, 2009, Czirkos Zoltan <cirix@fw.hu>
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.
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.
21 typedef unsigned int GdColor;
26 1 for c64 colors (bb=index)
27 3 for c64dtv (bb=index)
28 2 for atari colors (bb=index)
31 typedef enum _color_type
33 GD_COLOR_TYPE_RGB = 0,
34 GD_COLOR_TYPE_C64 = 1,
35 GD_COLOR_TYPE_C64DTV = 2,
36 GD_COLOR_TYPE_ATARI = 3,
38 GD_COLOR_TYPE_UNKNOWN // should be the last one
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
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)
76 #define GD_GDASH_MIDDLEBLUE gd_gdash_color(16)
78 #define GD_COLOR_INVALID 0xFFFFFFFF
80 #define GD_C64_COLOR(index) ((GD_COLOR_TYPE_C64 << 24) + (index))
84 GdColor gd_c64_color(int index);
85 GdColor gd_atari_color(int index);
86 GdColor gd_c64dtv_color(int index);
88 GdColor gd_atari_color_huesat(int hue, int sat);
89 GdColor gd_c64dtv_color_huesat(int hue, int sat);
91 unsigned int gd_color_get_r(GdColor color);
92 unsigned int gd_color_get_g(GdColor color);
93 unsigned int gd_color_get_b(GdColor color);
95 GdColor gd_color_get_rgb(GdColor color);
96 GdColor gd_color_get_from_rgb(int r, int g, int b);
97 GdColor gd_color_get_from_hsv(double h, double s, double v);
98 GdColor gd_color_get_from_string(const char *color);
99 const char *gd_color_get_string(GdColor color);
101 boolean gd_color_is_c64(GdColor color);
102 boolean gd_color_is_atari(GdColor color);
103 boolean gd_color_is_dtv(GdColor color);
104 boolean gd_color_is_unknown(GdColor color);
106 GdColor gd_gdash_color(int c);
108 #endif // BD_COLORS_H