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_print ("%s: load time: %.3f secs\n",
16 g_timer_elapsed (timer, NULL));
20 main (int argc, char *argv[])
22 ClutterActor *stage, *viewport, *tex;
23 ClutterColor stage_color = { 0x61, 0x64, 0x8c, 0xff };
24 GtkWidget *window, *embed;
25 GtkWidget *table, *scrollbar;
26 GtkAdjustment *h_adjustment, *v_adjustment;
30 clutter_threads_init ();
32 if (gtk_clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
33 g_error ("Unable to initialize GtkClutter");
35 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
36 g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
38 table = gtk_table_new (2, 2, FALSE);
39 gtk_container_add (GTK_CONTAINER (window), table);
40 gtk_widget_show (table);
42 embed = gtk_clutter_embed_new ();
43 gtk_table_attach (GTK_TABLE (table), embed,
46 GTK_EXPAND | GTK_FILL,
47 GTK_EXPAND | GTK_FILL,
49 gtk_widget_set_size_request (embed, 320, 240);
50 gtk_widget_show (embed);
52 stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (embed));
53 clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
55 viewport = gtk_clutter_viewport_new (NULL, NULL, NULL);
56 clutter_actor_set_size (viewport, 320, 240);
57 clutter_container_add_actor (CLUTTER_CONTAINER (stage), viewport);
60 tex = gtk_clutter_texture_new_from_stock (embed,
61 GTK_STOCK_DIALOG_INFO,
62 GTK_ICON_SIZE_DIALOG);
67 tex = clutter_texture_new ();
68 g_object_set (G_OBJECT (tex), "load-async", TRUE, NULL);
69 g_signal_connect (tex,
70 "load-finished", G_CALLBACK (on_load_finished),
73 timer = g_timer_new ();
75 clutter_texture_set_from_file (CLUTTER_TEXTURE (tex), argv[1], &error);
78 g_warning ("Unable to open `%s': %s", argv[1], error->message);
82 g_print ("%s: load time: %.3f secs\n",
84 g_timer_elapsed (timer, NULL));
86 g_print ("%s: tex.size = %.2f, %.2f\n",
88 clutter_actor_get_width (tex),
89 clutter_actor_get_height (tex));
92 clutter_container_add_actor (CLUTTER_CONTAINER (viewport), tex);
94 gtk_clutter_scrollable_get_adjustments (GTK_CLUTTER_SCROLLABLE (viewport),
98 scrollbar = gtk_vscrollbar_new (v_adjustment);
99 gtk_table_attach (GTK_TABLE (table), scrollbar,
102 0, GTK_EXPAND | GTK_FILL,
104 gtk_widget_show (scrollbar);
106 scrollbar = gtk_hscrollbar_new (h_adjustment);
107 gtk_table_attach (GTK_TABLE (table), scrollbar,
110 GTK_EXPAND | GTK_FILL, 0,
112 gtk_widget_show (scrollbar);
114 gtk_widget_show (window);