1 /* track.c generated by valac, the Vala compiler
2 * generated from track.vala, do not modify */
4 /* Copyright 2009-2010 Yorba Foundation
6 * This software is licensed under the GNU Lesser General Public License
7 * (version 2.1 or later). See the COPYING file in this distribution.
11 #include <glib-object.h>
21 #define MODEL_TYPE_TRACK (model_track_get_type ())
22 #define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack))
23 #define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass))
24 #define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK))
25 #define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK))
26 #define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass))
28 typedef struct _ModelTrack ModelTrack;
29 typedef struct _ModelTrackClass ModelTrackClass;
30 typedef struct _ModelTrackPrivate ModelTrackPrivate;
32 #define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ())
34 #define MODEL_TYPE_CLIP (model_clip_get_type ())
35 #define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip))
36 #define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass))
37 #define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP))
38 #define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP))
39 #define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass))
41 typedef struct _ModelClip ModelClip;
42 typedef struct _ModelClipClass ModelClipClass;
44 #define MODEL_TYPE_PROJECT (model_project_get_type ())
45 #define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject))
46 #define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass))
47 #define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT))
48 #define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT))
49 #define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass))
51 typedef struct _ModelProject ModelProject;
52 typedef struct _ModelProjectClass ModelProjectClass;
53 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
54 #define _g_free0(var) (var = (g_free (var), NULL))
55 typedef struct _ModelClipPrivate ModelClipPrivate;
57 #define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ())
58 #define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile))
59 #define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
60 #define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE))
61 #define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE))
62 #define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
64 typedef struct _ModelClipFile ModelClipFile;
65 typedef struct _ModelClipFileClass ModelClipFileClass;
67 #define MODEL_TYPE_GAP (model_gap_get_type ())
68 #define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap))
69 #define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass))
70 #define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP))
71 #define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP))
72 #define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass))
74 typedef struct _ModelGap ModelGap;
75 typedef struct _ModelGapClass ModelGapClass;
76 #define _model_gap_unref0(var) ((var == NULL) ? NULL : (var = (model_gap_unref (var), NULL)))
77 typedef struct _ModelGapPrivate ModelGapPrivate;
79 #define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ())
80 #define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation))
81 #define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION))
82 #define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface))
84 typedef struct _ModelTempoInformation ModelTempoInformation;
85 typedef struct _ModelTempoInformationIface ModelTempoInformationIface;
87 #define TYPE_FRACTION (fraction_get_type ())
88 typedef struct _Fraction Fraction;
89 typedef struct _ModelProjectPrivate ModelProjectPrivate;
91 #define TYPE_TIME_CODE (time_code_get_type ())
92 typedef struct _TimeCode TimeCode;
94 #define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ())
95 #define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine))
96 #define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
97 #define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE))
98 #define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE))
99 #define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
101 typedef struct _ViewMediaEngine ViewMediaEngine;
102 typedef struct _ViewMediaEngineClass ViewMediaEngineClass;
104 #define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ())
105 #define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader))
106 #define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
107 #define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER))
108 #define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER))
109 #define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
111 typedef struct _ModelProjectLoader ModelProjectLoader;
112 typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass;
114 #define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ())
115 #define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager))
116 #define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
117 #define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER))
118 #define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER))
119 #define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
121 typedef struct _ModelUndoManager ModelUndoManager;
122 typedef struct _ModelUndoManagerClass ModelUndoManagerClass;
124 #define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ())
125 #define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter))
126 #define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
127 #define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER))
128 #define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER))
129 #define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
131 typedef struct _ModelLibraryImporter ModelLibraryImporter;
132 typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass;
134 #define MODEL_TYPE_COMMAND (model_command_get_type ())
135 #define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand))
136 #define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass))
137 #define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND))
138 #define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND))
139 #define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass))
141 typedef struct _ModelCommand ModelCommand;
142 typedef struct _ModelCommandClass ModelCommandClass;
144 #define MODEL_TYPE_CLIP_ADD_COMMAND (model_clip_add_command_get_type ())
145 #define MODEL_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommand))
146 #define MODEL_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass))
147 #define MODEL_IS_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_ADD_COMMAND))
148 #define MODEL_IS_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_ADD_COMMAND))
149 #define MODEL_CLIP_ADD_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass))
151 typedef struct _ModelClipAddCommand ModelClipAddCommand;
152 typedef struct _ModelClipAddCommandClass ModelClipAddCommandClass;
153 #define _model_command_unref0(var) ((var == NULL) ? NULL : (var = (model_command_unref (var), NULL)))
155 #define LOGGING_TYPE_FACILITY (logging_facility_get_type ())
157 #define LOGGING_TYPE_LEVEL (logging_level_get_type ())
159 #define MODEL_CLIP_COMMAND_TYPE_ACTION (model_clip_command_action_get_type ())
161 #define MODEL_TYPE_CLIP_COMMAND (model_clip_command_get_type ())
162 #define MODEL_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommand))
163 #define MODEL_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass))
164 #define MODEL_IS_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_COMMAND))
165 #define MODEL_IS_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_COMMAND))
166 #define MODEL_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass))
168 typedef struct _ModelClipCommand ModelClipCommand;
169 typedef struct _ModelClipCommandClass ModelClipCommandClass;
171 #define MODEL_TYPE_CLIP_REVERT_COMMAND (model_clip_revert_command_get_type ())
172 #define MODEL_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommand))
173 #define MODEL_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass))
174 #define MODEL_IS_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND))
175 #define MODEL_IS_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND))
176 #define MODEL_CLIP_REVERT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass))
178 typedef struct _ModelClipRevertCommand ModelClipRevertCommand;
179 typedef struct _ModelClipRevertCommandClass ModelClipRevertCommandClass;
181 #define MODEL_CLIP_SPLIT_COMMAND_TYPE_ACTION (model_clip_split_command_action_get_type ())
183 #define MODEL_TYPE_CLIP_SPLIT_COMMAND (model_clip_split_command_get_type ())
184 #define MODEL_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommand))
185 #define MODEL_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass))
186 #define MODEL_IS_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND))
187 #define MODEL_IS_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND))
188 #define MODEL_CLIP_SPLIT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass))
190 typedef struct _ModelClipSplitCommand ModelClipSplitCommand;
191 typedef struct _ModelClipSplitCommandClass ModelClipSplitCommandClass;
193 #define MODEL_TYPE_CLIP_TRIM_COMMAND (model_clip_trim_command_get_type ())
194 #define MODEL_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommand))
195 #define MODEL_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass))
196 #define MODEL_IS_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND))
197 #define MODEL_IS_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND))
198 #define MODEL_CLIP_TRIM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass))
200 typedef struct _ModelClipTrimCommand ModelClipTrimCommand;
201 typedef struct _ModelClipTrimCommandClass ModelClipTrimCommandClass;
203 #define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ())
204 #define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack))
205 #define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass))
206 #define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK))
207 #define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK))
208 #define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass))
210 typedef struct _ModelAudioTrack ModelAudioTrack;
211 typedef struct _ModelAudioTrackClass ModelAudioTrackClass;
212 typedef struct _ModelAudioTrackPrivate ModelAudioTrackPrivate;
214 #define MODEL_TYPE_PARAMETER (model_parameter_get_type ())
216 #define MODEL_TYPE_PARAMETER_COMMAND (model_parameter_command_get_type ())
217 #define MODEL_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommand))
218 #define MODEL_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass))
219 #define MODEL_IS_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PARAMETER_COMMAND))
220 #define MODEL_IS_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PARAMETER_COMMAND))
221 #define MODEL_PARAMETER_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass))
223 typedef struct _ModelParameterCommand ModelParameterCommand;
224 typedef struct _ModelParameterCommandClass ModelParameterCommandClass;
227 MODEL_MEDIA_TYPE_AUDIO,
228 MODEL_MEDIA_TYPE_VIDEO
232 GObject parent_instance;
233 ModelTrackPrivate * priv;
234 ModelProject* project;
239 struct _ModelTrackClass {
240 GObjectClass parent_class;
241 char* (*name) (ModelTrack* self);
242 ModelMediaType (*media_type) (ModelTrack* self);
243 gboolean (*check) (ModelTrack* self, ModelClip* clip);
244 void (*on_clip_updated) (ModelTrack* self, ModelClip* clip);
245 void (*write_attributes) (ModelTrack* self, FILE* f);
248 struct _ModelTrackPrivate {
249 gboolean is_selected;
253 GObject parent_instance;
254 ModelClipPrivate * priv;
255 ModelClipFile* clipfile;
257 gboolean is_recording;
261 struct _ModelClipClass {
262 GObjectClass parent_class;
266 GTypeInstance parent_instance;
267 volatile int ref_count;
268 ModelGapPrivate * priv;
273 struct _ModelGapClass {
274 GTypeClass parent_class;
275 void (*finalize) (ModelGap *self);
283 struct _ModelTempoInformationIface {
284 GTypeInterface parent_iface;
285 void (*get_time_signature) (ModelTempoInformation* self, Fraction* result);
286 gint (*get_bpm) (ModelTempoInformation* self);
297 struct _ModelProject {
298 GObject parent_instance;
299 ModelProjectPrivate * priv;
300 GeeArrayList* tracks;
301 GeeArrayList* inactive_tracks;
302 GeeArrayList* clipfiles;
303 ViewMediaEngine* media_engine;
305 ModelProjectLoader* loader;
306 ModelUndoManager* undo_manager;
307 ModelLibraryImporter* importer;
308 Fraction default_framerate;
309 gboolean click_during_play;
310 gboolean click_during_record;
312 gboolean library_visible;
314 gboolean snap_to_clip;
317 struct _ModelProjectClass {
318 GObjectClass parent_class;
319 void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result);
320 char* (*get_project_file) (ModelProject* self);
321 void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time);
322 void (*add_track) (ModelProject* self, ModelTrack* track);
323 void (*insert_track) (ModelProject* self, gint index, ModelTrack* track);
324 void (*load) (ModelProject* self, const char* fname);
325 void (*save) (ModelProject* self, const char* filename);
326 char* (*get_app_name) (ModelProject* self);
327 void (*load_complete) (ModelProject* self);
331 LOGGING_FACILITY_SIGNAL_HANDLERS,
332 LOGGING_FACILITY_DEVELOPER_WARNINGS,
333 LOGGING_FACILITY_GRAPH,
334 LOGGING_FACILITY_LOADING,
335 LOGGING_FACILITY_IMPORT,
336 LOGGING_FACILITY_SINGLEDECODEBIN
340 LOGGING_LEVEL_CRITICAL,
342 LOGGING_LEVEL_MEDIUM,
345 LOGGING_LEVEL_VERBOSE
349 MODEL_CLIP_COMMAND_ACTION_APPEND,
350 MODEL_CLIP_COMMAND_ACTION_DELETE
351 } ModelClipCommandAction;
354 MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT,
355 MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN
356 } ModelClipSplitCommandAction;
358 struct _ModelAudioTrack {
359 ModelTrack parent_instance;
360 ModelAudioTrackPrivate * priv;
363 struct _ModelAudioTrackClass {
364 ModelTrackClass parent_class;
367 struct _ModelAudioTrackPrivate {
370 gint default_num_channels;
375 MODEL_PARAMETER_VOLUME
379 static gpointer model_track_parent_class = NULL;
380 static gpointer model_audio_track_parent_class = NULL;
382 GType model_track_get_type (void);
383 GType model_media_type_get_type (void);
384 GType model_clip_get_type (void);
385 GType model_project_get_type (void);
386 #define MODEL_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_TRACK, ModelTrackPrivate))
388 MODEL_TRACK_DUMMY_PROPERTY
390 ModelTrack* model_track_construct (GType object_type, ModelProject* project, const char* display_name);
391 char* model_track_name (ModelTrack* self);
392 static char* model_track_real_name (ModelTrack* self);
393 ModelMediaType model_track_media_type (ModelTrack* self);
394 static ModelMediaType model_track_real_media_type (ModelTrack* self);
395 void model_track_hide (ModelTrack* self);
396 GType model_clip_file_get_type (void);
397 gboolean model_track_contains_clipfile (ModelTrack* self, ModelClipFile* f);
398 gboolean model_track_check (ModelTrack* self, ModelClip* clip);
399 static gboolean model_track_real_check (ModelTrack* self, ModelClip* clip);
400 gint64 model_clip_get_start (ModelClip* self);
401 gint64 model_clip_get_duration (ModelClip* self);
402 gint64 model_track_get_time_from_pos (ModelTrack* self, ModelClip* clip, gboolean after);
403 gint64 model_clip_get_end (ModelClip* self);
404 static gint model_track_get_clip_from_time (ModelTrack* self, gint64 time);
405 gint64 model_clip_snap (ModelClip* self, ModelClip* other, gint64 pad);
406 gint64 model_track_snap_clip (ModelTrack* self, ModelClip* c, gint64 span);
407 gboolean model_clip_snap_coord (ModelClip* self, gint64* s, gint64 span);
408 gboolean model_track_snap_coord (ModelTrack* self, gint64* coord, gint64 span);
409 gboolean model_track_clip_is_near (ModelTrack* self, ModelClip* clip, gint64 range, gint64* adjustment);
410 static gint model_track_get_insert_index (ModelTrack* self, gint64 time);
411 ModelGap* model_gap_new (gint64 start, gint64 end);
412 ModelGap* model_gap_construct (GType object_type, gint64 start, gint64 end);
413 gpointer model_gap_ref (gpointer instance);
414 void model_gap_unref (gpointer instance);
415 GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
416 void model_value_set_gap (GValue* value, gpointer v_object);
417 void model_value_take_gap (GValue* value, gpointer v_object);
418 gpointer model_value_get_gap (const GValue* value);
419 GType model_gap_get_type (void);
420 ModelGap* model_track_find_first_gap (ModelTrack* self, gint64 start);
421 static gint model_track_get_gap_index (ModelTrack* self, gint64 time);
422 void model_track_find_containing_gap (ModelTrack* self, gint64 time, ModelGap** g);
423 gboolean model_clip_overlap_pos (ModelClip* self, gint64 start, gint64 length);
424 ModelClip* model_track_find_overlapping_clip (ModelTrack* self, gint64 start, gint64 length);
425 ModelClip* model_track_find_nearest_clip_edge (ModelTrack* self, gint64 time, gboolean* after);
426 gint64 model_clip_get_media_start (ModelClip* self);
427 ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording);
428 ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording);
429 void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select);
430 void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge);
431 GType fraction_get_type (void);
432 Fraction* fraction_dup (const Fraction* self);
433 void fraction_free (Fraction* self);
434 GType model_tempo_information_get_type (void);
435 GType time_code_get_type (void);
436 TimeCode* time_code_dup (const TimeCode* self);
437 void time_code_free (TimeCode* self);
438 GType view_media_engine_get_type (void);
439 GType model_project_loader_get_type (void);
440 gpointer model_undo_manager_ref (gpointer instance);
441 void model_undo_manager_unref (gpointer instance);
442 GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
443 void model_value_set_undo_manager (GValue* value, gpointer v_object);
444 void model_value_take_undo_manager (GValue* value, gpointer v_object);
445 gpointer model_value_get_undo_manager (const GValue* value);
446 GType model_undo_manager_get_type (void);
447 GType model_library_importer_get_type (void);
448 gboolean model_undo_manager_get_in_undo (ModelUndoManager* self);
449 void model_track_delete_clip (ModelTrack* self, ModelClip* clip);
450 static void model_track_do_clip_overwrite (ModelTrack* self, ModelClip* c);
451 ModelClipAddCommand* model_clip_add_command_new (ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start);
452 ModelClipAddCommand* model_clip_add_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start);
453 gpointer model_command_ref (gpointer instance);
454 void model_command_unref (gpointer instance);
455 GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
456 void model_value_set_command (GValue* value, gpointer v_object);
457 void model_value_take_command (GValue* value, gpointer v_object);
458 gpointer model_value_get_command (const GValue* value);
459 GType model_command_get_type (void);
460 GType model_clip_add_command_get_type (void);
461 void model_project_do_command (ModelProject* self, ModelCommand* the_command);
462 void model_track_move (ModelTrack* self, ModelClip* c, gint64 pos, gint64 original_time);
463 void model_clip_set_start (ModelClip* self, gint64 value);
464 static void model_track_insert_clip_into_array (ModelTrack* self, ModelClip* c, gint pos);
465 void model_project_reseek (ModelProject* self);
466 void _model_track_move (ModelTrack* self, ModelClip* c, gint64 pos);
467 void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select);
468 GType logging_facility_get_type (void);
469 GType logging_level_get_type (void);
470 void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message);
471 void model_track_on_clip_updated (ModelTrack* self, ModelClip* clip);
472 static void model_track_real_on_clip_updated (ModelTrack* self, ModelClip* clip);
473 void model_track_do_clip_paste (ModelTrack* self, ModelClip* clip, gint64 position);
474 ModelClip* model_track_get_clip (ModelTrack* self, gint i);
475 gint model_track_get_clip_index (ModelTrack* self, ModelClip* c);
476 ModelClip* model_track_get_clip_by_position (ModelTrack* self, gint64 pos);
477 gint64 model_track_get_length (ModelTrack* self);
478 void _model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select);
479 GType model_clip_command_action_get_type (void);
480 ModelClipCommand* model_clip_command_new (ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select);
481 ModelClipCommand* model_clip_command_construct (GType object_type, ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select);
482 GType model_clip_command_get_type (void);
483 void _model_track_delete_clip (ModelTrack* self, ModelClip* clip);
484 void model_track_delete_gap (ModelTrack* self, ModelGap* g);
485 void model_track_remove_clip_from_array (ModelTrack* self, ModelClip* pos);
486 static void _model_track_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self);
487 void view_media_engine_go (ViewMediaEngine* self, gint64 pos);
488 void model_track_delete_all_clips (ModelTrack* self);
489 ModelClipRevertCommand* model_clip_revert_command_new (ModelTrack* track, ModelClip* clip);
490 ModelClipRevertCommand* model_clip_revert_command_construct (GType object_type, ModelTrack* track, ModelClip* clip);
491 GType model_clip_revert_command_get_type (void);
492 void model_track_revert_to_original (ModelTrack* self, ModelClip* clip);
493 void model_clip_set_media_start_duration (ModelClip* self, gint64 media_start, gint64 duration);
494 gint64 model_clip_file_get_length (ModelClipFile* self);
495 void _model_track_revert_to_original (ModelTrack* self, ModelClip* c);
496 gboolean model_track_are_contiguous_clips (ModelTrack* self, gint64 position);
497 GType model_clip_split_command_action_get_type (void);
498 ModelClipSplitCommand* model_clip_split_command_new (ModelClipSplitCommandAction action, ModelTrack* track, gint64 time);
499 ModelClipSplitCommand* model_clip_split_command_construct (GType object_type, ModelClipSplitCommandAction action, ModelTrack* track, gint64 time);
500 GType model_clip_split_command_get_type (void);
501 void model_track_split_at (ModelTrack* self, gint64 position);
502 void model_clip_set_duration (ModelClip* self, gint64 value);
503 void _model_track_split_at (ModelTrack* self, gint64 position);
504 void model_track_join (ModelTrack* self, gint64 position);
505 void _model_track_join (ModelTrack* self, gint64 position);
506 ModelClipTrimCommand* model_clip_trim_command_new (ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge);
507 ModelClipTrimCommand* model_clip_trim_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge);
508 GType model_clip_trim_command_get_type (void);
509 void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge);
510 void _model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge);
511 gint64 model_track_previous_edit (ModelTrack* self, gint64 pos);
512 gint64 model_track_next_edit (ModelTrack* self, gint64 pos);
513 char* model_track_get_display_name (ModelTrack* self);
514 void model_track_write_attributes (ModelTrack* self, FILE* f);
515 static void model_track_real_write_attributes (ModelTrack* self, FILE* f);
516 void model_clip_save (ModelClip* self, FILE* f, gint id);
517 gint model_project_get_clipfile_index (ModelProject* self, ModelClipFile* find);
518 void model_track_save (ModelTrack* self, FILE* f);
519 void model_track_set_display_name (ModelTrack* self, const char* new_display_name);
520 void model_track_set_selected (ModelTrack* self, gboolean is_selected);
521 gboolean model_track_get_is_selected (ModelTrack* self);
522 static void model_track_finalize (GObject* obj);
523 GType model_audio_track_get_type (void);
524 #define MODEL_AUDIO_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackPrivate))
526 MODEL_AUDIO_TRACK_DUMMY_PROPERTY
528 #define MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT (-1)
529 void model_audio_track_set_default_num_channels (ModelAudioTrack* self, gint num);
530 void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value);
531 void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume);
532 ModelAudioTrack* model_audio_track_new (ModelProject* project, const char* display_name);
533 ModelAudioTrack* model_audio_track_construct (GType object_type, ModelProject* project, const char* display_name);
534 static char* model_audio_track_real_name (ModelTrack* base);
535 static ModelMediaType model_audio_track_real_media_type (ModelTrack* base);
536 double model_audio_track_get_volume (ModelAudioTrack* self);
537 double model_audio_track_get_pan (ModelAudioTrack* self);
538 gboolean model_audio_track_get_num_channels (ModelAudioTrack* self, gint* num);
539 static void model_audio_track_real_write_attributes (ModelTrack* base, FILE* f);
540 gboolean float_within (double f, double epsilon);
541 GType model_parameter_get_type (void);
542 ModelParameterCommand* model_parameter_command_new (ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value);
543 ModelParameterCommand* model_parameter_command_construct (GType object_type, ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value);
544 GType model_parameter_command_get_type (void);
545 void model_audio_track_set_pan (ModelAudioTrack* self, double new_value);
546 void model_audio_track_set_volume (ModelAudioTrack* self, double new_volume);
547 gboolean model_clip_file_is_online (ModelClipFile* self);
548 gboolean model_clip_file_get_num_channels (ModelClipFile* self, gint* channels);
549 static gboolean model_audio_track_real_check (ModelTrack* base, ModelClip* clip);
550 void model_audio_track_on_level_changed (ModelAudioTrack* self, double level_left, double level_right);
551 static void model_audio_track_real_on_clip_updated (ModelTrack* base, ModelClip* clip);
552 static void model_audio_track_finalize (GObject* obj);
553 static int _vala_strcmp0 (const char * str1, const char * str2);
556 static void g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
557 static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
558 static void g_cclosure_user_marshal_VOID__ENUM_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
559 static void g_cclosure_user_marshal_VOID__DOUBLE_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
561 #line 26 "track.vala"
562 ModelTrack* model_track_construct (GType object_type, ModelProject* project, const char* display_name) {
566 #line 26 "track.vala"
567 g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL);
568 #line 26 "track.vala"
569 g_return_val_if_fail (display_name != NULL, NULL);
570 #line 26 "track.vala"
571 self = (ModelTrack*) g_object_new (object_type, NULL);
572 #line 27 "track.vala"
573 self->project = project;
574 #line 28 "track.vala"
575 self->display_name = (_tmp0_ = g_strdup (display_name), _g_free0 (self->display_name), _tmp0_);
581 #line 31 "track.vala"
582 static char* model_track_real_name (ModelTrack* self) {
584 g_return_val_if_fail (MODEL_IS_TRACK (self), NULL);
585 g_critical ("Type `%s' does not implement abstract method `model_track_name'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
590 #line 31 "track.vala"
591 char* model_track_name (ModelTrack* self) {
592 #line 31 "track.vala"
593 return MODEL_TRACK_GET_CLASS (self)->name (self);
598 #line 32 "track.vala"
599 static ModelMediaType model_track_real_media_type (ModelTrack* self) {
601 g_return_val_if_fail (MODEL_IS_TRACK (self), 0);
602 g_critical ("Type `%s' does not implement abstract method `model_track_media_type'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
607 #line 32 "track.vala"
608 ModelMediaType model_track_media_type (ModelTrack* self) {
609 #line 32 "track.vala"
610 return MODEL_TRACK_GET_CLASS (self)->media_type (self);
615 #line 34 "track.vala"
616 void model_track_hide (ModelTrack* self) {
617 #line 34 "track.vala"
618 g_return_if_fail (MODEL_IS_TRACK (self));
619 #line 35 "track.vala"
620 g_signal_emit_by_name (self, "track-hidden", self);
625 #line 38 "track.vala"
626 gboolean model_track_contains_clipfile (ModelTrack* self, ModelClipFile* f) {
628 gboolean result = FALSE;
629 #line 38 "track.vala"
630 g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE);
631 #line 38 "track.vala"
632 g_return_val_if_fail (MODEL_IS_CLIP_FILE (f), FALSE);
636 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips));
637 #line 39 "track.vala"
641 #line 39 "track.vala"
642 if (!gee_iterator_next (_c_it)) {
643 #line 39 "track.vala"
647 #line 39 "track.vala"
648 c = (ModelClip*) gee_iterator_get (_c_it);
649 #line 40 "track.vala"
650 if (c->clipfile == f) {
653 _g_object_unref0 (c);
654 _g_object_unref0 (_c_it);
655 #line 41 "track.vala"
659 _g_object_unref0 (c);
661 _g_object_unref0 (_c_it);
664 #line 43 "track.vala"
670 #line 46 "track.vala"
671 static gboolean model_track_real_check (ModelTrack* self, ModelClip* clip) {
673 g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE);
674 g_critical ("Type `%s' does not implement abstract method `model_track_check'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
679 #line 46 "track.vala"
680 gboolean model_track_check (ModelTrack* self, ModelClip* clip) {
681 #line 46 "track.vala"
682 return MODEL_TRACK_GET_CLASS (self)->check (self, clip);
687 #line 48 "track.vala"
688 gint64 model_track_get_time_from_pos (ModelTrack* self, ModelClip* clip, gboolean after) {
691 #line 48 "track.vala"
692 g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL);
693 #line 48 "track.vala"
694 g_return_val_if_fail (MODEL_IS_CLIP (clip), 0LL);
695 #line 49 "track.vala"
698 result = model_clip_get_start (clip) + model_clip_get_duration (clip);
699 #line 50 "track.vala"
703 result = model_clip_get_start (clip);
704 #line 52 "track.vala"
711 #line 55 "track.vala"
712 static gint model_track_get_clip_from_time (ModelTrack* self, gint64 time) {
715 #line 55 "track.vala"
716 g_return_val_if_fail (MODEL_IS_TRACK (self), 0);
720 #line 56 "track.vala"
725 #line 56 "track.vala"
727 #line 56 "track.vala"
730 gboolean _tmp1_ = FALSE;
733 #line 56 "track.vala"
735 #line 56 "track.vala"
739 #line 56 "track.vala"
741 #line 56 "track.vala"
742 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) {
743 #line 56 "track.vala"
747 #line 57 "track.vala"
748 if ((_tmp3_ = time >= model_clip_get_start (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)), _g_object_unref0 (_tmp2_), _tmp3_)) {
751 #line 58 "track.vala"
752 _tmp1_ = time < model_clip_get_end (_tmp4_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i));
754 _g_object_unref0 (_tmp4_);
756 #line 57 "track.vala"
760 #line 57 "track.vala"
764 #line 59 "track.vala"
772 #line 61 "track.vala"
778 #line 64 "track.vala"
779 gint64 model_track_snap_clip (ModelTrack* self, ModelClip* c, gint64 span) {
782 #line 64 "track.vala"
783 g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL);
784 #line 64 "track.vala"
785 g_return_val_if_fail (MODEL_IS_CLIP (c), 0LL);
789 _cl_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips));
790 #line 65 "track.vala"
795 #line 65 "track.vala"
796 if (!gee_iterator_next (_cl_it)) {
797 #line 65 "track.vala"
801 #line 65 "track.vala"
802 cl = (ModelClip*) gee_iterator_get (_cl_it);
803 #line 66 "track.vala"
804 new_start = model_clip_snap (c, cl, span);
805 #line 67 "track.vala"
806 if (new_start != model_clip_get_start (c)) {
809 _g_object_unref0 (cl);
810 _g_object_unref0 (_cl_it);
811 #line 68 "track.vala"
815 _g_object_unref0 (cl);
817 _g_object_unref0 (_cl_it);
819 result = model_clip_get_start (c);
820 #line 71 "track.vala"
826 #line 74 "track.vala"
827 gboolean model_track_snap_coord (ModelTrack* self, gint64* coord, gint64 span) {
829 gboolean result = FALSE;
830 #line 74 "track.vala"
831 g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE);
835 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips));
836 #line 75 "track.vala"
840 #line 75 "track.vala"
841 if (!gee_iterator_next (_c_it)) {
842 #line 75 "track.vala"
846 #line 75 "track.vala"
847 c = (ModelClip*) gee_iterator_get (_c_it);
848 #line 76 "track.vala"
849 if (model_clip_snap_coord (c, coord, span)) {
852 _g_object_unref0 (c);
853 _g_object_unref0 (_c_it);
854 #line 77 "track.vala"
858 _g_object_unref0 (c);
860 _g_object_unref0 (_c_it);
863 #line 79 "track.vala"
869 #line 82 "track.vala"
870 gboolean model_track_clip_is_near (ModelTrack* self, ModelClip* clip, gint64 range, gint64* adjustment) {
872 gboolean result = FALSE;
873 #line 82 "track.vala"
874 g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE);
875 #line 82 "track.vala"
876 g_return_val_if_fail (MODEL_IS_CLIP (clip), FALSE);
879 GeeIterator* _potential_clip_it;
880 _potential_clip_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips));
881 #line 83 "track.vala"
884 ModelClip* potential_clip;
885 #line 83 "track.vala"
886 if (!gee_iterator_next (_potential_clip_it)) {
887 #line 83 "track.vala"
891 #line 83 "track.vala"
892 potential_clip = (ModelClip*) gee_iterator_get (_potential_clip_it);
893 #line 84 "track.vala"
894 if (potential_clip != clip) {
897 #line 85 "track.vala"
898 difference = model_clip_get_start (clip) - model_clip_get_end (potential_clip);
899 #line 86 "track.vala"
900 if (llabs (difference) < range) {
901 #line 87 "track.vala"
902 *adjustment = -difference;
905 _g_object_unref0 (potential_clip);
906 _g_object_unref0 (_potential_clip_it);
907 #line 88 "track.vala"
911 #line 91 "track.vala"
912 difference = model_clip_get_start (potential_clip) - model_clip_get_end (clip);
913 #line 92 "track.vala"
914 if (llabs (difference) < range) {
915 #line 93 "track.vala"
916 *adjustment = difference;
919 _g_object_unref0 (potential_clip);
920 _g_object_unref0 (_potential_clip_it);
921 #line 94 "track.vala"
926 _g_object_unref0 (potential_clip);
928 _g_object_unref0 (_potential_clip_it);
931 #line 98 "track.vala"
937 #line 101 "track.vala"
938 static gint model_track_get_insert_index (ModelTrack* self, gint64 time) {
942 #line 101 "track.vala"
943 g_return_val_if_fail (MODEL_IS_TRACK (self), 0);
944 #line 102 "track.vala"
949 #line 103 "track.vala"
954 #line 103 "track.vala"
956 #line 103 "track.vala"
960 #line 103 "track.vala"
962 #line 103 "track.vala"
966 #line 103 "track.vala"
968 #line 103 "track.vala"
969 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) {
970 #line 103 "track.vala"
974 c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i);
975 #line 106 "track.vala"
976 if (time >= model_clip_get_start (c)) {
977 #line 107 "track.vala"
978 if (time < (model_clip_get_start (c) + (model_clip_get_duration (c) / 2))) {
981 _g_object_unref0 (c);
982 #line 108 "track.vala"
986 #line 109 "track.vala"
987 if (time < (model_clip_get_start (c) + model_clip_get_duration (c))) {
990 _g_object_unref0 (c);
991 #line 110 "track.vala"
995 #line 112 "track.vala"
1001 _g_object_unref0 (c);
1006 #line 115 "track.vala"
1008 #line 1009 "track.c"
1012 #line 119 "track.vala"
1013 ModelGap* model_track_find_first_gap (ModelTrack* self, gint64 start) {
1014 #line 1015 "track.c"
1015 ModelGap* result = NULL;
1018 #line 119 "track.vala"
1019 g_return_val_if_fail (MODEL_IS_TRACK (self), NULL);
1020 #line 120 "track.vala"
1021 new_start = (gint64) 0;
1022 #line 121 "track.vala"
1023 new_end = G_MAXINT64;
1024 #line 1025 "track.c"
1027 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips));
1028 #line 123 "track.vala"
1030 #line 1031 "track.c"
1032 gboolean _tmp0_ = FALSE;
1033 #line 123 "track.vala"
1034 if (!gee_iterator_next (_c_it)) {
1035 #line 123 "track.vala"
1037 #line 1038 "track.c"
1039 #line 123 "track.vala"
1040 c = (ModelClip*) gee_iterator_get (_c_it);
1041 #line 124 "track.vala"
1042 if (model_clip_get_start (c) > new_start) {
1043 #line 125 "track.vala"
1044 _tmp0_ = model_clip_get_start (c) > start;
1045 #line 1046 "track.c"
1047 #line 124 "track.vala"
1049 #line 1050 "track.c"
1051 #line 124 "track.vala"
1053 #line 126 "track.vala"
1054 new_end = model_clip_get_start (c);
1055 #line 1056 "track.c"
1056 _g_object_unref0 (c);
1057 #line 127 "track.vala"
1059 #line 1060 "track.c"
1061 #line 129 "track.vala"
1062 new_start = model_clip_get_end (c);
1063 #line 1064 "track.c"
1064 _g_object_unref0 (c);
1066 _g_object_unref0 (_c_it);
1068 result = model_gap_new (new_start, new_end);
1069 #line 131 "track.vala"
1071 #line 1072 "track.c"
1075 #line 135 "track.vala"
1076 static gint model_track_get_gap_index (ModelTrack* self, gint64 time) {
1077 #line 1078 "track.c"
1080 #line 135 "track.vala"
1081 g_return_val_if_fail (MODEL_IS_TRACK (self), 0);
1082 #line 136 "track.vala"
1084 #line 137 "track.vala"
1086 #line 1087 "track.c"
1089 #line 137 "track.vala"
1090 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) {
1091 #line 137 "track.vala"
1093 #line 1094 "track.c"
1095 #line 138 "track.vala"
1096 if ((_tmp1_ = time <= model_clip_get_start (_tmp0_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)), _g_object_unref0 (_tmp0_), _tmp1_)) {
1097 #line 139 "track.vala"
1099 #line 1100 "track.c"
1101 #line 140 "track.vala"
1103 #line 1104 "track.c"
1106 #line 142 "track.vala"
1108 #line 1109 "track.c"
1112 #line 147 "track.vala"
1113 void model_track_find_containing_gap (ModelTrack* self, gint64 time, ModelGap** g) {
1114 #line 1115 "track.c"
1117 #line 147 "track.vala"
1118 g_return_if_fail (MODEL_IS_TRACK (self));
1119 #line 1120 "track.c"
1123 #line 148 "track.vala"
1124 *g = (_tmp0_ = model_gap_new ((gint64) 0, (gint64) 0), _model_gap_unref0 (*g), _tmp0_);
1125 #line 150 "track.vala"
1126 index = model_track_get_gap_index (self, time);
1127 #line 151 "track.vala"
1128 if (index < gee_collection_get_size (GEE_COLLECTION (self->clips))) {
1129 #line 1130 "track.c"
1130 gint64 _tmp1_ = 0LL;
1132 #line 152 "track.vala"
1134 #line 1135 "track.c"
1136 #line 152 "track.vala"
1137 _tmp1_ = model_clip_get_end (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), index - 1));
1138 #line 1139 "track.c"
1139 _g_object_unref0 (_tmp2_);
1141 #line 152 "track.vala"
1142 _tmp1_ = (gint64) 0;
1143 #line 1144 "track.c"
1145 #line 152 "track.vala"
1146 (*g)->start = _tmp1_;
1147 #line 153 "track.vala"
1148 (*g)->end = model_clip_get_start (_tmp3_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), index));
1149 #line 1150 "track.c"
1150 _g_object_unref0 (_tmp3_);
1155 #line 157 "track.vala"
1156 ModelClip* model_track_find_overlapping_clip (ModelTrack* self, gint64 start, gint64 length) {
1157 #line 1158 "track.c"
1158 ModelClip* result = NULL;
1159 #line 157 "track.vala"
1160 g_return_val_if_fail (MODEL_IS_TRACK (self), NULL);
1161 #line 1162 "track.c"
1164 #line 158 "track.vala"
1166 #line 1167 "track.c"
1169 #line 158 "track.vala"
1171 #line 158 "track.vala"
1173 #line 1174 "track.c"
1175 #line 158 "track.vala"
1177 #line 158 "track.vala"
1179 #line 1180 "track.c"
1181 #line 158 "track.vala"
1183 #line 158 "track.vala"
1184 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) {
1185 #line 158 "track.vala"
1187 #line 1188 "track.c"
1189 c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i);
1190 #line 160 "track.vala"
1191 if (model_clip_overlap_pos (c, start, length)) {
1192 #line 1193 "track.c"
1194 #line 161 "track.vala"
1196 #line 1197 "track.c"
1198 _g_object_unref0 (c);
1203 #line 163 "track.vala"
1205 #line 1206 "track.c"
1209 #line 166 "track.vala"
1210 ModelClip* model_track_find_nearest_clip_edge (ModelTrack* self, gint64 time, gboolean* after) {
1211 #line 1212 "track.c"
1212 ModelClip* result = NULL;
1217 #line 166 "track.vala"
1218 g_return_val_if_fail (MODEL_IS_TRACK (self), NULL);
1219 #line 167 "track.vala"
1220 limit = gee_collection_get_size (GEE_COLLECTION (self->clips)) * 2;
1221 #line 168 "track.vala"
1222 prev_time = (_tmp1_ = model_clip_get_start (_tmp0_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), 0)), _g_object_unref0 (_tmp0_), _tmp1_);
1223 #line 1224 "track.c"
1226 #line 170 "track.vala"
1228 #line 1229 "track.c"
1231 #line 170 "track.vala"
1233 #line 170 "track.vala"
1235 #line 1236 "track.c"
1238 #line 170 "track.vala"
1240 #line 170 "track.vala"
1242 #line 1243 "track.c"
1244 #line 170 "track.vala"
1246 #line 170 "track.vala"
1248 #line 170 "track.vala"
1250 #line 1251 "track.c"
1252 c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i / 2);
1253 #line 174 "track.vala"
1255 #line 175 "track.vala"
1256 t = model_clip_get_start (c);
1257 #line 1258 "track.c"
1259 #line 177 "track.vala"
1260 t = model_clip_get_end (c);
1261 #line 1262 "track.c"
1263 #line 179 "track.vala"
1265 #line 180 "track.vala"
1266 if ((t - time) < (time - prev_time)) {
1267 #line 181 "track.vala"
1268 *after = (i % 2) != 0;
1269 #line 1270 "track.c"
1270 result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i / 2);
1271 _g_object_unref0 (c);
1272 #line 182 "track.vala"
1274 #line 1275 "track.c"
1276 #line 184 "track.vala"
1277 *after = (i % 2) == 0;
1278 #line 1279 "track.c"
1279 result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), (i - 1) / 2);
1280 _g_object_unref0 (c);
1281 #line 185 "track.vala"
1283 #line 1284 "track.c"
1286 #line 188 "track.vala"
1288 #line 1289 "track.c"
1289 _g_object_unref0 (c);
1293 #line 191 "track.vala"
1295 #line 1296 "track.c"
1296 result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), gee_collection_get_size (GEE_COLLECTION (self->clips)) - 1);
1297 #line 192 "track.vala"
1299 #line 1300 "track.c"
1303 #line 195 "track.vala"
1304 static void model_track_do_clip_overwrite (ModelTrack* self, ModelClip* c) {
1305 #line 1306 "track.c"
1308 gboolean _tmp11_ = FALSE;
1310 #line 195 "track.vala"
1311 g_return_if_fail (MODEL_IS_TRACK (self));
1312 #line 195 "track.vala"
1313 g_return_if_fail (MODEL_IS_CLIP (c));
1314 #line 196 "track.vala"
1315 start_index = model_track_get_clip_from_time (self, model_clip_get_start (c));
1316 #line 197 "track.vala"
1317 end_index = model_track_get_clip_from_time (self, model_clip_get_end (c));
1318 #line 199 "track.vala"
1319 if (end_index >= 0) {
1320 #line 1321 "track.c"
1324 #line 200 "track.vala"
1325 diff = (_tmp1_ = model_clip_get_end (c) - model_clip_get_start (_tmp0_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index)), _g_object_unref0 (_tmp0_), _tmp1_);
1326 #line 201 "track.vala"
1327 if (end_index == start_index) {
1328 #line 1329 "track.c"
1331 #line 202 "track.vala"
1332 if ((_tmp3_ = c == (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index)), _g_object_unref0 (_tmp2_), _tmp3_)) {
1333 #line 203 "track.vala"
1335 #line 1336 "track.c"
1337 #line 206 "track.vala"
1339 #line 1340 "track.c"
1347 #line 207 "track.vala"
1348 cl = (_tmp9_ = model_clip_new ((_tmp4_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index))->clipfile, (_tmp5_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index))->type, (_tmp6_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index))->name, model_clip_get_end (c), model_clip_get_media_start (_tmp7_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index)) + diff, model_clip_get_duration (_tmp8_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index)) - diff, FALSE), _g_object_unref0 (_tmp8_), _g_object_unref0 (_tmp7_), _g_object_unref0 (_tmp6_), _g_object_unref0 (_tmp5_), _g_object_unref0 (_tmp4_), _tmp9_);
1349 #line 211 "track.vala"
1350 model_track_append_at_time (self, cl, model_clip_get_start (cl), FALSE);
1351 #line 1352 "track.c"
1352 _g_object_unref0 (cl);
1356 #line 214 "track.vala"
1357 model_track_trim (self, _tmp10_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index), diff, GDK_WINDOW_EDGE_WEST);
1358 #line 1359 "track.c"
1359 _g_object_unref0 (_tmp10_);
1362 #line 217 "track.vala"
1363 if (start_index >= 0) {
1364 #line 1365 "track.c"
1366 #line 217 "track.vala"
1367 _tmp11_ = (_tmp12_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), start_index)) != c;
1368 #line 1369 "track.c"
1369 _g_object_unref0 (_tmp12_);
1371 #line 217 "track.vala"
1373 #line 1374 "track.c"
1375 #line 217 "track.vala"
1377 #line 1378 "track.c"
1382 #line 218 "track.vala"
1383 delta = (_tmp14_ = model_clip_get_end (_tmp13_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), start_index)) - model_clip_get_start (c), _g_object_unref0 (_tmp13_), _tmp14_);
1384 #line 219 "track.vala"
1385 model_track_trim (self, _tmp15_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), start_index), -delta, GDK_WINDOW_EDGE_EAST);
1386 #line 1387 "track.c"
1387 _g_object_unref0 (_tmp15_);
1389 #line 222 "track.vala"
1391 #line 226 "track.vala"
1392 if (!model_undo_manager_get_in_undo (self->project->undo_manager)) {
1393 #line 227 "track.vala"
1395 #line 1396 "track.c"
1396 gboolean _tmp16_ = FALSE;
1397 gboolean _tmp17_ = FALSE;
1400 #line 227 "track.vala"
1401 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) {
1402 #line 227 "track.vala"
1404 #line 1405 "track.c"
1406 #line 228 "track.vala"
1407 if ((_tmp19_ = (_tmp18_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) != c, _g_object_unref0 (_tmp18_), _tmp19_)) {
1408 #line 1409 "track.c"
1410 #line 229 "track.vala"
1411 _tmp17_ = model_clip_get_start (_tmp20_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) >= model_clip_get_start (c);
1412 #line 1413 "track.c"
1413 _g_object_unref0 (_tmp20_);
1415 #line 228 "track.vala"
1417 #line 1418 "track.c"
1419 #line 228 "track.vala"
1421 #line 1422 "track.c"
1423 #line 230 "track.vala"
1424 _tmp16_ = model_clip_get_end (_tmp21_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) <= model_clip_get_end (c);
1425 #line 1426 "track.c"
1426 _g_object_unref0 (_tmp21_);
1428 #line 228 "track.vala"
1430 #line 1431 "track.c"
1432 #line 228 "track.vala"
1434 #line 1435 "track.c"
1436 #line 231 "track.vala"
1437 model_track_delete_clip (self, _tmp22_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i));
1438 #line 1439 "track.c"
1439 _g_object_unref0 (_tmp22_);
1441 #line 234 "track.vala"
1443 #line 1444 "track.c"
1450 #line 239 "track.vala"
1451 void model_track_move (ModelTrack* self, ModelClip* c, gint64 pos, gint64 original_time) {
1452 #line 1453 "track.c"
1453 ModelCommand* command;
1454 #line 239 "track.vala"
1455 g_return_if_fail (MODEL_IS_TRACK (self));
1456 #line 239 "track.vala"
1457 g_return_if_fail (MODEL_IS_CLIP (c));
1458 #line 240 "track.vala"
1459 command = MODEL_COMMAND (model_clip_add_command_new (self, c, original_time, pos));
1460 #line 241 "track.vala"
1461 model_project_do_command (self->project, command);
1462 #line 1463 "track.c"
1463 _model_command_unref0 (command);
1467 #line 244 "track.vala"
1468 void _model_track_move (ModelTrack* self, ModelClip* c, gint64 pos) {
1469 #line 244 "track.vala"
1470 g_return_if_fail (MODEL_IS_TRACK (self));
1471 #line 244 "track.vala"
1472 g_return_if_fail (MODEL_IS_CLIP (c));
1473 #line 245 "track.vala"
1475 #line 246 "track.vala"
1477 #line 1478 "track.c"
1479 #line 248 "track.vala"
1480 model_clip_set_start (c, pos);
1481 #line 249 "track.vala"
1482 model_track_do_clip_overwrite (self, c);
1483 #line 251 "track.vala"
1484 model_track_insert_clip_into_array (self, c, model_track_get_insert_index (self, model_clip_get_start (c)));
1485 #line 252 "track.vala"
1486 model_project_reseek (self->project);
1487 #line 1488 "track.c"
1491 #line 255 "track.vala"
1492 void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select) {
1493 #line 255 "track.vala"
1494 g_return_if_fail (MODEL_IS_TRACK (self));
1495 #line 255 "track.vala"
1496 g_return_if_fail (MODEL_IS_CLIP (c));
1497 #line 256 "track.vala"
1498 if (!model_track_check (self, c)) {
1499 #line 257 "track.vala"
1501 #line 1502 "track.c"
1503 #line 259 "track.vala"
1504 _model_track_move (self, c, pos);
1505 #line 260 "track.vala"
1506 g_signal_emit_by_name (self, "clip-added", c, select);
1507 #line 1508 "track.c"
1511 #line 263 "track.vala"
1512 static void model_track_real_on_clip_updated (ModelTrack* self, ModelClip* clip) {
1513 #line 263 "track.vala"
1514 g_return_if_fail (MODEL_IS_TRACK (self));
1515 #line 263 "track.vala"
1516 g_return_if_fail (MODEL_IS_CLIP (clip));
1517 #line 264 "track.vala"
1518 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_updated");
1519 #line 1520 "track.c"
1523 #line 263 "track.vala"
1524 void model_track_on_clip_updated (ModelTrack* self, ModelClip* clip) {
1525 #line 263 "track.vala"
1526 MODEL_TRACK_GET_CLASS (self)->on_clip_updated (self, clip);
1527 #line 1528 "track.c"
1531 #line 267 "track.vala"
1532 void model_track_do_clip_paste (ModelTrack* self, ModelClip* clip, gint64 position) {
1533 #line 267 "track.vala"
1534 g_return_if_fail (MODEL_IS_TRACK (self));
1535 #line 267 "track.vala"
1536 g_return_if_fail (MODEL_IS_CLIP (clip));
1537 #line 268 "track.vala"
1538 model_track_append_at_time (self, clip, position, TRUE);
1539 #line 1540 "track.c"
1543 #line 271 "track.vala"
1544 ModelClip* model_track_get_clip (ModelTrack* self, gint i) {
1545 #line 1546 "track.c"
1546 ModelClip* result = NULL;
1547 gboolean _tmp0_ = FALSE;
1548 #line 271 "track.vala"
1549 g_return_val_if_fail (MODEL_IS_TRACK (self), NULL);
1550 #line 272 "track.vala"
1552 #line 272 "track.vala"
1554 #line 1555 "track.c"
1556 #line 272 "track.vala"
1557 _tmp0_ = i >= gee_collection_get_size (GEE_COLLECTION (self->clips));
1558 #line 1559 "track.c"
1560 #line 272 "track.vala"
1562 #line 273 "track.vala"
1563 g_error ("track.vala:273: get_clip: Invalid index! %d (%d)", i, gee_collection_get_size (GEE_COLLECTION (self->clips)));
1564 #line 1565 "track.c"
1566 result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i);
1567 #line 274 "track.vala"
1569 #line 1570 "track.c"
1573 #line 277 "track.vala"
1574 gint model_track_get_clip_index (ModelTrack* self, ModelClip* c) {
1575 #line 1576 "track.c"
1577 #line 277 "track.vala"
1578 g_return_val_if_fail (MODEL_IS_TRACK (self), 0);
1579 #line 277 "track.vala"
1580 g_return_val_if_fail (MODEL_IS_CLIP (c), 0);
1581 #line 1582 "track.c"
1584 #line 278 "track.vala"
1586 #line 1587 "track.c"
1589 #line 278 "track.vala"
1591 #line 278 "track.vala"
1593 #line 1594 "track.c"
1596 #line 278 "track.vala"
1598 #line 278 "track.vala"
1600 #line 1601 "track.c"
1602 #line 278 "track.vala"
1604 #line 278 "track.vala"
1605 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) {
1606 #line 278 "track.vala"
1608 #line 1609 "track.c"
1610 #line 279 "track.vala"
1611 if ((_tmp2_ = (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) == c, _g_object_unref0 (_tmp1_), _tmp2_)) {
1612 #line 1613 "track.c"
1614 #line 280 "track.vala"
1616 #line 1617 "track.c"
1622 #line 283 "track.vala"
1624 #line 1625 "track.c"
1628 #line 286 "track.vala"
1629 ModelClip* model_track_get_clip_by_position (ModelTrack* self, gint64 pos) {
1630 #line 1631 "track.c"
1631 ModelClip* result = NULL;
1633 #line 286 "track.vala"
1634 g_return_val_if_fail (MODEL_IS_TRACK (self), NULL);
1635 #line 287 "track.vala"
1636 length = gee_collection_get_size (GEE_COLLECTION (self->clips));
1637 #line 1638 "track.c"
1640 #line 289 "track.vala"
1642 #line 1643 "track.c"
1645 #line 289 "track.vala"
1647 #line 289 "track.vala"
1649 #line 1650 "track.c"
1652 #line 289 "track.vala"
1654 #line 289 "track.vala"
1656 #line 1657 "track.c"
1658 #line 289 "track.vala"
1660 #line 289 "track.vala"
1662 #line 289 "track.vala"
1664 #line 1665 "track.c"
1666 #line 290 "track.vala"
1667 if ((_tmp2_ = model_clip_get_start (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) < pos, _g_object_unref0 (_tmp1_), _tmp2_)) {
1668 #line 1669 "track.c"
1673 #line 291 "track.vala"
1674 if ((_tmp5_ = pos >= model_clip_get_end (_tmp4_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)), _g_object_unref0 (_tmp4_), _tmp5_)) {
1675 #line 1676 "track.c"
1677 #line 291 "track.vala"
1678 _tmp3_ = (_tmp6_ = NULL, _g_object_unref0 (_tmp3_), _tmp6_);
1679 #line 1680 "track.c"
1682 _tmp3_ = (_tmp7_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i), _g_object_unref0 (_tmp3_), _tmp7_);
1685 #line 291 "track.vala"
1687 #line 1688 "track.c"
1693 #line 292 "track.vala"
1695 #line 1696 "track.c"
1699 #line 295 "track.vala"
1700 gint64 model_track_get_length (ModelTrack* self) {
1701 #line 1702 "track.c"
1702 gint64 result = 0LL;
1703 gint64 _tmp0_ = 0LL;
1704 #line 295 "track.vala"
1705 g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL);
1706 #line 296 "track.vala"
1707 if (gee_collection_get_size (GEE_COLLECTION (self->clips)) == 0) {
1708 #line 296 "track.vala"
1709 _tmp0_ = (gint64) 0;
1710 #line 1711 "track.c"
1714 #line 296 "track.vala"
1715 _tmp0_ = model_clip_get_start (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), gee_collection_get_size (GEE_COLLECTION (self->clips)) - 1)) + model_clip_get_duration (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), gee_collection_get_size (GEE_COLLECTION (self->clips)) - 1));
1716 #line 1717 "track.c"
1717 _g_object_unref0 (_tmp2_);
1718 _g_object_unref0 (_tmp1_);
1721 #line 296 "track.vala"
1723 #line 1724 "track.c"
1727 #line 299 "track.vala"
1728 void _model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select) {
1729 #line 299 "track.vala"
1730 g_return_if_fail (MODEL_IS_TRACK (self));
1731 #line 299 "track.vala"
1732 g_return_if_fail (MODEL_IS_CLIP (c));
1733 #line 300 "track.vala"
1734 model_track_add (self, c, time, select);
1735 #line 1736 "track.c"
1739 #line 303 "track.vala"
1740 void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select) {
1741 #line 1742 "track.c"
1742 ModelCommand* command;
1743 #line 303 "track.vala"
1744 g_return_if_fail (MODEL_IS_TRACK (self));
1745 #line 303 "track.vala"
1746 g_return_if_fail (MODEL_IS_CLIP (c));
1747 #line 304 "track.vala"
1748 command = MODEL_COMMAND (model_clip_command_new (MODEL_CLIP_COMMAND_ACTION_APPEND, self, c, time, select));
1749 #line 305 "track.vala"
1750 model_project_do_command (self->project, command);
1751 #line 1752 "track.c"
1752 _model_command_unref0 (command);
1756 #line 308 "track.vala"
1757 void model_track_delete_clip (ModelTrack* self, ModelClip* clip) {
1758 #line 1759 "track.c"
1759 ModelCommand* clip_command;
1760 #line 308 "track.vala"
1761 g_return_if_fail (MODEL_IS_TRACK (self));
1762 #line 308 "track.vala"
1763 g_return_if_fail (MODEL_IS_CLIP (clip));
1764 #line 309 "track.vala"
1765 clip_command = MODEL_COMMAND (model_clip_command_new (MODEL_CLIP_COMMAND_ACTION_DELETE, self, clip, model_clip_get_start (clip), FALSE));
1766 #line 311 "track.vala"
1767 model_project_do_command (self->project, clip_command);
1768 #line 1769 "track.c"
1769 _model_command_unref0 (clip_command);
1773 #line 314 "track.vala"
1774 void _model_track_delete_clip (ModelTrack* self, ModelClip* clip) {
1775 #line 1776 "track.c"
1778 #line 314 "track.vala"
1779 g_return_if_fail (MODEL_IS_TRACK (self));
1780 #line 314 "track.vala"
1781 g_return_if_fail (MODEL_IS_CLIP (clip));
1782 #line 315 "track.vala"
1783 index = model_track_get_clip_index (self, clip);
1784 #line 316 "track.vala"
1785 g_assert (index != (-1));
1786 #line 317 "track.vala"
1787 _tmp0_ = (ModelClip*) gee_abstract_list_remove_at (GEE_ABSTRACT_LIST (self->clips), index);
1788 #line 1789 "track.c"
1789 _g_object_unref0 (_tmp0_);
1790 #line 319 "track.vala"
1791 g_signal_emit_by_name (clip, "removed", clip);
1792 #line 320 "track.vala"
1793 g_signal_emit_by_name (self, "clip-removed", clip);
1794 #line 1795 "track.c"
1798 #line 323 "track.vala"
1799 void model_track_delete_gap (ModelTrack* self, ModelGap* g) {
1800 #line 323 "track.vala"
1801 g_return_if_fail (MODEL_IS_TRACK (self));
1802 #line 323 "track.vala"
1803 g_return_if_fail (MODEL_IS_GAP (g));
1804 #line 324 "track.vala"
1805 model_project_reseek (self->project);
1806 #line 1807 "track.c"
1810 #line 327 "track.vala"
1811 void model_track_remove_clip_from_array (ModelTrack* self, ModelClip* pos) {
1812 #line 327 "track.vala"
1813 g_return_if_fail (MODEL_IS_TRACK (self));
1814 #line 327 "track.vala"
1815 g_return_if_fail (MODEL_IS_CLIP (pos));
1816 #line 328 "track.vala"
1817 gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->clips), pos);
1818 #line 1819 "track.c"
1822 #line 263 "track.vala"
1823 static void _model_track_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self) {
1824 #line 1825 "track.c"
1825 model_track_on_clip_updated (self, clip);
1829 #line 331 "track.vala"
1830 static void model_track_insert_clip_into_array (ModelTrack* self, ModelClip* c, gint pos) {
1831 #line 331 "track.vala"
1832 g_return_if_fail (MODEL_IS_TRACK (self));
1833 #line 331 "track.vala"
1834 g_return_if_fail (MODEL_IS_CLIP (c));
1835 #line 332 "track.vala"
1836 g_signal_connect_object (c, "updated", (GCallback) _model_track_on_clip_updated_model_clip_updated, self, 0);
1837 #line 333 "track.vala"
1838 gee_abstract_list_insert (GEE_ABSTRACT_LIST (self->clips), pos, c);
1839 #line 1840 "track.c"
1843 #line 336 "track.vala"
1844 void model_track_delete_all_clips (ModelTrack* self) {
1845 #line 1846 "track.c"
1847 #line 336 "track.vala"
1848 g_return_if_fail (MODEL_IS_TRACK (self));
1849 #line 337 "track.vala"
1850 size = (guint) gee_collection_get_size (GEE_COLLECTION (self->clips));
1851 #line 1852 "track.c"
1854 #line 338 "track.vala"
1856 #line 1857 "track.c"
1859 #line 338 "track.vala"
1861 #line 338 "track.vala"
1863 #line 1864 "track.c"
1865 #line 338 "track.vala"
1867 #line 338 "track.vala"
1869 #line 1870 "track.c"
1871 #line 338 "track.vala"
1873 #line 338 "track.vala"
1875 #line 338 "track.vala"
1877 #line 1878 "track.c"
1879 #line 339 "track.vala"
1880 model_track_delete_clip (self, _tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), 0));
1881 #line 1882 "track.c"
1882 _g_object_unref0 (_tmp1_);
1886 #line 341 "track.vala"
1887 view_media_engine_go (self->project->media_engine, (gint64) 0);
1888 #line 1889 "track.c"
1892 #line 344 "track.vala"
1893 void model_track_revert_to_original (ModelTrack* self, ModelClip* clip) {
1894 #line 1895 "track.c"
1895 ModelCommand* command;
1896 #line 344 "track.vala"
1897 g_return_if_fail (MODEL_IS_TRACK (self));
1898 #line 344 "track.vala"
1899 g_return_if_fail (MODEL_IS_CLIP (clip));
1900 #line 345 "track.vala"
1901 command = MODEL_COMMAND (model_clip_revert_command_new (self, clip));
1902 #line 346 "track.vala"
1903 model_project_do_command (self->project, command);
1904 #line 1905 "track.c"
1905 _model_command_unref0 (command);
1909 #line 349 "track.vala"
1910 void _model_track_revert_to_original (ModelTrack* self, ModelClip* c) {
1911 #line 1912 "track.c"
1913 #line 349 "track.vala"
1914 g_return_if_fail (MODEL_IS_TRACK (self));
1915 #line 349 "track.vala"
1916 g_return_if_fail (MODEL_IS_CLIP (c));
1917 #line 350 "track.vala"
1918 index = model_track_get_clip_index (self, c);
1919 #line 351 "track.vala"
1920 if (index == (-1)) {
1921 #line 352 "track.vala"
1922 g_error ("track.vala:352: revert_to_original: Clip not in track array!");
1923 #line 1924 "track.c"
1925 #line 354 "track.vala"
1926 model_clip_set_media_start_duration (c, (gint64) 0, model_clip_file_get_length (c->clipfile));
1927 #line 356 "track.vala"
1928 view_media_engine_go (self->project->media_engine, model_clip_get_start (c));
1929 #line 1930 "track.c"
1933 #line 359 "track.vala"
1934 gboolean model_track_are_contiguous_clips (ModelTrack* self, gint64 position) {
1935 #line 1936 "track.c"
1936 gboolean result = FALSE;
1937 ModelClip* right_clip;
1938 ModelClip* left_clip;
1939 gboolean _tmp0_ = FALSE;
1940 gboolean _tmp1_ = FALSE;
1941 gboolean _tmp2_ = FALSE;
1942 gboolean _tmp3_ = FALSE;
1943 #line 359 "track.vala"
1944 g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE);
1945 #line 360 "track.vala"
1946 right_clip = model_track_get_clip_by_position (self, position + 1);
1947 #line 361 "track.vala"
1948 left_clip = model_track_get_clip_by_position (self, position - 1);
1949 #line 363 "track.vala"
1950 if (left_clip != NULL) {
1951 #line 363 "track.vala"
1952 _tmp3_ = right_clip != NULL;
1953 #line 1954 "track.c"
1955 #line 363 "track.vala"
1957 #line 1958 "track.c"
1959 #line 363 "track.vala"
1961 #line 364 "track.vala"
1962 _tmp2_ = left_clip != right_clip;
1963 #line 1964 "track.c"
1965 #line 363 "track.vala"
1967 #line 1968 "track.c"
1969 #line 363 "track.vala"
1971 #line 365 "track.vala"
1972 _tmp1_ = left_clip->clipfile == right_clip->clipfile;
1973 #line 1974 "track.c"
1975 #line 363 "track.vala"
1977 #line 1978 "track.c"
1979 #line 363 "track.vala"
1981 #line 366 "track.vala"
1982 _tmp0_ = model_clip_get_end (left_clip) == model_clip_get_start (right_clip);
1983 #line 1984 "track.c"
1985 #line 363 "track.vala"
1987 #line 1988 "track.c"
1990 _g_object_unref0 (right_clip);
1991 _g_object_unref0 (left_clip);
1992 #line 363 "track.vala"
1994 #line 1995 "track.c"
1998 #line 369 "track.vala"
1999 void model_track_split_at (ModelTrack* self, gint64 position) {
2000 #line 2001 "track.c"
2001 ModelCommand* command;
2002 #line 369 "track.vala"
2003 g_return_if_fail (MODEL_IS_TRACK (self));
2004 #line 370 "track.vala"
2005 command = MODEL_COMMAND (model_clip_split_command_new (MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT, self, position));
2006 #line 371 "track.vala"
2007 model_project_do_command (self->project, command);
2008 #line 2009 "track.c"
2009 _model_command_unref0 (command);
2013 #line 374 "track.vala"
2014 void _model_track_split_at (ModelTrack* self, gint64 position) {
2015 #line 2016 "track.c"
2018 #line 374 "track.vala"
2019 g_return_if_fail (MODEL_IS_TRACK (self));
2020 #line 375 "track.vala"
2021 c = model_track_get_clip_by_position (self, position);
2022 #line 376 "track.vala"
2024 #line 2025 "track.c"
2025 _g_object_unref0 (c);
2026 #line 377 "track.vala"
2028 #line 2029 "track.c"
2030 #line 379 "track.vala"
2031 cn = model_clip_new (c->clipfile, c->type, c->name, position, (position - model_clip_get_start (c)) + model_clip_get_media_start (c), (model_clip_get_start (c) + model_clip_get_duration (c)) - position, FALSE);
2032 #line 383 "track.vala"
2033 model_clip_set_duration (c, position - model_clip_get_start (c));
2034 #line 385 "track.vala"
2035 model_track_add (self, cn, position, FALSE);
2036 #line 2037 "track.c"
2037 _g_object_unref0 (c);
2038 _g_object_unref0 (cn);
2042 #line 388 "track.vala"
2043 void model_track_join (ModelTrack* self, gint64 position) {
2044 #line 2045 "track.c"
2045 ModelCommand* command;
2046 #line 388 "track.vala"
2047 g_return_if_fail (MODEL_IS_TRACK (self));
2048 #line 389 "track.vala"
2049 command = MODEL_COMMAND (model_clip_split_command_new (MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN, self, position));
2050 #line 390 "track.vala"
2051 model_project_do_command (self->project, command);
2052 #line 2053 "track.c"
2053 _model_command_unref0 (command);
2057 #line 393 "track.vala"
2058 void _model_track_join (ModelTrack* self, gint64 position) {
2059 #line 393 "track.vala"
2060 g_return_if_fail (MODEL_IS_TRACK (self));
2061 #line 394 "track.vala"
2062 g_assert (model_track_are_contiguous_clips (self, position));
2063 #line 395 "track.vala"
2064 if (model_track_are_contiguous_clips (self, position)) {
2065 #line 2066 "track.c"
2066 ModelClip* right_clip;
2067 gint right_clip_index;
2068 gint left_clip_index;
2069 ModelClip* left_clip;
2070 #line 396 "track.vala"
2071 right_clip = model_track_get_clip_by_position (self, position + 1);
2072 #line 397 "track.vala"
2073 g_assert (right_clip != NULL);
2074 #line 399 "track.vala"
2075 right_clip_index = model_track_get_clip_index (self, right_clip);
2076 #line 400 "track.vala"
2077 g_assert (right_clip_index > 0);
2078 #line 402 "track.vala"
2079 left_clip_index = right_clip_index - 1;
2080 #line 403 "track.vala"
2081 left_clip = model_track_get_clip (self, left_clip_index);
2082 #line 404 "track.vala"
2083 g_assert (left_clip != NULL);
2084 #line 405 "track.vala"
2085 model_clip_set_duration (left_clip, model_clip_get_end (right_clip) - model_clip_get_start (left_clip));
2086 #line 406 "track.vala"
2087 _model_track_delete_clip (self, right_clip);
2088 #line 2089 "track.c"
2089 _g_object_unref0 (right_clip);
2090 _g_object_unref0 (left_clip);
2095 #line 410 "track.vala"
2096 void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge) {
2097 #line 2098 "track.c"
2098 ModelCommand* command;
2099 #line 410 "track.vala"
2100 g_return_if_fail (MODEL_IS_TRACK (self));
2101 #line 410 "track.vala"
2102 g_return_if_fail (MODEL_IS_CLIP (clip));
2103 #line 411 "track.vala"
2104 command = MODEL_COMMAND (model_clip_trim_command_new (self, clip, delta, edge));
2105 #line 412 "track.vala"
2106 model_project_do_command (self->project, command);
2107 #line 2108 "track.c"
2108 _model_command_unref0 (command);
2112 #line 415 "track.vala"
2113 void _model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge) {
2114 #line 415 "track.vala"
2115 g_return_if_fail (MODEL_IS_TRACK (self));
2116 #line 415 "track.vala"
2117 g_return_if_fail (MODEL_IS_CLIP (clip));
2118 #line 416 "track.vala"
2119 model_clip_trim (clip, delta, edge);
2120 #line 417 "track.vala"
2121 model_track_do_clip_overwrite (self, clip);
2122 #line 2123 "track.c"
2126 #line 420 "track.vala"
2127 gint64 model_track_previous_edit (ModelTrack* self, gint64 pos) {
2128 #line 2129 "track.c"
2129 gint64 result = 0LL;
2130 #line 420 "track.vala"
2131 g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL);
2132 #line 2133 "track.c"
2135 #line 421 "track.vala"
2136 i = gee_collection_get_size (GEE_COLLECTION (self->clips)) - 1;
2137 #line 2138 "track.c"
2140 #line 421 "track.vala"
2142 #line 421 "track.vala"
2144 #line 2145 "track.c"
2146 #line 421 "track.vala"
2148 #line 421 "track.vala"
2150 #line 2151 "track.c"
2152 #line 421 "track.vala"
2154 #line 421 "track.vala"
2156 #line 421 "track.vala"
2158 #line 2159 "track.c"
2160 c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i);
2161 #line 423 "track.vala"
2162 if (model_clip_get_end (c) < pos) {
2163 #line 2164 "track.c"
2164 result = model_clip_get_end (c);
2165 _g_object_unref0 (c);
2166 #line 424 "track.vala"
2168 #line 2169 "track.c"
2170 #line 425 "track.vala"
2171 if (model_clip_get_start (c) < pos) {
2172 #line 2173 "track.c"
2173 result = model_clip_get_start (c);
2174 _g_object_unref0 (c);
2175 #line 426 "track.vala"
2177 #line 2178 "track.c"
2179 _g_object_unref0 (c);
2183 result = (gint64) 0;
2184 #line 428 "track.vala"
2186 #line 2187 "track.c"
2190 #line 431 "track.vala"
2191 gint64 model_track_next_edit (ModelTrack* self, gint64 pos) {
2192 #line 2193 "track.c"
2193 gint64 result = 0LL;
2194 #line 431 "track.vala"
2195 g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL);
2196 #line 2197 "track.c"
2199 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips));
2200 #line 432 "track.vala"
2202 #line 2203 "track.c"
2204 #line 432 "track.vala"
2205 if (!gee_iterator_next (_c_it)) {
2206 #line 432 "track.vala"
2208 #line 2209 "track.c"
2210 #line 432 "track.vala"
2211 c = (ModelClip*) gee_iterator_get (_c_it);
2212 #line 433 "track.vala"
2213 if (model_clip_get_start (c) > pos) {
2214 #line 2215 "track.c"
2215 result = model_clip_get_start (c);
2216 _g_object_unref0 (c);
2217 _g_object_unref0 (_c_it);
2218 #line 434 "track.vala"
2220 #line 2221 "track.c"
2222 #line 435 "track.vala"
2223 if (model_clip_get_end (c) > pos) {
2224 #line 2225 "track.c"
2225 result = model_clip_get_end (c);
2226 _g_object_unref0 (c);
2227 _g_object_unref0 (_c_it);
2228 #line 436 "track.vala"
2230 #line 2231 "track.c"
2233 _g_object_unref0 (c);
2235 _g_object_unref0 (_c_it);
2237 result = model_track_get_length (self);
2238 #line 437 "track.vala"
2240 #line 2241 "track.c"
2244 #line 440 "track.vala"
2245 static void model_track_real_write_attributes (ModelTrack* self, FILE* f) {
2246 #line 2247 "track.c"
2249 #line 440 "track.vala"
2250 g_return_if_fail (MODEL_IS_TRACK (self));
2251 #line 440 "track.vala"
2252 g_return_if_fail (f != NULL);
2253 #line 441 "track.vala"
2254 fprintf (f, "type=\"%s\" name=\"%s\" ", _tmp0_ = model_track_name (self), _tmp1_ = model_track_get_display_name (self));
2255 #line 2256 "track.c"
2261 #line 440 "track.vala"
2262 void model_track_write_attributes (ModelTrack* self, FILE* f) {
2263 #line 440 "track.vala"
2264 MODEL_TRACK_GET_CLASS (self)->write_attributes (self, f);
2265 #line 2266 "track.c"
2269 #line 444 "track.vala"
2270 void model_track_save (ModelTrack* self, FILE* f) {
2271 #line 444 "track.vala"
2272 g_return_if_fail (MODEL_IS_TRACK (self));
2273 #line 444 "track.vala"
2274 g_return_if_fail (f != NULL);
2275 #line 445 "track.vala"
2276 fprintf (f, " <track ");
2277 #line 446 "track.vala"
2278 model_track_write_attributes (self, f);
2279 #line 447 "track.vala"
2281 #line 2282 "track.c"
2284 #line 448 "track.vala"
2286 #line 2287 "track.c"
2289 #line 448 "track.vala"
2291 #line 448 "track.vala"
2293 #line 2294 "track.c"
2296 #line 448 "track.vala"
2298 #line 448 "track.vala"
2300 #line 2301 "track.c"
2302 #line 448 "track.vala"
2304 #line 448 "track.vala"
2305 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) {
2306 #line 448 "track.vala"
2308 #line 2309 "track.c"
2310 #line 449 "track.vala"
2311 model_clip_save (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i), f, model_project_get_clipfile_index (self->project, (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i))->clipfile));
2312 #line 2313 "track.c"
2313 _g_object_unref0 (_tmp2_);
2314 _g_object_unref0 (_tmp1_);
2318 #line 450 "track.vala"
2319 fputs (" </track>\n", f);
2320 #line 2321 "track.c"
2324 #line 453 "track.vala"
2325 char* model_track_get_display_name (ModelTrack* self) {
2326 #line 2327 "track.c"
2327 char* result = NULL;
2328 #line 453 "track.vala"
2329 g_return_val_if_fail (MODEL_IS_TRACK (self), NULL);
2330 #line 2331 "track.c"
2331 result = g_strdup (self->display_name);
2332 #line 454 "track.vala"
2334 #line 2335 "track.c"
2338 #line 457 "track.vala"
2339 void model_track_set_display_name (ModelTrack* self, const char* new_display_name) {
2340 #line 457 "track.vala"
2341 g_return_if_fail (MODEL_IS_TRACK (self));
2342 #line 457 "track.vala"
2343 g_return_if_fail (new_display_name != NULL);
2344 #line 458 "track.vala"
2345 if (_vala_strcmp0 (self->display_name, new_display_name) != 0) {
2346 #line 2347 "track.c"
2348 #line 459 "track.vala"
2349 self->display_name = (_tmp0_ = g_strdup (new_display_name), _g_free0 (self->display_name), _tmp0_);
2350 #line 460 "track.vala"
2351 g_signal_emit_by_name (self, "track-renamed", self);
2352 #line 2353 "track.c"
2357 #line 464 "track.vala"
2358 void model_track_set_selected (ModelTrack* self, gboolean is_selected) {
2359 #line 464 "track.vala"
2360 g_return_if_fail (MODEL_IS_TRACK (self));
2361 #line 465 "track.vala"
2362 if (self->priv->is_selected != is_selected) {
2363 #line 466 "track.vala"
2364 self->priv->is_selected = is_selected;
2365 #line 467 "track.vala"
2366 g_signal_emit_by_name (self, "track-selection-changed", self);
2367 #line 2368 "track.c"
2372 #line 471 "track.vala"
2373 gboolean model_track_get_is_selected (ModelTrack* self) {
2374 #line 2375 "track.c"
2375 gboolean result = FALSE;
2376 #line 471 "track.vala"
2377 g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE);
2378 #line 2379 "track.c"
2379 result = self->priv->is_selected;
2380 #line 472 "track.vala"
2382 #line 2383 "track.c"
2386 static void model_track_class_init (ModelTrackClass * klass) {
2387 model_track_parent_class = g_type_class_peek_parent (klass);
2388 g_type_class_add_private (klass, sizeof (ModelTrackPrivate));
2389 MODEL_TRACK_CLASS (klass)->name = model_track_real_name;
2390 MODEL_TRACK_CLASS (klass)->media_type = model_track_real_media_type;
2391 MODEL_TRACK_CLASS (klass)->check = model_track_real_check;
2392 MODEL_TRACK_CLASS (klass)->on_clip_updated = model_track_real_on_clip_updated;
2393 MODEL_TRACK_CLASS (klass)->write_attributes = model_track_real_write_attributes;
2394 G_OBJECT_CLASS (klass)->finalize = model_track_finalize;
2395 g_signal_new ("clip_added", MODEL_TYPE_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, MODEL_TYPE_CLIP, G_TYPE_BOOLEAN);
2396 g_signal_new ("clip_removed", MODEL_TYPE_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP);
2397 g_signal_new ("track_renamed", MODEL_TYPE_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK);
2398 g_signal_new ("track_selection_changed", MODEL_TYPE_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK);
2399 g_signal_new ("track_hidden", MODEL_TYPE_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK);
2400 g_signal_new ("track_removed", MODEL_TYPE_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK);
2401 g_signal_new ("error_occurred", MODEL_TYPE_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
2405 static void model_track_instance_init (ModelTrack * self) {
2406 self->priv = MODEL_TRACK_GET_PRIVATE (self);
2407 self->clips = gee_array_list_new (MODEL_TYPE_CLIP, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
2411 static void model_track_finalize (GObject* obj) {
2413 self = MODEL_TRACK (obj);
2414 _g_object_unref0 (self->clips);
2415 _g_free0 (self->display_name);
2416 G_OBJECT_CLASS (model_track_parent_class)->finalize (obj);
2420 GType model_track_get_type (void) {
2421 static volatile gsize model_track_type_id__volatile = 0;
2422 if (g_once_init_enter (&model_track_type_id__volatile)) {
2423 static const GTypeInfo g_define_type_info = { sizeof (ModelTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelTrack), 0, (GInstanceInitFunc) model_track_instance_init, NULL };
2424 GType model_track_type_id;
2425 model_track_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelTrack", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
2426 g_once_init_leave (&model_track_type_id__volatile, model_track_type_id);
2428 return model_track_type_id__volatile;
2432 #line 487 "track.vala"
2433 ModelAudioTrack* model_audio_track_construct (GType object_type, ModelProject* project, const char* display_name) {
2434 #line 2435 "track.c"
2435 ModelAudioTrack * self;
2436 #line 487 "track.vala"
2437 g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL);
2438 #line 487 "track.vala"
2439 g_return_val_if_fail (display_name != NULL, NULL);
2440 #line 488 "track.vala"
2441 self = (ModelAudioTrack*) model_track_construct (object_type, project, display_name);
2442 #line 490 "track.vala"
2443 model_audio_track_set_default_num_channels (self, MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT);
2444 #line 491 "track.vala"
2445 _model_audio_track_set_pan (self, (double) 0);
2446 #line 492 "track.vala"
2447 _model_audio_track_set_volume (self, 1.0);
2448 #line 2449 "track.c"
2453 #line 487 "track.vala"
2454 ModelAudioTrack* model_audio_track_new (ModelProject* project, const char* display_name) {
2455 #line 487 "track.vala"
2456 return model_audio_track_construct (MODEL_TYPE_AUDIO_TRACK, project, display_name);
2457 #line 2458 "track.c"
2461 #line 495 "track.vala"
2462 static char* model_audio_track_real_name (ModelTrack* base) {
2463 #line 2464 "track.c"
2464 ModelAudioTrack * self;
2465 char* result = NULL;
2466 self = MODEL_AUDIO_TRACK (base);
2467 result = g_strdup ("audio");
2468 #line 495 "track.vala"
2470 #line 2471 "track.c"
2474 #line 497 "track.vala"
2475 static ModelMediaType model_audio_track_real_media_type (ModelTrack* base) {
2476 #line 2477 "track.c"
2477 ModelAudioTrack * self;
2478 ModelMediaType result = 0;
2479 self = MODEL_AUDIO_TRACK (base);
2480 result = MODEL_MEDIA_TYPE_AUDIO;
2481 #line 498 "track.vala"
2483 #line 2484 "track.c"
2487 #line 501 "track.vala"
2488 static void model_audio_track_real_write_attributes (ModelTrack* base, FILE* f) {
2489 #line 2490 "track.c"
2490 ModelAudioTrack * self;
2492 gboolean _tmp0_ = FALSE;
2493 self = MODEL_AUDIO_TRACK (base);
2494 #line 501 "track.vala"
2495 g_return_if_fail (f != NULL);
2496 #line 502 "track.vala"
2497 MODEL_TRACK_CLASS (model_audio_track_parent_class)->write_attributes (MODEL_TRACK (self), f);
2498 #line 503 "track.vala"
2499 fprintf (f, "volume=\"%f\" panorama=\"%f\" ", model_audio_track_get_volume (self), model_audio_track_get_pan (self));
2500 #line 506 "track.vala"
2501 if (model_audio_track_get_num_channels (self, &channels)) {
2502 #line 507 "track.vala"
2503 _tmp0_ = channels != MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT;
2504 #line 2505 "track.c"
2506 #line 506 "track.vala"
2508 #line 2509 "track.c"
2510 #line 506 "track.vala"
2512 #line 508 "track.vala"
2513 fprintf (f, "channels=\"%d\" ", channels);
2514 #line 2515 "track.c"
2519 #line 511 "track.vala"
2520 void model_audio_track_set_pan (ModelAudioTrack* self, double new_value) {
2521 #line 2522 "track.c"
2523 #line 511 "track.vala"
2524 g_return_if_fail (MODEL_IS_AUDIO_TRACK (self));
2525 #line 512 "track.vala"
2526 old_value = model_audio_track_get_pan (self);
2527 #line 513 "track.vala"
2528 if (!float_within (new_value - old_value, 0.05)) {
2529 #line 2530 "track.c"
2530 ModelParameterCommand* parameter_command;
2531 #line 515 "track.vala"
2532 parameter_command = model_parameter_command_new (self, MODEL_PARAMETER_PAN, new_value, old_value);
2533 #line 516 "track.vala"
2534 model_project_do_command (MODEL_TRACK (self)->project, MODEL_COMMAND (parameter_command));
2535 #line 2536 "track.c"
2536 _model_command_unref0 (parameter_command);
2541 #line 520 "track.vala"
2542 void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value) {
2543 #line 2544 "track.c"
2545 #line 520 "track.vala"
2546 g_return_if_fail (MODEL_IS_AUDIO_TRACK (self));
2547 #line 521 "track.vala"
2548 g_assert ((new_value <= 1.0) && (new_value >= (-1.0)));
2549 #line 522 "track.vala"
2550 old_value = model_audio_track_get_pan (self);
2551 #line 523 "track.vala"
2552 if (!float_within (old_value - new_value, 0.05)) {
2553 #line 524 "track.vala"
2554 self->priv->pan = new_value;
2555 #line 525 "track.vala"
2556 g_signal_emit_by_name (self, "parameter-changed", MODEL_PARAMETER_PAN, new_value);
2557 #line 2558 "track.c"
2562 #line 529 "track.vala"
2563 double model_audio_track_get_pan (ModelAudioTrack* self) {
2564 #line 2565 "track.c"
2565 double result = 0.0;
2566 #line 529 "track.vala"
2567 g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (self), 0.0);
2568 #line 2569 "track.c"
2569 result = self->priv->pan;
2570 #line 530 "track.vala"
2572 #line 2573 "track.c"
2576 #line 533 "track.vala"
2577 void model_audio_track_set_volume (ModelAudioTrack* self, double new_volume) {
2578 #line 2579 "track.c"
2580 #line 533 "track.vala"
2581 g_return_if_fail (MODEL_IS_AUDIO_TRACK (self));
2582 #line 534 "track.vala"
2583 old_volume = model_audio_track_get_volume (self);
2584 #line 535 "track.vala"
2585 if (!float_within (old_volume - new_volume, 0.005)) {
2586 #line 2587 "track.c"
2587 ModelParameterCommand* parameter_command;
2588 #line 537 "track.vala"
2589 parameter_command = model_parameter_command_new (self, MODEL_PARAMETER_VOLUME, new_volume, old_volume);
2590 #line 538 "track.vala"
2591 model_project_do_command (MODEL_TRACK (self)->project, MODEL_COMMAND (parameter_command));
2592 #line 2593 "track.c"
2593 _model_command_unref0 (parameter_command);
2598 #line 542 "track.vala"
2599 void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume) {
2600 #line 2601 "track.c"
2602 #line 542 "track.vala"
2603 g_return_if_fail (MODEL_IS_AUDIO_TRACK (self));
2604 #line 543 "track.vala"
2605 g_assert ((new_volume >= 0.0) && (new_volume <= 10.0));
2606 #line 544 "track.vala"
2607 old_volume = model_audio_track_get_volume (self);
2608 #line 545 "track.vala"
2609 if (!float_within (old_volume - new_volume, 0.005)) {
2610 #line 546 "track.vala"
2611 self->priv->volume = new_volume;
2612 #line 547 "track.vala"
2613 g_signal_emit_by_name (self, "parameter-changed", MODEL_PARAMETER_VOLUME, new_volume);
2614 #line 2615 "track.c"
2619 #line 551 "track.vala"
2620 double model_audio_track_get_volume (ModelAudioTrack* self) {
2621 #line 2622 "track.c"
2622 double result = 0.0;
2623 #line 551 "track.vala"
2624 g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (self), 0.0);
2625 #line 2626 "track.c"
2626 result = self->priv->volume;
2627 #line 552 "track.vala"
2629 #line 2630 "track.c"
2633 #line 555 "track.vala"
2634 void model_audio_track_set_default_num_channels (ModelAudioTrack* self, gint num) {
2635 #line 555 "track.vala"
2636 g_return_if_fail (MODEL_IS_AUDIO_TRACK (self));
2637 #line 556 "track.vala"
2638 self->priv->default_num_channels = num;
2639 #line 2640 "track.c"
2643 #line 559 "track.vala"
2644 gboolean model_audio_track_get_num_channels (ModelAudioTrack* self, gint* num) {
2645 #line 2646 "track.c"
2646 gboolean result = FALSE;
2647 #line 559 "track.vala"
2648 g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (self), FALSE);
2649 #line 560 "track.vala"
2650 if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) {
2651 #line 2652 "track.c"
2653 #line 561 "track.vala"
2655 #line 2656 "track.c"
2659 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_TRACK (self)->clips));
2660 #line 563 "track.vala"
2662 #line 2663 "track.c"
2664 #line 563 "track.vala"
2665 if (!gee_iterator_next (_c_it)) {
2666 #line 563 "track.vala"
2668 #line 2669 "track.c"
2670 #line 563 "track.vala"
2671 c = (ModelClip*) gee_iterator_get (_c_it);
2672 #line 564 "track.vala"
2673 if (model_clip_file_is_online (c->clipfile)) {
2674 #line 2675 "track.c"
2676 #line 565 "track.vala"
2677 can = model_clip_file_get_num_channels (c->clipfile, num);
2678 #line 566 "track.vala"
2680 #line 2681 "track.c"
2682 _g_object_unref0 (c);
2683 _g_object_unref0 (_c_it);
2684 #line 568 "track.vala"
2686 #line 2687 "track.c"
2688 _g_object_unref0 (c);
2690 _g_object_unref0 (_c_it);
2692 #line 572 "track.vala"
2693 if (self->priv->default_num_channels == MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT) {
2694 #line 2695 "track.c"
2696 #line 573 "track.vala"
2698 #line 2699 "track.c"
2700 #line 575 "track.vala"
2701 *num = self->priv->default_num_channels;
2702 #line 2703 "track.c"
2704 #line 576 "track.vala"
2706 #line 2707 "track.c"
2710 #line 579 "track.vala"
2711 static gboolean model_audio_track_real_check (ModelTrack* base, ModelClip* clip) {
2712 #line 2713 "track.c"
2713 ModelAudioTrack * self;
2714 gboolean result = FALSE;
2716 gint number_of_channels = 0;
2717 self = MODEL_AUDIO_TRACK (base);
2718 #line 579 "track.vala"
2719 g_return_val_if_fail (MODEL_IS_CLIP (clip), FALSE);
2720 #line 580 "track.vala"
2721 if (!model_clip_file_is_online (clip->clipfile)) {
2722 #line 2723 "track.c"
2724 #line 581 "track.vala"
2726 #line 2727 "track.c"
2728 #line 584 "track.vala"
2729 if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) {
2730 #line 2731 "track.c"
2731 gint number_of_channels;
2732 #line 585 "track.vala"
2733 number_of_channels = 0;
2734 #line 586 "track.vala"
2735 if (model_clip_file_get_num_channels (clip->clipfile, &number_of_channels)) {
2736 #line 587 "track.vala"
2737 g_signal_emit_by_name (self, "channel-count-changed", number_of_channels);
2738 #line 2739 "track.c"
2741 #line 589 "track.vala"
2743 #line 2744 "track.c"
2745 #line 592 "track.vala"
2747 #line 594 "track.vala"
2748 if (model_clip_file_get_num_channels (clip->clipfile, &number_of_channels)) {
2749 #line 2750 "track.c"
2750 gint track_channel_count = 0;
2751 #line 596 "track.vala"
2752 if (model_audio_track_get_num_channels (self, &track_channel_count)) {
2753 #line 597 "track.vala"
2754 good = track_channel_count == number_of_channels;
2755 #line 2756 "track.c"
2758 #line 601 "track.vala"
2760 #line 2761 "track.c"
2764 #line 602 "track.vala"
2765 if (number_of_channels == 1) {
2766 #line 603 "track.vala"
2767 _tmp0_ = "Mono clips cannot go on stereo tracks.";
2768 #line 2769 "track.c"
2770 #line 604 "track.vala"
2771 _tmp0_ = "Stereo clips cannot go on mono tracks.";
2772 #line 2773 "track.c"
2774 #line 602 "track.vala"
2775 sub_error = g_strdup (_tmp0_);
2776 #line 605 "track.vala"
2777 g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "Cannot add clip to track", sub_error);
2778 #line 2779 "track.c"
2779 _g_free0 (sub_error);
2782 #line 607 "track.vala"
2784 #line 2785 "track.c"
2788 #line 610 "track.vala"
2789 void model_audio_track_on_level_changed (ModelAudioTrack* self, double level_left, double level_right) {
2790 #line 610 "track.vala"
2791 g_return_if_fail (MODEL_IS_AUDIO_TRACK (self));
2792 #line 611 "track.vala"
2793 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_level_changed");
2794 #line 612 "track.vala"
2795 g_signal_emit_by_name (self, "level-changed", level_left, level_right);
2796 #line 2797 "track.c"
2800 #line 615 "track.vala"
2801 static void model_audio_track_real_on_clip_updated (ModelTrack* base, ModelClip* clip) {
2802 #line 2803 "track.c"
2803 ModelAudioTrack * self;
2804 self = MODEL_AUDIO_TRACK (base);
2805 #line 615 "track.vala"
2806 g_return_if_fail (MODEL_IS_CLIP (clip));
2807 #line 616 "track.vala"
2808 if (model_clip_file_is_online (clip->clipfile)) {
2809 #line 2810 "track.c"
2810 gint number_of_channels;
2811 #line 617 "track.vala"
2812 number_of_channels = 0;
2813 #line 618 "track.vala"
2814 if (model_audio_track_get_num_channels (self, &number_of_channels)) {
2815 #line 619 "track.vala"
2816 g_signal_emit_by_name (self, "channel-count-changed", number_of_channels);
2817 #line 2818 "track.c"
2823 static void model_audio_track_class_init (ModelAudioTrackClass * klass) {
2824 model_audio_track_parent_class = g_type_class_peek_parent (klass);
2825 g_type_class_add_private (klass, sizeof (ModelAudioTrackPrivate));
2826 MODEL_TRACK_CLASS (klass)->name = model_audio_track_real_name;
2827 MODEL_TRACK_CLASS (klass)->media_type = model_audio_track_real_media_type;
2828 MODEL_TRACK_CLASS (klass)->write_attributes = model_audio_track_real_write_attributes;
2829 MODEL_TRACK_CLASS (klass)->check = model_audio_track_real_check;
2830 MODEL_TRACK_CLASS (klass)->on_clip_updated = model_audio_track_real_on_clip_updated;
2831 G_OBJECT_CLASS (klass)->finalize = model_audio_track_finalize;
2832 g_signal_new ("parameter_changed", MODEL_TYPE_AUDIO_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__ENUM_DOUBLE, G_TYPE_NONE, 2, MODEL_TYPE_PARAMETER, G_TYPE_DOUBLE);
2833 g_signal_new ("level_changed", MODEL_TYPE_AUDIO_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__DOUBLE_DOUBLE, G_TYPE_NONE, 2, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
2834 g_signal_new ("channel_count_changed", MODEL_TYPE_AUDIO_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
2838 static void model_audio_track_instance_init (ModelAudioTrack * self) {
2839 self->priv = MODEL_AUDIO_TRACK_GET_PRIVATE (self);
2843 static void model_audio_track_finalize (GObject* obj) {
2844 ModelAudioTrack * self;
2845 self = MODEL_AUDIO_TRACK (obj);
2846 G_OBJECT_CLASS (model_audio_track_parent_class)->finalize (obj);
2850 GType model_audio_track_get_type (void) {
2851 static volatile gsize model_audio_track_type_id__volatile = 0;
2852 if (g_once_init_enter (&model_audio_track_type_id__volatile)) {
2853 static const GTypeInfo g_define_type_info = { sizeof (ModelAudioTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_audio_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelAudioTrack), 0, (GInstanceInitFunc) model_audio_track_instance_init, NULL };
2854 GType model_audio_track_type_id;
2855 model_audio_track_type_id = g_type_register_static (MODEL_TYPE_TRACK, "ModelAudioTrack", &g_define_type_info, 0);
2856 g_once_init_leave (&model_audio_track_type_id__volatile, model_audio_track_type_id);
2858 return model_audio_track_type_id__volatile;
2862 static int _vala_strcmp0 (const char * str1, const char * str2) {
2864 return -(str1 != str2);
2867 return str1 != str2;
2869 return strcmp (str1, str2);
2874 static void g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
2875 typedef void (*GMarshalFunc_VOID__OBJECT_BOOLEAN) (gpointer data1, gpointer arg_1, gboolean arg_2, gpointer data2);
2876 register GMarshalFunc_VOID__OBJECT_BOOLEAN callback;
2877 register GCClosure * cc;
2878 register gpointer data1, data2;
2879 cc = (GCClosure *) closure;
2880 g_return_if_fail (n_param_values == 3);
2881 if (G_CCLOSURE_SWAP_DATA (closure)) {
2882 data1 = closure->data;
2883 data2 = param_values->data[0].v_pointer;
2885 data1 = param_values->data[0].v_pointer;
2886 data2 = closure->data;
2888 callback = (GMarshalFunc_VOID__OBJECT_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
2889 callback (data1, g_value_get_object (param_values + 1), g_value_get_boolean (param_values + 2), data2);
2893 static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
2894 typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2);
2895 register GMarshalFunc_VOID__STRING_STRING callback;
2896 register GCClosure * cc;
2897 register gpointer data1, data2;
2898 cc = (GCClosure *) closure;
2899 g_return_if_fail (n_param_values == 3);
2900 if (G_CCLOSURE_SWAP_DATA (closure)) {
2901 data1 = closure->data;
2902 data2 = param_values->data[0].v_pointer;
2904 data1 = param_values->data[0].v_pointer;
2905 data2 = closure->data;
2907 callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
2908 callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2);
2912 static void g_cclosure_user_marshal_VOID__ENUM_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
2913 typedef void (*GMarshalFunc_VOID__ENUM_DOUBLE) (gpointer data1, gint arg_1, double arg_2, gpointer data2);
2914 register GMarshalFunc_VOID__ENUM_DOUBLE callback;
2915 register GCClosure * cc;
2916 register gpointer data1, data2;
2917 cc = (GCClosure *) closure;
2918 g_return_if_fail (n_param_values == 3);
2919 if (G_CCLOSURE_SWAP_DATA (closure)) {
2920 data1 = closure->data;
2921 data2 = param_values->data[0].v_pointer;
2923 data1 = param_values->data[0].v_pointer;
2924 data2 = closure->data;
2926 callback = (GMarshalFunc_VOID__ENUM_DOUBLE) (marshal_data ? marshal_data : cc->callback);
2927 callback (data1, g_value_get_enum (param_values + 1), g_value_get_double (param_values + 2), data2);
2931 static void g_cclosure_user_marshal_VOID__DOUBLE_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
2932 typedef void (*GMarshalFunc_VOID__DOUBLE_DOUBLE) (gpointer data1, double arg_1, double arg_2, gpointer data2);
2933 register GMarshalFunc_VOID__DOUBLE_DOUBLE callback;
2934 register GCClosure * cc;
2935 register gpointer data1, data2;
2936 cc = (GCClosure *) closure;
2937 g_return_if_fail (n_param_values == 3);
2938 if (G_CCLOSURE_SWAP_DATA (closure)) {
2939 data1 = closure->data;
2940 data2 = param_values->data[0].v_pointer;
2942 data1 = param_values->data[0].v_pointer;
2943 data2 = closure->data;
2945 callback = (GMarshalFunc_VOID__DOUBLE_DOUBLE) (marshal_data ? marshal_data : cc->callback);
2946 callback (data1, g_value_get_double (param_values + 1), g_value_get_double (param_values + 2), data2);