/*
- Copyright (C) 2010-2011 wpitchoune@gmail.com
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA
-*/
-
+ * Copyright (C) 2010-2016 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#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;
}
return 1;
}
-struct color *string_to_color(const char *str)
+struct color *str_to_color(const char *str)
{
char tmp[5];
unsigned int red, green, blue;
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_string(struct color *color)
+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;
}