33c54ad88fe5f890adc8cf2003d6f1effe77e644
[clutter-gtk] / examples / gtk-clutter-viewport.c
1 #include <gtk/gtk.h>
2 #include <clutter/clutter.h>
3
4 #include <clutter-gtk/clutter-gtk.h>
5
6 int
7 main (int argc, char *argv[])
8 {
9   ClutterTimeline *timeline;
10   ClutterActor    *stage, *viewport, *tex;
11   ClutterColor     stage_color = { 0x61, 0x64, 0x8c, 0xff };
12   GtkWidget       *window, *embed; 
13   GtkWidget       *table, *scrollbar;
14   GtkAdjustment   *h_adjustment, *v_adjustment;
15   gint             i;
16   ClutterColor     col2 = { 0, };
17
18   if (gtk_clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
19     g_error ("Unable to initialize GtkClutter");
20
21   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
22   g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
23
24   table = gtk_table_new (2, 2, FALSE);
25   gtk_container_add (GTK_CONTAINER (window), table);
26   gtk_widget_show (table);
27
28   embed = gtk_clutter_embed_new ();
29   gtk_table_attach (GTK_TABLE (table), embed,
30                     0, 1,
31                     0, 1,
32                     GTK_EXPAND | GTK_FILL,
33                     GTK_EXPAND | GTK_FILL,
34                     0, 0);
35   gtk_widget_set_size_request (embed, 320, 240);
36   gtk_widget_show (embed);
37
38   stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (embed));
39   clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
40
41   viewport = gtk_clutter_viewport_new (NULL, NULL);
42   clutter_actor_set_size (viewport, 320, 240);
43   clutter_container_add_actor (CLUTTER_CONTAINER (stage), viewport);
44
45   if (argc < 2)
46     tex = gtk_clutter_texture_new_from_stock (embed,
47                                               GTK_STOCK_DIALOG_INFO,
48                                               GTK_ICON_SIZE_DIALOG);
49   else
50     {
51       GError *error = NULL;
52
53       tex = clutter_texture_new_from_file (argv[1], &error);
54       if (error)
55         {
56           g_warning ("Unable to open `%s': %s", argv[1], error->message);
57           g_error_free (error);
58         }
59     }
60
61   clutter_container_add_actor (CLUTTER_CONTAINER (viewport), tex); 
62
63   gtk_clutter_scrollable_get_adjustments (GTK_CLUTTER_SCROLLABLE (viewport),
64                                           &h_adjustment,
65                                           &v_adjustment);
66
67   scrollbar = gtk_vscrollbar_new (v_adjustment);
68   gtk_table_attach (GTK_TABLE (table), scrollbar,
69                     1, 2,
70                     0, 1,
71                     0, GTK_EXPAND | GTK_FILL,
72                     0, 0);
73   gtk_widget_show (scrollbar);
74
75   scrollbar = gtk_hscrollbar_new (h_adjustment);
76   gtk_table_attach (GTK_TABLE (table), scrollbar,
77                     0, 1,
78                     1, 2,
79                     GTK_EXPAND | GTK_FILL, 0,
80                     0, 0);
81   gtk_widget_show (scrollbar);
82
83   gtk_widget_show (window);
84
85   gtk_main();
86
87   return 0;
88 }