[Xfce4-commits] <thunar:master> Draw translucent icons with cairo.
Nick Schermer
noreply at xfce.org
Sun Oct 14 13:18:01 CEST 2012
Updating branch refs/heads/master
to daa0506d3abb84c0e068accc55cb6f139ef2824b (commit)
from 0b54a67b2c4b48666755df00313aec9e2b0f45bf (commit)
commit daa0506d3abb84c0e068accc55cb6f139ef2824b
Author: Nick Schermer <nick at xfce.org>
Date: Sun Oct 14 13:08:29 2012 +0200
Draw translucent icons with cairo.
Simpler and saves some pixbuf duplication.
thunar/thunar-icon-renderer.c | 17 +++++++++--------
thunar/thunar-shortcuts-icon-renderer.c | 13 ++++++-------
2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/thunar/thunar-icon-renderer.c b/thunar/thunar-icon-renderer.c
index 3cb824d..a63a99b 100644
--- a/thunar/thunar-icon-renderer.c
+++ b/thunar/thunar-icon-renderer.c
@@ -334,6 +334,7 @@ thunar_icon_renderer_render (GtkCellRenderer *renderer,
gint max_emblems;
gint position;
cairo_t *cr;
+ gdouble alpha;
if (G_UNLIKELY (icon_renderer->file == NULL))
return;
@@ -390,16 +391,16 @@ thunar_icon_renderer_render (GtkCellRenderer *renderer,
if (thunar_clipboard_manager_has_cutted_file (clipboard, icon_renderer->file))
{
/* 50% translucent for cutted files */
- temp = exo_gdk_pixbuf_lucent (icon, 50);
- g_object_unref (G_OBJECT (icon));
- icon = temp;
+ alpha = 0.50;
}
else if (thunar_file_is_hidden (icon_renderer->file))
{
/* 75% translucent for hidden files */
- temp = exo_gdk_pixbuf_lucent (icon, 75);
- g_object_unref (G_OBJECT (icon));
- icon = temp;
+ alpha = 0.75;
+ }
+ else
+ {
+ alpha = 1.00;
}
g_object_unref (G_OBJECT (clipboard));
@@ -444,7 +445,7 @@ thunar_icon_renderer_render (GtkCellRenderer *renderer,
/* render the invalid parts of the icon */
gdk_cairo_set_source_pixbuf (cr, icon, icon_area.x, icon_area.y);
gdk_cairo_rectangle (cr, &draw_area);
- cairo_fill (cr);
+ cairo_paint_with_alpha (cr, alpha);
}
/* release the file's icon */
@@ -526,7 +527,7 @@ thunar_icon_renderer_render (GtkCellRenderer *renderer,
/* render the invalid parts of the icon */
gdk_cairo_set_source_pixbuf (cr, emblem, emblem_area.x, emblem_area.y);
gdk_cairo_rectangle (cr, &draw_area);
- cairo_fill (cr);
+ cairo_paint (cr);
}
/* release the emblem */
diff --git a/thunar/thunar-shortcuts-icon-renderer.c b/thunar/thunar-shortcuts-icon-renderer.c
index 49e4760..9b2f16d 100644
--- a/thunar/thunar-shortcuts-icon-renderer.c
+++ b/thunar/thunar-shortcuts-icon-renderer.c
@@ -221,6 +221,7 @@ thunar_shortcuts_icon_renderer_render (GtkCellRenderer *renderer,
GdkPixbuf *temp;
GIcon *gicon;
cairo_t *cr;
+ gdouble alpha;
/* check if we have a volume set */
if (G_UNLIKELY (shortcuts_icon_renderer->gicon != NULL
@@ -266,14 +267,12 @@ thunar_shortcuts_icon_renderer_render (GtkCellRenderer *renderer,
icon_area.height = gdk_pixbuf_get_height (icon);
}
+ /* 50% translucent for unmounted volumes */
if (shortcuts_icon_renderer->device != NULL
&& !thunar_device_is_mounted (shortcuts_icon_renderer->device))
- {
- /* 50% translucent for unmounted volumes */
- temp = exo_gdk_pixbuf_lucent (icon, 50);
- g_object_unref (G_OBJECT (icon));
- icon = temp;
- }
+ alpha = 0.50;
+ else
+ alpha = 1.00;
icon_area.x = cell_area->x + (cell_area->width - icon_area.width) / 2;
icon_area.y = cell_area->y + (cell_area->height - icon_area.height) / 2;
@@ -285,7 +284,7 @@ thunar_shortcuts_icon_renderer_render (GtkCellRenderer *renderer,
cr = gdk_cairo_create (window);
gdk_cairo_set_source_pixbuf (cr, icon, icon_area.x, icon_area.y);
gdk_cairo_rectangle (cr, &draw_area);
- cairo_fill (cr);
+ cairo_paint_with_alpha (cr, alpha);
cairo_destroy (cr);
}
More information about the Xfce4-commits
mailing list