summaryrefslogtreecommitdiff
path: root/gtk/gtkrendericon.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2018-07-24 20:23:20 +0200
committerBenjamin Otte <otte@redhat.com>2018-07-24 20:55:45 +0200
commit95a4eff6baddb174ef5ff8384250bd8c1e6e1f32 (patch)
tree2279daa8f3ecf558b11887fd99d76b9b82fda800 /gtk/gtkrendericon.c
parent9675c990435042236e5814442c62df7b1c2084aa (diff)
downloadgtk+-95a4eff6baddb174ef5ff8384250bd8c1e6e1f32.tar.gz
render: Make gtk_render_icon() use the snapshot API
This removes a lot of duplicated code.
Diffstat (limited to 'gtk/gtkrendericon.c')
-rw-r--r--gtk/gtkrendericon.c75
1 files changed, 0 insertions, 75 deletions
diff --git a/gtk/gtkrendericon.c b/gtk/gtkrendericon.c
index 5a6be7510f..2d2dfa05f5 100644
--- a/gtk/gtkrendericon.c
+++ b/gtk/gtkrendericon.c
@@ -96,81 +96,6 @@ gtk_css_style_snapshot_icon (GtkCssStyle *style,
gtk_snapshot_pop (snapshot);
}
-static gboolean
-get_surface_extents (cairo_surface_t *surface,
- GdkRectangle *out_extents)
-{
- cairo_t *cr;
- gboolean result;
-
- cr = cairo_create (surface);
- result = gdk_cairo_get_clip_rectangle (cr, out_extents);
- cairo_destroy (cr);
-
- return result;
-}
-
-void
-gtk_css_style_render_icon_surface (GtkCssStyle *style,
- cairo_t *cr,
- cairo_surface_t *surface,
- double x,
- double y)
-{
- const GtkCssValue *shadows;
- graphene_matrix_t graphene_matrix;
- cairo_matrix_t matrix, transform_matrix, saved_matrix;
- GdkRectangle extents;
-
- g_return_if_fail (GTK_IS_CSS_STYLE (style));
- g_return_if_fail (cr != NULL);
- g_return_if_fail (surface != NULL);
-
- shadows = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SHADOW);
-
- if (!get_surface_extents (surface, &extents))
- {
- /* weird infinite surface, no special magic for you */
- cairo_set_source_surface (cr, surface, x, y);
- _gtk_css_shadows_value_paint_icon (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SHADOW), cr);
- cairo_paint (cr);
- return;
- }
-
- cairo_get_matrix (cr, &saved_matrix);
- cairo_translate (cr, x + extents.x, y + extents.y);
-
- if (gtk_css_transform_value_get_matrix (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_TRANSFORM), &graphene_matrix) &&
- graphene_matrix_is_2d (&graphene_matrix))
- {
- cairo_pattern_t *pattern;
-
- graphene_matrix_to_2d (&graphene_matrix,
- &transform_matrix.xx, &transform_matrix.yx,
- &transform_matrix.xy, &transform_matrix.yy,
- &transform_matrix.x0, &transform_matrix.y0);
- /* XXX: Implement -gtk-icon-transform-origin instead of hardcoding "50% 50%" here */
- cairo_matrix_init_translate (&matrix, extents.width / 2, extents.height / 2);
- cairo_matrix_multiply (&matrix, &transform_matrix, &matrix);
- cairo_matrix_translate (&matrix, - extents.width / 2, - extents.height / 2);
- if (cairo_matrix_invert (&matrix) != CAIRO_STATUS_SUCCESS)
- {
- g_assert_not_reached ();
- }
- cairo_matrix_translate (&matrix, extents.x, extents.y);
-
- pattern = cairo_pattern_create_for_surface (surface);
- cairo_pattern_set_matrix (pattern, &matrix);
- cairo_set_source (cr, pattern);
- cairo_pattern_destroy (pattern);
-
- _gtk_css_shadows_value_paint_icon (shadows, cr);
- cairo_paint (cr);
- }
-
- cairo_set_matrix (cr, &saved_matrix);
-}
-
void
gtk_css_style_snapshot_icon_paintable (GtkCssStyle *style,
GtkSnapshot *snapshot,