summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eel/eel-gdk-pixbuf-extensions.c12
-rw-r--r--eel/eel-gdk-pixbuf-extensions.h4
-rw-r--r--eel/eel-graphic-effects.c17
-rw-r--r--eel/eel-graphic-effects.h9
4 files changed, 42 insertions, 0 deletions
diff --git a/eel/eel-gdk-pixbuf-extensions.c b/eel/eel-gdk-pixbuf-extensions.c
index b4cd9394..bbbffc3a 100644
--- a/eel/eel-gdk-pixbuf-extensions.c
+++ b/eel/eel-gdk-pixbuf-extensions.c
@@ -1265,7 +1265,11 @@ eel_gdk_pixbuf_render (GdkPixbuf *pixbuf,
guint saturation,
guint brightness,
guint lighten_value,
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA *color)
+#else
guint color)
+#endif
{
GdkPixbuf *temp_pixbuf, *old_pixbuf;
@@ -1277,19 +1281,27 @@ eel_gdk_pixbuf_render (GdkPixbuf *pixbuf,
else if (render_mode == 2)
{
/* colorize icon */
+#if GTK_CHECK_VERSION(3,0,0)
+ temp_pixbuf = eel_create_colorized_pixbuf (pixbuf, color);
+#else
temp_pixbuf = eel_create_colorized_pixbuf (pixbuf,
EEL_RGBA_COLOR_GET_R (color),
EEL_RGBA_COLOR_GET_G (color),
EEL_RGBA_COLOR_GET_B (color));
+#endif
}
else if (render_mode == 3)
{
/* monochromely colorize icon */
old_pixbuf = eel_create_darkened_pixbuf (pixbuf, 0, 255);
+#if GTK_CHECK_VERSION(3,0,0)
+ temp_pixbuf = eel_create_colorized_pixbuf (old_pixbuf, color);
+#else
temp_pixbuf = eel_create_colorized_pixbuf (old_pixbuf,
EEL_RGBA_COLOR_GET_R (color),
EEL_RGBA_COLOR_GET_G (color),
EEL_RGBA_COLOR_GET_B (color));
+#endif
g_object_unref (old_pixbuf);
}
else
diff --git a/eel/eel-gdk-pixbuf-extensions.h b/eel/eel-gdk-pixbuf-extensions.h
index 7d31defe..87f79a7a 100644
--- a/eel/eel-gdk-pixbuf-extensions.h
+++ b/eel/eel-gdk-pixbuf-extensions.h
@@ -151,6 +151,10 @@ GdkPixbuf * eel_gdk_pixbuf_render (GdkPixbuf *pixbuf
guint saturation,
guint brightness,
guint lighten_value,
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA *color);
+#else
guint color);
+#endif
#endif /* EEL_GDK_PIXBUF_EXTENSIONS_H */
diff --git a/eel/eel-graphic-effects.c b/eel/eel-graphic-effects.c
index ffb5beba..39309de9 100644
--- a/eel/eel-graphic-effects.c
+++ b/eel/eel-graphic-effects.c
@@ -26,7 +26,10 @@
and selection hilighting */
#include <config.h>
+
#include "eel-graphic-effects.h"
+#include "eel-glib-extensions.h"
+
#include <string.h>
/* shared utility to create a new pixbuf from the passed-in one */
@@ -169,9 +172,13 @@ eel_create_darkened_pixbuf (GdkPixbuf *src, int saturation, int darken)
GdkPixbuf *
eel_create_colorized_pixbuf (GdkPixbuf *src,
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA *color)
+#else
int red_value,
int green_value,
int blue_value)
+#endif
{
int i, j;
int width, height, has_alpha, src_row_stride, dst_row_stride;
@@ -181,6 +188,10 @@ eel_create_colorized_pixbuf (GdkPixbuf *src,
guchar *pixdest;
GdkPixbuf *dest;
+#if GTK_CHECK_VERSION(3,0,0)
+ gint red_value, green_value, blue_value;
+#endif
+
g_return_val_if_fail (gdk_pixbuf_get_colorspace (src) == GDK_COLORSPACE_RGB, NULL);
g_return_val_if_fail ((!gdk_pixbuf_get_has_alpha (src)
&& gdk_pixbuf_get_n_channels (src) == 3)
@@ -188,6 +199,12 @@ eel_create_colorized_pixbuf (GdkPixbuf *src,
&& gdk_pixbuf_get_n_channels (src) == 4), NULL);
g_return_val_if_fail (gdk_pixbuf_get_bits_per_sample (src) == 8, NULL);
+#if GTK_CHECK_VERSION(3,0,0)
+ red_value = eel_round (color->red * 255);
+ green_value = eel_round (color->green * 255);
+ blue_value = eel_round (color->blue * 255);
+#endif
+
dest = create_new_pixbuf (src);
has_alpha = gdk_pixbuf_get_has_alpha (src);
diff --git a/eel/eel-graphic-effects.h b/eel/eel-graphic-effects.h
index 6ae00421..7291629b 100644
--- a/eel/eel-graphic-effects.h
+++ b/eel/eel-graphic-effects.h
@@ -26,6 +26,11 @@
#define EEL_GRAPHIC_EFFECTS_H
#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gtk/gtk.h>
+#if GTK_CHECK_VERSION(3,0,0)
+#include <gdk/gdk.h>
+#endif
+
/* return a lightened pixbuf for pre-lighting */
GdkPixbuf *eel_create_spotlight_pixbuf (GdkPixbuf *source_pixbuf);
@@ -37,9 +42,13 @@ GdkPixbuf *eel_create_darkened_pixbuf (GdkPixbuf *source_pixbuf,
/* return a pixbuf colorized with the color specified by the parameters */
GdkPixbuf* eel_create_colorized_pixbuf (GdkPixbuf *source_pixbuf,
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA *color);
+#else
int red_value,
int green_value,
int blue_value);
+#endif
/* stretch a image frame */
GdkPixbuf *eel_stretch_frame_image (GdkPixbuf *frame_image,