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 ClutterTimeline *timeline;
23 ClutterActor *stage, *viewport, *tex;
24 ClutterColor stage_color = { 0x61, 0x64, 0x8c, 0xff };
25 GtkWidget *window, *embed;
26 GtkWidget *table, *scrollbar;
27 GtkAdjustment *h_adjustment, *v_adjustment;
29 ClutterColor col2 = { 0, };
33 clutter_threads_init ();
35 if (gtk_clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
36 g_error ("Unable to initialize GtkClutter");
38 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
39 g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
41 table = gtk_table_new (2, 2, FALSE);
42 gtk_container_add (GTK_CONTAINER (window), table);
43 gtk_widget_show (table);
45 embed = gtk_clutter_embed_new ();
46 gtk_table_attach (GTK_TABLE (table), embed,
49 GTK_EXPAND | GTK_FILL,
50 GTK_EXPAND | GTK_FILL,
52 gtk_widget_set_size_request (embed, 320, 240);
53 gtk_widget_show (embed);
55 stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (embed));
56 clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
58 viewport = gtk_clutter_viewport_new (NULL, NULL);
59 clutter_actor_set_size (viewport, 320, 240);
60 clutter_container_add_actor (CLUTTER_CONTAINER (stage), viewport);
63 tex = gtk_clutter_texture_new_from_stock (embed,
64 GTK_STOCK_DIALOG_INFO,
65 GTK_ICON_SIZE_DIALOG);
70 tex = clutter_texture_new ();
71 g_object_set (G_OBJECT (tex), "load-async", TRUE, NULL);
72 g_signal_connect (tex,
73 "load-finished", G_CALLBACK (on_load_finished),
76 timer = g_timer_new ();
78 clutter_texture_set_from_file (CLUTTER_TEXTURE (tex), argv[1], &error);
81 g_warning ("Unable to open `%s': %s", argv[1], error->message);
85 g_print ("%s: load time: %.3f secs\n",
87 g_timer_elapsed (timer, NULL));
89 g_print ("%s: tex.size = %d, %d\n",
91 clutter_actor_get_width (tex),
92 clutter_actor_get_height (tex));
95 clutter_container_add_actor (CLUTTER_CONTAINER (viewport), tex);
97 gtk_clutter_scrollable_get_adjustments (GTK_CLUTTER_SCROLLABLE (viewport),
101 scrollbar = gtk_vscrollbar_new (v_adjustment);
102 gtk_table_attach (GTK_TABLE (table), scrollbar,
105 0, GTK_EXPAND | GTK_FILL,
107 gtk_widget_show (scrollbar);
109 scrollbar = gtk_hscrollbar_new (h_adjustment);
110 gtk_table_attach (GTK_TABLE (table), scrollbar,
113 GTK_EXPAND | GTK_FILL, 0,
115 gtk_widget_show (scrollbar);
117 gtk_widget_show (window);