diff options
author | Benjamin Otte <otte@redhat.com> | 2015-11-28 07:06:37 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2015-12-02 00:29:29 +0100 |
commit | afd0e284375baa0da4a86c31fd1994a3612e1a24 (patch) | |
tree | 1a14b147f5e03867894f744079e9f48d4e24dafc /testsuite/reftests | |
parent | 071d2a1d69c5bad3d6d4b451a9f7568fbf2507a8 (diff) | |
download | gtk+-afd0e284375baa0da4a86c31fd1994a3612e1a24.tar.gz |
iconhelper: Improve size determination for surfaces
Instead of just working for image surface, this should now work for all
bounded surfaces.
Test included.
Diffstat (limited to 'testsuite/reftests')
-rw-r--r-- | testsuite/reftests/Makefile.am | 3 | ||||
-rw-r--r-- | testsuite/reftests/image-recording-surface.c | 52 | ||||
-rw-r--r-- | testsuite/reftests/image-recording-surface.ref.ui | 16 | ||||
-rw-r--r-- | testsuite/reftests/image-recording-surface.ui | 16 |
4 files changed, 87 insertions, 0 deletions
diff --git a/testsuite/reftests/Makefile.am b/testsuite/reftests/Makefile.am index 584d47e41e..66e3c50300 100644 --- a/testsuite/reftests/Makefile.am +++ b/testsuite/reftests/Makefile.am @@ -279,6 +279,8 @@ testdata = \ image-load-from-file.css \ image-load-from-file.ref.ui \ image-load-from-file.ui \ + image-recording-surface.ref.ui \ + image-recording-surface.ui \ info-bar-message-types.css \ info-bar-message-types.ref.ui \ info-bar-message-types.ui \ @@ -496,6 +498,7 @@ libreftest_la_CFLAGS = $(gtk_reftest_CFLAGS) libreftest_la_LIBADD = $(gtk_reftest_LDADD) libreftest_la_SOURCES = \ expand-expander.c \ + image-recording-surface.c \ label-text-shadow-changes-modify-clip.c \ letter-spacing.c \ set-default-direction.c \ diff --git a/testsuite/reftests/image-recording-surface.c b/testsuite/reftests/image-recording-surface.c new file mode 100644 index 0000000000..bae9a5ae02 --- /dev/null +++ b/testsuite/reftests/image-recording-surface.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2014 Red Hat Inc. + * + * Author: + * Matthias Clasen <mclasen@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gtk/gtk.h> + +G_MODULE_EXPORT void +image_recording_surface_set (GtkWidget *widget, + gpointer unused) +{ + GError *error = NULL; + GdkPixbuf *pixbuf; + cairo_surface_t *surface; + cairo_t *cr; + cairo_rectangle_t rect; + + pixbuf = gdk_pixbuf_new_from_resource ("/org/gtk/libgtk/inspector/logo.png", &error); + g_assert_no_error (error); + rect.x = 0; + rect.y = 0; + rect.width = gdk_pixbuf_get_width (pixbuf); + rect.height = gdk_pixbuf_get_height (pixbuf); + surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, &rect); + + cr = cairo_create (surface); + gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); + cairo_paint (cr); + cairo_destroy (cr); + + gtk_image_set_from_surface (GTK_IMAGE (widget), surface); + + cairo_surface_destroy (surface); + g_object_unref (pixbuf); +} diff --git a/testsuite/reftests/image-recording-surface.ref.ui b/testsuite/reftests/image-recording-surface.ref.ui new file mode 100644 index 0000000000..aef6f63c4b --- /dev/null +++ b/testsuite/reftests/image-recording-surface.ref.ui @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.19.0 --> +<interface> + <requires lib="gtk+" version="3.16"/> + <object class="GtkWindow" id="window1"> + <property name="can_focus">False</property> + <property name="type">popup</property> + <child> + <object class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="resource">/org/gtk/libgtk/inspector/logo.png</property> + </object> + </child> + </object> +</interface> diff --git a/testsuite/reftests/image-recording-surface.ui b/testsuite/reftests/image-recording-surface.ui new file mode 100644 index 0000000000..064c28d88f --- /dev/null +++ b/testsuite/reftests/image-recording-surface.ui @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.19.0 --> +<interface> + <requires lib="gtk+" version="3.16"/> + <object class="GtkWindow" id="window1"> + <property name="can_focus">False</property> + <property name="type">popup</property> + <child> + <object class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <signal name="realize" handler="reftest:image_recording_surface_set" after="yes" swapped="no"/> + </object> + </child> + </object> +</interface> |