24 static const struct color_rgb standard_colors_rgb[] = {
43 static const struct color_name standard_color_names[] = {
58 return sizeof(standard_colors_rgb) /
sizeof(standard_colors_rgb[0]);
68 return standard_colors_rgb[n];
78 return sizeof(standard_color_names) /
sizeof(standard_color_names[0]);
88 return &standard_color_names[n];
112 G_debug(3,
"G_str_to_color(): str = '%s'", buf);
117 if (sscanf(buf,
"%d%*[,:; ]%d%*[,:; ]%d", red, grn, blu) == 3) {
118 if (*red < 0 || *red > 255 || *grn < 0 || *grn > 255 || *blu < 0 ||
127 if (sscanf(buf,
"#%x", &hex) == 1) {
128 *red = (hex >> 16) & 0xFF;
129 *grn = (hex >> 8) & 0xFF;
131 if (*red < 0 || *red > 255 || *grn < 0 || *grn > 255 || *blu < 0 ||
139 for (i = 0; i < num_names; i++) {
170 float r_norm = (float)
r / 255.0f;
171 float g_norm = (float)
g / 255.0f;
172 float b_norm = (float)
b / 255.0f;
174 float cmax =
MAX(r_norm,
MAX(g_norm, b_norm));
175 float cmin =
MIN(r_norm,
MIN(g_norm, b_norm));
176 float diff = cmax - cmin;
181 else if (cmax == r_norm) {
182 *h = fmodf((60.0f * ((g_norm - b_norm) / diff) + 360.0f), 360.0f);
184 else if (cmax == g_norm) {
185 *h = fmodf((60.0f * ((b_norm - r_norm) / diff) + 120.0f), 360.0f);
188 *h = fmodf((60.0f * ((r_norm - g_norm) / diff) + 240.0f), 360.0f);
195 *s = (diff / cmax) * 100.0f;
256 if (strcmp(option->
answer,
"rgb") == 0) {
259 if (strcmp(option->
answer,
"triplet") == 0) {
262 if (strcmp(option->
answer,
"hsv") == 0) {
265 if (strcmp(option->
answer,
"hex") == 0) {
ColorFormat G_option_to_color_format(const struct Option *option)
Get color format from the option.
void G_rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v)
Converts RGB color values to HSV format.
int G_num_standard_colors(void)
Get number of named colors (RGB triplets)
void G_color_to_str(int r, int g, int b, ColorFormat clr_frmt, char *str)
Parse red,green,blue and set color string.
int G_str_to_color(const char *str, int *red, int *grn, int *blu)
Parse color string and set red,green,blue.
int G_num_standard_color_names(void)
Get number of named colors (color names)
struct color_rgb G_standard_color_rgb(int n)
Get RGB triplet of given color.
const struct color_name * G_standard_color_name(int n)
Get color name.
ColorFormat
Color format identifiers (enum)
#define COLOR_STRING_LENGTH
void void void void G_fatal_error(const char *,...) __attribute__((format(printf
int int G_strcasecmp(const char *, const char *)
String compare ignoring case (upper or lower)
char * G_chop(char *)
Chop leading and trailing white spaces.
int G_debug(int, const char *,...) __attribute__((format(printf
size_t G_strlcpy(char *, const char *, size_t)
Safe string copy function.
Structure that stores option information.