[goffice] Add go_color_from_gdk_rgba, to fix 676358



commit 2ef56fb0200094eee344c3021e383c978c3aa36f
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Sat May 19 20:14:21 2012 -0600

    Add go_color_from_gdk_rgba, to fix 676358
    
    2012-05-19 Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* goffice/utils/go-color.h (go_color_from_gdk_rgba): new
    	* goffice/utils/go-color.c (go_color_from_gdk_rgba): new

 ChangeLog                |    5 +++++
 NEWS                     |    1 +
 goffice/utils/go-color.c |   21 +++++++++++++++++++++
 goffice/utils/go-color.h |    5 +++--
 4 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index af29fd2..e004ee7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-19 Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* goffice/utils/go-color.h (go_color_from_gdk_rgba): new
+	* goffice/utils/go-color.c (go_color_from_gdk_rgba): new
+
 2012-05-19  Jean Brefort  <jean brefort normalesup org>
 
 	* Makefile.am: enhance Introspection build support.
diff --git a/NEWS b/NEWS
index 93ee056..d7e2c22 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ goffice 0.9.4:
 Andreas:
 	* Add go_pango_attrs_to_markup, partial inverse to pango_parse_markup.
 	* Handle underline tags as named tags in textbuffer.
+	* Add go_color_from_gdk_rgba
 
 Jean:
 	* Fixed logfit equation typo. [#675560]
diff --git a/goffice/utils/go-color.c b/goffice/utils/go-color.c
index a3479fe..39551a5 100644
--- a/goffice/utils/go-color.c
+++ b/goffice/utils/go-color.c
@@ -1,3 +1,4 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gog-color.c :
  *
@@ -92,4 +93,24 @@ go_color_to_gdk_rgba (GOColor color, GdkRGBA *res)
 
 	return res;
 }
+
+GOColor
+go_color_from_gdk_rgba (GdkRGBA *rgbacolor, GOColor *res)
+{
+	GOColor color;
+	gint r, g, b, a;
+
+	g_return_val_if_fail (rgbacolor != NULL, 0);
+
+	r = CLAMP (rgbacolor->red * 256, 0, 255);
+	g = CLAMP (rgbacolor->green * 256, 0, 255);
+	b = CLAMP (rgbacolor->blue * 256, 0, 255);
+	a = CLAMP (rgbacolor->alpha * 256, 0, 255);
+
+	color = GO_COLOR_FROM_RGBA (r,g,b,a);
+
+	if (res)
+		*res = color;
+	return color;
+}
 #endif /* GOFFICE_WITH_GTK */
diff --git a/goffice/utils/go-color.h b/goffice/utils/go-color.h
index 68ca49a..9d6771f 100644
--- a/goffice/utils/go-color.h
+++ b/goffice/utils/go-color.h
@@ -40,7 +40,7 @@ typedef struct {
   cpp-perils...
 */
 
-#define GO_COLOR_FROM_GDK_RGBA(c)	GO_COLOR_FROM_RGBA((int)((c).red * 255.), (int)((c).green * 255.), (int)((c).blue * 255.), (int)((c).alpha * 255.))
+#define GO_COLOR_FROM_GDK_RGBA(c)	go_color_from_gdk_rgba (&(c), NULL)
 
 #define GO_COLOR_FROM_RGB(r,g,b)	((((guint)(r&0xff))<<24)|(((guint)(g&0xff))<<16)|((guint)(b&0xff)<<8)|0xff)
 #define GO_COLOR_FROM_RGBA(r,g,b,a)	((((guint)(r&0xff))<<24)|(((guint)(g&0xff))<<16)|((guint)(b&0xff)<<8)|(guint)(a&0xff))
@@ -84,7 +84,8 @@ gboolean  go_color_from_str (char const *str, GOColor *res);
 gchar    *go_color_as_str   (GOColor color);
 PangoAttribute *go_color_to_pango (GOColor color, gboolean is_fore);
 #ifdef GOFFICE_WITH_GTK
-GdkRGBA *go_color_to_gdk_rgba   (GOColor color, GdkRGBA *res);
+GdkRGBA *go_color_to_gdk_rgba  (GOColor color, GdkRGBA *res);
+GOColor go_color_from_gdk_rgba (GdkRGBA *rgbacolor, GOColor *res);
 #endif
 
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]