1 /* GStreamer Editing Services
2 * Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
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.
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.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
20 #include "ges-timeline.h"
25 * Top-level container for pipelines
27 * Contains a list of TimelineLayer which users should use to arrange the
28 * various timeline objects.
32 G_DEFINE_TYPE (GESTimeline, ges_timeline, GST_TYPE_BIN)
34 #define GET_PRIVATE(o) \
35 (G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_TIMELINE, GESTimelinePrivate))
37 typedef struct _GESTimelinePrivate GESTimelinePrivate;
39 struct _GESTimelinePrivate {
40 GList *tracks; /* TimelineTracks */
44 ges_timeline_get_property (GObject *object, guint property_id,
45 GValue *value, GParamSpec *pspec)
47 switch (property_id) {
49 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
54 ges_timeline_set_property (GObject *object, guint property_id,
55 const GValue *value, GParamSpec *pspec)
57 switch (property_id) {
59 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
64 ges_timeline_dispose (GObject *object)
66 G_OBJECT_CLASS (ges_timeline_parent_class)->dispose (object);
70 ges_timeline_finalize (GObject *object)
72 G_OBJECT_CLASS (ges_timeline_parent_class)->finalize (object);
76 ges_timeline_class_init (GESTimelineClass *klass)
78 GObjectClass *object_class = G_OBJECT_CLASS (klass);
80 g_type_class_add_private (klass, sizeof (GESTimelinePrivate));
82 object_class->get_property = ges_timeline_get_property;
83 object_class->set_property = ges_timeline_set_property;
84 object_class->dispose = ges_timeline_dispose;
85 object_class->finalize = ges_timeline_finalize;
89 ges_timeline_init (GESTimeline *self)
96 ges_timeline_new (void)
98 return g_object_new (GES_TYPE_TIMELINE, NULL);
102 ges_timeline_load_from_uri (gchar *uri)
104 /* FIXME : IMPLEMENT */
109 ges_timeline_save (GESTimeline *timeline, gchar *uri)
111 /* FIXME : IMPLEMENT */
116 ges_timeline_add_layer (GESTimeline *timeline, GESTimelineLayer *layer)
118 /* FIXME : IMPLEMENT */
120 /* Add to the list of layers, make sure we don't already control it */
122 /* Assign Tracks to it */
128 ges_timeline_remove_layer (GESTimeline *timeline, GESTimelineLayer *layer)
130 /* FIXME : IMPLEMENT */
132 /* Unassign tracks from the given layer */
137 ges_timeline_add_track (GESTimeline *timeline, GESTrack *track)
139 /* FIXME : IMPLEMENT */
141 /* Add to the list of tracks, make sure we don't already control it */
147 ges_timeline_remove_track (GESTimeline *timeline, GESTrack *track)
149 /* FIXME : IMPLEMENT */
151 /* Signal track removal to all layers/objects */