summaryrefslogtreecommitdiff
path: root/gtk/gtkimage.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-11-07 18:25:12 +0100
committerBenjamin Otte <otte@redhat.com>2016-11-08 20:31:34 +0100
commit1259a489f2a6b07d6d406eea8c1c8e86634ecb73 (patch)
tree95753677c71e2ded52e772fbe12ef8b746b08e2c /gtk/gtkimage.c
parent09359197a7645fd554f99516e129d709c44f0e69 (diff)
downloadgtk+-1259a489f2a6b07d6d406eea8c1c8e86634ecb73.tar.gz
iconhelper: Add support for GskTexture
... and use that in GtkImage.
Diffstat (limited to 'gtk/gtkimage.c')
-rw-r--r--gtk/gtkimage.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
index ae8dec8c5e..7d5e99f92f 100644
--- a/gtk/gtkimage.c
+++ b/gtk/gtkimage.c
@@ -1420,44 +1420,44 @@ gtk_image_get_render_node (GtkWidget *widget,
if (res == NULL)
return NULL;
- node = gtk_widget_create_render_node (widget, renderer, "Image Content");
+ if (gtk_image_get_storage_type (image) == GTK_IMAGE_ANIMATION)
+ {
+ node = gtk_widget_create_render_node (widget, renderer, "Image Content");
- gtk_widget_get_clip (widget, &clip);
- _gtk_widget_get_allocation (widget, &alloc);
+ gtk_widget_get_clip (widget, &clip);
+ _gtk_widget_get_allocation (widget, &alloc);
- cr = gsk_render_node_get_draw_context (node, renderer);
- cairo_translate (cr, alloc.x - clip.x, alloc.y - clip.y);
- x = 0;
- y = 0;
- width = alloc.width;
- height = alloc.height;
+ cr = gsk_render_node_get_draw_context (node, renderer);
+ cairo_translate (cr, alloc.x - clip.x, alloc.y - clip.y);
+ x = 0;
+ y = 0;
+ width = alloc.width;
+ height = alloc.height;
- _gtk_icon_helper_get_size (priv->icon_helper, &w, &h);
+ _gtk_icon_helper_get_size (priv->icon_helper, &w, &h);
- baseline = gtk_widget_get_allocated_baseline (widget);
+ baseline = gtk_widget_get_allocated_baseline (widget);
- if (baseline == -1)
- y += floor(height - h) / 2;
- else
- y += CLAMP (baseline - h * gtk_image_get_baseline_align (image), 0, height - h);
+ if (baseline == -1)
+ y += floor(height - h) / 2;
+ else
+ y += CLAMP (baseline - h * gtk_image_get_baseline_align (image), 0, height - h);
- x += (width - w) / 2;
+ x += (width - w) / 2;
- if (gtk_image_get_storage_type (image) == GTK_IMAGE_ANIMATION)
- {
GtkStyleContext *context = gtk_widget_get_style_context (widget);
GdkPixbuf *pixbuf = get_animation_frame (image);
gtk_render_icon (context, cr, pixbuf, x, y);
g_object_unref (pixbuf);
+
+ cairo_destroy (cr);
}
else
{
- _gtk_icon_helper_draw (priv->icon_helper, cr, x, y);
+ node = gtk_icon_helper_get_render_node (priv->icon_helper, renderer);
}
- cairo_destroy (cr);
-
gsk_render_node_append_child (res, node);
gsk_render_node_unref (node);