]> Pileus Git - ~andy/gtk/blob - gtk/gtktimeline.h
9841a2ebf86f6866e2380f8a0d943040a4b39170
[~andy/gtk] / gtk / gtktimeline.h
1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 2007 Carlos Garnacho <carlos@imendio.com>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #ifndef __GTK_TIMELINE_H__
19 #define __GTK_TIMELINE_H__
20
21 #include <glib-object.h>
22 #include <gtk/gtkenums.h>
23 #include <gdk/gdk.h>
24
25 G_BEGIN_DECLS
26
27 #define GTK_TYPE_TIMELINE                 (gtk_timeline_get_type ())
28 #define GTK_TIMELINE(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TIMELINE, GtkTimeline))
29 #define GTK_TIMELINE_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TIMELINE, GtkTimelineClass))
30 #define GTK_IS_TIMELINE(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TIMELINE))
31 #define GTK_IS_TIMELINE_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TIMELINE))
32 #define GTK_TIMELINE_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TIMELINE, GtkTimelineClass))
33
34 typedef struct GtkTimeline      GtkTimeline;
35 typedef struct GtkTimelineClass GtkTimelineClass;
36
37 typedef enum {
38   GTK_TIMELINE_DIRECTION_FORWARD,
39   GTK_TIMELINE_DIRECTION_BACKWARD
40 } GtkTimelineDirection;
41
42 typedef enum {
43   GTK_TIMELINE_PROGRESS_LINEAR,
44   GTK_TIMELINE_PROGRESS_EASE,
45   GTK_TIMELINE_PROGRESS_EASE_IN,
46   GTK_TIMELINE_PROGRESS_EASE_OUT,
47   GTK_TIMELINE_PROGRESS_EASE_IN_OUT
48 } GtkTimelineProgressType;
49
50 struct GtkTimeline
51 {
52   GObject parent_instance;
53   gpointer priv;
54 };
55
56 struct GtkTimelineClass
57 {
58   GObjectClass parent_class;
59
60   void (* started)           (GtkTimeline *timeline);
61   void (* finished)          (GtkTimeline *timeline);
62   void (* paused)            (GtkTimeline *timeline);
63
64   void (* frame)             (GtkTimeline *timeline,
65                               gdouble     progress);
66
67   void (* __gtk_reserved1) (void);
68   void (* __gtk_reserved2) (void);
69   void (* __gtk_reserved3) (void);
70   void (* __gtk_reserved4) (void);
71 };
72
73
74 GType                   gtk_timeline_get_type          (void) G_GNUC_CONST;
75
76 GtkTimeline *           gtk_timeline_new               (guint                    duration);
77 GtkTimeline *           gtk_timeline_new_for_screen    (guint                    duration,
78                                                         GdkScreen               *screen);
79
80 void                    gtk_timeline_start             (GtkTimeline             *timeline);
81 void                    gtk_timeline_pause             (GtkTimeline             *timeline);
82 void                    gtk_timeline_rewind            (GtkTimeline             *timeline);
83
84 gboolean                gtk_timeline_is_running        (GtkTimeline             *timeline);
85 guint                   gtk_timeline_get_elapsed_time  (GtkTimeline             *timeline);
86
87 gboolean                gtk_timeline_get_loop          (GtkTimeline             *timeline);
88 void                    gtk_timeline_set_loop          (GtkTimeline             *timeline,
89                                                         gboolean                 loop);
90
91 guint                   gtk_timeline_get_duration      (GtkTimeline             *timeline);
92 void                    gtk_timeline_set_duration      (GtkTimeline             *timeline,
93                                                          guint                    duration);
94
95 GdkScreen *             gtk_timeline_get_screen        (GtkTimeline             *timeline);
96 void                    gtk_timeline_set_screen        (GtkTimeline             *timeline,
97                                                         GdkScreen               *screen);
98
99 GtkTimelineDirection    gtk_timeline_get_direction     (GtkTimeline             *timeline);
100 void                    gtk_timeline_set_direction     (GtkTimeline             *timeline,
101                                                         GtkTimelineDirection     direction);
102
103 gdouble                 gtk_timeline_get_progress      (GtkTimeline             *timeline);
104
105 GtkTimelineProgressType gtk_timeline_get_progress_type (GtkTimeline             *timeline);
106 void                    gtk_timeline_set_progress_type (GtkTimeline             *timeline,
107                                                         GtkTimelineProgressType  progress_type);
108
109
110 G_END_DECLS
111
112 #endif /* _GTK_TIMELINE_H__ */