diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-09-02 12:52:35 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-09-03 10:09:22 -0400 |
commit | 1a8f109af88f4dacb281935ec206d1f81369f33e (patch) | |
tree | 3286473c49db79213f21eddc09090cbbcb200f47 /tests/testtransform.c | |
parent | eee6d28c6700d2dff4c4fec2d483d8a1fcb9d54e (diff) | |
download | gtk+-1a8f109af88f4dacb281935ec206d1f81369f33e.tar.gz |
Add a simple testcase for transforms
This can help in tracking various things down,
from picking to clipping.
Diffstat (limited to 'tests/testtransform.c')
-rw-r--r-- | tests/testtransform.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/testtransform.c b/tests/testtransform.c new file mode 100644 index 0000000000..ab66cb6eeb --- /dev/null +++ b/tests/testtransform.c @@ -0,0 +1,77 @@ + +/* 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> + +static void +hello (GtkButton *button) +{ + g_print ("Hello!\n"); +} + +static void +quit_cb (GtkWidget *widget, + gpointer data) +{ + gboolean *done = data; + + *done = TRUE; + + g_main_context_wakeup (NULL); +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *window, *fixed, *button; + gboolean done = FALSE; + GskTransform *transform; + + gtk_init (); + + window = gtk_window_new (); + gtk_window_set_title (GTK_WINDOW (window), "hello world"); + g_signal_connect (window, "destroy", G_CALLBACK (quit_cb), &done); + + fixed = gtk_fixed_new (); + gtk_widget_set_halign (fixed, GTK_ALIGN_FILL); + gtk_widget_set_valign (fixed, GTK_ALIGN_FILL); + gtk_widget_set_hexpand (fixed, TRUE); + gtk_widget_set_vexpand (fixed, TRUE); + + button = gtk_button_new (); + gtk_button_set_label (GTK_BUTTON (button), "Hello world"); + //gtk_widget_set_size_request (button, 50, 50); + g_signal_connect (button, "clicked", G_CALLBACK (hello), NULL); + + gtk_fixed_put (GTK_FIXED (fixed), button, 0, 0); + + transform = NULL; + transform = gsk_transform_translate_3d (transform, &GRAPHENE_POINT3D_INIT (0, 0, 50)); + transform = gsk_transform_perspective (transform, 170); + transform = gsk_transform_translate_3d (transform, &GRAPHENE_POINT3D_INIT (50, 0, 50)); + transform = gsk_transform_rotate (transform, 30); + transform = gsk_transform_rotate_3d (transform, 30, graphene_vec3_y_axis ()); + gtk_fixed_set_child_transform (GTK_FIXED (fixed), button, transform); + + gtk_window_set_child (GTK_WINDOW (window), fixed); + + gtk_widget_show (window); + + while (!done) + g_main_context_iteration (NULL, TRUE); + + return 0; +} |