2 #include <clutter/clutter.h>
4 #include <clutter-gtk/clutter-gtk.h>
6 static GTimer *timer = NULL;
9 on_load_finished (ClutterTexture *texture,
14 g_warning ("Unable to load texture: %s", error->message);
17 g_print ("%s: load time: %.3f secs\n",
19 g_timer_elapsed (timer, NULL));
23 on_size_change (ClutterTexture *texture,
27 g_print ("%s: tex.size = %d, %d\n", G_STRLOC, width, height);
31 main (int argc, char *argv[])
33 ClutterActor *stage, *viewport, *tex;
34 ClutterColor stage_color = { 0x61, 0x64, 0x8c, 0xff };
35 GtkWidget *window, *embed;
36 GtkWidget *table, *scrollbar, *slider;
37 GtkAdjustment *h_adjustment, *v_adjustment, *z_adjustment;
41 clutter_threads_init ();
43 if (gtk_clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
44 g_error ("Unable to initialize GtkClutter");
46 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
47 g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
49 table = gtk_table_new (3, 2, FALSE);
50 gtk_container_add (GTK_CONTAINER (window), table);
51 gtk_widget_show (table);
53 embed = gtk_clutter_embed_new ();
54 gtk_table_attach (GTK_TABLE (table), embed,
57 GTK_EXPAND | GTK_FILL,
58 GTK_EXPAND | GTK_FILL,
60 gtk_widget_set_size_request (embed, 320, 240);
61 gtk_widget_show (embed);
63 stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (embed));
64 clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
66 viewport = gtk_clutter_viewport_new (NULL, NULL, NULL);
67 clutter_actor_set_size (viewport, 320, 240);
68 clutter_container_add_actor (CLUTTER_CONTAINER (stage), viewport);
71 tex = gtk_clutter_texture_new_from_stock (embed,
72 GTK_STOCK_DIALOG_INFO,
73 GTK_ICON_SIZE_DIALOG);
78 tex = clutter_texture_new ();
79 clutter_texture_set_load_async (CLUTTER_TEXTURE (tex), TRUE);
80 g_signal_connect (tex,
81 "size-change", G_CALLBACK (on_size_change),
83 g_signal_connect (tex,
84 "load-finished", G_CALLBACK (on_load_finished),
87 timer = g_timer_new ();
89 clutter_texture_set_from_file (CLUTTER_TEXTURE (tex), argv[1], &error);
92 g_warning ("Unable to open `%s': %s", argv[1], error->message);
96 g_print ("%s: load time: %.3f secs\n",
98 g_timer_elapsed (timer, NULL));
100 g_print ("%s: tex.size = %.2f, %.2f\n",
102 clutter_actor_get_width (tex),
103 clutter_actor_get_height (tex));
106 clutter_container_add_actor (CLUTTER_CONTAINER (viewport), tex);
108 gtk_clutter_scrollable_get_adjustments (GTK_CLUTTER_SCROLLABLE (viewport),
112 scrollbar = gtk_vscrollbar_new (v_adjustment);
113 gtk_table_attach (GTK_TABLE (table), scrollbar,
116 0, GTK_EXPAND | GTK_FILL,
118 gtk_widget_show (scrollbar);
120 scrollbar = gtk_hscrollbar_new (h_adjustment);
121 gtk_table_attach (GTK_TABLE (table), scrollbar,
124 GTK_EXPAND | GTK_FILL, 0,
126 gtk_widget_show (scrollbar);
129 gtk_clutter_zoomable_get_adjustment (GTK_CLUTTER_ZOOMABLE (viewport));
131 slider = gtk_hscale_new (z_adjustment);
132 gtk_table_attach (GTK_TABLE (table), slider,
135 GTK_EXPAND | GTK_FILL, 0,
137 gtk_widget_show (slider);
139 gtk_widget_show (window);