troja84 / af

My public branch of the animation-framework

This URL has Read+Write access

af / tests / test-chained-transitions.c
100644 62 lines (51 sloc) 1.869 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <gtk/gtk.h>
#include <af/af-animator.h>
 
int
main (int argc, char *argv[])
{
  GtkWidget *window, *label;
  guint id;
 
  gtk_init (&argc, &argv);
 
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
  g_signal_connect (window, "destroy",
                    G_CALLBACK (gtk_main_quit), NULL);
 
  label = gtk_label_new ("Sliff Sloff");
  gtk_container_add (GTK_CONTAINER (window), label);
 
  /* Set initial values */
  g_object_set (label,
                "xalign", 0.,
                "yalign", 0.,
                NULL);
 
  /* Create animation */
  id = af_animator_add ();
 
  af_animator_add_transition (id,
                              0., 0.25,
                              AF_TIMELINE_PROGRESS_LINEAR,
                              G_OBJECT (label),
                              "xalign", 1., NULL,
                              NULL);
  af_animator_add_transition (id,
                              0.25, 0.5,
                              AF_TIMELINE_PROGRESS_EASE_IN_EASE_OUT,
                              G_OBJECT (label),
                              "yalign", 1., NULL,
                              NULL);
  af_animator_add_transition (id,
                              0.5, 0.75,
                              AF_TIMELINE_PROGRESS_EXPONENTIAL,
                              G_OBJECT (label),
                              "xalign", 0., NULL,
                              NULL);
  af_animator_add_transition (id,
                              0.75, 1.,
                              AF_TIMELINE_PROGRESS_SINUSOIDAL,
                              G_OBJECT (label),
                              "yalign", 0., NULL,
                              NULL);
  af_animator_start (id, 3000);
  af_animator_set_loop (id, TRUE);
 
  gtk_widget_show_all (window);
 
  gtk_main ();
 
  return 0;
}