#include "color.h"
-void color_set(struct color *color,
- unsigned int red,
- unsigned int green,
- unsigned int blue)
+void color_set(struct color *c, double r, double g, double b)
{
- color->red = red;
- color->green = green;
- color->blue = blue;
-
- color->f_red = ((double)color->red) / 65535;
- color->f_green = ((double)color->green) / 65535;
- color->f_blue = ((double)color->blue) / 65535;
+ c->red = r;
+ c->green = g;
+ c->blue = b;
}
-struct color *color_new(unsigned int red, unsigned int green, unsigned int blue)
+struct color *color_new(double r, double g, double b)
{
- struct color *color = malloc(sizeof(struct color));
+ struct color *color;
+
+ color = malloc(sizeof(struct color));
- color_set(color, red, green, blue);
+ color_set(color, r, g, b);
return color;
}
tmp[4] = '\0';
blue = strtol(tmp, NULL, 16);
- return color_new(red, green, blue);
+ return color_new(((double)red)/65535,
+ ((double)green)/65535,
+ ((double)blue)/65535);
}
char *color_to_str(const struct color *color)
{
char *str = malloc(1 + 12 + 1);
- sprintf(str, "#%.4x%.4x%.4x", color->red, color->green, color->blue);
+ sprintf(str, "#%.4x%.4x%.4x",
+ (int)(65535 * color->red),
+ (int)(65535 * color->green),
+ (int)(65535 * color->blue));
return str;
}