From a712cd772f4f3db8bed7037bb95c4de94767b230 Mon Sep 17 00:00:00 2001 From: Dru Moore Date: Thu, 18 Nov 2010 00:01:44 +0000 Subject: [PATCH] Initial commit new file: AUTHORS new file: COPYING new file: INSTALL new file: MAINTAINERS new file: Makefile new file: NEWS new file: README new file: THANKS new file: configure new file: configure.mk new file: libfill.so new file: marina.mk new file: minver new file: misc/fillmore.desktop new file: misc/fillmore.xml new file: misc/lombard.desktop new file: misc/lombard.xml new file: resources/dot.png new file: resources/fillmore.glade new file: resources/fillmore.rc new file: resources/fillmore.svg new file: resources/fillmore_icon.png new file: resources/lombard.svg new file: resources/lombard_icon.png new file: resources/max_speaker.png new file: resources/min_speaker.png new file: src/fillmore/FillmoreClassFactory.vala new file: src/fillmore/Makefile new file: src/fillmore/ProjectProperties.vala new file: src/fillmore/VolumeAndPanPopUp.vala new file: src/fillmore/audio_project.vala new file: src/fillmore/fillmore.vala new file: src/fillmore/fillmore/.stamp new file: src/fillmore/fillmore/FillmoreClassFactory.c new file: src/fillmore/fillmore/FillmoreClassFactory.o new file: src/fillmore/fillmore/ProjectProperties.c new file: src/fillmore/fillmore/ProjectProperties.o new file: src/fillmore/fillmore/VolumeAndPanPopUp.c new file: src/fillmore/fillmore/VolumeAndPanPopUp.o new file: src/fillmore/fillmore/audio_project.c new file: src/fillmore/fillmore/audio_project.o new file: src/fillmore/fillmore/fillmore.c new file: src/fillmore/fillmore/fillmore.o new file: src/fillmore/fillmore/header_area.c new file: src/fillmore/fillmore/header_area.o new file: src/fillmore/fillmore/trackinformation.c new file: src/fillmore/fillmore/trackinformation.o new file: src/fillmore/header_area.vala new file: src/fillmore/sources.mk new file: src/fillmore/trackinformation.vala new file: src/lombard/Makefile new file: src/lombard/lombard.vala new file: src/lombard/lombard/.stamp new file: src/lombard/lombard/lombard.c new file: src/lombard/lombard/lombard.o new file: src/lombard/lombard/video_project.c new file: src/lombard/lombard/video_project.o new file: src/lombard/sources.mk new file: src/lombard/video_project.vala new file: src/marina/AppDirs.vala new file: src/marina/AudioMeter.vala new file: src/marina/ClassFactory.vala new file: src/marina/ClipLibraryView.vala new file: src/marina/DialogUtils.vala new file: src/marina/Logging.vala new file: src/marina/Makefile new file: src/marina/MediaEngine.vala new file: src/marina/MultiFileProgress.vala new file: src/marina/ProjectLoader.vala new file: src/marina/Ruler.vala new file: src/marina/StatusBar.vala new file: src/marina/TimeSystem.vala new file: src/marina/TrackView.vala new file: src/marina/TransportDelegate.vala new file: src/marina/UndoManager.vala new file: src/marina/clip.vala new file: src/marina/command.vala new file: src/marina/import.vala new file: src/marina/libmarina.a new file: src/marina/marina.h new file: src/marina/marina/.stamp new file: src/marina/marina/AppDirs.c new file: src/marina/marina/AppDirs.o new file: src/marina/marina/AudioMeter.c new file: src/marina/marina/AudioMeter.o new file: src/marina/marina/ClassFactory.c new file: src/marina/marina/ClassFactory.o new file: src/marina/marina/ClipLibraryView.c new file: src/marina/marina/ClipLibraryView.o new file: src/marina/marina/DialogUtils.c new file: src/marina/marina/DialogUtils.o new file: src/marina/marina/Logging.c new file: src/marina/marina/Logging.o new file: src/marina/marina/MediaEngine.c new file: src/marina/marina/MediaEngine.o new file: src/marina/marina/MultiFileProgress.c new file: src/marina/marina/MultiFileProgress.o new file: src/marina/marina/ProjectLoader.c new file: src/marina/marina/ProjectLoader.o new file: src/marina/marina/Ruler.c new file: src/marina/marina/Ruler.o new file: src/marina/marina/StatusBar.c new file: src/marina/marina/StatusBar.o new file: src/marina/marina/TimeSystem.c new file: src/marina/marina/TimeSystem.o new file: src/marina/marina/TrackView.c new file: src/marina/marina/TrackView.o new file: src/marina/marina/TransportDelegate.c new file: src/marina/marina/TransportDelegate.o new file: src/marina/marina/UndoManager.c new file: src/marina/marina/UndoManager.o new file: src/marina/marina/clip.c new file: src/marina/marina/clip.o new file: src/marina/marina/command.c new file: src/marina/marina/command.o new file: src/marina/marina/import.c new file: src/marina/marina/import.o new file: src/marina/marina/marina.vapi new file: src/marina/marina/project.c new file: src/marina/marina/project.o new file: src/marina/marina/singledecodebin.c new file: src/marina/marina/singledecodebin.o new file: src/marina/marina/thumbnailsink.c new file: src/marina/marina/thumbnailsink.o new file: src/marina/marina/timeline.c new file: src/marina/marina/timeline.o new file: src/marina/marina/track.c new file: src/marina/marina/track.o new file: src/marina/marina/ui_clip.c new file: src/marina/marina/ui_clip.o new file: src/marina/marina/util.c new file: src/marina/marina/util.o new file: src/marina/marina/video_track.c new file: src/marina/marina/video_track.o new file: src/marina/project.vala new file: src/marina/singledecodebin.vala new file: src/marina/sources.mk new file: src/marina/thumbnailsink.vala new file: src/marina/timeline.vala new file: src/marina/track.vala new file: src/marina/ui_clip.vala new file: src/marina/util.vala new file: src/marina/video_track.vala new file: src/test/Makefile new file: src/test/debug/.stamp new file: src/test/debug/Logging.c new file: src/test/debug/Logging.o new file: src/test/debug/ProjectLoader.c new file: src/test/debug/ProjectLoader.o new file: src/test/debug/ProjectLoading.c new file: src/test/debug/ProjectLoading.o new file: src/test/debug/test.c new file: src/test/debug/test.o new file: src/test/debug/util.c new file: src/test/debug/util.o new file: src/test/marina/ProjectLoading.vala new file: src/test/sources.mk new file: src/test/test.vala new file: www/index.html --- AUTHORS | 5 + COPYING | 465 +++ INSTALL | 50 + MAINTAINERS | 3 + Makefile | 116 + NEWS | 19 + README | 84 + THANKS | 4 + configure | 84 + configure.mk | 1 + libfill.so | Bin 0 -> 2075270 bytes marina.mk | 176 + minver | 86 + misc/fillmore.desktop | 13 + misc/fillmore.xml | 15 + misc/lombard.desktop | 14 + misc/lombard.xml | 16 + resources/dot.png | Bin 0 -> 746 bytes resources/fillmore.glade | 310 ++ resources/fillmore.rc | 22 + resources/fillmore.svg | 162 + resources/fillmore_icon.png | Bin 0 -> 4395 bytes resources/lombard.svg | 516 +++ resources/lombard_icon.png | Bin 0 -> 6620 bytes resources/max_speaker.png | Bin 0 -> 466 bytes resources/min_speaker.png | Bin 0 -> 209 bytes src/fillmore/FillmoreClassFactory.vala | 56 + src/fillmore/Makefile | 21 + src/fillmore/ProjectProperties.vala | 125 + src/fillmore/VolumeAndPanPopUp.vala | 68 + src/fillmore/audio_project.vala | 153 + src/fillmore/fillmore.vala | 1407 +++++++ src/fillmore/fillmore/FillmoreClassFactory.c | 401 ++ src/fillmore/fillmore/FillmoreClassFactory.o | Bin 0 -> 74624 bytes src/fillmore/fillmore/ProjectProperties.c | 498 +++ src/fillmore/fillmore/ProjectProperties.o | Bin 0 -> 77628 bytes src/fillmore/fillmore/VolumeAndPanPopUp.c | 252 ++ src/fillmore/fillmore/VolumeAndPanPopUp.o | Bin 0 -> 59892 bytes src/fillmore/fillmore/audio_project.c | 786 ++++ src/fillmore/fillmore/audio_project.o | Bin 0 -> 59624 bytes src/fillmore/fillmore/fillmore.c | 4473 ++++++++++++++++++++++ src/fillmore/fillmore/fillmore.o | Bin 0 -> 275252 bytes src/fillmore/fillmore/header_area.c | 1227 ++++++ src/fillmore/fillmore/header_area.o | Bin 0 -> 123728 bytes src/fillmore/fillmore/trackinformation.c | 243 ++ src/fillmore/fillmore/trackinformation.o | Bin 0 -> 58560 bytes src/fillmore/header_area.vala | 268 ++ src/fillmore/sources.mk | 9 + src/fillmore/trackinformation.vala | 48 + src/lombard/Makefile | 18 + src/lombard/lombard.vala | 909 +++++ src/lombard/lombard/lombard.c | 2888 +++++++++++++++ src/lombard/lombard/lombard.o | Bin 0 -> 200472 bytes src/lombard/lombard/video_project.c | 292 ++ src/lombard/lombard/video_project.o | Bin 0 -> 37176 bytes src/lombard/sources.mk | 4 + src/lombard/video_project.vala | 71 + src/marina/AppDirs.vala | 44 + src/marina/AudioMeter.vala | 116 + src/marina/ClassFactory.vala | 37 + src/marina/ClipLibraryView.vala | 487 +++ src/marina/DialogUtils.vala | 350 ++ src/marina/Logging.vala | 57 + src/marina/Makefile | 29 + src/marina/MediaEngine.vala | 1190 ++++++ src/marina/MultiFileProgress.vala | 112 + src/marina/ProjectLoader.vala | 353 ++ src/marina/Ruler.vala | 80 + src/marina/StatusBar.vala | 41 + src/marina/TimeSystem.vala | 406 ++ src/marina/TrackView.vala | 199 + src/marina/TransportDelegate.vala | 11 + src/marina/UndoManager.vala | 103 + src/marina/clip.vala | 607 +++ src/marina/command.vala | 409 ++ src/marina/import.vala | 469 +++ src/marina/libmarina.a | Bin 0 -> 2426248 bytes src/marina/marina.h | 2142 +++++++++++ src/marina/marina/AppDirs.c | 363 ++ src/marina/marina/AppDirs.o | Bin 0 -> 25236 bytes src/marina/marina/AudioMeter.c | 453 +++ src/marina/marina/AudioMeter.o | Bin 0 -> 55656 bytes src/marina/marina/ClassFactory.c | 484 +++ src/marina/marina/ClassFactory.o | Bin 0 -> 40284 bytes src/marina/marina/ClipLibraryView.c | 1903 ++++++++++ src/marina/marina/ClipLibraryView.o | Bin 0 -> 126264 bytes src/marina/marina/DialogUtils.c | 1207 ++++++ src/marina/marina/DialogUtils.o | Bin 0 -> 70464 bytes src/marina/marina/Logging.c | 127 + src/marina/marina/Logging.o | Bin 0 -> 12044 bytes src/marina/marina/MediaEngine.c | 5111 +++++++++++++++++++++++++ src/marina/marina/MediaEngine.o | Bin 0 -> 290856 bytes src/marina/marina/MultiFileProgress.c | 441 +++ src/marina/marina/MultiFileProgress.o | Bin 0 -> 69468 bytes src/marina/marina/ProjectLoader.c | 2126 +++++++++++ src/marina/marina/ProjectLoader.o | Bin 0 -> 127256 bytes src/marina/marina/Ruler.c | 306 ++ src/marina/marina/Ruler.o | Bin 0 -> 49404 bytes src/marina/marina/StatusBar.c | 401 ++ src/marina/marina/StatusBar.o | Bin 0 -> 50708 bytes src/marina/marina/TimeSystem.c | 1709 +++++++++ src/marina/marina/TimeSystem.o | Bin 0 -> 79668 bytes src/marina/marina/TrackView.c | 860 +++++ src/marina/marina/TrackView.o | Bin 0 -> 74412 bytes src/marina/marina/TransportDelegate.c | 84 + src/marina/marina/TransportDelegate.o | Bin 0 -> 9180 bytes src/marina/marina/UndoManager.c | 586 +++ src/marina/marina/UndoManager.o | Bin 0 -> 40084 bytes src/marina/marina/clip.c | 2749 ++++++++++++++ src/marina/marina/clip.o | Bin 0 -> 168520 bytes src/marina/marina/command.c | 2462 ++++++++++++ src/marina/marina/command.o | Bin 0 -> 128556 bytes src/marina/marina/import.c | 1919 ++++++++++ src/marina/marina/import.o | Bin 0 -> 108596 bytes src/marina/marina/marina.vapi | 1033 ++++++ src/marina/marina/project.c | 5147 ++++++++++++++++++++++++++ src/marina/marina/project.o | Bin 0 -> 231068 bytes src/marina/marina/singledecodebin.c | 1345 +++++++ src/marina/marina/singledecodebin.o | Bin 0 -> 97624 bytes src/marina/marina/thumbnailsink.c | 269 ++ src/marina/marina/thumbnailsink.o | Bin 0 -> 48196 bytes src/marina/marina/timeline.c | 2906 +++++++++++++++ src/marina/marina/timeline.o | Bin 0 -> 171208 bytes src/marina/marina/track.c | 2950 +++++++++++++++ src/marina/marina/track.o | Bin 0 -> 138692 bytes src/marina/marina/ui_clip.c | 1334 +++++++ src/marina/marina/ui_clip.o | Bin 0 -> 92448 bytes src/marina/marina/util.c | 1673 +++++++++ src/marina/marina/util.o | Bin 0 -> 69284 bytes src/marina/marina/video_track.c | 571 +++ src/marina/marina/video_track.o | Bin 0 -> 28496 bytes src/marina/project.vala | 1143 ++++++ src/marina/singledecodebin.vala | 370 ++ src/marina/sources.mk | 28 + src/marina/thumbnailsink.vala | 68 + src/marina/timeline.vala | 617 +++ src/marina/track.vala | 624 ++++ src/marina/ui_clip.vala | 372 ++ src/marina/util.vala | 563 +++ src/marina/video_track.vala | 114 + src/test/Makefile | 19 + src/test/debug/Logging.c | 127 + src/test/debug/Logging.o | Bin 0 -> 12036 bytes src/test/debug/ProjectLoader.c | 2126 +++++++++++ src/test/debug/ProjectLoader.o | Bin 0 -> 127244 bytes src/test/debug/ProjectLoading.c | 989 +++++ src/test/debug/ProjectLoading.o | Bin 0 -> 60980 bytes src/test/debug/test.c | 52 + src/test/debug/test.o | Bin 0 -> 3568 bytes src/test/debug/util.c | 1673 +++++++++ src/test/debug/util.o | Bin 0 -> 69276 bytes src/test/marina/ProjectLoading.vala | 162 + src/test/sources.mk | 4 + src/test/test.vala | 12 + www/index.html | 11 + 155 files changed, 73213 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 INSTALL create mode 100644 MAINTAINERS create mode 100644 Makefile create mode 100644 NEWS create mode 100644 README create mode 100644 THANKS create mode 100755 configure create mode 100644 configure.mk create mode 100755 libfill.so create mode 100644 marina.mk create mode 100755 minver create mode 100644 misc/fillmore.desktop create mode 100644 misc/fillmore.xml create mode 100644 misc/lombard.desktop create mode 100644 misc/lombard.xml create mode 100644 resources/dot.png create mode 100644 resources/fillmore.glade create mode 100644 resources/fillmore.rc create mode 100644 resources/fillmore.svg create mode 100644 resources/fillmore_icon.png create mode 100644 resources/lombard.svg create mode 100644 resources/lombard_icon.png create mode 100644 resources/max_speaker.png create mode 100644 resources/min_speaker.png create mode 100644 src/fillmore/FillmoreClassFactory.vala create mode 100644 src/fillmore/Makefile create mode 100644 src/fillmore/ProjectProperties.vala create mode 100644 src/fillmore/VolumeAndPanPopUp.vala create mode 100644 src/fillmore/audio_project.vala create mode 100644 src/fillmore/fillmore.vala create mode 100644 src/fillmore/fillmore/.stamp create mode 100644 src/fillmore/fillmore/FillmoreClassFactory.c create mode 100644 src/fillmore/fillmore/FillmoreClassFactory.o create mode 100644 src/fillmore/fillmore/ProjectProperties.c create mode 100644 src/fillmore/fillmore/ProjectProperties.o create mode 100644 src/fillmore/fillmore/VolumeAndPanPopUp.c create mode 100644 src/fillmore/fillmore/VolumeAndPanPopUp.o create mode 100644 src/fillmore/fillmore/audio_project.c create mode 100644 src/fillmore/fillmore/audio_project.o create mode 100644 src/fillmore/fillmore/fillmore.c create mode 100644 src/fillmore/fillmore/fillmore.o create mode 100644 src/fillmore/fillmore/header_area.c create mode 100644 src/fillmore/fillmore/header_area.o create mode 100644 src/fillmore/fillmore/trackinformation.c create mode 100644 src/fillmore/fillmore/trackinformation.o create mode 100644 src/fillmore/header_area.vala create mode 100644 src/fillmore/sources.mk create mode 100644 src/fillmore/trackinformation.vala create mode 100644 src/lombard/Makefile create mode 100644 src/lombard/lombard.vala create mode 100644 src/lombard/lombard/.stamp create mode 100644 src/lombard/lombard/lombard.c create mode 100644 src/lombard/lombard/lombard.o create mode 100644 src/lombard/lombard/video_project.c create mode 100644 src/lombard/lombard/video_project.o create mode 100644 src/lombard/sources.mk create mode 100644 src/lombard/video_project.vala create mode 100644 src/marina/AppDirs.vala create mode 100644 src/marina/AudioMeter.vala create mode 100644 src/marina/ClassFactory.vala create mode 100644 src/marina/ClipLibraryView.vala create mode 100644 src/marina/DialogUtils.vala create mode 100644 src/marina/Logging.vala create mode 100644 src/marina/Makefile create mode 100644 src/marina/MediaEngine.vala create mode 100644 src/marina/MultiFileProgress.vala create mode 100644 src/marina/ProjectLoader.vala create mode 100644 src/marina/Ruler.vala create mode 100644 src/marina/StatusBar.vala create mode 100644 src/marina/TimeSystem.vala create mode 100644 src/marina/TrackView.vala create mode 100644 src/marina/TransportDelegate.vala create mode 100644 src/marina/UndoManager.vala create mode 100644 src/marina/clip.vala create mode 100644 src/marina/command.vala create mode 100644 src/marina/import.vala create mode 100644 src/marina/libmarina.a create mode 100644 src/marina/marina.h create mode 100644 src/marina/marina/.stamp create mode 100644 src/marina/marina/AppDirs.c create mode 100644 src/marina/marina/AppDirs.o create mode 100644 src/marina/marina/AudioMeter.c create mode 100644 src/marina/marina/AudioMeter.o create mode 100644 src/marina/marina/ClassFactory.c create mode 100644 src/marina/marina/ClassFactory.o create mode 100644 src/marina/marina/ClipLibraryView.c create mode 100644 src/marina/marina/ClipLibraryView.o create mode 100644 src/marina/marina/DialogUtils.c create mode 100644 src/marina/marina/DialogUtils.o create mode 100644 src/marina/marina/Logging.c create mode 100644 src/marina/marina/Logging.o create mode 100644 src/marina/marina/MediaEngine.c create mode 100644 src/marina/marina/MediaEngine.o create mode 100644 src/marina/marina/MultiFileProgress.c create mode 100644 src/marina/marina/MultiFileProgress.o create mode 100644 src/marina/marina/ProjectLoader.c create mode 100644 src/marina/marina/ProjectLoader.o create mode 100644 src/marina/marina/Ruler.c create mode 100644 src/marina/marina/Ruler.o create mode 100644 src/marina/marina/StatusBar.c create mode 100644 src/marina/marina/StatusBar.o create mode 100644 src/marina/marina/TimeSystem.c create mode 100644 src/marina/marina/TimeSystem.o create mode 100644 src/marina/marina/TrackView.c create mode 100644 src/marina/marina/TrackView.o create mode 100644 src/marina/marina/TransportDelegate.c create mode 100644 src/marina/marina/TransportDelegate.o create mode 100644 src/marina/marina/UndoManager.c create mode 100644 src/marina/marina/UndoManager.o create mode 100644 src/marina/marina/clip.c create mode 100644 src/marina/marina/clip.o create mode 100644 src/marina/marina/command.c create mode 100644 src/marina/marina/command.o create mode 100644 src/marina/marina/import.c create mode 100644 src/marina/marina/import.o create mode 100644 src/marina/marina/marina.vapi create mode 100644 src/marina/marina/project.c create mode 100644 src/marina/marina/project.o create mode 100644 src/marina/marina/singledecodebin.c create mode 100644 src/marina/marina/singledecodebin.o create mode 100644 src/marina/marina/thumbnailsink.c create mode 100644 src/marina/marina/thumbnailsink.o create mode 100644 src/marina/marina/timeline.c create mode 100644 src/marina/marina/timeline.o create mode 100644 src/marina/marina/track.c create mode 100644 src/marina/marina/track.o create mode 100644 src/marina/marina/ui_clip.c create mode 100644 src/marina/marina/ui_clip.o create mode 100644 src/marina/marina/util.c create mode 100644 src/marina/marina/util.o create mode 100644 src/marina/marina/video_track.c create mode 100644 src/marina/marina/video_track.o create mode 100644 src/marina/project.vala create mode 100644 src/marina/singledecodebin.vala create mode 100644 src/marina/sources.mk create mode 100644 src/marina/thumbnailsink.vala create mode 100644 src/marina/timeline.vala create mode 100644 src/marina/track.vala create mode 100644 src/marina/ui_clip.vala create mode 100644 src/marina/util.vala create mode 100644 src/marina/video_track.vala create mode 100644 src/test/Makefile create mode 100644 src/test/debug/.stamp create mode 100644 src/test/debug/Logging.c create mode 100644 src/test/debug/Logging.o create mode 100644 src/test/debug/ProjectLoader.c create mode 100644 src/test/debug/ProjectLoader.o create mode 100644 src/test/debug/ProjectLoading.c create mode 100644 src/test/debug/ProjectLoading.o create mode 100644 src/test/debug/test.c create mode 100644 src/test/debug/test.o create mode 100644 src/test/debug/util.c create mode 100644 src/test/debug/util.o create mode 100644 src/test/marina/ProjectLoading.vala create mode 100644 src/test/sources.mk create mode 100644 src/test/test.vala create mode 100644 www/index.html diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..82070f4 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,5 @@ +Robert Powell +Adam Dingle +Andrew O'Mahony +Dru Moore + diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..3b575d1 --- /dev/null +++ b/COPYING @@ -0,0 +1,465 @@ +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..c6caad9 --- /dev/null +++ b/INSTALL @@ -0,0 +1,50 @@ + + Fillmore Installation + --------------------- + + To build and install Fillmore, type the following commands: + + $ ./configure + $ make fillmore + $ make install-fillmore + + * By default, Fillmore will install under /usr/local. The configure script + can customize the prefix directory. Run ./configure --help for + instructions and other installation options. + + * You may need to execute "make install" as root (i.e. sudo make install) + if installing to system directories. + + * If you wish to try Fillmore before installing it, you may execute it + directly from its build directory. Note that certain desktop integration + (such as being listed in an application menu) requires full installation. + + Once installed, Fillmore will be available on your desktop Applications + menu under Sound & Video. + + + Lombard Installation + -------------------- + + To build and install Lombard, type the following commands: + + $ ./configure + $ make lombard + $ make install-lombard + + * By default, Lombard will install under /usr/local. The configure script + can customize the prefix directory. Run ./configure --help for + instructions and other installation options. + + * You may need to execute "make install" as root (i.e. sudo make install) + if installing to system directories. + + * If you wish to try Lombard before installing it, you may execute it + directly from its build directory. Note that certain desktop integration + (such as being listed in an application menu) requires full installation. + + Once installed, Lombard will be available on your desktop Applications + menu under Sound & Video. + + Copyright 2009-2010 Yorba Foundation + diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000..d86078f --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1,3 @@ +Robert Powell +email: rob@yorba.org + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ff366b5 --- /dev/null +++ b/Makefile @@ -0,0 +1,116 @@ +default: all + +BUILD_ROOT = 1 + +VERSION = 0.1.0 +FILLMORE = fillmore +LOMBARD = lombard +MEDIA_TEST = media_test + +SRC_PREFIX=MARINA_ +-include src/marina/sources.mk +DIST_SRC_FILES = $(foreach src,$(MARINA_SRC_FILES), src/marina/$(src)) + +SRC_PREFIX=LOMBARD_ +-include src/lombard/sources.mk +DIST_SRC_FILES += $(foreach src, $(LOMBARD_SRC_FILES), src/lombard/$(src)) + +SRC_PREFIX=FILLMORE_ +-include src/fillmore/sources.mk +DIST_SRC_FILES += $(foreach src, $(FILLMORE_SRC_FILES), src/fillmore/$(src)) + +SRC_PREFIX=TEST_ +-include src/test/sources.mk +DIST_SRC_FILES += $(foreach src, $(TEST_SRC_FILES), src/test/$(src)) + +TEXT_FILES = \ + AUTHORS \ + COPYING \ + INSTALL \ + MAINTAINERS \ + NEWS \ + README \ + THANKS + +DIST_MAKEFILES = \ + Makefile \ + marina.mk \ + src/marina/Makefile \ + src/marina/sources.mk \ + src/fillmore/Makefile \ + src/fillmore/sources.mk \ + src/lombard/Makefile \ + src/lombard/sources.mk \ + src/test/Makefile \ + src/test/sources.mk + +DIST_NAME = media +DIST_FILES = $(DIST_MAKEFILES) configure minver $(DIST_SRC_FILES) $(EXPANDED_VAPI_FILES) \ + $(EXPANDED_SRC_HEADER_FILES) $(EXPANDED_RESOURCE_FILES) $(TEXT_FILES) resources/* misc/* + +DIST_TAR = $(DIST_NAME)-$(VERSION).tar +DIST_TAR_BZ2 = $(DIST_TAR).bz2 +DIST_TAR_GZ = $(DIST_TAR).gz +PACKAGE_ORIG_GZ = $(DIST_NAME)_`parsechangelog | grep Version | sed 's/.*: //'`.orig.tar.gz + +MARINA = marina/libmarina.a +.PHONY: $(FILLMORE) +.PHONY: $(LOMBARD) +.PHONY: $(MEDIA_TEST) +.PHONY: $(MARINA) + +$(MARINA): + export VERSION=$(VERSION); $(MAKE) --directory=src/marina + +$(FILLMORE): $(MARINA) + export PROGRAM_NAME=$(FILLMORE); $(MAKE) --directory=src/fillmore + +install: install-$(FILLMORE) install-$(LOMBARD) + + +uninstall: uninstall-$(FILLMORE) uninstall-$(LOMBARD) + + +install-$(FILLMORE): $(FILLMORE) + export PROGRAM_NAME=$(FILLMORE); \ + $(MAKE) --directory=src/fillmore install; \ + +uninstall-$(FILLMORE): + export PROGRAM_NAME=$(FILLMORE); \ + $(MAKE) --directory=src/fillmore uninstall; \ + +$(LOMBARD): $(MARINA) + export PROGRAM_NAME=$(LOMBARD); \ + $(MAKE) --directory=src/lombard; \ + +install-$(LOMBARD): $(LOMBARD) + export PROGRAM_NAME=$(LOMBARD); \ + $(MAKE) --directory=src/lombard install; \ + +uninstall-$(LOMBARD): + export PROGRAM_NAME=$(LOMBARD); \ + $(MAKE) --directory=src/lombard uninstall; \ + +$(MEDIA_TEST): + export PROGRAM_NAME=$(MEDIA_TEST); \ + $(MAKE) --directory=src/test; + +all: $(FILLMORE) $(LOMBARD) $(MEDIA_TEST) + + +clean: + $(MAKE) --directory=src/marina clean + export PROGRAM_NAME=$(FILLMORE); $(MAKE) --directory=src/fillmore clean + export PROGRAM_NAME=$(LOMBARD); $(MAKE) --directory=src/lombard clean + export PROGRAM_NAME=$(MEDIA_TEST); $(MAKE) --directory=src/test clean + +dist: $(DIST_FILES) + mkdir -p $(DIST_NAME)-$(VERSION) + cp --parents $(DIST_FILES) $(DIST_NAME)-$(VERSION) + tar --bzip2 -cvf $(DIST_TAR_BZ2) $(DIST_NAME)-$(VERSION) + tar --gzip -cvf $(DIST_TAR_GZ) $(DIST_NAME)-$(VERSION) + rm -rf $(DIST_NAME)-$(VERSION) + +distclean: clean + rm -f configure.mk + diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..14931a9 --- /dev/null +++ b/NEWS @@ -0,0 +1,19 @@ +Fillmore 0.1.0 - +----------------------------- + + * Initial release. Features include: + - Recording from an input device. + - Support of source audio of a number of formats. + - Playback from multiple tracks. + - Positioning audio in stereo image. + - Optional metronome while playing or recording. + - Exporting project to OggVorbis format files. + - Desktop integration with Applications menu. + +Lombard 0.1.0 - +----------------------------- + + * Initial release. Features include: + - Source video and audio of a number of formats. + - Exporting project to OggTheora format files. + - Desktop integration with Applications menu. diff --git a/README b/README new file mode 100644 index 0000000..1f531c9 --- /dev/null +++ b/README @@ -0,0 +1,84 @@ + + Fillmore and Lombard Audio and Video editors + -------------------------------------------- + + * Introduction + + Fillmore is an audio editor designed for the GNOME desktop environment. + It allows you to record audio, place audio on multiple tracks, adjust + the position of the track in the stereo track and export your project + as a single stereo file. + + Visit http://www.yorba.org/fillmore to read about the current state of + Fillmore's development and to make sure you're running the latest version. + + Lombard is a video editor designed for the GNOME desktop environment. + It allows you to manipulate multiple video and audio clips and export + your project as a single video file. + + * Installation & Licensing + Please consult the INSTALL and COPYING files for more information. + + * Quick Start + +Fillmore + When you first run Fillmore, you will be presented with a window with three + sections: Track Header on the left, Timeline in the middle and Library on + on the left. The first task you will want to do is adjust the project + properties. + + From the File menu, select Settings. This displays the Project Properties + dialog. If you are recording music and want a metronome, select your time + signature and tempo. If you do not want a metronome, deselect the checkbox + "During record." + + Next, you will want to add audio. You can add audio to your project in two + different ways. + + * Drag audio: Drag audio files from the file manager either to a track on + the timeline or into the library. You will only hear audio for clips that + are on a track. + + * Record audio: Before launching Fillmore, plug a device for sound input + into your computer. In the Sound Preferences dialog, select this device + as the default input device. Launch Fillmore. Press the big red + button to record. To select which track is active for recording, select + the desired track by clicking in the track header area next to the track. + You can also click on the ruler to choose the time to start recording. + + Next, may want to position the audio on the timeline. You can change the + duration and location of the clips by dragging the clips. + + Once you have created your source material and are happy with it, you may + want to export your project. From the File menu, select Export. + +Lombard + When you first run Lombard, you will be presented with a window with three + sections: Library window on the left, Output window on the right and timeline + on the bottom. + + First, you will want to get video and audio into the project. From the file + manager, drag your video or audio into the library or the timeline. + + Next, you will want to position your clips. You can change the duration and + location of the clips by dragging the clips. + + Once you have arranged your material and are happy with it, you may want + to export your project. From the File menu, select Export. + + * Contacting Yorba + + Yorba: http://www.yorba.org + Fillmore project page: http://www.yorba.org/fillmore + Fillmore documentation: http://trac.yorba.org/wiki/UsingFillmore0.1 + Lombard project page: http://www.yorba.org/lombard + Lombard documentation http://www.yorba.org/wiki/UsingLombard0.1 + + We also encourage you to join the Fillmore and Lombard mailing lists. Send an email + with a subject: line of "subscribe" (no quotes) to + fillmore-request@lists.yorba.org + lombard-request@lists.yorba.org + + + Copyright 2009-2010 Yorba Foundation + diff --git a/THANKS b/THANKS new file mode 100644 index 0000000..ca61fe8 --- /dev/null +++ b/THANKS @@ -0,0 +1,4 @@ +We'd like to thank the following contributors: + +Matt Jones + diff --git a/configure b/configure new file mode 100755 index 0000000..e440cfd --- /dev/null +++ b/configure @@ -0,0 +1,84 @@ +#! /bin/bash +# +# Copyright 2009 Yorba Foundation +# +# This software is licensed under the GNU LGPL (version 2.1 or later). +# See the COPYING file in this distribution. + +CONFIG_IN=configure.mk + +configure_help() { + printf "\nUsage:\n" + printf "\t./configure [OPTIONS]...\n" + printf "\n" + printf "Options:\n" + printf "\t-h, --help\t\tPrint this help and exit.\n" + printf "\t--assume-pkgs\t\tTurn off package version checking.\n" + printf "\t--build=DIR\t\tBuild secondary files in DIR.\n" + printf "\t--debug | --release\tBuild executable for debugging or release.\n" + printf "\t\t\t\t[--release]\n" + printf "\t--define=SYMBOL\t\tDefine a symbol for the Vala compiler.\n" + printf "\n" +} + +abort() { + printf "%s: Invalid argument %s\n" $0 $1 + configure_help + exit 1 +} + +while [ $# != 0 ] +do + option=`echo $1 | sed 's/=.*//'` + if [ `echo $1 | grep '='` ] + then + value=`echo $1 | sed 's/.*=//'` + fi + + case $option in + -h | --help) configure_help + exit 0 + ;; + + --assume-pkgs) variables="${variables}ASSUME_PKGS=1\n" + ;; + + --build) if [ ! $value ] + then + abort $1 + fi + + variables="${variables}BUILD_DIR=$value\n" + variables="${variables}MARINA_VAPI=../marina/$value/marina.vapi\n" + ;; + + --debug) variables="${variables}BUILD_RELEASE=\nBUILD_DEBUG=1\n" + ;; + + --release) variables="${variables}BUILD_DEBUG=\nBUILD_RELEASE=1\n" + ;; + + --define) variables="${variables}USER_VALAFLAGS+=--define=$value\n" + ;; + + + *) if [ ! $value ] + then + abort $1 + fi + + variables="${variables}${option}=${value}\n" + ;; + esac + + shift +done + +rm -f $CONFIG_IN +if [ $variables ] +then + echo -e -n $variables > $CONFIG_IN +fi +echo "CONFIG_IN=../../${CONFIG_IN}" >> $CONFIG_IN + +printf "Configured. Type 'make' to build\n" diff --git a/configure.mk b/configure.mk new file mode 100644 index 0000000..086447a --- /dev/null +++ b/configure.mk @@ -0,0 +1 @@ +CONFIG_IN=../../configure.mk diff --git a/libfill.so b/libfill.so new file mode 100755 index 0000000000000000000000000000000000000000..41e5874671fc8ed3b23354d04aa37f75a7e8888b GIT binary patch literal 2075270 zcmb4s34BdQ`~OLD6A{!>OYA`qY6)T~X~j+jL2RYHvfM1Px=Dz&p|P}8RHN3GmZGh# zMWv-}C`D;$sZ!eVqSm(BQak_eGxN-ubMH;w_xC>^lR3}q^KA3XGjpyNdPMg0^71m& z<70#v1f59rGQtqw-e1e`HVoe|BgpVYUPGfkzZTwQpNjZ2t1WM#lDngwGqEnLF&YioG30(O#*UpkrPaV~=e?gYYir zDn7Zg?;FPS2>;oS`4)ZzB$ci7((HC02Nu~HzM8lC!}&&D-gIwo+dJ=!wg$^m;ax7T^5*GYNl|N}{k{CUjri!r=B?g;Zg+vP@kq$C7boUNjCv-( zE6yt*{xu`7N9myVd-t9FQiV!oz0U3ZcD>Da&Jkmc-{u7(p{VNU)ytJ!?Qub-sj8C9$4zDLa*$yM$m`x zGp5fmQs#6wg1+BZvCAi3-|gtIzQKgZ(m~UR7rG&IN9cjj6G1)CSl(5diX)NNkMsK@ z9>DKWhzB7=Gfd@&;(Zvx2u>Sm$s2|D=NPtI(y3ky!?B3tEO`!oPq3s>dG#bBJsDvP zLJC4ELK?#V&y(R+ek@=oLN-DU!Z-wa#&b;Xxt8|{c%O(c31JGSzrZn-&BOb2hF|13 zAMs3tSqLw28kJSgtDH8MwBEx;={Z6)Hj5mqrw z`Sh#?yq43}A%2hF-$(obzpv+b6XMMXA2Lk!Kf?PKgslkM5I#n*K81ikLD+%t8N%lX zUmz4A(6bxymk4_h_Hx=+i1#7vXPC-;jrW5LAL95Mj=x2GnBS?adX8|~_Z%NX`~$xq zNBkqdpFsQ*!YPJNbNn;Mzi|93;+hxbwl{s^TJ${^5F7I8U# zuYkBBLM4RC2vrg2sm5`2jw!7M-fJTSA=Kma1{^m;+z6ow!&IK0rVKw}NpFVt<_Ikj zLJ?XasHZi*haqljNpEL)r?TzcU`p#?NqdstJ6h7h@%|LT)0Q-<*O}o6#9a`&S@OGE z-h1$SPsF_t`XKa0=!Zbh0K`!U0~sEKcrd?H{!qLRx4*0l!n5i}1eK0#n)&z{?Pp zbNZWz-$Gb{@HWCKgw+V|BCJ7Ji|`)8`v@BlHX(e7pq?#w--@se;bVmD2!#lrBJ4oe ziC}#`XSm3cz6eKENQ3s{WRjA5q?4VmDA2}e3oPC<3D&m&+rArmk=%^Tt&EsK+o@p z|3LT?;V(|RiTD=3Q<>X%zl(4W;Q^;VLLUo)I(^1 zpq_^O-UxAHgb;)#2u%^x(+uw|5L#K%D6b9RFod=U?KrPJ$4?^eh|q~))fUC!oc0vr zrxCg!bmg?}h1k#p#1Mjz&DhQg$fbM_Axz`TaSL zpSR>ut9A=K+VW0$F@R$c;w|Y8yeC*-Do0Ne(vlIza9)aAnN)_;5T_$#FgzBq6Cn#B zo6~YQrgq2SJr`jD!bF5g2fPU$Ey*) zi?9Y^9m0DE?<0JGupWV)4IE2I{@rLv+r;miIsS;_EgWw}ybWPH!_>kjc>fe(C&Fi( z{yE2AATHu}YoEJ{NmKc|Iqyrvdl0^2cpu`g5e_m;<-g(gZxJ6xID+sU!ZCy&5a>D1 z@sEg4@Vm^Be@}ASPaL0eD|6Zc|AO~lEikokmf`;(K8J9g;R}d=RTuhX^G;aDwyT=2c*Fzh9`PGa@g)>h?J(v1p=JtB`ug$3Y=dkT}My9;{(QTg|&Pj3agx;<4 z$*}{*;SVoYyPSQqT*betmhSr?X5ixG$2Z^mqUGunD-SRGZ9~huPaErh2<-LV*OM=O z^YMZ{my6zu%JaInb6!Z=3xg{hUexD_k?$?3lT>Qhh98G+U9s=bC$IkX*c-uJ_cfd} z{KFqU{-gZA6NlYdb?~z#IfEm9`o@tGUhj@`$A;G7Kjjo9FF084NYvQ2{rx-sm9e_h z8*3A1{<*jPv^T%-{_x5NkDqw<@S;Rpe&CAKGanrN<>jx|C+^zv`>C%|@7>tY__5md zJ~6)>c)a7$j|P6f^Uki0;ua7xZ|Hpn~npFFD#**H>M$Y|Y z>c!`t2>-C=Pe*6Y{cUfV4KrtMA8>L-yTutjz8{fL=Wu76ecq$cb*`nUeRIynenE}0e~j_&(sJa~Zp*TFM(4E%t3L8h zRJ~<&uGW5S%l4251taR+%-?kJ?egDkYCr4Dz5Q{2&-}99r+r>swEb`2`lUxy+w$tg zt4IHQEbX1Af19%F$)RO8C2Z{*xbB%szec>`i2fp{+=a-Z?IXAPe|b0OXxmHMk0wp& zKVbXeWlyXcJN@Q+uVkjTU+~=5KL+?Otv+IBkJ)DycU!v(VBVdzZzZHOi+bKRVai7vJ{_5Qywrh7s2^ZNYy z-t?`kK=mihCYx;dAg zI`iT$qZfKDX#3=kqoNm{`taYSTP9Awcz@&R!IwMl|8Q2D%7tZ?4=$+q(!UYA>TGV~ zyZF61IZ+kZ7>E(}g-jzCLuA^V|#=#vA1v|d{bVjG2cO70|`F!%Tk2M`!RBqhWd(SUB zwKRCl&tHVjznqfU`uT1zRoJ=r^^q4FuH4r6+jrXk@WG&tkAlJ`24v+%j&0Sd^Zq`s zeR5@Alh1msXxQqUqyMUgrAyywP%vf2SJ!*Ccr|hA#K)2kyw%sQ(#^A-n!VEZ-hvG` zTmBI~2vpV{;Kn;E&sW7 zY3s-*`VIf<-CHmHvDoL?^g3Us9A4D-`ym~Fs{6#f;S&cRdFf&Ae{-i#__F!BB}?YM z68oi3*o9eTKKQp;+4`XYxzpC1Y;ya?*Hb3^^yRAYm6HnpIg{4y>_qQnZ7vKh^Lv@x z!;g0iyOX;#{r2^Z=cZk{RBz9)ddsgqRlPyEiPP_|{r-uovnu{Oa?0G@Pp$sq=$vVZ z>(*>v7`y4Q?)@_SX1u!ln~4?Ayw&>eB|lc0RpZ}!Bad&H^UuQ@&pfleOs#UGQc8C_ z-sH>Z-wy6=`b^5qa`E?$hLrlH&x-tcCttlhzJ0`ry?<``XidaB3A0|f6xQhC-jDmH z`#WE1_txHj?sp#BupoYTnkGr?w{Tu=_FG1S9@C>24$SH|Ed7nj z7sL7$1h)TnPR`hM&#!)=R^9IF9t9sdP_=zxgP(8xvas*H9e;OwbIU&Cg@2?j z?iRhf;&9u+-^RCEo__w#gQxsIy?DFxu4A>IzqP9Dg;{>nhW3rBv#fFB(2%$(qoN*c zX!lCBXBLjUaBpC4gW7%m^2&J-{l<$U&MpgoY1hz{9-Fsi{JQ_*hH1ysN;SXoXV$d^ z|NLP09(KD`LZ$Ft$(Qu;l?5*R@@5-&H)~jE~gutlKw3{()w~yYs z@9Lv>hc$kEPun5C6>i>oqC@3h_gv_Hr^mGCKWuXB+X45#cr1?JlxaOH|KifwKaO~z+}%0#Mm_$;gO^6u-n+capYbQJtf`gQJfzOadi7g| zE*&_xaALh08(QpK`Bd!>p7~?tCm(l@=wj=2u15QXlOpnKrjG5g4Za^Y-1`$JteKUL$_FTamJb9UJeI}X||P1;y0>WQlFtjk&2Y|9s2c6wcodFSDh zleLltC)8W&mvdmj_L`F`F8L#?&7+FdrhXS%?d>}>2JKy=9jL)Gknr}{O8GcU!VEs&d9`O8xOYh z8lE+N@UtI&)4BhM2d&Ch`lnnOuZ|1ep76M1#y_>ZZdKecp-Ex+?6wi%`=8Hlb2R?+ z?$v1x=FR!S`>#PmkA8Q1^`JJp8m8r~oqlmZYDm~~=RX@!ephgv=8t~#{%7*`@jnjk zy6e=dkJX7?m~eX5=QFOJ`Mml>uf+Yi6PGvcx#DNPUaOv5(7D{^az`%C8?Y$K>A(9{ zVCSN@{f;)h++U=@8 zP7hpr@Q>+Rf1NY;Vsh{2bBEJH{de8*(3JPH|DKUHuY8pz ztzU0n>V;E%_NE1_Fcx(GutSZ<$9~}bmHnL^lLF>9s`=#9Q(=Gl4ej_-i${OGYrGU) z`sY!#Um3l4=EbbrSx^2u>}VHbOonrH^B-3w4r{YKJ!X5S6Z7AG@4M^=Ew2x6^4A9= zUtd;mzrR<9xYaWzEPloN_OZS`Yu+n!=iH(z8J)k5zjd;3?f2JqcQ`fu%I}kwocQ7K zl}+w^H}6i=z$!17zMMWd<%q3etIG{P8yb0k?bIn#oHdI&COwLHYRHPdp(olWm)(E# z$vJgyb-NhQp?XBSkGl2v;o6%0v!DI(-D5E!r(TKZ(d_=-*XO>~;N8cH?u;GMV)eCi z@3nlcM$9wq4pjMPN%Ps!y?QL@_vYXiTfDN|`-=~*?BBU-@`>L9b6S_&fK${Qal(Sy#KldHqRrkB}$)j5f6UTQRJ+kiUpU&2q5uNjLH}C$V zfA;U4`)SzgRlaK;v}(>@tN#7GQ}(P5jT#<~{I2yk(R<4sdimP6dat$|HuGBIu7BV7 zI`QkZlh%CDv;L2*n(nX-xpS`HumQLKxs&yBPKA%wu5UVIdGoTPc0IAU&dzf+pEzdS z6R7uQZRN?a4-PrkG?uBG5miF?)G6UW_{Ip{*iypt5fQwC51mIbyf9hjcVKu^a|y3R zIVyjvy@Yc)e{OvVcW3xex`cZxnENlw^^bOz`71d;x`Biv8BT5_;nfU>+a)}k>;L(j zgabMM)*uNlW_Sm;e}v&$ZDf8B*Pn!#o;?UOpEV5EV)$vs-wlQ*Q3f8>-xus_RQQVy zk@+1EQG5HEN*KrT0w&)&J#zvid|`-$w<4nQ>gEmESO*^Y{5tF6PT{`v?IV3g7lx67GPA>i6aO-Dmh3 z>nD{@XZ7@iBT#wY2>ijL==mR>pyKC=17-eXL{$EMbqNPDJf@w5Z!`RFsDz_oXM1UK&_^OgL6&+|#;{4jr+ujK2kF%nk%{6akm zujlgd++JmdFERd=e*c3y#iQE$59=#6-v!K1t5JrE_Kc;{T0ivV`K$6%SzmNO87luO z!wMh0ng7&$qM`TcDMX<1KIQ10@ZIz9pO>q`K7Cb z=OCi|+pKRCe%eIK{GFUXj0)kofk3ZCtl!o6$9Jb(tV7)Y+~E=?vQYUI;S#RQ`8y*e zT$bUp-6X8W*Km@Advksxrq6jKQ+tqj--@jPE8Urt_Mlsw*L z{!{o!N|5a-{gcS}Ud;V}%lO>SZ~;ve&oKm=Pp!uZ(()3`>%lstQT`9~2hR}%dcDo< z-)49mmp{XBBi0A=8LnCnFL>1W2C%$WKpM4ojOj^s2f-;!&r6*DEaPW6!^50-!4rl+ z<#V1Q$S_7RKF5uaa0DXC@5ANu7(UzqFL?a9d;@9-kCGR<8$gf3*YpMwPU7;vGJmf` zGPS?SO~1X-NS0UhYsmKWXf7Yhu)^=FEbnT*&L~-5>9f6MB&_&*Ca-6C++HfxymLE8SHGaP!ZBT#-FmIsBew~{Fre9Zha zm)FPj+~49UGCvm))gQ_D&1CpLPMIIVaFfvzUeE2VWBe+7Y-9cp=JvPp`WVLW)674L zKi51a+f(bsM&{SvTt210%vbat&GWmDWE$^Jp)$W2m(OK-DSoKN>$Q@PznH((equS- zufX*q9IoxvVE(4Nh16fIelkBF5y1&;PX=-Q=`!1hX82`Zf2bQOzqGq7pw@#)%_OYs zrDeNL?!0@R4>oPu8Gk-H0sf# z%73rcBgS_p)>mr&zcGHJxxZmdkIiU<+B;g0TElw5^)m)Zcn%`UuN5R=RsQs72_Hd3 z`CEBBsSN+c_L0&b&#}BK`ks^3#aTJkcd|TO=lTgjvVg+>99}<^{eQWm%x}i!C$hZl zWOyX&|KSWj#`1iE;kOx9^k~QQQvCHQ@2|7D{J?0u;3+_$@y_S+qZwZ}S>Bd&{>VXi z!E*+I%D3hGLWZm6;RTO^E7q5=vd7Lem#`Y|b@W3|1q5oZR2V_{4XC1@J z-aEPzuc|1|v{#WeZi(vQ@)+ZepwlV*n zV7Mj2YCey%|KkwnzfOq2W9qBX0yO2p#_R23B-8v`HIn(O8Lki_;Ub3LU7l|RVxl*I6Z#(2S_=GTq&?ORdox;7Y1kj!-v-v7ieKia^^Wrm#{V3KPclE)7+%BrAp&hu`&GDnGtO^V7KwP0 zczjV^C9L>iQI>=cA)@*_<0Y)<^%?U=IJfsBkMBB{U&8joYK9Hw|3HQ_c>PfGAIb9D zf!lj-gzQhzyHzs@2Vvc&@s!87>Dh`va7QOWdVNf0e(iuX%CE@uQTlnob5t63AJ4x* zEeWgjcPW=w^eS}I9}mN2`9L1;edeb_41d7(;ARw~{tNoc@=E`H*IL5sxx9C*g!2(m z`D>kB^P92$RO7kDi1=N+01Z&Q|6Ci zcvw9NtN!e)KZAI@pELf6O{u*q0kXX6?;y`VkohORo6J|^P2lz9H0L*m+|iT7?SIu> z!ut_X`}92uJ&~OM=rIW^etkAZ!aEUB`5e|CM;Ly5G+ywi`L|&G7>zV4U&P}(!|*$l zfhQG#@>7X1@u>NA=Jh55X_UW&`6ZO$r&&KWV|W!6!lUq+&+}3E+{gT+_+wjZSv~~i zsOs!N5?1<)_WAUv@tkA%%0?QMpT+vGfZ-+Fo`TnM{dmr=%J@+0!)(UiX3lS03NLuh zF#d2o@?CyRMr3yB^2lM)u$Mni%eWvIi>^5H;DFHl+enmY0LZnfDf&P>W{~V8}HIGN_pZ?I^ z`zrry)T2l7*LH?OkVfsFt4F!oA2Epa`&Oh;{=?Rk3p&B z+q=Q=&S(iM|M!cSCp}>ZG~TD^1&_jCU8jU;7?eMo28yQ$f#8V|_=D#(0>R%hzXvir zpBNX{d)#!lwXVUH#0n#VKv@X ztnZI;enKQ(@F@QB8BGxMF9NmKkoAdb?;GZ4g&%h334L52K3!1&^E&@A6(=h(0Bukk17DSRsD?B3Ub4#N32z`vF8;i$rY>1SZ`cJnjVasD^J$4-36sp!`i_Q5fHFe3Raz_`{D zw!>U+L+&S_EbD?EmA%- zB@cZ}{)j}yB>cF7svrL})}qor;=3Ede?I6P=Iv|FZ`efmF5mJq#>3$e`C2xI&<1-@=)YyLRV1#4oEk8y_E|Gg9NecjvS zr)Cqtzi;UIG(>;H2io|)Pk<2w{)iam%jZu4#(D7T^6kDRecH9dw|bv?8Lx z&-H}O5$j`&=J{4b#ojOb3w&2Jsu;o02iM`GQTY760`S?;$5_ebH-LYJfD{%A}4iFx3E{3Z@P6^y?gm4ZI+9;EffTTg-?@FNYgkx%@( z4D-*k@Y@?0$l@}-#%$I(7DMU&l}MHTA(y(0?cBgHWc& zyWoHSRiHn^Z=!rSK5VST_14uZ2&7Ke)fS!$6No8sAqSU$?*ZHG;YQa4^>LL7E?DxZBMsHu)ewWE;ztGRrmrsK~ zu0L-x=d&E+Ju+2~_dBfbMO*w#d_PP^e`#31csyQUjSBVrOne=ODD0W#WtJZ^1^VFx z@W0yJQ$#iB zv$lSGzbwGG(i%3~Sby<*QG}lrpjW|LzUF#(tp?^FsqK&2kmo~?*X}$%pwlRP=!d^F zo-)Q~Vb~Mh^fvX&M#xL8A}!B*pdU|E((BFfAjor&x2b>VJM2_!vJYXMr}z8wgD!H*_PX8N50W1M(Z+h@J7KIc8Mne%No5%$)bekOb=8~7fE^@jO%G~il; zF@J`qK%ZRdYctma@)OOT=4GyLk2l7|U{8ed{MrR$eQK!3KeQw8bH1BHT7j# ztT+Dk{fyDv|3T!3zwc|>R~fJuQZ4pEbQlW@oHV6|}x<41VkleV)hT*@yKn82U@$_h3(~*RTh`CPE&*gFZU3 z6ZB{P9RU3jGE%R{lR=MYtbdBW`x}9u#`v1B4eNizE-%xbYg`-aL0NAj+DEqkbt1-t z{la?g?J#clOl$GW03T zpMJ=Q@zntG6AgNfW;ie&^udSVO5VFbpLSoR^B zGMn3<-U0k=*^e~@eTuegeh$YbF&ICjqV!J?^l_B8)+a+7f}UNq{+`wq^4i$Pl)rS0 zC(y#rvEZkzWA*+c3H#Bq(C1)N!5@1apdUU;-^uU~pm*p@o5`Oa1c99RcwUV^BMbEG ztodz8I{2j-b5zXsO-kW8DA%I&pz4)(<)$P>eH81LpSzI;B0 z{Wjz)^AhBp$6F5g+u6yF??VL`?+%AOSVQlJ?I29PMSt8H4|-YPu8^-#i+y~jANY5J zk10PVFy8qQekMH|Lx0+!kLPp$bJ}Bnw@2gWP4MHoBN{#f`!jH@FQ0D)7`=cW;~Omx z_hYf1S=Pt(39tvd_?r8Llv1#t8)<&L2YhAE)Anx5Na*`T;BSaDt=BCAQU8XQ(Y>04 z1EC++O|zN%H($tOEgv8DzrjC%`PJH}*N?N1@0FmB(x?3}pD27(a+~M-2m0x4!B->j zL%74ow3mj1(H7@w{_Y0(S=`s##OEgHi}_d-k1>5e2EU&+{LKBqml%IgvaatBdv?zu zUvqt}0r@%teH+T-`MWpx5Brl4hQDnB`j7H9_uJ!YV*XvUJoF>_!hev*<;y4G1^Y)# zQ{eAjFy{BPw<&+GLVknydYSaDit*=0L4LUWWbkWc?5}Gv+`m5bQ#);6KHn1hq@Itt ze;bMZh7Z^FXuo*$7ogY2#iSpn`SST}fKdngk3D^~{eBtq4{YXZ>hG6gpfB*lBTC=& zp8$PsSwGi6J`VNO;~9zdA-=J%>EC%U81%2J^~pQWKwnSN{Baui*xU*Fh52hd@NxZ1 z{6;I&Zv@KEM)@F~|6%Z31ok6y7(R&cbXctS3ss;$=||B(W`XaMXtx&lMalDI;3pOM z0o#at1N>3>j<2y2azOk&7VGV8?B`c<{?Azd;`6;s{dgu5_E}v&vwlWj=!cm;#$q0C z2k5Kr zp19};{M{TD8Pzm)UG=fK_>1^a{RKRW>XkI$ixp(3cfH^!4k<5BI!V*UJ& zw%4jfV7?VKKWqb|ue-8pL6!gbRt>1&Q!GG`%DSRDl0DMo@>*a4_K;Nmp=6bpf`r#7oKX`n9 z*2ek*f0yEiYLKV%_@UGL+<%uLkayU-Aq@A6#QfgX_Sg5Yzs~1se%b(dE8tKrKM(kh zo~`v^DC9RE`eZiezk>DVbfDHJYaow%Adi)Kd{^w?*Kcj6zwV=kupfJB`}|}y^qECp z6s16(S8M;?b;#3^QhuiVKOBbjDI59_bR+zJHV)&RrpHqn`Z_el+w{jI)PTOV*sBvE zk5RDy6h5|rP^Wijd*$Z{@B==6Q2PHv(EkR0kXQK&FF=2k_0{8hx+UZpMp7R0V@r&$ zvR(Vn(!q~`7Jl@_I#laheSR?(>su)7?R>`P_mJ<+_<>*5-{hf?*Qc=`~pb!1<=St3BG!gn}rS`Awr~>?lXnj{V9QzOWllE}=lf>WH9~3g&vK8!^1=ufu zr3t@J0nY~H<2vX61H^2`dZ_5zBNgixoH)Tu?+!7b*9d(c6y6@|XOX7&wMiJyHq9SL z(O!6(w@Hr>*ah)3yi9qY2KmU2_A~tvH@jecvDjackk<}h!r#FB@M&4B=Wu54;qg3# z{>(d~_b1z-Pd4KRgO~GsI${3No3uS}J`nUu^)>Cko6x(*YT>+t+p7uuPcHB?BDns$ zO`%_6_57B11biO$6_00mXV4e^i5pzL%F~c{n-AZIz|Mn_<-w1~u=y|I@jSr#a>HW( zwCD}_Pu2c*Y@Lkmz?ae|59*_SEA5}A-_I+W2md9H=kp-UKS=Ly{GksEE%s6@?Ai6R zw0+he`ZwC5e>YR`6aPEQK)(Qgr#asTiuxGr zJvCkj^mDFd|1<^idkyDXd0aj;82r*!mp=>rShk9m&*|7t7j^J6_h)4X!hSfb_cQOH z|It`4L3Zr-s~G(-uE;`tz8L|2I_>Xc%EvC`&jyTXi1GIUKJKT3eoT-0kk{M|zT$Vo zX?|Z}z36TDnEQ>3(2pl9{{Nn&&uYTI$n~97vHm=*{eyF2(f&=F_^noIuRruzg-orF z$78XW6=2OTzn|2hA{ILO}&T|cTW@I79yN5L(iUvOTc_Q$Kh zZ+Tds^0cDd?9-=odxrv>wo>ZLmM)`j1fm2>hptpI3pu z!h7iPq>hLFzRl-LACf56a7yg$9nZF_t{1&b4 z?Vr$o81&6b?tgwR_}8+384CTe6aF`djiBe@DWLCJecrGX>Fd((BfE_DcQk;$%KgRL*vaE7!2CNr?`QJ+r_djvUG(~XKLYv+{?%qYopvGh{yS);)f%U zpKGW#aO; zKg08&e@4R}tLQTy_DlXmoJVo~h&=G0<$QN2=o3BC&-AZ755~P#sO!Ii_2UrEtFH5S z)&ie_P-eBby$ju;Z*hL0`gP7mdHIuxEl`|L1f20pQQc z;LlnNSHZ+>*spJ8xD@CUh5cRx!-F7yHz0o)hQQZw=(jNN#~g-_puf>me9ZH?;bozZ zrrHd+;3R&5&!iwf1Je@l4(PuyOaG6LLis|R|L}YpVZH0{ot7`32CxrWdYk_K$qm6@ z-SqmsCma0_)%v3z^iOVOeSUuh`Z@Bt=KtD{0Uu4^f8qY7g8oSs`X3w#dMve>_R&9> z@BBg9|N8~@TS4$&1oM1m0bjGRIaK()5`*(P{HUzbPZdC)L-wcp~F`v8`?LP_w{^vtJ_Hg-mSkLn< z`^D~{hbvzs3BoAJFGV zSA(E$E$e+OPKTs+h`2XA6 z^hYM4{56~(sPccbg?_<$tLSqk4D+?@2YWXIz9Ih#-$^Kc1NJ0_E%300v={Zeme-en&#aDT5L{}A%k{EY<28`j4N9$&m4`cHvBmdl?`hkmlbUSxdJ1>9WdBUQiISkNOF z>jT%{_yp#kp!;i4596<=`L#xEtS>mPRQ&x#d)RY(^?CK1(1*i^==*Zt$D{pI=%3r) zjrNZvTK210zw$s2h?T%spDLh_#Xsx^dB2YPKY5&AZ6f+#qV16x@D~<-?q%A;PXVzJ z2SE>>@80HEKPPDa%34gcR)N0HHWv6g@s-ABU+~X*i#%=w{WdSbeIdr@Qs~3b0s1~$ z0`R*!1ojWp`_gd8bF$6ce@y8Fd*QO4pAYP((9`<7Zk#{HXVEX8V0?kNZ@Hi6`{fw$ z^LSs=Kd}+((WQyn-?JeG{C^Gp4W4f$j5l|l&Aguwh4roo_YcAL0>Awu0prqy+AnSa z{#Tp+wW`Jv=>Kcp+W$Tw5bOIG?SHO^`R7{ZzZLQraz*pgGia|FH4EEp8`Ys?^Xq%A?$Y}xV;~q19$@K3)epg#*V`NOW|uXYe&KLJ^{&>jSjTPEoUKjdeego|9Fdv%VPT+4j?ppzE z0&bIo`97=n15beeY^7lTaeM!!0KW@0fA144qx15^m``Ym_DA=Fe(%0s%g^0Gd`Ph}<($uiuBFz%M8Cd360Lkl#I^2lML>y=i{>{Bt4ttA+kl|6#!A zsC#-nn*>FC>{D%Dl!gAxe^1|69S-`gZ{)|{KLi+yvA*S7{JYbk@6NOYK71v;-v>X& z<9?gs$K}wUXR!XN^=eWz*wcS_8Mm2UQ=y-3F9LlSc8tRKvED0sF9yFIcq$83cD8Ew%&hTWc+mXU7H%8qen+wF!uAvrx6iE+6x^cs_zJkep;pBZN#`aeIqY=dBB&Ws$^QjI_NN_rUx)hW^F8`XSzK(!JZJ4oN6B*<4l(mCIrQ$W@IUDqlu*G(MuMT ziD{1bLmhn*%X$49)7o{iaJWQmSkyCW+u2Eu_% zIV_o)?ijC2xKNJJo0NejC22^)oC5D@j;yShL}Cotgwv6k8UvvgB}O23f*YM4gVf3}?KH z^tusYT(V=lU1A?YNKOYLJ?khn5tjiubmqh7-dC|GA7n)glUb zb`SmrNmFBqRWfr@!8|4t6AQ~($}!rDL5KSg{|`k4EM`==Ga6BMIr8uZ1Oi}W&WIryU&|zUlRx^qTs1JMW1gX@ZBU95doRYO^xiXTV zT`@%Tl<15}(~7|?sflUw0H!+5FbmMc&D8)(FM-6-y8g-O1MeV#R9et8q=;o?&&f_s z%`&xdDi&3H0>&5VRj@E&UJaYywmzE7FaP&wQ`EK;;F2qJWHX(PaG-X9AG{z#+j7_;T$@k zPj|b$>wp1~J-YNais>2aB~;r4(wD{O$~jTKjKNV8_xVA%65sPYkau$`4 zEM&o377Ao1XQw(06TM)i)C?@4ir0-qP!qUJgZW{>jU|y9Av8kA0E?M1>5h0yK{JVp zWoBe03vs2AQgZEy&WxN)QGrF7^0FacFa}f+8Yc02@mW-gY#on!)TJd;4h{5gEmp&l zYyr3QEHW3xst7@fi@|D-e(;(d13fRSG(9$*>~y4MU`!rp72?C>7VA{j1el;{paPak z*g3gCk?0{NeoRhQwu$vj=shR|8VaFKXTn-d%LLZ3qPh}aGZC?YiFwgcDlJhHGcwWy zbz_q)){tu>!UzC~VltE5nx{s`Ih?%K7;IJ&Bs3;ABL_k$)kePo z-FrmZqXrFlrboAEdrVGtQifB`T9nOkCX0&WlZ8Oa`l+dMT{nkL*y1jYoMh7USnHD0 zp?K0@41tkJ-w>u>HWPKs$6v66|cZraiK)b)kT;jKzQxi?8gN?}-hG2|ElM3olp_ zJ!{Y^0QzVYYxeiZa-}cX8hn;7GN>aiLIi=Rx`(wR!lKzq%nJ8j{|NHr#dI$$4ABgi7Ko7kEmKdMgN3unUAt3xmuz4L10wDHx(x1X>0B(aSVF}@&0WYvo2CVBREw-z_tK2xYQ%11KXxSy?4)u(Gl z7tEZHoU7aeuw+Puu(Kcw>jG28$}J>mu3SLojNqhV^gQt~aS3ltWknZ4lQ?B-9Rbl} zx12lxfO`PWU(_e6kf+JTtssfubfN=cgVW$#>@l>Sk>iYWh&3EDGmWx1a@epU7S0Rm zAQ`<|EHgP;;5;*<_$`er5DOo8EF4R6_sBa*jV8gCoN5x=Q>ZCR>2is0y%b7VuHeGv z6xF32BxRVovnVNncIz&ml^3NehS1ws_QVTir5a*ACEWrkXVTg*4ZQ|#cc7EN*CFr3(2p}TWUg_ zkT0U7Ng_(k&d7lG){-dtQz}UGOOw-@M@>~U=hBo^99aCA6sn|qx+EP;+zA39?%9Nu z@yR&dq0UJbM5(0Mj9kGOv>(L2M5rp&1Le64g%UDppDul*G*S0%sC<&PjkpuJHmSa- z99tkN}co6Y?aFe{@+PXjD!#N_3Gf9L!9lxUOlcWy=z0uBGFwBT15eB~{+^ zGPN>Yvo3m^$|;|%OGfbswy-XtCMFIRzx0`jF*8l6u4k6?XF6kI;f{@isbs2W8bkj9 zSP7ET)mR9pbj%1rHb?K7gmS56Nfy@i?IuXtV4dNZKIavI}s3q>QXnzS!qX$D3$mWlcRp78s z5@(%EG~!K3z!HWJa`O6S7LXcTC=(Yk73^)MSV~#!7E7vhDT!sxk}B#8?^%)~IWZ}l zOf=d((@~k3XHCS4N&Zc(Sc@A0c~!{;1;dW(W;sAoI;SP$nP(`w(m7^Jgz=o4ZceY3#b%AZ6?$`9dVh(C=r)%64PO-6ldoX>e$;h}!Imgi58R{`E$4S?-q@$^r!WPt*kSlgr zf-`a48Jl5h6Y0y4S|I^CMA$>Zx^b5kt8d&i54HK~Dif}qn8jV~P7{~^Z4(%qnZ|qJ z5;lph{%~^+SUJ^>1~Te89?_pbMmA3C?Xr6s4PDH^{?*B9$&xE_d)d7bZMH#CRRs* zMujFe1aVV~&VT=hV$+ncmvD)q`+y-`BYTLUNo#_7mHzGj(Y8hijgMDMs*QCUxKRwk z6V|L_MFWkG2!--O7mBWinJ$P6qq;v=&(z zE!ye531lG+mr`-KXl_^3{U5#$O6~$jF8N4dX3+wKS%9X(;HQldtbQnWoCN6>#5F}6 zwu<|tRNqoX?uzArWFvId14riYH0l=g^tdCq&ag>>9g_;2(49w_P8>jYXzdBQfFUL; zRG*rYDlRXg%KW5^)Oeh@(76XBEd_Jq^Gr@7bec(ICyNWaycc$12VYLx=v2bu}El4CgbQzQl}XH%AoK&e()AC;8G>f!%`>?Rba8iSjwFFocP8xdG1)PK)v$AyLMIMV zK!@ZkdHBsrLDbK{g->z~$i+=r1=ibnxL*z57M-}!G;qTO!e_bIDl4jislp^*!o$lA zd*o|>mslkA@L7@4l?GB^BA0ju-Uv3W-73&DWF>g?oEhUWXX%0FvpKUBy?$#$!*g9% zwbRihq0${Qd{KnXSp1J>}IG&q;ont;D872T&} zI}SCcx5i?Gu9+?@Dzb0@0q41!6-W(ohMO}~3{oJ12SJi6{32wDXburYpa(H3GC43@ zJsNJAI1;vsGa06mtm!&dam+|_^mHs+G$YV0#EI@^&_-EwBb=+*Nw^XyCT7}Eu3LAL z>nv1MIMwq+idxwnsufI0b-8J6I*G#x z?45CES58?ZWF?VA&`?dDv7~b&djFvs5#LadoD1(Qb~fVPAjCy%IR)1AG{iDNgmPUb zC`GWd$;67|%^WH5YPTi!Rr1QF7%;)OS|n~9iY_hOjwalbq|9<-Lh^*70)8_{L#o?B zt~m)3FSK!^uSz7|)xB}(J9t=V0W#0IEm^edhig#Sj&2pn>f^5;_*M0u7z5{q_|(O< zD@zSBN|^pA>0Y>4&SYo$LmUfRLqu`c z!8DkOH27xA10#9}iasu72tog&2;r;5A{O+OSjIDhEjdeNi8T{D(pnU@Gh`Wt6*+Pg zy#+hds7y(bvo_NuzNC?4$)dTk<)qM_o{^APILVp%TPNJyj7m(=6T{BtgSNRZ8PSG8?rcn3k$bgACWsN-HHKG1(!Q+u5~CI+R9`0?$xLpaw-wzD8(LD8pVh2wf ziQ2L(9>r1_h*QpTF?$#zl!R*5p%u$GmL**yj#$}B2J>rDSM$R~#ZeuX?Xfzh608Kl z26=Jy{l63u{s5PJuopSrtS5Pr7mIJM%9yN*s^!KLe1xbBpGa~*Way?C}l94HO~ z;mHukn$lV}4`qd38;@^~+|qFe6}rlq!k-lAQ(S58n_Fe`kWpwlmkE&GlJ%e<#copc zQQVeOY&E6V-_4s0qRPFiI*kxpBXesC=Ztw4AdC#XJS$KNkXX5d6iJwd1i_P*iO~4E zrpqi`$wVKOyJVM43y-3%EfHblR*X)>=-M=0E^)V9UHWouK-@`j$bQ5yHOYs{ zE-IWC$YlikF3~%V-`vndB$HzjY#>Uxp~-WsvVyc@)F?QO<}Ob<+%l*m_$x3v>49+R z$ubHLhLR1#^r4UJ^u=G#QK@0m5M(7IVZ4)EpXQL< zOL!1i8#kVnO|;AIrP(QuecZCt!HPHyv)r#?TB~f#)h$I-ur$oso@1eLs@tAQ$H}9e z$N{~2fxPOn0gjZC@#X0RL#3+(LANZk5m8y|L)Erf+MJtS?YZAVABML;~{%Xsq2(=gK#1owk(* z(&|R*X>s@>SPF+?adOY%M8?%OA{vrn!Jk%Wxui*&drx76iPBOgJW9*XED}Zsb&{2( z(>LA&^`u}t{0SbV^nfh0mV*$KEjC|{qvU*%Lz1gM%+b`f^uru#65cb5X6f=P6`n=&4bI7IQR3H?lrCVupXuR%#sR>z%KBwf}5mQ&MzqB&XmR6M)j z@50fKyv9oW=b-Z$N@2epzS4`A*&MLLt8|MY?p8igOCl zmiSQ#&va3&80=6TO}`Qfuwx)l3HiHX%yZ_)yDa1K zSD2_DNl3WD=vUWBvWgjxSg94si3ZBW=0bk)iylfH^0j;Ia|XJ_tuN)nB>pq~;8wZ{ zoiBLBb52m&R#hPgZ}Gee+IrTaY0CL!k;RVf5cNk+UK)g+Gvp69@Fg#60j9Em;DEqy zqlw$0;z9vLM(~JK$>Li@OV93&SiQA!Q|vxg%c@S@N$!-i@ciJKW~7y$oEs}YGfT`- zxj)TRF-8|{`Cqa~7gQXqxbb#h6HDU_ToP*M{1+|VmULO0LG3tfkDQ@>UQG12D6A9Qnq z{5EvEO85nYqgrYm)-6;Z79X%Va8cW>HnLDpOO2;Rp{*v(04_pZ?Cf~SAc9&@DjCPE zMH-PhKauAJO69unf)jd}zN_FH`N9gLs!BZ*eyryy4CAsSI6*8qZiQX<7rI;tI@&_mAiac?!>A&}?0H7qXtV>epu$i7^@%jRQGxLKeFlLRRU zX$s-+(}}MXOW54^=s%>N+i?2yAKE1nztz@rP?vr^?1Q>Q_b_-}S91{x3s>rkNhXZQ zBQEjFGOoB0j6fbewdHWlhBV0SMMj+1qq^^Ql@%+@5A!&}Iw*C$NjQcr$28V5LiM_K ztmsLu9N;V7k?V#M5Ec9aBSZ~}q5n!4k4pFoK{aD>OQ@!-S4dp3SWG214#00Oxy}fO zHfqimZz9PdO;IPgQIL%n;%$ptOSJ_2YtIOZ(73RQn}=bl9Niv(F(iJsOY@=J*~(#B zHKSk(IvJBLeewG`vXoSfmb(ZpvnF>lq>vWP1i3$OMFG!+^{YBERAaP~oN*^hQU;%+ zy0#~O3&=V$-rrzt7utZXmWpQiI~(~+uHsvQjD!S|8JtV-uN9*xEV^_$Sdc9Wbs~tP zc1@Ds1f#f7iMFI}BvMJmu!@>76~WDUe4Im{gpw=9W8N-5vf?^>+QQJKJ@E@7uzr&h zbMR|2Vi+#X;6ee$;F7NnLp6TIWbqT7Zk|0gQWWH$k1&7VM%Ja9^maHU6ftG0`e_?$ zj%o^D;R$WQV^qml%5cZREs;Jmwj6${vfz3#Udc~N0jOL#1hFJhDYqtFRst?cKPV?| z=UFdl@lRqi?e#@1S;r$;^-e=BF*8eF+Ocx2N3v>6X6Q-CzTHz@WKft8!s#kaPPb)C zuj_IE|0BEDHb|m`WvhPO+IrE$Esbu7kzCQn(oQeg_`XQ2n5?+uWSNf534T}A z1Yw?AaRgaWi<{LZCK<*jdnIL+_!TDAQ%jS}hlVJA;ExAYEMhe76#*H& zC1y~*++fh}a-kSLkC8W6$bMCZxX?IO%U#}8BlTe|W_UQo^kQhO&1zVg{=!!$zPF)m zg>*tD;5S+5MxZ8j@p(`SDfC<6_*YEtn%S(~!yzqxmWDRmq;y?>C|X?MFRr-DP)sK( zrK-WwX5SbqetV~+22$vk@dd&YlgLL#=o9qicVY{vk6m_BjA@KkI28CMFV~?V;J1eH zy#*&=r6&&w%psQ_GQyo~^~>#~j`7PCSq6&IkDXCXK?cC`nyEF#$`aHWRxxGa8nSSBl!krSIoFQg`f-VhE zMQ+3;T{SGfUUA8i98MLjT?zEdJsI`KUjtJqp^sQ!2z%G9TN1*NqumpHM!XU5<^4v?w3 z6e%kAGL)uEnAnm&8u4MCnQQqn&pnOm=`_nlVV!8ckwFEPqO00EjTDK7s_8g^tuyled&CtRarF z_-Dbubruf=c8yTTQjjEXn6nW(Dsi}*lL>~!54M}vlI3PgiZK12wD`Rga8fZ$Ma?lg zk#R*eg?B=HSwflo`HK7o#vi&`F58+6<6Y=Az$Se9aJT z;(ReZXbm}a58a{5DBchrdQUwj3SzI4EADc7=8JT9ENOCMSxLu#H)5Fu*^qoggRV!J zM6vR#W$P)`inuglsYSn}aysO9~{a6%*g|CIe7yd&Bx7IhY_B?_7NFP=x;1||%2s!|NUx;9q=InDOOvSzo(IAUV) zb8f9uCzjMAj{3+b0K-C$#KZY656jq3O*j+x;7YEp)R`vE|6}j`!{aK-w?Dgk(uQ_{ z06{{#$N~WZY+-?b5rQlbB|v}$0tAf`V1WVwLWxi%YDyOxAe8`HjIf$jqEwAqHDc8i zgGQ(ju={9?61F1)uO%6Gs9)<<7}ZjYQoH;yV{k}di%>{jW6HTnK_ERDs_9? z44Gjv7?SZeUE|F+;EMuID%>{R?qh_EDvKSA=iD7=xcT;LvU?~~;X6rVri$CHc5@P9 z^Vu#AN0_NyMD}RD)QHs-55n7IAF`Bcu|0s=T@$y?e-z2B6+4RCbsb0SE~uT@_Jd#9 z7cse|;tZ_JFkc9ocEG)9qBD>!{xw+d@H>_8pvvZ}Rem=^cb_f7q!bR)w9mvr{RXLr$2a2;1De=sG;> zfoDmaj7~q*UBNm>ugAZjrOU%<){ZW2558_=uyb)WCb-isVn>m;e;VAUkFP(0+qW79Ki@6t>wxBEH#>G9-oJ^AA2v@F;ifbPbg!YW7WjAOE7vg_I2 z33Y199&M0u=XHHM4Sx2>t_Npoj@w-_O>;io<~DW?wRm~TPJMbR*>=bQ%w9#IX!zK0 zHdVGae$z{)I;`>RAj$w|;^QnX@zeEe%%J-;&h%(bvF*;9y$ly4d`T9oHvU6myqBjx zK6dR@Qx|~boZUV(8%eKj?EJ}8iBC*83!SU4!2!Sm zdXT(#!n)wM$1uO*cMG$zR4rqs+bY<(stD%V~3$M%nX5Q{yjseK4hEDKH&UYH`8;fo|=_Rxvqkz zWc!%=PfbmElAMyGD{L19on0NyNgkcK-hEumy(DfLXy>zCf;+HHwlO$k1pd7{Y$#oe zFZ19tM|c+#y<_T4oh$KzG+v!huNc6&R#u*S?nM_l(@}fewBHGt8Z6yk&M0Y5=dv#? zaOul$KH!_Ve3RDs7>@4V>H!vKF2F{O)hQNq_9s{DxXuB4;cS05*=hDBd-w|M!Q+h% z{OjM&v21s9e#5KPOOX3IP4;AaCE+}3BnR=h3pUW4AM{Qb{^b{ZkN#<&nhmu7;RXAJ zcjrUC_NP0I^8rshw2Q|hF#(93fDH~z6K=%|zi^ng!_}XFhBwAEos)s7Xtqnt{&eON zIs%)UyAP9%XIm!wa2vk;#4ndP-+Q_NYb^WLm3b}X2B4oSCbQh3&T=m(h-kuxBo>Oo?!tJ`b5%kT`+%UTar~bK;9VQ{e(X=^L zZc=ufX%n^?W7vju7vJKeXN)*~em7$jJ)N2{!j7sWJ0smu3^g7|6t@xBpNVqXtG;iY z9bKl!SEIx9fbHxy)vTR1q0N>Pv;(W<#G1)yGewzZvza2yWU`s!O}E$w$KVbk^cZA!uD&j++Ggca&FHjFN>?F$0 zs?|wkC$;KC*m0$1!&RLwzOjDl={o)J2#?zzt&x)FhPhAVW#^o^XY4p6rxhyylaq$j zrW1jFXlLO}b>?v8mu8NTa};BPySH?$y!7fU1sE{(4W}Ih;bQz)k$c|s7ayFr8*>t~ zrxQ-2$jwN0>X~zUHk(7|L^s&|G-_^mPW#>(ezvPOWWcC;MOf zmZNgf+&IoN_dAcn3^?;@UNCpsu4ed)uDwz|EbZJdw3pzyU#HeLKeEM!x5M27eoFH= zLw#!_H+>g`k3KfcgJC&{6Xdb>?SiJBh`e>XpawjfiGR>`yW?1_V0||IFlzp|scbke z@h&)aDhtkmYi^v1fgOJseia^BZCK=_cNI2-rZRaI)rp9HHC_T( z?CgC{{o=QWE_XgdX>W=fJhsITDPDg0mH5}|$ez}D3?H+1}XI7nc`WcrWcXX*a z^NcetKmOAD<<#5MEZa@+vj2XBW@DghfF^*{g->z{~Kz{{@=*g|BWx41kLSenI zLD(o_dO6px$ zC@c~Ngdt&ASSqX#Rtl?x)xug~oiHY>7d8qP3!8;;VXLrB*e*;8JB2HSUBXquZefqG zSGZQVUN|UB3rB_H!p*`h!mYvyp%ruLF<)39EEEQWL1BroOjs_A2rGn@!YW}@SR>T@p8;V=7!gK=F=3;yMc6Lv67~q!3Dd$Y zLhD-RdPTw#VY#qMSSM@{#)S#tO5ti@kFZzRCtNG+7p@Zy2-gb-h2z2rp;;*XS6Ctp z3B$rtVVSU87!g(otA#P)VquH0RhSUA3sb^QVXttVa6mXJ+#<}sPU>425|#_2!a8B2 zFfMErwh0r$c41PO5_Sq#3cG}>gx$i`!X9C-uur&FxL!CWoDll2cgj^L3<=AHmBK1v zwXjB5CyWW}g$=^R!X{x{*dj~{Q^J+PE@8KDwXj#%C+rul6RsBy3bzXLZ;)~di-bX8 zu`nbI3(JJ%!U|!fFejsaAS@P^3M+**!a8At zFe&U3_6pYtM}=F2TZI!sbBolEFkk2w76=Q4MZ$ovR9GR53af>+!a8A-uvOS5ObJ&B z`-B6+G2vFBf02{#fG{kK2&;uL;bLKnFe&U3t`_zP`-E$Sqrxr1{9B#t7YU1nCBm?< zR2UW32^R|Mg$=?+;bLKvuvr)vCWM{BmBQ7+wZcK+xX?68dlME4i-o1aa$!VRA*>Wu z38TVlVU4g>SSO4L7Ygfz4Z=p@VquH0U6>Mf3wwm?gag9%dz|t`?sZrxtP)0r)xsKK zt*}lQ6D}0i3s>Pf-eY{G6um^fKxObdCjF|Fh!#{QJQE@J zFs6ds)0j$fPM)bEpYxh1iA}d^@^@ZSLmuEWwPeC)>d3u}iIJc5nuX-amZ>NAHl~5x z2kn%+6z!CJ&1;&-D}1JzeB5W^WFguqd75Qf$$imI$&a9&lGuQ2CyUTt$$y}|lKZ2* zlIRyJ$zNKgi=1c7D)Jex=_co+y^;qQ(?jl_XL`wRp}mp@?UnqfG5zE+uUSVPXv_e) z+%oIQS$SrV{5tGUp6fHCc`WQt-i7u`o@bc}vKSkRi@_k;D|x6f z`Q*ne<0lV;{mH|zA4z`QXNt(E*96Fyd?rYi!2aZqeWrv=SSCas0sE8K7cC`wEmKAw zWlT94GA2SUfc?qWEmKL>_)Hafv@ucg7}%c-8&g9bYfLQ(|58UDmSfM> zk!KjQo~$rtko=3!q{&aB|C34dfAV;r87Dsl`;%uHvxVFU`;(RE|KwS){};fsjj_mc zV1Kd-{hvG+_9xGS{mGMHfAXuaKY2o)36kf-{$v#WpZo{|C1NO z{^UilKY5AIRFKu^|0KqVD)L*FiISJX{$vg8Pu^phTJo=!sUtCt#KEYnPW4)!OppWi|TV1M#**q?mCXA)!``agLE>`z_^`;%9} z{$xA)KN&Noi~Nh%tRg>dnQpSvGONj}(f`RsUeilnV@x0U3G{#RTJ(Q%p)u>o>(Kwn zcYJ0&c|Gh;-e63ctcU%{8`1yCo6!Hsn_+*l0rn?fhW{te^_mIt7TEub;3C+cycPB* zPeuPHH&~{CY=r&E&l^)jo}6a_yt%jo|k?#sl;%i;gYVfcTt8TKdd z^_oWVm+=4OjhLs9OVIzxJ7Irvg=JdErI@FXkNQj-8AtyotI_|-KFcJ@yI_CvZrGn( zhW<~s!2aYt=>O!sn6Hq3_nOsY8TvnYpE12Q(f`R-^nY?W>`$(O|0kP$W`O)E`agL; z>`%7A{^TO~fAVI_jFAt({^WzOKRGwgY#~44Gh4}r(ErH`#8tGDT!N#((nbus`_->`%Urc?j4w+37XqBqpd4^5^LP z_ z#((nn=>O!?=>KFX{6F~&{6D!C{h#~;{6G0muUSiWU>!!D4f~VN!v5rQ=>KFt`afBY z^$Pg{>`(p?_9xe&|C3Mo%x3aW@c-nWVSn;}(ErH+*#Ar5U*P}Azry}xKGrSdi?Ba= zrDY1q&tm>h9&VWcxgPzW{G8VmlZRTSg!~)&KlvTlpL_}SCntTTjC>vQfAa6>|Kv|# ze{vAxKY54ORFSu1{!iAz|C2pFQ$v0Q_9tIP|0iF8|0ll=`;)Dh|B?TI|0mPv|Ktsp zSxgSW{^T(HKRE*XlOIR_C!h41R`O?-X(LBre=>vqPcA|KCtrpCCpWT(vus``G>`!in{l5(Em1isx3&VW!ZrGoE3-%}f z3I9*Njs8z=LH{S;f&Ix-(f`R$!T*!jVg64(i}9cQ7wk`-i1|PHZ;b!sR@k512LDff z5&fU^TBeHp0mgswUG#tQ5ZIsm8|+X12lglD`Am#_z-Jbc6X^fs6F$>Gz6bl0zlQzE z`{4h{_hEnXqn3%2|L~d?@)6Ac$VvEr68i=Ta=p*Alg49`q{m}YB=!?J$&K*; zGHG(RJTpp$VSn=bus`{G*qLl$~WE%~h1)RFsoOpH7Q{hu5~|0mzU_)mVs zV;ac=G5;s`^Oz>G$YYwx<6wXCLD-+%-(yS$S-63ClBh0rf3g_+Rb&T*5ux~{k?lDE=IoP)%ufX_EuC+`txeorHEb*8Sd4$J=N$j(glE>tkGCLge zKk_KppA30S1$j97Ke+(*C%*&#PaX~XlQ(1jM;?UrA32WkpWFlepFGB67Lpq<|04tF z|6~~UCyQWz@(`^5$zx%E@{e8Bfo_HPsU+? zvK;m&Pw|*E`3a91B~OL@$%w~{lXESznS2rRKk_t>*-D;{{!ey$jadSI680xsy(XXh z4*WlP2KFtM=|4&{G`;&KI{zo?Y zOoY4!_9w6Pm`ZX1=KthE_JMgZ;@l=>O#Pus_*^^&fcy`afCkG4-;2 z4EvKy(ErIh(f`S%=>KF4<3BkI{hy3`%og%4^ndbh^nY@HpD|0pWf=d-7TBMRqW_ck zp#PKi!v5qjus?YK_J7Fp;s42HnE#RQqW_ck!T#hmnE#UvUQn*d8{1N&;`2g%s7Q_DJ zgC4V(ybJR`@*&utJOJZA`FZUBl24)klL`2Las}*9J`DSl`}j6vPd*C!lN0FwWD@o#n=t;955oVG1=#;5zX|)3 zNzDJqBQXCXJ79nEF7$u$2e3c+U9Z_freJ^aTd+U*ZS?;*_!#U@cEbMTYV>~+H~tF9 zD%}4euY~_6zvD3h^0(;!WEkT=`CasX@^RRooR??9*#x4fucZhZz6K zAHn|QkJ10hWAjWixeETD{0aI$`BTjQ$YK$e*GAlijdCS&(Ns$)Cgi zM@`#RJ5BrmUgZ;^u;Qz@^%>T)QG5;esVgHYO1M@#Jg!v!&XV{qWNhW*KU*q{6s z`ak(+^ndbr_`!K3fAT!opL`YeCoh2g$?sdHg1i|0 zpZpxge{uuHe{u}=CtpMVCtEQ8BVWh(PktQsC)Z*AM~=h(GpZpZ& z|KxzrG?SZPfATBv|KywK|KuLn|06fU|C4XQ{^Xaj|4054_9x$j|0myu{mB=w{wI&j zGpoogus`_@>`&h2H9h3N(ErIA^nY@-W!94aM*k%C;tQclM}E%c|Yt=zK8x# zeiQa5|AhIUeH`{D--rFl67+v^4C{aLPq07vKN$bXJ7Irv680yJ*F?yLus`X6{mK2X z|3iAw|HlYaPr z^2Zqe$+IleLhgp~pWGe(pZpa3KRE~fpF9xze`G(_|Kt%q(@E}$^*=cm_9y+=|08$D z{y(_~?*EWqg#F1|asQ9p6ZR(y(ErJU(f`T4(ErJ~SpSoi=>O!ous^vs>`(54{!h+E z|0fGE|0BPO{a#x#((lXtpCXk=>O!!us``Z ztpCWVhf8}om%8~Z=x0kA*$PuQQV zgZ;_-V1M$Xus?Yq>`w+^f3gz&pF9Zn|HwaJ|A#yn_9qX){Xeo8^MCSC*q_`B{hz!H z^MCS4^nda&*q=PyYudOzVnE#UtG5(Vw*q`iy{mBKe zKY0}VKY29lPaXsNlVRAOydCR5at-WHo(=nxd*_+;?x-$kIGx@Z8czPV^d!e9bcX1BJJQ?;U%d!3^%dq|@ zPr>~^@)NK>c`EErMqq#PG~_d~;I*;c&FcltYsReff{c~!$n256Kb^n%$xQ2MvyFNB z{^7=FTZdcU>dCk|u5^>qjY`)m9aFki>1w5`l&(;^TS1Dbg zbh*-{N{5s#Ryv?`q0)Y(Ez!54T}@0n^-sM;>2ak;l^#@jK2ak; zl^#@jK2ak;l^#@jK=}x7SN+*o6GrK^;#P`X^{Ql&#m7b_i5x=?Aq(w5Q_ z|55d?^tjTaN)IYMpme{|eM?de zp>(;@rAmjCE>=3AbfMCIr7fi=-c|Ll^tjTaN)IYMpme{|eM?dep>(;@rAmjCE>=3AbfMCIr7fi=wyFA8dR*yIr3aNB zP`Y2~KBaq=}x7SN+*o6GrK^;#P`X^{Ql&#m7b_i5 zx=?Aq(w5Q_TUGrlJ+Abq(t}D5DBZ7gpVB=_cPrhcbf?lur4vfGDjiq4N$EzV>y?fv zU8{7p(p5@VC|#~}snQ{(i z=}x7SN+*o6GrK^;#P`X^{Ql&#m7b_i5x=?Aq(w5Q_|5Ej@ z^tjTaN)IYMpme{|eM?dep>(;@ zrAmjCE>=3AbfMCIr7fi=-cj|h^tjTaN)IYMpme{|eM?dep>(;@rAmjCE>=3AbfMCIr7fi=wy647dR*yIr3aNBP`Y2~ zKBaq=}x7SN+*o6GrK^;#P`X^{Ql&#m7b_i5x=?Aq z(w5Q_Z>#!OdR*yIr3aNBP`Y2~KBaq=}x7SN+*o6G zrK^;#P`X^{Ql&#m7b_i5x=?Aq(w5Q_|5Wv_^tjTaN)IYMpme{|eM?dep>(;@rAmjCE>=3AbfMCIr7fi=WG~v@|5SQh z=~1Nzl^#&KU+F%jdz9{0x=ZO!rISi0lx|fzu5^>qjY`)m9aFki>1w5`l&(;^T(U#aiyD- zZdAHn>6p^BN>?jgrF4bT44IOO8b?zL@!eN|I}M#Uz&Pc=~1Nzl^#&K zU+F%jdz9{0x=ZO!rISi0lx|fzu5^>qjY`)m9aFki>1w5`l&(;^TV_q(#1*#lrB`-ue7D~gzQDz z^{@1}(xXZbDm|cdztVk5_bA=1beGbdN+*?0DBY@bTI-qo+(tf2ar6*)B+OB`4$CVycdQj;BrTdlcQ@Tg#Zl$}F?o>LdbVBJ? zrQ=FBDcz`az0xtIYn856x=QH^rOTBrRXU_}vC;vh3zhaOZ7Dq=d(n3ND?P6CsM3Q< z4=CNQbf3~aN_Q*WrF5s#Nu?7?w<;Z1x=HCqrR$ZBDP5~{wbE5eS14Vsbg9xIrHhpg zC|#(uUujF}3E7Lb>tE?{rAL(>RC++^ex>`A?oqm1=`N)^l};+1P`Xv=xYA8ZH!5AP zbWG`5rK^>$Qo2Iva-~a^4k=x%bU^7srTt19jMv|ay7k1IW@^q|rMO7|<>r*x0f z-AZ>U-Klg^>4eg)O2?IMQo2#;dZlAZ*D77Dbd}N-N|!5Ls&q){Vx(U#aiyD-ZdAHn>6p^BN>?jgrF4bT44IOO8b?zl%9~iXuJNE9#?u) z=|QCjlM<-(g~$om5wXjq;#Xw^-9N-u2s5P=_;iwlrC4gROyh? z#YzX1E>zmDw59Zf>_yx4uk^Umqe>4dJ)m^I(tS$zDBZ1em(ra|CzVbp-Kun4=_aKc zm9AGhrgW{+)k;?>U7>Wj(xpm=lrB~}pmd?qex)s?CuA?$u79P+l^#`kQ0W1s`<3of zx<~15rMr~wR6412Lg`ke<4QLv-KccE(lMoLm9AF0O6dxv%atxwI;3>5(gCFlmG&!b zDLo;3(RTeSJ+Abq(t}D5DBZ7gpVB=_cPrhcbf?lur4vfGDjiq4N$EzV>y?fvU8{7p z(p5@VC|#~}snQ{(if18(oIS?DqXL1OzB#stCg-&x5$UJN(YoK zRNAk!rSydCMcehS^tjTaN)IYMpme{|eM?dep>(;@rAmjCE>=3AbfMCIr7fi=WG~vTf2GHj9#wi!=>ettmF`ozN9k^* zyOi!!I;nI*=~n2%a7U&v*pcyt?@xOR9>Ul2E*Saf5_X?~U*F;eEcc zNJpkD+L5s$_ows11BiFgNJI0Qq7t0%3nuXU!V$c|Iw!#2Cb8jblasG|!l{wGaNh>R z8|y<_o%Y0iXO){F&F_LZo+9`ClvO8l*S zZ|h|H1pYkRCf9D=I$49i&8U-wsE36OPCd*27=v^-vcbrmgHS^H63p z(q`C~P(FO+b7bq}j|hN4HGA9zuR-6Sw|<_wMBDY$tY^(N=zdvKEEg>~ho2ENkm*C(Ws}BB`Mk zq{TGwruWceNTbHY?RwdK{({$nC|_vZxx)tW$_nOYzNF$lj<_xRIBl&QVKumxX-*B9 z;6wO|q}^`kl?CV98qI26-SHin@`CvpU*v%e&#}JbnoE$++DKdGX*rgUe6%6$GQ=%K zzH5T*84ub#KD3kxt~+OV^ZjeaKEr&3+mZG~cKEQ1a%4g?~Y7fFg4^USejtQoD z!#X+ zAt2-9>zkP;5a;kuu$;>?`N4!;SEa|n#=+&8@WJf2OVD1Hr1R0H^Ud;%)tj(w>+fBj z*&o-Pg>-j+d-C;0RlZN4d_mKe`3CCZCUv|_j@RS*EZ-;5{#drj&6BSu(Dq7^x0C*f zupsh-aP<2j=C>8~z+?Pv>QX~2%Q76B#oy7?&>pyc9*(_%beNylL6mz0&3E2;>iR{v zei3Z`JkoE5E*^Oe`6w`7%j}JGXl0v|=Z^5FbTBlu6HJ1kHYrP$}zT+ z1kPa}Vt=RKtVVrRD<4@>uw-}>{DkXM^N_}`)cJ9oUx+mKRqg33lIGPYC(kSQIlhne zu^RQEec+j@E(%c(4LG;JNPU=i`dHY4{xjsAZEAmvx)k5oCBE@vI6t{N#?K~c4xhz&3=h>Y*Hhy;P^GdwGe@!52Z@i#f!B=FY? z{d4^NXo`!`MrWJkSW_?g)v*Tn;6}DJ_?YJO{7f9jo4p;G+djHv7$4S1`(YPP@Xlc? z4WETLYiz$99bO%to53gE=hPssDM+J#w4_7GFnW7}{Z{N_TmgR71;Q+{*o*p3W+B>iUk zAo|S~_|2AduFvepdF)rc=sT;;{7f&dSpgrgYA@tDoEq5;`STRCq|Zm2qQ9q4I1G76 zcseo(q`O-|YKZBwY+qrym9Jz!IE`(wE;Yoy{5_=2V~>L@-*>=S@NrRGD~hyu9i~-_ z`Yc5|w{RZ&g*)DrpiCj=tC#bcmNeu05ndHuI=rOVjD&jOhfx2&z%}!q!q^o?y&`-y z>}P`M5r1zB<}1tXIQgmNnMG)?p(yM3;t~4W1MD_8NP<~ zJ`3?#?{iRp`>FA&0e#)A_l4-Yx%JNSaICsX>itU8d&>5CmyUcBY4f@-;=1&iW$6DE zcK>flSD{W=H=EGsSGUd2&}VM-%*MZS^#0`fb0??#T;aX%PX_TiSn?Vk?hn1nb?<1EClMBR9U_owYS7xG{*-{d$1AC=Gfzc2FOhDGYSCAe-S zu6v^#V_W4$ojGtEHogt^E#&+T`6)@m4@OcWC6T$AV*Ca1 z7r@`1=E<=lupB&-uan=-erjU_*jPH zB+AP+5=PsYs%O;WYSd3P%EomC%f+=rzFC^FeKpF#dix9dP8q@r;A0qW$=c!poa;l~ zu)K`-9O4z)wm=%P)(B5H^}H~D+hl0BZP_sy*JeGh#kD(G2K38pz3zPcy+i7ibDmF% zP4aeN4|jgd`nplh+XHbo$hgUT{{-_5&gTNAE%OM*LE57f_9|8O>Vm!Iz+Mb1LRcUt z%qL;1{^Qg$=O2~qhi5H#tq6V4kM`va!)EZAo=9rwyPGioXoml2Mqg}*4j0?`ueSSP zP4H`WyJ8r{4erK-?0?=4n*5B-BK1F`!bHTAb(cS@#O(o51G2< znfa(IcmBz^w<2yG%29{-^f&aevyn&E1LN5P?HhRyRu}9Q(VmR0J1^?!}GvfGy zqfjpTfV4*yD!PL-G(CnKA^EMBz zYax6M+LYn3aCDf*eJ17MaU9EUqmMw?l%Hd|%^0KV;9E}X$lS#I?n1lDz=pI1*DxpA zZRL`Y57Vw*l=BY9d0dB0^4y5y1J+^x!jH8LYzLq9AnY2&euA0vWB5$_IL2Mt86UmP ztH$KW@srZkn_!i<1nCFJ9=$)CZ=C`(w+zdZj0XsTlh~s0{qRoC5{$MupLO;ql zLBuImZI^MXbK=x&bJ}n#?8SK_ePlh_Uwwn)Be>r8tG$2?=rcy`1^Croz!zyhl$m=0 zTTw3|Tsvg9w>a8cJY9^r6!!y|2iK4M4e5=e{rI;!zJq%KE7_Oa`8?|KO4zc zjAiWKzma8!KLz!opF4`#T z@IhSHLfX6@_Za98n*P20_+_sp<(zwQzTe$rIM*4IgYXA#KR5Am_C5nklRk zkgpHBE;)hi5OsYL+acypoR2X7kEr~!-tr@DnH6%3^TAu7-L*)7Yafh51+d|DNH5TU z-%+&DI>+aXF+XUtvx4voShsJDJU_G?VM%D-W?0FXFbzNu!{-DGUKZy7bW#%%^=2GkhV9yEZ zzXD$a`)({odve;eGpF2wHr;`C7ogu-zGiIIza0ClMH}K6xK6dDeA)qdWcj?2)Q~TV zaSVQl|3aK@6v{7ucc@Q9)=?>+wm6a2=--E+&3j|8R|NTx-~&(Uct6bAH9}+xeoT^weg$B zhb5hTR5~x?7~}62##oYe_T$Qe-^6_6!AwCgnfW2gGRIuPJ&!p|BZ73DJ)!E65*#Z@ z&CN{8yni0htT#5%`Z{Xpbr_HkIl$lg+2I6GIb zK{~l}b@l_!)tBNtu3v7Kwq@@xBffjhvkqJ`oR9pv>y*t~;49Id%zf`q7T}M25Mj`r zkL$5)0qc)r8UC|YEyx&-W9#l4Hu-DDuvb2$=VccnAH@;0Yvh~rB4>}&*@wOb?Xv*K zec01==UMIloMl#H24A>`GsoK5-t8T%Tjj4U*qeSV59QtiebV*U+|QY5@AfsufqfbO zCZxr^+giCk_X^g*Usv}!b4q{j{b~Abwj1un;49l3==WG2_P0-P{0|~6q?fP!D%<8! z2y@$OCEJuie?&e9-*U=|uo1g{aX#k+*DznKUtEvB=i_|(ULKpOTcq2MxeMoZT(59V z;S1lH4k5oBmkPph+xPo>@5K0YryZ7G5YPB=Jm0k1`^4qAe)&hXO|rfRz$E@=nx8C0 z{WcC(CUvz#c_Cxf!v_c`EKI8S4JhCt4_YH_VLY+BP+ zYwJ2PoR@Q*XhrT$({2SaUKIt;8D`%$4e600>~93{_b}=?fa7cr40{m2i-KHhUpTUx zF)sze)E9BT>?NPM5I#QTWBJjy@pbOhW3F$lL7r<+7ryY_X|^9v!QJTq*87M*a>X$z ztm*Ggb8N`K-?BbwFUFd~< z%HEVZ!n!(+I*K2Ck3jC5q?;Wy`P ztmnKi=j?ZhIfYO+?=ESK+ z9D9#P&D~=;acU5!E+?JO zkMmg^kKs7?c8YN9yT}iHu}Py(a}L^@*swcu`r`m4j7GZo->L2v7D zAvCWQG&mRc5T1r_^J5Oqyfj>dES)o#q~UOSW`5lhPt91nG2W(?v-%8ng_o+(|r3sJ_Y9)uKm1`)KCw~ zx!*39vqj3ezbfDJ82cJ?%C|qtcRt#w+dldbr#*skCn{?hl$-VTB#z&}F$?+OT!j5# zz07suuQ@gfpkAE)JE!b*DEB@nH|;mNVU`(G<#yM5+`ls^+?P#sWM1LejC-!TwYj!@ z#2yzoUgoa%xUM)~%7}kLa}MptV+o|O1<5dODn(R8%6VGeFGYzFU z$5U`m`ZUIk;GQmt_R2NxOzjop;1K?4Tf0rN&3#15xDtEaCv!irE;aON^i4Mp_o+Nw zj6876@tKRUmNj!2XQ>K5m*L1G+vFO|f0)O0cs{|+W09T5=%y8tDX*`I$vMf;* zK2OTZdBfGXCdm%4>QTf;k`|QpBgSt2x^YFNbKKh>YFHmkbKHJU`mDcMx=RD388&X5?KO0Y_ zjp1`>Tkel=uk&E!y`1;yaGdRj?d<>@W8N74_?UAa@H-&u`!UdJcJ?rQk{`}zH{dx1 z?(N9BVCY)pYYgKE>x%jO3GB%99>V!0SWhH^PM_nvGmLRKAN52VT!!<|E;g=0A75qr zzI)*N?nyVHkI%#P+;uzKMm6Tn|tn@-z(+6jAM!#Yq)3Uji!diBORGL?DBv3 zdq?Ba<_=`PDp-+OfACY-hgvjp2!8v`1DR2b5ea7x6wkvvl-Y!9A9zQ{8$4DJd?>T; z+|$Nq-*D(A=I!Yl)@&*`3IEa$*6dc~s&w1gvo^hY!|F|KN9JwH+_8GoM~=E^+}yGJ zjon#?xRyJ=+lp(ljb`_joc;P$sFPbzC+?idV{RS!8`{~sY%}(M=~ElA>*ltRsrG=n z@YJP-#!w$0+r|1=DfPj2kZ4$uIh^OS{P0&Zjc0i%_oH$SpMPn`{qjQk2x;T5pnV;I zezVp4%uo{dhS^5=oCDiI75ZeA-6x&$4xqdzNE^tli!p>9jWA>2Z_qY%dhQ%1md@6N zI}h^0r`XWg%Az%!$E-@0UEc7r=F*#7>oJIA9hJWH2iy75?Hl;~2lt9fur}$! z@vd}7hR60u|8;|3A87;%dtSP%84@T|)6%&$;pwzH8}opEpoT!VgHfckg)^IACN2H2t&e@Xnc z;jbTmefS&4-zffK_?y6A(Zkt&9QssuC!HmxIG7B8E1##Z&B|>7-P|5?B{2S>gHx*XoE!&9;?P&gkwq~!~OijPcc(_ z?_5h_93SEHNzowd&goa~^GWOrTt{}|Jhp>&d(L1sX7`?*_!pw>9D#at_X}f#vrG{6 zP=!D4xx4k~_De6?5&LF$q$Bf|-6lW$IB})ai|rTT8~RMqWyk~jX(7t`ZKTV& z!ncrTd)&Zr&dHMY^{TmFT|^)Goa(D95SEW;N2;*aW*^M@8^|q{}P1NVSHen+^y;)isK&4<@l^T%UzFl$md4gXU4BYoqS*F zrhA~R=aM}!cC|7xS2-o5Du2oD?qd^CL5jP2z*)Xh~=Hxui# zB&v(xSujH}t*D)uXd0xqTuJ*kKT<=uGe}4nwH(=aBALsZ`iM-#>{70PM??dBX zfE=MO#6{-po?-qlPsFP@l=J47(ZgALy|l=7&Lhe&~#S%h3MAC?~^`xLz%;_c-rwMzGI^`HgFj zKBWDMq0ZB-*_-^)C~X1pHfoX{im+pe#DRi(EI;as=gmV~qb(a?OWJ=eo^9fFPr`M758Kwub$RR&oXa+RD$|XohCZs&eMqi38|iX> zW!Y``;*sZ&9@9Sz=^^cn6$4pYYoE0*(?mVFexCVmh<0S2V19SO&mS%}#`D=&&m}S` zRWH{gtv!%0`lIYT#qq6Qg{^*%@-VFK&ok%oq#fjO`7Y-1eY6R-LpP7Nt2~~DwEm6X zGv)DNSrFOo-hykuYb4fBb7(?@X(<*`4&w=u8T z=a!uM{3h~xi{zE}V9O+4k;=DgYd4Q4?_wUiX2>JougT40kBphQc{~E|K~$8h3 zOXIq1-ReBDJ?_1Wd0d)f>j}0Y^da`Ar;)F>(C=ol_4iPJ2T9)6{c+~})FD5c?DqcQ z@5Nj$`QbQ8yZF#AXS)86aD9(lKeChSzp#tfKQ-t2SL63g*Z&!=KP2}!dSBRa`G2&F z*FP}l`VlE(u0J>$ZR07qeneg09fP=UM;|y^*O6In=i%ZJK4X$c|NQ}bPVeKIY@_t` zoXg*?+63>(@_s$Xq#*Vj7|ykf+h#tFuttofd?(Etyc^@O^Q?twSf2SS+EVrz=xiAM zFT-CzIMe%#O7Bpl_lP|Pn2me}h0nAyO{RSe>Yy2Q;I2`7o}XnZPTn>d_}crETaVv1 zSq!@KIk#TC@HZ`Jmz6BTF8J+VvQF?E*Id*I_ix!h=qDp#%scR#>uii!BWI(%GAxPt zEatWxC++)xK|9}$?|BMs=R)M0;~m3S_Rlh9DzAFnxz}A2$+PWz7SdaXv9TF_^p=jy zN9=NZ_E- zvF}&0KcdYl+dKPe$HDd<)SesD#` z*ZZ{%OuGboLdGOBd3GJ8h6Zilk2MG4^BQlBICWQu^9u2fFVEqgz z9PaPq5YGAh9Mdqud+krN?j-I}I6ltbxYx`3Qq03s$UoOKSR2~!tggXtzUvV6;QnNk zWnY#q1BY;&`6;7a8d5{&s66e9bU7z1F>RSAQ4YpCLxuBx0n5nzKC6y{}aEoYQ%I z#3@6Z{ZyPG73T{0Nygc1^$qQz;;cs;x6EIsM%s8&;`MK%?p8iK%T%I&lwsjDI-2#5 zF&tZrKX*^MkmE-k?&rhDyvJ)|9rI!L+HayAv9{#9)SUlsK)VdkHc~&Uke-Kasu}$S z`C^<`*mfm+CBnC{j&R&Ehi15c?uLB}VgF=bi=>8bz`2Jq9h^sh@(990$6|~?8}@~l zr9HvMVG~Rp&$e8RXB)k}=(Ew~8SYhkSYOB^-)rJ^o>bSsI}oo23+87si~}E0fH*<) z(erUV4}3b`t?b8G)E~_DsTa|wUPfMMf7d7RoYQd*k8MNU^E#dCIyd1uzmc+(As)x0 zQM7f&<66coa}4ofxK<3;WdCJ(W`)rXn^6w5HSY69bHZ334BrO7!u0M|=|z#=?{Oa2 z#!b)6GJKY?4Yqgvr8|a(PH}vxJ9ctD!FQv+fb)0dU7w9yqhajieNc|?SE;-#Kw4jx zI{0_msRPzGs_?_g=l|Pkn@4N?dMEBC3Bj?RGBv; z9{te~^gT%92&8c<>j3STc^*S}G1loUFXuUYE^9Z_j61h@F8Qtd+we}^M$FAN;y%#E zx%fL4e|YwH<1zT-vjgL33*&a%bmmFJsFxE_FYY|4KirX7hd9h*f3Gv28a~x|_V-JN zWS{4KmE#uj^JUIKg3)2V$D6`=JjOYg2jz^ReT~^|dqw6A&P7lL+Upl6Lq5yYfae@+ zyIwl-Cho7&t|Kbm4-t>PY7Xp*=MpwXRQl+_rO|G? zRomq=#{>AyIe=?t-m~%6rG_H#WzXVzALPs2`)h1RCySkVf6anlvF!a5XB>SE^_oT* z-Fp2Y%N0qD*w1Z;IZnXWplk!inNNKdaXFvj^QEq>Z$y4p!v>s3@j33?xzKKy`+fs) z_{=xsxM{XXnw3biSpy!e*oAraKj_cV&bj{MHUEKkpTp?Cx$B=( zF#lVEvNJ65R5m}k*FO(=-<5g(Z*s1G(hjcwAK3m1xqfeN_WEv{vwce)`f@`@W`UiD zosXaPvxjIawB0u)517Zz>q39%3OeJAXFlImUxshAEEzr>*LK?-_XT0c5k7}h&ubwa z*4N{l4)Oi(%A7Ff%OLz}gfqQ=(s#*qdXV0+ z=#wv@ZIr9JaL19Jh>Rn$hT%M%{n68$8fw0vBa^ZF81}oTp4Z&@p7$kEKc}FLtYbbJ zxE8^8AHv8Z){)Ft2y;YZ?n*bKEi=DQtNga%dIe8q*DyTK-;21ih6$m+^db(|Fgne& zanig2X|C_hu3^|`bJLiQG-hKB!@bxNytnZm{ARvbj}1sWiTdR^y!TrTdwSvPN_x*3 zW*!bf`kedE#=T#(3p}fJG2iW&L;u%>`?j2a)Zu)trFs78=nH)2)IvHvIM$ zRS0K#r>OL1BfTcHb++l)nr#1e+jO{T`rOEF&kY!3PV2}V%lz)bzW=wSUOo;Rb1uO) zvH@*;YuKGj#O=An@#tgB=RPW*oO81O$I$ore)<~Jp<5?^Wj{fiv&T)$A$YE(&V517 zT`1@NNS*tPIyYg@jV`tKgY9c!U-d}(lL+?M5s$v6eC$noZWbN725EA<*4gKFB-N}DA>8(IoC8_K>>T@`k_Hga@31z=a5$4+dPK*i655KvB@9<6K=RD>I z^U!j%SFUUMy&Ss^P-Z^=>E3f;Ik+ZgetTh4_x;Zhj+MdB<`?iCChSL`E)Pb&8Sj_4 zCZ8SUJxD&s5W-q$@?|+Uisy8qT)!tWZOBjK$Ft9`jHAuF&##QaKd`>-G0#l@CfOF8 zHwV`lL*3-TANHU<^(cR`_W?_Wzkqsn_c(a{f8hFjzRzvL?mXjhq~Y|TrI}cCX@+%m zlBy?5>e=mMqso5ou}z`w*vB}x6Eak7=|0qwmU^`F4JGl+d(KIcgPTVPgX4nThQ z!!wr8-0|L~wv+bTWQDIv2l3nk<1+kSgxlu@S7da&$4*_E{$2RWG;NDL4-eZ0zQgo0 zPeJN29y8&qe%f{tp3lT{nL(V(w4S-+C!3zRgU@j8x9NdH4oUMF&c5^ehIqZhkk2CI z;|F2~)@J}d=DVmn+9ech%d{Qoq{n9>&b+T|)7txx*1V!kmbrlQ)Ni%To4siRuD2ha z106vd_==XDbz8`%RX~G;&I(Xn{htKvNMi9`cUR!6|WBQ0(cIdZH~{> z?u~k58oZW;ws)EQPMU`^+-tfXzjJ-=IpT9UXZSJdgW=6j%rgG=>^=bNVyYcRoNs;j z8d5_+w8h0p_k-ru?wpoodyRbt<>H)n6n&L_n{yY=Th2vZzM5l`Bzy|@P&r46;#uLp zVSM3Q@?e&&4t@&d<^7=pkdM#M-uO+QNro^EGVCMxT`ghzK!@;r58qk%&Z&2$;M0Eg zyXcuI-X~<6x(oTEW;XP>V8PZyYYqHIrBG=BY>74zWJUlz%m$3NH zviZ{YL;f;}G?8z8jNg6Xv1#oU^~^aL+iO1NWc|BXmQ$p@4?}$?F;CWQ@kGvbcn>Xt zZ#SZyJO{sAfalSl=5y$1KcBkqW1AMUy`t=l!)LQ^#r1!Jw#zv}1N8oQ&YkVi_LHAk zy=gX{bAS52?o9>nz6GCVp4|uG`WWo~Y1W;a56)>h?&UtqeF1FzYs?e1f5UTF_;38w zN50PgetGKZpJwZJs$C+VynlSBT~8nWel2||`!(`{XZ$e_fRE!muK;~^3CcUY4c?W$ z&~AhH)(ia31IQ=C+kP@beqg^Aw878qqTT)|`I#&Iq*ArPy_uHekK^%1^bywSx#)}2 z^BGU?i}?e;pUZq+EBQ1kpKNP<*2jbPMH`nQ?Zk!IcfZ-@|AjVGi0@17e(IihZVB(= z*Wo=?VBN0!Sm?AgsZ$e4S}!)FXL&ZqI)i}@w>Nzkui&Jw}gQ{FwauVuG6*uNis zj_Yx@Gy49Qa6PuK^&t1uPLOZrEWoz`I1k3Y;UlL&gL5ti`5q9@dk60>d5p8C`UA-q z?dj$N-{zaQ1^(C(Z{l*J&eC0iY}B1jpeq-}gH4ZnD(4%s}B=#rHOLIy#Q zwn17cQHywJ#kZl_qO`L+Mj|3jJya5@{l7owJ|}ZBHj(`QzkgoY*Ua4Koa=sr@7gE-t$X&{sef9W*n5g1o2yQk;J_@>EjS& zx)hjdH`8l#fd}hW@A(LxKL9M<%cC>RKCDB5rI>U0g78dm75hHHA8$W8IP!-}d>VfAZMdp_yO6P+OE;~qr1+yAC2!- zdNv(+f~B(2za&@Qi=&*6jX=-ruHG*GL8sdn+1caYJC+y1p%Q;SDx(0liWG@;X1pY$!uUz!!p~u*(>Lux)@kMox=ec*{(fw z1`|FpzcDgSiO)%VlFF&~FKk5Ze()A&CWMFWQ}eR#8a#{ou@A8Q9Ll};E!q0Mm)~N`Wp7%aD=nXF%j1;Smz0-_KKjVm zI`t0~b#^Q=m?Amw=VVZp#Q{-11kvGp;|6P6#^&+cb{leo9s!09StSTH$7&y~neYH5R2p+t>+O)m}CrKX{~Y!EZ4?HF1H~iWZwb zTe{^3FT+2oZq#e%{Gf19*(mBrhK=yJ(eijV6Z?!eKCjO5S9%|=*NxBl<#Ag+e_oOQ z<{m?PAFgy?ey^;RSUeMs1sl>@M-Rsj(OLoCrFvY>+LzPgvn?OZ7;N;v_q)TT!_IC* zTeEG~U+}Rv-Fu+8NM#qm*U{|BYVA!pWe{TrD0aJ7rx zUm565LAM{#O8gxo{x)|-B$>OwFVX1qYI8c}^g}#ZV(sE!@dH09dPiBj*i$z?RIyo2 zqF><~iXo9pn}HzIZv`!lzwCziVQwIT_!Rg0`S<4eO&3;wJR+E%h&377ks| zF&F(2j?$liIm>e<7p1rlbTxQrjjQN;C*&?LzE`o#_1#Co?-*-bt>PVUE=I25+GmH+ zXFY3(O*3*AjXN2+!vl1pw5%UxGg(j3ID3rIu`}|T6KLP)^|`Fm%h%ewOC+OUR(Pg7 zLLWL)&z;&|nzP^B%d=y9dG;;)%&q^syriY$S^qb<4D-&|Y&xd-@{s>+vhrAM)YvR_k^NIF7Dn8=7*8D!H4fhs9`GofbKlFv{aC+hGUdryZ zWlMS~n{CVH_fp2u)(<+MyMr>Vv*})9`2yj3vu&q2NCWGSS9Q)`aR2QyD#mOGjkp?(w}_xZN(*Lf~@j(^(MIGZwkirz((hdz%p#nd~UGM#@($GHn6d28Vauipy#9rTZo z_id(~Y=%A=ht(Fo?FjzmCjdjai%%d!C*KFGo~26g5wDM=zT`Q$q)a$|gEH-H*u68u zSJ4}zuKGSeZJ{H|@9n6sXHIT$3)ji5%A@5q^gsF!@@dEgRhvlAZenNQ&p5EN=!wzZ z?c1DX{1Q29)c5%*{3~rgQ+g@u`EN+um|n`(+OiQPWg3V6O3u?qjZOsCyZ2NERg4|| z`5VYzEr0d=X|HTBpGp3j_)GEE!e8UBzUZ09=Lr5r^LH(OllW`rZ#I7#hy0jf<6I!k zxSC|0taVP|J7!GSa&C?r)5W95u^-uf9NTt#^&1!)+7raIG41b6%taZmn@pTw&dJqC zMw)|aZDuh0<8k)FSJ1EI>g;qcPe-(;x%{uJ`@yf!zfRofU+dtP@K9co;v&tB!ni!# zC;cJzaP&K2S#~ySKJY;NbK|q)fr-oE!`u{o7#?i>eCSHc1D29Do`rZ4oOMrH$b;}K zL?6S0VJ2@t`!PfR*7L!mc0APYU(x0{e#>U$Pee~~ejV-&T?{>aEIqUDAXgQ794%U_ zDxLFK9` zev`k@{)J$?hMYE)&-mPrjIRpUzF)KJ35##94AyuwZNxtv>gem>f2YBJ>-T-PxA<%R z-URPNyL{K?Vq!PX3T!*wH6tC9et(<3^}Y&UuD3w9%4b;`H4h5U&xSJFgZbm_-g=3f zH)^j>Wz%fghFO(C?DnEO<9v7YyPVBPE4llunT*&*9=u}cPUUsZMfzjbTloG}_k}-g z+wJG^AWGl!N_dch2mjVwH2LLx&rG2C?f6_5bI7rs#8&W1xt&q`Vwm5_{gpP?>=qNp z^X?XSsj;mYUdm5uE#wkUU%o?ME;mYf&u%@$uX7A_KE;o&oymD3cv-_=?uW&5Fye2k zH*YFWp=0P-^mt-^!{4o6lf1(6iM@-yzZM^qmtgq2Av{OMdkm?oHNgsa7<97c(K)qn0{%oWKHE^rySCh=hIhasF8B;NxVcb~ zcbnE(O&#%W<_yk9SiXsW&e!<5Sth`1V{;KBrS~q)C>l=3baO)I)`9romJ-sp* z?(tzX-<^%RyTN3mL(ZR5_~|zC;$5RRsl4XeM;Q886Xp9?+2~(wJLMlaUhF~NOE&6I z$cu|DFD``_^WlMVX+^(yAw7~^%6^qo{cFbCcIveET4!qE0m{cxKGv42t%IZXb10Yn zj-Y&m<@e=A2Pc@=bQt_}_Uo@3`E|Z)b+F~O%AgHCCr7R8>EJVW(Yl^2pNTWq^(^4i z>7@UjIpq{YQ+E`0vN9;%m9pjg#l~4)DzCut@+D+3IN^MLXpj9ZF9*WQ#3ti(xOcxN zetl2ySJ|>@tkrmUCh$4#Zj?-FPT_s4_ggz2pY7qOu~j}}&L%j9@dhtWG-L0_pO@ko zj!Sy4+$Z>3;aCrjZ*K-i-QUu=jW`}^an#;}Tgw^2d~!H3L6Y~bjEIjby!4kZvYjJJR=bg^UYu>Rfu}nXYccpl-$DB`gW}l06W?wCfkIo6lIlbU`m51Y8 zi{qMGia5GEP$HRZSMr28h06?%!}CQQ-16DVZuCYm^;Pgr=kt`$qj*KK-Vaz>UrBk- z;ygPFJc9OAH+PJ@p*E+goO|+vEcR^M?rPgUAbjkz9r->+V_iC2uQ&!ck=BXbZay#n znikKJVGiV>=)LwXwYGjIywST?g;$?!maW8=Jnv)ZJA>yMpAIU4#k_|-$6;pAQRP#q z7fGDl-IsN0;jJ9Y-333%yB#Pqa;2Z%*23{EW`ffn)aB98~lEPZbX4t$Z_zpQ7LM^(f&g0oJ1vd^BgaN4mk_w4r;&I=x#-|;LG zyHV%v44)2CzwiKhtHgt5=+wP1#W=q$ca706-gATvRKr7+H+%ZE#=gf#`qhYjy{UdV zm$$Y0b&BQJSokEmp7ZFMYUx_!J)6X{drWN4Ud_}{zkaLo68*Z)w%x(w?NvN`TRu1) z>eqe1Db=r+gikWmuUX=!)vpS8)0=+vydLV;ttGHZ_3KmWX$=aTtE5{u2sZuv%{*uR zvlY74BfHYN#%6TO*pAhSV=euE;?wDb_GH!P@t#gJc;%O&?~=g<9>41?oOO($4$c7< z&Nn|)(;xer*zt2_ zk1*9839>s9uhnFTEm%w7T;RmqWAIS<3av5jKQb}L#N5vfy{th%@3){={(^SqKG0Mz zbrN13#l{J*j(Dnm1Z#il>9=4_n!=pbj-54kgm;$LeY$B}sJ#-!go>+`gHX&B*>XH` zp4Gqo;e*C``KGzR*pP7XNEq9#!B(`Fv;urpCvEpKZtRg9IQQwiUSo7Dh4bw=d!{$ z?``zk#d+E%nKta-(c`)kogus`^1nXfy{qmW zEN$3D@}|n50bUQ`PwQYV2Gn`SG|&9C5ZyhYwUAbCuIJW60_M__#gA=R4_S}w^8zj3VsBC!+>6hXeetlo)(_a7n;h3;7Hu)ENu5mdd zxR&;nJo~QnF@-OJX3?L4e(B-P&?y<{yXKDHq;A8GqVGoY4*44N>LhDBYlul|SYNw? zwt_9YeMtDESwlzf0@`VvSZ&MVH|F*xc0UC870FOf-I)nLU+P?7>CCWTsokYkC$z^U zy;#%^OyDyY1jk@y+p8hoH}DxvYfWI7*?$k%x3~gW+huOdX)oT4jr6PW>f7@F(5^L4 z(LP&y%+Rdw9F^#MDX?_!_&q!qu78G>WFR_-`GOmBN2oo|U*Wmn3BF{lXKL3$yB8=M zJBjx#cyeF51Mkhmjy8@3X?)l5a|%xzer|oPlYFW0CFtvWC;U86zgt88&yt+M1K(}t zoiXqdT}MHacq&|pner=jJ_{J+dJXtOGPm_F1eaO^zj&|PI((V@@oeNGzvb@loPd2i z!Pu`dtuIgXeBo)p(KGS+dhhvA(F%Tjz@<#Mroo%Oh2!6B9MP=)?X%-lpYPJg{~Ekn zOq{Fwe+DnnR1R&DMcahpc`Mtl_&l>8= z_Mh_n-UlJ9d^`ObeFl#|7#fOq?fuNk+mCN1dhyLMR_1Hliu`u>d6;{HQpP^J7M;%- zE5pyNAD6GP{2T^9-MIXFaBe+x({Z^kG<_gHp9#<8RwdBu%v7x(cQr+*8%)UEf$nQ; z?DEEghk;f9Oz}*v+L`f>Gj>&+J3fiASN`tHIdvgxq8!+c2Nw1?Y3M?R{ImBu zkLt!TH-2d!uSI9Avz#A`^&|fpn}mis@>#9~UiA$2k9n_(^n54uRQO6~o4{!hbpBj4 zC{Gc7ebt)Wzm0vQy6=hveQ!jE7w(E&@Mn5Y#dPUfk{f7v&%JDEG=1sw^FOiXb|hR=O}c=A9F@xW0LRd;3j{gxwU-RUG%Ftr+#Z} zxt-tc9Hh=TzrG*zrn321OtJaooZg)&ICY$J`~&h9y<_OF4jgr6Xhb9!(88EBN;rd$ zyX#4K53k@}HS*;(4yeDM)7Q+@MD_|N7W#X-^ADp>GYY9xrqC+>BR}=?2G4hqzX6u< zY4-VRJa;^;wmdBZ{>7H3)hXTs2R~;fXB5_htAn?Mc5BJmSleIgr<2WltHn>{XX#FW zwD6~ay0epsbAkq{Wom=AA0q_L4D<~M0=^f)Yd=CtG_SxrEkYlCYzCN zuT#19HZzQC=&^KvCcLUk>)i3M{0*AZ#b*>odAdHI_U0My03VeJbzO5AN5^*b)4@3t zcc%J%e2Xh9qfFmr*MGvdNVgJR+x6I>p6RT|LEiIEcy9cRZL2j9-`>xNhIqPnmdhq@ zuy_X8WPnXN-_`{z#Rp^M^Q^ynn`fP7E-*Q_7GL6?|CQ%M56R{a+l&1)o@dSYJ2|(5 zXoN5FfejvSerWq_pwF?#GY-L{XmWCHbgZpgKCl*l-Y1dmdIujV9(_EhtvkxI2G+Rs z{3^zj=??EC{?~(js(qdYw(?XYt2A^~#5sRt%c`JZRAP^U+L`wo@s7TA@VPD{c@EEy zgfDKsANtstW-UZMwiSMBEo3R<=Tb9%PR{MiyhimtBPKcTi=LH=XZzCcSbl4qIFNoT zTEj8V&3WcsUm5f#hq04|V7;UDZOsQYS2&qD0?*q|T-Q@aQeABHx}F9;TlQMl)5Pb7 z-PZNA@L7N5x}K4I*6=xo&lNlm$c=2ga9vLuzuSJiu4g8n*Zyc-&s;uR_FUJqkWY87 zgx=}9gx@+FzLd`?^NRD+xqM&1-(vo%+1H(a26uGueIdBK%jYNjjRK!IWzh$}=;;9e z8a|^eZq)NRn7_`e*Yza%O!2pD#JZm0e9q&umCt5ggglAQPny|p;&ar2^ugz%I^Ms_ zXIq^23D(jl-_yVx%pHrX_%2sjU!R(yDy@r)rsq}Ie(KOcg(`HgJUux#d~fhiXuW50PI{vL6}LV}{R-(Pcnhx}tGVj5LJzt= ziT0CdSDp&rdo`T+LNKJ$!{wuBKa2Lld4CV*HMAAHGHj=sb*r_n^n7ra{7h13MT_J9 z^|YOxnOImsA1ihoWX6)&!~p6;_Tg~MP)~PLsO_7;R{yHwa2V^Aze;)Hut9~yKHv?E zk;H;-j1s<=P`8OP@j%Z7Q?OKa5oN-Az zBr#nI7_3RSnC28<1sUFR3%vQj3sP+xVg4^L1?PTXj046?n}P8y3q$&&_Md(d>WkvD zhtZ3ZJsqg=bl~fvBR->0gAT}-)}RBzITB~>*UDP_l$>jl(+XODb2_;<-=&l4V_*76 zs1Im}TUj<*T~*9>px1xY>%X7vKT7{m`i}oE?vJ`Ih~|OxIndH8{S*CBk7mhxAT*!k(flqj9d5^$;HGo( zjXZ;QdF;>ViR0A|!AEqcP60ol^9jx-V;*iVTHIpb76Z3h^Q;iBzQa97-8-CKI$HZY;~_|l4paF*9NNtt}nIwjAxDy57YOV&~cxmBgy-NJUS*? zItD|>VCerX^?X|r{|#NVTT+3oKwk^=-QwtjFMs#?8)xV%o@Kif_-j4-($E*(e~>wc z;pj_S`Yxfaqw9qdx^!;i8Lyu!plfgFy40hq(WC1$OIIUwHA0v34GTPaCRK*?#G&U0 z9z73u{d}*4o}&d9z3PMp;Vl|;Zo>JgMvsQuN@!5Mb`SOtXn2_V$2uC|Db4_K?#R5vboyAm5%LGqGQ`zIKol7q&~(T0PXly;lG22^QaP>hk)~i z9?rXg^L5nU(ZjjP!}(+S7S2uJ{02BTc{slS&gCA?-}P|*bm^vc!9uEm<8W3VwRJ_D zyD4|Na&!sKP2jBc7H0!1`7V8U7dbmyZuW3~!S>Y*&TUnL3e6tQv%vYUv~%_q_i%ox z1m}e%IIE9k9?rk*8&cr>wuP6fWZt-v)ZTo5g z=eNPR#l!hHaK6^V`2`Q>|0%)wY{8LlKWGs52!=M;0xr%5&+%|xSc0?a{o2D>y6wi) z5wtr895miE;A7=8o!p!8wRiKow{cMMUf5=j!c4D?{By@<+DN{x-(%_b82Z&&px+ms*Zn>I4HVtjR)6@{KY2spPs`Q_N4Ypk`y6^t z*Jux4Gye12wR_;@kk78}`IPDV*u=5|`-J(iiOzz-2OQ6)%-4+?V4vZ^+7r4|?qHqj z!J2v4^UHl$Cs8&s&e|0Is*E@E{A585(LvI{j&(PMbaqGK#{v_X7Th3nxp3N4f;;V9Ceh++_fESQ&re|e5JB4SB zCH20|v%w|xl00iDsdqHb5+(JH`)vr{=W`gpt2Xqkl&)*ee+|49ef2!AY$ewB z%Es8T{RE>mn_vHV&&mXQ=aEzxe=B!!G4yHgt|HFaKy)C%-kMuyZ^#VoPH-<@J!|b% z7m`DP4{3LTy*_=Xo`}F17yD)clBqkT`25wzqXm=xX zvZd7PLto`F>VU_6_??&d6ThWPS_{>u{8wMyq-TGk&px~xTyhb-S@;{b7UJ;#8htf^uW(&MyC9gwxz$$U?BK0C z#0&bar=I{FRv!ss!t2qkfjraipq+P63HKyx0Mu9Pt=L|D3WpczQ}_Jqx9;J8j^Faz zD;Rqn4q4zy4|HDkX!=#3niqAeEpR2<<$nli(q3vK`tg8p&4hcuvd1%lFZyofamJ(Z?qSjzwjwOrX$dV>_oTjI8@t}@Ip9W4~)82wLdd|EbXOxTDKDqo4_e7 z!;fJ*+aDU?P9)ZG@oO>m%aB=K@8_)A8y!&YM;!Qp?l;ujpEUt&crooX7AyeP?W}7( z08d5dL81xzgu_4h{vUYc&t)Fsx7uw7zZ`upl84wB3w_{oJRb)Qu1qkWrhKXRXyLvD z+}DuTlROh&Zn1p%1)u7xlf8KLe-`CWftzT*6d0|1*YokztAfAx^Sj~45MzhqbK6S~0`B*jUcuwe>kGB1+?cD`@d*b7dz&R|NS-1)tjU}Az%`DV-wih$D7xFl?J>@8ew)YP0qu4Lc^Lyo|E&YP|d&*ad z_ZIF7;C_Uh{%-mIh~>?%`BY!ntI_YPC|_*s@67xqz_`NN-+k1R?R|1l@3yCX;)PqV zL5+PH^ZF-;cE?iew_}U3fO~SWMbWJ>RXXp!e@iqWlNdgxe;l6(O^;apa(p>e^ohUA zup7osGrm$!{e)|S+59Sac@BRL?#_Hy-ROdY3xVn_yQw>g84gG*)#!fCdJ)o~x|`?lYI$sQ1q%#@o6b zt`7lQa3rG(`2HSx&}4C~<^>G3kCfy&0jGt2M7v-}N1M>U=7jb)iCw@=K2$#S9c;Wg zPX1;ByCkNJ!xQC#h-cN*+aFwNXeStl+q>to=a=w2ne942xYL*9yqEgo9XC!VoIZRA z?hW9j9LbGxp|5IWqcQds%Jr%Kt33JCSouV4zeDaSzLP+DIS*YO4ljqt`2%(&hJM7a zNAB0>s^V>hfr+-l5Xy#7=AJipqDwrFQ7(LxpHbZzwo#q_l+{oc3#J%4=A|oxP6FvA zbJ#QDvx7hBT_c}sc(zghz~^0Xcf44M&KbVL%U9sFc+!e)xqD8^s9!Fbq`BMQwiB=4 zrd>3S%oF4-Bwy~*JTu__#Wl%Sx(>kZHs(hoZ6Y_|F7V*~)~n0QHN%)09Nb-U5onp~)qjZkqmot^)8tMm<{`GIkdN1Wo13{~ zPI_>fsT`mAn!Hsu|G2JkKA02+(-0lo}X74Oj^L+7X?^bF>ie-^in9NEV$t;!qo&*G{~@>07|=kiv0cpzSk!_DMwc_k*~_$Ld<3Q9hO&KQz(}& z=LzcmOZ6$+c}~8FJmeJf-;wM;k0dV8d|GR=DflxA{4`gPPjxYv^hEeZ;_QhFf64{x zBpVMk6X(0VeEH2^fVX*;2>qt^^IZT>4ZS;n7JO>7LpNZ?)BW;BSzf&zpCwEGmwB7q#}~bg{wH#kZinR2N&UE^aSb(x+rQ z4S3SUPtGpt;$lx1U!?q-(jDodch^}Nbjq(iEqs6_IgEi{4aZx*mSLYj?Y7dd?V-BR z^>y?pC74^8kM}j(ZhzV>PACo{u1QWS+^**qucOe{s$_fNHv3F*{K?>IbS6%22xGW( zB#AEkN4!ZgACr#T_Qz6Jbm+M|Kl(a4E1DJ0NJqkZ{lYV%t=LlsvOpgUUsOkTwAXol zS#@qIsncj>Am5}judgGA-r~RiFVCcVF826e_?*D+={$jA5A>e+r)|0P;@6bvQ*p;i zjjiG>aiNPlCJpCo3}gMgN4;?#9{!GYb-=8%FeMMcP^>9J*9XNGvqetA<^((~T%a&gupy}+7nVP%(Y3M&IFjo+g@8nIz=*+UxBls_t; zhW?1=+ku^=u8SdGN@NT#I(V*l+&!+Sip%{-rKpUd|dzP1*}Vc+*%fS=!-@B0)Q+&KJ4e0W`KQ+v}G zyv*9PWO4?uIMcdv?HM7R?T?Z7!#FG)Ox%{{{#1BcI%m+H?4(}i49i~N`DW$}y2pBV zBhyXi45Mw|8*MU)528=!cXm`?cFy2pgTa&^B|mRtgSnTH8_9e>j!g94O06g9Zk_=A z<)78J+WUo(4NE>_(ZLXM3eh6F9>ss z*F&%HlrNRftR<$1!efokdT(PpygmxQ8RNNr3!gfT=iu~##tG)o@~4LgPJ8GlA6c^L zSbUAjyxipf!*8vbC?1UhCyviw7!Tj$s`Gm>=&T}suFLi-+^?7b+)l%%yEZz5rQDo@ zDLd@2z^+wx6vm+Y@_kyX91T42&wm$75QOU`x6n@eDdWLId~tEoq=eQ~iu1?sQf{6l z#}!Q9?c)mnK-ZSEgu12}U^eA%JhY~@wU$W zmrlsNkS5+^|4VwH^6Omv_OSld_IF)t_*-*?veuKj6RGyX)!;W6UAgbP@ww-bQAI1V zr>}ZoX&w6~uC0ZAvHe}k_^iGzd;x=&nd6S#duH3=i2#38}&+KyjmOM-6nqs-z%VN0QD5(#ZC+L&-gj? z&i8ePVSCMt9~wKli)b%22VYCqMKY(-Hvgl^$3e#Pi}6}Gm)qqPirB58af zw0`=WaM=30fG*eg0U!2;58AttZ>o?_VIID@IlFKfY1`?%oa7;Y{2)GjEPe+a%PU5L z=lM^u9o2ur;Kf>0GP^T&Ts}uUx3W}Dg>3n5=oF2`d2kqe)(}^IijJtPI1etCt+r)T zzDNG=LiQ>wfBZXEG*;-{@xL^9Z2f&=2U$9GPDJ)3IxhuZ#Xh3Xy*vI%=xpZPNDFeT zAuqI=-wBKFKu?xQXn7WVRW|z6${^w4+nWu=JsVOUnr}mK&xTgYKUy1ljC!Ru)MRaF ziEPdCUGoLm(9-V~ZD`{ak9`4DLS zkNLiJHZ#Mv)1GA$x)Q{vku!N~!Q|&ai}dRa^iA=Ycp$rqN?!D(@49E8j&dl`JCt^g z#IofY6MtpkhWCbFhzwL$doiwE>Am4+Q%AN`Jg*k+rKHi#J*+Ls2l;xdvi`PgIJ}gN z4Tqn;jR}{(JWIcpmixd}>zOHh?T_quA-#8TfjOg{4P(0I6Xz5(?&}T=`RmXJ-M(2L z)E630wEUa}U#`-eU@Pb4N7#0E(oXs*SXYCq_U)sd?|K28#mkw(t3BIwFE-tj04L~k zWB+K{oi3V@kiw@5`M8~K4`Ma)2alh^p1-+<1h`HftsnEIPv8@+_KPS^WdTt~6S z^%^jA7eXJ(cae^;_7(8`J$za;IIHVIzMHisI|fAfE&TtX^0fT83^)86CLg2lNE z;lq1j`rcynrFWck@5L!<2i<~KusZo|aQdZz6Rsn;{+?BTz*Ssxt{D@D=ljuKybI%* zX@$MuoAhN*l>=8X&F*@}ciBO!=tG{R?P9jw4z``}>F2e(fObYk*0v5691Al-y*;d5 z><8|C-okB$XT>vuw^$xlSsqU1cLjUAx`%AO@#o?AGX}dj6__p#5+^GT*Z&_#bw~z%x~qj4CYUB zr565D`~^2~hn~@eGrfDfwSL8ZV$h=PR3AGX-cd>z@I!?!NFRMg0`*G>10#DRUpO z@KgC7l>Z<8f^0Y^QT(FygyHc$3M1kFgW#gMhMte+c`81=pgrPd#@LhKsVn;-Ws;F> zYz5;}5KPM53|x&(3FfMOf^jR#*?9QtZY^b-}aENiu>NT&qtX&j~jE(%63!uOkhb?KQ;6fbNm0+iJU#S zZ`$@p%AeVGg8OHlmoY9Olr+G;*s3-fV!T06R^Bj7vyF#>I zq5D5XtInpL4?g;S4LY>8@Ts69NGS3AoNV1+E(q!jAU-fgK z#ar^f)T^g?^Z)LFm!=hm6?g0j7)8^7pTE8D~GYwfHo9r9G`fj>re@*5R#=uNOU z#JHlku(x?gtv3%jLgSB}w`%XOmiR{Pq%SW?=ZS^1cldqam(D{*+j+=6&>%Uf%>lsE zxHshZ;yfhwn{ZFbt?M5QkF~Dv=JIOyHJ2VqH^UiDBfI{wDWbl*Q1=6 zXqtCAwZe}K{->Q-g?WJDTQmPnx%hL-{^wrwRJ87kY!ydJzAMnbT*AeXW?S-__jm_WfwhM5b-AuB5>28_SdirJUnym_Axij^?*#T=NywFt+>jK`_=r`yh?k$n%CBKhHDVZ663lbz?Q2! zp@(&$KS56lp4K8G>DWj<8~ID|=jM*mGu>%g4v)1i@s#Xx8`dS7OL!}JDn?zfk+*Gz zx9?!bi=GCy)ul<6x5lq(PA48|u2m9~^!IpssO^h=`T^_6q1Kp!K37%783PjdJ<7$e zYIrL>Pr#q>uC*`*TnlesLGM+jdMhjp_&Gq&J~@^*5hZ{Fiu?LMKG~bHMD4M>~-V+2-+xR2l=r@o3pGmBDPE zM<*Zrehog#$YidnKIO`qS<+3$&ME<)+d`pp!Yk8t)>-9|IRhqu= zAGv@vIM#6#vmLIsN%Wca(!=Gzy<4z>A(|KcUSkq-_x)e&x)%Sxj8Fak9x!#c(`@u* zV~m*yVFc-^h3nx}8|7`bJRF}VG55tsQ+^fY6D;0(_A2md;K9Y}+v2j6XH)rI$$r0^ zt6V@k^xk{FY#6tFf6(>a`yvB(7tMl3?$Uzi?{<>!#AnsB=w-}!ng0AS#Z*nr?p?>X4z1>weiO-@; zvXY*h4?aB8dq=uuA^>m&`<(io^?NP4 zAQ+XvQ2Uc@`<;>TI{wW0g*59Vn`u9q_EFwHr&vnk((4u{wG+G}Xm=dG;~3GxGw~py zKKL&Fegd9)_JZNzS$aRXIRo%4zombp&})B=dk*?Hj`7*eE1D9l*-=Mp#Z8?WYua+> z95;?NjcooOX1u}2Gu|8y4qEs1a}5Nm6ZR~Y!yIfh2XYuaZ7XT}Qcd-Xnl70vgpt8SN6YT<{JKO*1&FS<;%>8MHsi@Qhq1j~~BKyH?KoV_OD~6!e3iU{0dU^&#DC z$%!fSZL{!PZghz6VHN{?vII|*Vu7ooY#hTL$YpF?032R3;s*< z3(=eBx8@fu*h>pzi}XZ#a3S_GS7UTK?8n)lVm)_ntgCmst*80Lh{41zi`MmQz`g?V zPh!6fW4<__gZb-iUa_D23iMRO!+FK?@IYgPzxGriIyG)E#+2?G)_HS{0rJz{T%!(I z36^;IOZ%6&5`A*t99kmraP@cHs!R=e%!5)$= zyb8628h0INjRSr?PKt?@ za4@+yt=X<$h%c#ZK9>&97O1Uk_8fSWCFYd=$nVuI*6)r&|M;{*Ipr04|9lFcij9}? zd*xGMxys1tWuHuY+2$OmIkVaAm6L14KHR3|Z+YeH(X;2hY58kjd7N_PO~}sV<6pLA ztOt1ed()Ti3T?te^tkf_s}2oiu~D{3@)pDcs~g+P_oc}FB_Alxn13XGLUdzWx@$LI z6(3iK#h{zdYCbjACD0X>NrxhFbPW4EOmfh3p6T}y^dX;PY|Gw1uQ|WlTZ}XI*Ya0? z!JNWD!Uuo4wRc?KFFS%4x=XWG>#opyE@Oc{NAQ`=-GiEqSRl?&d^5l&lqwnw0ceeF5+JX> z&dw-A*gK1)PkFXHlYQoJ&RGV@8HMI^=6oofLw8oTA62>fy=xY&t{~>?bIuW~6V$2V zY*~bT(`UZHy%+qI#W))gi*V=S1-VG#`tIv@WKPHPXmEYbltV{(qP)92aX~JcYcGg4 zI0)HaiZ>mhab~c z#NrbRk%X~v_%=~`zEX20&7E{+MrSNPg+FHPf;-?vYk8V|yG*w0d2BBB<36ij{K=x# zJ6|*B!~U$FSDrI|^-e#T^I@N%<5x$onXvlBbN;)!0NuNN{q$8YGd{}qH3GlUgFlct z{M+qVQoHEEj+96Sert zpWrJ+yXFT2jXcA>>IRL@%B0^GxmrF41p&)59RWRmVnE?;Ns2{iH8I6 zVaml?p>`I=V&p0xRvt`PK^(er@z;yI^L@E={4K`DZPD>z7C$FL<@&E=97rIeIQaT! zTvmbaXNLZ8JW!p19xlG!jRBX(w-Fc3E2U4;Z!_M4%ZuQ$TfgI1y?D)kSGV`wZFO(D zwIgd;uY#A;t@eY8{OK*Hcme$M$D)KAi?GW`2A`24p8$C$`1@q;oWgiR$JXzIMJ!JP z?(YrrONZy>L%wP*`!TwpvFyLpJ?060?|uJ_*aF=Ob*ut=D%f`a;aL-RtLmBdmD0jH z$(%=@t@tjhPug!~&-;Tc`=ly&cd|$a9)Hq4$N%>yXJ`X=it26_!4uq}z!IFDfboC_ z!`%rd825WHYJjmA7`hkE!8l6z&@TtxH|qEo@J#Qvb~w5F)&%cX58goFwE|D~t~q%7 zTX>(#Uwd@E56tU4m~neIieUcCgQ<6j#(^34VD1P^(fI~2I1juLuUZerXb(m$FluRk zzGOi=txf!aw%<|Q!*A*40Cag-?MvqSa@r1NjbXKPQFHgrtW&7nC04%U!8@z@Jn-b> z9)jLRV7#*xFh*DyH+V4QuV(?HfwBaC$Kibkc&m>g*p&QEoyu%HpnQWQe=h&v_gm5T zF}Cj!^sTsT415qB$qaB?xvvsDKEz*Z&F;zH!4GWUThxtbIWtY{q4~6Ac9wXVQY>&r zevpNA4E2r9fS=+>>CIaf*0ZV)to^C0{?NI6JgGX<3a?Tp8b?m_Y1Se-b9v?aYJF>z z*2I$B@j#h;sc?Qr^ZeAA-9akH4DF2kKlv?~YA<+is|{;PyMvEn?s%$SVOPFm_bXq* zkG^F5ez<42Gydv6^vlIhs^5>g>+$W1v$7?1Z>O&OeulD1C1uknQ~ad-m65jWbk-KM zzdD7oD=BNDtjTM45#{n}$`{vqgXXBRrQN_w?XIKjD#~6uure4$JasL9?flKeyHsB59qy_N5T`$Bh{z$_*{H@);q`H=Vi`=_R{?3 zx%-B+Z{%^3vnBK={G^*%^<&R)XnnQ)^6;#N?yS+f3bd9QfTPw;%7Yop-I~Ev`jQQ3 z-6Uw&xrXA|5#`f0+CJ*h>*=!LEV?e3@ zSh%Ww8^1S@|FD650JYIMh>Eyuk3VvKWPeqBj)g~WoBV@`xf;GJCR9Ej^2i^-@BR3l zRqh|Sh_}kg(R{d%c&q2_<0uP z`b<){ECEdFm)32gZZ&fcevzUi0eg10xng`?}+@#qx%zv>B24R!XRPx(Uq?$7UNESLWkaNWHd5%^wC**tjU z=UU9=w{*v?ZN{t~kCFZGH-*0reb14j)W7FTXU5~wHDXM+jxZA%kA+qfyJ7!k9VdzY zr{)xH5&hdRx0@;ZCe~!*$i$kGMUQx!Om*u_^BmCvY|YWys2hbo#h%4n_;6kmBPKo! zJS(Z|>h#B_`sW1>qWm-bM{T?^Sc<>QLh~AOuw1+xp=~ELq_>fVi$w!Ig{y$fxOy?N z5lvy9LN0%%epAkv`Dbk4Ir*f^9`E_!4E2LNg>M%6D&n%|Tt10C^hRS7G_JE{n%DVr zf(FVyqO3BN?RpOy(}Q}aQM`<#xzhkT_uoc354LnlF3JZ{o`vQI&W1)q!^g-@&qSAG zsazVq=L39;{8Ddp>3r;So1sg*Qu&j%eC%FDx;iC4^e>ISPq&6XzfX$u{H%51pSn&{ z9Eu!d7vvT$SKoSGkbWVLb&Naz{cZ2#PAC0|2G##IaFheGU{B5^F!r@R!5CaJ?(E3e zq<5_9{jX{#yuU8mlgL)xJ?811<`g7^)-I!`#bnxoo`W_8qS&iFJ+_oU53w8PFZ=nW4ZiWE;9A~{_M92 zpH!fAu(sTHu}S4ct6cS~(ww~woQ^YE@m4wFqFxnZqCZ0kW-M& zZ2p{0i~nxzNps-`=xba2Q!9N*SG0%wGWOzhTQYbIe!8_N22 zEA{ipx&3t3PI*41Ts)ebTS{N=@Lcx-zAgA!#%}P{U3Rs!5nbwA_tC}GC;CqeV)ty} zc@p@^sf8x_5z54~hQkFrn@?~qM0eq=fImyW$Sf6*Ns>x4%tn|F7! zi{6O(2KLYR+{x$>b2M<%ec;lib;xfCG3*ld(908(b4|?ebeBjaxHf4|8XN7PFGt&l z)YqKM(I*%yc!sz^&f*i@lw8a95}Q?Pmm$sqb%g()xf@qXM(RYuZo#o z2cCnkbGpm;T@epsy{hlij=F;Fc=(y+Zxu0e6|{(ltBwzOI0GL3)Z?Mn>Sgni`5BIf z@GP1N@3t3Q-4pv5eTr}20JfP&^Q=tupm#oHbBSTaBk{`c$Q#gp4ZN9ld1+wp90QuT`W$3=PO$D;wi8&axshS{H&+&@PzwLd=w|2ZbEIf;G$ z1U_mp@~KFNxVRWr`7x=IdZOnM>Q+%#^YkJ3v{m@qS+gEIZY`fdP@BAc)~s2h zwh;e1-{@rXhWw8mU!+$vfE__+luL=tvwk=}CmB2qf8?i2*Yn%p&lqS{S?wSG#s#y7o|I3>bnpHfXn^O)uqGe|6W^nWTMOEs)%W+oSMt?-M}3() zFsRRbr|NR?k20el*uMO?U<>Yrnv>C9ZB?$ereE4>9IXnjub`}I;zD%PtrG~pb|oKcakczLBu)8LZ2wV=IU*{B)k>ANbGsn}ipCv|UGi+%U0 zV*MF~>)>gSNp%lmeP{VdtAf!vDoX_PL0KS{~vtoC*qLc}SXiC^N?Y0ePI#<;hUGoRCp27UVy#rZguNylG*RC#=zF@D)7gBD9yN^xr zu<}&{e5r6%yTgE~+`KV6RtAHaOVoqQO9&zfKGGSdr&?E08|l;T$j|ANDNk`Wk@9+Q zFTLY&H``8qeMY?I@<5{Y4#7pSu-~eGg==?i?%sm_RjIA@U7}fWUAcGOOt?%JEp|>- z#af2+uGA;#9md}yj*#C{`6&7neGSmM@m?uth_sRuo}N=!DVXS)^eyaHxdJI@H*uoj z+gMX4Wpz%u&g}D3{&ziRKVNu@U#2~Hac{Y4uQlDDBOm!#cPB^?yRGn=^n+)b!)k1* zY8|ipD$P6QuYzwn3y?yl;TRL{wd=h7?$D*O2Fk*-U&S)TPAXHJ9nQ^*W&Lc~njMO~ zSO`BxmhvQxy<9e@aG&Lg)(khtlfx}f_AoRIGd#im`WhJ}wU^O5Pb8P4EKhbbZDqr^ z6{cFA$i}PEbrzGr`}G8m3>N$*!7W4CtpTVVKWX~Re<{YYr-;0bgXKO3IS zC|qLYkDX&G+48ppS2~o2$M8?~e~YOz%>zD_| z={;rAty*JSVVQiG%Gb;GD4*0Xl(TeeFf=ytXV#aXReDp^$@{Bx&mDD5j0KMWf5ubK zL+6&_soS6{0WQ78Q-@pq?k%3$0lSba)OJhp)am#r7fY=YQR~6F8$-C1 z1>|PIFJcB$K54tkpb6bEI`e-iCab6K-eR)(_!;>s7n40{;}^wb!@=YKMohN5=q`!L zZdSkOr(&|3_`bC<+2ByuzZ8>Q4UEmjWM8*!Tuk=9>_PToW3r`KL~k+K*d%dctBuKs zpvsv=T$U#0uIh?$ra%HYh zs0T|p!&eRRY3xh-=VG%jfT=dp%}1f%>8Fd$eu^LQ_g&3eD(j|eY&-R(cvZ2R$~0$r z-z%F;ncH`*vT@r$i__e->v}rB*fe%)OU)^~srL9>`L+uAwvshDKb{iaN16I5bB~0v zF>D~2W_(C$o~?HYgg$O)sF(T5#Q5cv$?;|ly|;Mp&+uHnX?|tMJMnDr?|YB;er5XJ za=f=easdZ3-yrY6#e3m?(3a!9a!Z>Z?+r7)xc7K(Cur1oQX22o;&bm5U6hr^dn%i5 z%Zf2f81Jd<7q%>bAL7Lbc+t+^=Hk5{S)Obu-h15gq%__;TW!B0-updchxqBodpla5 z`0-v~o)zQ0mx-f9e`&m@cxRZSQStK@;yu+J`Xye4@t(?t*s@j8UU-Gw`E!&(hEJiM zhjHFtv8V&DE;xHQJ>5g)OA#U6@{|KG%z4Zv_Q<~`8k z$C!8Vdvh_S_QAA%E1VT$4hCn%n9{GM=$6Jbjc0qx$3v6*{TluK*N%Z2+Z;bT@Ea#D zkX~%rZ;&&&F^{s|>XFta)GnINMkELMkj3)%>1>zo04q<9=l*=n!$Ln&ZhgP*oUcx| z^*V2y0)5ZO7QuZ?S<#PdkRJhW<$Y#a!+5q&Vtg)^4)5(2KZZ%>Nq28IWsC`eqq6t4 zHUS>WGg02B@;`OGI$T~g=UwvO~!`BC9~JM;~Laf~fj-j8yW_UVHrfXj-2Q3h2bsO? z0j&S#b&h17=uL9o5c?G8Dtrx;tLh|7}gg()6?ulzN8o$MV;R_@*gU*F2oVO~9ZI;QQ< zytWt9_VxJ7U2Ed6bXCS}&U`F{btv-#hfe~2xY$MgkM>{;14jRn{!8npz51t6KlT;% zTfF+mQop*SzM~KRcgdd!r<1%khtfv5QhuJ4Y+X9bnbV!sUi^@3%UVNw)Hy)S_wZ$$ z|3F3&-eHt%>kiuleZL7mcw0ahK4O4)y&ZiBreJL@zu;T4Gds@s`30{CS8!2&!F1}> zp|f>H@56f$q%-s6lb}I;9ZVhN7o`4M5u}-aEPIwagYYem58^=@d={U!X@0@Z@()S& z;DRsb7d(JpZ(?m*@pc(~nEV3xtbN)Fcu~%?yGrUP&p)cjSr;0j~mtSW}Nu6ry zNC*5n<4WqpsN>FOIee}zsiT}_cSg(AxvZp)@{rv*Emvn$Ngd@C*OuUOUP&G04cC>_ z8CFuKjyehP8rjNUpX!zCeT1bs8uFQ?IT}khgfjMJ`~I(#KOD|?q!Su%rpnhMJLyg& z-mzTz+!RcJ_nFYA#5$HIgKWMPy{HMy`ofAe>nnnG7P>n5OIVvW`5m-96&=gcM;4!_ z+(^wk8e-b3BsY)#4xu~)Jx(V_fxB`#Tux}?q2WE|7w~)}&(&VJ9#4S#aDE3l^eir) z$eor6^eq?q#3-NgiILpR-SUYse#bhebob}G`f@oPiZk7vl#`%Cc2HNjzNe;qea}4T z*)R*g?dK(=A%^sXoP-Y1Js%HG)B_cGqG$=v31d`_P@YetDX?0Q-@|CymfXTFDa>wf4a z>1HaM?~{RU#;9Gatc1^w)SYg9!F1%~c+rpN!b`B>6>Hq^K0DRq4O9nHO<#Kehgfc< zeC!GEidd!VC+y*9e>r@wqI_!5_i7slJ@-r2dNPx^qm5iSzV{7=cPVzLip*NR5M8A2 zym{XxJPOj>p(U8faKE|_Yx?g(>!Y+&&Z1%}$w2jQqfhNGHzj5lg3f7$de&sMZ>V~* z2i3ckI``WCCF`v1Upe67!(jH`o8s_^y*!--J|14U_Zgl6jtR;e=u0wdO59RtAQu1} z(Tf{$_2f1vPeE(BRh%EJOZO{W06n7fXlNH6eW0Tf8J++v!BFn3_SJP4MR|Po@^inS zUQ+wo9fci;!FOp0@<9SSzz<6Ymr-B$jxQxIpgeIs>&CpF34Vp|Y9o&hII@w;wWbpA z?o0YtY$cp$@2K}i@vca4?Vx=bXAA!WeQrNoZAZWl;d?fp!f!+gen)!vEr+I0k3&Wt zehG`;;LYGC*uw7=i=W1B<*t8%{i{FmLHrOe_Mor7Q5IkizFr?My{2wmfL>#tM&8Ik zx*fDmE1V~qv&b7blIhv#&p&A+9r~vim$&d-v1w)8>UJ94=1(~>(rw{75?EuwLA==o zo=9hQ=2JRx4bNlt+4lCCa`eSxt;;GOUp6d0M`Gi0cfjj=DQ{m_5#$)31MYFJevUak zzG*GLb+3Dd*mBBDatp{QP4nq|uy7xl;+!Ga6`Jd`g12 zL~9OO%hcROa~bWaTn>&ZtNOGe5H173&%`&31)3Kc*u+2)*7lhnR!IlUJTW+pIEeEU zv{j6)SVe23!oMswZMpC_@gcH27@i8ZL-WE`Ej%UKm_wP(c7Bp4%cnicg8jt19uJ*<9BiN&$YS`c)mp?sUWm~4Z*3w-kzGz*+ z@MlxG_r-_)iP%^&7aqIWHr&%X;C1}m>-Zn#|7g8Kxl@bbk#Jwu({oT$e1_qlcqc!v zdoOl@h9rE`eKS?`C!RIKOZr~f2E0iYo?s~-WghUH-_-lDMwRrJrTj5$UHFNI<>-BV zf-_Q_jet*icRr~;*{^UM{1QKPf3L=mF~lNKbU}FZk7!JpoclSxs)~1-%8r#c_0hxH zyYE-Hoj&}w?dX`wPlwNXE}jeKiFRz)cqw1Do%B5w#ykH6mY%)Cr}ofguXssl?FC~1Jmy^kv@aV@D z|H0JJ9)NIld0X}9xcYjZI?W$f1cUKKva@A;$}f%NuZ_PJ{^Uy+^Vy2O*?8_Z8QNca z3O@%8af9cU*QtEpd4uePxfx1m^sEN^`U_)H4R~pNC8GQG@kN>!mczeJ$~4y2LW{rm zrZtFx&{_#T(g$}&c_D36ZgLw~r~(75&Ym+d7QQ>pGD(Aa{#wa7Nm&obsQ>LEI+8cQ;oep zQoPbGyE48IQJy8A*jKhV1f6I_F59KSD=WLu`NZ&ypyJiN@Coj2Z|-xT?exNP*p2Q5 zYitdDrDBf86!$mt*T7$bKlwrV#YXrajfeTmT9d56ra4!EFP~|AXFYXQ?=b4gKgg#m z)|QWO{$Vifo|13lxqRyZe3zg28gi8Ft$Bz~;NaK1vw_9C6E%;h2$&-+<8I1dJhejc z)voYFuvlAw-m|pEFhIYxe%8nh7MlAhCUIk0Z~LL&XYBUnt2@9%cO*-^)5`lGPGhXv zMjgH%S;*dak9ptwjjf)YuMppL25d89eqZRBY1>^BJ`O~HYUy_hE<(q=!oL=SnPHa zGd%X+uusWaJ{5TnkUdTSuI>iWSg+@5`#orsj!N%FV2dO0e=Zi&osK&oJJofv3v>2z z%w~HGjN=TCa{2!tH^nGnzEEhhYTttms=d~QMy&FD4QD-Feuu_@2=axBmSm zM_In>j)W%eR}p`t&%Z-A^{$HkjI9yfMS|>f{v4h&&k1uhv>&tpoEI3HLw&8-ll&ix zv&!!Rj$$aml@4n?L2|kny49a-Lb8>-HP-02c)bXlQF(QI8hZ2nd^h}ZFytpyX3iS{ zOZP5)-)mcmeYtX#Y2QE04G8l^=C3UB(Tz1m_whsW-5O_f|BX4n%;!s~IfWanPHpYJ z>buBY{z`jv^5dfEK=8;ULSK$gG5-7t{I&GGHl@3ArWM|Ou;+uF6|-2roMZY8-~B2W zdd@g*V539abw<9I)yMhR2e!7d)c5a-9$kV=+?dt!KDCwd(N(QQ)#A6c?xZnMe5{3sW`BY@ed5`!KjIt3 zd-U`PwUgc)E}p`hM)Wnzw+Z$20?uCV4{zKWc+m!n<$F;s`)poO5%l-?mcRzX{1J4P zdDYL*S@}~J2T0GA3;r=O-In>@8J2d*)y;SMYMuq|(g8c(=NsXt#&h93(DOTcAn$+M zd0EZ!iohS|-B_-3$U!!oqpi4QPT`LR$Fse8&6fRjy>KLc`Z_p%hraeRI5StvWV^mW z3^@zj;-(IF$9lFoO8y4E?5)pKsL%4B7w|iREEU@xgwN2k2=e_WyqC`F_gU1@yC2Lv zg|@PnJ{m)bBh*fDeI$|Wmdw9N|KgSOKyg3;y%h`-9}w#Yv~e-&p785FXi)u)emc$E zC(RvL{AmqnA?;Uzi{@9t|9Ow5!@*1UH3$d!x_JTciTBR|2lt*G`2aJ&qptSIDihEi z7mbs1&(ilhmREuyJomEvknX;Remj2L0S>OtE$&hbNZeGLBU{|WSX z%zG6=30xjArImY9^^{(Td}`K|X|ES!j4GLCBQQI&CX z<1N3}TC_-qe$F|t-NaAs=fXz6GFC8gDebPIUGkgo8d+7wku5Zf#tisKW}n!xXQ_Nv zJL8rue-U11I!&CGk0e-^iqBkL*2%g7@xZmzmHs?R44^rtWUaGQdZ&=a{nIHo&(k+h zc0)n2%L88B1a+lzs@r7iCa9aB?g7YowpZ8PsiL~a*t!F$tGiTwfE<(H#CdbpgTVpZ zbSCon&gO0tS3(PN&Ho-+9G)?+?*lEo81Q1idw{;(*gBCm4>JA^hX1auJL@D|2H3Vy z+D2(Bo{G2svVK+ev?Fz7pDKHw=Vg2!8}u`E3tqiG)cZZY#mp&zA)8lxago(`wO;@( z*Y1KnCT1=lt54oF;^s5Yi$3PS@&Rf$+_oD_oc9R&RtbL`UH8-1wQ;TKYHi~C`Tpr~ z1?6{^(MK!#Fq*$n{H*|=b?`&9w_?vDxz|K;uJ-u%rf{ab8Xi=`1KE)DXE6Pnv6=eI z*jv#3*XPr3pWrs$r*)&b-(0-v8zY-M+PL&BWngry zXh;n09!?$i?i0m+S{qqMx#$u++4-)(GyWzW##QP|zNVS>rEUA+htyVZ)b=9_tA@LY zYHCG;=Ih}d*nJZ4Gds0#kCmD38``jM?{#L`IyuU7)YBc_4wi${ZtLisi`RKN_#V2q zfOZRPJN56{jI(VVt$(L(hIy58vm*nEo3K~et!yGM9rpOLjNfVCrh9>VNeSHNsoO~1 z#$M`PVC&XWR!bf6&A+2uJUYwPQQ4vRulqKHIwM`GLYLgVzu!?kbg3%KzN*!wa_r^5 z^54=iVr<3Niost)R?=tL#ho5)p?*#)%;cHV_hxiJ?Pa^-)h(1=%lhKA>}QnXdWc7R z9XcUMX#c*~N7~1RD zfjNcjv>d*?ML!35vUc}asn3_`PqfDI8#Ul6zUdw-jrTtPv@Y#<^lReyT|Id2PAkEC z+`_8`-crSRz|*}}rSLRQbnxx~UYQ3^Ys_v;y4S+11700)I-n)-E;C(L!4|V#Fy)B# z=DkEM!~!Gud-u@wJ)`+tShK!o%&zNuGJLN~tnZn`XY0Z1d$N4C9Jsz`KA(&E>x{8i zyZ`#0rF?IwUEh=Ab1i>bhp2g;y%7G~K1mhdn{Es9aFnB=ys1b!Tzindm#4_fdLZ<3 z^7F<&pnHFS1{bfp96h}QIY76{XrsBX);l$S(>zY=_Sy626m|rbJ6}`*Z@=n3(Vr@Q zAkO#}brru!{)_No!=*R;E>Cc74SR^uMgyT zZA>=5qt4$Bi14X7lKKwg!fA!y-p_q<=!)>w{h*4g4~1tM!_JofAWt*G-Vcjm=B&kD zl<_++J8Yv}o0&_5`y}I-AN_;zS#4cDqTiRsZs`{Le+CEbO=&G!Hlnpjhr^Dx|D)(% zdxhG!a%IstV=Luv@Vx!+6~S=yqPIDVc~7!rjC>>Q>} zIkKbP_GUiEZ%DpBrrgEnN#wgg=faJAZ#43qg3U*-nT33T2QQs`^^USS)T(@GnKWls@em|S(UT@#AjIS2pD4bF!VrSiiy>#4}aAcSw7SL-@TEo(wU* z<&3<}lxc5rYkXt9)w#=&*M9KFo&OKpYR#^wuY4!�KG)?kCvOwk6l2Z?aQ9ZbbeC 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

~JYc_M*D2dGYf-WMZiOOme*cruI}iJj7&HR8P! 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ⅅox_jIq<6f9!kRuVlYYiVin#~#I6eK0-L9C& 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%0Amq6nHAsvDw^e*_yI5Hb%#>L-xk6!5`@G4R9 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�Fyy&yF_o9uU*H?{Cd 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


Vqyyb?3BD$^uGRb77qZb0q76 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�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�GJxYHD==l_~-HR zyPz==eg6Zl7j^PmbReo0xg0RA=e12+1{x)6*`fvhW=z+=Sk7nfO zevRuNScVNSdB5!ZG4UhN*kRF%mF73*{43(7%*&LA>UUV5kbxC2U6LnHc|GT6*SWTa zD%4;FN?_U}K86dpfYrVjBg^k8@o|KP8%p5PF|f7M!HT{{1QxM`mErF@`pG>^|-(|V~-X!npPJWwoP=25KBS=tJ^;PZ~G!3;=2i0GP4Jbkh z<{=LWNWv*?gb7Vn-s<1_|0(T2xx@N{7V%?fKod;4|BUSeU0D3j&1IdDUWNixz!c;! zQ?~~@km*`!wg>4|C_)WPL4JX{E3gXduALyiNtqUG!Hz2*oe*#^hbV77W0obQ`ws>F?3jagX_jlZ@*n6}_n#IvvpMd$A-zQekOWiYJ~ zU-~Ef-k}MmGJXZB&;(PE&t>WN92ZT`cdRd1inuAr-=WMdXgr)lS3byJd&ut_G_Hu= zJF~HG&hf&ePY6$87e>$l^)o9&6HH21pn6YV&!!?zFg;iUllrS!KhZI9Q;>hHHlE}+ z1R2otDD`18X-u6R*nw z^Am4i*Q+FChwoS@_LTe0X;)I0ehxq^?bgbt=-Mf{Q%1Y z1<)9s>L0iaCZAuOkw3y4!!g8T{B{VBz~u9<@$crZQb*79)OT?UOx~|Mzw##b8PHfE zEieW7%TKf3L4ETYVDkRD^Q~W-`m@!+lv#rcY(ojkVDkCu!~JjMzY`D2py!_^Jr_0KKMz%Z?EDhzr-cLGTWz>(b z@@|#~!cYQ}`V}60k9;d{^{t-#6s&{VHC1S99n@E`4W>3_I?#nfSKj;TCuvfd%_RRn zzK7{Rmw1@aq<1{actQDA-tw)U`~!$j+ciHb4-$|8liv5tz!fCk%ejg$4<_ZAw;tfH zIbUVe7jKQWYLHT!(8arO(3=-_1Xv&KaD;+y|`|+tT?O zZ^txGybS{wJ3mi+W9sV}zbWw{t|vgx>sP?!{hag5#P$B}`iI#sp-MbLXzGyeLJzLN zl%`B^T4y26{!CnLm@HrY^z?1Wp!|LEm%cy>NChrfNKexy}1bT+Q3MTL8oxe%E0Y{%;zx-j=8S!hE z-z9$T@~ypV%7#D5J_mZHZ1VoR^9!G0exL|VFnPb`{79B{3USc)`%KM15gdb_ zfttL3<;rhRW)t)bbl}Q+zw7+<&vNVpeW$MoXT%o>^{jFXZRmi>(ks*Q_ID*1B;L+X+G>1} zV+nD!Z91E#H7(`einP9Qn8A~;{MeoR$c+3rUJ6WVKQyhYwoLLbKy7+o-!tq&5A@!; z$@@d+UlOnUIL9#1b6ivGOY9Rf{3^b_Yd9e981zh6&tz4<4e2GeFT_FLN<5>i25=n` zjzRCl??4xNum#&-vh??AU+>W0w|#5ZrW@3*+MAm(zyGe(xAm*}KLlIvHh)^@OAulk z>RtaU%3OoC(Fueg0cVua_yK!x2yN&>9X6o`8&HNSm~PYGqy5M$Xy4kk=?2ZW=2v4I z+@0TlSL)xcU)GDhO=;`h=1=_(cHrPAS+C3dZiw%JNqOd-2lz+MS6_rSY{Ljl-q$xO zO}#Jkn-gE*cmVn~Wed_!hQUv9-A33Z?86$=Aq`8Qehg8<9l}E}DZLAWd-~^0;}WhQ zRj^iQ-}(OgmY0;dR=J<%ya^`n&pBUxCH6pLCB%NlN^@)^-GS?=uly@86^Yj&D1Sg( z`!Iw{*RJ0-c$aVmsh_pdtQY6Uov$)`Z~}?1Ju06k-I?Jp zP$mOesJQapUv>UI@dFsab%3w28%*(^V?H3f%65V|;u@pDq&_Jc)4}r1&r^083Qz}= z_bbldAzu7C>lXZY4oCRQGyFX~eg9M6@w@_)_fMT)_<623LEi^$g30^p<6=4{ehO!h z_yu#>=FSg0Ut>ztVH0)({EqWgrd{N^{})-GV7kC>%lnSOSyx7oA@x9(jp%4izwMJ73>CH0==Ig?+ey0qlXv z=by~TPruBxK>fJNVDkQo^VQeu9HQT0x!^*1geLXVI)=0FGXKBMdL@2B{ESe2xlFHi zxnriG>4cc3rfcfq?ZG|_l|NOG-=yvq^nZhEnHnMSF7Xaw4@|Fixen9Nbizzi(>3k> zCi4vkFa}eQANwu#HCTjGn1>XY9+y9$topiHpEj!(xlrfa^Ve9$-+k21EA_*)k$@DW!4$5~_BE|l z=)k_4Zhw>g?)TUSf1i4PV6CwKyh1-m8+j-}8CGBomY@KpZQ`2N7SoC~%w_+<+kF-M z>K}5BfHrKyCN#kGxO|n}f*$liZFIr(*!(}DKD40&rbd8&h<^eXa0#by4yMQDSDT!F zU<3MK@_yU-Eef=u4@c029&AGgOzKCl19~6$2zEi=^D?EvtmoHq?F7592@No*Z$S|{ zck=bk71djV5-dO-QjmryB;ks>*Kh%sa0cga0;kY~eW<`XnD(arU$k9o$EKrp7U910 zXZ43qaO{H<(6@+8u?XuQim&I`115blX8tMGO_X&G%F|e4`VNfBnl$d%8CW^>&rrGH zwA?P?K6IfEP1pjpqj#0{Eg?-u;~}@809ARA1Cym^O((6B$5}1PgHOiEr44bZekgspqBw-#_z~ud$^VPrP z1PX8BSo$=-i5T;yIAIjjwxyVb%YUwunb(|nanxN;g_NA<%H1$}e(3=UunJs5!cp>#mw2bDqJ$ytJ9 z+Kv!*2@jwQO)%AHQ}d*GJ9;NB^QL*Y73pQL{0{LWFolWF!4h>8THeO>ayanqD0`V6t+rw0)~@)BRrcqvcV>L2E}k)CYBEOD)KEu*%b*4YBvaUDz-)I0hM z)KhyU+6$VVwV$9|2JV*YeQ+{g+k{fC6X?Pm|5Z73)gt&F0VYhtv7BeDgJiho-Oj zTZX&yXXVUSxg3~+e49_d-ZX9NhZD4(v_1~uzU#y0W6ZiZfxoQj{o9_7?KieOLF>)t zt3KV&?pxm0zm*TMf5fNz@ilFkme>~B4|Pn{_6yoRR^GOomEWbV#*pd54yb+)Oer0k zInHRG)x4PG?*{mJ@~nK1GAh>rjptH@CM<#amz`2pea(&uPe9|!9YP&Cumoi=)rd5q z54+HU4wx1nGHu9#-Vrc)zvz6ukD$Kq`u}wmOy18sKSBZi9SbEv(~eK$1UKsOcL0ZQ z40|vF(?Ih@dm1Av@>+8#hkpp>=g3z%y&n-JG}-^3`quBVtKXr3rmg9nf!2-YL+fb= zObZV4~{}nZUZx2i@Jbmj{|7+G@ zhq%Vk(zkZD!DRoRw#nNAllObh*Z+%pH$ngNj=|*pJ?9^=@$~=nAzXpU`=`#=|66HT zfHn93mG_sOKga(X^PvAZ)FDq~W94wN4z-?T!!2y4&^ z@Hd>V@kR@<1}#{DRWSMdjT!kmZ(M?|iT!nNkiV5;S|5ZD^V@^ghgf%nrat*6Dsv~_ zt|K2;F08iUk~VbiHmTh`u<5Cs`aP?hKd-BdrhntP`r#kqd;l@<<9vBPO`hq3_!V43 z`dM?irgXj^2UKO$54ijh)(e=H@pfkT`zp7vmDgBis$YRBs4sL0GLVHN%tHd^;F7xfhLg$Cue2SjZ|&Zg&A)8iUp3{T=74-}eG6 zLJ3UXFF1er3AP`MLEoV=dH-B_Q>{>@2y3A6-b~(CKXOy*ll-1ReZVf4)$W#6SbyRN;_Mrn^Xu~$NU<(@1 zgeufw1y(`hoE0Dfb6`qL)0$p_`O)+euj2GkqZC+k`3v_#xw z`C+z!w!^jZ2+s-Cul@i=p!!2dgX+&g3XZjnpbQPjfcpNM)R#X4k86KG8MSX(V4fEt z11n$(^0f~fg62*0YFfoB!rnB0mv8_Y3$G7NXu&2lU<2x4vb5@JthmS3w|aTjVfV94 z1BO3pF8dk&5>)WyuR<9#&RGF8hT1jk!9MK50Mw4&Nmv23y9@=;_uCfXf;Kf)+W{Pd z-hb%9GE~8&bOBcG>1!VK{(}1aufq}X>(5(jlV$Mv8{{cp?*iyOfCbPy07;k!y^oN9 z!_VDl`5?QOn-_N<*I^HR&RFN40XXWGJV!!``S6y)E$yYS;| zGq~xWKCN&`o5?TG&eUHcY(W85LFE@f{lQ~|Ey7)BKobg}e(Nb%fb%bLY$ZG;)Vm1B zZ~`OH`v_%dzycIt9?}qk1nhs2;}r~G5BjhR>#zj{C_)yNAO#Dcar*RbMi?S+$ueET z0gPY+hLC|G+=_YC{A&3%9-sAlf826feOqo{e@J^l^{t-P`xS(l7p?zmZCf{AkIUbu ztd=Ked;Mjv&)enDygz0>BCq0hwdvaaY0GcE?Kj$w4#9N6wzYQ!(m!D?$6M#?8;vHt z18@v`%anm8^g&}7>b(MeUs2;04hcsvfPK&yjys_799vL?b(n)JoX}>N(4_P!XspNk z_}S_7H9vYU!BhzFBVXos0ddHK$@>e=?|g;d0q7fxL)e5CW7^1LGTbD3^J!nA}3Q&bOWWc0!0`xA$ef$FRwgRi5Z%dkj ze0@hU0#QhTDaapF<_PreMD%B^G~3eodRM}vcOa554=Z5ue$M&D*RUR-1#MV|O}N!- znO{)Ji@o^$j}>@W;+CJi)qyBIw?;$@?|upAtWZ3rId`rJ0uVqt5RT z*O)wg(0Dv1?;kin8DYCX8j4`@{*vmIuLe~lpYdgh1lK=G-3{yF~L{59&7pbA|mLj_DeUwzc><|m^p6RbcH zGN7@5OxrQ`3mC%@?7|RCS5LE_y_x+C{C#fw&ei@~+2&yKzWTbD>ThHJ1$|$u3k_(2 zY4aWIXV3zDr_1F1zVoZ^&$pG-1yj54^8qiD`-7w~h%bun8vbSDmjum}58ueTUNI zeH}wgMaq<*3~g85`h@SASI7U;Kc^8SwV^(`9xhEuQ#ChzB+zshfP4N9PXoF?zr zoxlGE<^#^($nWn5fKcCyxg9fW+Q8j%P0H-wqukwgG_6~Y`X=w6Q^uq*wDhe_jdP{% za++*BtN5EZUV!PCGN*8km*Cj2M!4hhGk7`3gCD2L`)lNx^gYHkD8Uw(ykB>|o=0UN z2URe6Ut=+u_J|MR0ImZ3Q|FgB#;8wR6*}&C<9!{cOe-9FG=`J&y(am@QV_L)>B z$1zQPmvo#nX{@JL;zyH{<70ww2~6H!bbjVNv=15s=|1Bfg*d)OAPQNymGkus&om@H z0`*r5z0X|sDd(RnZ>l58sGrR##OKZBT;lwY^ACvY`Q9P;=Xc(}aOHc?@Oy(@I0cjU z$Ie$@4(r9e5n|iLH=N$e!Gu~e!&!jSXR+9J; z>VWB$`g$f{_vJTTJKp#A@rRU|`z+VdQ2$YzD(89pGsxq~*Z4$P(05f5a7p<;DU}^;J&y@2#AkQ>YzNgEB49{qiB0ysvSKOe(XI zpWKV@5t>f$Gc)`l-U!Aj`voh_w48sgys30wTK99$Vg8HeGEL{lonIzi1>G0d_(LY| zx14|VB}y!Dj)O%oc|Ym=K5^Y+)fgmKaQ&0aAEC+8mT!KKI?-uaSazb^aCFg$2<4z!YeV6_eu1Q<*BLjOv(tesMu?Xgb5!y-M8&l)pp%yyApySc3|v-ZIQlR_&O~e_Z{4TjkR~!@7YCl)>bE-G4L{ zR`@+b5t?A~e$DwBH{}e@VeV^Inq$B7BhEi2egfy9u}w}1{rD$7KRP4-3hx>st84=Z zfyP2H`TW$3{2rdhKG}s+mM`{xx3s=b1mqfXVyw&TkOc z_$X}{K@0r%eSH34M*hMtuzev1>yUvgn0)@)jQsoqRw2}&4n^?&eXn1`@9QDgP|yNX zg!n99{gyLfj>WJ7repl%3}0ip>t2wRznqq{dWF|=u7ndf15+`;-+Pkd80ent6_~t# z>ipzWT+_dv^9eMgR+{5F{xPiK$&Z4@Cm&Gm40MlE-{ai^^&xJ8?rW-@2Be_`^N@l| z+KLmJEdBkozwFxo%Wl_}H)wus`nva=h6Pv#Q;^?fo%Wy)>RW9J@)zI0apR5bTc9!5 zO}Yn_dK1%yKA7YW!TeEdQm#w52m0o*-dEj(CKRCz8hd?_aFpXUEhIEE`Q1^K6Mrd>D( zKMs44uQAxqAo&)qFTkWr@d8w#20De5z;wuQN8b+*alFy@CGLJdeE$iS6GotKESS81 z=KKo3@pY(yp5K_fzvcWwgySISnN1T+-miK8b(Du9G{IDGe$DyX|Mi;)vHupK&c1#L zJ$}RbO__9jxk*!I9=50Dg7VEjrCv_$OzWAichGe_(zKLk()$FfP=u!2Z@gb~zV@vP zxP*DP-*`XfeBD#6!94pw9=gQ)unis9f;N~GSDwmf-&7gZG5P$18Tq;|TVubwNN}8e z2kY>yoX6f~wb|G1#4JFp53FnNF7`RjAc zFK8V5E*ub#6V?eg!K55yl5SQ_{OsChvEhA9^jvCD3zhy<2rF=g&Dm&ar3?l8|@DCGRgd zKgY3X36^2Q9hbbXXG^Ai;=0Be!F7Ot=KO1pU15$#dVcJm8+%{RmrNbvJ?O)6fPdip z{PcWZAoS0bykF7rZ>k8#q!{R$C=Vv@FF1ch{1A>H;*OWzzjWo(l(FZ@BUgT#V_+A0 za0Djr>lu`3ne%o5TAbUj;gI+$;VPk?k(pG+yk>x3bAF6#iv-NUGMK!daej*9uC8Gg zLGOW?ysu-oDa$cZ&$gC8$6=HAOU}>n+tBYx{W;W!!=&r)Rj5E4H1srVjgB z5BhNI_B-!ue>I)4KVE?PJm{IG$@_8V57~y=j)xF-+sFGCZadGj?$V%ZxRP6s-Y+;bIaa_t^dSLBh(R1oRgTk}(14gbE@$4& zwgbISR)J;EJNYI(r$2@hm`|F^JdwVHD@Zth`F(6hC_)KLLB8JCYQR3+eUIyv_-oX! zz&dPzDac=@jPk0WI;J3B?~UnPu?0F$)Sv;TE|CEo!3pfa2uy9x85*-n|L5v^VT*)4 z=;HO<`Q&anom2c-m=4)E!9l7?sKXkr+ck57t9+sp`=rf`_wE5slNChw=6uj8K`3w2yHd4JRS1=is! z>8G~DIxN5nXx*B;Uv++mb<%@A9J}@7eXT=NgmZBW;-GW1$@@3|uS_%4f2#}?*mmbx z@9X~zll~V`|E*=%0F(F2&hK+f--Q93x#PR{51pUn9IXGl)1d#uP2OK}{uyzdzwP)R z=GY&1$A68B6M-l!xa)N9&pAKNHTN8-UsfJW-d}Kjmg9RKmY@PA@2@()#JQjh`X*El zDo_QJ&)=GnAK~~P)j0rk?ubDgOg>-dn!EXZydBsB^#R+30hoNg&O>+emy_(jP=pq& zz$%!0{s#Wt{8PLuNW6!24A;c#*BQu$DDvU&^gfL{fzVb z#P>mcCeC08hhQo^!#se_M=e-|BA9%>{@1yiAA3LZ1A2d1?=71WA7CGcWmtg)$bqSy z;`ay|o8|~Q&;^svKbVn!{6V%a#6HCI;gWcm&{X^|%LEnJh7y#)R{6Q#-V4~wvdG|M8M?p(=+nBA7Q_QBRGLQ(6@z5OCM$3!78X9Kmk_3E1 zldMnZz!=)F4JMzzKOdJ z2$+0+dPct9|Eob8I!CXj7`Zr+XK>21e5odoZop3zfIVKGuQ=v3%3tDVA>3`oxzcpBa8koFaa{gJA{ShLZp4XydBtsbJ&Fen0)^6jC|dX*S**USc4R#!Q}IG-~Mj?7G4{=pl_aTLkCPgU;jhj z&5yj5V+ABY<5tEX4kn+ku`TcBH}Ew6WE;lNf-Nxl{K1TTjb#~y1QZ|!aWMJ(%#3`! z2hfBzX#7mQ6QFklOg?`wBR`U0`jCJE#2^kPpRchy@8)Z4oF=qk3@z9Klg}T_$hZ3u zx(}f-bMD@U@cEe;`3<}#v|$V_*aDN!AI!*)aIZWH3D7(d#(7X8>ce4iv zFor(tfhoeZa}@L)*hA1aWf#GuwC=B~Z}NToGs@{6`X$W2%UabZjxapiSmv9Ah?=_d-zVp>T*rag~buF8OJea({;QZV? z$0E>u6@OpG`(^S>>ietfR^40Cb*f3e`UIPwBVXk*kcAj5fW{Ki*gqzvkKyE=zQ&PT zfJM-^NKM|?xIm^p@m(0eS%9y;#iqp%Fu$N{YmGf;@_y0ztrYEouAi^Lr164wov&+h zl^eq$m-yXKP0DIKmdYnspBd^cvJVrtZ**Gwcgtz~mCQZLjUd0CniV5|rWY{OwRz^)+V37910g5t=Oj{F4)ZNH~H$(Dl5o`*)!Zn^1!dFj@M( z^{t-9ozb*4Pg=j4C(WZt|Ve0pZt9%!F(12}FALa^}{-X7?t!>?nh?~6czrULM z6#G1!evb9?dFF$#0cUs`FJzfef0Xr4e8~Smr(n{zUf00t1(lD{w%V^yHsb#O zdL{J}GwQ3ot9wk}=GXcq-<{uTZnAt!glo`ed2@uO`_wB?{%$>`7x06oXYK3%)XN{4 ztaI&CTIbrQw9d6owa&E-)(Eu?Zbh941eMd+FKRaqhj1(6kE?e&qn_GPU-O{pS^Eb$ zj#Y37ntzjh!!?@c_XZa~#&Qwv5$=O&m$-Q`O`b1~HV5OM{;+Ze9Kf@82 z!bIYrQ-uyY32>*)knX{&e_M>L|^-3U-|0F7gm1=|B0ub{9NS0>mEGyF#6!>aQwkr9=z>g;=$V=yyG?R zeE6={gr5D*Z+?6Ixo;A#zdQ-c7WD(BaqfB8Ev zy!7IqOMHX8m!Gew{3KGXtcRX`;l&sDyZ(HQzrRd^td~m9tv?rf_H$qT^0Uv^UMST< z&pu!N#xKA8+_#^f6#vF^FTecUZ%&F^{8zt4>#BD%iI-oxnVsjp{ld4Hg_mf0(&RV4 z^PSMM-+JlW-+ul@dC!0IyT3vM&%O97&*M*$)$e}uMW%F{e&NMmR%4T*-~8sw&;Pom zDlfdq3{7&Tb2mw_ip;OP#0*San~WCgx%KszU-;&C*O|<{^-fCu$)Ek%ORph3oYMWl zn@(moZDb4~4gJ}4y0QO< zy6{_1J({kjBR&s*IxW}y*X+?y$I~=y-iYd>ouSu(>O}u^LgML1?Wt@8ejcpceCz>F zJ09GO1g?7Wt=zYWYhJa(r$6!FhA459%1OTjRxU$1p(_uQ&EpHM+!5V}#mV1(^z+ob zNiTu5H~7;hLc;QtZ`1wmw4CO9pE6?OU#i4JR_=F5(q8p<3A6wElQ(EPv8r!ms@y8&Rs+iYV^^+7 zxgzD-Z^oR;=5LR*wwcf`0J6-;h#Jis@!Q$W&bBv zF87C#Q0}S7%~2QoMmF6sDYdKV)F@Y@oSv4OtlYoA&~!~Im(xn0%JTj<(iT_NAWG}j zh|BxGT>PdSw>ST!sMti-20xoW*WN$+b|e(tw7uX_-s`Afb=1N?{Z~(izOJ2UD$9G@ zopNt}>CK_PQ?lGgZM^SJx&A+ohpvvSwMUDzFfFIEn$+#TCG`3K_RqJc)MxIr_kaG{ z+d}8xc(h`y#ux9D`(OX(cZM4O-%Zmuf2`aJ5jIoRa(@1w&H0=Bx9j3f6mXj}^dC^p zE$(eOwd*!#X#ani3++&F9zRASnp6G$bgc31RX_f&&|81Q=IYV&P-Wu1wOC+tE6HOww9&ljFoB zt*ydShTD7&_(;Ed>0xN{gVyhRlGb%oD5T%9^f2_6n^3>kN&2lfq5XLndYeUW!iT>5 z63)ZW+wbJN+if@bI=ep7!_eHL1hI$yvoSa6>4uz^dKh~5o$|>$>G$03cghHd{?(sp z4cqp34ckLgw6u=;YVq>+^_5A!ZC@S1RNl6q&iIe^$VvOkUz~1#E5A40-YWlI@=cl_ zT@UEEE1O)2{zI&P{&@>sPv^(x*U~n>xo_KCJayAUUfWB~gV0+;-ypR8;{m@c zEuW?JOZ$D&g=u|j-_q88!?myTo6c*}1I}P-&(b=h{ga!V$saA>e@AqS`f+B++E;p_ z$@<=W@lpDOjMi^HxaonT@=uaAM|vG!>5r1$pqp-Xn*KS`mG7`*gv$RdrFj);XPST0 z>*}Qkp)o&o<^MP2r%5kQ^R>NtZu(lDIr1l(Zhx0ne$}P_IYn!vb^KEMYES8jCd*e~ z{w%G0&99}^Ugfsi@ua?%&*$&B^#4oNfb{NkdDNcLzI=w|xAe{QTw2qMvp#*k)~}_N z-*9Qw*Y@!FHLc_uJr#NDUdm9~7fcj3}sq8P22xJNMHQ*M`_g$kw4K>p^va0GoGx0b^(BxzY2BDs{{Kz7LRv>= zr6ZgY8>BxpO~04)E@}Not9<8Eejr=5R7p{GMHkzc=)zcD?( zgg9QQ_q@^swEx!7KTvs>{uiV-UHUbgq8l!)_4P>a4t;uZ3cs;*Jo*CZ$mXBlAC#Wx zsheKObEKCrY=2mF`BmzlkuFX1wLMBMU(-KwY2~Z@M3en1|9g+p%3pTr-=qB+={0(LZv5~%uo9FAEo~_^)sXwTzRFf z{Oh@NDU-J8X?fc&|J~$wNT0jtN>VaZN-|1REHq3^N>oZTN=hnJEG$YaG)j6Ut-#H^Wc9M;T2J3?!5jDpF^K)~kgfh0@-aNh z3mQ-T8^0X#capc@z9iTABF8N`pPjFvKI)V}grM?^c^~qL0Nj~86KjKkr z<7>U81EGE+AGs^AA5XUNjwG*j`I)#0=O)*m#;d*~)N6ZpI4dt74Ee?Muf%>nId1X( znREUM^^3dI%f7z-&fur0@4|k3+3K_S(y$*7@`4?|@~?$l|AMI!TdwVqt-rQs&bglY zMcl*dc7DmezWJ`;Pg38CJ6yf&>zADGq<(dmdfC@E4+TG=@o@(QwjSBnFFCJheC)43 z+1Ib!9lU`LbOrZs$oy+xjejhj{yLuzD3LG5xpV#O|J!gi`3x`H_Q<|}F8jl* z^F{l|tn+2zfnepC|HOKxAU@ygzZLRxn6DLgklTE6+~WEr=Wgm(cd3_seX~ANhfAW&n zb31M#Z%(ZJCHwy4-wB?hei|>k<1736zV8KVyfJ63zholhdgES>{qt1z%aEhg~xf_ z)+1Yg)o*_y_^>=aUtzl+X??P<-!UCrM|}tG>gr`*KmAnj%lOK19uK&B+1EGyJh+hhcI=ObZ1ty- z_qhC0Jm~yoJm##wS}~2QcwepU)A1O2CXDwCdET!!Wd5a>ZNF^usXqF3u#Q*0v+@~d z{S0jZ`}NCl%Zc7czKSP!!PYZ4AM(4%M`iw>ttaEm0P*?hAK-sM`~+H;|P z6JPP>|0aF@$#ILvFJB0LHTAVP+l?>#`l{asUr2pD?soOEuOItea6k2n*uS5VeSO>W z!Ov3Pg?+v3>kAiy^EeQt*x$coUq9xo-=Lnvetg;2H~c>MqtrL!Mt6Ugef{_g!FN$V zg&SPG?CT3&4E`nc#khu-?0k@Yef>+pFH*k)x4U}T*H148Z{jQcWlXpA@nx%jgTC_r zKR%Bqms zxH=g>bH4v2)N4LHzpcOWIX%oXE&l#v%~^T*&UD`VpJ3&kdvfqHE$%<+tUTH~oo{#k zAL}jOxLf8YA^N`T75oUL79U18`8eE$?fbU3;a*q&0X%~BlM~f{3QuGG-Yxk)IyZU@7h{|6d0d5U|NjTqW1D|pc5Dl_<8>_V#I`?9!-Lqa=L_&OK0KNK zO1z3~f8307Ul!K?04~9nKZz?byD78&7jOf%?ccz{Td}QwKmLziSARSn!M6RU;~7_f zAzr}@n;HLVoSPHoyA79MyB;6J71;LoQ@GyMzl2+HQ8M0Uc1$m}<9i?;#ySi-9w*=_ zd_>|i@v7_pA)LSaZkazcrFw10K=Siy{ruoFQLYK|a3i1R<-PEZ3$io603mBV-Tb^EZrh?GctOs}jK3{9 z5%)MZ;$G)#ai8R|3ihwrxj^Tv~LC${_D zxp)|JnPsl`%kea}=hqkT0@ss{uU$`a+_px;Nz?VYH=bvI`Rh}TTTb*U@)eh# zg0uLYU#ou~E^zL|rMQj(?0jg&Hr}n|?MH0P+@F+>;0|(s{>fIa{WanI6Y8^G6R!Uk z@$@eJW#2#dz~D`Xa({f&#;BPB&A&e`AougjzJI;*an!fIIrKjjH<9-y`PhUwdS*#;bSE><^Bw)hpNWHY=|>Cio%dtH*Y|X2x^5 z>W7aF^~z_Rm6seJ@_#U19oL_IUar!O^mQ9k-~ZLRdi7s**7&-9;}#!}8fWDi-{%9b z4Zec;#;`xWvag@s9{f}4=drJsef`P_!J1#&zgPE@9(d` zbD00hJRiTP|Ko`8yu23|Vf*~?7%s=WEy&bAkL$60Uic5*fq5IA$@k@rbr0s{jE}`* znA=Lmr{M)`&+7|t_L1THgDY_<)^_Rr_szHl+xz(kaQ!aNUpa1DqiOPXm;W9QIR6(< zI`7K|(HdAr$_r}Jd9kzdVP`$x$FSzH;~~c_J|3&@2-bgT zsru;fdHM|8gzfs(Uoz^#_Wt-9JcRA~9l%qr{$ad~wJu$cvpDxv;roU^;&QC_3(B*P z=K91o-odyH+voQR+>3b|o2fqwk72t%?7$0{$5JN04wvn6J<4&5KM${Re#dQF^i}F* zyFMSqYtDbf)^xt>pT-rP5#GOQKg)58_iu;uLDUbOxiRzCaCAK0g!AzZI@s~)arN47 zS>!gJ##g;rdAoBX<8@;H{!8}tRc8fXO?}dnea>VuVU zcUB&~JLHcr-@q~9`;lkx2)5(@S3HaD`^-I#;r@i}cpi@P%0m4~xNeu@E5|K9zB}FV zeGm1r9p82wT_1e6oHQL@ZBL$Ce`bF>f0z1h+((`5KRIsk@h^N&@b9TF#{T%oR=>53 z>klvRg2vN)d1r@Q>nU+oKIW`^(ph=Eet45<$@_a}<)!C^yn^{l&)*mg@Ve$d7k87J zHGZ?JSN}rl;}(yv{$}Ol&Q~$s5XX&O?d_Jj7%m+?-l?>FU# zasK;4{uFL;ehClZlB9m~t9icTuEg43wM}9F6_MBD)g;%va@^wcWBUcc%4?i8-jwqj z7;hdI@w(QldO2=6(dpznacz>Tf93l_o*Ca+`KYt<31{UKA4vC~bymLIoX(>QgOv|C zYy2^1J>TZBUf1@hzVM>ZU#}NCXYvoG^D<}USuG)dANwQ!)$zZTwC{7}xaCIr>l_8x z-tXRlOR?V1t6qOKuhQke#C0xT!Oi&PNqx?7e7@b~e3s+3H9CZR0vBcKu4cqyD zGA{a17*G4Z0mm&TdN+9!w(CRl%9g8s(fM-fm+>mE+xac~`ss^8yPI z(saJ!ti1lRbl&8wJhwHS7dk6na@PE7&dNL4zPQEr6K$_qdGW`B|BwAqg?o72_NVOY zC!ICltndB0emz8>YcT#xPjwH!I5!~&310HnscjF0c z?=K(4OZecV|Fd{um+MuI+t%psX1oeiwNko=kGhC&w+`pS4#9D{pYtc%#>(^Lc0G zU7rd06U^6($9dhhUyfTmUqx5&9xS{TYhJ6DeSP6|!Ft}7VP7v>{lSb^gU6EdLF-$+ zKICsA&+6V7Rk`y;w*IQG_-ydG)K_Ew{eYaR|6H)vRpYGjT5kyXt&G=&^LgF2SB_h} ze@c3Se@p##T*OOOFZ=q68-q1}y|d=8xh3TPWxU2=uCHYKUvmQQXNERLL+n?L--dU7 zjpLW(v$$%I{h7?a`|G$K2H5|}`CW~d`#17CF>(LvarUizo^$(m+Rd-^%uye=_Ql@ER+_$jux z?ls}_!%MgW+xG{XU(fRu7t=5E{tZvM`~22fUB_fgVz5p+=y-dOK=yq^<9sL zv5kKxp2fC(kKi?2l#KTbE;u249{VeZ{YnYw(olm$6dHE>3*b_&#pf?ZaL8-maD$%zTjU`UxQb9-S(gC>r3ws-mNl< zDzUGZeSOgb!J5C^S@VxLA6m)!a1pQD{BqoKqV1Jjf7pNCEEx@XW_)LjKkKY~!CCpj zx6=Jrot5W4n9hrwm3KL7{9b3}6}lN`T73Vkan8*DP{`j_$@k&7mwMZNId1XurtRTi z&DZIy=WQR>>zVVjlIy|wDm>$?`5V5I92~?E z z@0$r$KIE*t=&6u@jN@H~`*_`sw;Z>4e@-~}Q9p(K`6gTa_sExV<%W1X&6of4kS~#! zVn3g3{Z&8Wy!)HDKjS7!Y<;q?&--PtwztGt;|(}(XS@+S&FeOv9JhFTo1P9ni~8sp zK3^s8U$4M5%NwJK#9zhj)ORM^tNCR=-tt_qa*gNnXg*kZnX}eE?)<$svH$TTuiN_N zxW()5d^Y$O)OTZlJHQa|{7_&)vRZ|41b1Uth0y<4>dUb|KV&~& z@o$4QUb(ZzoBCbI&t|*@?8lS+c)hI8tnsvdv&Ji53|3y{oY}w5%BP)`7yTjhznb;r z|8HaJ-*+{+e42a!571A?NBy_I82bO7yb|l@3wHeExaCBfs`x%0+viX9?|CWY2aq?d za{lqU`oA9Mu565^5^MbmsKXHrqUme?P*7(|fv-;=%Em(Q6v+{9gyuP(`KIE)?=AY?&*;)DQztZ`lbEf~l)A@q4@|B(GJnKKf%2%DW z{;dC|^DNHqxW(s-&Udr=mq(k{t^U={nfaZsV1H(9*p&J{LylX#KYN`u-hi{l%i0v` zl@~fI@5oB$-OkGEHi!IS*3*aw-ThjQTfCm-Ey0=nvsbza#>GkhC-Dr+;;U@ctGblH`Zs!Z!w2;!14ey$3g8eLmItT5&tx zFY)JaAGYlo!XwT{G+%UTmBQ=f{T*+CESg5-Dv-AJeBj)xe!ld zJASXh%h--jEiQO-*#3)fIkxTX#I@MY&oARvZ0FM$?!iSmufr|7d>PC;hoMe;Uene z?cEw>)$o4Ed4JsOtnI9H-;ce9T#oMt+oF2)cm6Q0cJ9M9&X3_*=Re^(=dEw!{^fim zZg8%}jm{mo$@xy)>^y^8oLBG;=iT4V@pe8Aw>fM3cYiTCJRJ2}a%=YU=lngx{ap2H z&Y9;&UOF$>D_D84v-;O;P3H~H%DW5G`HHjh(f!l;l(X`(146FvZz{0XVed!fxFyf$ zqF~hxIcvO@gVK4Iv+_A-^YUU6``f336f0cZ6ebymJsobI1{Xt460!-Ca+*jaho z;px1~S$SPaI&X4T-l0EElWFn$fgxw*lSilXd1vLTItZB-_s`RZ&BV%!ULCCUS2-&m zb3TXjbGjzn-`emJR-NvjH{$HKh5PF;F2VM^_z|vg`2udi*8g9)8{7RX|8({zw&$gO zA94!Y^Ws(H3)r4-)p)1N&&T<1597Dva%|7{FX3uz_tz2Jh_@!&^EhtBHs2!d#x~!7 z@sO+6cC>SS$8B3wz!$r+-Ooc{bvtCxL!>+!)lRXefPZR5*UADzMWVB0=zPw8tyegye;T$HR|!DFpX}?0ofoO!c?$b8sn0r-_q(_>@g)Q{jv3T%AY*EgLM zTwKTXjP2*k+Mlwo&wq1p9ra~+)~!eO^@~-(S5cpJ@+SVqLs*aO>jydhX3ekj!Td1& z>#8?Ji@V4DwSW504EX|i?OB^5{nt*kz1!Z&d}nh#B=gnc)pIsQ`jZ{XJMs29j;~vf zZ1ZXSa>g@jJsRJveEL1X$~B+Q+uj?jyx&>yKM}{?9Z9D_?Y0 z|NisR`LMI{_Vd$ux3lv3_oefwDOhTofy z+xaS6{Zr&^*nVG5{R_AsTdwhSe>N*`;r?w_uKT%JdG|%Z%KM%F#(V>3>=qr*>w13g zc^2=d@DYiRz*%R8&!2C`<=FD~;zoQ_QvWgBjqQ2;c|3%*4vl{gp2GHg{~=z&2POG$ zaBf}r`Taj}IktT7cX5Bi_Id1R+=dTN`k#Ua@S%y%!&A;z;1zsGl7A8Bzcaj_xfhpV zTi;{279W<>Kabn6t>-_u9~UM0zTD`?U4ATHzy~M!X*lbw@Okh8T!LSf%cWKiT8mJa66mkqX@9d>-z0{xt4! zp2WS*E4a^julKNjoOK@D_3jPH`VWjwBDZGmf9Bo!sruXxrqADeXXSY<>Ac)od7rb+ z{~>4P1s@9iPh&k@XNP~EaRIJk|8d)0-+yx4wnmqd_wABbUuXF~ne)DC7Z0#M;y1bH8f4>)Pkkrmv|68E_VqK)S5e>myG`rAzt)fE$$MRY+4pbyaPSoMJMfsR zmwkQVj^KY&UxJ5Rz3l5Jo!?f;{TuuB$iBY*lHkJ|c>ja_`#;&&4?4e}`mWD!imE8c zJdbe=u1H+S|BkwP?eCIH!+3+#Z^!<5A;&Ez`T=s^&IEhqY@ z@{gwb%a%V#UW9Eu>c8mn=QRH={blQaNhRZdENs7i-?s$UQK0>y@#@<`{h{aZe8qly zTM!T$V`eSP~?!P=f)XN|Ykna)c;9jtutnqc)GcUE4}mCoy& zm9IFfe{^lASKi~i-?`jRac^>dsa}p-e0)o<4}J~x<=EfmO0$XR)xv-%G@EARS7x__Uu z@`7)s^I~V^Gxw+S{0D-Sw|zT!XCw1tfBwpGi|;?HW5HT)-b29}uiH7ZKb69+_p7X>&==B^J)J29|kLLaaO+QtbEm3dGn9c{o9?D4@{-= zQD^0)kA-}W^;Y1l4dH$*$1Og7+aC{JqrMXR=cnxJ^PdRb|9yP_iu)+A=Yj0&hn!EO zzU|lH`v(7`*&ttzmvei$K7e5)s(|kkN z^52tZ{dCj%-?PnXVtwS*Zhy*Ful}n)3C^4!^!ItoOtA6}XZ2rmK7#qOp9$-)SIKZl%^tG~~y=Yo~jJ7>1nS^1K)@@CHWxW(^pbpD$&IoF3-{dK*Vm9IS;tUT|z z;7q;{ti1TQ!OCZxl`l9eujlh^+~W1=^R8KW)APYQ*q<%9nAh$4m#zK=@*bR>oImQ{ zu^96E$@_3EFIj)t`m273`@LD~)&1YBeB}?p%6B>|A9yk3Gt4)Fi`@Av$1Oho<1Ynk zycy@re1A&kH7miH+hHl%QQv_5`zhJi=dJ~7{$gj%pZnjC|A+CKuzkK$y&Sik=-ojxP1ye4cc#C~HDB9?P~SuSJZ|N6oj(ubeq5PY{pGmD$9HOD@b9Rf!~T9G z`}(3y!5f?Te2t4Ku=7>6`oqaJf|>#fTQ`P<2xv44KZ)?f8~n}a__{Rr;ob(>H2 z^_5$KZ`b^I%GJxhKH4o<`zPNyvwwFF`D2VXis#&TvLA0pZtzRgcjIDreaXIlaF5{4 z7qWf0n1c1~b9piOEbesYODXTqY`jYH?FCuu_wy#)vv1b==bvlv^0tuQjjNrt{d&J= z<7xXVct2=XuJ?y#<<-1@G%MHpNwe}s-XEHk>;0lxc@OU=&C2!u(yV+uKlpLhJA>QY z{*--vDcfV#c-lU*#+!FmuKnTj4)&K>x%Qt~{Y%)tX64%7X64h)%IBSx*S#XtD{pdE zUhv9vUgEsxMbzUwZXr59RA0^e`M4#|PiN(Q2ZX$g{-fC6k7VnA0r}c{!@rlj5*MGd zTXY-+`uWbyxE|~K6!`(%iHj3IiHGnj62E{a@j;0AO$N4rqj1Nol2k|U^W#Xss3NA|g63%N3-rU0X>DadCKwRg10&c^H zB>m6C{aE{1>-i8K$2R_F@I1EtaXVgf`FC)^dEw_-zrdCFfMmQs;YM7L_+=krer(%w z2=2xECixriu=Bg{B;G&CFTsm=pTyVWo!I8P6BnKz>L0-sxHPGM1~=oq66^2zx4U}% zeg1xI+xu7Q$MAkh{T>%{JY4e@wD^*@G?F!ng11+Fy9Bl`j5jE*tYL&xDng&`vC65cK&?|4`RE1 zZ^hHD{#$qj+x7oboZB4kAAi8**pAnxOPLSb_U(_mu$|AZ#iQ8P_YORV4^Ot|gE+b{ zjQ43=ifz2F;5uyk{~_FtZM>i30bG=f_kVZ-+y39}vM5@>w!aU;Sr>)+*W+Sr`{$jw z3fuZVj9akHcP;M0wtv5hN3o6nT|9^F{CXPibp8K~i#{0Ew>xhnm-+c;Tp#~?cR6lb zqhj*B4`yfHU+Cx0$Ko+;^{3)_oSWJHtrTRw9FDrf{@vqpt_SC1aklg6IM?|TIL}$f@9vHb{QqhP zM)#0g)6d%W|8dS2Je=ejzwV%rzl*#Hk0g2K{iMrPpLKAkzlr*MT*)r6`Q*68>)U=v z@C($}VgLJavaioRH2B0Tc>i#8R*wzs*k50A z+;XB*nQs=4Cg-F2*B%@49a_&rS?m9O#xLWV2SfdnxcPq0H@av&|H2FRWv%~xk;6X8 z{d$=1Pd3N-8F=L`KEH2_eHE_6cKv({w|*^a{oi;08Mh2(McGOH0atQAzawk???2V! zO5DmaHUBlZ;r1~9*Krrylb__;Z*tsnqCb=OfH}R6KNA~pv zCj>u0ef4Qs(EtUipT(1>@_k0)HC%a0*x&nniqD%TGk&t3SL3la(?9VU${)^J|9R;} zc#*}_C+oQi_f&-MJMO^UtjCU*_MaTLcz>)qE7$(^`Gm7_9Uq?$zCKv_sI!hw2kWtV zn@{I+`KI^WI8 z%ibESyxLj$DA!Be;_F}6k6C#I*Oxid-&y&bv+^ZpPhqM0vVK*-0bvu9LxW(ts=vl#< zZ`xVot-dRrXX)mXX>tG7_XMkdr?dLkHH7?ioL_xc@cwLLSkDfZtG?;Iq5fj(+pzyW zRE}Fb|J*sjnt#Pv;}tcg^Kxh9&F7`_4rk?S&Kf`K{7|oaTn~p#i_cfxpUukWnuFE9 z;=*9%OU}wyot2MX6zY{vI4f`XU^;JhR^I-hkn8vH`mw)1$#IMK=gP&wns2AG#w*;B z&P$w?cU+Rrd!3axwx;tg=gfNB(s{3QrvJy&dAqanF3zvG#m7VEn_2nzCxW$obI!`A zKDkTooEiU9>3qmp`OH=6eBN1kZf80#a8^Fxto02$D=)q#-M`FPdH-k9`LMI{@~(7V z>8yOhS@TajE3dmY-M`UUc}aIVFLzd+|G9Kt?5w=`hIHQMtbD2`o$GlOxA^>>y)jtp zUvyUgs@`;7@2tG~OCcZR{?mZ_H-!6@9JhGBrJI5^-$^Ffk2otIza^bdJ1bwj zHJz_GEAPH7o%cH{@BMN*A9Bu&|CNycnC;CPNZ%jixW(H$<*e+_?} z^Z0yeR<6&R=FIsp7OY&KPkmnUaIo?UXZ0@}5BWu%eBSK{-$!@ic6<gA@M@&*N7nUdC&g#YT*1DBnjC=3_iM#L! zE>3(0p2fDlalDLe{9oeStHSr=E4Uond^y)JKi)qXuNb%DLlVCc_qn_tk73(Cm*RPB z>*>bP)gk{HF2=T=30&p;E8K)_{#D$GZF^q+8J-vT70G%^@EG2f_)T~Q+j<)CDz^21 z6c==ce~;dSOR?o&$F*BS2%xO#AVp7->mC7 z9(bQ*yaR9(w)1g2Zg=?^xYyvF)F0$aAj^9>As8_V>fM z65D!aaXq%<`$yc4?RaK)bG>4_o({%iF0a6|*v_xB@G`dT-+{BQ3+K~yxC|eWtbY(U z;L^n3!(GmEcoZL<Eq};`+Sl;2G+RafADQME3P9KMB@)I-E8C&`(4D55}9q^<2WX z|79C*+vho7f6e;2A=vsCpAPwPpByIP2zcf1kjm*q#@^!Zp~|zlxi&^?&&nct7Ow z5k2)3fuF00GIEw|K+&F`@hre|A(lTHKX?bFL9T% zw)Zvs_YUHAVDw*dYdRh;|04CQZ;%&l`{lUB$D`;^!P=fuXN}+Id^qC`;aXm|@#MJ0 z;_+xQx< z$64E_{yuMGe6w=RXIB5g)nMgg&W|&HH^*16>v~_rL)hN${}<0-yM7D4#QTL^j=vnY z`1p6b<9{smvR0tuUypm7wZ8A%7mj}`xiuaCD{=PU($70NZu~tX@?xy_e>$Gu#TBmp z*SOw!1-H6-{k*%|<$Av`gzJ*=w7$82hWYlmiSwa)^ZL(^PsdrMo7b6~=#KAM3?>UEA|+JmUOuyo^hd{EN8!-@#h%JdRsV z^lkDLT#?jkT-ox+$V+#I@1NAa9b5h!c^B^D1-o8k%T=HKpWuH{pND`H@V)mJ+iN_-5UHN^{Yjj z*Z;lPmRtDwzkfu^_taR>o+T}cxABiD(B4nY`@hj*Zwdo zA7_7=m23Z*m9HKYtbC`l^4Wva`GT|Z$-~n5th4g^!_#?_v+@;Z%^#J7dgZOo$~&Bu z=N}R3l@~cHA38Ffk2@=`I4Yf2J1bvx*7$mU#VtPnvyToQ;(RHl^jUU73~>)l=V&?e~Q=zHGU+Z}NoT9_kmc zZdo?I?CWRV7_9M@oHgFWi6NiTdU2_{-ef=C{7JzYZ_Qcb4ZS(!FYo91fb)6X)+fg; zJ|0Ua2WvdNzwmi+b+B^1zwr5zb7noxTF>ZPL%s4zXXR_Brt|F6f|VE41gn3!^C|tT zXCQpvdmgUGdP3{{ruxfq%Z;ufZ@~K``2cQp{U63%&a=4R)&CKX;=H7P_HAqrer4i= z@dCE_Pr-|Lza&2oN4JOiD{!In7x8v%_4ndByjRlyG2D#zP5eCWz_vaA!F|sAewpVV zJ~*jA7SFo;G`x)WPVx(IbVvBU_exykd^4`Zw*3#_TD&#s|0Hh0w!Rl|JGSlF@D#HHZ8kgW#B=xu9Ds1%+;s%#Lh1;-w|NIi}ciud} z^@weM9f%j5Pr%uO;q%IwxCGnx%OApZF8>T}#kT#o;~s45{SF?+2SoAt`U^bm{3pDO z_e}Da-Olp{+xd0~Zr|nek{q|KQ3d%DF3R-Z%Fl|UXu#Ef1ZRIZ!B3$p5c)U~~bwHGN*Y6gP7H7xJRr z&*Zq}L^qMQE8h_38n5ncA^$n~)CD|0lKz{%%JwvFjv6<{_1keiu1xX|;E4LE#5d!f zb2qPlU-AU5bM^ni6Xf>(_sBu6Z`_*nKN}A;_aJozK8n8_lNNp@$@<2 z^TI3cV*k8%bJW5BI{t6Kv%8Eh`|;~*gWpGeKl`gE>EADZX!H8NZ+=SSwS@WphFj=g zo78Lla@^wek2>!&#QR6gkB!#PPubU(za#jy)Q`R^y#H^;dCr=z+SP0SE;=h;bynVe zMi^gtzq9h9Gt+sgb7p*J^;{3FF zJ{}}f(vvS=J z&B|-J{>;jCJ(`bY{#m@p3tF%02R{(<_mGd_ktA1tIc{-%eRJ^L)HmZXS18Ry=!TXbyV_u@)?RN{}}7JNkF&*MIPWa4}9 zB)0K>h z%kh${*YOzU{Yc!lMPDM9vohoHeg}^@=X`_vjq?e3%=tV#?tCqtaQ+6KbbcC7IsXAq zI~RVF=eKhWo^?J4&pB&*{wBF4%J}`e)XToU&p?}f6+<<KOn~~xxYBSp86eF=d)e^vahfGc(CSga@PFw&dQgZ zl{a0H?!UuXc}IIXA97Y+{E2j4=B&K(lj(eiv-0{YLw+{f+k*Y}%5lqyK0)4tD|kWs zL;WXRuI-z4zM1+JyzJi34}L0)_igg7uJHc(Io#aI_nS%mzj61~o1^(;K8-)``fL6+ z^0>v{H>%#8**?ZItG~uKD=)bwSb4Rx^19EY^JZt|t*k$8@%-8zv+|y6gAeAxI)vMK z-OeZ3*B4$F{95XZalNaTefg#?QuK!Qs;h%)})3@Nl z>EQct)jjl2j?d5V_~$vkOkmqn=f>CePdjTpbI!_ld@igIxlcmKI^Rc7o3$Z-jwdY z>YVA{m(CZRm5Em3MtPo%cE`uNX+@)y~St zZcpcv&dPV*kFj)Jy)>(Pyo$0*KS^3)6(s{vM!OHW8f;E1zv+}~Pr}GMD z<>k7bGA%woGuKyQUWeIWkFv&t_r8zo7Z+>^_b1uc7yKYt z$FIa$^OroD&bK>f@*k)3N@wMDQ|Y|fS^45)>3qdm`O@R*e9c*TF8AlS#pjRi*JkCT z&f307=S+X@_g1gG&{=uEvvNHj;ui1ks-Ffc*Ym{ZOU}n~Jc_>=KF^$nYq5R4xB$1i z{7O88k7hu9KDrst;cbZ@z$^HW#82Ydx$&3_@D#Wvs7cnu$(r^^-M_SfCG4cq*W;(okW zQvWO-!L~pCfoHMp|GmD=`GSj*`lE2cXc+%wT#jx1=i*vy$NzHNf^GkN0e9kU$#~zu z{n(DrkMTIR^ZmDY9^3Z)8?QL;^B|w^z7>woF}N7p_PiBWpReP#ExLeQ&f*3A{@Jy7!TABa==?Lhe z!P_3<`gl5ge_Db2XT$g7&3Nvq@cr7SaX0;Y-1xE|f2Z>U)Gz#kpGR+q*E5Glf5z{N zB>i{d9n4pn_`rwxc@p(=iBH5e+LfrN9&Cz6%>-XadS)Y!NZLb`+czdUuRj2Lo zc^B(3f0prku+67>*>WAfi2Y?&uKj0L-tDZs*ID`KGok)o=IeispZ~KRTK^w#*01>f zIQjWYX1%Un{hQ`P|HHq-^@j^wy&SiA`#TxmtnoCTS>rYSHuzk|n|yxr`rmiG6%Uf< zCCBgQc=UI{8c(?&Z-CsaT=iznH^TU4<(ki|y!`jUyN~n!{NeEZ-l4b&+x2`R?!-D? zdLFzR4`I9CU52Nz-7i0jS6qG<&i_uR|32RC{A=8RZT!FC4y<)*zCFLo`gXa#<+yE) zO2`{=Zl*r|K607sH*VXaH`f@x-fo;F+>!+Rdec&AKbM>;XZ(0i0{@CHH_0K!s!u-p) zo7ZiAId1WKcl;sv8`QVqGFLBK{SV29@KAC;(0n_WL;frB(P+#1@7Mkv_xz3T6O-$| z;1TNo%Kl5P*9ttmLY|DL?Wz60FrLO=a6Xs%6}-gjwmov(;_aFKV{jYwb8<4D#?Ls@ zA*ugUsP9odw)=mk-sM_PAM1@<{CPs_H!ELe`^@UE?KLa!V1JmEYyX&)&-^1;`GT|Z z#v+{n9Pu$}5>v)-!Pj3j$Y`?Se`HdmJ>k+PhoX_iaJmk3LL{E`t zZ`!i{_p;Q#C@bW8K2~APWBq08ulms~!7njh!ERepKTn%?x#}m#t-r>daaP`&ozDB6 zmFK@Kh!$06AxhfJoyNo!S;Uh8N7&J zk<|YcN8b&fU-tMu#|Q75yZRe&2QEnJ@5X)jm5Cq4 zqgdyk*8eP?a``{-BDVMQd;Ng>KeqShN8z4bo*#1DwnkOtqr2qMXD#0ry_a0J=i`+) z%lS(<+xb46>-;3nbABG@JO2|GIKT2y-cLH~co$#KMU-g=MrGvI^t^f_p5yrY>r0MX zPSilYinV`rzFmc@_Xzc0!=1P!$sfnVxGS;dFMW9!?@#3Acs0p2uN=4d{LSApSb2%F z#v63rHp%x3xQf^9dXVFm6TO;zC*G0d>fe|b@-xX>@M4l{J~?jjdbaNsti0A)h_ePhlKvSW%L3BM1kdO2>n(L8wx-k%qA zfBHMF#s?(M`yux`mmi6{u*Ok+6&`Xv2T!^FZFmV6CG|Jr?1|uET!QWUw;$nJd~i~~ zfLpQMU;l->v8^xvM_ljDufo&#kfeV#UcrYZJ|7o+KRh4W@!T%=PdRQ|qc4*0#6_9@ z@%!~+?r(A17JZ9c&dTK5q6J*yto^jtotu(+^yB3Jvlho;}&0EYtEW4Iy9Y^IP2fv zmEk(dY&~JvEKTPf&dMi_N#_gB z%CpPUd9kzd9ml8hPG{xyuSw@E&dOJuGyD6spa6{d=927oVKYE1Z>&IKPtXul)z%{b@Pw#hO?5-?!rtZ1?YG zJcI51?NxXQ$KRjiM*Vmd@1FGkHjW+*`3%m*`y}~`xESx9IBSaUcd)(RJ^#r8i|@~^yZn8Z zQg^@pBmHH&U*|o>{mA)PY)$v)6Y&(sL+{`1ekI2(CpwpW9^3a9T2I|uLf%fEcM6{` zlm2~pnY=jh!?^sdTT*{NquKS>c=OIW?&=@6_-z%bNS7<6c}XK0BS)IV&G&NaqvI%1h2k=i8l?XP=wS^PQCsIv>ID z8pHFvZubv4Zt?x2tugrRI=(x$tp9tKOK{$$TQcvr)&EO)<&xlsaRcs6#{Ug2!=;IH zp5%ICd_TYJ=dU|2xRmqg&R0pK!0Aa6Pt#_s6fo70##Pp^t_6KY&}X&3_%PVSGQo z?B~yYU-13Z_go(4pTlKWgzb%fN>As*am&ZU{HNnGZ1aBtmoUDcU-t7aIp0BjZhP4O zKa@Wi{30IsMEHL55wpV|^t(n06n z5Akxxmi2${^@8fL&7boW??153e;i)eWq#SuKX5_td#SIuD$M_BJlPrc|GjwT>Tv&? zQ$4o%H~x%~vCaQ#JkI!j|I2><_V)*$Mg731!|`v!9iQ0})zCrP-;c|kA5r}^VgBcF zC2maW_xL&2GvoXD<+#P?fBgr7kD)&I+OYkn|BfySc^~ zH=f2X{9qVgd6~2F>Xvlg;H-SoS^a06mA5f}+~V&`v>tP2e%5PNf34rFe8M?1zO(X1 z_J`Fg*Zwgpk9dBWmFGDt?{ZeI=Uv?5>miHhmwCf4Ilr-eK2W`ExyD;`R<7rx&xd$^ znw5__tA8!eJD=c)t1d$iBYbS@Y@n=<_9K<$9j_Je%jAS$UDO)-&#` zT+hq6#rv<4=b!oQthXBb^~#oOya8v8r{}59%Xr?JmFxLyR{sv3muBU9ewvkM@jNtN ztmBFOdSuI0-{h?E^nCUCs-lW;%By*vnw9JMYF57D{C(E5hW&bEUti1f)tnj6S>r7@E7$Yd>Xn!Bd^IcA^VY0< z*7*h2GmrgxWM5y-^VXah&spP5IxE-n+v=5%@O(Eb*Yn=2yocwpS-GCiX65-jZ_W8n zbAQEty|U%1?{&_M=d8Sh=eyM_*Yn=2ytOM>d8f1TozBYjJday^eGWRmp7jo6zh2qb zXYqVDXU22RY>%^Yy+5#e<=NfA%JqEr`G|8P>lwp-J+iNF;dyV?czXVuHDBK6f|cw2 zg3m{tmFxY5&l_$CR^H;Q@r!!Wd6~2FA!qg1`-!;4`@i(_!JlG#%dy{H+1D>SYdpQ* z@OkMMg70Fy?Rbd-z5h|Y?CbM;gO%(3jO8=*@BDH2KIKI`gzfv1tU2!YSpD>U$pLr? zAD(zS&YKGT&%ou_ety(~>+umu{WZ7~+s}sv@DR579>&wyzQ38p%h<;IBhGs){qrxCz_#o`yTIzMs+j7vN!R<6VhovF*Q`@ftodseb?$KM{_{ zleik&d@tY@mv8tr_d9Gq&)W}=U|WyAkDGD%@#HJmj_2vPa5}8#LR^V0zZ%!<^8K0| zx2;hR`3{%gjhinEKks`C_qzOdc+C0Vc-}dGo{=vN-{&2Ti=E$stDVoqEzWJY$NBSk z)cMPJ&iO&S(|HCLv3_0O`tSKZi>sVk_=cK#r)alQf9 zI)4+_InUvG=l|gb=i=u$|D9`blk-P$v-2&u#ra{p!}&M3)%jnz&AIe9Twl&-;|}Lf z<4)&?ahLNl?shI*;CMNoiF=(pai8-z?st9(4>)i8E#Id(SK}e)10z1}KevhhU+uuC zjog}jzdP>kuU+K*UkX3JxCf8mLOSVwJ&mWa?oaaH@S@AN{*K_Lkn88c1-L4y*Uxhs za9v`3KRk(T{MXXIurK&MxYhYncm(TyqxlE%oXf{?{>>rR_K)GXgVxW(^BioY8CJlogx2*3ZdA>JRaTIBqAi0_jUYkR6(z2=*9R=(t{JonBp z{zn+E>w$3oKZM8bYmhr7#x#lw~pLABP_4#}|>o+Uc_L$Xw*jc%@ z-{+<5AG31pFLS29bEdzu@>2G{)o1!UXZky5`a5U(b9__%oiqKNGyR=2{W*V9{hc%Y zoiqKNGyU(~rN6WCN#~0=-m|!u*X{a{ZGP1^js$m6-;B#$y=?XOkoRN%_u%@t{w&X| z*IDDY-yiZP=--36Y}eN#TYuFzaDAKqNPVlj-Zj2#x$0|1gI~ME_TWBVx9ydE{fhG$ z)URRtd6UMMt^QK-;%}v&FRj>e)ps~+Jssap=e^F#haXJm6VA#@#?pDYv+{Xo&A;rd zyqWuL+~Ut~y8oJ$k3Af${z$R)III7>v+}9&bpJVL#zF3$zZK#!dZFNRLJxHpwG9=w>hjwj$6F`;U|MN-jcJ%TYWm6SIz}1Z}@fa zYnX5Tsr2VvIc~Yp+2jlOAYRbt#gE{upM~F-xB(YC-;JxV)jx`xUH&ZY!di#M`v)F! z`Ccz_zThL0{3yJN4^4bBF8q1;@1vZHtMK7TemQQzC5gX)d$I0cn(rHU%GLiEui> z{I|GhcDLyNb9O#(R$bM-KN%(($Ed`jMU9FnDpibg@7z0oVpI}HBuWyDBt=Cpm${c= z!pz*s%$)#fw5S-VrZu%xsm7N2Xd5e5e2t1W)u{0qTdZkIEBaC!6U)CU()zK3f>9sRs0X&Tft9Pd>VWwSn6H!(|3yg>*3|# zV;=uYz-K(X5xnFdGWln~mx5h=+z#FZewxPrN8p`cm)^bLeIEWg_^`)+27DCkJXV00d^KwymxG7F(*Gnso4}jE7b(6OyxZfy1AGwd%IiDyv zz)O#3?dM_eDzKwJ@%zk2!7jd);Jsj%{*~ZEU{`;e!Nu`!4G)&=ioCQUi$CUmlu8*ycBHnWA_ssVm@hqPflJ5U2rcS zy^>z{A2a&Z&^LVpdts3ceBTSD#V_&o!tb#3GYRjo&^LHk z=#rjK-}%i93w^JLC4B2!dHS@6KZ<;dAIkQF{uTJvLVFTyf3|%+Nd4H~lamwh3wG`6 z(LZFo@UWzR&1;1!zh@dfvd>Fj=zH-A+uzfT9=glJlAog|^78LFna9Vzo5!a;{7mF= zKi7Ve?`8aw{$Ve@5dUz2f4_%+IS~H=k1p|_CzDb0d%DU0ic?wolE3|@^Z1m9L-L&X zLB=of@BDEdZ}!p)h2LG^zw42F`2AjZk?(MU{(wi9^iTV^P#!|Rl=fwR=NrAM!1U(| z{Oi7H>E|SmPhJY%*tG5I9CiV}0(=McZSE85;r#%xl;4ER*TGG&l-D$o3LXbb{V!HL z4Ho%Ni+u+D7Vu)?Gxi~PFZdqHbBXf52fUH+w<`W$U}-PIia!j#>tEDgMfgvGC%o`q z0zZO0o0b1>!6yHte@+kQalo74H~NO~{{~)5dbcb8Pr-hCegA=eyjjbm=LbJu2A2Bk z7yFR#&jX(!y=@x4TELfp{qngSd^`C!=bs7x3b3nRiSO0mJ><{Hw-qeybA!e|3*P7D z_sw9xJbtqf{!Z{Q`meb!oB00_yn_5L)A&9LKJee_e}w)yuwUPQ1@_bb8rU!2Z-RGw z@|*^XelYKy6W@P>Mc*vb_VVa6`S4EwuhRYG=kz=&xe&aZ@S9b>72xB@e@Meu!27=c zsH9i%C19t2r2Jl92!8|k1np;y#_mjA;JcA`sfPa&SoFo6+Ft$^?AQN4f&KiP0xzR}R%rO2fc^S9_ea#1m!GGBoqm@5 z|1#L=cfo^TKR;{0e*D*g{qk)Hzn7mWu-`v!1)tIJ=p6dPTfu(&5`8sXr?Z*gW6XH6 z*26+y=izq|UVex9dm?`y1k3$&Yl-5C`1kHp`clSsq5p&8JCy(XV7V{C;=ZKsKM8*x z_q%HNXM^Q^aYmi@dt6~9Nri$0R@ z2NWML^d$K>c$tpB7hvyw8N6Xh)AasR!|&Ai&igU{!%y0)#Q#f* z*D4-REa%6CeiitkpY_!S zzB|COzkH+8KdE%v{*vS`71ON^|4GG575`YVYv1So6!~`bnDJ23TLzZjFn^NXCE$nN zWA|qY{W|cSuUlmHD+-=aep??&@^y`NXl67GD+4hwrV}i$f%zX|* z|5fn%KVUsZ%kO>4e-~_$-w%WDhkuE|eaWZ5az5I%m#=|qUjO?S@TMm&O7@xj^(Bva z1bzM*dmoLY_dKxtTz+2x9)8av^B$Pc$CZ9S+sj)NFD8u0bGzc2;`f2~a#_*_gZq*{ z0n2#>*B<^Fe9sdWnf=ZZ|49um6I6-!uPZVWxeT$#`it2ya(*`?+?N9bM^J;|Avk}vF)!f zd6HmH-b=vpOUqO7D!z&Q4e(NoN88@}l3T%YU!&7s?{)lI-ghfrq4<8q4{Chh2Frce zCk^gPegc;B<;S%BT<~)U{5J6?=|5fZc^cm^SnkJIW9WU!6-r;J^w%l2@+L_~aaZHp z4PN$%9%Ii+dF})6TxG|9!5>imOO^j)V0o|XfTs5VxOR6>+F!q|{I@IrPZVFM_)*C@ z$!6B$_GJ56 zIge}Qp*?`*=jwYSSo|NiD*pud{Ofzu@V^EY|M^;_|Bi;g%itvWBgF?4e*!G$@eV5g zG4S13cl}28UIrkk=|3X@oE5k>L)$sJ#ndz4Pf~>{n1uDtoGC!!E)d7 z{U(0)*MsFe@NUI_r2LBwPLj_kKC1Zd74KAhTJc7W{|UV|{f$b0j^Zk&Es7w346qfLn}Tmm2=Q4K@Z0n1?Z{Tf{S%1D7Ea&H}e(Pf^ zxeb3m|A_v33;5`Jd(!gzU8S#uCiFj6yhr&zqu7qe+>Hia|K+TGol?4MUq1)C`H{%~ zxJRQ8{!i9EF9OSNm_JGHg@Wmis|;p51K;;Ii&A^F1zvL^3;zbN+|Rt+$k&(rzJ%xZ zhzXx09|g<({TBBnUsk$H?;DD3`$>|20dL&bYvz+8?;~Kj|JRMzPnCk?cT(eDso3e; zOTfKbdXtCLzPw)Pw<`ZQSk{L&s{QdBU^&0w+Q(t=vLE)O>D>=LGu~_7M;3X$4VK?h zjqg9f`*xjc&X)-NDUY%Ahn2n(d~8QH-?&`q>tU1f-mLgS<)2Z!S^Li(@WyvBo}DNB zeaQjv+ADjKmgetM%0I03%ICqdUTXDYU-D1jBlr{K_e4&?e@FRuYI+YVUZL_lrq9Yh zq4Zx;e7E8u#WsHC8j24o{q^AWU&-3X9C+QByH2e|`e?;+piodMb zrT=a41B^fNKCG0-qaKU?`PZ!fTm+V%tDlPEgBssz@S(Lm>G;%C`t3^JQ3$^eEca3D zGjz%yEbo`t_|bRZr7LkJnDXmO?gt-#1Ik75zk=mAY{Fw(DR%YUdp>mRkKKmempn}{ zKUe-QP<+JDlVk*Z`tezRTo3Nu$atsaF|GWMnDmq6x553Zv-!mlu-x~)RQdl>!ZW_D zH}Ur+4{3PUzs`M}mFHfK?-v!XQhDlNc~91k7mUx~Lm%l$mT7!jl;73IPVnY0_N4aK zJHY#P_9iDy{Mb9--QUaXi@(zFu719w*tNHw$HU)b{;BCb87#kh491oN-|>#Df3H{i z8KpPC6F=xt`xt*Hc;#Cc8UL!ZulIuQ9mc*;`97lIUHyGpu?%z4pTDk{?rQM&6faTw zIZv?iNihrmQpK)(R)UWm$m(l7cz4UuhsCkf$z93o39^K`Uy?{6N>wtegHr6 zJJz2i`THSw&COZ)JWeLk{7z~3XDN2=VV&Yfl)fE&`d1ev(?*`Y4)r*O21p>`-ki zb@f?Q?Bv@3u6>jFh30p=(l=@NU5fh+o&KwMx6(hX*tPHf1Ma^pYcJm|(9ih=E6+}i z?*j1ob-Vs1<@0oE*G15`^x%z$@c;|m-^)m>T`$!MKBl5pY`E7f_ zJ_PT7EcTx2x9wngFWdHqzGOG}!RO<@G2?4r@&_7zzlkqN{v5pLSF`@`4W-|&^q(p| zrueZ>vhq6p^en}9DSb8g{`HSamKofaTo3O3FN7nQ$lq1|2bBLez;fTfLFGRv{J(`g zqx_!}`u0WYFY8Ob0-hkV_bL4h_~5fMdvno~A@FDuaX6@mvV0j;=rt!ZYyzv=}%>A|!|2^Q_w=7Ei zQ^&yaJE`&i3%K@YJ?Z%MQ>EXj^d~JP{ueX88r+xE!1AjZoFrE$w*FJ>ImN4#ek1t! z*E0X>o0Yy>>31l$<;PRa;G@{r`+IHs_&iwFrg(i_ChN zoL%x4`#5eNk#J?g4N5es4OT+7FiZadv9?egwSlPcwhf z-+=c{+V|Te{nKFC&$dnFJO8ORecN7=ut^X99$0=|gPEs*Pdx_xg$XC| zKjmrYyBAUZD*rH8ek+W8Nph{?&3qI2UjyFo?##dRt4eqM|92F-_I3y?_p`0h{C*DH zd*7n8KYd&IZU0A2T*&xzSvFq(0$A?fvg31K@&dt^^`!OnVzB(&`1VT0yZI*aPJoA3 z^``pp?Mip!$@>-C`eywEyf#^s`g{IH>B}^}?_|Z?d>D%&V?GP;Qk1f;uz6AU* z{^FH}AAbmV?U(SGD1Ac1JAJxK@m`Jp4#l-4Ha{N*Z@xAw|IaF&?qlxE`m$n|pKmL+ z`jWK@#TzvK^Ph1}a_5H@rS`%L!H1`5Un<{Pu>4&9Zcw~a!;dRIt@vieuKxEaMunOB zIH=g#14;4;@T$*J=bGMElh;&}fFEGI>sS8AK8yJ&_s^dPmi5Aw;1e&; z<_Fh-591$MtNgpb^0VU)YYh$?I%_lFyWfb8G`KJMEO>Zhk2#Ma`sO>}TUmd&Q0W(3 zWaE28^E0S;t>SCI2XF>Rd%b`h-Tg2rJ?Y1 z`K^GvkImN0R)d!^|GLM>$NIDK?=#~;lDq@l+LO&E-VeT~FDuU@%D=~iXYF1w&CK-o z(_ne;?m>Y*6|$!4G2}+4AX229$2wXOdhlblTqm4ZjuKzr812Z|QuK14>Tm8ViUhzq#A6L9v@ejazy!q`# z&t-nQCbNfL0$%U=XI}??_#if~3D0^bSbh%}oFwl8%l*dpn*8=9hrzpljy_cU1@P&a z%)j-I8vd|`|B>RQikFBX!S7!FWISF0p4iCxwZVPK)!^L^WbJtyxcBpmKmt z^O-N}{N;AA{O;vX;=2pH)br1O5qzSW`J?|GEca=54L|Eczih+X{3prt!JE)`uD`q- zeDrOZ{WPZh2UWj!!SeoOSIgr!l|G^J8~`7FCvAWMS>*o|c=#9aUuybaQ2tZO{~hp} zWm)_DF8HClv+?)m;CtV>DD}tw((}-N8?yZg*MQf)K3i|!4!-vs3hBn@8o|5_zdA)`(6!R>e&-ph5oT@ z{JRCb;*#E!|F^(vpMP$ue?A7@{Oi5RF||jJf{*^zqSXHT9$4-(zLz{m`92JmAJYQU z9-bhIj^7#nqX%D z+aD?8!#McT-_7**UI~9s)?N;QlNS32RGz;U%KET^;h@< zv^~5)>33>=UkaA@SMS#JuUEQjZV{h_+mj3~zyZDbNen9#E4t&1XzJCP1_u1Kc|Ahlqz6s^8gXMl-*T2_; zm;Wj4wb!<%4tSXN)eac`zT|fBBls6w`F{v3_nR(O`scw%w`BU@AHedf89M$Z@QIz- z`0}T+K_h#ks4)CGpEK1Y=J+Rz|zER`*Q}E#%Gx@&;-iiO)jrTtR%g?6I_%>+q zJtjQ;Rk4i^KJccWW%d73@GACy+-~^sAA@&xv-PqW4S!tY`%Ul(_J_$&^!dA$?)1Z- zgZppG_A~yy(r?x9-vHmweha6MeyH@W($5{DKJX7%%zilVp|@r74uJb-vi7+Ne9!aj z`&`lud3FKED@&AAB?V+R)jb z3Eq2kZ(`>=eaUOU^1D;hp9Nn?eY^U4o6;Xr`uo6_zQdkBk@@SV!2NH)pR4izz49MX z{{IlV=RbM$2>!UsviP3?mY?H)p<+>+GG43!ul4qeZc)0c-#03@{WnQ&1E28x7avr5 zSL6Ev_?V|({sk=eo1-qwdQZ@j%5BmYI+)uSe`9G=ru0MQ5vF+bU@@>U61Qz*ztazgdpCnIs zk(J-J*Ce?Je0%RAb6>c$w_&i{H|FYhqw>4)e^#+uKY1Hi?w`I?<$E9a)O}g~{TX8l7M<@E){&K`LPeBm>*_1*tc`W?#u$5NUb8s*9vD?Jomz)60@07`J zlKfP$>km(V3E{`H{YEbV%df?s349!VS6%R`DUlUsY`NQIh;CSnlgwZs^>9E(Cr~-#iU`;bT}o zG4k{!b+EkWzFYBn<$pls-Ku!Ki4Q-&;#G>@s(4uO?|@s+Jva5Y{4w}A``zvM!+tUF zQg46eaqyY9GDkJx`;s4k<#*iRBzg2@7Q6EOMey3&&Q1N_HKiX_{;R>;n%Q}PY4Cph zZ>~J<0LyzJ2Mj;!m4ZF{{u5xi-+iN&$8qqHYqI(9!$N2O+pQY@ahJo$dzvo36@vLW zd;1dbgcfs=B zk1NlggEt+=-=OyFQ&wB~4r+WuitknYD~gvYo&_%-p#K}p{z;{~{{IoMyuWyWBX*)6 zJ`FzodB$v&=a}-Z(D=Tq_<-UcgCCk=eMsYf{2D7?%Y|e!qD!xT=P4U~oazE4(6CeBS z!E)cStDnz<*We#>`u0D-_x-`S>H6G~msxp^t2`^fo0%W(Ht}=51AO0A8GlpxoqXHD za{rXmU++-*HkI#p!4G~q^B>-$bXT8WQG8O<{}K4!t<;C+=P_%oe3rk?ZdL5`_q!E8pzOgTN3;#1``j+n@LyHB-5%w zr%zTZK5FRLlZp>1-UiBGjxG#?2ow}UZJlAFJ8ocZxbGWit-;c^dz|%yy}bR zrtR%Er7u-8Z5tI&F`4v{TknH#mm$`_#VY~EB%P#hZKJiyw}rjUkBgG`si{)?@Rsz z+VuKfL) zpZ9uT$AIkh?9{?}G{#^!-w5KnC?^>3v*L+Lp*pn{* z4};~m!tf`_V_${-`B*mIuK>%>jxR}a8F*DUJKwlf=|^Fc_I@*X&7sU6_%`A9&L{mb zcpv-goId>+c>O8Pv#9?13Rr%J`IGp*qj;6Z|1-sh6ffDpeCmVjH#Yq2#{reOz%(`M(5S zdw}_b#{XUL@b_7xRor(2|HIGLKTq$1H?sfDm0wNi%Qe22fe)tsqbDb?0`Iwn{aza1 zB=}a=U-ub)?!N%9{CE6~iVuM0J>G+g?*+@x^^Y%umwzE!KmM-LU48fb3i|6vcAoQ@ z;9l(el^WkGz{_v!N!N3>g5~G>=MM0?w_;N$|J%VwZ$O``{C@=A`>bq#&1W_IQNzzw zOyHBR$oz>9gXR6rlN#TmjW#`}&z_`sy@r2|;!}$2;N$1m`wgXiTn)baqD9F@ZU1ed zd;5j=YIvvLKM3CchuQr7bB=D-x4BOMEbk{DQTfh*k6?cdYktprwUu|b%5wpD1N;3h zRsLrw-M0TEse^s{Np1q~|C4O~ z^DeNw7wXFA_rYuFZz7NE&;L01LgtTFKGuW5@^kq;sd$-5AHpU}xAjT?R_yY(++o#U zSAo~B%J#$E0PcNJugc%Y*-{&yE6=wmeo({zzT$0~{$cR#cd#CdDAK&^v+?A);QpmqelG(bKbh&@*MKK}oBazqzR!Z?cfU!G{U+c`8BAP# z|2}v<_OsI$hn0Vw%6p&C8803EKfo*AyC_{RecbEO=PNRM@*=SO-1t#de2=F8O7QxF z*?k{3foq;W{$0xdfb#z#_|ko}DTCQ>t#sGk{#Nk@<^PuAhZHYr(4M^c!ZX2(z5eoI za6k6c3XT7I@E!)Qe#JL}@1Xvz{C&xc@Kd?_mHsZU{3Z-$-5Y#H)@w}p^(7A|-LCb`pabDepe>=GQyVRe?_W`inFY5Z&Ux3#8uh9AR?}ArM_onB4 zJ`8@4`zD4p{1=tq>hC1^cg3!}7jJ=|^}AzQ9v6d`{WAVo#aDsvyD8f*(**DF?5}CC zyeI7R*_*-gKJNKO-X|vS2A`n4IC(xS;l26z-+<-UH4_MxFJ!mlZKY?4!_m?TYNBOON#a%w&qu&0l zUTHY|4jX>fkHE`W-*)l67(DIGKQ@Bz!=HD+@b@Ke*6rZ@=o>*MX0`D{J3x03UsCZ+d?C z-Hu<={}g!1pJCsrzI;%^k7WMqpMZz4FYS22`G>9WGd}Gx;kj=Kyf4Z8)h`D>_=0Tz z(I{Acu0QMsAAAn}B)&<1c@OyHr`ex-uEqZwyxH3?{59~cU(EI+{}e30VjP{4_gn(aS)%@-H+0;#0wQKY{&|TK>MDb~* z_l;ZmcB_7R7I^u?+<#-_ML&Zdd{ow6)+@i$ms`R2<1cgN`3CTcYkQORMn2Aif_;DL zA87bHH2qJ4mpnT2=N$u|s$hQ`dSCKA@OtR2UfZ6|ztPI;%IA6DyH?UZHNDFPvpL7< zw^8LkqUpU6yxVIJ?*<=bKIr&A4wm=gU4Qs2_?{~>d*lT8;rH|=M>M_v0?W_o>!)l- z-p^#?(~H6K>l%K>GsQ0dHx=l&fgkwAY=7ci;5$EYuKJg_FA99}ec62b>l)sTN2e68 zAWdn{KL_u9ZnnQ=$%K{Xu+pC|*jrB;2Dccj)@XUZ9DK;LXJ$0~-5UNj#j8|b9R%-| z^;ARW{xhY!`ua!ko$qJ#jd^H zuh`Y+*TBnvvp3y8@Drsk*6>g0*!bLdH3(k5F0)TwCDEH2gckr|@qr*8Kf1 z@Veh*zG&!u$(O*(zLd?szoy}DH~dNRBgMA^7}_1cRB^P5)v^HT8Q zS7-NyjVZmR;dd!^?fqSfZGA94E529xKMmgS2F47P|0MXqB-`)!-{9RVSufD~f7(q} zo(DC2U9oGwSAlnaqbIpXQC&OvGP8o={*m8Kl;t-ua_#__4kd6U3qoE2RwhzTaBr|N-lp*nDt7X%2QOv+ zpzB{9rMvon3;57;?0XVoZ@dru5O}wVuP^yCa0~ydtuM}hg4d+^ds1=|EWdU9a}odc zpqL+eA^lVBm8XE^caVQXfA)i?z4_HON?)S%F~xVlEBx;SAMotS4}kAHFDtLRmH#f~ z|Gd!I-*3lL?!y4z&HBP#L+5-bcxBzn^h8cs{U^Bfm)U&#sdMl%f4A+G^S0na&CLJ1 z0emUb=d=Grrt(kpuJ6L`Up+^1>N_gsbxu*X`@V4!&KdF8CU9i00yTs(bFIjXm z`8|jI1B#yu-v5f8bbaF$;Fb7~U3-2V*!&DX`^pvXHtBJ{ANY|U(LZ`c9_%%xpHTW? z#rG)w^FsJ;FGu_$l z+}5oyG#W2oeO+VSRj=C6XaHKB#@Iw>OLL;p>UL&k8_l_$$!KSCdZOKJw=N#64pzfV z4N0%joSA9vYP6@iGrN+lGtJ3%qct}D<^J?IP1;r`4Vy zY42-ebfP&sYk~&JGi^j3Yj@!rpKf%=C)@M0X<~>yu>fatdb%-1R^stBTdhWSra8Jj z&N9(yw&K*;=FQ>gDb(h~_$^`L_!Lz-HQJ6B%2<14Gp)wfc6W4J zd#0iFJ5D1hm2#Z5AX}W#RE=vxN#o}6_KwD6yEWdVp^S}BwHuNy&2$ST*qEN1m~97m z@(f8M)I^9!rEsaW0x=a?lEzr0vqf4Sp||#HEyc5wFZM=b{dHGt*zoGcmDgXhdc#%M zUejn?T(8v!>$Le0WuQJ1p;U*4B9wvZK!j4Q3`QseBf}9&e>Ems|4@ul8>l8@jaHjF zZ#TNTrlrko?U2#I;aZqbsSO6(`*d>#^)aH>#8_jt6jLgAsteLD z`BF8ErQ)BH`A(&6frzUFLsmpdDRE`!1W`(hO%L!=07(zaPj9(Md*Je@v4Rm8?RNBp0 zcY9;UcuR)493d+$hVNTCoymM`^rSg5E1|c{b-SW&C&ov&7mHFxp~l!ub9$R$ZH{)$ zh@hG|A7yh(XRf<2+qU+^H04EepX$yo%sw%`Wu`f^E1x+NZ2nx6BQvUK_`Ik-WnmF! zr<&6Xb4eLDx~a($43M^Oq%-`KSY9&s)dZifW^# zybSNg6kaHLQPSGg<`rXZN=)U2Vw-Nxo=s$ZPia()HeG&f#oWlqxBa$Y^d4I=g

(MLpA=?8vCTP|I}O#`IZ` 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 literal 0 HcmV?d00001 diff --git a/marina.mk b/marina.mk new file mode 100644 index 0000000..1320f7d --- /dev/null +++ b/marina.mk @@ -0,0 +1,176 @@ +VALAC = valac +MIN_VALAC_VERSION = 0.9.1 +# defaults that may be overridden by configure.mk +PREFIX=/usr/local + +INSTALL_PROGRAM = install +INSTALL_DATA = install -m 644 + +ifndef MARINA_VAPI +MARINA_VAPI = ../marina/marina/marina.vapi +endif + +ifdef USE_MARINA_VAPI +TEMP_MARINA_VAPI = $(MARINA_VAPI) +endif + +VAPI_DIRS = \ + ../../vapi + +HEADER_DIRS = \ + ../../vapi + +EXT_PKGS = \ + gee-1.0 \ + gdk-x11-2.0 \ + gstreamer-0.10 \ + gstreamer-base-0.10 \ + gstreamer-controller-0.10 \ + gstreamer-interfaces-0.10 \ + gstreamer-pbutils-0.10 \ + gtk+-2.0 \ + hildon-1 \ + hildon-fm-2 + + +EXT_PKG_VERSIONS = \ + gtk+-2.0 >= 2.14.0 \ + gee-1.0 >= 0.5.0 \ + gdk-x11-2.0 >= 2.14.7 \ + gstreamer-0.10 >= 0.10.25 \ + gstreamer-base-0.10 >= 0.10.25 \ + gstreamer-controller-0.10 >= 0.10.25 \ + gstreamer-interfaces-0.10 >= 0.10.25 \ + gstreamer-pbutils-0.10 >= 0.10.25 + +PKGS = $(EXT_PKGS) $(LOCAL_PKGS) + +EXPANDED_SRC_FILES = $(foreach src,$(SRC_FILES),./$(src)) +EXPANDED_C_FILES = $(foreach src,$(SRC_FILES),$(BUILD_DIR)/$(notdir $(src:.vala=.c))) +EXPANDED_SAVE_TEMPS_FILES = $(foreach src,$(SRC_FILES),$(BUILD_DIR)/$(notdir $(src:.vala=.vala.c))) +EXPANDED_OBJ_FILES = $(foreach src,$(SRC_FILES),$(BUILD_DIR)/$(notdir $(src:.vala=.o))) + +EXPANDED_VAPI_FILES = $(foreach vapi,$(VAPI_FILES),vapi/$(vapi)) +EXPANDED_SRC_HEADER_FILES = $(foreach header,$(SRC_HEADER_FILES),vapi/$(header)) +EXPANDED_RESOURCE_FILES = $(foreach res,$(RESOURCE_FILES),ui/$(res)) +VALA_STAMP = $(BUILD_DIR)/.stamp + +ifdef PROGRAM +DEFINES = _PROGRAM_NAME='"$(PROGRAM_NAME)"' +endif + +ifdef LIBRARY +DEFINES = _VERSION='"$(VERSION)"' _PREFIX='"$(PREFIX)"' +endif + +VALA_CFLAGS = `pkg-config --cflags $(EXT_PKGS)` $(foreach hdir,$(HEADER_DIRS),-I$(hdir)) \ + $(foreach def,$(DEFINES),-D$(def)) + +# setting CFLAGS in configure.mk overrides build type +ifndef CFLAGS +ifdef BUILD_DEBUG +CFLAGS = -O0 -g -pipe -fPIC +else +CFLAGS = -O2 -g -pipe -fPIC +endif +endif + +VALAFLAGS = -g --enable-checking --thread $(USER_VALAFLAGS) + +# We touch the C file so that we have a better chance of a valid executable. Bug #1778 +$(EXPANDED_C_FILES): $(VALA_STAMP) + touch $@ + +$(EXPANDED_OBJ_FILES): %.o: %.c $(CONFIG_IN) Makefile + $(CC) -c $(VALA_CFLAGS) $(CFLAGS) -o $@ $< + +install: + mkdir -p $(DESTDIR)$(PREFIX)/bin + $(INSTALL_PROGRAM) $(PROGRAM) $(DESTDIR)$(PREFIX)/bin + mkdir -p $(DESTDIR)$(PREFIX)/share/$(PROGRAM_NAME)/resources + $(INSTALL_DATA) ../../resources/* $(DESTDIR)$(PREFIX)/share/$(PROGRAM_NAME)/resources + mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps + $(INSTALL_DATA) ../../resources/$(PROGRAM_NAME).svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps +ifndef DISABLE_ICON_UPDATE + -gtk-update-icon-cache -f -t $(DESTDIR)$(PREFIX)/share/icons/hicolor || : +endif + mkdir -p $(DESTDIR)$(PREFIX)/share/applications + $(INSTALL_DATA) ../../misc/$(PROGRAM_NAME).desktop $(DESTDIR)$(PREFIX)/share/applications +ifndef DISABLE_DESKTOP_UPDATE + -update-desktop-database || : +endif + mkdir -p $(DESTDIR)$(PREFIX)/share/mime/packages + $(INSTALL_DATA) ../../misc/$(PROGRAM_NAME).xml $(DESTDIR)$(PREFIX)/share/mime/packages + -update-mime-database $(DESTDIR)$(PREFIX)/share/mime + +uninstall: + rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_NAME) + rm -fr $(DESTDIR)$(PREFIX)/share/$(PROGRAM_NAME) + rm -fr $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/$(PROGRAM_NAME).svg + rm -f $(DESTDIR)$(PREFIX)/share/applications/$(PROGRAM_NAME).desktop + rm -f $(DESTDIR)$(PREFIX)/share/mime/packages/$(PROGRAM_NAME).xml + -update-mime-database $(DESTDIR)$(PREFIX)/share/mime + +$(VALA_STAMP): $(EXPANDED_SRC_FILES) $(EXPANDED_VAPI_FILES) $(EXPANDED_SRC_HEADER_FILES) Makefile \ + $(CONFIG_IN) $(TEMP_MARINA_VAPI) +ifndef PROGRAM +ifndef LIBRARY + @echo 'You must define either PROGRAM or LIBRARY in makefile'; exit 1 +endif +endif +ifdef PROGRAM +ifdef LIBRARY + @echo 'Both program and library are defined. This is invalid.'; exit 1 +endif +endif + @ ../../minver `valac --version | awk '{print $$2}'` $(MIN_VALAC_VERSION) || ( echo '$(PROGRAM)$(LIBRARY) requires Vala compiler $(MIN_VALAC_VERSION) or greater. You are running' `valac --version` '\b.'; exit 1 ) +ifndef ASSUME_PKGS +ifdef EXT_PKG_VERSIONS + pkg-config --print-errors --exists '$(EXT_PKG_VERSIONS)' +else ifdef EXT_PKGS + pkg-config --print-errors --exists $(EXT_PKGS) +endif +endif + mkdir -p $(BUILD_DIR) + $(VALAC) $(LIBRARY_NAME) --ccode --directory=$(BUILD_DIR) --basedir=src $(VALAFLAGS) \ + $(foreach header,$(HEADER_FILES), -H $(header)) \ + $(foreach pkg,$(PKGS),--pkg=$(pkg)) \ + $(foreach vapidir,$(VAPI_DIRS),--vapidir=$(vapidir)) \ + $(foreach def,$(DEFINES),-X -D$(def)) \ + $(foreach hdir,$(HEADER_DIRS),-X -I$(hdir)) \ + $(VAPI_FILES) \ + $(VALA_DEFINES) \ + $(TEMP_MARINA_VAPI) \ + $(EXPANDED_SRC_FILES) + touch $@ + +ifdef LIBRARY +$(LIBRARY): $(EXPANDED_OBJ_FILES) $(RESOURCES) + $(AR) $(ARFLAGS) $@ $? +endif + +ifdef PROGRAM +$(PROGRAM): $(EXPANDED_OBJ_FILES) $(MARINA_DEPEND) + $(CC) $(EXPANDED_OBJ_FILES) -lm $(CFLAGS) $(VALA_LDFLAGS) -export-dynamic -o $@ +ifdef GLADE_NAME + $(CC) $(EXPANDED_OBJ_FILES) -lm $(CFLAGS) $(VALA_LDFLAGS) -export-dynamic -shared -o $(GLADE_NAME) +endif +clean: + rm -f $(EXPANDED_C_FILES) + rm -f $(EXPANDED_SAVE_TEMPS_FILES) + rm -f $(EXPANDED_OBJ_FILES) + rm -f $(VALA_STAMP) + rm -rf $(PROGRAM)-$(VERSION) + rm -f $(PROGRAM) +ifdef GLADE_NAME + rm -f $(GLADE_NAME) +endif +endif + + +cleantemps: + rm -f $(EXPANDED_C_FILES) + rm -f $(EXPANDED_SAVE_TEMPS_FILES) + rm -f $(EXPANDED_OBJ_FILES) + rm -f $(VALA_STAMP) + diff --git a/minver b/minver new file mode 100755 index 0000000..dac8545 --- /dev/null +++ b/minver @@ -0,0 +1,86 @@ +#! /bin/bash +# +# Copyright 2009-2010 Yorba Foundation +# +# This software is licensed under the GNU LGPL (version 2.1 or later). +# See the COPYING file in this distribution. + +# vercmp +# +# Returns 0 if queried version is greater than or equal to second, 1 otherwise. +# Set VERBOSE environment variable for somewhat useful output. +# +# NOTE: +# This is an ultra-naive implementation with just enough error-checking. + +usage() { + echo 'usage: vercmp ' +} + +abort() { + usage + exit 1 +} + +verify_cardinal() { + while [ $# != 0 ] + do + if [ $1 ] && [ $1 -eq $1 2> /dev/null ] && [ $1 -ge 0 ] + then + : + else + abort + fi + + shift + done +} + +# check_range name number min-number +check_range() { + if [ $2 -gt $3 ] + then + verbose $1 large enough. + exit 0 + elif [ $2 -lt $3 ] + then + verbose $1 not large enough + exit 1 + fi +} + +verbose() { + if [ $VERBOSE ] + then + echo $* + fi +} + +# Check number of arguments +if [ $# -lt 2 ] +then + abort +fi + +# Parse arguments into integers +major=`echo $1 | awk -F. '{print $1}'` +minor=`echo $1 | awk -F. '{print $2}'` +revision=`echo $1 | awk -F. '{print $3}'` + +min_major=`echo $2 | awk -F. '{print $1}'` +min_minor=`echo $2 | awk -F. '{print $2}'` +min_revision=`echo $2 | awk -F. '{print $3}'` + +# Verify they're all positive integers +verify_cardinal "$major" "$minor" "$revision" "$min_major" "$min_minor" "$min_revision" + +verbose Comparing $major.$minor.$revision against $min_major.$min_minor.$min_revision + +# check version numbers in order of importance +check_range "Major" $major $min_major +check_range "Minor" $minor $min_minor +check_range "Revision" $revision $min_revision + +verbose Same version. +exit 0 + diff --git a/misc/fillmore.desktop b/misc/fillmore.desktop new file mode 100644 index 0000000..dfa8db8 --- /dev/null +++ b/misc/fillmore.desktop @@ -0,0 +1,13 @@ + +[Desktop Entry] +Version=1.0 +Name=Fillmore Audio Editor +GenericName=Audio Editor +Comment=Record and edit multitrack audio +Exec=fillmore %U +Icon=fillmore +MimeType=application/fillmore;text/yorba-media +Terminal=false +Type=Application +Categories=AudioVideo;GNOME;GTK; +X-GIO-NoFuse=true diff --git a/misc/fillmore.xml b/misc/fillmore.xml new file mode 100644 index 0000000..d3fc2b8 --- /dev/null +++ b/misc/fillmore.xml @@ -0,0 +1,15 @@ + + + + + + Fillmore Project File + + + + + + Yorba Media Project File + + + diff --git a/misc/lombard.desktop b/misc/lombard.desktop new file mode 100644 index 0000000..68e0525 --- /dev/null +++ b/misc/lombard.desktop @@ -0,0 +1,14 @@ + +[Desktop Entry] +Version=1.0 +Name=Lombard Video Editor +GenericName=Video Editor +Comment=Create and edit movies +Exec=lombard %U +Icon=lombard +MimeType=application/lombard;text/yorba-media +Terminal=false +Type=Application +Categories=AudioVideo;GNOME;GTK; +X-GIO-NoFuse=true + diff --git a/misc/lombard.xml b/misc/lombard.xml new file mode 100644 index 0000000..030d4fc --- /dev/null +++ b/misc/lombard.xml @@ -0,0 +1,16 @@ + + + + + + + Lombard Project File + + + + + Yorba Media Project File + + + + diff --git a/resources/dot.png b/resources/dot.png new file mode 100644 index 0000000000000000000000000000000000000000..870fb34a9767732cd6a6ec3c5f4c31ca323dabbd GIT binary patch literal 746 zcmYLGOKTHh6g@Nf=KV-)G1G{a;>t~S?LyqdHX#kzQi`NDL{KoL3bm4sEmP7ajAO3BW0><~M1#*>#oH z^2_QE+N6Wc;xbOYUO%Uc@nUuR0I+7+CA2=w(WB;<)(YBp$@XsE(Y#EGo-%&nfxoi9 zw^w`aW2Ihu?AM+w96j}S7mB5|jjdO%2gqBc{N4Mvu1fdh&w&(05%K=p#b|_I!y&>j zgsQ5rZ5xWB`~!%~(|9~awOZY#`wn@Id`R9QZ#A3Ew&!_}Bnfeb@%T4^AHJhcYGZ1; zu0zu`s6v4x%g0BDhyIQE`6;1XE_38h3{4~i94f=KOc;g{mnF+GsPsy`UT=%h#fWiS z27wbuCf(R=%Z6c^&@>G)y%S^SyxS$hFeWT9!EtOjE)m>RyxX<~oyrnI5FShYejg$T z0>;LXOv8#*aa;$fWD;)Dp|UJei3nkYKZF%59a)D`=QL{6)D2iB5nY=~qfCxN!Bm7n z)ZqaL)|srO2$54&1uA_q(J;(7TPk%076~w!Oj;aV=Ap38EFJ624JHyYC;(LYGYlQG zGc(7%Uay@_ry+BA9!jIp@F`^_3d7ToIt+qvI0=GN8ffL)*_ofsW*Iu2LwurTFc_fQ n?V{KFNlgZDNwK+11|0d)KHh$_`2N|K8sAHW_58{5qt|}{j%=vc literal 0 HcmV?d00001 diff --git a/resources/fillmore.glade b/resources/fillmore.glade new file mode 100644 index 0000000..f14a832 --- /dev/null +++ b/resources/fillmore.glade @@ -0,0 +1,310 @@ + + + + + + + 5 + Project Settings + True + center-always + dialog + True + True + False + + + True + vertical + 2 + + + True + vertical + 6 + + + True + 0 + General + + + + + + 0 + + + + + True + 2 + 2 + 6 + + + True + 0 + Time _signature: + True + timesignature_combo + + + GTK_FILL + 6 + + + + + True + 0 + Tem_po: + True + tempo_scrollbar + + + 1 + 2 + GTK_FILL + 6 + + + + + True + + + 160 + True + True + tempo_adjustment + 0 + left + + + 6 + 0 + + + + + _Tap + True + True + True + True + + + + False + 6 + 1 + + + + + 1 + 2 + 1 + 2 + + + + + True + timesignatures + 0 + + + + 0 + + + + + 1 + 2 + + + + + 1 + + + + + True + 0 + Metronome + + + + + + 2 + + + + + True + 3 + 2 + 6 + + + True + True + volume_adjustment + + + 1 + 2 + + + + + True + 0 + _Volume: + True + volumeslider1 + + + GTK_FILL + 6 + + + + + During _playback + True + True + False + True + 0 + True + + + 1 + 2 + GTK_FILL + 6 + + + + + During _record + True + True + False + True + 0 + True + + + 2 + 3 + GTK_FILL + GTK_FILL + 6 + + + + + + + + + + + 3 + + + + + 1 + + + + + True + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + button1 + button2 + + + + 40 + 30 + 130 + 1 + 10 + 10 + + + + + + + + + 2/4 + + + 3/4 + + + 4/4 + + + 6/8 + + + + + 1 + 0.01 + 0.10000000000000001 + 0.10000000000000001 + + diff --git a/resources/fillmore.rc b/resources/fillmore.rc new file mode 100644 index 0000000..85d92d9 --- /dev/null +++ b/resources/fillmore.rc @@ -0,0 +1,22 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +style "pan" { + GtkHScrollbar::fixed-slider-length = 1 + GtkHScrollbar::min-slider-length = 12 + GtkHScrollbar::has-forward-stepper = 0 + GtkHScrollbar::has-backward-stepper = 0 + fg[SELECTED] = "tan" + fg[NORMAL] = "dark slate grey" +} + +style "hseparator" { + bg[NORMAL] = "#666" +} + +class "PanSlider" style "pan" +class "VolumeSlider" style "pan" +class "TrackSeparator" style "hseparator" diff --git a/resources/fillmore.svg b/resources/fillmore.svg new file mode 100644 index 0000000..1a403f0 --- /dev/null +++ b/resources/fillmore.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/fillmore_icon.png b/resources/fillmore_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15c6d6334bfb64c5c87e4d0559596a85b9dfd6e0 GIT binary patch literal 4395 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/lombard_icon.png b/resources/lombard_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6d04d3a6bd214a0105fd139906cb6a3aaddc7315 GIT binary patch literal 6620 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 E03&_2MgRZ+ literal 0 HcmV?d00001 diff --git a/resources/min_speaker.png b/resources/min_speaker.png new file mode 100644 index 0000000000000000000000000000000000000000..70c444668e8c341fbc7f520fdac4b6dff045170e GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eM!3HFEez+qDq!^2X+?^QKos)S9lgTe~DWM4f2}?aQ literal 0 HcmV?d00001 diff --git a/src/fillmore/FillmoreClassFactory.vala b/src/fillmore/FillmoreClassFactory.vala new file mode 100644 index 0000000..9fd2d07 --- /dev/null +++ b/src/fillmore/FillmoreClassFactory.vala @@ -0,0 +1,56 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +class TrackSeparator : Gtk.HSeparator { +//this class is referenced in the resource file +} + +class FillmoreTrackView : Gtk.VBox, TrackView { + TrackView track_view; + public FillmoreTrackView(TrackView track_view) { + this.track_view = track_view; + track_view.clip_view_added.connect(on_clip_view_added); + + pack_start(track_view, true, true, 0); + pack_start(new TrackSeparator(), false, false, 0); + can_focus = false; + } + + public void move_to_top(ClipView clip_view) { + track_view.move_to_top(clip_view); + } + + public void resize() { + track_view.resize(); + } + + public Model.Track get_track() { + return track_view.get_track(); + } + + public int get_track_height() { + return track_view.get_track_height(); + } + + void on_clip_view_added(ClipView clip_view) { + clip_view_added(clip_view); + } + + Gtk.Widget? find_child(double x, double y) { + return track_view.find_child(x, y); + } + + void select_all() { + track_view.select_all(); + } +} + +public class FillmoreClassFactory : ClassFactory { + public override TrackView get_track_view(Model.Track track, TimeLine timeline) { + TrackView track_view = base.get_track_view(track, timeline); + return new FillmoreTrackView(track_view); + } +} diff --git a/src/fillmore/Makefile b/src/fillmore/Makefile new file mode 100644 index 0000000..d96a73a --- /dev/null +++ b/src/fillmore/Makefile @@ -0,0 +1,21 @@ +PROGRAM = ../../$(PROGRAM_NAME) +GLADE_NAME = ../../libfill.so + +all: $(PROGRAM) + +USE_MARINA_VAPI=1 +-include ../../configure.mk + +VALA_LDFLAGS = -lmarina -L../marina +VALA_LDFLAGS += `pkg-config --libs $(EXT_PKGS)` +MARINA_DEPEND = ../marina/libmarina.a + +-include sources.mk + +ifndef BUILD_DIR +BUILD_DIR=fillmore +endif + +-include ../../marina.mk +HEADER_DIRS += ../marina + diff --git a/src/fillmore/ProjectProperties.vala b/src/fillmore/ProjectProperties.vala new file mode 100644 index 0000000..1caff22 --- /dev/null +++ b/src/fillmore/ProjectProperties.vala @@ -0,0 +1,125 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +public class ProjectProperties : Gtk.Dialog { + const int NUMBER_OF_SAMPLES = 4; + const long G_USEC_PER_SEC = 1000000; + + TimeVal[] tap_time = new TimeVal[NUMBER_OF_SAMPLES]; + int tap_index = 0; + bool sample_full = false; + Gtk.Adjustment tempo_adjustment; + Gtk.Adjustment volume_adjustment; + Gtk.ComboBox timesignature_combo; + Gtk.ToggleButton click_during_play; + Gtk.ToggleButton click_during_record; + + public void setup(Model.Project project, Gtk.Builder builder) { + tempo_adjustment = (Gtk.Adjustment) builder.get_object("tempo_adjustment"); + volume_adjustment = (Gtk.Adjustment) builder.get_object("volume_adjustment"); + timesignature_combo = (Gtk.ComboBox) builder.get_object("timesignature_combo"); + click_during_play = (Gtk.ToggleButton) builder.get_object("playback"); + click_during_record = (Gtk.ToggleButton) builder.get_object("record"); + set_tempo(project.get_bpm()); + set_volume(project.click_volume); + set_during_play(project.click_during_play); + set_during_record(project.click_during_record); + set_time_signature(project.get_time_signature()); + } + + public void set_tempo(int tempo) { + tempo_adjustment.set_value(tempo); + } + + public int get_tempo() { + return (int) tempo_adjustment.get_value(); + } + + public void set_volume(double volume) { + volume_adjustment.set_value(volume); + } + + public double get_click_volume() { + return volume_adjustment.get_value(); + } + + public Fraction get_time_signature() { + return Fraction.from_string(timesignature_combo.get_active_text()); + } + + void set_time_signature(Fraction time_signature) { + string sig = time_signature.to_string(); + + Gtk.TreeIter iter; + if (timesignature_combo.model.get_iter_first(out iter)) { + do { + string s; + timesignature_combo.model.get(iter, 0, out s, -1); + if (s == sig) { + timesignature_combo.set_active_iter(iter); + return; + } + } while (timesignature_combo.model.iter_next(ref iter)); + } + } + + void set_during_play(bool active) { + click_during_play.active = active; + } + + public bool during_play() { + return click_during_play.active; + } + + void set_during_record(bool active) { + click_during_record.active = active; + } + + public bool during_record() { + return click_during_record.active; + } + + public void on_tap() { + TimeVal time_val = TimeVal(); + time_val.get_current_time(); + tap_time[tap_index] = time_val; + ++tap_index; + if (tap_index == NUMBER_OF_SAMPLES) { + sample_full = true; + tap_index = 0; + } + calculate_bpm(); + } + + void calculate_bpm() { + int number_of_samples = sample_full ? NUMBER_OF_SAMPLES : tap_index; + if (number_of_samples < 2) { + return; + } + + int start_index = sample_full ? tap_index : 0; + + double delta_sum = 0; + for (int i = 0; i < number_of_samples - 1; ++i) { + int current_index = (i + start_index) % NUMBER_OF_SAMPLES; + int next_index = (current_index + 1) % NUMBER_OF_SAMPLES; + long difference = + (tap_time[next_index].tv_sec - tap_time[current_index].tv_sec) * G_USEC_PER_SEC + + tap_time[next_index].tv_usec - tap_time[current_index].tv_usec; + + if (difference > 5 * G_USEC_PER_SEC) { + // User waited too long. Save the time and start over + tap_time[0] = tap_time[tap_index - 1]; + sample_full = false; + tap_index = 1; + return; + } + delta_sum += difference; + } + double average = delta_sum/(number_of_samples - 1)/G_USEC_PER_SEC; + tempo_adjustment.set_value((int)(60.0/average)); + } +} diff --git a/src/fillmore/VolumeAndPanPopUp.vala b/src/fillmore/VolumeAndPanPopUp.vala new file mode 100644 index 0000000..2d07a4e --- /dev/null +++ b/src/fillmore/VolumeAndPanPopUp.vala @@ -0,0 +1,68 @@ +/* Demo Recorder for MAEMO 5 +* Copyright (C) 2010 Dru Moore +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 2, +* or (at your option) any later version, as published by the Free +* Software Foundation +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details +* +* You should have received a copy of the GNU General Public +* License along with this program; if not, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +namespace IdWorks { + +public class VolumeAndPanPopUp : Hildon.Dialog { + + Gtk.HScale volume_slider; + Gtk.HScale panorama_slider; + + public signal void volume_updated(double volume); + public signal void panorama_updated(double panorama); + + public VolumeAndPanPopUp(Gtk.Widget parent, string title) { + this.set_title(title); + this.set_parent(parent); + + this.set_default_response(Gtk.ResponseType.ACCEPT); + this.add_button(Gtk.STOCK_CLOSE, Gtk.ResponseType.ACCEPT); + + Gtk.VBox control_area = (Gtk.VBox)this.get_content_area(); + + Gtk.HBox volume_bar = new Gtk.HBox(false, 2); + Gtk.Label volume_label = new Gtk.Label("Volume"); + volume_bar.pack_start(volume_label, false, false , 2); + volume_slider = new Gtk.HScale.with_range(0.0, 10.0, 0.05); + volume_slider.set_value_pos(Gtk.PositionType.LEFT); + volume_slider.value_changed.connect((s) => {volume_updated(s.get_value());}); + volume_bar.pack_start(volume_slider, true, true , 2); + + Gtk.HBox panorama_bar = new Gtk.HBox(false, 2); + Gtk.Label panorama_label = new Gtk.Label("Pan"); + panorama_bar.pack_start(panorama_label, false, false , 2); + panorama_slider = new Gtk.HScale.with_range(-1.0, 1.0, 0.05); + panorama_slider.set_value_pos(Gtk.PositionType.LEFT); + panorama_slider.value_changed.connect((s) => {panorama_updated(s.get_value());}); + panorama_bar.pack_start(panorama_slider, true, true , 2); + + control_area.pack_start(volume_bar, true, true , 2); + control_area.pack_start(panorama_bar, true, true , 2); + this.show_all(); + } + + public void set_volume(double volume) { + volume_slider.set_value(volume); + } + + public void set_panorama(double panorama) { + panorama_slider.set_value(panorama); + } + +} + +} diff --git a/src/fillmore/audio_project.vala b/src/fillmore/audio_project.vala new file mode 100644 index 0000000..ac567ca --- /dev/null +++ b/src/fillmore/audio_project.vala @@ -0,0 +1,153 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; +namespace Model { + +class RecordFetcherCompletion : FetcherCompletion { + Track track; + Project project; + int64 position; + + public RecordFetcherCompletion(Project project, Track track, int64 position) { + base(); + this.track = track; + this.project = project; + this.position = position; + } + + public override void complete(Fetcher fetch) { + base.complete(fetch); + Clip the_clip = new Clip(fetch.clipfile, MediaType.AUDIO, + isolate_filename(fetch.clipfile.filename), 0, 0, fetch.clipfile.length, false); + project.undo_manager.start_transaction("Record"); + track.append_at_time(the_clip, position, true); + project.undo_manager.end_transaction("Record"); + } +} + +class AudioProject : Project { + bool has_been_saved; + + public AudioProject(string? filename) throws Error { + base(filename, false); + // TODO: When vala supports throwing from base, remove this check + if (this != null) { + has_been_saved = filename != null; + if (!has_been_saved) { + project_file = generate_filename(); + } + media_engine.callback_pulse.connect(media_engine.on_callback_pulse); + media_engine.record_completed.connect(on_record_completed); + } + } + + public override TimeCode get_clip_time(ClipFile f) { + TimeCode t = {}; + + t.get_from_length(f.length); + return t; + } + + public override string? get_project_file() { + if (!has_been_saved) { + return null; + } else { + return base.get_project_file(); + } + } + + string generate_filename() { + Time now = Time.local(time_t()); + string timestring = now.to_string(); + timestring = timestring.replace(":", "_"); + string pathname = Path.build_filename(GLib.Environment.get_home_dir(), ".fillmore", + timestring); + GLib.DirUtils.create(pathname, 0777); + string filename = "%s.%s".printf(timestring, "fill"); + return Path.build_filename(pathname, filename); + } + + public override string get_app_name() { + return Recorder.NAME; + } + + public override void add_track(Track track) { + if (track.media_type() == MediaType.VIDEO) { + track.hide(); + inactive_tracks.add(track); + return; + } + + base.add_track(track); + } + + public void record(AudioTrack track) { + media_engine.record(track); + } + + public void on_record_completed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_record_completed"); + try { + create_clip_fetcher(new Model.RecordFetcherCompletion(this, media_engine.record_track, + media_engine.record_region.start), media_engine.record_region.clipfile.filename); + } catch (Error e) { + error_occurred("Could not complete recording", e.message); + } + } + + public override void load(string? filename) { + has_been_saved = filename != null; + if (!has_been_saved) { + project_file = generate_filename(); + } + base.load(filename); + } + + public override void save(string? filename) { + if (!has_been_saved && filename != null) { + move_audio_files(filename); + GLib.FileUtils.remove(project_file); + GLib.DirUtils.remove(Path.get_dirname(project_file)); + } + + base.save(filename); + has_been_saved = true; + } + + void move_audio_files(string filename) { + string audio_path = get_audio_path(); + string destination_path = Path.build_filename(Path.get_dirname(filename), "audio files"); + GLib.DirUtils.create(destination_path, 0777); + GLib.Dir dir; + try { + dir = Dir.open(audio_path); + } catch (FileError e) { + return; + } + + // First, move all of the files over, even if they aren't currently in the project + weak string? base_name = null; + do { + base_name = dir.read_name(); + string destination = Path.build_filename(destination_path, base_name); + FileUtils.rename(Path.build_filename(audio_path, base_name), destination); + } while (base_name != null); + + // Next, update the model so that the project file is saved properly + foreach (ClipFile clip_file in clipfiles) { + if (Path.get_dirname(clip_file.filename) == audio_path) { + string file_name = Path.get_basename(clip_file.filename); + string destination = Path.build_filename(destination_path, file_name); + clip_file.filename = destination; + } + } + + GLib.DirUtils.remove(audio_path); + } + +} +} diff --git a/src/fillmore/fillmore.vala b/src/fillmore/fillmore.vala new file mode 100644 index 0000000..3c38b80 --- /dev/null +++ b/src/fillmore/fillmore.vala @@ -0,0 +1,1407 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +extern const string _PROGRAM_NAME; +bool do_print_graph = false; +int debug_level; + +const OptionEntry[] options = { + { "print-graph", 0, 0, OptionArg.NONE, &do_print_graph, + "Show Print Graph in help menu", null }, + { "debug-level", 0, 0, OptionArg.INT, &debug_level, + "Control amount of diagnostic information", + "[0 (minimal),5 (maximum)]" }, + { null } +}; + +class Recorder : Gtk.Window, TransportDelegate { + public Model.AudioProject project; + public TimeLine timeline; + View.ClickTrack click_track; + HeaderArea header_area; + ClipLibraryView library; + Model.TimeSystem provider; + Gtk.Adjustment h_adjustment; + Gtk.HPaned timeline_library_pane; + Gtk.ScrolledWindow library_scrolled; + Gtk.ScrolledWindow timeline_scrolled; + int cursor_pos = -1; + int64 center_time = -1; + bool loading; + const int scroll_speed = 8; + + Gtk.ActionGroup main_group; + + Gtk.ToggleButton play_button; + Gtk.ToggleButton record_button; + Gtk.Button addnew_button; + Gtk.Button rewind_button; + Gtk.Button forward_button; + Gtk.Button zoomin_button; + Gtk.Button zoomout_button; + Gtk.Button volume_button; + + Hildon.PannableArea scrollwin; + int scrollwin_pos_y = 0; + + Gtk.UIManager manager; + // TODO: Have a MediaExportConnector that extends MediaConnector rather than concrete type. + View.OggVorbisExport audio_export; + View.AudioOutput audio_output; + Gee.ArrayList load_errors; + + public const string NAME = "Fillmore"; + const Gtk.ActionEntry[] entries = { + { "Project", null, "_Project", null, null, null }, + { "Open", Gtk.STOCK_OPEN, "_Open...", null, "Open a project", on_project_open }, + { "NewProject", Gtk.STOCK_NEW, "_New", null, "Create new project", on_project_new }, + { "Save", Gtk.STOCK_SAVE, "_Save", "S", "Save project", on_project_save }, + { "SaveAs", Gtk.STOCK_SAVE_AS, "Save _As...", "S", + "Save project with new name", on_project_save_as }, + { "Export", Gtk.STOCK_JUMP_TO, "_Export...", "E", null, on_export }, + { "Settings", Gtk.STOCK_PROPERTIES, "Se_ttings", "Return", null, on_properties }, + { "Quit", Gtk.STOCK_QUIT, null, null, null, on_quit }, + + { "Edit", null, "_Edit", null, null, null }, + { "Undo", Gtk.STOCK_UNDO, null, "Z", null, on_undo }, + { "Cut", Gtk.STOCK_CUT, null, null, null, on_cut }, + { "Copy", Gtk.STOCK_COPY, null, null, null, on_copy }, + { "Paste", Gtk.STOCK_PASTE, null, null, null, on_paste }, + { "Delete", Gtk.STOCK_DELETE, null, "Delete", null, on_delete }, + { "SelectAll", Gtk.STOCK_SELECT_ALL, null, "A", null, on_select_all }, + { "SplitAtPlayhead", null, "_Split at Playhead", "P", null, on_split_at_playhead }, + { "TrimToPlayhead", null, "Trim to Play_head", "H", null, on_trim_to_playhead }, + { "ClipProperties", Gtk.STOCK_PROPERTIES, "Properti_es", "Return", + null, on_clip_properties }, + + { "View", null, "_View", null, null, null }, + { "ZoomIn", Gtk.STOCK_ZOOM_IN, "Zoom _In", "plus", null, on_zoom_in }, + { "ZoomOut", Gtk.STOCK_ZOOM_OUT, "Zoom _Out", "minus", null, on_zoom_out }, + { "ZoomProject", null, "Fit to _Window", "Z", null, on_zoom_to_project }, + + { "Track", null, "_Track", null, null, null }, + { "NewTrack", Gtk.STOCK_ADD, "_New...", "N", + "Create new track", on_track_new }, + { "Rename", null, "_Rename...", null, "Rename Track", on_track_rename }, + { "DeleteTrack", null, "_Delete", "Delete", + "Delete track", on_track_remove }, + { "MoveTrackUp", null, "Move Track Up", "Up", null, on_track_move_up }, + { "MoveTrackDown", null, "Move Track Down", "Down", null, on_track_move_down }, + { "ScrollTracksUp", null, "Scroll Tracks Up", "Up", null, on_tracks_scroll_up }, + { "ScrollTracksDown", null, "Scroll Tracks Down", "Down", null, on_tracks_scroll_down }, + + + { "Help", null, "_Help", null, null, null }, + { "Contents", Gtk.STOCK_HELP, "_Contents", "F1", + "More information on Fillmore", on_help_contents}, + { "About", Gtk.STOCK_ABOUT, null, null, null, on_about }, + { "SaveGraph", null, "Save _Graph", null, "Save graph", on_save_graph }, + + { "Rewind", Gtk.STOCK_MEDIA_PREVIOUS, "Rewind", "Home", "Go to beginning", on_rewind }, + { "End", Gtk.STOCK_MEDIA_NEXT, "End", "End", "Go to end", on_end } + }; + + const Gtk.ToggleActionEntry[] toggle_entries = { + { "Play", Gtk.STOCK_MEDIA_PLAY, null, "space", "Play", on_play }, + { "Record", Gtk.STOCK_MEDIA_RECORD, null, "r", "Record", on_record }, + { "Library", null, "_Library", "F9", null, on_view_library, false }, + { "Snap", null, "_Snap to Clip Edges", null, null, on_snap, false } + }; + + const string ui = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"""; + + const DialogUtils.filter_description_struct[] filters = { + { "Fillmore Project Files", Model.Project.FILLMORE_FILE_EXTENSION }, + { "Lombard Project Files", Model.Project.LOMBARD_FILE_EXTENSION } + }; + + const DialogUtils.filter_description_struct[] export_filters = { + { "Ogg Files", "ogg" } + }; + + public signal void finished_closing(bool project_did_close); + + public Recorder(string? project_file) throws Error { + ClassFactory.set_transport_delegate(this); + GLib.DirUtils.create(get_fillmore_directory(), 0777); + load_errors = new Gee.ArrayList(); + try { + set_icon_from_file( + AppDirs.get_resources_dir().get_child("fillmore_icon.png").get_path()); + } catch (GLib.Error e) { + warning("Could not load application icon: %s", e.message); + } + + + project = new Model.AudioProject(project_file); + project.snap_to_clip = false; + provider = new Model.BarBeatTimeSystem(project); + + project.media_engine.callback_pulse.connect(on_callback_pulse); + project.media_engine.post_export.connect(on_post_export); + project.media_engine.position_changed.connect(on_position_changed); + + project.load_error.connect(on_load_error); + project.name_changed.connect(on_name_changed); + project.undo_manager.dirty_changed.connect(on_dirty_changed); + project.undo_manager.undo_changed.connect(on_undo_changed); + project.error_occurred.connect(on_error_occurred); + project.playstate_changed.connect(on_playstate_changed); + project.track_added.connect(on_track_added); + project.track_removed.connect(on_track_removed); + project.load_complete.connect(on_load_complete); + project.closed.connect(on_project_close); + + audio_output = new View.AudioOutput(project.media_engine.get_project_audio_caps()); + project.media_engine.connect_output(audio_output); + click_track = new View.ClickTrack(project.media_engine, project); + set_position(Gtk.WindowPosition.CENTER); + title = "Fillmore"; + set_default_size(800, 1200); + + main_group = new Gtk.ActionGroup("main"); + main_group.add_actions(entries, this); + main_group.add_toggle_actions(toggle_entries, this); + + manager = new Gtk.UIManager(); + manager.insert_action_group(main_group, 0); + try { + manager.add_ui_from_string(ui, -1); + } catch (Error e) { error("%s", e.message); } + + Gtk.MenuBar menubar = (Gtk.MenuBar) get_widget(manager, "/MenuBar"); + Gtk.Toolbar toolbar = (Gtk.Toolbar) get_widget(manager, "/Toolbar"); + //play_button = (Gtk.ToggleToolButton) get_widget(manager, "/Toolbar/Play"); + //record_button = (Gtk.ToggleToolButton) get_widget(manager, "/Toolbar/Record"); + //rewind_button = (Gtk.ToolButton) get_widget(manager, "/Toolbar/Rewind"); + //forward_button = (Gtk.ToolButton) get_widget(manager, "/Toolbar/End"); + //addnew_button = (Gtk.ToolButton) get_widget(manager, "/Toolbar/New"); + on_undo_changed(false); + + library = new ClipLibraryView(project, provider, null, Gdk.DragAction.COPY); + library.selection_changed.connect(on_library_selection_changed); + library.drag_data_received.connect(on_drag_data_received); + + timeline = new TimeLine(project, provider, Gdk.DragAction.COPY); + timeline.track_changed.connect(on_track_changed); + timeline.drag_data_received.connect(on_drag_data_received); + timeline.size_allocate.connect(on_timeline_size_allocate); + timeline.selection_changed.connect(on_timeline_selection_changed); + + ClipView.context_menu = (Gtk.Menu) manager.get_widget("/ClipContextMenu"); + ClipLibraryView.context_menu = (Gtk.Menu) manager.get_widget("/LibraryContextMenu"); + update_menu(); + + library_scrolled = new Gtk.ScrolledWindow(null, null); + library_scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC); + library_scrolled.add_with_viewport(library); + + Gtk.HBox hbox = new Gtk.HBox(false, 0); + header_area = new HeaderArea(this, provider, TimeLine.RULER_HEIGHT); + hbox.pack_start(header_area, false, false, 0); + + + timeline_scrolled = new Gtk.ScrolledWindow(null, null); + timeline_scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER); + timeline_scrolled.add_with_viewport(timeline); + hbox.pack_start(timeline_scrolled, true, true, 0); + h_adjustment = timeline_scrolled.get_hadjustment(); + + + + Gtk.HButtonBox buttons = new Gtk.HButtonBox(); + addnew_button = new Gtk.Button(); //.with_label("Pl"); + addnew_button.set_image(new Gtk.Image.from_icon_name("general_add", Gtk.IconSize.BUTTON)); + addnew_button.clicked.connect(on_track_new); + buttons.add(addnew_button); + play_button = new Gtk.ToggleButton(); //.with_label("Pl"); + play_button.set_image(new Gtk.Image.from_icon_name("camera_playback", Gtk.IconSize.BUTTON)); + play_button.toggled.connect(on_play); + buttons.add(play_button); + record_button = new Gtk.ToggleButton(); //.with_label("Re"); + record_button.set_image(new Gtk.Image.from_icon_name("camera_video_recording", Gtk.IconSize.BUTTON)); + record_button.toggled.connect(on_record); + buttons.add(record_button); + rewind_button = new Gtk.Button(); //.with_label("Re"); + rewind_button.set_image(new Gtk.Image.from_icon_name("pdf_viewer_first_page", Gtk.IconSize.BUTTON)); + rewind_button.clicked.connect(on_rewind); + buttons.add(rewind_button); + forward_button = new Gtk.Button(); //.with_label("Re"); + forward_button.set_image(new Gtk.Image.from_icon_name("pdf_viewer_last_page", Gtk.IconSize.BUTTON)); + forward_button.clicked.connect(on_end); + buttons.add(forward_button); + zoomin_button = new Gtk.Button(); //.with_label("Re"); + zoomin_button.set_image(new Gtk.Image.from_icon_name("pdf_zoomin", Gtk.IconSize.BUTTON)); + zoomin_button.clicked.connect(on_zoom_in); + buttons.add(zoomin_button); + zoomout_button = new Gtk.Button(); //.with_label("Re"); + zoomout_button.set_image(new Gtk.Image.from_icon_name("pdf_zoomout", Gtk.IconSize.BUTTON)); + zoomout_button.clicked.connect(on_zoom_out); + buttons.add(zoomout_button); + volume_button = new Gtk.Button(); //.with_label("Re"); + volume_button.set_image(new Gtk.Image.from_icon_name("statusarea_volumelevel4", Gtk.IconSize.BUTTON)); + volume_button.clicked.connect(on_volume); + buttons.add(volume_button); + + + Gtk.VBox vbox = new Gtk.VBox(false, 0); + vbox.pack_start(menubar, false, false, 0); + //vbox.pack_start(toolbar, false, false, 0); + vbox.pack_start(buttons, false, false, 0); + + Gtk.VBox main_view = new Gtk.VBox(false, 0); + + timeline_library_pane = new Gtk.HPaned(); + timeline_library_pane.set_position(project.library_width); + timeline_library_pane.add1(hbox); + timeline_library_pane.child1_resize = 1; + timeline_library_pane.add2(library_scrolled); + timeline_library_pane.child2_resize = 0; + timeline_library_pane.child1.size_allocate.connect(on_library_size_allocate); + + + main_view.pack_start(timeline_library_pane, true, true, 0); + + + scrollwin = new Hildon.PannableArea(); + scrollwin.add_with_viewport(main_view); + vbox.add(scrollwin); + + add(vbox); + // toggle the library pane off. + on_view_library(); + + Gtk.MenuItem? save_graph = (Gtk.MenuItem?) + get_widget(manager, "/MenuBar/HelpMenu/SaveGraph"); + + if (!do_print_graph && save_graph != null) { + save_graph.destroy(); + } + + add_accel_group(manager.get_accel_group()); + timeline.grab_focus(); + delete_event.connect(on_delete_event); + loading = true; + project.load(project_file); + if (project_file == null) { + default_track_set(); + loading = false; + } + project.media_engine.pipeline.set_state(Gst.State.PAUSED); + } + + void default_track_set() { + project.add_track(new Model.AudioTrack(project, get_default_track_name())); + project.tracks[0].set_selected(true); + } + + static int default_track_number_compare(void *a, void *b) { + string* s1 = (string *) a; + string* s2 = (string *) b; + int i = -1; + int j = -1; + s1->scanf("track %d", &i); + s2->scanf("track %d", &j); + assert(i > 0); + assert(j > 0); + if (i == j) { + return 0; + } else if (i < j) { + return -1; + } else { + return 1; + } + } + + public string get_default_track_name() { + List default_track_names = new List(); + foreach(Model.Track track in project.tracks) { + if (track.display_name.has_prefix("track ")) { + default_track_names.append(track.display_name); + } + } + default_track_names.sort(default_track_number_compare); + + int i = 1; + foreach(string s in default_track_names) { + string track_name = "track %d".printf(i); + if (s != track_name) { + return track_name; + } + ++i; + } + return "track %d".printf(i); + } + + Gtk.Widget get_widget(Gtk.UIManager manager, string name) { + Gtk.Widget widget = manager.get_widget(name); + if (widget == null) + error("can't find widget"); + return widget; + } + + void on_track_move_up() { + int index = -1; + int position = 0; + int track_ct = project.tracks.size; + if (0 < track_ct) { + foreach(Model.Track track in project.tracks) { + ++index; + if (selected_track() == track) { + position = index; + } + } + if (0 < position) { + Model.AudioTrack track = selected_track() as Model.AudioTrack; + project.tracks.remove(track); + project.tracks.insert(position - 1, track); + } + } + } + void on_track_move_down() { + // if current track < position last + int index = -1; + int position = 0; + int track_ct = project.tracks.size; + if (0 < track_ct) { + foreach(Model.Track track in project.tracks) { + ++index; + if (selected_track() == track) { + position = index; + } + } + if (track_ct - 1 > position) { + Model.AudioTrack audio_track = selected_track() as Model.AudioTrack; + project.tracks.remove(audio_track); + project.tracks.insert(position + 1, audio_track); + } + } + } + void on_tracks_scroll_up() { + // if track count > 4 = Visible tracks + /*int track_ct = project.tracks.size; + if (4 < track_ct) { + // take bottom track and move to start + Model.AudioTrack track = project.tracks.get(track_ct - 1) as Model.AudioTrack; + project.tracks.remove(track); + project.tracks.insert(0, track); + }*/ + scrollwin_pos_y -= scrollwin_pos_y < 4 ? 0 : 64; + scrollwin.scroll_to(0, scrollwin_pos_y); + } + void on_tracks_scroll_down() { + // if track count > 4 = visible tracks + /*int track_ct = project.tracks.size; + if (4 < track_ct) { + // take top track and move to end + Model.AudioTrack track = project.tracks.get(0) as Model.AudioTrack; + project.tracks.remove(track); + project.tracks.add(track); + }*/ + scrollwin_pos_y += 64; + scrollwin.scroll_to(0, scrollwin_pos_y); + } + + void set_sensitive_group(Gtk.ActionGroup group, string group_path, bool sensitive) { + Gtk.Action action = group.get_action(group_path); + action.set_sensitive(sensitive); + } + + void on_track_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_changed"); + update_menu(); + } + + void on_position_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_position_changed"); + update_menu(); + } + + void on_track_added(Model.Track track) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_added"); + update_menu(); + track.clip_added.connect(on_clip_added); + track.clip_removed.connect(on_clip_removed); + track.track_selection_changed.connect(on_track_selection_changed); + } + + void on_track_removed(Model.Track unused) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_removed"); + update_menu(); + } + + void on_clip_added(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_added"); + clip.moved.connect(on_clip_moved); + update_menu(); + } + + void on_clip_removed(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_removed"); + clip.moved.disconnect(on_clip_moved); + update_menu(); + } + + void on_track_selection_changed(Model.Track track) { + if (track.get_is_selected()) { + foreach (Model.Track t in project.tracks) { + if (t != track) { + t.set_selected(false); + } + } + } + } + + void on_clip_moved(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_moved"); + update_menu(); + } + + void on_drag_data_received(Gtk.Widget w, Gdk.DragContext context, int x, int y, + Gtk.SelectionData selection_data, uint drag_info, uint time) { + present(); + } + + void update_menu() { + bool library_selected = library.has_selection(); + bool selected = timeline.is_clip_selected(); + bool playhead_on_clip = project.playhead_on_clip(); + int number_of_tracks = project.tracks.size; + bool is_stopped = is_stopped(); + bool one_selected = false; + if (library_selected) { + one_selected = library.get_selected_files().size == 1; + } else if (selected) { + one_selected = timeline.selected_clips.size == 1; + } + + // File menu + set_sensitive_group(main_group, "NewProject", is_stopped); + set_sensitive_group(main_group, "Open", is_stopped); + set_sensitive_group(main_group, "Save", is_stopped); + set_sensitive_group(main_group, "SaveAs", is_stopped); + set_sensitive_group(main_group, "Settings", is_stopped); + set_sensitive_group(main_group, "Export", project.can_export()); + set_sensitive_group(main_group, "Quit", !project.transport_is_recording()); + + // Edit menu + set_sensitive_group(main_group, "Undo", is_stopped && project.undo_manager.can_undo); + set_sensitive_group(main_group, "Copy", is_stopped && selected); + set_sensitive_group(main_group, "Cut", is_stopped && selected); + set_sensitive_group(main_group, "Paste", timeline.clipboard.clips.size != 0 && is_stopped); + set_sensitive_group(main_group, "Delete", (selected || library_selected) && is_stopped); + set_sensitive_group(main_group, "SplitAtPlayhead", + selected && playhead_on_clip && is_stopped); + set_sensitive_group(main_group, "TrimToPlayhead", + selected && playhead_on_clip && is_stopped); + set_sensitive_group(main_group, "ClipProperties", one_selected); + + // View menu + set_sensitive_group(main_group, "ZoomProject", project.get_length() != 0); + + // Track menu + set_sensitive_group(main_group, "Rename", number_of_tracks > 0 && is_stopped); + set_sensitive_group(main_group, "DeleteTrack", number_of_tracks > 0 && is_stopped); + set_sensitive_group(main_group, "NewTrack", is_stopped); + + // toolbar + set_sensitive_group(main_group, "Play", true); + set_sensitive_group(main_group, "Record", number_of_tracks > 0 && is_stopped); + } + + public Model.Track? selected_track() { + foreach (Model.Track track in project.tracks) { + if (track.get_is_selected()) { + return track; + } + } + error("can't find selected track"); + return null; + } + + public void scroll_to_beginning() { + h_adjustment.set_value(0.0); + } + + public void page_to_time(int64 time) { + double location_in_window = timeline.provider.time_to_xpos(time) - h_adjustment.get_value(); + int window_width = timeline.parent.allocation.width; + if (location_in_window > 0.9 * window_width || + location_in_window < 0.1 * window_width) { + scroll_to_time(time); + } + } + + public void scroll_to_time(int64 time) { + int new_adjustment = timeline.provider.time_to_xpos(time); + int window_width = timeline.parent.allocation.width; + if (new_adjustment < timeline.parent.allocation.width) { + new_adjustment = 0; + } else { + new_adjustment = new_adjustment - window_width / 2; + } + + int max_value = (int)(h_adjustment.upper - timeline_scrolled.allocation.width); + if (new_adjustment > max_value) { + new_adjustment = max_value; + } + + h_adjustment.set_value(new_adjustment); + } + + public void scroll_to_end() { + scroll_to_time(project.get_length()); + } + + static int sgn(int x) { + if (x == 0) + return 0; + return x < 0 ? -1 : 1; + } + + public void scroll_toward_center(int xpos) { + if (cursor_pos == -1) { + cursor_pos = xpos - (int) h_adjustment.value; + } + // Move the cursor position toward the center of the window. We compute + // the remaining distance and move by its square root; this results in + // a smooth decelerating motion. + int page_size = (int) h_adjustment.page_size; + int diff = page_size / 2 - cursor_pos; + int d = sgn(diff) * (int) Math.sqrt(diff.abs()); + cursor_pos += d; + int x = int.max(0, xpos - cursor_pos); + int max_value = (int)(h_adjustment.upper - timeline_scrolled.allocation.width); + if (x > max_value) { + x = max_value; + } + h_adjustment.set_value(x); + } + + public override bool key_press_event(Gdk.EventKey event) { + switch (event.keyval) { + case KeySyms.KP_Enter: + case KeySyms.Return: + if (project.transport_is_recording()) { + break; + } + if ((event.state & GDK_SHIFT_ALT_CONTROL_MASK) != 0) + return base.key_press_event(event); + on_rewind(); + break; + case KeySyms.Left: + if (project.transport_is_recording()) { + break; + } + if ((event.state & Gdk.ModifierType.CONTROL_MASK) != 0) { + project.go_previous(); + } else { + project.media_engine.go(project.transport_get_position() - Gst.SECOND); + } + page_to_time(project.transport_get_position()); + break; + case KeySyms.Right: + if (project.transport_is_recording()) { + break; + } + if ((event.state & Gdk.ModifierType.CONTROL_MASK) != 0) { + project.go_next(); + } else { + project.media_engine.go(project.transport_get_position() + Gst.SECOND); + } + page_to_time(project.transport_get_position()); + break; + case KeySyms.KP_Add: + case KeySyms.equal: + case KeySyms.plus: + on_zoom_in(); + break; + case KeySyms.KP_Subtract: + case KeySyms.minus: + case KeySyms.underscore: + on_zoom_out(); + break; + default: + return base.key_press_event(event); + } + return true; + } + + // File menu + void on_export() { + string filename = null; + if (DialogUtils.save(this, "Export", false, export_filters, ref filename)) { + try { + new MultiFileProgress(this, 1, "Export", project.media_engine); + project.media_engine.disconnect_output(audio_output); + audio_export = new View.OggVorbisExport(View.MediaConnector.MediaTypes.Audio, + filename, project.media_engine.get_project_audio_export_caps()); + project.media_engine.connect_output(audio_export); + project.media_engine.start_export(filename); + } catch (Error e) { + do_error_dialog("Could not export file", e.message); + } + } + } + + void on_post_export(bool canceled) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_post_export"); + project.media_engine.disconnect_output(audio_export); + project.media_engine.connect_output(audio_output); + + if (canceled) { + GLib.FileUtils.remove(audio_export.get_filename()); + } + + audio_export = null; + } + + void on_project_new_finished_closing(bool project_did_close) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_project_new_finished_closing"); + project.closed.disconnect(on_project_close); + finished_closing.disconnect(on_project_new_finished_closing); + if (project_did_close) { + project.media_engine.set_play_state(PlayState.LOADING); + project.load(null); + default_track_set(); + project.media_engine.pipeline.set_state(Gst.State.PAUSED); + project.undo_manager.reset(); + } + } + + void on_project_new() { + load_errors.clear(); + project.closed.connect(on_project_close); + finished_closing.connect(on_project_new_finished_closing); + project.close(); + } + + void on_project_open_finished_closing(bool project_did_close) { + project.closed.disconnect(on_project_close); + finished_closing.disconnect(on_project_open_finished_closing); + if (project_did_close) { + GLib.SList filenames; + if (DialogUtils.open(this, filters, false, false, out filenames)) { + loading = true; + project.load(filenames.data); + } + } + } + + void on_project_open() { + load_errors.clear(); + project.closed.connect(on_project_close); + finished_closing.connect(on_project_open_finished_closing); + project.close(); + } + + void on_project_save_as() { + save_dialog(); + } + + void on_project_save() { + do_save(); + } + + void on_save_new_file_finished_closing(bool did_close) { + project.closed.disconnect(on_project_close); + finished_closing.disconnect(on_save_new_file_finished_closing); + project.load(project.get_project_file()); + } + + bool do_save() { + if (project.get_project_file() != null) { + project.save(null); + return true; + } + else { + return save_dialog(); + } + } + + bool save_dialog() { + bool saving_new_file = project.get_project_file() == null; + + string filename = project.get_project_file(); + bool create_directory = project.get_project_file() == null; + if (DialogUtils.save(this, "Save Project", create_directory, filters, ref filename)) { + project.save(filename); + if (saving_new_file && project.get_project_file() != null) { + project.closed.connect(on_project_close); + finished_closing.connect(on_save_new_file_finished_closing); + project.close(); + } + return true; + } + return false; + } + + void on_properties() { + Gtk.Builder builder = new Gtk.Builder(); + try { + builder.add_from_file(AppDirs.get_exec_dir().get_path() + "/resources/fillmore.glade"); + //"/home/developer/Fillmore/resources/fillmore.glade"); + //AppDirs.get_resources_dir().get_child("fillmore.glade").get_path()); + } catch(GLib.Error e) { + stdout.printf("%s\n", e.message); + return; + } + builder.connect_signals(null); + ProjectProperties properties = (ProjectProperties)builder.get_object("projectproperties1"); + properties.setup(project, builder); + + int response = properties.run(); + if (response == Gtk.ResponseType.APPLY) { + string description = "Set Project Properties"; + project.undo_manager.start_transaction(description); + project.set_bpm(properties.get_tempo()); + project.set_time_signature(properties.get_time_signature()); + project.click_during_record = properties.during_record(); + project.click_during_play = properties.during_play(); + project.click_volume = properties.get_click_volume(); + project.undo_manager.end_transaction(description); + } + properties.destroy(); + } + + void on_quit_finished_closing(bool project_did_close) { + project.closed.disconnect(on_project_close); + finished_closing.disconnect(on_quit_finished_closing); + if (project_did_close) { + Gtk.main_quit(); + } + } + + void on_quit() { + if (!project.transport_is_recording()) { + project.closed.connect(on_project_close); + finished_closing.connect(on_quit_finished_closing); + project.close(); + } + } + + bool on_delete_event() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_delete_event"); + on_quit(); + return true; + } + + void on_project_close() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_project_close"); + if (project.undo_manager.is_dirty) { + switch(DialogUtils.save_close_cancel(this, null, "Save changes before closing?")) { + case Gtk.ResponseType.ACCEPT: + if (!do_save()) { + finished_closing(false); + return; + } + break; + case Gtk.ResponseType.NO: + // if the user has never saved the file but quits anyway, save in .fillmore + if (project.get_project_file() == null) { + project.save(null); + } + break; + case Gtk.ResponseType.DELETE_EVENT: // when user presses escape. + case Gtk.ResponseType.CANCEL: + finished_closing(false); + return; + default: + assert(false); + break; + } + } + finished_closing(true); + } + + // Edit menu + void on_cut() { + timeline.do_cut(); + } + + void on_copy() { + timeline.do_copy(); + } + + void on_paste() { + timeline.paste(); + } + + void on_undo() { + project.undo(); + } + + void on_delete() { + if (library.has_selection()) { + library.delete_selection(); + } else { + timeline.delete_selection(); + } + } + + void on_select_all() { + if (library.has_selection()) { + library.select_all(); + } else { + timeline.select_all(); + } + } + + public void on_split_at_playhead() { + project.split_at_playhead(); + } + + public void on_trim_to_playhead() { + project.trim_to_playhead(); + } + + public void on_clip_properties() { + if (library.has_selection()) { + Gee.ArrayList files = library.get_selected_files(); + if (files.size == 1) { + string file_name = files.get(0); + Model.ClipFile? clip_file = project.find_clipfile(file_name); + DialogUtils.show_clip_properties(this, null, clip_file, null); + } + } else { + Gee.ArrayList clips = timeline.selected_clips; + if (clips.size == 1) { + ClipView clip_view = clips.get(0); + DialogUtils.show_clip_properties(this, clip_view, null, null); + } + } + } + + // Track menu + + void on_track_new() { + UI.TrackInformation dialog = new UI.TrackInformation(); + dialog.set_track_name(get_default_track_name()); + if (track_name_dialog(dialog, null)) { + project.add_track(new Model.AudioTrack(project, dialog.get_track_name())); + } + dialog.destroy(); + } + + void on_track_rename() { + UI.TrackInformation dialog = new UI.TrackInformation(); + Model.Track track = selected_track(); + dialog.set_title("Rename Track"); + dialog.set_track_name(selected_track().display_name); + if (track_name_dialog(dialog, track)) { + track.set_display_name(dialog.get_track_name()); + } + dialog.destroy(); + } + + bool track_name_dialog(UI.TrackInformation dialog, Model.Track? track) { + Gtk.ResponseType result = Gtk.ResponseType.OK; + bool is_ok = true; + do { + result = (Gtk.ResponseType) dialog.run(); + string new_name = dialog.get_track_name(); + + if (result == Gtk.ResponseType.OK) { + if (new_name == "") { + is_ok = false; + DialogUtils.error("Invalid track name.", "The track name cannot be empty."); + } else { + is_ok = !project.is_duplicate_track_name(track, new_name); + if (!is_ok) { + DialogUtils.error("Duplicate track name.", + "A track with this name already exists."); + } + } + } + } while (result == Gtk.ResponseType.OK && !is_ok); + return result == Gtk.ResponseType.OK && is_ok; + } + + void on_track_remove() { + project.remove_track(selected_track()); + } + + // View menu + void on_zoom_in() { + do_zoom(0.1f); + } + + void on_zoom_out() { + do_zoom(-0.1f); + } + + void on_zoom_to_project() { + timeline.zoom_to_project(h_adjustment.page_size); + } + + void on_snap() { + project.snap_to_clip = !project.snap_to_clip; + } + + void on_view_library() { + if (timeline_library_pane.child2 == library_scrolled) { + timeline_library_pane.remove(library_scrolled); + project.library_visible = false; + } else { + timeline_library_pane.add2(library_scrolled); + timeline_library_pane.show_all(); + project.library_visible = true; + } + } + + void on_library_size_allocate(Gdk.Rectangle rectangle) { + if (!loading && timeline_library_pane.child2 == library_scrolled) { + project.library_width = rectangle.width; + } + } + + // Help menu + + void on_help_contents() { + try { + Gtk.show_uri(null, "http://trac.yorba.org/wiki/UsingFillmore0.1", 0); + } catch (GLib.Error e) { + } + } + + void on_about() { + Gtk.show_about_dialog(this, + "version", project.get_version(), + "comments", "An audio editor and recorder", + "copyright", "Copyright 2009-2010 Yorba Foundation", + "website", "http://www.yorba.org", + "license", project.get_license(), + "website-label", "Visit the Yorba web site", + "authors", project.authors + ); + } + + void on_save_graph() { + project.print_graph(project.media_engine.pipeline, "save_graph"); + } + + // toolbar + + void on_volume() { + /// TODO + } + + void on_rewind() { + project.media_engine.go(0); + scroll_to_beginning(); + } + + void on_end() { + project.go_end(); + scroll_to_end(); + } + + void on_play() { + if (project.transport_is_recording()) { + set_sensitive_group(main_group, "Record", true); + record_button.set_active(false); + play_button.set_active(false); + project.media_engine.pause(); + } else if (play_button.get_active()) + project.media_engine.do_play(PlayState.PLAYING); + else + project.media_engine.pause(); + } + + void on_record() { + if (record_button.get_active()) { + Model.AudioTrack audio_track = selected_track() as Model.AudioTrack; + int number_of_channels; + if (audio_track.get_num_channels(out number_of_channels)) { + if (number_of_channels > CHANNELS_PER_TRACK_RECORD) { + record_button.set_active(false); + on_error_occurred("Can not record onto a stereo track", null); + return; + } + } + set_sensitive_group(main_group, "Record", false); + set_sensitive_group(main_group, "Play", false); + project.record(audio_track); + } + else { + on_play(); + } + } + + void on_callback_pulse() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_callback_pulse"); + if (project.transport_is_playing()) { + scroll_toward_center(provider.time_to_xpos(project.media_engine.position)); + } + timeline.queue_draw(); + } + + int64 get_zoom_center_time() { + return project.transport_get_position(); + } + + void do_zoom(float increment) { + center_time = get_zoom_center_time(); + timeline.zoom(increment); + } + + void on_timeline_size_allocate(Gdk.Rectangle rectangle) { + if (center_time != -1) { + int new_center_pixel = provider.time_to_xpos(center_time); + int page_size = (int)(h_adjustment.get_page_size() / 2); + h_adjustment.clamp_page(new_center_pixel - page_size, new_center_pixel + page_size); + center_time = -1; + } + } + + void on_timeline_selection_changed(bool selected) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_timeline_selection_changed"); + if (selected) { + library.unselect_all(); + } + update_menu(); + } + + public void on_library_selection_changed(bool selected) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_library_selection_changed"); + if (selected) { + timeline.deselect_all_clips(); + timeline.queue_draw(); + } + update_menu(); + } + + // main + + /*static void main(string[] args) { + Hildon.gtk_init(ref args); + debug_level = -1; + OptionContext context = new OptionContext( + " [project file] - Record and edit multitrack audio"); + context.add_main_entries(options, null); + context.add_group(Gst.init_get_option_group()); + + try { + context.parse(ref args); + } catch (GLib.Error arg_error) { + stderr.printf("%s\nRun 'fillmore --help' for a full list of available command line options.", + arg_error.message); + return; + } + Gtk.init(ref args); + try { + GLib.Environment.set_application_name("Fillmore"); + if (debug_level > -1) { + set_logging_level((Logging.Level)debug_level); + } + + AppDirs.init(args[0], _PROGRAM_NAME); + string rc_file = AppDirs.get_resources_dir().get_child("fillmore.rc").get_path(); + + Gtk.rc_parse(rc_file); + Gst.init(ref args); + + string? project_file = null; + if (args.length > 1) { + project_file = args[1]; + try { + project_file = GLib.Filename.from_uri(project_file); + } catch (GLib.Error e) { } + } + + ClassFactory.set_class_factory(new FillmoreClassFactory()); + View.MediaEngine.can_run(); + + Recorder recorder = new Recorder(project_file); + recorder.show_all(); + Gtk.main(); + } catch (Error e) { + do_error_dialog("Could not start application.",e.message); + } + }*/ + + public static void do_error_dialog(string major_message, string? minor_message) { + DialogUtils.error(major_message, minor_message); + } + + public void on_load_error(string message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_error"); + load_errors.add(message); + } + + public void on_load_complete() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_complete"); + project.media_engine.pipeline.set_state(Gst.State.PAUSED); + timeline_library_pane.set_position(project.library_width); + + Gtk.ToggleAction action = main_group.get_action("Library") as Gtk.ToggleAction; + if (action.get_active() != project.library_visible) { + action.set_active(project.library_visible); + } + + action = main_group.get_action("Snap") as Gtk.ToggleAction; + if (action.get_active() != project.snap_to_clip) { + action.set_active(project.snap_to_clip); + } + + if (project.library_visible) { + if (timeline_library_pane.child2 != library_scrolled) { + timeline_library_pane.add2(library_scrolled); + } + } else { + if (timeline_library_pane.child2 == library_scrolled) { + timeline_library_pane.remove(library_scrolled); + } + } + + if (load_errors.size > 0) { + string message = ""; + foreach (string s in load_errors) { + message = message + s + "\n"; + } + do_error_dialog("An error occurred loading the project.", message); + } + + loading = false; + } + + void on_name_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_name_changed"); + set_title(project.get_file_display_name()); + } + + void on_dirty_changed(bool isDirty) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_dirty_changed"); + Gtk.MenuItem? file_save = (Gtk.MenuItem?) get_widget(manager, "/MenuBar/ProjectMenu/Save"); + assert(file_save != null); + file_save.set_sensitive(isDirty); + } + + void on_undo_changed(bool can_undo) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_undo_changed"); + Gtk.MenuItem? undo = (Gtk.MenuItem?) get_widget(manager, "/MenuBar/EditMenu/EditUndo"); + assert(undo != null); + //undo.set_label("_Undo " + project.undo_manager.get_undo_title()); + set_sensitive_group(main_group, "Undo", is_stopped() && project.undo_manager.can_undo); + } + + void on_playstate_changed(PlayState playstate) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_playstate_changed"); + if (playstate == PlayState.STOPPED) { + cursor_pos = -1; + play_button.set_active(false); + set_sensitive_group(main_group, "Export", project.can_export()); + update_menu(); + } + } + + void on_error_occurred(string major_message, string? minor_message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_error_occurred"); + DialogUtils.error(major_message, minor_message); + } + + string get_fillmore_directory() { + return Path.build_filename(GLib.Environment.get_home_dir(), ".fillmore"); + } + + // TransportDelegate methods + bool is_playing() { + return project.transport_is_playing(); + } + + bool is_recording() { + return project.transport_is_recording(); + } + + bool is_stopped() { + return !(is_playing() || is_recording()); + } +} + +public class Fillmore : Hildon.Program { + construct { } + + public void run(string[] args) { + debug_level = -1; + OptionContext context = new OptionContext( + " [project file] - Record and edit multitrack audio"); + context.add_main_entries(options, null); + context.add_group(Gst.init_get_option_group()); + + try { + context.parse(ref args); + } catch (GLib.Error arg_error) { + stderr.printf("%s\nRun 'fillmore --help' for a full list of available command line options.", + arg_error.message); + return; + } + //Gtk.init(ref args); + try { + GLib.Environment.set_application_name("Fillmore"); + if (debug_level > -1) { + set_logging_level((Logging.Level)debug_level); + } + + AppDirs.init(args[0], _PROGRAM_NAME); + string rc_file = AppDirs.get_resources_dir().get_child("fillmore.rc").get_path(); + + Gtk.rc_parse(rc_file); + //Gst.init(ref args); + + string? project_file = null; + if (args.length > 1) { + project_file = args[1]; + try { + project_file = GLib.Filename.from_uri(project_file); + } catch (GLib.Error e) { } + } + + ClassFactory.set_class_factory(new FillmoreClassFactory()); + View.MediaEngine.can_run(); + + Recorder recorder = new Recorder(project_file); + recorder.show_all(); + Gtk.main(); + } catch (Error e) { + Recorder.do_error_dialog("Could not start application.",e.message); + } + } +} + +public static int main(string[] args) { + Gtk.init(ref args); + Gst.init(ref args); + Fillmore fillmore = new Fillmore(); + fillmore.run(args); + return 0; +} + +static void NO_main(string[] args) { + Hildon.gtk_init(ref args); + debug_level = -1; + OptionContext context = new OptionContext( + " [project file] - Record and edit multitrack audio"); + context.add_main_entries(options, null); + context.add_group(Gst.init_get_option_group()); + + try { + context.parse(ref args); + } catch (GLib.Error arg_error) { + stderr.printf("%s\nRun 'fillmore --help' for a full list of available command line options.", + arg_error.message); + return; + } + Gtk.init(ref args); + try { + GLib.Environment.set_application_name("Fillmore"); + if (debug_level > -1) { + set_logging_level((Logging.Level)debug_level); + } + + AppDirs.init(args[0], _PROGRAM_NAME); + string rc_file = AppDirs.get_resources_dir().get_child("fillmore.rc").get_path(); + + Gtk.rc_parse(rc_file); + Gst.init(ref args); + + string? project_file = null; + if (args.length > 1) { + project_file = args[1]; + try { + project_file = GLib.Filename.from_uri(project_file); + } catch (GLib.Error e) { } + } + + ClassFactory.set_class_factory(new FillmoreClassFactory()); + View.MediaEngine.can_run(); + + Recorder recorder = new Recorder(project_file); + recorder.show_all(); + Gtk.main(); + } catch (Error e) { + Recorder.do_error_dialog("Could not start application.",e.message); + } +} diff --git a/src/fillmore/fillmore/.stamp b/src/fillmore/fillmore/.stamp new file mode 100644 index 0000000..e69de29 diff --git a/src/fillmore/fillmore/FillmoreClassFactory.c b/src/fillmore/fillmore/FillmoreClassFactory.c new file mode 100644 index 0000000..32a4c30 --- /dev/null +++ b/src/fillmore/fillmore/FillmoreClassFactory.c @@ -0,0 +1,401 @@ +/* FillmoreClassFactory.c generated by valac, the Vala compiler + * generated from FillmoreClassFactory.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include + + +#define TYPE_TRACK_SEPARATOR (track_separator_get_type ()) +#define TRACK_SEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_SEPARATOR, TrackSeparator)) +#define TRACK_SEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_SEPARATOR, TrackSeparatorClass)) +#define IS_TRACK_SEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_SEPARATOR)) +#define IS_TRACK_SEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_SEPARATOR)) +#define TRACK_SEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_SEPARATOR, TrackSeparatorClass)) + +typedef struct _TrackSeparator TrackSeparator; +typedef struct _TrackSeparatorClass TrackSeparatorClass; +typedef struct _TrackSeparatorPrivate TrackSeparatorPrivate; + +#define TYPE_FILLMORE_TRACK_VIEW (fillmore_track_view_get_type ()) +#define FILLMORE_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FILLMORE_TRACK_VIEW, FillmoreTrackView)) +#define FILLMORE_TRACK_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FILLMORE_TRACK_VIEW, FillmoreTrackViewClass)) +#define IS_FILLMORE_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FILLMORE_TRACK_VIEW)) +#define IS_FILLMORE_TRACK_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FILLMORE_TRACK_VIEW)) +#define FILLMORE_TRACK_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FILLMORE_TRACK_VIEW, FillmoreTrackViewClass)) + +typedef struct _FillmoreTrackView FillmoreTrackView; +typedef struct _FillmoreTrackViewClass FillmoreTrackViewClass; +typedef struct _FillmoreTrackViewPrivate FillmoreTrackViewPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define TYPE_FILLMORE_CLASS_FACTORY (fillmore_class_factory_get_type ()) +#define FILLMORE_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FILLMORE_CLASS_FACTORY, FillmoreClassFactory)) +#define FILLMORE_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FILLMORE_CLASS_FACTORY, FillmoreClassFactoryClass)) +#define IS_FILLMORE_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FILLMORE_CLASS_FACTORY)) +#define IS_FILLMORE_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FILLMORE_CLASS_FACTORY)) +#define FILLMORE_CLASS_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FILLMORE_CLASS_FACTORY, FillmoreClassFactoryClass)) + +typedef struct _FillmoreClassFactory FillmoreClassFactory; +typedef struct _FillmoreClassFactoryClass FillmoreClassFactoryClass; +typedef struct _FillmoreClassFactoryPrivate FillmoreClassFactoryPrivate; + +struct _TrackSeparator { + GtkHSeparator parent_instance; + TrackSeparatorPrivate * priv; +}; + +struct _TrackSeparatorClass { + GtkHSeparatorClass parent_class; +}; + +struct _FillmoreTrackView { + GtkVBox parent_instance; + FillmoreTrackViewPrivate * priv; +}; + +struct _FillmoreTrackViewClass { + GtkVBoxClass parent_class; +}; + +struct _FillmoreTrackViewPrivate { + TrackView* track_view; +}; + +struct _FillmoreClassFactory { + ClassFactory parent_instance; + FillmoreClassFactoryPrivate * priv; +}; + +struct _FillmoreClassFactoryClass { + ClassFactoryClass parent_class; +}; + + +static gpointer track_separator_parent_class = NULL; +static gpointer fillmore_track_view_parent_class = NULL; +static TrackViewIface* fillmore_track_view_track_view_parent_iface = NULL; +static gpointer fillmore_class_factory_parent_class = NULL; + +GType track_separator_get_type (void); +enum { + TRACK_SEPARATOR_DUMMY_PROPERTY +}; +TrackSeparator* track_separator_new (void); +TrackSeparator* track_separator_construct (GType object_type); +GType fillmore_track_view_get_type (void); +#define FILLMORE_TRACK_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_FILLMORE_TRACK_VIEW, FillmoreTrackViewPrivate)) +enum { + FILLMORE_TRACK_VIEW_DUMMY_PROPERTY +}; +static void fillmore_track_view_on_clip_view_added (FillmoreTrackView* self, ClipView* clip_view); +static void _fillmore_track_view_on_clip_view_added_track_view_clip_view_added (TrackView* _sender, ClipView* clip_view, gpointer self); +FillmoreTrackView* fillmore_track_view_new (TrackView* track_view); +FillmoreTrackView* fillmore_track_view_construct (GType object_type, TrackView* track_view); +static void fillmore_track_view_real_move_to_top (TrackView* base, ClipView* clip_view); +static void fillmore_track_view_real_resize (TrackView* base); +static ModelTrack* fillmore_track_view_real_get_track (TrackView* base); +static gint fillmore_track_view_real_get_track_height (TrackView* base); +static GtkWidget* fillmore_track_view_real_find_child (TrackView* base, double x, double y); +static void fillmore_track_view_real_select_all (TrackView* base); +static void fillmore_track_view_finalize (GObject* obj); +GType fillmore_class_factory_get_type (void); +enum { + FILLMORE_CLASS_FACTORY_DUMMY_PROPERTY +}; +static TrackView* fillmore_class_factory_real_get_track_view (ClassFactory* base, ModelTrack* track, TimeLine* timeline); +FillmoreClassFactory* fillmore_class_factory_new (void); +FillmoreClassFactory* fillmore_class_factory_construct (GType object_type); + + + +#line 7 "FillmoreClassFactory.vala" +TrackSeparator* track_separator_construct (GType object_type) { +#line 124 "FillmoreClassFactory.c" + TrackSeparator * self; + self = g_object_newv (object_type, 0, NULL); + return self; +} + + +#line 7 "FillmoreClassFactory.vala" +TrackSeparator* track_separator_new (void) { +#line 7 "FillmoreClassFactory.vala" + return track_separator_construct (TYPE_TRACK_SEPARATOR); +#line 135 "FillmoreClassFactory.c" +} + + +static void track_separator_class_init (TrackSeparatorClass * klass) { + track_separator_parent_class = g_type_class_peek_parent (klass); +} + + +static void track_separator_instance_init (TrackSeparator * self) { +} + + +GType track_separator_get_type (void) { + static volatile gsize track_separator_type_id__volatile = 0; + if (g_once_init_enter (&track_separator_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (TrackSeparatorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) track_separator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackSeparator), 0, (GInstanceInitFunc) track_separator_instance_init, NULL }; + GType track_separator_type_id; + track_separator_type_id = g_type_register_static (GTK_TYPE_HSEPARATOR, "TrackSeparator", &g_define_type_info, 0); + g_once_init_leave (&track_separator_type_id__volatile, track_separator_type_id); + } + return track_separator_type_id__volatile; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 38 "FillmoreClassFactory.vala" +static void _fillmore_track_view_on_clip_view_added_track_view_clip_view_added (TrackView* _sender, ClipView* clip_view, gpointer self) { +#line 167 "FillmoreClassFactory.c" + fillmore_track_view_on_clip_view_added (self, clip_view); +} + + +#line 13 "FillmoreClassFactory.vala" +FillmoreTrackView* fillmore_track_view_construct (GType object_type, TrackView* track_view) { +#line 174 "FillmoreClassFactory.c" + FillmoreTrackView * self; + TrackView* _tmp0_; + TrackSeparator* _tmp1_; +#line 13 "FillmoreClassFactory.vala" + g_return_val_if_fail (IS_TRACK_VIEW (track_view), NULL); +#line 180 "FillmoreClassFactory.c" + self = g_object_newv (object_type, 0, NULL); +#line 14 "FillmoreClassFactory.vala" + self->priv->track_view = (_tmp0_ = _g_object_ref0 (track_view), _g_object_unref0 (self->priv->track_view), _tmp0_); +#line 15 "FillmoreClassFactory.vala" + g_signal_connect_object (track_view, "clip-view-added", (GCallback) _fillmore_track_view_on_clip_view_added_track_view_clip_view_added, self, 0); +#line 17 "FillmoreClassFactory.vala" + gtk_box_pack_start (GTK_BOX (self), GTK_WIDGET (track_view), TRUE, TRUE, (guint) 0); +#line 18 "FillmoreClassFactory.vala" + gtk_box_pack_start (GTK_BOX (self), GTK_WIDGET (_tmp1_ = g_object_ref_sink (track_separator_new ())), FALSE, FALSE, (guint) 0); +#line 190 "FillmoreClassFactory.c" + _g_object_unref0 (_tmp1_); +#line 19 "FillmoreClassFactory.vala" + g_object_set (GTK_WIDGET (self), "can-focus", FALSE, NULL); +#line 194 "FillmoreClassFactory.c" + return self; +} + + +#line 13 "FillmoreClassFactory.vala" +FillmoreTrackView* fillmore_track_view_new (TrackView* track_view) { +#line 13 "FillmoreClassFactory.vala" + return fillmore_track_view_construct (TYPE_FILLMORE_TRACK_VIEW, track_view); +#line 203 "FillmoreClassFactory.c" +} + + +#line 22 "FillmoreClassFactory.vala" +static void fillmore_track_view_real_move_to_top (TrackView* base, ClipView* clip_view) { +#line 209 "FillmoreClassFactory.c" + FillmoreTrackView * self; + self = FILLMORE_TRACK_VIEW (base); +#line 22 "FillmoreClassFactory.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 23 "FillmoreClassFactory.vala" + track_view_move_to_top (self->priv->track_view, clip_view); +#line 216 "FillmoreClassFactory.c" +} + + +#line 26 "FillmoreClassFactory.vala" +static void fillmore_track_view_real_resize (TrackView* base) { +#line 222 "FillmoreClassFactory.c" + FillmoreTrackView * self; + self = FILLMORE_TRACK_VIEW (base); +#line 27 "FillmoreClassFactory.vala" + track_view_resize (self->priv->track_view); +#line 227 "FillmoreClassFactory.c" +} + + +#line 30 "FillmoreClassFactory.vala" +static ModelTrack* fillmore_track_view_real_get_track (TrackView* base) { +#line 233 "FillmoreClassFactory.c" + FillmoreTrackView * self; + ModelTrack* result = NULL; + self = FILLMORE_TRACK_VIEW (base); + result = track_view_get_track (self->priv->track_view); +#line 31 "FillmoreClassFactory.vala" + return result; +#line 240 "FillmoreClassFactory.c" +} + + +#line 34 "FillmoreClassFactory.vala" +static gint fillmore_track_view_real_get_track_height (TrackView* base) { +#line 246 "FillmoreClassFactory.c" + FillmoreTrackView * self; + gint result = 0; + self = FILLMORE_TRACK_VIEW (base); + result = track_view_get_track_height (self->priv->track_view); +#line 35 "FillmoreClassFactory.vala" + return result; +#line 253 "FillmoreClassFactory.c" +} + + +#line 38 "FillmoreClassFactory.vala" +static void fillmore_track_view_on_clip_view_added (FillmoreTrackView* self, ClipView* clip_view) { +#line 38 "FillmoreClassFactory.vala" + g_return_if_fail (IS_FILLMORE_TRACK_VIEW (self)); +#line 38 "FillmoreClassFactory.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 39 "FillmoreClassFactory.vala" + g_signal_emit_by_name (TRACK_VIEW (self), "clip-view-added", clip_view); +#line 265 "FillmoreClassFactory.c" +} + + +#line 42 "FillmoreClassFactory.vala" +static GtkWidget* fillmore_track_view_real_find_child (TrackView* base, double x, double y) { +#line 271 "FillmoreClassFactory.c" + FillmoreTrackView * self; + GtkWidget* result = NULL; + self = FILLMORE_TRACK_VIEW (base); + result = track_view_find_child (self->priv->track_view, x, y); +#line 43 "FillmoreClassFactory.vala" + return result; +#line 278 "FillmoreClassFactory.c" +} + + +#line 46 "FillmoreClassFactory.vala" +static void fillmore_track_view_real_select_all (TrackView* base) { +#line 284 "FillmoreClassFactory.c" + FillmoreTrackView * self; + self = FILLMORE_TRACK_VIEW (base); +#line 47 "FillmoreClassFactory.vala" + track_view_select_all (self->priv->track_view); +#line 289 "FillmoreClassFactory.c" +} + + +static void fillmore_track_view_class_init (FillmoreTrackViewClass * klass) { + fillmore_track_view_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (FillmoreTrackViewPrivate)); + G_OBJECT_CLASS (klass)->finalize = fillmore_track_view_finalize; +} + + +static void fillmore_track_view_track_view_interface_init (TrackViewIface * iface) { + fillmore_track_view_track_view_parent_iface = g_type_interface_peek_parent (iface); + iface->move_to_top = fillmore_track_view_real_move_to_top; + iface->resize = fillmore_track_view_real_resize; + iface->get_track = fillmore_track_view_real_get_track; + iface->get_track_height = fillmore_track_view_real_get_track_height; + iface->find_child = fillmore_track_view_real_find_child; + iface->select_all = fillmore_track_view_real_select_all; +} + + +static void fillmore_track_view_instance_init (FillmoreTrackView * self) { + self->priv = FILLMORE_TRACK_VIEW_GET_PRIVATE (self); +} + + +static void fillmore_track_view_finalize (GObject* obj) { + FillmoreTrackView * self; + self = FILLMORE_TRACK_VIEW (obj); + _g_object_unref0 (self->priv->track_view); + G_OBJECT_CLASS (fillmore_track_view_parent_class)->finalize (obj); +} + + +GType fillmore_track_view_get_type (void) { + static volatile gsize fillmore_track_view_type_id__volatile = 0; + if (g_once_init_enter (&fillmore_track_view_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (FillmoreTrackViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) fillmore_track_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FillmoreTrackView), 0, (GInstanceInitFunc) fillmore_track_view_instance_init, NULL }; + static const GInterfaceInfo track_view_info = { (GInterfaceInitFunc) fillmore_track_view_track_view_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType fillmore_track_view_type_id; + fillmore_track_view_type_id = g_type_register_static (GTK_TYPE_VBOX, "FillmoreTrackView", &g_define_type_info, 0); + g_type_add_interface_static (fillmore_track_view_type_id, TYPE_TRACK_VIEW, &track_view_info); + g_once_init_leave (&fillmore_track_view_type_id__volatile, fillmore_track_view_type_id); + } + return fillmore_track_view_type_id__volatile; +} + + +#line 52 "FillmoreClassFactory.vala" +static TrackView* fillmore_class_factory_real_get_track_view (ClassFactory* base, ModelTrack* track, TimeLine* timeline) { +#line 340 "FillmoreClassFactory.c" + FillmoreClassFactory * self; + TrackView* result = NULL; + TrackView* track_view; + self = FILLMORE_CLASS_FACTORY (base); +#line 52 "FillmoreClassFactory.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 52 "FillmoreClassFactory.vala" + g_return_val_if_fail (IS_TIME_LINE (timeline), NULL); +#line 53 "FillmoreClassFactory.vala" + track_view = CLASS_FACTORY_CLASS (fillmore_class_factory_parent_class)->get_track_view (CLASS_FACTORY (self), track, timeline); +#line 351 "FillmoreClassFactory.c" + result = TRACK_VIEW (g_object_ref_sink (fillmore_track_view_new (track_view))); + _g_object_unref0 (track_view); +#line 54 "FillmoreClassFactory.vala" + return result; +#line 356 "FillmoreClassFactory.c" +} + + +#line 51 "FillmoreClassFactory.vala" +FillmoreClassFactory* fillmore_class_factory_construct (GType object_type) { +#line 362 "FillmoreClassFactory.c" + FillmoreClassFactory* self; +#line 51 "FillmoreClassFactory.vala" + self = (FillmoreClassFactory*) class_factory_construct (object_type); +#line 366 "FillmoreClassFactory.c" + return self; +} + + +#line 51 "FillmoreClassFactory.vala" +FillmoreClassFactory* fillmore_class_factory_new (void) { +#line 51 "FillmoreClassFactory.vala" + return fillmore_class_factory_construct (TYPE_FILLMORE_CLASS_FACTORY); +#line 375 "FillmoreClassFactory.c" +} + + +static void fillmore_class_factory_class_init (FillmoreClassFactoryClass * klass) { + fillmore_class_factory_parent_class = g_type_class_peek_parent (klass); + CLASS_FACTORY_CLASS (klass)->get_track_view = fillmore_class_factory_real_get_track_view; +} + + +static void fillmore_class_factory_instance_init (FillmoreClassFactory * self) { +} + + +GType fillmore_class_factory_get_type (void) { + static volatile gsize fillmore_class_factory_type_id__volatile = 0; + if (g_once_init_enter (&fillmore_class_factory_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (FillmoreClassFactoryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) fillmore_class_factory_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FillmoreClassFactory), 0, (GInstanceInitFunc) fillmore_class_factory_instance_init, NULL }; + GType fillmore_class_factory_type_id; + fillmore_class_factory_type_id = g_type_register_static (TYPE_CLASS_FACTORY, "FillmoreClassFactory", &g_define_type_info, 0); + g_once_init_leave (&fillmore_class_factory_type_id__volatile, fillmore_class_factory_type_id); + } + return fillmore_class_factory_type_id__volatile; +} + + + + diff --git a/src/fillmore/fillmore/FillmoreClassFactory.o b/src/fillmore/fillmore/FillmoreClassFactory.o new file mode 100644 index 0000000000000000000000000000000000000000..c0d427b379970586acba0c0d3b63a2a8e88b12aa GIT binary patch literal 74624 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 z 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 fd%BiiVSk}VlzW=mwmoux +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_PROJECT_PROPERTIES (project_properties_get_type ()) +#define PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROJECT_PROPERTIES, ProjectProperties)) +#define PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass)) +#define IS_PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROJECT_PROPERTIES)) +#define IS_PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROJECT_PROPERTIES)) +#define PROJECT_PROPERTIES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass)) + +typedef struct _ProjectProperties ProjectProperties; +typedef struct _ProjectPropertiesClass ProjectPropertiesClass; +typedef struct _ProjectPropertiesPrivate ProjectPropertiesPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) + +struct _ProjectProperties { + GtkDialog parent_instance; + ProjectPropertiesPrivate * priv; +}; + +struct _ProjectPropertiesClass { + GtkDialogClass parent_class; +}; + +struct _ProjectPropertiesPrivate { + GTimeVal* tap_time; + gint tap_time_length1; + gint _tap_time_size_; + gint tap_index; + gboolean sample_full; + GtkAdjustment* tempo_adjustment; + GtkAdjustment* volume_adjustment; + GtkComboBox* timesignature_combo; + GtkToggleButton* click_during_play; + GtkToggleButton* click_during_record; +}; + + +static gpointer project_properties_parent_class = NULL; + +GType project_properties_get_type (void); +#define PROJECT_PROPERTIES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROJECT_PROPERTIES, ProjectPropertiesPrivate)) +enum { + PROJECT_PROPERTIES_DUMMY_PROPERTY +}; +#define PROJECT_PROPERTIES_NUMBER_OF_SAMPLES 4 +#define PROJECT_PROPERTIES_G_USEC_PER_SEC ((glong) 1000000) +void project_properties_set_tempo (ProjectProperties* self, gint tempo); +void project_properties_set_volume (ProjectProperties* self, double volume); +static void project_properties_set_during_play (ProjectProperties* self, gboolean active); +static void project_properties_set_during_record (ProjectProperties* self, gboolean active); +static void project_properties_set_time_signature (ProjectProperties* self, Fraction* time_signature); +void project_properties_setup (ProjectProperties* self, ModelProject* project, GtkBuilder* builder); +gint project_properties_get_tempo (ProjectProperties* self); +double project_properties_get_click_volume (ProjectProperties* self); +void project_properties_get_time_signature (ProjectProperties* self, Fraction* result); +gboolean project_properties_during_play (ProjectProperties* self); +gboolean project_properties_during_record (ProjectProperties* self); +static void project_properties_calculate_bpm (ProjectProperties* self); +void project_properties_on_tap (ProjectProperties* self); +ProjectProperties* project_properties_new (void); +ProjectProperties* project_properties_construct (GType object_type); +static void project_properties_finalize (GObject* obj); +static int _vala_strcmp0 (const char * str1, const char * str2); + + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 20 "ProjectProperties.vala" +void project_properties_setup (ProjectProperties* self, ModelProject* project, GtkBuilder* builder) { +#line 93 "ProjectProperties.c" + GtkAdjustment* _tmp0_; + GtkAdjustment* _tmp1_; + GtkComboBox* _tmp2_; + GtkToggleButton* _tmp3_; + GtkToggleButton* _tmp4_; + Fraction _tmp6_; + Fraction _tmp5_ = {0}; +#line 20 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 20 "ProjectProperties.vala" + g_return_if_fail (MODEL_IS_PROJECT (project)); +#line 20 "ProjectProperties.vala" + g_return_if_fail (GTK_IS_BUILDER (builder)); +#line 21 "ProjectProperties.vala" + self->priv->tempo_adjustment = (_tmp0_ = _g_object_ref0 (GTK_ADJUSTMENT (gtk_builder_get_object (builder, "tempo_adjustment"))), _g_object_unref0 (self->priv->tempo_adjustment), _tmp0_); +#line 22 "ProjectProperties.vala" + self->priv->volume_adjustment = (_tmp1_ = _g_object_ref0 (GTK_ADJUSTMENT (gtk_builder_get_object (builder, "volume_adjustment"))), _g_object_unref0 (self->priv->volume_adjustment), _tmp1_); +#line 23 "ProjectProperties.vala" + self->priv->timesignature_combo = (_tmp2_ = _g_object_ref0 (GTK_COMBO_BOX (gtk_builder_get_object (builder, "timesignature_combo"))), _g_object_unref0 (self->priv->timesignature_combo), _tmp2_); +#line 24 "ProjectProperties.vala" + self->priv->click_during_play = (_tmp3_ = _g_object_ref0 (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "playback"))), _g_object_unref0 (self->priv->click_during_play), _tmp3_); +#line 25 "ProjectProperties.vala" + self->priv->click_during_record = (_tmp4_ = _g_object_ref0 (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "record"))), _g_object_unref0 (self->priv->click_during_record), _tmp4_); +#line 26 "ProjectProperties.vala" + project_properties_set_tempo (self, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (project))); +#line 27 "ProjectProperties.vala" + project_properties_set_volume (self, project->click_volume); +#line 28 "ProjectProperties.vala" + project_properties_set_during_play (self, project->click_during_play); +#line 29 "ProjectProperties.vala" + project_properties_set_during_record (self, project->click_during_record); +#line 30 "ProjectProperties.vala" + project_properties_set_time_signature (self, (_tmp6_ = (model_tempo_information_get_time_signature (MODEL_TEMPO_INFORMATION (project), &_tmp5_), _tmp5_), &_tmp6_)); +#line 127 "ProjectProperties.c" +} + + +#line 33 "ProjectProperties.vala" +void project_properties_set_tempo (ProjectProperties* self, gint tempo) { +#line 33 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 34 "ProjectProperties.vala" + gtk_adjustment_set_value (self->priv->tempo_adjustment, (double) tempo); +#line 137 "ProjectProperties.c" +} + + +#line 37 "ProjectProperties.vala" +gint project_properties_get_tempo (ProjectProperties* self) { +#line 143 "ProjectProperties.c" + gint result = 0; +#line 37 "ProjectProperties.vala" + g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), 0); +#line 147 "ProjectProperties.c" + result = (gint) gtk_adjustment_get_value (self->priv->tempo_adjustment); +#line 38 "ProjectProperties.vala" + return result; +#line 151 "ProjectProperties.c" +} + + +#line 41 "ProjectProperties.vala" +void project_properties_set_volume (ProjectProperties* self, double volume) { +#line 41 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 42 "ProjectProperties.vala" + gtk_adjustment_set_value (self->priv->volume_adjustment, volume); +#line 161 "ProjectProperties.c" +} + + +#line 45 "ProjectProperties.vala" +double project_properties_get_click_volume (ProjectProperties* self) { +#line 167 "ProjectProperties.c" + double result = 0.0; +#line 45 "ProjectProperties.vala" + g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), 0.0); +#line 171 "ProjectProperties.c" + result = gtk_adjustment_get_value (self->priv->volume_adjustment); +#line 46 "ProjectProperties.vala" + return result; +#line 175 "ProjectProperties.c" +} + + +#line 49 "ProjectProperties.vala" +void project_properties_get_time_signature (ProjectProperties* self, Fraction* result) { +#line 181 "ProjectProperties.c" + Fraction _tmp0_ = {0}; +#line 49 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 185 "ProjectProperties.c" + *result = (fraction_init_from_string (&_tmp0_, gtk_combo_box_get_active_text (self->priv->timesignature_combo)), _tmp0_); +#line 50 "ProjectProperties.vala" + return; +#line 189 "ProjectProperties.c" +} + + +#line 53 "ProjectProperties.vala" +static void project_properties_set_time_signature (ProjectProperties* self, Fraction* time_signature) { +#line 195 "ProjectProperties.c" + char* sig; + GtkTreeIter iter = {0}; +#line 53 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 54 "ProjectProperties.vala" + sig = fraction_to_string (time_signature); +#line 57 "ProjectProperties.vala" + if (gtk_tree_model_get_iter_first (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter)) { +#line 204 "ProjectProperties.c" + { + gboolean _tmp0_; +#line 58 "ProjectProperties.vala" + _tmp0_ = TRUE; +#line 58 "ProjectProperties.vala" + while (TRUE) { +#line 211 "ProjectProperties.c" + char* s; +#line 58 "ProjectProperties.vala" + if (!_tmp0_) { +#line 65 "ProjectProperties.vala" + if (!gtk_tree_model_iter_next (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter)) { +#line 65 "ProjectProperties.vala" + break; +#line 219 "ProjectProperties.c" + } + } +#line 58 "ProjectProperties.vala" + _tmp0_ = FALSE; +#line 224 "ProjectProperties.c" + s = NULL; +#line 60 "ProjectProperties.vala" + gtk_tree_model_get (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter, 0, &s, -1, -1); +#line 61 "ProjectProperties.vala" + if (_vala_strcmp0 (s, sig) == 0) { +#line 62 "ProjectProperties.vala" + gtk_combo_box_set_active_iter (self->priv->timesignature_combo, &iter); +#line 232 "ProjectProperties.c" + _g_free0 (s); + _g_free0 (sig); +#line 63 "ProjectProperties.vala" + return; +#line 237 "ProjectProperties.c" + } + _g_free0 (s); + } + } + } + _g_free0 (sig); +} + + +#line 69 "ProjectProperties.vala" +static void project_properties_set_during_play (ProjectProperties* self, gboolean active) { +#line 69 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 70 "ProjectProperties.vala" + gtk_toggle_button_set_active (self->priv->click_during_play, active); +#line 253 "ProjectProperties.c" +} + + +#line 73 "ProjectProperties.vala" +gboolean project_properties_during_play (ProjectProperties* self) { +#line 259 "ProjectProperties.c" + gboolean result = FALSE; +#line 73 "ProjectProperties.vala" + g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), FALSE); +#line 263 "ProjectProperties.c" + result = gtk_toggle_button_get_active (self->priv->click_during_play); +#line 74 "ProjectProperties.vala" + return result; +#line 267 "ProjectProperties.c" +} + + +#line 77 "ProjectProperties.vala" +static void project_properties_set_during_record (ProjectProperties* self, gboolean active) { +#line 77 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 78 "ProjectProperties.vala" + gtk_toggle_button_set_active (self->priv->click_during_record, active); +#line 277 "ProjectProperties.c" +} + + +#line 81 "ProjectProperties.vala" +gboolean project_properties_during_record (ProjectProperties* self) { +#line 283 "ProjectProperties.c" + gboolean result = FALSE; +#line 81 "ProjectProperties.vala" + g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), FALSE); +#line 287 "ProjectProperties.c" + result = gtk_toggle_button_get_active (self->priv->click_during_record); +#line 82 "ProjectProperties.vala" + return result; +#line 291 "ProjectProperties.c" +} + + +#line 85 "ProjectProperties.vala" +void project_properties_on_tap (ProjectProperties* self) { +#line 297 "ProjectProperties.c" + GTimeVal time_val = {0}; +#line 85 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 301 "ProjectProperties.c" + g_get_current_time (&time_val); +#line 87 "ProjectProperties.vala" + g_get_current_time (&time_val); +#line 88 "ProjectProperties.vala" + self->priv->tap_time[self->priv->tap_index] = time_val; +#line 89 "ProjectProperties.vala" + self->priv->tap_index = self->priv->tap_index + 1; +#line 90 "ProjectProperties.vala" + if (self->priv->tap_index == PROJECT_PROPERTIES_NUMBER_OF_SAMPLES) { +#line 91 "ProjectProperties.vala" + self->priv->sample_full = TRUE; +#line 92 "ProjectProperties.vala" + self->priv->tap_index = 0; +#line 315 "ProjectProperties.c" + } +#line 94 "ProjectProperties.vala" + project_properties_calculate_bpm (self); +#line 319 "ProjectProperties.c" +} + + +#line 97 "ProjectProperties.vala" +static void project_properties_calculate_bpm (ProjectProperties* self) { +#line 325 "ProjectProperties.c" + gint _tmp0_ = 0; + gint number_of_samples; + gint _tmp1_ = 0; + gint start_index; + double delta_sum; + double average; +#line 97 "ProjectProperties.vala" + g_return_if_fail (IS_PROJECT_PROPERTIES (self)); +#line 98 "ProjectProperties.vala" + if (self->priv->sample_full) { +#line 98 "ProjectProperties.vala" + _tmp0_ = PROJECT_PROPERTIES_NUMBER_OF_SAMPLES; +#line 338 "ProjectProperties.c" + } else { +#line 98 "ProjectProperties.vala" + _tmp0_ = self->priv->tap_index; +#line 342 "ProjectProperties.c" + } +#line 98 "ProjectProperties.vala" + number_of_samples = _tmp0_; +#line 99 "ProjectProperties.vala" + if (number_of_samples < 2) { +#line 100 "ProjectProperties.vala" + return; +#line 350 "ProjectProperties.c" + } +#line 103 "ProjectProperties.vala" + if (self->priv->sample_full) { +#line 103 "ProjectProperties.vala" + _tmp1_ = self->priv->tap_index; +#line 356 "ProjectProperties.c" + } else { +#line 103 "ProjectProperties.vala" + _tmp1_ = 0; +#line 360 "ProjectProperties.c" + } +#line 103 "ProjectProperties.vala" + start_index = _tmp1_; +#line 105 "ProjectProperties.vala" + delta_sum = (double) 0; +#line 366 "ProjectProperties.c" + { + gint i; +#line 106 "ProjectProperties.vala" + i = 0; +#line 371 "ProjectProperties.c" + { + gboolean _tmp2_; +#line 106 "ProjectProperties.vala" + _tmp2_ = TRUE; +#line 106 "ProjectProperties.vala" + while (TRUE) { +#line 378 "ProjectProperties.c" + gint current_index; + gint next_index; + glong difference; +#line 106 "ProjectProperties.vala" + if (!_tmp2_) { +#line 106 "ProjectProperties.vala" + i = i + 1; +#line 386 "ProjectProperties.c" + } +#line 106 "ProjectProperties.vala" + _tmp2_ = FALSE; +#line 106 "ProjectProperties.vala" + if (!(i < (number_of_samples - 1))) { +#line 106 "ProjectProperties.vala" + break; +#line 394 "ProjectProperties.c" + } +#line 107 "ProjectProperties.vala" + current_index = (i + start_index) % PROJECT_PROPERTIES_NUMBER_OF_SAMPLES; +#line 108 "ProjectProperties.vala" + next_index = (current_index + 1) % PROJECT_PROPERTIES_NUMBER_OF_SAMPLES; +#line 110 "ProjectProperties.vala" + difference = (((self->priv->tap_time[next_index].tv_sec - self->priv->tap_time[current_index].tv_sec) * PROJECT_PROPERTIES_G_USEC_PER_SEC) + self->priv->tap_time[next_index].tv_usec) - self->priv->tap_time[current_index].tv_usec; +#line 113 "ProjectProperties.vala" + if (difference > (5 * PROJECT_PROPERTIES_G_USEC_PER_SEC)) { +#line 115 "ProjectProperties.vala" + self->priv->tap_time[0] = self->priv->tap_time[self->priv->tap_index - 1]; +#line 116 "ProjectProperties.vala" + self->priv->sample_full = FALSE; +#line 117 "ProjectProperties.vala" + self->priv->tap_index = 1; +#line 118 "ProjectProperties.vala" + return; +#line 412 "ProjectProperties.c" + } +#line 120 "ProjectProperties.vala" + delta_sum = delta_sum + ((double) difference); +#line 416 "ProjectProperties.c" + } + } + } +#line 122 "ProjectProperties.vala" + average = (delta_sum / (number_of_samples - 1)) / PROJECT_PROPERTIES_G_USEC_PER_SEC; +#line 123 "ProjectProperties.vala" + gtk_adjustment_set_value (self->priv->tempo_adjustment, (double) ((gint) (60.0 / average))); +#line 424 "ProjectProperties.c" +} + + +#line 7 "ProjectProperties.vala" +ProjectProperties* project_properties_construct (GType object_type) { +#line 430 "ProjectProperties.c" + ProjectProperties * self; + self = g_object_newv (object_type, 0, NULL); + return self; +} + + +#line 7 "ProjectProperties.vala" +ProjectProperties* project_properties_new (void) { +#line 7 "ProjectProperties.vala" + return project_properties_construct (TYPE_PROJECT_PROPERTIES); +#line 441 "ProjectProperties.c" +} + + +static void project_properties_class_init (ProjectPropertiesClass * klass) { + project_properties_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ProjectPropertiesPrivate)); + G_OBJECT_CLASS (klass)->finalize = project_properties_finalize; +} + + +static void project_properties_instance_init (ProjectProperties * self) { + self->priv = PROJECT_PROPERTIES_GET_PRIVATE (self); + self->priv->tap_time = g_new0 (GTimeVal, PROJECT_PROPERTIES_NUMBER_OF_SAMPLES); + self->priv->tap_time_length1 = PROJECT_PROPERTIES_NUMBER_OF_SAMPLES; + self->priv->_tap_time_size_ = self->priv->tap_time_length1; + self->priv->tap_index = 0; + self->priv->sample_full = FALSE; +} + + +static void project_properties_finalize (GObject* obj) { + ProjectProperties * self; + self = PROJECT_PROPERTIES (obj); + self->priv->tap_time = (g_free (self->priv->tap_time), NULL); + _g_object_unref0 (self->priv->tempo_adjustment); + _g_object_unref0 (self->priv->volume_adjustment); + _g_object_unref0 (self->priv->timesignature_combo); + _g_object_unref0 (self->priv->click_during_play); + _g_object_unref0 (self->priv->click_during_record); + G_OBJECT_CLASS (project_properties_parent_class)->finalize (obj); +} + + +GType project_properties_get_type (void) { + static volatile gsize project_properties_type_id__volatile = 0; + if (g_once_init_enter (&project_properties_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ProjectPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) project_properties_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProjectProperties), 0, (GInstanceInitFunc) project_properties_instance_init, NULL }; + GType project_properties_type_id; + project_properties_type_id = g_type_register_static (GTK_TYPE_DIALOG, "ProjectProperties", &g_define_type_info, 0); + g_once_init_leave (&project_properties_type_id__volatile, project_properties_type_id); + } + return project_properties_type_id__volatile; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/fillmore/fillmore/ProjectProperties.o b/src/fillmore/fillmore/ProjectProperties.o new file mode 100644 index 0000000000000000000000000000000000000000..daf1cd94333389ae573c15c89686d1587baea59e GIT binary patch literal 77628 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 literal 0 HcmV?d00001 diff --git a/src/fillmore/fillmore/VolumeAndPanPopUp.c b/src/fillmore/fillmore/VolumeAndPanPopUp.c new file mode 100644 index 0000000..0d6d1b9 --- /dev/null +++ b/src/fillmore/fillmore/VolumeAndPanPopUp.c @@ -0,0 +1,252 @@ +/* VolumeAndPanPopUp.c generated by valac, the Vala compiler + * generated from VolumeAndPanPopUp.vala, do not modify */ + +/* Demo Recorder for MAEMO 5 +* Copyright (C) 2010 Dru Moore +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 2, +* or (at your option) any later version, as published by the Free +* Software Foundation +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details +* +* You should have received a copy of the GNU General Public +* License along with this program; if not, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + + +#define ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP (id_works_volume_and_pan_pop_up_get_type ()) +#define ID_WORKS_VOLUME_AND_PAN_POP_UP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUp)) +#define ID_WORKS_VOLUME_AND_PAN_POP_UP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUpClass)) +#define ID_WORKS_IS_VOLUME_AND_PAN_POP_UP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP)) +#define ID_WORKS_IS_VOLUME_AND_PAN_POP_UP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP)) +#define ID_WORKS_VOLUME_AND_PAN_POP_UP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUpClass)) + +typedef struct _IdWorksVolumeAndPanPopUp IdWorksVolumeAndPanPopUp; +typedef struct _IdWorksVolumeAndPanPopUpClass IdWorksVolumeAndPanPopUpClass; +typedef struct _IdWorksVolumeAndPanPopUpPrivate IdWorksVolumeAndPanPopUpPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +struct _IdWorksVolumeAndPanPopUp { + HildonDialog parent_instance; + IdWorksVolumeAndPanPopUpPrivate * priv; +}; + +struct _IdWorksVolumeAndPanPopUpClass { + HildonDialogClass parent_class; +}; + +struct _IdWorksVolumeAndPanPopUpPrivate { + GtkHScale* volume_slider; + GtkHScale* panorama_slider; +}; + + +static gpointer id_works_volume_and_pan_pop_up_parent_class = NULL; + +GType id_works_volume_and_pan_pop_up_get_type (void); +#define ID_WORKS_VOLUME_AND_PAN_POP_UP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUpPrivate)) +enum { + ID_WORKS_VOLUME_AND_PAN_POP_UP_DUMMY_PROPERTY +}; +static void _lambda0_ (GtkRange* s, IdWorksVolumeAndPanPopUp* self); +static void __lambda0__gtk_range_value_changed (GtkRange* _sender, gpointer self); +static void _lambda1_ (GtkRange* s, IdWorksVolumeAndPanPopUp* self); +static void __lambda1__gtk_range_value_changed (GtkRange* _sender, gpointer self); +IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_new (GtkWidget* parent, const char* title); +IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_construct (GType object_type, GtkWidget* parent, const char* title); +void id_works_volume_and_pan_pop_up_set_volume (IdWorksVolumeAndPanPopUp* self, double volume); +void id_works_volume_and_pan_pop_up_set_panorama (IdWorksVolumeAndPanPopUp* self, double panorama); +static void id_works_volume_and_pan_pop_up_finalize (GObject* obj); + + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 42 "VolumeAndPanPopUp.vala" +static void _lambda0_ (GtkRange* s, IdWorksVolumeAndPanPopUp* self) { +#line 42 "VolumeAndPanPopUp.vala" + g_return_if_fail (GTK_IS_RANGE (s)); +#line 42 "VolumeAndPanPopUp.vala" + g_signal_emit_by_name (self, "volume-updated", gtk_range_get_value (s)); +#line 90 "VolumeAndPanPopUp.c" +} + + +#line 42 "VolumeAndPanPopUp.vala" +static void __lambda0__gtk_range_value_changed (GtkRange* _sender, gpointer self) { +#line 96 "VolumeAndPanPopUp.c" + _lambda0_ (_sender, self); +} + + +#line 50 "VolumeAndPanPopUp.vala" +static void _lambda1_ (GtkRange* s, IdWorksVolumeAndPanPopUp* self) { +#line 50 "VolumeAndPanPopUp.vala" + g_return_if_fail (GTK_IS_RANGE (s)); +#line 50 "VolumeAndPanPopUp.vala" + g_signal_emit_by_name (self, "panorama-updated", gtk_range_get_value (s)); +#line 107 "VolumeAndPanPopUp.c" +} + + +#line 50 "VolumeAndPanPopUp.vala" +static void __lambda1__gtk_range_value_changed (GtkRange* _sender, gpointer self) { +#line 113 "VolumeAndPanPopUp.c" + _lambda1_ (_sender, self); +} + + +#line 28 "VolumeAndPanPopUp.vala" +IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_construct (GType object_type, GtkWidget* parent, const char* title) { +#line 120 "VolumeAndPanPopUp.c" + IdWorksVolumeAndPanPopUp * self; + GtkVBox* control_area; + GtkHBox* volume_bar; + GtkLabel* volume_label; + GtkHScale* _tmp0_; + GtkHBox* panorama_bar; + GtkLabel* panorama_label; + GtkHScale* _tmp1_; +#line 28 "VolumeAndPanPopUp.vala" + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); +#line 28 "VolumeAndPanPopUp.vala" + g_return_val_if_fail (title != NULL, NULL); +#line 133 "VolumeAndPanPopUp.c" + self = g_object_newv (object_type, 0, NULL); +#line 29 "VolumeAndPanPopUp.vala" + gtk_window_set_title (GTK_WINDOW (self), title); +#line 30 "VolumeAndPanPopUp.vala" + gtk_widget_set_parent (GTK_WIDGET (self), parent); +#line 32 "VolumeAndPanPopUp.vala" + gtk_dialog_set_default_response (GTK_DIALOG (self), (gint) GTK_RESPONSE_ACCEPT); +#line 33 "VolumeAndPanPopUp.vala" + hildon_dialog_add_button (HILDON_DIALOG (self), GTK_STOCK_CLOSE, (gint) GTK_RESPONSE_ACCEPT); +#line 35 "VolumeAndPanPopUp.vala" + control_area = _g_object_ref0 (GTK_VBOX (gtk_dialog_get_content_area (GTK_DIALOG (self)))); +#line 37 "VolumeAndPanPopUp.vala" + volume_bar = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 2)); +#line 38 "VolumeAndPanPopUp.vala" + volume_label = g_object_ref_sink ((GtkLabel*) gtk_label_new ("Volume")); +#line 39 "VolumeAndPanPopUp.vala" + gtk_box_pack_start (GTK_BOX (volume_bar), GTK_WIDGET (volume_label), FALSE, FALSE, (guint) 2); +#line 40 "VolumeAndPanPopUp.vala" + self->priv->volume_slider = (_tmp0_ = g_object_ref_sink ((GtkHScale*) gtk_hscale_new_with_range (0.0, 10.0, 0.05)), _g_object_unref0 (self->priv->volume_slider), _tmp0_); +#line 41 "VolumeAndPanPopUp.vala" + gtk_scale_set_value_pos (GTK_SCALE (self->priv->volume_slider), GTK_POS_LEFT); +#line 42 "VolumeAndPanPopUp.vala" + g_signal_connect_object (GTK_RANGE (self->priv->volume_slider), "value-changed", (GCallback) __lambda0__gtk_range_value_changed, self, 0); +#line 43 "VolumeAndPanPopUp.vala" + gtk_box_pack_start (GTK_BOX (volume_bar), GTK_WIDGET (self->priv->volume_slider), TRUE, TRUE, (guint) 2); +#line 45 "VolumeAndPanPopUp.vala" + panorama_bar = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 2)); +#line 46 "VolumeAndPanPopUp.vala" + panorama_label = g_object_ref_sink ((GtkLabel*) gtk_label_new ("Pan")); +#line 47 "VolumeAndPanPopUp.vala" + gtk_box_pack_start (GTK_BOX (panorama_bar), GTK_WIDGET (panorama_label), FALSE, FALSE, (guint) 2); +#line 48 "VolumeAndPanPopUp.vala" + self->priv->panorama_slider = (_tmp1_ = g_object_ref_sink ((GtkHScale*) gtk_hscale_new_with_range (-1.0, 1.0, 0.05)), _g_object_unref0 (self->priv->panorama_slider), _tmp1_); +#line 49 "VolumeAndPanPopUp.vala" + gtk_scale_set_value_pos (GTK_SCALE (self->priv->panorama_slider), GTK_POS_LEFT); +#line 50 "VolumeAndPanPopUp.vala" + g_signal_connect_object (GTK_RANGE (self->priv->panorama_slider), "value-changed", (GCallback) __lambda1__gtk_range_value_changed, self, 0); +#line 51 "VolumeAndPanPopUp.vala" + gtk_box_pack_start (GTK_BOX (panorama_bar), GTK_WIDGET (self->priv->panorama_slider), TRUE, TRUE, (guint) 2); +#line 53 "VolumeAndPanPopUp.vala" + gtk_box_pack_start (GTK_BOX (control_area), GTK_WIDGET (volume_bar), TRUE, TRUE, (guint) 2); +#line 54 "VolumeAndPanPopUp.vala" + gtk_box_pack_start (GTK_BOX (control_area), GTK_WIDGET (panorama_bar), TRUE, TRUE, (guint) 2); +#line 55 "VolumeAndPanPopUp.vala" + gtk_widget_show_all (GTK_WIDGET (self)); +#line 179 "VolumeAndPanPopUp.c" + _g_object_unref0 (control_area); + _g_object_unref0 (volume_bar); + _g_object_unref0 (volume_label); + _g_object_unref0 (panorama_bar); + _g_object_unref0 (panorama_label); + return self; +} + + +#line 28 "VolumeAndPanPopUp.vala" +IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_new (GtkWidget* parent, const char* title) { +#line 28 "VolumeAndPanPopUp.vala" + return id_works_volume_and_pan_pop_up_construct (ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, parent, title); +#line 193 "VolumeAndPanPopUp.c" +} + + +#line 58 "VolumeAndPanPopUp.vala" +void id_works_volume_and_pan_pop_up_set_volume (IdWorksVolumeAndPanPopUp* self, double volume) { +#line 58 "VolumeAndPanPopUp.vala" + g_return_if_fail (ID_WORKS_IS_VOLUME_AND_PAN_POP_UP (self)); +#line 59 "VolumeAndPanPopUp.vala" + gtk_range_set_value (GTK_RANGE (self->priv->volume_slider), volume); +#line 203 "VolumeAndPanPopUp.c" +} + + +#line 62 "VolumeAndPanPopUp.vala" +void id_works_volume_and_pan_pop_up_set_panorama (IdWorksVolumeAndPanPopUp* self, double panorama) { +#line 62 "VolumeAndPanPopUp.vala" + g_return_if_fail (ID_WORKS_IS_VOLUME_AND_PAN_POP_UP (self)); +#line 63 "VolumeAndPanPopUp.vala" + gtk_range_set_value (GTK_RANGE (self->priv->panorama_slider), panorama); +#line 213 "VolumeAndPanPopUp.c" +} + + +static void id_works_volume_and_pan_pop_up_class_init (IdWorksVolumeAndPanPopUpClass * klass) { + id_works_volume_and_pan_pop_up_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (IdWorksVolumeAndPanPopUpPrivate)); + G_OBJECT_CLASS (klass)->finalize = id_works_volume_and_pan_pop_up_finalize; + g_signal_new ("volume_updated", ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE); + g_signal_new ("panorama_updated", ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE); +} + + +static void id_works_volume_and_pan_pop_up_instance_init (IdWorksVolumeAndPanPopUp * self) { + self->priv = ID_WORKS_VOLUME_AND_PAN_POP_UP_GET_PRIVATE (self); +} + + +static void id_works_volume_and_pan_pop_up_finalize (GObject* obj) { + IdWorksVolumeAndPanPopUp * self; + self = ID_WORKS_VOLUME_AND_PAN_POP_UP (obj); + _g_object_unref0 (self->priv->volume_slider); + _g_object_unref0 (self->priv->panorama_slider); + G_OBJECT_CLASS (id_works_volume_and_pan_pop_up_parent_class)->finalize (obj); +} + + +GType id_works_volume_and_pan_pop_up_get_type (void) { + static volatile gsize id_works_volume_and_pan_pop_up_type_id__volatile = 0; + if (g_once_init_enter (&id_works_volume_and_pan_pop_up_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (IdWorksVolumeAndPanPopUpClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) id_works_volume_and_pan_pop_up_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdWorksVolumeAndPanPopUp), 0, (GInstanceInitFunc) id_works_volume_and_pan_pop_up_instance_init, NULL }; + GType id_works_volume_and_pan_pop_up_type_id; + id_works_volume_and_pan_pop_up_type_id = g_type_register_static (HILDON_TYPE_DIALOG, "IdWorksVolumeAndPanPopUp", &g_define_type_info, 0); + g_once_init_leave (&id_works_volume_and_pan_pop_up_type_id__volatile, id_works_volume_and_pan_pop_up_type_id); + } + return id_works_volume_and_pan_pop_up_type_id__volatile; +} + + + + diff --git a/src/fillmore/fillmore/VolumeAndPanPopUp.o b/src/fillmore/fillmore/VolumeAndPanPopUp.o new file mode 100644 index 0000000000000000000000000000000000000000..34ff786e258198344a3b0d7edc3087c44fd6b07b GIT binary patch literal 59892 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 +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_RECORD_FETCHER_COMPLETION (model_record_fetcher_completion_get_type ()) +#define MODEL_RECORD_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletion)) +#define MODEL_RECORD_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletionClass)) +#define MODEL_IS_RECORD_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_RECORD_FETCHER_COMPLETION)) +#define MODEL_IS_RECORD_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_RECORD_FETCHER_COMPLETION)) +#define MODEL_RECORD_FETCHER_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletionClass)) + +typedef struct _ModelRecordFetcherCompletion ModelRecordFetcherCompletion; +typedef struct _ModelRecordFetcherCompletionClass ModelRecordFetcherCompletionClass; +typedef struct _ModelRecordFetcherCompletionPrivate ModelRecordFetcherCompletionPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define MODEL_TYPE_AUDIO_PROJECT (model_audio_project_get_type ()) +#define MODEL_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProject)) +#define MODEL_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) +#define MODEL_IS_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_IS_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_AUDIO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) + +typedef struct _ModelAudioProject ModelAudioProject; +typedef struct _ModelAudioProjectClass ModelAudioProjectClass; +typedef struct _ModelAudioProjectPrivate ModelAudioProjectPrivate; +#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _model_fetcher_completion_unref0(var) ((var == NULL) ? NULL : (var = (model_fetcher_completion_unref (var), NULL))) +#define _g_dir_close0(var) ((var == NULL) ? NULL : (var = (g_dir_close (var), NULL))) + +struct _ModelRecordFetcherCompletion { + ModelFetcherCompletion parent_instance; + ModelRecordFetcherCompletionPrivate * priv; +}; + +struct _ModelRecordFetcherCompletionClass { + ModelFetcherCompletionClass parent_class; +}; + +struct _ModelRecordFetcherCompletionPrivate { + ModelTrack* track; + ModelProject* project; + gint64 position; +}; + +struct _ModelAudioProject { + ModelProject parent_instance; + ModelAudioProjectPrivate * priv; +}; + +struct _ModelAudioProjectClass { + ModelProjectClass parent_class; +}; + +struct _ModelAudioProjectPrivate { + gboolean has_been_saved; +}; + + +static gpointer model_record_fetcher_completion_parent_class = NULL; +static gpointer model_audio_project_parent_class = NULL; + +GType model_record_fetcher_completion_get_type (void); +#define MODEL_RECORD_FETCHER_COMPLETION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_RECORD_FETCHER_COMPLETION, ModelRecordFetcherCompletionPrivate)) +enum { + MODEL_RECORD_FETCHER_COMPLETION_DUMMY_PROPERTY +}; +ModelRecordFetcherCompletion* model_record_fetcher_completion_new (ModelProject* project, ModelTrack* track, gint64 position); +ModelRecordFetcherCompletion* model_record_fetcher_completion_construct (GType object_type, ModelProject* project, ModelTrack* track, gint64 position); +static void model_record_fetcher_completion_real_complete (ModelFetcherCompletion* base, ModelFetcher* fetch); +static void model_record_fetcher_completion_finalize (ModelFetcherCompletion* obj); +GType model_audio_project_get_type (void); +#define MODEL_AUDIO_PROJECT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectPrivate)) +enum { + MODEL_AUDIO_PROJECT_DUMMY_PROPERTY +}; +static char* model_audio_project_generate_filename (ModelAudioProject* self); +static void _view_media_engine_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self); +void model_audio_project_on_record_completed (ModelAudioProject* self); +static void _model_audio_project_on_record_completed_view_media_engine_record_completed (ViewMediaEngine* _sender, gpointer self); +ModelAudioProject* model_audio_project_new (const char* filename, GError** error); +ModelAudioProject* model_audio_project_construct (GType object_type, const char* filename, GError** error); +static void model_audio_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result); +static char* model_audio_project_real_get_project_file (ModelProject* base); +#define RECORDER_NAME "Fillmore" +static char* model_audio_project_real_get_app_name (ModelProject* base); +static void model_audio_project_real_add_track (ModelProject* base, ModelTrack* track); +void model_audio_project_record (ModelAudioProject* self, ModelAudioTrack* track); +static void model_audio_project_real_load (ModelProject* base, const char* filename); +static void model_audio_project_move_audio_files (ModelAudioProject* self, const char* filename); +static void model_audio_project_real_save (ModelProject* base, const char* filename); +static void model_audio_project_finalize (GObject* obj); +static int _vala_strcmp0 (const char * str1, const char * str2); + + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 15 "audio_project.vala" +ModelRecordFetcherCompletion* model_record_fetcher_completion_construct (GType object_type, ModelProject* project, ModelTrack* track, gint64 position) { +#line 122 "audio_project.c" + ModelRecordFetcherCompletion* self; + ModelTrack* _tmp0_; + ModelProject* _tmp1_; +#line 15 "audio_project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 15 "audio_project.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 16 "audio_project.vala" + self = (ModelRecordFetcherCompletion*) model_fetcher_completion_construct (object_type); +#line 17 "audio_project.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 18 "audio_project.vala" + self->priv->project = (_tmp1_ = _g_object_ref0 (project), _g_object_unref0 (self->priv->project), _tmp1_); +#line 19 "audio_project.vala" + self->priv->position = position; +#line 138 "audio_project.c" + return self; +} + + +#line 15 "audio_project.vala" +ModelRecordFetcherCompletion* model_record_fetcher_completion_new (ModelProject* project, ModelTrack* track, gint64 position) { +#line 15 "audio_project.vala" + return model_record_fetcher_completion_construct (MODEL_TYPE_RECORD_FETCHER_COMPLETION, project, track, position); +#line 147 "audio_project.c" +} + + +#line 22 "audio_project.vala" +static void model_record_fetcher_completion_real_complete (ModelFetcherCompletion* base, ModelFetcher* fetch) { +#line 153 "audio_project.c" + ModelRecordFetcherCompletion * self; + char* _tmp0_; + ModelClip* _tmp1_; + ModelClip* the_clip; + self = MODEL_RECORD_FETCHER_COMPLETION (base); +#line 22 "audio_project.vala" + g_return_if_fail (MODEL_IS_FETCHER (fetch)); +#line 23 "audio_project.vala" + MODEL_FETCHER_COMPLETION_CLASS (model_record_fetcher_completion_parent_class)->complete (MODEL_FETCHER_COMPLETION (self), fetch); +#line 24 "audio_project.vala" + the_clip = (_tmp1_ = model_clip_new (fetch->clipfile, MODEL_MEDIA_TYPE_AUDIO, _tmp0_ = isolate_filename (fetch->clipfile->filename), (gint64) 0, (gint64) 0, model_clip_file_get_length (fetch->clipfile), FALSE), _g_free0 (_tmp0_), _tmp1_); +#line 26 "audio_project.vala" + model_undo_manager_start_transaction (self->priv->project->undo_manager, "Record"); +#line 27 "audio_project.vala" + model_track_append_at_time (self->priv->track, the_clip, self->priv->position, TRUE); +#line 28 "audio_project.vala" + model_undo_manager_end_transaction (self->priv->project->undo_manager, "Record"); +#line 171 "audio_project.c" + _g_object_unref0 (the_clip); +} + + +static void model_record_fetcher_completion_class_init (ModelRecordFetcherCompletionClass * klass) { + model_record_fetcher_completion_parent_class = g_type_class_peek_parent (klass); + MODEL_FETCHER_COMPLETION_CLASS (klass)->finalize = model_record_fetcher_completion_finalize; + g_type_class_add_private (klass, sizeof (ModelRecordFetcherCompletionPrivate)); + MODEL_FETCHER_COMPLETION_CLASS (klass)->complete = model_record_fetcher_completion_real_complete; +} + + +static void model_record_fetcher_completion_instance_init (ModelRecordFetcherCompletion * self) { + self->priv = MODEL_RECORD_FETCHER_COMPLETION_GET_PRIVATE (self); +} + + +static void model_record_fetcher_completion_finalize (ModelFetcherCompletion* obj) { + ModelRecordFetcherCompletion * self; + self = MODEL_RECORD_FETCHER_COMPLETION (obj); + _g_object_unref0 (self->priv->track); + _g_object_unref0 (self->priv->project); + MODEL_FETCHER_COMPLETION_CLASS (model_record_fetcher_completion_parent_class)->finalize (obj); +} + + +GType model_record_fetcher_completion_get_type (void) { + static volatile gsize model_record_fetcher_completion_type_id__volatile = 0; + if (g_once_init_enter (&model_record_fetcher_completion_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelRecordFetcherCompletionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_record_fetcher_completion_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelRecordFetcherCompletion), 0, (GInstanceInitFunc) model_record_fetcher_completion_instance_init, NULL }; + GType model_record_fetcher_completion_type_id; + model_record_fetcher_completion_type_id = g_type_register_static (MODEL_TYPE_FETCHER_COMPLETION, "ModelRecordFetcherCompletion", &g_define_type_info, 0); + g_once_init_leave (&model_record_fetcher_completion_type_id__volatile, model_record_fetcher_completion_type_id); + } + return model_record_fetcher_completion_type_id__volatile; +} + + +#line 75 "marina.vapi" +static void _view_media_engine_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self) { +#line 212 "audio_project.c" + view_media_engine_on_callback_pulse (self); +} + + +#line 92 "audio_project.vala" +static void _model_audio_project_on_record_completed_view_media_engine_record_completed (ViewMediaEngine* _sender, gpointer self) { +#line 219 "audio_project.c" + model_audio_project_on_record_completed (self); +} + + +#line 35 "audio_project.vala" +ModelAudioProject* model_audio_project_construct (GType object_type, const char* filename, GError** error) { +#line 226 "audio_project.c" + ModelAudioProject * self; +#line 36 "audio_project.vala" + self = (ModelAudioProject*) model_project_construct (object_type, filename, FALSE, error); +#line 38 "audio_project.vala" + if (self != NULL) { +#line 39 "audio_project.vala" + self->priv->has_been_saved = filename != NULL; +#line 40 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 236 "audio_project.c" + char* _tmp1_; + char* *_tmp0_; +#line 41 "audio_project.vala" + _tmp0_ = &MODEL_PROJECT (self)->project_file; +#line 41 "audio_project.vala" + (*_tmp0_) = (_tmp1_ = model_audio_project_generate_filename (self), _g_free0 ((*_tmp0_)), _tmp1_); +#line 243 "audio_project.c" + } +#line 43 "audio_project.vala" + g_signal_connect_object (MODEL_PROJECT (self)->media_engine, "callback-pulse", (GCallback) _view_media_engine_on_callback_pulse_view_media_engine_callback_pulse, MODEL_PROJECT (self)->media_engine, 0); +#line 44 "audio_project.vala" + g_signal_connect_object (MODEL_PROJECT (self)->media_engine, "record-completed", (GCallback) _model_audio_project_on_record_completed_view_media_engine_record_completed, self, 0); +#line 249 "audio_project.c" + } + return self; +} + + +#line 35 "audio_project.vala" +ModelAudioProject* model_audio_project_new (const char* filename, GError** error) { +#line 35 "audio_project.vala" + return model_audio_project_construct (MODEL_TYPE_AUDIO_PROJECT, filename, error); +#line 259 "audio_project.c" +} + + +#line 48 "audio_project.vala" +static void model_audio_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result) { +#line 265 "audio_project.c" + ModelAudioProject * self; + TimeCode _tmp0_ = {0}; + TimeCode t; + self = MODEL_AUDIO_PROJECT (base); +#line 48 "audio_project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 49 "audio_project.vala" + t = (_tmp0_); +#line 51 "audio_project.vala" + time_code_get_from_length (&t, model_clip_file_get_length (f)); +#line 276 "audio_project.c" + *result = t; +#line 52 "audio_project.vala" + return; +#line 280 "audio_project.c" +} + + +#line 55 "audio_project.vala" +static char* model_audio_project_real_get_project_file (ModelProject* base) { +#line 286 "audio_project.c" + ModelAudioProject * self; + char* result = NULL; + self = MODEL_AUDIO_PROJECT (base); +#line 56 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 292 "audio_project.c" + result = NULL; +#line 57 "audio_project.vala" + return result; +#line 296 "audio_project.c" + } else { + result = MODEL_PROJECT_CLASS (model_audio_project_parent_class)->get_project_file (MODEL_PROJECT (self)); +#line 59 "audio_project.vala" + return result; +#line 301 "audio_project.c" + } +} + + +#line 2153 "glib-2.0.vapi" +static void g_time_local (time_t time, struct tm* result) { +#line 308 "audio_project.c" + struct tm _result_ = {0}; +#line 2155 "glib-2.0.vapi" + localtime_r (&time, &_result_); +#line 312 "audio_project.c" + *result = _result_; +#line 2156 "glib-2.0.vapi" + return; +#line 316 "audio_project.c" +} + + +#line 2159 "glib-2.0.vapi" +static char* g_time_to_string (struct tm *self) { +#line 322 "audio_project.c" + char* result = NULL; + result = g_strdup_printf ("%04d-%02d-%02d %02d:%02d:%02d", (*self).tm_year + 1900, (*self).tm_mon + 1, (*self).tm_mday, (*self).tm_hour, (*self).tm_min, (*self).tm_sec); +#line 2160 "glib-2.0.vapi" + return result; +#line 327 "audio_project.c" +} + + +#line 1148 "glib-2.0.vapi" +static char* string_replace (const char* self, const char* old, const char* replacement) { +#line 333 "audio_project.c" + char* result = NULL; + GError * _inner_error_; +#line 1148 "glib-2.0.vapi" + g_return_val_if_fail (self != NULL, NULL); +#line 1148 "glib-2.0.vapi" + g_return_val_if_fail (old != NULL, NULL); +#line 1148 "glib-2.0.vapi" + g_return_val_if_fail (replacement != NULL, NULL); +#line 342 "audio_project.c" + _inner_error_ = NULL; + { + char* _tmp0_; + GRegex* _tmp1_; + GRegex* regex; + char* _tmp2_; +#line 1150 "glib-2.0.vapi" + regex = (_tmp1_ = g_regex_new (_tmp0_ = g_regex_escape_string (old, -1), 0, 0, &_inner_error_), _g_free0 (_tmp0_), _tmp1_); +#line 351 "audio_project.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_REGEX_ERROR) { + goto __catch0_g_regex_error; + } + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } +#line 1151 "glib-2.0.vapi" + _tmp2_ = g_regex_replace_literal (regex, self, (gssize) (-1), 0, replacement, 0, &_inner_error_); +#line 362 "audio_project.c" + if (_inner_error_ != NULL) { + _g_regex_unref0 (regex); + if (_inner_error_->domain == G_REGEX_ERROR) { + goto __catch0_g_regex_error; + } + _g_regex_unref0 (regex); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + result = _tmp2_; + _g_regex_unref0 (regex); +#line 1151 "glib-2.0.vapi" + return result; +#line 377 "audio_project.c" + } + goto __finally0; + __catch0_g_regex_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 1153 "glib-2.0.vapi" + g_assert_not_reached (); +#line 388 "audio_project.c" + _g_error_free0 (e); + } + } + __finally0: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } +} + + +#line 63 "audio_project.vala" +static char* model_audio_project_generate_filename (ModelAudioProject* self) { +#line 403 "audio_project.c" + char* result = NULL; + struct tm _tmp0_ = {0}; + struct tm now; + char* timestring; + char* _tmp1_; + char* pathname; + char* filename; +#line 63 "audio_project.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_PROJECT (self), NULL); +#line 64 "audio_project.vala" + now = (g_time_local (time (NULL), &_tmp0_), _tmp0_); +#line 65 "audio_project.vala" + timestring = g_time_to_string (&now); +#line 66 "audio_project.vala" + timestring = (_tmp1_ = string_replace (timestring, ":", "_"), _g_free0 (timestring), _tmp1_); +#line 67 "audio_project.vala" + pathname = g_build_filename (g_get_home_dir (), ".fillmore", timestring, NULL); +#line 69 "audio_project.vala" + g_mkdir (pathname, 0777); +#line 70 "audio_project.vala" + filename = g_strdup_printf ("%s.%s", timestring, "fill"); +#line 425 "audio_project.c" + result = g_build_filename (pathname, filename, NULL); + _g_free0 (timestring); + _g_free0 (pathname); + _g_free0 (filename); +#line 71 "audio_project.vala" + return result; +#line 432 "audio_project.c" +} + + +#line 74 "audio_project.vala" +static char* model_audio_project_real_get_app_name (ModelProject* base) { +#line 438 "audio_project.c" + ModelAudioProject * self; + char* result = NULL; + self = MODEL_AUDIO_PROJECT (base); + result = g_strdup (RECORDER_NAME); +#line 75 "audio_project.vala" + return result; +#line 445 "audio_project.c" +} + + +#line 78 "audio_project.vala" +static void model_audio_project_real_add_track (ModelProject* base, ModelTrack* track) { +#line 451 "audio_project.c" + ModelAudioProject * self; + self = MODEL_AUDIO_PROJECT (base); +#line 78 "audio_project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 79 "audio_project.vala" + if (model_track_media_type (track) == MODEL_MEDIA_TYPE_VIDEO) { +#line 80 "audio_project.vala" + model_track_hide (track); +#line 81 "audio_project.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->inactive_tracks), track); +#line 82 "audio_project.vala" + return; +#line 464 "audio_project.c" + } +#line 85 "audio_project.vala" + MODEL_PROJECT_CLASS (model_audio_project_parent_class)->add_track (MODEL_PROJECT (self), track); +#line 468 "audio_project.c" +} + + +#line 88 "audio_project.vala" +void model_audio_project_record (ModelAudioProject* self, ModelAudioTrack* track) { +#line 88 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_PROJECT (self)); +#line 88 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (track)); +#line 89 "audio_project.vala" + view_media_engine_record (MODEL_PROJECT (self)->media_engine, track); +#line 480 "audio_project.c" +} + + +#line 92 "audio_project.vala" +void model_audio_project_on_record_completed (ModelAudioProject* self) { +#line 486 "audio_project.c" + GError * _inner_error_; +#line 92 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_PROJECT (self)); +#line 490 "audio_project.c" + _inner_error_ = NULL; +#line 93 "audio_project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_record_completed"); +#line 494 "audio_project.c" + { + ModelRecordFetcherCompletion* _tmp0_; +#line 95 "audio_project.vala" + model_project_create_clip_fetcher (MODEL_PROJECT (self), MODEL_FETCHER_COMPLETION (_tmp0_ = model_record_fetcher_completion_new (MODEL_PROJECT (self), MODEL_TRACK (MODEL_PROJECT (self)->media_engine->record_track), model_clip_get_start (MODEL_PROJECT (self)->media_engine->record_region))), MODEL_PROJECT (self)->media_engine->record_region->clipfile->filename, &_inner_error_); +#line 499 "audio_project.c" + _model_fetcher_completion_unref0 (_tmp0_); + if (_inner_error_ != NULL) { + goto __catch1_g_error; + } + } + goto __finally1; + __catch1_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 98 "audio_project.vala" + g_signal_emit_by_name (MODEL_PROJECT (self), "error-occurred", "Could not complete recording", e->message); +#line 514 "audio_project.c" + _g_error_free0 (e); + } + } + __finally1: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +#line 102 "audio_project.vala" +static void model_audio_project_real_load (ModelProject* base, const char* filename) { +#line 529 "audio_project.c" + ModelAudioProject * self; + self = MODEL_AUDIO_PROJECT (base); +#line 103 "audio_project.vala" + self->priv->has_been_saved = filename != NULL; +#line 104 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 536 "audio_project.c" + char* _tmp1_; + char* *_tmp0_; +#line 105 "audio_project.vala" + _tmp0_ = &MODEL_PROJECT (self)->project_file; +#line 105 "audio_project.vala" + (*_tmp0_) = (_tmp1_ = model_audio_project_generate_filename (self), _g_free0 ((*_tmp0_)), _tmp1_); +#line 543 "audio_project.c" + } +#line 107 "audio_project.vala" + MODEL_PROJECT_CLASS (model_audio_project_parent_class)->load (MODEL_PROJECT (self), filename); +#line 547 "audio_project.c" +} + + +#line 110 "audio_project.vala" +static void model_audio_project_real_save (ModelProject* base, const char* filename) { +#line 553 "audio_project.c" + ModelAudioProject * self; + gboolean _tmp0_ = FALSE; + self = MODEL_AUDIO_PROJECT (base); +#line 111 "audio_project.vala" + if (!self->priv->has_been_saved) { +#line 111 "audio_project.vala" + _tmp0_ = filename != NULL; +#line 561 "audio_project.c" + } else { +#line 111 "audio_project.vala" + _tmp0_ = FALSE; +#line 565 "audio_project.c" + } +#line 111 "audio_project.vala" + if (_tmp0_) { +#line 569 "audio_project.c" + char* _tmp1_; +#line 112 "audio_project.vala" + model_audio_project_move_audio_files (self, filename); +#line 113 "audio_project.vala" + g_remove (MODEL_PROJECT (self)->project_file); +#line 114 "audio_project.vala" + g_rmdir (_tmp1_ = g_path_get_dirname (MODEL_PROJECT (self)->project_file)); +#line 577 "audio_project.c" + _g_free0 (_tmp1_); + } +#line 117 "audio_project.vala" + MODEL_PROJECT_CLASS (model_audio_project_parent_class)->save (MODEL_PROJECT (self), filename); +#line 118 "audio_project.vala" + self->priv->has_been_saved = TRUE; +#line 584 "audio_project.c" +} + + +#line 121 "audio_project.vala" +static void model_audio_project_move_audio_files (ModelAudioProject* self, const char* filename) { +#line 590 "audio_project.c" + GError * _inner_error_; + char* audio_path; + char* _tmp0_; + char* _tmp1_; + char* destination_path; + GDir* dir; + const char* base_name; +#line 121 "audio_project.vala" + g_return_if_fail (MODEL_IS_AUDIO_PROJECT (self)); +#line 121 "audio_project.vala" + g_return_if_fail (filename != NULL); +#line 602 "audio_project.c" + _inner_error_ = NULL; +#line 122 "audio_project.vala" + audio_path = model_project_get_audio_path (MODEL_PROJECT (self)); +#line 123 "audio_project.vala" + destination_path = (_tmp1_ = g_build_filename (_tmp0_ = g_path_get_dirname (filename), "audio files", NULL), _g_free0 (_tmp0_), _tmp1_); +#line 124 "audio_project.vala" + g_mkdir (destination_path, 0777); +#line 610 "audio_project.c" + dir = NULL; + { + GDir* _tmp2_; + GDir* _tmp3_; +#line 127 "audio_project.vala" + _tmp2_ = g_dir_open (audio_path, 0, &_inner_error_); +#line 617 "audio_project.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch2_g_file_error; + } + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 127 "audio_project.vala" + dir = (_tmp3_ = _tmp2_, _g_dir_close0 (dir), _tmp3_); +#line 631 "audio_project.c" + } + goto __finally2; + __catch2_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); +#line 129 "audio_project.vala" + return; +#line 646 "audio_project.c" + } + } + __finally2: + if (_inner_error_ != NULL) { + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 133 "audio_project.vala" + base_name = NULL; +#line 660 "audio_project.c" + { + gboolean _tmp4_; +#line 134 "audio_project.vala" + _tmp4_ = TRUE; +#line 134 "audio_project.vala" + while (TRUE) { +#line 667 "audio_project.c" + char* destination; + char* _tmp5_; +#line 134 "audio_project.vala" + if (!_tmp4_) { +#line 138 "audio_project.vala" + if (!(base_name != NULL)) { +#line 138 "audio_project.vala" + break; +#line 676 "audio_project.c" + } + } +#line 134 "audio_project.vala" + _tmp4_ = FALSE; +#line 135 "audio_project.vala" + base_name = g_dir_read_name (dir); +#line 136 "audio_project.vala" + destination = g_build_filename (destination_path, base_name, NULL); +#line 137 "audio_project.vala" + g_rename (_tmp5_ = g_build_filename (audio_path, base_name, NULL), destination); +#line 687 "audio_project.c" + _g_free0 (_tmp5_); + _g_free0 (destination); + } + } + { + GeeIterator* _clip_file_it; + _clip_file_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->clipfiles)); +#line 141 "audio_project.vala" + while (TRUE) { +#line 697 "audio_project.c" + ModelClipFile* clip_file; + char* _tmp6_; + gboolean _tmp7_; +#line 141 "audio_project.vala" + if (!gee_iterator_next (_clip_file_it)) { +#line 141 "audio_project.vala" + break; +#line 705 "audio_project.c" + } +#line 141 "audio_project.vala" + clip_file = (ModelClipFile*) gee_iterator_get (_clip_file_it); +#line 142 "audio_project.vala" + if ((_tmp7_ = _vala_strcmp0 (_tmp6_ = g_path_get_dirname (clip_file->filename), audio_path) == 0, _g_free0 (_tmp6_), _tmp7_)) { +#line 711 "audio_project.c" + char* file_name; + char* destination; + char* _tmp8_; +#line 143 "audio_project.vala" + file_name = g_path_get_basename (clip_file->filename); +#line 144 "audio_project.vala" + destination = g_build_filename (destination_path, file_name, NULL); +#line 145 "audio_project.vala" + clip_file->filename = (_tmp8_ = g_strdup (destination), _g_free0 (clip_file->filename), _tmp8_); +#line 721 "audio_project.c" + _g_free0 (file_name); + _g_free0 (destination); + } + _g_object_unref0 (clip_file); + } + _g_object_unref0 (_clip_file_it); + } +#line 149 "audio_project.vala" + g_rmdir (audio_path); +#line 731 "audio_project.c" + _g_free0 (audio_path); + _g_free0 (destination_path); + _g_dir_close0 (dir); +} + + +static void model_audio_project_class_init (ModelAudioProjectClass * klass) { + model_audio_project_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelAudioProjectPrivate)); + MODEL_PROJECT_CLASS (klass)->get_clip_time = model_audio_project_real_get_clip_time; + MODEL_PROJECT_CLASS (klass)->get_project_file = model_audio_project_real_get_project_file; + MODEL_PROJECT_CLASS (klass)->get_app_name = model_audio_project_real_get_app_name; + MODEL_PROJECT_CLASS (klass)->add_track = model_audio_project_real_add_track; + MODEL_PROJECT_CLASS (klass)->load = model_audio_project_real_load; + MODEL_PROJECT_CLASS (klass)->save = model_audio_project_real_save; + G_OBJECT_CLASS (klass)->finalize = model_audio_project_finalize; +} + + +static void model_audio_project_instance_init (ModelAudioProject * self) { + self->priv = MODEL_AUDIO_PROJECT_GET_PRIVATE (self); +} + + +static void model_audio_project_finalize (GObject* obj) { + ModelAudioProject * self; + self = MODEL_AUDIO_PROJECT (obj); + G_OBJECT_CLASS (model_audio_project_parent_class)->finalize (obj); +} + + +GType model_audio_project_get_type (void) { + static volatile gsize model_audio_project_type_id__volatile = 0; + if (g_once_init_enter (&model_audio_project_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelAudioProjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_audio_project_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelAudioProject), 0, (GInstanceInitFunc) model_audio_project_instance_init, NULL }; + GType model_audio_project_type_id; + model_audio_project_type_id = g_type_register_static (MODEL_TYPE_PROJECT, "ModelAudioProject", &g_define_type_info, 0); + g_once_init_leave (&model_audio_project_type_id__volatile, model_audio_project_type_id); + } + return model_audio_project_type_id__volatile; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/fillmore/fillmore/audio_project.o b/src/fillmore/fillmore/audio_project.o new file mode 100644 index 0000000000000000000000000000000000000000..620992ce3cbe73a8bfcc0feb97877f8b5d297666 GIT binary patch literal 59624 zcmb@v4SZC^)jvLW@9wfdOd>DwLbA9a0Tv9&27(}>CL|#QLRgXj!9tgiY+h>K%nO2` zB49?GS+I^gjh4U*5}0-W0%_lRh%mrW$w0Xv%Td;5_8jqb{*! z;Ft*9dqRks$>gC63bt7!=6{UM~~u3b!fKJE@r zKBpc@YXI_zOqn+?lzHOds68hs)+cb;$`-X+^M+JR$Q7BAtjlFMWBq4^P_?)ckh&yG*7-*U9Mu3O^lgx-aCdzejUxE-=B8J`6m zO1$oYW9hbRBUpcN_{~eGZ*leUu^Iiite?Au zM+jk9^+V=C_Lx29t)-2xIKGJbDZXEpg?^7+4mhtEK6WR{*?zOJP{jP^$-+G+=p*Sj z2eauncffD%7#zxH>V9=lC|@kw;6m^m8aO^2{2A#xWZTo!U|X2&4$Q;=U3 z+Vt+EHF?KXRcH4 z@Kc%&^rn2@=bk;e!{+>a{)u{62;H~>cMZxp7kChuZ_)?DNBKgs-h0leccG(RZHx4` z^lN2yoqCK2+J4Oi*^Ra5jui)sm5*fqG|! zEZbMjfw$XsKZf%=&Qk~B2a5-e2a89Z$i)-DlZ7WuJa^JUI1fH;UNPr%4N9gnN4riW7KYS~2A31pf_Ost%9WgyakL0lqvTe5O&X z^nP>;{Kppb#qRK%xze8MWIwDAd_me3`(U=s>jCHqz7;xx{{^qQA7zE(>j<5;1N^yZ z6Y!Z?_IgOHRX$M5t#Q{vj2^SFb!iY(@im8Fdb<=DGTyqevWjvV2oM| z-%_Ic>;KWN&=z^xKK?Iug>q9+F18LURzBcm$drP$4cZPq>mIag82bsz{$x7FUAD7W zyY+-e3>KU#)%RAY$pF-L5h9R^xmNp zPOigthr$UOiAKym+Yb9{?^Zs7>;06E*$YVdn7x2J)SV~oZ9D93`(Q5SQbX+ryaW4b zN@OGMJD^Lp{gyDs{jeI#V*MMkrqF)5HivJfUx3X>e64R6VCvjWydm0y`jvYopQLG%XtO@VWVr~K8JHfZvcJ)>-ICn zzc_XZ&x5ipb_|{}esRo%4BEel?)X@k68h2!*5eM`dm;$iCjFG+FP-4r*f>0J{Al2L z^bzzGdtR3ku<=9p0N-v0u@ZX$*mDv}H)!9tb74=)rq!JCv~BlU^jmj6dorA4&ulI| z4*A#);F0pViU*FFVMUkY!7#{3*~q6Jr}a80i}MAPJA-y(z93)l<+L{uQvQ3WeHzU- z?XCs5xjQkY4-6dVzMXquD%K#X{=H~FcR!p9L)bBW zaB_L#&e6IKsCfl#ojzLPI_Nw5TrwTv4-a818C3gma{>=xK61~A^uU8sUn9f{?s<&R zG}N9@-SHsOf&=k=H!bUKwDE5E4jiveD=${-a=lJ@X9(L$a9cx+WyXcZq}0(P&D6})3yo1mI@U$5 zTrqOwl_O1cMn_Ib zQEbk(*_16l2W4$!AubzXvn#~hkp^qJ+$Jq?=h?UtxPm#Aql;2psPf8q9dWU)iq}If zi$@yE5tPJ)g$2&1Xv{1ffyjjrwu})W%85({7El?)sEBhyaABMmf|YRwoSIz}ZzLuA z;<#>vsIqBLQ4nHDoHN#3EqO!wQo9VqW>w)>GeV z<#E)jQrI!Y2iOqC*n*$iD8XdX_|=R}L;IP+b6WKlNEJSb{ z-d>P(8@`9&ZQL%;N7xH7uZ9r5sh=jAYgo=iq}-2OUp@<()!B#^ZDOX+Q;%&=b0N+* ze6z6Og_L1)$06l5;>?%m?_&`3J@5@=dQ#C(1HK1-g}8SNIP*O;2X(u0g!kXb@$F@X zE5|2>S-w3!z0A?2j_jJq4_r2T*+YTry+ca}lCT$c*`Klp9{13NuJ^ zkHOyy)7+T|Mj2D^ck~&cAY-~rxl*U7Wb@Bx*b$Q}k?QFMns3D99>l$re?;Eb5JmHh zX^(b_5z}7=9aoN9nD=tOEO-OU9A?9f2olkIC=1DR_B+d5rpu(csh~7Bc`@I|pOKTJ zsLuQouu}p@NNV22h^7S2lGKxsH6`~6Mauh!OhA*UE>!RBnh0pJV$CPU8fGXB84G1= z{+`jwi_i^HpF=l5BO8dPxl`od0{Qn@P|e7OLAboK!(8+{x={$gW@KA$qiI|tj6Glu zl3QVdBMl`+zsg_`Tq6k~1F$7Z>biDw+g; z$I15p99T$Q@?{{5@9PkGskb&^XTtk)=rVN&5!fZBarnJWL2mDDNKL(6K|XI5CN`;` zQ&5Vx8M36_p`diH59&$1Q$b_AA=IDxc?DVC>(Q#IcPS{#JIMNWDk$JR1=XeAOHN%m zx!%zMK)cA6D<=rvKZ97NwCMLiKW*~$fIU~E@1&$n{uY_1!K6)N^OE_$Xgr5Ny=#$LvP<{QJ|vf&WQ( zh=Bi}VEC}`-wjjPV))+!kQ|96m<|9znn2nF1RBEZR$M1qP9MS{mycu6Wd~BDo3vHY6AMhDtdyQWL^`dvN zmt_I?khK*vx9b^1saUExW3vUt(@|zz0ddCm89s0{;Sb=}$haL@W7iwwk#f=VFcUX` z*#Iok8GE~76A~GZfP=9cj8YndjKbWf0o!ukcYJoauIbX#8})qCB=GS_Fl11~)GKKBX< zrdZEY3HQ5|*GaeDWu0Gg-z;;-SZ4zOAFy*R>nJs`$Ne>#n+0=BMM4JtiLsBn#zMx7 zA0cb(Gb;W840CL*Nmrebimp6%ri%X;ruk#%n{R>jG&hce;m$w6-_i1q?bF$^Y3^a5 zmdPd=Wmt%g<{u>g1U3WL2Vj&ji|O)@oq0JDG8INHq8A&aNNFV&$}Nzo6nGO;C1Kk2 zXbCa~BwA>idvy$zBCBf7LA@1O!+aS%wB6woq0Wq6_R`@U5ILid=)-A?8U0^o^hfBk z8S9^8bUNB8h`aR;wNvZo73DdP_IYxc*T*6fq`xPP!L zeK;!~cScnV$F>Z9ZrsybNTD5gW#gWnLHU}&`nb6U?VT>+S@1sY3d8o!*3Z$X<4TP; zsrnqBbsH;KXxt^i6ssBP9am+vN-*8}87o|39FX7`>z5F2T(u2a);Rc&aW#e;g1B(H_@PEX z-y^v<2-5^cOS%L>j9N`|6L*yH5i#O56GR^CPII4>7?fXO*c^>Of;53bM5GCLfxORT z5zg~GKY-WRJwBiFZ|ezIa^?lbB#@>21{xr9ltE<3Z}kQMjyd5R6rvj)%y zGp8E2N&$V|$IO2C z2g4kRRDa&rkl-nXSn2+}R}i-rz%lyQ8|*GLv=`85{_Bh<&^oT16k#4kyZH0pAej*` z4b0#{%)j(qlIcVJWBf}k;3_hY8V?{nMrOZpP?AX(=C$zA{$)7;Q`03kFF|yUv7f|YdVov z*kGX$c0c;izrGqehN2x;$$l!U_A0s5G3A)q&=j@J%Bik&CRq5cx41 zoMZh8SQ8$%!FkpLu-^#>jN8D5E2lVnU4O5b@PrYTV3}19UM76oxD85k@S<@@aR}zQONTv=sI}ux1U7ZOEq8oylsx&SCDk^PgM)2 zc=v&ai+|>qI!>2E`o;E;KE_)JgSz-dJv9Fof?xa#62yokhx?2FQ#D4wI|j^M{0hfn zEUwV#Y|%6~t;d`K4;%<`gTgZl+DH!s(?H0Zjjj{8OOM6mDR8&qNlhgJ_i&itRD!ev z_bJ-wJ-5NuvqM{<67yfc$iA|h(eGpP-~mHf@oMXHFs|$;ZRE8Um+aY38Ba=CTdfW>Z1#6;OKi9Hq2;rmv2(kv zt6_=R-!qh&`m8IMd&mYiShHC6SsUDJH9+X>=VV1@&KAS^4V0h#edDJ{Hgk3u)}PQW z*@ulukl4(*!^kd~Un#PGV%#P3cVarY7^a;4mu-Mk??GdsbBBOCF_8Tu<6B6~pCnJ(V5PY!sQCgcD|g(_SknfWQ8;(pax|3elexXN=ktCFy3Sp{TK4>) z_wT4T_c~>odEUpsb?(MVGB4!C*0#vKUP)NweT{jWRZp4YT?s47y+J|qylkJ`E$d{t zVyT(jn|}e0TsdXf;sOu3W%c==0PwxDf3z+c#fk;@ubZ6$>vjFdC~{p2Saes z(pgOUNIQ%FLL*H&s|hG?#i*OzrwsGnZ{Na1m^D9y*-U$lG{+;BWMkx z6HoFQPfKOyNzXSa&G?-x8$!EHT1z_qk6>29zdM(n54* zfkwbT9hirOe==+X`y2m4&K8$H55~2{?cWEXxA^=&M>pM)?mq>>TLS*;a}c0JHu~ch z6!|B*=@yh3WKk5liG@(=XVB>u6uXapSKzZEnM|BqoV=sah#LAsp9%?L)~+!Y}prnxW0--`_v;s7^V{#n5otp@quhsM&} z&EPA|eKoWSb447(%}S1s{=Y-T!ap6f4gYUI+vVSdIJSL%4%`W=TY;0CKH+&ePFY_- zKbr6pdz=-P1$&%u#P)7Jh&SO!#_v%;iZ|f}V;AC5ya_*7;-$H{^I&E|tCMHHhg{Fy zkmT^>+0Q|T-Y?bN~Nm)u;DF&gi{vNnVLCA z46gcdzS_j(!;hpcj{9NgtuDyzs6=2GY&xNR8B-LnaD z*9W(a#-OJd^CmJj%)><)8M_149Q4_oq+5@o`GUh^j6H)%O>l$_T2?o-8yx9bCChT( z8DNUdcEBoxHi8#;w#nRFYYB7~O!eF*!Ju`R8c6fpD>aa31tCN*-BX4+J?9X-bsN0U zqlWf5)&&%0lnu_a>d+Fw(H@?3U`A@qLNf-(*trX>iLk)nSdSWds;pH3fEjjfSePrQ z-0c&f3ePulg=h_K{{hwVUD!}?yoY-oROW3+3ubyAmE4wDndB$S^8*Pkv{te~{GR`o zV3idF*TD&%k0cnjcmfc-*fU->M4goej}#1e3ME)?-2$v&whgYfYRK(GoAO%g*OWBJ zQ!0_0gjvSy`(7lse}bw4!TV;SGS!ILW`cE1G$%@BrdWe;bio``*-yGPg3Xj`a*(EV zO(Z{)Y|yfP#1@}y-UuYjO|g?jeeJyxwWNL-iZ#rKppxJtOOfCikM{QkAGw|^q|+Ai zO{HdGWl`t?8^p}|PMY+ATUe?AEuR}a@BvG4c^90S$as+%v>Cq>14VF_N&moZv4tjc zsSS>?IK&5MoB0yivi_6JKF2JQV3u`=;AOVZ0b$-wwx95#zSMFl$E}!e1Yfxb37+A| z3j|-e5pl)Q@em)k&CQf z($x33uaV#!k+FgmpEbS%0a7`oFf!g^fg;xtq+IkVs39G|>6meP%OsR*o7@RpQ zPId=VWoPwY4Qj&w05~#4#-};~A9$7`1coKC?*eeK+`Q#5E3uIGEyPC|9BEa#e*sq&Zi0qJ zv$Fx~rxJ?;a2yNC@5*Ej#44GC)o4;co*Sv7435ewkK~XXkjWf>WinD`BaW#yN~O79 zlYdX*uUQHE@Mbn6({n%MPxoftg}9ft?JcBvp#R7Tu6M?DxrDI)@I+E&ON-BawtFYcibWh8Iq zoH2iG1m%%@k{b%q6fI@jY%wlB7a2UxLt@&H{Qoz z<6ka$ip`34AG-1Z7yKA-$O1+lp2Au$&K-y^O5aksp+}f04K!AWd9aff<6i(J{c zMy-p~^WGv(or^Rtn?v`x(RJB7Fal$TYwkUham9}fVs4}ums~zd*3U!ed65XNlx?K; z5bZ&f#(|50Urj6{=KcT)c|SuDqe<1sLtrB+<6`bB$ej}v#wIC=nEP*H_p$!_T%>qO z-mjqx;{hcEkL`>HWgJy~iu~U|r9S22lJ=6kTPVQOF8ZFl>(EDxXH>aORM7Wqf?tL$ z8$VSUlK2r7ZzH7_Y~tbyO8G2W-msfK&3yzqnmUe>cui@b#&^NNw9j&c@|x7(v|q3@ zsQ4v$MdaWDGY@LX`-V3b$9>2&IC8Vopb;E}2FF3ro~c4y^%?jxvy+{^3`tkX=I$in zZ2)IVGnp#QM&6Aq>qYx=Vq;LWv^QYlY1(PpDq?eKThA~MHh?t*WuoKbm zAg5qEb5LC?(l3Ih3SUFz#amd_am3yxnfDO!L03Ry@4SR)`;b=n6#j@A`@q~`JfC8E zBa%WorLYUo{Oj>26U7T}A-V{W&oG|(KLK1O=_2{cIUr$H8*DbbdMDN)8jau zcOvO3I&-s{&iqk;${YO1U?-m8MzMK#1d6HNRgGj3VtNoyh3sY3v_EcBE|fj3nmz3e zfU37utKKG!^hRZ*P$~Rjb}s5&Bu81YmkS~ulw2NTaS>SzAxZJ{9m!K(6%vf^%3@;C zmFO+*HlJbaK&fe;MxO)pBvd?&XoxdCZz~jG6dBJU9S)AcRGuZeyL^(2@iYt5WRW5Z z$U5e$I;L(KfsD;=g}N8xgF@ZxrnN8bYHwn$>{5%-mUdjRxkMJS9iTx6cp0zw7@LgC zzK?!o+-l673W9PZLBUDX%iPP)Nm+7E$~LA*|5>l9ko{?uLH6>#P8V{uic4?yDJ99= zdyz{Ic7tR^`Hg#3lT@+lG&e7fRlbW^l6jRZ!$vs@`Bx!*#dH{p^zc{FIJP5crc~6u z67>s!izG|Cq^8Zg_uf?1*>xSa_&l^K+(A&N7Tc#HIgNxJ7|cA&2yNxA1{8YvAz zx#tU|d&UO_L?{bI7vfRvVM(`4T`ChB=i;>t7zS^an6qVTu(A*Fq+-Y$p06vM%?d9= zlIpP&WRES9Mxv(EMp&@R3NvJ|^eNC?3G^3Y6hfr16-i5*fyB{q0KiowVTL$Ie=bIS zxS}piZiK;!yX)?{sy<vs?}2Hv-XQAgR3W$n^-=-Q zWlySSPr3t1$_v+XN&XFh<*ned2WX1(ddc~g80Yom{0Q(A=k?_Lj{p_t^@{TuhfpOi zVmy~fC&YAKs#RK$w9;Td4q6idCeV`Jd#TdGerjQv@d)N7W{zwF%GD0{xfsP3hak+` z;Kj@#SL>0atS^VwcN@WH&>hU2sgULgfHiWi@Fo>utPBM~hNLQ_XLyJ6#Fv3|xoqWk zl^rfKD!_qVH<5SZ`3taaW!-WnA}bpQ3v*O98=$z77nVGW4HnspXF0&TgtGISD(`fW_2+FZIjbm{Gz*?@Q%(QM0b=@s0q@u1TmD`c2RI-V< zmrG@BCYAEt(AcAe+HlgKRZ)B(W;kgyoF`FQHMZpACjeDrr`d)x2254q`9~t15Yy-2 zQHCRFy_ZPK1+z+^B@HK_4Ce@VLAUr+4t3N3(TpF<6%zHc56>kid>5o!!WGgH@NE2a zDL}PA$^`-^{d$4aY8Pq;MumVnjTflY6`&z%>NwB+iCP|kK~W=@M@Q7^2*hCr(*i)j zsXNH`F7ZxD zylm`fm>C9fPGh7`MGyJ*OyEhsoI&!JA?d0PXw%H#Ud=jym&+FZBB@kJgZ~okp9e>( zJ3PQGx~~)Qf5`oV1ZO;mDqh927vz<<$Y7&~n0^?KYOD-4{7+F-HGBqj^;>|du`(RK zZkB4S)1ZN7+5y|PO__4!NrOaA5txtLZa%Oawp&FoZo8iW2uJu}0HjtMB(WOp^Dt6> zLoyWFT+ROf3&dv1)#4xJ3}p~--AJx%|7q+Ti}=sLg5hy7UVaj)xd-Ky%&RGLv4D%I zk#o}3l-F3Pq+LyEQ=n=k?P}Z1_kk0VIshs&rM};jeRdWw#SG>=kLL(-IcfU9F=?us zMLx`21Bh4FgAvF@nfM-4ElQ^&UwRaCH9g9WNV3JGm$;ks<&`yd40*9)DlSGNE)&@R zGI6@doP>DhTKG$uLkBE##*56Wn8W*ZGKT|{%$Y1QS0OGFIopwa zZ90)t3Yj=bWbW39Tv5uzT#@-r#A~9kY3~wB;4v{wikcMIt+!ew02a$1gO?lsdEVkP zjOCX?^6_^mK&(Xpmsk%~xr`6+f)ze@Naf)%3i^9{3fejw+xwfM1ugAu>!#1h56OsV zZfkGv=<11zg5JiShQ7wubzK_@8oN5W+uEZ&y#6l%B zbJv3W`~svEv@|vrAZ>bQS7&s3ds}D!hUqPx{n3VXZ3RX7Gx7^{y+Se}OK1jcj#Q3j zZ(UnoZ$e4};NTu^B-+@Ql-qZW60PZ)>D_G`*7Y|hr#Lr+_014fDdrnas~cTX2<%Wq^OwDh&2KvRAzm7AEqzM&mufMUy-zrLZn zjR}fe3`{K5h=voreN9c#W)MXSN^N&_Hn+6^MvrUh+t?lLRTZ{0^z<}rwBy(IH}qU% z$D=(xT|FwU(a|aU+B%|0gn@%-Z=a3Z)X>+^8;wD2cDa^b2hO$q(S8<%kS#sYmgojM zPU487_qRY?iNbhCw70jRCB|iULr+78ji#DP0T8pT3sEox9qDLGtih%?!WxkeYi@}$ zf{6~AB-$SBh<1`;%t8RiNGh-UBf?J&dW=N{(+j4DrWY)JoxeTP7w<9CeDmBc z^Y@z<;XSm6&3qZpm+?ih_&3b0ivb+n%#5#?iqt0@gzNK{ECI&Nn-*}D;8H&Kwo?)(Dt8#grdTT$JwLvZ`&8hj`p=KJE4GYz5ZQjm@C6&r3>2H$D`L zAKUm)%Pj@deJ4QU_cttBd?+tOH6M39gM=?jqQ_nN+oV43m9qWS^%_dQf>UI}{AlAM z#J5VSA4#f+FGR+lH^Rc)=6zmr`{#}M1$#crNlX=N(@ zYc@A>9+igl>&^KE1-`2RA2fYCQF7PjW|sStRKXW+gpnHNNeS$RwhZ&HMze1t@V4IA zOcviT*syzV+?v0LxhD-*u7QLvNE3_);4smC5v087ZkcCk4CAN3~7*$-Pmki@0w`PW(M)sV;+&* z-G&-H=09}2!0k1^d{h2t5GkO^J#bV0qOFp8i?83eYC7BEjG!rOzllo&DDKp-=anTZAwt21W$lH8ZyzaZg?6*7f?{1Wx`BqRf z&3{S`b$qMuoA~$G!lQfG%kDDRf`67;yWgOp9KZ3khsfS`nNtY`No9Xt_4oH>|GrZ; z=lh%Uj{1sB%nZwyOCuG|Xn7(<{Ez%BO-OPr2+$7~!Hp7t6v84`fzKOyiUf^~dC(jP~=CE6EhY;Wt1aLgN;UQZOmOOwu1P^3AEc~7(_!f8)?w6CqJ z6VXmJV#Mk@KdzL^E_*)yK+-0l5t~FS6*a_fts{*~tD%0J-|F8Iwn+)6DPc8BL56Ih zfNBo@4NU5t8{ohdnA9{k(BB!|(2eO#v?(Ab4Retl2u|wFL+;e18BL>Dvb3zcDpFY+ zDOp}txik{4S-Pmav@Q_rjkY&WMP0G{x|)*G#etw~USurLQ%m4X3Kca?pA?#*{sb7C z8~cNN(h6i>5vX2XRRvJY#S_7kJdetUFlxREn!WjxXlzVE5a*+`sxll|P+3(T2$I1V ze~SMkE`?}pXm4K!i=5uw-`kysmU%c@4NDI#no!vJcrb)4LiQ`+IuGMQK-mdsCpZt1qBg3n*66i%4Urc5ZCw zZ)xots+D=jFT`2=3}I|eO}Ri|(=GPnk!o3L`sa<$xo$DHyUS8Wx<$awW!`qg%Tg`o z-)er=eT!$ix1Knf#%|!SA(Lt7e4cvd4v`yRg+mUxp%1alSO`an76t=>$%0d zeVDCBtt0O9CACQv+Z4M4^2ZImF|sZn=`3{SamS8y7N*AYbp71PTPxdVXnh4Fb+jio zigrl)3Hp$BrE$2KG;l6Xg3h>elq84D*ZgqDXh)o%+mqW**TvnKIp?WM+bOqNc&PDl zcB=Kq?TcjnfjrlDSYxeW;KSn*H>5LUH*<+iOpg8N_6-qcz-&V-*I5KDnY4yM2oDHZ z4A~c*gf;`-j>izobZMeID3jJO7{Eg|7_z52OB0nhYrqBrW;@s*cv2>2ij+`V5Q7imuj}NYxbtKqwc_&~=8h;`M}eY1BCse^pg++$!QerTD92 zcu+DBD>epFwo6H4Z4~Et6;)qz@(HvN1r+QVeN|ESsB{ zbP&idssb+~II5y?#AR_2V_j?xkct&z6@svg#cWzHN~bQH!`0TC7?0* z%9AR;iupWXhT)$^upOv~4j^DDM0J^k$gPry;nfJ%s;JH_i{&nBLbNq8w+QTaOA+e& z5Zs}ny6i%L?J{W@b2rFnn89Y1su71l%$i^P=);39$UsGF z80?a%%Nd-;13GmKvt;?@4D71vSk)OkL}93O6dT$$pwwW$3F(*OIzah)6VK9gX#t~r1NgMb;S5!Zu${TR#6Nt`3HY(>yepp4% zMO;Qi(s7IvMF8i>q?nD7R1ysqxx?yAV2nRFLH>1q&VU-UJ^KLm$4B~0(>Vi=?#EP zM%j4oveQU8lZZ%u*UEa=FlfR9NwXMoX77}gsQhw+gT;8#GUn`)xpi46xDXFaUduv6 zz6xfD8U~6?tJ~g;kpZ)l2&vp<@!Xih zAo4C*U=4!@@t_(XL#|Vt)evLK>?GHDHiBX~e4z)-$s;&41feFF~&F<`dCpTu*QF?V-5bC(}Mpb%rah$Gez zu~j0jh$F@Q8u2tjCUir%yCpgHh4t=K8?XVJkXuRkgGyxtKI>47aqq7hba4H(i#Q_@US#P zt{0u9iFyzZ>Sn-fhtGQ%NdcJ@(+DxDWYQW2@=Jj*Yld8FI%yNN9uH_UV7Ak&0d~uz zH4OUj&^#D&G3q45lH2is5Q9M(tvd`XVkXg4h|3t{%G~8~#F(W7k;7!jdK7^o6Elys zvD}sM+?cCB0?IE+7Q)&S90JH>Fc{BW#%mOBB_gt-GqT<_3_iremSM=%wNq%KjzJn| zGGMl&W#YNZ;<+&vnVXIRUQu(eyY^l;<3#g{Itl9{5?+39Yyu!x__CrkAp}Kuz+Nsx zF6f=?5w#2t*wb3L10b(CxWvZI46{^``XYpO@!0ID3Ao*=IDfn?X>K|f*8iU$n)81nLjlVPGZ;c+m`q;{FKOjma~R_9o8;CFVG5P#0qyXT3g z0Ni}%$*}lG{?G_&uTtL38|ri*zT?jOZ9`#nMz52%!Bn0i_wjr8sWUXC^JB;O{`SmI zMkWiqm@^c6Lv7(wY1|f5>WkS_>}$Nt=XMR>OR2(Bhlg7>#d!2D4~6I8;hqB5VEU)i z-5|?!<{!o~T>thF#^XaC^Pd9VAf5p{T$u01^B^8BlXv22#lr>uJUsPyitupJdJr^8 zmzQw*@Nmzd4o@+jg?PB%5W>Ti=^!5c)AYC&z5@^W;2Qjs_|WAwUwSS5N#%7p(&wsN zm(%H59xdM|rEB@lCx5Iw7EN3}mf_*@Y95|qJo?AAna*z-BAhfHvgz)gi znkKFR?4L6|>`32&>GBRdci`dFTmPKt`yA;JwW@RkU^XLL~dB**;?C1tQVe-x29;Yw5&U z^mV-NhFfluWgen29cQAAtqoe*nxT*NO4}QHdqqWWU#*lAoHX{e;S^jReS%(3*ZQ`m zXcJDOaR*6M)Ye6ol-JglRFp@`me-WjRW7ZL>87?0aA~BvvUIViSjOvIq+7~@bvVW@ zYin*6713zPINq;u9p!xXni!>t~)puQkuh|gj6%ka^(TfI#A}Xqv2TB9-5~4bzRn_6X!nt=C zh8Vmf>)WE&MLMEQZ4HrVXA92G&ppDI6CTRf+kn=W;yD|;q;^$xX#_1?Q%9b|_T@2w zxlU7pP_^Y1OUkS3G^)d1YU|3wk+P-Ln{azI!b^^#q73i1Dnm|Cd3jCE(wg&kmiDfOCTZ}o zM$^trci568Gp8=Y>I%p!Y_35-K`*?W=eY+LcW$nHx+8evNVW7M@s^pQ^dT=A9 zPmc=@^DnO|XU7n-DI=00!LkiBu0|-Ax?KW|s6hbtMJTXl*WuZ!E2_%N%1d#TWqxI~ zt@|p~St>iayL!MWnpjEgUE0ZsZ6O zg4*T%*oYFmMK?bD0&k&6HO-J#uteRFm0gIvL5eO1iMA%`Wzp6h-5?yUDX)V^Ua-8n zl%qu?0&}1WTYCHGm7_iD(T-{X*2rG!^g1?^aN`x_WkXu{IXAWs+bRlzrY@t7W8*E!g=-faopzk)e~)o^X`X*+tZHN z5)iUEDK4*GT)lKg0`Z!E4BoE_E?o zUR#6Hwz~jZPWEKwy6HMK+p2(?u4&U%J#ArS#X^U#6>?@GCud2vt4Wc0M|Y5@a+I)L zjK-50=S=0KZi^!DI0-lNoXDEM0!~KQijXkoixPaen(!!T<;bgx@^&6vqtfaM=?5Ze z`qI8}2IoK=@)Pw?wR9ybvQ-(0Ro*NokLa&ZykKX7p+=kAHb_Bc!AK=5xILucqR999Ri2STdj8ySu9wD#OecgAIoqJ=SR62uiii)}<#dl%5z499oX_b?HG^jz?-lTn~mZ0I(w{ zw@>bQ$5KvKIb>Zbot2z}#;rABgoYbk4hINptJN3l)f`?~al9|p$`K9IXysZXy%?oY zv)xCO*3Uo2$2Oqq1wf>Rc7b;hI3~k1l)q_-bYb3% z(WI>pQ#)!x-mwFU>Y>!Z?1;Vy+0fT2@7D3loX+a1Fcwsou7V%KyAifMOLMMkkW;UU za9@vFPr*QY;kj%%fzOVE#J1ihtY{(?P1l6g%PNun&i>wL(+t@lZHBI7>sWJ<3#Iy$ac6zrz<;u=s{Ov~=`! zVYw$6Omf&XJZ0Zn4yP%uEUBrcY;snmx}b{E#A6FZHA$4y4ONF6$kb$nH&MB6mG4wZ zO*l+hdJC?Y(U~}Bl8!%u?=nQdE~WFp$i=KySX|6fIe)?8 zw6bb>O}VI$wwf@PusuS|w{V6;r>16QGcYUT6w98J#rv3?SH~vT96Qh%)hY)K6klme zM;+@1_E4ghkm^S9lJc_3l1SaEaCu}!Wm)-Bj{fMcO0^FA!n9a!jKtiJ(sA+a(TgFCQsRfSA811n$fw_d7Z+G?g z#eAxoa;+$@nZL9a28Rx(H*NItTuy5BB3ExbI1#ZjC|w-E@}Lf8D4VW*V<;XiB%ihe zU`yfsMCGPbXYGzguZfM#u?aSPoSIm1V}#bSyrz~rNau_N6*VQ{g#vG0s@0OimL0oB zmb0h8(9b0VY&0(+Q^<1pe)kr5L2NTsNFbQgtegPud%N+J9xgLuR<5&ttBCyIr z70ghjVk5b`+Id_+*gH5me*pbrA8vrgzZ!q2MoKfwZCIsCpRor12^|X zv2{`*cPMMQmO(#mm21FAg><)aHr>-G`>k9&#Ro{*zv#hgiPIX@V;lo|!UWqXcw!eO zk#-D^dDH3inYu?{CCBJ0}wd)CS3 zb*@n(a>ba?>a}$>%S-Fv_akZ;usd#3zr8MzFY$bmFw#5dS0$7TwlxU-8s{hW0ej{s z{g7zU^JY1E*k0Y9HNYQoD;CDDXJL+BqdYu~m}3-dL%mrd=L5R0L}KnxFEC1%Rx3TA zU&xJyLJVnYi-DsScPL~_mkzPK>22qRq?*u6B!^LBZj2X=xu2<;o2wJKSat5I+pA#R zx{`+7_QHM_7xTGjJ2oUaMslfxp;NnCUCdtO$z6powk>Np-$`g`Zu80+2@Qo4-5!BA zT-utk`;s&iCy&j#4#?8LU1~WzQ4Y0pCfg{{i7L;l9EQ_t%RN?DBz7TLNo>~&`!jge zTMk>)Bpb-~D(C47XedmGu$pwVJvWQs8_s1%O_T9PvJ+cR=Ub%9)b{2iS5jSy9a80o zMJLz0ST%Mv_HzDs9c@C5nQA|=hz_>DJQs8Gq=!G7sq@|zPwe?kn~dhIYU_)_kov& z%WER`bh1`1*7=%Nf43Slbs05m%LPWHw-q~i94727Zoa6GG<-nJvGIff2(23Hgh?|Z z=UBU-qz=2B90%n*kkaZ!9QTDH+_dD<5HHrXsJ6efi033y9p|wT-3D@ihz}tvmR6QU z!sXR+F{dWGao_Lg3h|L#6N|JjA43I4Xcj4HRaZJ|K91QR2aZ;|A z{(6P_i6Ux5wUkx}x$;*>PWq#+`AarV6wE>qC zJhGM2$O8sx=W52%C$}=ti7;hWt3GwWrd%WDvufI+PC&G~O6-|jCM{ng$2!N#II>=n z)(c3zP?ohOdnU?mcdCSWj$Di4ug=%vX;P}%kdN=VN*}zJEnJu#v~8X9qky#GC_OYp{(fK zcc0-G)ZH2T55IqN*r6iB}~oYj?~^a zs9j!KiXCXo$$8AuC2)Q#4>286qC~&rm`vLlnxz&wmXg4^Q`c&~4_#if6mKnK=8Ka? zJ=9jJ{;B4jx)-i(*~LK~yFkkF02BzZ{zD{#9R zl#@u9zD~^+|?8f{BD#mf{1#sDOOirKfPp*@QxT(;xk6M#~5Rci%iQH zXN-4cniE_izjtE?h7p8)Jt}O~v7TsqK2Fi`DJQAZ{B<~u&&P3Ie@moc-8$+dpC~G& zjY}X0%nv01?ovf19?o?nLQhvd?WkR6v+Bb9B4=r}PiB(_vNNx{ANv95YR)v=g2J(U zjJ-q%I?EG}clsvTFz$iM-(CkTCg}UDmmp4jC!XUD zouo&6Tmg=iAxwJ3nkh%#d`FykZ{b7eyrryvy51|1;FQDqF%l-?`)&xR11(1l;<^l? z;&>RB3mumhbzU{{66pQ6l8f|+uIYUmahB2dVi)3dKVJ0JKP}Q{kicZEmtA<%9SS(qpIM?+wu7C1U*}9`kqFp-vyO2A4546G+tc-hsHY z-eT0d69iZ_aV<&@5?9Sdgk3q zE$?B(bs0p(rXC>zjMzV&cL=bP-cisadz1q&2*l{Ugt#t)sCWSMEUgSj-tX*qh)DQ7 zxn79h<*GRUk_I1ClR$6h1Ni?akfwjSuD>Ed$C>vq@SH!L$4~pAnYwiz@o;}V_S1OO zk)t`quYq@=&P1M$GIW@S=>7`ck-_CzUS7W*4@IY*s5>XUz+?EY3>=qiH9epu{G91- z@z=A?Of$xXO2vPm=gbD=P&{%>fm`H`pBeLFD$zs_q}=@Rvk3Tbk@P1jg?|mHt5dNA zLtKhD-)20Gkof2Z@)gcL8@?4G-#wmZ!{0>6OZDkC{g(;j67vB&|1SvnU4oY(3hAW) zk6%uxvhza-$(#Bqes(xu<`dtU|AqtRe<;llDA3fje1x6&hhl0{^2c8uQ1uy#=m@+DS@ zpvu1$vok|n3x4?G=Vs(<`3b9^!e1S`%x%bzTkyTE0U!|n$0*;94oIEr@_heO{Z#oX zIyU)J{PN954U=E~*Fze9A9VQQAn$LJ-eqWezDlEE%EMP0)z1*OAb&4l_Ala-Ub;3~ zyFK{AoBFBz-42-aD33G0IOb3cu?zJ1u9?$52s`lyN5^5(;~P@yr|O#r{x!^e%A;W& zV`$=2h(APq@!tsfwF1JE@EFMdBl3fY=h!g2IQs%s!u;`oS0g^zhKm4iM|_G6R|DRU zc%}`v0zQKHG#lOun0+_jh93l+i#B1Mr0@Kh7%BPxNW_05V=vB7Uk38o9`WBu@f*@Z zg3gcUQT_|W-xBCuApQZEZLfY82!1Cdph4gpZV`V;46qmQT1P%UyCb$Z;B>&d9q?Gd zdmZq2z|TA2ivhptfO7#Kb->dAzu|yGfZuVzmjXWHfcer46l4D`5c2{19PmQG0S8ZV_mW_5Y^+iB`;*{;B$)pBz}1kTmzV&3Rr8?-<*`c2QcR&J8XJKlJftM1fNQR&nCgS zvALe=A6F&8>i}~;GRLm(vw-t3pz>R5l!u=|*FVbhy(IYMB=~Ph@P%~N_K)TDT~BqW zgwK2rwR`2*@XKuwx%vi8;@OY9b&z;uI25fITEaQj$705gF3yV;KMFiA3NIiGDV$_T zZubsVHnwp$RA%Ba$50sO9%U#jwJAK*O%#W&KM6I7xAW7KBF4^rhqzz;|KSey|DSJ@ zC2h2RlH7@E&#%JGfQ3tIc&F-|w@31470tSI)_HPf&bsV8IWuO@K2Off8N9SLR6R5B zV$sk!GcTKSo}AE(^YIp%eZHI`yo91K#<66uzIwcP=As&5>qY$Hbf8J)JzlQ+mS90i4b$E0PDZ zaqgXo>IDfYlry;%m)0cLL#Y9_F7KrBl&qnhXXp6uQTYNqnPe~M?1RW)53i6!qP>j` zczGI`iZ_+Y_X}bed{a8sinMW_fU>cHf)`G4K^(7^;H71CmaB`|@4rXdrDAF4inP+W z5=P!|lBN>tIzwgHcjBZZyuu_^)!ft7!Pky>TTT^fKKGOANo12}O^z#_Dl4fa&V6G_ z`KKX!fBXWDVn_F@csklZeFOkWoqV?|;fC% zeUOCmxI!{S>GO*aXCqPhLtQI@v%+-@bnyt2@46P}9 zR>;m{yCH2KtRu3{z8)p_crtMy62y`ra}(Ai46zB#bxP(9>dcOCoeekH`Q0|W#fI;& z;RkJapA8?h;pc6bdvv6G3gI~X$C#%PTGyz(ISXr=4+(QEgLRvQ^`x62)`{Gkv#_4y zxdXq!#&x5G^;;3b%q?m!F7sxrDG7t$K89O`+=I*9ruM~I-yKM2eLER0#m8P4F2dd; z@o&P1Xc%JC=Lkda$ukO;8$`%*r@@IL6phBq_3AML{M3uq69yU`vDzlifE zhT!7}!!LnfhM@ZvL!AAcVTk&9gqHar?1LflEjtX@;T(ov#vZN>FSNr}h7Z9$7^422 z3?c7sJAc3q`2p$7JJ3}HX5Hr&S$<#sa!zk3-zj6GyK|0z5F5JTwqhz-BY z@T+KFgyj1TgyegWA^3ZXAv*VIgyheSeJ|ECh9UIHGc%S8AhedFzcC$ntqeblc4W90 z^)dVp*ntn>*U%3cK7xFP`>>D75beSbC}n;f?aC1Ld6FUQ^Atna=NX2;<9<};H_*?A zBSic1^SZSAB8H&9&`z&o2z-8Fm?6I<%y0`s=;;u{M^;?G6WxM z8G?^ihTwzyMa0|9korbQJ?ukht-#q0!+OZU5bgdHL$v!rhMz*c3|GTW7_NbxFoeFj z&qRB8ks8wRaewr9gMSC%v26+*ZKYosu{P2TVnNOl#8|L?ADKC#M$bSmMryvJI@LgtyJR@a2 zVT9zjjv?Bso?!&z3c}3qK#vUnUrl!&XH(t4aeQWMgD_L}AvDOo%Tky@GD?x;ewCZm=`5^g%P0{{Rev5LyhPk|wRr`8Y?VqtauD%EB@#AIjn%ZC6L;GuMX@70c z;Hzf6zY~?CHU!@Z8?{OEao()QyH)@G`ckilzwj$c&o?n-e-~-g*V-Se=RJR>#h$TR z58tw}zK84i6qa5OzvdQyS?8tI^G1w}8l(Bzv6`PsAvUaUr|E$iF80r36O83{v48g6&!ab%RwTIa&rUh^+&w`l+D+q#ahn(uV0d3|cX)p%CNcRl4_llPI2 zkk61WSRMbr$XV2f7YX_;Z1?KCw7d1XWVJp|P~XyOy!PaQcAwVS?$x&zgCE+hAwxiErRAoPi5*1+K?! zco2`GuZKNOCSJzdm{V)(`exV$JL6zX!pXP}x8i<0iRbVdhUEyxDS*ZCF>H?Q@Fnbr zqj4h6z=gOTQ_~HyVPlLz-$(cMZLt%+h`sSm9D`GF0WQa6+=6@YIHu!e zyo-5r2lFU|QCJBZVoU6RJ+U8-z)9%qXYb!KOvXKU0?*-f4Apal+eKn&tb)Fu?Rx(- zh3$g9aR`pb8Mp#B;0`>5r~j?j^|1Thjt9{9bzS}o`pZR~Z(>;9AQ!;e*Z`Yg3yi~d z_&mOdFXL-C1bw~jai`#1T#m`O8;@Z+UdAlUmoMnA9yY_Lu^T4hP#lXN;Cx(#n{hw- zGku=-@Ax<7${&;$#%QdIO|cDj`?p*#JnpXzcEdh64By3B_$jW#op=<}@e1C<0=lmC zc%`r^HpV#YiitQBC*Vw6g8u1x_qzj+;Lms&?_n-o-+KE1<}{>o<~V6ht;qFw!jXUfc z3-jx`JbRt6GB(84==TNQ?kyaTALCN|2{Z8q=FoMx+ecySkYiU;aCv; z{=xGsiDj`OR!9GyfVX=bn`0dM{eza0yjU=P zK`e|>SP=)|FdU8V;AC8gU*Iv!z^j;r`HBbQm%vKc09)bn*b4{aIQ$S7;cDE5sdxr| z$56c?^ZG|%8LWX#uq}4QUN`_p;$-|7mtzX<#bfvrUc$Q=UNV?hVT{H)7>n&O0sG@< zoPzUkC2qofn1;XM4a^zEJg^K_#l{$iT`>`d;sl(DOYke)iHGnsUcj4}yHqfrB3K^l zVKaOZ+haVwjwA71{0}b1HMk8A<5|3jS(ry}=zSg)z~WdQ>tb{4fIV;kzKxS{I?lso zn2dYyB&OpQ0xMu0jK%htfc-HEC*y4V3^(8& zJc?;}4m0rv<|`M>GXjg@5?q0+aRY9_9e5Pe@GPFgOuT~kG1nu(`1vssi(zSu#>!X| z>*M1Xi%;RR7#|&slZb-{Nt+gtx8wxr?C{f_@6xAt51Utm>n&Cf3C#te&5qvKqfF z`30L(zYR}*!^Y`1+sPxW`c1-dR_#B+c~<>?iOE*mZ^o@w+wZ0R82Nj0242NGn5SaU z??YGyt6~dmhh4B24#YXQ0ykh9p2w@0$VH`TCLj=>VF{rOwJ@B6_Bt;LSskB}R{cd&UJsj4-U{1cckGP= zaJbbx$6571jq;h~1?10gjn($+aR=q8c-pF;^WnDQ`_~OYVk4tkyA!Jc&G&Jjbg4Ww?p* z-B#DUnJiqhtv$V&xzqy+ecdMXB4?CxeB?a)qERL-h$kk+|jC^ zo;cWQUc+#VRsZjkr{PS>7h1Ld0=H3~YPG*d$!DzkO~>1Z#8}q za!K-|R{d4QT9h}o>bDuWEq1lqJ|25mZP%Cj!Q|oOapZ~QX;$rL;B4v_QNNPBn!Jg; zjht%L{xBY+{zvLF$QQ{st+u~|_o)xBt#Yl$gI4n|MlMILNUlY$Pu72%$Zpq`@{Z*0 z*vINT8AKjM9!q}T4hjjGi=SJ~Zw+p;n%8dfK0HKunjNJ3i+GFj9CcK#^CZHmeUw$d zWiZ;RT`jBm#ZcZ7+hZr}Zq-ksRl9y<{ZK{rb!ZZKvW?SqGkLbvxbyH6tM*@EidDZm z$a~3$t=b*KQ`G-VeJ1$|`ERT3|G|6I=cya?A89piQF2*w1#&HHOnEbM9Qj#tH>+{F zV{gg_k%!<2%Ew!cI|G+ezQ*eKq>y)7_4_TRTD3b){aNy_eo`f0ryjX z!fIW9Apb&r24-6If1Ua)a%g>(Yrpeb)$byIXZ1em1Ua3YLB5Xfc2-q(?n;g)4=0Zz&mqqz?Et!!^<@7zs{8w%{1^Eaxs;EC>dSIGV#qDY{+zPw2apF literal 0 HcmV?d00001 diff --git a/src/fillmore/fillmore/fillmore.c b/src/fillmore/fillmore/fillmore.c new file mode 100644 index 0000000..1a52adf --- /dev/null +++ b/src/fillmore/fillmore/fillmore.c @@ -0,0 +1,4473 @@ +/* fillmore.c generated by valac, the Vala compiler + * generated from fillmore.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_RECORDER (recorder_get_type ()) +#define RECORDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RECORDER, Recorder)) +#define RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RECORDER, RecorderClass)) +#define IS_RECORDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RECORDER)) +#define IS_RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RECORDER)) +#define RECORDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RECORDER, RecorderClass)) + +typedef struct _Recorder Recorder; +typedef struct _RecorderClass RecorderClass; +typedef struct _RecorderPrivate RecorderPrivate; + +#define MODEL_TYPE_AUDIO_PROJECT (model_audio_project_get_type ()) +#define MODEL_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProject)) +#define MODEL_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) +#define MODEL_IS_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_IS_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_AUDIO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) + +typedef struct _ModelAudioProject ModelAudioProject; +typedef struct _ModelAudioProjectClass ModelAudioProjectClass; + +#define TYPE_HEADER_AREA (header_area_get_type ()) +#define HEADER_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HEADER_AREA, HeaderArea)) +#define HEADER_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HEADER_AREA, HeaderAreaClass)) +#define IS_HEADER_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HEADER_AREA)) +#define IS_HEADER_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HEADER_AREA)) +#define HEADER_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HEADER_AREA, HeaderAreaClass)) + +typedef struct _HeaderArea HeaderArea; +typedef struct _HeaderAreaClass HeaderAreaClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _gst_caps_unref0(var) ((var == NULL) ? NULL : (var = (gst_caps_unref (var), NULL))) +#define __g_list_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_list_free_g_free (var), NULL))) +#define __g_slist_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_free (var), NULL))) + +#define TYPE_PROJECT_PROPERTIES (project_properties_get_type ()) +#define PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROJECT_PROPERTIES, ProjectProperties)) +#define PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass)) +#define IS_PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROJECT_PROPERTIES)) +#define IS_PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROJECT_PROPERTIES)) +#define PROJECT_PROPERTIES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass)) + +typedef struct _ProjectProperties ProjectProperties; +typedef struct _ProjectPropertiesClass ProjectPropertiesClass; + +#define UI_TYPE_TRACK_INFORMATION (ui_track_information_get_type ()) +#define UI_TRACK_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_TRACK_INFORMATION, UITrackInformation)) +#define UI_TRACK_INFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_TRACK_INFORMATION, UITrackInformationClass)) +#define UI_IS_TRACK_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_TRACK_INFORMATION)) +#define UI_IS_TRACK_INFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_TRACK_INFORMATION)) +#define UI_TRACK_INFORMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_TRACK_INFORMATION, UITrackInformationClass)) + +typedef struct _UITrackInformation UITrackInformation; +typedef struct _UITrackInformationClass UITrackInformationClass; + +#define TYPE_FILLMORE (fillmore_get_type ()) +#define FILLMORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FILLMORE, Fillmore)) +#define FILLMORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FILLMORE, FillmoreClass)) +#define IS_FILLMORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FILLMORE)) +#define IS_FILLMORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FILLMORE)) +#define FILLMORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FILLMORE, FillmoreClass)) + +typedef struct _Fillmore Fillmore; +typedef struct _FillmoreClass FillmoreClass; +typedef struct _FillmorePrivate FillmorePrivate; +#define _g_option_context_free0(var) ((var == NULL) ? NULL : (var = (g_option_context_free (var), NULL))) + +#define TYPE_FILLMORE_CLASS_FACTORY (fillmore_class_factory_get_type ()) +#define FILLMORE_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FILLMORE_CLASS_FACTORY, FillmoreClassFactory)) +#define FILLMORE_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FILLMORE_CLASS_FACTORY, FillmoreClassFactoryClass)) +#define IS_FILLMORE_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FILLMORE_CLASS_FACTORY)) +#define IS_FILLMORE_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FILLMORE_CLASS_FACTORY)) +#define FILLMORE_CLASS_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FILLMORE_CLASS_FACTORY, FillmoreClassFactoryClass)) + +typedef struct _FillmoreClassFactory FillmoreClassFactory; +typedef struct _FillmoreClassFactoryClass FillmoreClassFactoryClass; +#define _class_factory_unref0(var) ((var == NULL) ? NULL : (var = (class_factory_unref (var), NULL))) + +struct _Recorder { + GtkWindow parent_instance; + RecorderPrivate * priv; + ModelAudioProject* project; + TimeLine* timeline; +}; + +struct _RecorderClass { + GtkWindowClass parent_class; +}; + +struct _RecorderPrivate { + ViewClickTrack* click_track; + HeaderArea* header_area; + ClipLibraryView* library; + ModelTimeSystem* provider; + GtkAdjustment* h_adjustment; + GtkHPaned* timeline_library_pane; + GtkScrolledWindow* library_scrolled; + GtkScrolledWindow* timeline_scrolled; + gint cursor_pos; + gint64 center_time; + gboolean loading; + GtkActionGroup* main_group; + GtkToggleButton* play_button; + GtkToggleButton* record_button; + GtkButton* addnew_button; + GtkButton* rewind_button; + GtkButton* forward_button; + GtkButton* zoomin_button; + GtkButton* zoomout_button; + GtkButton* volume_button; + HildonPannableArea* scrollwin; + gint scrollwin_pos_y; + GtkUIManager* manager; + ViewOggVorbisExport* audio_export; + ViewAudioOutput* audio_output; + GeeArrayList* load_errors; +}; + +struct _Fillmore { + HildonProgram parent_instance; + FillmorePrivate * priv; +}; + +struct _FillmoreClass { + HildonProgramClass parent_class; +}; + + +extern gboolean do_print_graph; +gboolean do_print_graph = FALSE; +extern gint debug_level; +gint debug_level = 0; +static gpointer recorder_parent_class = NULL; +static TransportDelegateIface* recorder_transport_delegate_parent_iface = NULL; +static gpointer fillmore_parent_class = NULL; + +GType recorder_get_type (void); +GType model_audio_project_get_type (void); +GType header_area_get_type (void); +#define RECORDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_RECORDER, RecorderPrivate)) +enum { + RECORDER_DUMMY_PROPERTY +}; +#define RECORDER_scroll_speed 8 +#define RECORDER_NAME "Fillmore" +static void recorder_on_project_open (Recorder* self); +static void _recorder_on_project_open_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_project_new (Recorder* self); +static void _recorder_on_project_new_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_project_save (Recorder* self); +static void _recorder_on_project_save_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_project_save_as (Recorder* self); +static void _recorder_on_project_save_as_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_export (Recorder* self); +static void _recorder_on_export_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_properties (Recorder* self); +static void _recorder_on_properties_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_quit (Recorder* self); +static void _recorder_on_quit_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_undo (Recorder* self); +static void _recorder_on_undo_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_cut (Recorder* self); +static void _recorder_on_cut_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_copy (Recorder* self); +static void _recorder_on_copy_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_paste (Recorder* self); +static void _recorder_on_paste_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_delete (Recorder* self); +static void _recorder_on_delete_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_select_all (Recorder* self); +static void _recorder_on_select_all_gtk_action_callback (GtkAction* action, gpointer self); +void recorder_on_split_at_playhead (Recorder* self); +static void _recorder_on_split_at_playhead_gtk_action_callback (GtkAction* action, gpointer self); +void recorder_on_trim_to_playhead (Recorder* self); +static void _recorder_on_trim_to_playhead_gtk_action_callback (GtkAction* action, gpointer self); +void recorder_on_clip_properties (Recorder* self); +static void _recorder_on_clip_properties_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_zoom_in (Recorder* self); +static void _recorder_on_zoom_in_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_zoom_out (Recorder* self); +static void _recorder_on_zoom_out_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_zoom_to_project (Recorder* self); +static void _recorder_on_zoom_to_project_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_track_new (Recorder* self); +static void _recorder_on_track_new_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_track_rename (Recorder* self); +static void _recorder_on_track_rename_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_track_remove (Recorder* self); +static void _recorder_on_track_remove_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_track_move_up (Recorder* self); +static void _recorder_on_track_move_up_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_track_move_down (Recorder* self); +static void _recorder_on_track_move_down_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_tracks_scroll_up (Recorder* self); +static void _recorder_on_tracks_scroll_up_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_tracks_scroll_down (Recorder* self); +static void _recorder_on_tracks_scroll_down_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_help_contents (Recorder* self); +static void _recorder_on_help_contents_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_about (Recorder* self); +static void _recorder_on_about_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_save_graph (Recorder* self); +static void _recorder_on_save_graph_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_rewind (Recorder* self); +static void _recorder_on_rewind_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_end (Recorder* self); +static void _recorder_on_end_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_play (Recorder* self); +static void _recorder_on_play_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_record (Recorder* self); +static void _recorder_on_record_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_view_library (Recorder* self); +static void _recorder_on_view_library_gtk_action_callback (GtkAction* action, gpointer self); +static void recorder_on_snap (Recorder* self); +static void _recorder_on_snap_gtk_action_callback (GtkAction* action, gpointer self); +#define RECORDER_ui "\n" \ +"\n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" " \ +"\n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +"\n" +static char* recorder_get_fillmore_directory (Recorder* self); +ModelAudioProject* model_audio_project_new (const char* filename, GError** error); +ModelAudioProject* model_audio_project_construct (GType object_type, const char* filename, GError** error); +static void recorder_on_callback_pulse (Recorder* self); +static void _recorder_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self); +static void recorder_on_post_export (Recorder* self, gboolean canceled); +static void _recorder_on_post_export_view_media_engine_post_export (ViewMediaEngine* _sender, gboolean canceled, gpointer self); +static void recorder_on_position_changed (Recorder* self); +static void _recorder_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self); +void recorder_on_load_error (Recorder* self, const char* message); +static void _recorder_on_load_error_model_project_load_error (ModelProject* _sender, const char* _error_, gpointer self); +static void recorder_on_name_changed (Recorder* self); +static void _recorder_on_name_changed_model_project_name_changed (ModelProject* _sender, const char* project_file, gpointer self); +static void recorder_on_dirty_changed (Recorder* self, gboolean isDirty); +static void _recorder_on_dirty_changed_model_undo_manager_dirty_changed (ModelUndoManager* _sender, gboolean is_dirty, gpointer self); +static void recorder_on_undo_changed (Recorder* self, gboolean can_undo); +static void _recorder_on_undo_changed_model_undo_manager_undo_changed (ModelUndoManager* _sender, gboolean can_undo, gpointer self); +static void recorder_on_error_occurred (Recorder* self, const char* major_message, const char* minor_message); +static void _recorder_on_error_occurred_model_project_error_occurred (ModelProject* _sender, const char* major_message, const char* minor_message, gpointer self); +static void recorder_on_playstate_changed (Recorder* self, PlayState playstate); +static void _recorder_on_playstate_changed_model_project_playstate_changed (ModelProject* _sender, PlayState playstate, gpointer self); +static void recorder_on_track_added (Recorder* self, ModelTrack* track); +static void _recorder_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self); +static void recorder_on_track_removed (Recorder* self, ModelTrack* unused); +static void _recorder_on_track_removed_model_project_track_removed (ModelProject* _sender, ModelTrack* track, gpointer self); +void recorder_on_load_complete (Recorder* self); +static void _recorder_on_load_complete_model_project_load_complete (ModelProject* _sender, gpointer self); +static void recorder_on_project_close (Recorder* self); +static void _recorder_on_project_close_model_project_closed (ModelProject* _sender, gpointer self); +static GtkWidget* recorder_get_widget (Recorder* self, GtkUIManager* manager, const char* name); +void recorder_on_library_selection_changed (Recorder* self, gboolean selected); +static void _recorder_on_library_selection_changed_clip_library_view_selection_changed (ClipLibraryView* _sender, gboolean selected, gpointer self); +static void recorder_on_drag_data_received (Recorder* self, GtkWidget* w, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time); +static void _recorder_on_drag_data_received_gtk_widget_drag_data_received (GtkWidget* _sender, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint info, guint time_, gpointer self); +static void recorder_on_track_changed (Recorder* self); +static void _recorder_on_track_changed_time_line_track_changed (TimeLine* _sender, gpointer self); +static void recorder_on_timeline_size_allocate (Recorder* self, GdkRectangle* rectangle); +static void _recorder_on_timeline_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self); +static void recorder_on_timeline_selection_changed (Recorder* self, gboolean selected); +static void _recorder_on_timeline_selection_changed_time_line_selection_changed (TimeLine* _sender, gboolean selected, gpointer self); +static void recorder_update_menu (Recorder* self); +HeaderArea* header_area_new (Recorder* recorder, ModelTimeSystem* provider, gint height); +HeaderArea* header_area_construct (GType object_type, Recorder* recorder, ModelTimeSystem* provider, gint height); +static void _recorder_on_track_new_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void _recorder_on_play_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self); +static void _recorder_on_record_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self); +static void _recorder_on_rewind_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void _recorder_on_end_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void _recorder_on_zoom_in_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void _recorder_on_zoom_out_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void recorder_on_volume (Recorder* self); +static void _recorder_on_volume_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void recorder_on_library_size_allocate (Recorder* self, GdkRectangle* rectangle); +static void _recorder_on_library_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self); +static gboolean recorder_on_delete_event (Recorder* self); +static gboolean _recorder_on_delete_event_gtk_widget_delete_event (GtkWidget* _sender, GdkEvent* event, gpointer self); +static void recorder_default_track_set (Recorder* self); +Recorder* recorder_new (const char* project_file, GError** error); +Recorder* recorder_construct (GType object_type, const char* project_file, GError** error); +char* recorder_get_default_track_name (Recorder* self); +static gint recorder_default_track_number_compare (void* a, void* b); +static gint _recorder_default_track_number_compare_gcompare_func (void* a, void* b); +static void _g_list_free_g_free (GList* self); +ModelTrack* recorder_selected_track (Recorder* self); +static void recorder_set_sensitive_group (Recorder* self, GtkActionGroup* group, const char* group_path, gboolean sensitive); +static void recorder_on_clip_added (Recorder* self, ModelClip* clip); +static void _recorder_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self); +static void recorder_on_clip_removed (Recorder* self, ModelClip* clip); +static void _recorder_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self); +static void recorder_on_track_selection_changed (Recorder* self, ModelTrack* track); +static void _recorder_on_track_selection_changed_model_track_track_selection_changed (ModelTrack* _sender, ModelTrack* track, gpointer self); +static void recorder_on_clip_moved (Recorder* self, ModelClip* clip); +static void _recorder_on_clip_moved_model_clip_moved (ModelClip* _sender, ModelClip* clip, gpointer self); +void recorder_scroll_to_beginning (Recorder* self); +void recorder_scroll_to_time (Recorder* self, gint64 time); +void recorder_page_to_time (Recorder* self, gint64 time); +void recorder_scroll_to_end (Recorder* self); +static gint recorder_sgn (gint x); +void recorder_scroll_toward_center (Recorder* self, gint xpos); +static gboolean recorder_real_key_press_event (GtkWidget* base, GdkEventKey* event); +void recorder_do_error_dialog (const char* major_message, const char* minor_message); +static void recorder_on_project_new_finished_closing (Recorder* self, gboolean project_did_close); +static void _recorder_on_project_new_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self); +static void recorder_on_project_open_finished_closing (Recorder* self, gboolean project_did_close); +static void _recorder_on_project_open_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self); +static void _g_slist_free_g_free (GSList* self); +static gboolean recorder_save_dialog (Recorder* self); +static gboolean recorder_do_save (Recorder* self); +static void recorder_on_save_new_file_finished_closing (Recorder* self, gboolean did_close); +static void _recorder_on_save_new_file_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self); +GType project_properties_get_type (void); +void project_properties_setup (ProjectProperties* self, ModelProject* project, GtkBuilder* builder); +gint project_properties_get_tempo (ProjectProperties* self); +void project_properties_get_time_signature (ProjectProperties* self, Fraction* result); +gboolean project_properties_during_record (ProjectProperties* self); +gboolean project_properties_during_play (ProjectProperties* self); +double project_properties_get_click_volume (ProjectProperties* self); +static void recorder_on_quit_finished_closing (Recorder* self, gboolean project_did_close); +static void _recorder_on_quit_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self); +UITrackInformation* ui_track_information_new (void); +UITrackInformation* ui_track_information_construct (GType object_type); +GType ui_track_information_get_type (void); +void ui_track_information_set_track_name (UITrackInformation* self, const char* new_name); +static gboolean recorder_track_name_dialog (Recorder* self, UITrackInformation* dialog, ModelTrack* track); +char* ui_track_information_get_track_name (UITrackInformation* self); +static void recorder_do_zoom (Recorder* self, float increment); +void model_audio_project_record (ModelAudioProject* self, ModelAudioTrack* track); +static gint64 recorder_get_zoom_center_time (Recorder* self); +static gboolean recorder_real_is_playing (TransportDelegate* base); +static gboolean recorder_real_is_recording (TransportDelegate* base); +static gboolean recorder_real_is_stopped (TransportDelegate* base); +static void recorder_finalize (GObject* obj); +GType fillmore_get_type (void); +enum { + FILLMORE_DUMMY_PROPERTY +}; +FillmoreClassFactory* fillmore_class_factory_new (void); +FillmoreClassFactory* fillmore_class_factory_construct (GType object_type); +GType fillmore_class_factory_get_type (void); +void fillmore_run (Fillmore* self, char** args, int args_length1); +Fillmore* fillmore_new (void); +Fillmore* fillmore_construct (GType object_type); +static GObject * fillmore_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); +gint _vala_main (char** args, int args_length1); +void NO_main (char** args, int args_length1); +static int _vala_strcmp0 (const char * str1, const char * str2); + +const GOptionEntry options[3] = {{"print-graph", (gchar) 0, 0, G_OPTION_ARG_NONE, &do_print_graph, "Show Print Graph in help menu", NULL}, {"debug-level", (gchar) 0, 0, G_OPTION_ARG_INT, &debug_level, "Control amount of diagnostic information", "[0 (minimal),5 (maximum)]"}, {NULL}}; +static const GtkActionEntry RECORDER_entries[36] = {{"Project", NULL, "_Project", NULL, NULL, (GCallback) NULL}, {"Open", GTK_STOCK_OPEN, "_Open...", NULL, "Open a project", (GCallback) _recorder_on_project_open_gtk_action_callback}, {"NewProject", GTK_STOCK_NEW, "_New", NULL, "Create new project", (GCallback) _recorder_on_project_new_gtk_action_callback}, {"Save", GTK_STOCK_SAVE, "_Save", "S", "Save project", (GCallback) _recorder_on_project_save_gtk_action_callback}, {"SaveAs", GTK_STOCK_SAVE_AS, "Save _As...", "S", "Save project with new name", (GCallback) _recorder_on_project_save_as_gtk_action_callback}, {"Export", GTK_STOCK_JUMP_TO, "_Export...", "E", NULL, (GCallback) _recorder_on_export_gtk_action_callback}, {"Settings", GTK_STOCK_PROPERTIES, "Se_ttings", "Return", NULL, (GCallback) _recorder_on_properties_gtk_action_callback}, {"Quit", GTK_STOCK_QUIT, NULL, NULL, NULL, (GCallback) _recorder_on_quit_gtk_action_callback}, {"Edit", NULL, "_Edit", NULL, NULL, (GCallback) NULL}, {"Undo", GTK_STOCK_UNDO, NULL, "Z", NULL, (GCallback) _recorder_on_undo_gtk_action_callback}, {"Cut", GTK_STOCK_CUT, NULL, NULL, NULL, (GCallback) _recorder_on_cut_gtk_action_callback}, {"Copy", GTK_STOCK_COPY, NULL, NULL, NULL, (GCallback) _recorder_on_copy_gtk_action_callback}, {"Paste", GTK_STOCK_PASTE, NULL, NULL, NULL, (GCallback) _recorder_on_paste_gtk_action_callback}, {"Delete", GTK_STOCK_DELETE, NULL, "Delete", NULL, (GCallback) _recorder_on_delete_gtk_action_callback}, {"SelectAll", GTK_STOCK_SELECT_ALL, NULL, "A", NULL, (GCallback) _recorder_on_select_all_gtk_action_callback}, {"SplitAtPlayhead", NULL, "_Split at Playhead", "P", NULL, (GCallback) _recorder_on_split_at_playhead_gtk_action_callback}, {"TrimToPlayhead", NULL, "Trim to Play_head", "H", NULL, (GCallback) _recorder_on_trim_to_playhead_gtk_action_callback}, {"ClipProperties", GTK_STOCK_PROPERTIES, "Properti_es", "Return", NULL, (GCallback) _recorder_on_clip_properties_gtk_action_callback}, {"View", NULL, "_View", NULL, NULL, (GCallback) NULL}, {"ZoomIn", GTK_STOCK_ZOOM_IN, "Zoom _In", "plus", NULL, (GCallback) _recorder_on_zoom_in_gtk_action_callback}, {"ZoomOut", GTK_STOCK_ZOOM_OUT, "Zoom _Out", "minus", NULL, (GCallback) _recorder_on_zoom_out_gtk_action_callback}, {"ZoomProject", NULL, "Fit to _Window", "Z", NULL, (GCallback) _recorder_on_zoom_to_project_gtk_action_callback}, {"Track", NULL, "_Track", NULL, NULL, (GCallback) NULL}, {"NewTrack", GTK_STOCK_ADD, "_New...", "N", "Create new track", (GCallback) _recorder_on_track_new_gtk_action_callback}, {"Rename", NULL, "_Rename...", NULL, "Rename Track", (GCallback) _recorder_on_track_rename_gtk_action_callback}, {"DeleteTrack", NULL, "_Delete", "Delete", "Delete track", (GCallback) _recorder_on_track_remove_gtk_action_callback}, {"MoveTrackUp", NULL, "Move Track Up", "Up", NULL, (GCallback) _recorder_on_track_move_up_gtk_action_callback}, {"MoveTrackDown", NULL, "Move Track Down", "Down", NULL, (GCallback) _recorder_on_track_move_down_gtk_action_callback}, {"ScrollTracksUp", NULL, "Scroll Tracks Up", "Up", NULL, (GCallback) _recorder_on_tracks_scroll_up_gtk_action_callback}, {"ScrollTracksDown", NULL, "Scroll Tracks Down", "Down", NULL, (GCallback) _recorder_on_tracks_scroll_down_gtk_action_callback}, {"Help", NULL, "_Help", NULL, NULL, (GCallback) NULL}, {"Contents", GTK_STOCK_HELP, "_Contents", "F1", "More information on Fillmore", (GCallback) _recorder_on_help_contents_gtk_action_callback}, {"About", GTK_STOCK_ABOUT, NULL, NULL, NULL, (GCallback) _recorder_on_about_gtk_action_callback}, {"SaveGraph", NULL, "Save _Graph", NULL, "Save graph", (GCallback) _recorder_on_save_graph_gtk_action_callback}, {"Rewind", GTK_STOCK_MEDIA_PREVIOUS, "Rewind", "Home", "Go to beginning", (GCallback) _recorder_on_rewind_gtk_action_callback}, {"End", GTK_STOCK_MEDIA_NEXT, "End", "End", "Go to end", (GCallback) _recorder_on_end_gtk_action_callback}}; +static const GtkToggleActionEntry RECORDER_toggle_entries[4] = {{"Play", GTK_STOCK_MEDIA_PLAY, NULL, "space", "Play", (GCallback) _recorder_on_play_gtk_action_callback}, {"Record", GTK_STOCK_MEDIA_RECORD, NULL, "r", "Record", (GCallback) _recorder_on_record_gtk_action_callback}, {"Library", NULL, "_Library", "F9", NULL, (GCallback) _recorder_on_view_library_gtk_action_callback, FALSE}, {"Snap", NULL, "_Snap to Clip Edges", NULL, NULL, (GCallback) _recorder_on_snap_gtk_action_callback, FALSE}}; +static const DialogUtilsfilter_description_struct RECORDER_filters[2] = {{"Fillmore Project Files", MODEL_PROJECT_FILLMORE_FILE_EXTENSION}, {"Lombard Project Files", MODEL_PROJECT_LOMBARD_FILE_EXTENSION}}; +static const DialogUtilsfilter_description_struct RECORDER_export_filters[1] = {{"Ogg Files", "ogg"}}; + + +#line 774 "fillmore.vala" +static void _recorder_on_project_open_gtk_action_callback (GtkAction* action, gpointer self) { +#line 383 "fillmore.c" + recorder_on_project_open (self); +} + + +#line 755 "fillmore.vala" +static void _recorder_on_project_new_gtk_action_callback (GtkAction* action, gpointer self) { +#line 390 "fillmore.c" + recorder_on_project_new (self); +} + + +#line 785 "fillmore.vala" +static void _recorder_on_project_save_gtk_action_callback (GtkAction* action, gpointer self) { +#line 397 "fillmore.c" + recorder_on_project_save (self); +} + + +#line 781 "fillmore.vala" +static void _recorder_on_project_save_as_gtk_action_callback (GtkAction* action, gpointer self) { +#line 404 "fillmore.c" + recorder_on_project_save_as (self); +} + + +#line 714 "fillmore.vala" +static void _recorder_on_export_gtk_action_callback (GtkAction* action, gpointer self) { +#line 411 "fillmore.c" + recorder_on_export (self); +} + + +#line 822 "fillmore.vala" +static void _recorder_on_properties_gtk_action_callback (GtkAction* action, gpointer self) { +#line 418 "fillmore.c" + recorder_on_properties (self); +} + + +#line 858 "fillmore.vala" +static void _recorder_on_quit_gtk_action_callback (GtkAction* action, gpointer self) { +#line 425 "fillmore.c" + recorder_on_quit (self); +} + + +#line 913 "fillmore.vala" +static void _recorder_on_undo_gtk_action_callback (GtkAction* action, gpointer self) { +#line 432 "fillmore.c" + recorder_on_undo (self); +} + + +#line 901 "fillmore.vala" +static void _recorder_on_cut_gtk_action_callback (GtkAction* action, gpointer self) { +#line 439 "fillmore.c" + recorder_on_cut (self); +} + + +#line 905 "fillmore.vala" +static void _recorder_on_copy_gtk_action_callback (GtkAction* action, gpointer self) { +#line 446 "fillmore.c" + recorder_on_copy (self); +} + + +#line 909 "fillmore.vala" +static void _recorder_on_paste_gtk_action_callback (GtkAction* action, gpointer self) { +#line 453 "fillmore.c" + recorder_on_paste (self); +} + + +#line 917 "fillmore.vala" +static void _recorder_on_delete_gtk_action_callback (GtkAction* action, gpointer self) { +#line 460 "fillmore.c" + recorder_on_delete (self); +} + + +#line 925 "fillmore.vala" +static void _recorder_on_select_all_gtk_action_callback (GtkAction* action, gpointer self) { +#line 467 "fillmore.c" + recorder_on_select_all (self); +} + + +#line 933 "fillmore.vala" +static void _recorder_on_split_at_playhead_gtk_action_callback (GtkAction* action, gpointer self) { +#line 474 "fillmore.c" + recorder_on_split_at_playhead (self); +} + + +#line 937 "fillmore.vala" +static void _recorder_on_trim_to_playhead_gtk_action_callback (GtkAction* action, gpointer self) { +#line 481 "fillmore.c" + recorder_on_trim_to_playhead (self); +} + + +#line 941 "fillmore.vala" +static void _recorder_on_clip_properties_gtk_action_callback (GtkAction* action, gpointer self) { +#line 488 "fillmore.c" + recorder_on_clip_properties (self); +} + + +#line 1008 "fillmore.vala" +static void _recorder_on_zoom_in_gtk_action_callback (GtkAction* action, gpointer self) { +#line 495 "fillmore.c" + recorder_on_zoom_in (self); +} + + +#line 1012 "fillmore.vala" +static void _recorder_on_zoom_out_gtk_action_callback (GtkAction* action, gpointer self) { +#line 502 "fillmore.c" + recorder_on_zoom_out (self); +} + + +#line 1016 "fillmore.vala" +static void _recorder_on_zoom_to_project_gtk_action_callback (GtkAction* action, gpointer self) { +#line 509 "fillmore.c" + recorder_on_zoom_to_project (self); +} + + +#line 960 "fillmore.vala" +static void _recorder_on_track_new_gtk_action_callback (GtkAction* action, gpointer self) { +#line 516 "fillmore.c" + recorder_on_track_new (self); +} + + +#line 969 "fillmore.vala" +static void _recorder_on_track_rename_gtk_action_callback (GtkAction* action, gpointer self) { +#line 523 "fillmore.c" + recorder_on_track_rename (self); +} + + +#line 1003 "fillmore.vala" +static void _recorder_on_track_remove_gtk_action_callback (GtkAction* action, gpointer self) { +#line 530 "fillmore.c" + recorder_on_track_remove (self); +} + + +#line 426 "fillmore.vala" +static void _recorder_on_track_move_up_gtk_action_callback (GtkAction* action, gpointer self) { +#line 537 "fillmore.c" + recorder_on_track_move_up (self); +} + + +#line 444 "fillmore.vala" +static void _recorder_on_track_move_down_gtk_action_callback (GtkAction* action, gpointer self) { +#line 544 "fillmore.c" + recorder_on_track_move_down (self); +} + + +#line 463 "fillmore.vala" +static void _recorder_on_tracks_scroll_up_gtk_action_callback (GtkAction* action, gpointer self) { +#line 551 "fillmore.c" + recorder_on_tracks_scroll_up (self); +} + + +#line 475 "fillmore.vala" +static void _recorder_on_tracks_scroll_down_gtk_action_callback (GtkAction* action, gpointer self) { +#line 558 "fillmore.c" + recorder_on_tracks_scroll_down (self); +} + + +#line 1043 "fillmore.vala" +static void _recorder_on_help_contents_gtk_action_callback (GtkAction* action, gpointer self) { +#line 565 "fillmore.c" + recorder_on_help_contents (self); +} + + +#line 1050 "fillmore.vala" +static void _recorder_on_about_gtk_action_callback (GtkAction* action, gpointer self) { +#line 572 "fillmore.c" + recorder_on_about (self); +} + + +#line 1062 "fillmore.vala" +static void _recorder_on_save_graph_gtk_action_callback (GtkAction* action, gpointer self) { +#line 579 "fillmore.c" + recorder_on_save_graph (self); +} + + +#line 1072 "fillmore.vala" +static void _recorder_on_rewind_gtk_action_callback (GtkAction* action, gpointer self) { +#line 586 "fillmore.c" + recorder_on_rewind (self); +} + + +#line 1077 "fillmore.vala" +static void _recorder_on_end_gtk_action_callback (GtkAction* action, gpointer self) { +#line 593 "fillmore.c" + recorder_on_end (self); +} + + +#line 1082 "fillmore.vala" +static void _recorder_on_play_gtk_action_callback (GtkAction* action, gpointer self) { +#line 600 "fillmore.c" + recorder_on_play (self); +} + + +#line 1094 "fillmore.vala" +static void _recorder_on_record_gtk_action_callback (GtkAction* action, gpointer self) { +#line 607 "fillmore.c" + recorder_on_record (self); +} + + +#line 1024 "fillmore.vala" +static void _recorder_on_view_library_gtk_action_callback (GtkAction* action, gpointer self) { +#line 614 "fillmore.c" + recorder_on_view_library (self); +} + + +#line 1020 "fillmore.vala" +static void _recorder_on_snap_gtk_action_callback (GtkAction* action, gpointer self) { +#line 621 "fillmore.c" + recorder_on_snap (self); +} + + +#line 1114 "fillmore.vala" +static void _recorder_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self) { +#line 628 "fillmore.c" + recorder_on_callback_pulse (self); +} + + +#line 730 "fillmore.vala" +static void _recorder_on_post_export_view_media_engine_post_export (ViewMediaEngine* _sender, gboolean canceled, gpointer self) { +#line 635 "fillmore.c" + recorder_on_post_export (self, canceled); +} + + +#line 498 "fillmore.vala" +static void _recorder_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self) { +#line 642 "fillmore.c" + recorder_on_position_changed (self); +} + + +#line 1210 "fillmore.vala" +static void _recorder_on_load_error_model_project_load_error (ModelProject* _sender, const char* _error_, gpointer self) { +#line 649 "fillmore.c" + recorder_on_load_error (self, _error_); +} + + +#line 1251 "fillmore.vala" +static void _recorder_on_name_changed_model_project_name_changed (ModelProject* _sender, const char* project_file, gpointer self) { +#line 656 "fillmore.c" + recorder_on_name_changed (self); +} + + +#line 1256 "fillmore.vala" +static void _recorder_on_dirty_changed_model_undo_manager_dirty_changed (ModelUndoManager* _sender, gboolean is_dirty, gpointer self) { +#line 663 "fillmore.c" + recorder_on_dirty_changed (self, is_dirty); +} + + +#line 1263 "fillmore.vala" +static void _recorder_on_undo_changed_model_undo_manager_undo_changed (ModelUndoManager* _sender, gboolean can_undo, gpointer self) { +#line 670 "fillmore.c" + recorder_on_undo_changed (self, can_undo); +} + + +#line 1281 "fillmore.vala" +static void _recorder_on_error_occurred_model_project_error_occurred (ModelProject* _sender, const char* major_message, const char* minor_message, gpointer self) { +#line 677 "fillmore.c" + recorder_on_error_occurred (self, major_message, minor_message); +} + + +#line 1271 "fillmore.vala" +static void _recorder_on_playstate_changed_model_project_playstate_changed (ModelProject* _sender, PlayState playstate, gpointer self) { +#line 684 "fillmore.c" + recorder_on_playstate_changed (self, playstate); +} + + +#line 503 "fillmore.vala" +static void _recorder_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self) { +#line 691 "fillmore.c" + recorder_on_track_added (self, track); +} + + +#line 511 "fillmore.vala" +static void _recorder_on_track_removed_model_project_track_removed (ModelProject* _sender, ModelTrack* track, gpointer self) { +#line 698 "fillmore.c" + recorder_on_track_removed (self, track); +} + + +#line 1215 "fillmore.vala" +static void _recorder_on_load_complete_model_project_load_complete (ModelProject* _sender, gpointer self) { +#line 705 "fillmore.c" + recorder_on_load_complete (self); +} + + +#line 872 "fillmore.vala" +static void _recorder_on_project_close_model_project_closed (ModelProject* _sender, gpointer self) { +#line 712 "fillmore.c" + recorder_on_project_close (self); +} + + +#line 1148 "fillmore.vala" +static void _recorder_on_library_selection_changed_clip_library_view_selection_changed (ClipLibraryView* _sender, gboolean selected, gpointer self) { +#line 719 "fillmore.c" + recorder_on_library_selection_changed (self, selected); +} + + +#line 543 "fillmore.vala" +static void _recorder_on_drag_data_received_gtk_widget_drag_data_received (GtkWidget* _sender, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint info, guint time_, gpointer self) { +#line 726 "fillmore.c" + recorder_on_drag_data_received (self, _sender, context, x, y, selection_data, info, time_); +} + + +#line 493 "fillmore.vala" +static void _recorder_on_track_changed_time_line_track_changed (TimeLine* _sender, gpointer self) { +#line 733 "fillmore.c" + recorder_on_track_changed (self); +} + + +#line 1131 "fillmore.vala" +static void _recorder_on_timeline_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self) { +#line 740 "fillmore.c" + recorder_on_timeline_size_allocate (self, allocation); +} + + +#line 1140 "fillmore.vala" +static void _recorder_on_timeline_selection_changed_time_line_selection_changed (TimeLine* _sender, gboolean selected, gpointer self) { +#line 747 "fillmore.c" + recorder_on_timeline_selection_changed (self, selected); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 960 "fillmore.vala" +static void _recorder_on_track_new_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 759 "fillmore.c" + recorder_on_track_new (self); +} + + +#line 1082 "fillmore.vala" +static void _recorder_on_play_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) { +#line 766 "fillmore.c" + recorder_on_play (self); +} + + +#line 1094 "fillmore.vala" +static void _recorder_on_record_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) { +#line 773 "fillmore.c" + recorder_on_record (self); +} + + +#line 1072 "fillmore.vala" +static void _recorder_on_rewind_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 780 "fillmore.c" + recorder_on_rewind (self); +} + + +#line 1077 "fillmore.vala" +static void _recorder_on_end_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 787 "fillmore.c" + recorder_on_end (self); +} + + +#line 1008 "fillmore.vala" +static void _recorder_on_zoom_in_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 794 "fillmore.c" + recorder_on_zoom_in (self); +} + + +#line 1012 "fillmore.vala" +static void _recorder_on_zoom_out_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 801 "fillmore.c" + recorder_on_zoom_out (self); +} + + +#line 1068 "fillmore.vala" +static void _recorder_on_volume_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 808 "fillmore.c" + recorder_on_volume (self); +} + + +#line 1035 "fillmore.vala" +static void _recorder_on_library_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self) { +#line 815 "fillmore.c" + recorder_on_library_size_allocate (self, allocation); +} + + +#line 866 "fillmore.vala" +static gboolean _recorder_on_delete_event_gtk_widget_delete_event (GtkWidget* _sender, GdkEvent* event, gpointer self) { +#line 822 "fillmore.c" + gboolean result; + result = recorder_on_delete_event (self); + return result; +} + + +#line 207 "fillmore.vala" +Recorder* recorder_construct (GType object_type, const char* project_file, GError** error) { +#line 831 "fillmore.c" + GError * _inner_error_; + Recorder * self; + char* _tmp0_; + GeeArrayList* _tmp1_; + ModelAudioProject* _tmp5_; + ModelAudioProject* _tmp6_; + ModelTimeSystem* _tmp7_; + GstCaps* _tmp8_; + ViewAudioOutput* _tmp9_; + ViewAudioOutput* _tmp10_; + ViewAudioOutput* _tmp11_; + ViewClickTrack* _tmp12_; + ViewClickTrack* _tmp13_; + GtkActionGroup* _tmp14_; + GtkUIManager* _tmp15_; + GtkMenuBar* menubar; + GtkToolbar* toolbar; + ClipLibraryView* _tmp16_; + TimeLine* _tmp17_; + GtkMenu* _tmp18_; + GtkMenu* _tmp19_; + GtkScrolledWindow* _tmp20_; + GtkHBox* hbox; + HeaderArea* _tmp21_; + GtkScrolledWindow* _tmp22_; + GtkAdjustment* _tmp23_; + GtkHButtonBox* buttons; + GtkButton* _tmp24_; + GtkImage* _tmp25_; + GtkToggleButton* _tmp26_; + GtkImage* _tmp27_; + GtkToggleButton* _tmp28_; + GtkImage* _tmp29_; + GtkButton* _tmp30_; + GtkImage* _tmp31_; + GtkButton* _tmp32_; + GtkImage* _tmp33_; + GtkButton* _tmp34_; + GtkImage* _tmp35_; + GtkButton* _tmp36_; + GtkImage* _tmp37_; + GtkButton* _tmp38_; + GtkImage* _tmp39_; + GtkVBox* vbox; + GtkVBox* main_view; + GtkHPaned* _tmp40_; + HildonPannableArea* _tmp41_; + GtkMenuItem* save_graph; + gboolean _tmp42_ = FALSE; + _inner_error_ = NULL; + self = g_object_newv (object_type, 0, NULL); +#line 208 "fillmore.vala" + class_factory_set_transport_delegate (TRANSPORT_DELEGATE (self)); +#line 209 "fillmore.vala" + g_mkdir (_tmp0_ = recorder_get_fillmore_directory (self), 0777); +#line 887 "fillmore.c" + _g_free0 (_tmp0_); +#line 210 "fillmore.vala" + self->priv->load_errors = (_tmp1_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL), _g_object_unref0 (self->priv->load_errors), _tmp1_); +#line 891 "fillmore.c" + { + char* _tmp4_; + GFile* _tmp3_; + GFile* _tmp2_; +#line 212 "fillmore.vala" + gtk_window_set_icon_from_file (GTK_WINDOW (self), _tmp4_ = g_file_get_path (_tmp3_ = g_file_get_child (_tmp2_ = app_dirs_get_resources_dir (), "fillmore_icon.png")), &_inner_error_); +#line 898 "fillmore.c" + _g_free0 (_tmp4_); + _g_object_unref0 (_tmp3_); + _g_object_unref0 (_tmp2_); + if (_inner_error_ != NULL) { + goto __catch3_g_error; + } + } + goto __finally3; + __catch3_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 215 "fillmore.vala" + g_warning ("fillmore.vala:215: Could not load application icon: %s", e->message); +#line 915 "fillmore.c" + _g_error_free0 (e); + } + } + __finally3: + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 219 "fillmore.vala" + _tmp5_ = model_audio_project_new (project_file, &_inner_error_); +#line 927 "fillmore.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 219 "fillmore.vala" + self->project = (_tmp6_ = _tmp5_, _g_object_unref0 (self->project), _tmp6_); +#line 220 "fillmore.vala" + MODEL_PROJECT (self->project)->snap_to_clip = FALSE; +#line 221 "fillmore.vala" + self->priv->provider = (_tmp7_ = MODEL_TIME_SYSTEM (model_bar_beat_time_system_new (MODEL_TEMPO_INFORMATION (self->project))), _g_object_unref0 (self->priv->provider), _tmp7_); +#line 223 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project)->media_engine, "callback-pulse", (GCallback) _recorder_on_callback_pulse_view_media_engine_callback_pulse, self, 0); +#line 224 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project)->media_engine, "post-export", (GCallback) _recorder_on_post_export_view_media_engine_post_export, self, 0); +#line 225 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project)->media_engine, "position-changed", (GCallback) _recorder_on_position_changed_view_media_engine_position_changed, self, 0); +#line 227 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "load-error", (GCallback) _recorder_on_load_error_model_project_load_error, self, 0); +#line 228 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "name-changed", (GCallback) _recorder_on_name_changed_model_project_name_changed, self, 0); +#line 229 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project)->undo_manager, "dirty-changed", (GCallback) _recorder_on_dirty_changed_model_undo_manager_dirty_changed, self, 0); +#line 230 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project)->undo_manager, "undo-changed", (GCallback) _recorder_on_undo_changed_model_undo_manager_undo_changed, self, 0); +#line 231 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "error-occurred", (GCallback) _recorder_on_error_occurred_model_project_error_occurred, self, 0); +#line 232 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "playstate-changed", (GCallback) _recorder_on_playstate_changed_model_project_playstate_changed, self, 0); +#line 233 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "track-added", (GCallback) _recorder_on_track_added_model_project_track_added, self, 0); +#line 234 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "track-removed", (GCallback) _recorder_on_track_removed_model_project_track_removed, self, 0); +#line 235 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "load-complete", (GCallback) _recorder_on_load_complete_model_project_load_complete, self, 0); +#line 236 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "closed", (GCallback) _recorder_on_project_close_model_project_closed, self, 0); +#line 238 "fillmore.vala" + _tmp10_ = (_tmp9_ = view_audio_output_new (_tmp8_ = view_media_engine_get_project_audio_caps (MODEL_PROJECT (self->project)->media_engine), &_inner_error_), _gst_caps_unref0 (_tmp8_), _tmp9_); +#line 967 "fillmore.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 238 "fillmore.vala" + self->priv->audio_output = (_tmp11_ = _tmp10_, _g_object_unref0 (self->priv->audio_output), _tmp11_); +#line 239 "fillmore.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_output)); +#line 240 "fillmore.vala" + _tmp12_ = view_click_track_new (MODEL_PROJECT (self->project)->media_engine, MODEL_PROJECT (self->project), &_inner_error_); +#line 979 "fillmore.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 240 "fillmore.vala" + self->priv->click_track = (_tmp13_ = _tmp12_, _g_object_unref0 (self->priv->click_track), _tmp13_); +#line 241 "fillmore.vala" + gtk_window_set_position (GTK_WINDOW (self), GTK_WIN_POS_CENTER); +#line 242 "fillmore.vala" + gtk_window_set_title (GTK_WINDOW (self), "Fillmore"); +#line 243 "fillmore.vala" + gtk_window_set_default_size (GTK_WINDOW (self), 800, 1200); +#line 245 "fillmore.vala" + self->priv->main_group = (_tmp14_ = gtk_action_group_new ("main"), _g_object_unref0 (self->priv->main_group), _tmp14_); +#line 246 "fillmore.vala" + gtk_action_group_add_actions (self->priv->main_group, RECORDER_entries, G_N_ELEMENTS (RECORDER_entries), self); +#line 247 "fillmore.vala" + gtk_action_group_add_toggle_actions (self->priv->main_group, RECORDER_toggle_entries, G_N_ELEMENTS (RECORDER_toggle_entries), self); +#line 249 "fillmore.vala" + self->priv->manager = (_tmp15_ = gtk_ui_manager_new (), _g_object_unref0 (self->priv->manager), _tmp15_); +#line 250 "fillmore.vala" + gtk_ui_manager_insert_action_group (self->priv->manager, self->priv->main_group, 0); +#line 1003 "fillmore.c" + { +#line 252 "fillmore.vala" + gtk_ui_manager_add_ui_from_string (self->priv->manager, RECORDER_ui, (gssize) (-1), &_inner_error_); +#line 1007 "fillmore.c" + if (_inner_error_ != NULL) { + goto __catch4_g_error; + } + } + goto __finally4; + __catch4_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 253 "fillmore.vala" + g_error ("fillmore.vala:253: %s", e->message); +#line 1021 "fillmore.c" + _g_error_free0 (e); + } + } + __finally4: + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 255 "fillmore.vala" + menubar = GTK_MENU_BAR (recorder_get_widget (self, self->priv->manager, "/MenuBar")); +#line 256 "fillmore.vala" + toolbar = GTK_TOOLBAR (recorder_get_widget (self, self->priv->manager, "/Toolbar")); +#line 262 "fillmore.vala" + recorder_on_undo_changed (self, FALSE); +#line 264 "fillmore.vala" + self->priv->library = (_tmp16_ = g_object_ref_sink (clip_library_view_new (MODEL_PROJECT (self->project), self->priv->provider, NULL, GDK_ACTION_COPY)), _g_object_unref0 (self->priv->library), _tmp16_); +#line 265 "fillmore.vala" + g_signal_connect_object (self->priv->library, "selection-changed", (GCallback) _recorder_on_library_selection_changed_clip_library_view_selection_changed, self, 0); +#line 266 "fillmore.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->library), "drag-data-received", (GCallback) _recorder_on_drag_data_received_gtk_widget_drag_data_received, self, 0); +#line 268 "fillmore.vala" + self->timeline = (_tmp17_ = g_object_ref_sink (time_line_new (MODEL_PROJECT (self->project), self->priv->provider, GDK_ACTION_COPY)), _g_object_unref0 (self->timeline), _tmp17_); +#line 269 "fillmore.vala" + g_signal_connect_object (self->timeline, "track-changed", (GCallback) _recorder_on_track_changed_time_line_track_changed, self, 0); +#line 270 "fillmore.vala" + g_signal_connect_object (GTK_WIDGET (self->timeline), "drag-data-received", (GCallback) _recorder_on_drag_data_received_gtk_widget_drag_data_received, self, 0); +#line 271 "fillmore.vala" + g_signal_connect_object (GTK_WIDGET (self->timeline), "size-allocate", (GCallback) _recorder_on_timeline_size_allocate_gtk_widget_size_allocate, self, 0); +#line 272 "fillmore.vala" + g_signal_connect_object (self->timeline, "selection-changed", (GCallback) _recorder_on_timeline_selection_changed_time_line_selection_changed, self, 0); +#line 274 "fillmore.vala" + clip_view_context_menu = (_tmp18_ = _g_object_ref0 (GTK_MENU (gtk_ui_manager_get_widget (self->priv->manager, "/ClipContextMenu"))), _g_object_unref0 (clip_view_context_menu), _tmp18_); +#line 275 "fillmore.vala" + clip_library_view_context_menu = (_tmp19_ = _g_object_ref0 (GTK_MENU (gtk_ui_manager_get_widget (self->priv->manager, "/LibraryContextMenu"))), _g_object_unref0 (clip_library_view_context_menu), _tmp19_); +#line 276 "fillmore.vala" + recorder_update_menu (self); +#line 278 "fillmore.vala" + self->priv->library_scrolled = (_tmp20_ = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)), _g_object_unref0 (self->priv->library_scrolled), _tmp20_); +#line 279 "fillmore.vala" + gtk_scrolled_window_set_policy (self->priv->library_scrolled, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); +#line 280 "fillmore.vala" + gtk_scrolled_window_add_with_viewport (self->priv->library_scrolled, GTK_WIDGET (self->priv->library)); +#line 282 "fillmore.vala" + hbox = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 0)); +#line 283 "fillmore.vala" + self->priv->header_area = (_tmp21_ = g_object_ref_sink (header_area_new (self, self->priv->provider, TIME_LINE_RULER_HEIGHT)), _g_object_unref0 (self->priv->header_area), _tmp21_); +#line 284 "fillmore.vala" + gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (self->priv->header_area), FALSE, FALSE, (guint) 0); +#line 287 "fillmore.vala" + self->priv->timeline_scrolled = (_tmp22_ = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)), _g_object_unref0 (self->priv->timeline_scrolled), _tmp22_); +#line 288 "fillmore.vala" + gtk_scrolled_window_set_policy (self->priv->timeline_scrolled, GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); +#line 289 "fillmore.vala" + gtk_scrolled_window_add_with_viewport (self->priv->timeline_scrolled, GTK_WIDGET (self->timeline)); +#line 290 "fillmore.vala" + gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (self->priv->timeline_scrolled), TRUE, TRUE, (guint) 0); +#line 291 "fillmore.vala" + self->priv->h_adjustment = (_tmp23_ = _g_object_ref0 (gtk_scrolled_window_get_hadjustment (self->priv->timeline_scrolled)), _g_object_unref0 (self->priv->h_adjustment), _tmp23_); +#line 295 "fillmore.vala" + buttons = g_object_ref_sink ((GtkHButtonBox*) gtk_hbutton_box_new ()); +#line 296 "fillmore.vala" + self->priv->addnew_button = (_tmp24_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->addnew_button), _tmp24_); +#line 297 "fillmore.vala" + gtk_button_set_image (self->priv->addnew_button, GTK_WIDGET (_tmp25_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("general_add", GTK_ICON_SIZE_BUTTON)))); +#line 1087 "fillmore.c" + _g_object_unref0 (_tmp25_); +#line 298 "fillmore.vala" + g_signal_connect_object (self->priv->addnew_button, "clicked", (GCallback) _recorder_on_track_new_gtk_button_clicked, self, 0); +#line 299 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->addnew_button)); +#line 300 "fillmore.vala" + self->priv->play_button = (_tmp26_ = g_object_ref_sink ((GtkToggleButton*) gtk_toggle_button_new ()), _g_object_unref0 (self->priv->play_button), _tmp26_); +#line 301 "fillmore.vala" + gtk_button_set_image (GTK_BUTTON (self->priv->play_button), GTK_WIDGET (_tmp27_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("camera_playback", GTK_ICON_SIZE_BUTTON)))); +#line 1097 "fillmore.c" + _g_object_unref0 (_tmp27_); +#line 302 "fillmore.vala" + g_signal_connect_object (self->priv->play_button, "toggled", (GCallback) _recorder_on_play_gtk_toggle_button_toggled, self, 0); +#line 303 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->play_button)); +#line 304 "fillmore.vala" + self->priv->record_button = (_tmp28_ = g_object_ref_sink ((GtkToggleButton*) gtk_toggle_button_new ()), _g_object_unref0 (self->priv->record_button), _tmp28_); +#line 305 "fillmore.vala" + gtk_button_set_image (GTK_BUTTON (self->priv->record_button), GTK_WIDGET (_tmp29_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("camera_video_recording", GTK_ICON_SIZE_BUTTON)))); +#line 1107 "fillmore.c" + _g_object_unref0 (_tmp29_); +#line 306 "fillmore.vala" + g_signal_connect_object (self->priv->record_button, "toggled", (GCallback) _recorder_on_record_gtk_toggle_button_toggled, self, 0); +#line 307 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->record_button)); +#line 308 "fillmore.vala" + self->priv->rewind_button = (_tmp30_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->rewind_button), _tmp30_); +#line 309 "fillmore.vala" + gtk_button_set_image (self->priv->rewind_button, GTK_WIDGET (_tmp31_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("pdf_viewer_first_page", GTK_ICON_SIZE_BUTTON)))); +#line 1117 "fillmore.c" + _g_object_unref0 (_tmp31_); +#line 310 "fillmore.vala" + g_signal_connect_object (self->priv->rewind_button, "clicked", (GCallback) _recorder_on_rewind_gtk_button_clicked, self, 0); +#line 311 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->rewind_button)); +#line 312 "fillmore.vala" + self->priv->forward_button = (_tmp32_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->forward_button), _tmp32_); +#line 313 "fillmore.vala" + gtk_button_set_image (self->priv->forward_button, GTK_WIDGET (_tmp33_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("pdf_viewer_last_page", GTK_ICON_SIZE_BUTTON)))); +#line 1127 "fillmore.c" + _g_object_unref0 (_tmp33_); +#line 314 "fillmore.vala" + g_signal_connect_object (self->priv->forward_button, "clicked", (GCallback) _recorder_on_end_gtk_button_clicked, self, 0); +#line 315 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->forward_button)); +#line 316 "fillmore.vala" + self->priv->zoomin_button = (_tmp34_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->zoomin_button), _tmp34_); +#line 317 "fillmore.vala" + gtk_button_set_image (self->priv->zoomin_button, GTK_WIDGET (_tmp35_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("pdf_zoomin", GTK_ICON_SIZE_BUTTON)))); +#line 1137 "fillmore.c" + _g_object_unref0 (_tmp35_); +#line 318 "fillmore.vala" + g_signal_connect_object (self->priv->zoomin_button, "clicked", (GCallback) _recorder_on_zoom_in_gtk_button_clicked, self, 0); +#line 319 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->zoomin_button)); +#line 320 "fillmore.vala" + self->priv->zoomout_button = (_tmp36_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->zoomout_button), _tmp36_); +#line 321 "fillmore.vala" + gtk_button_set_image (self->priv->zoomout_button, GTK_WIDGET (_tmp37_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("pdf_zoomout", GTK_ICON_SIZE_BUTTON)))); +#line 1147 "fillmore.c" + _g_object_unref0 (_tmp37_); +#line 322 "fillmore.vala" + g_signal_connect_object (self->priv->zoomout_button, "clicked", (GCallback) _recorder_on_zoom_out_gtk_button_clicked, self, 0); +#line 323 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->zoomout_button)); +#line 324 "fillmore.vala" + self->priv->volume_button = (_tmp38_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->volume_button), _tmp38_); +#line 325 "fillmore.vala" + gtk_button_set_image (self->priv->volume_button, GTK_WIDGET (_tmp39_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("statusarea_volumelevel4", GTK_ICON_SIZE_BUTTON)))); +#line 1157 "fillmore.c" + _g_object_unref0 (_tmp39_); +#line 326 "fillmore.vala" + g_signal_connect_object (self->priv->volume_button, "clicked", (GCallback) _recorder_on_volume_gtk_button_clicked, self, 0); +#line 327 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (buttons), GTK_WIDGET (self->priv->volume_button)); +#line 330 "fillmore.vala" + vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); +#line 331 "fillmore.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (menubar), FALSE, FALSE, (guint) 0); +#line 333 "fillmore.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (buttons), FALSE, FALSE, (guint) 0); +#line 335 "fillmore.vala" + main_view = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); +#line 337 "fillmore.vala" + self->priv->timeline_library_pane = (_tmp40_ = g_object_ref_sink ((GtkHPaned*) gtk_hpaned_new ()), _g_object_unref0 (self->priv->timeline_library_pane), _tmp40_); +#line 338 "fillmore.vala" + gtk_paned_set_position (GTK_PANED (self->priv->timeline_library_pane), MODEL_PROJECT (self->project)->library_width); +#line 339 "fillmore.vala" + gtk_paned_add1 (GTK_PANED (self->priv->timeline_library_pane), GTK_WIDGET (hbox)); +#line 340 "fillmore.vala" + GTK_PANED (self->priv->timeline_library_pane)->child1_resize = (guint) 1; +#line 341 "fillmore.vala" + gtk_paned_add2 (GTK_PANED (self->priv->timeline_library_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 342 "fillmore.vala" + GTK_PANED (self->priv->timeline_library_pane)->child2_resize = (guint) 0; +#line 343 "fillmore.vala" + g_signal_connect_object (GTK_PANED (self->priv->timeline_library_pane)->child1, "size-allocate", (GCallback) _recorder_on_library_size_allocate_gtk_widget_size_allocate, self, 0); +#line 346 "fillmore.vala" + gtk_box_pack_start (GTK_BOX (main_view), GTK_WIDGET (self->priv->timeline_library_pane), TRUE, TRUE, (guint) 0); +#line 349 "fillmore.vala" + self->priv->scrollwin = (_tmp41_ = g_object_ref_sink ((HildonPannableArea*) hildon_pannable_area_new ()), _g_object_unref0 (self->priv->scrollwin), _tmp41_); +#line 350 "fillmore.vala" + hildon_pannable_area_add_with_viewport (self->priv->scrollwin, GTK_WIDGET (main_view)); +#line 351 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (vbox), GTK_WIDGET (self->priv->scrollwin)); +#line 353 "fillmore.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (vbox)); +#line 355 "fillmore.vala" + recorder_on_view_library (self); +#line 357 "fillmore.vala" + save_graph = GTK_MENU_ITEM (recorder_get_widget (self, self->priv->manager, "/MenuBar/HelpMenu/SaveGraph")); +#line 360 "fillmore.vala" + if (!do_print_graph) { +#line 360 "fillmore.vala" + _tmp42_ = save_graph != NULL; +#line 1203 "fillmore.c" + } else { +#line 360 "fillmore.vala" + _tmp42_ = FALSE; +#line 1207 "fillmore.c" + } +#line 360 "fillmore.vala" + if (_tmp42_) { +#line 361 "fillmore.vala" + gtk_object_destroy (GTK_OBJECT (save_graph)); +#line 1213 "fillmore.c" + } +#line 364 "fillmore.vala" + gtk_window_add_accel_group (GTK_WINDOW (self), gtk_ui_manager_get_accel_group (self->priv->manager)); +#line 365 "fillmore.vala" + gtk_widget_grab_focus (GTK_WIDGET (self->timeline)); +#line 366 "fillmore.vala" + g_signal_connect_object (GTK_WIDGET (self), "delete-event", (GCallback) _recorder_on_delete_event_gtk_widget_delete_event, self, 0); +#line 367 "fillmore.vala" + self->priv->loading = TRUE; +#line 368 "fillmore.vala" + model_project_load (MODEL_PROJECT (self->project), project_file); +#line 369 "fillmore.vala" + if (project_file == NULL) { +#line 370 "fillmore.vala" + recorder_default_track_set (self); +#line 371 "fillmore.vala" + self->priv->loading = FALSE; +#line 1231 "fillmore.c" + } +#line 373 "fillmore.vala" + gst_element_set_state (GST_ELEMENT (MODEL_PROJECT (self->project)->media_engine->pipeline), GST_STATE_PAUSED); +#line 1235 "fillmore.c" + _g_object_unref0 (menubar); + _g_object_unref0 (toolbar); + _g_object_unref0 (hbox); + _g_object_unref0 (buttons); + _g_object_unref0 (vbox); + _g_object_unref0 (main_view); + _g_object_unref0 (save_graph); + return self; +} + + +#line 207 "fillmore.vala" +Recorder* recorder_new (const char* project_file, GError** error) { +#line 207 "fillmore.vala" + return recorder_construct (TYPE_RECORDER, project_file, error); +#line 1251 "fillmore.c" +} + + +#line 376 "fillmore.vala" +static void recorder_default_track_set (Recorder* self) { +#line 1257 "fillmore.c" + ModelAudioTrack* _tmp1_; + char* _tmp0_; + ModelTrack* _tmp2_; +#line 376 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 377 "fillmore.vala" + model_project_add_track (MODEL_PROJECT (self->project), MODEL_TRACK (_tmp1_ = model_audio_track_new (MODEL_PROJECT (self->project), _tmp0_ = recorder_get_default_track_name (self)))); +#line 1265 "fillmore.c" + _g_object_unref0 (_tmp1_); + _g_free0 (_tmp0_); +#line 378 "fillmore.vala" + model_track_set_selected (_tmp2_ = (ModelTrack*) gee_abstract_list_get (GEE_ABSTRACT_LIST (MODEL_PROJECT (self->project)->tracks), 0), TRUE); +#line 1270 "fillmore.c" + _g_object_unref0 (_tmp2_); +} + + +#line 381 "fillmore.vala" +static gint recorder_default_track_number_compare (void* a, void* b) { +#line 1277 "fillmore.c" + gint result = 0; + const char* s1; + const char* s2; + gint i; + gint j; +#line 382 "fillmore.vala" + s1 = (const char*) a; +#line 383 "fillmore.vala" + s2 = (const char*) b; +#line 384 "fillmore.vala" + i = -1; +#line 385 "fillmore.vala" + j = -1; +#line 386 "fillmore.vala" + sscanf (s1, "track %d", &i); +#line 387 "fillmore.vala" + sscanf (s2, "track %d", &j); +#line 388 "fillmore.vala" + g_assert (i > 0); +#line 389 "fillmore.vala" + g_assert (j > 0); +#line 390 "fillmore.vala" + if (i == j) { +#line 1301 "fillmore.c" + result = 0; +#line 391 "fillmore.vala" + return result; +#line 1305 "fillmore.c" + } else { +#line 392 "fillmore.vala" + if (i < j) { +#line 1309 "fillmore.c" + result = -1; +#line 393 "fillmore.vala" + return result; +#line 1313 "fillmore.c" + } else { + result = 1; +#line 395 "fillmore.vala" + return result; +#line 1318 "fillmore.c" + } + } +} + + +#line 381 "fillmore.vala" +static gint _recorder_default_track_number_compare_gcompare_func (void* a, void* b) { +#line 1326 "fillmore.c" + gint result; + result = recorder_default_track_number_compare (a, b); + return result; +} + + +static void _g_list_free_g_free (GList* self) { + g_list_foreach (self, (GFunc) g_free, NULL); + g_list_free (self); +} + + +#line 399 "fillmore.vala" +char* recorder_get_default_track_name (Recorder* self) { +#line 1341 "fillmore.c" + char* result = NULL; + GList* default_track_names; + gint i; +#line 399 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), NULL); +#line 400 "fillmore.vala" + default_track_names = NULL; +#line 1349 "fillmore.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 401 "fillmore.vala" + while (TRUE) { +#line 1355 "fillmore.c" + ModelTrack* track; +#line 401 "fillmore.vala" + if (!gee_iterator_next (_track_it)) { +#line 401 "fillmore.vala" + break; +#line 1361 "fillmore.c" + } +#line 401 "fillmore.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 402 "fillmore.vala" + if (g_str_has_prefix (track->display_name, "track ")) { +#line 403 "fillmore.vala" + default_track_names = g_list_append (default_track_names, g_strdup (track->display_name)); +#line 1369 "fillmore.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 406 "fillmore.vala" + default_track_names = g_list_sort (default_track_names, _recorder_default_track_number_compare_gcompare_func); +#line 408 "fillmore.vala" + i = 1; +#line 1379 "fillmore.c" + { + GList* s_collection; + GList* s_it; +#line 409 "fillmore.vala" + s_collection = default_track_names; +#line 1385 "fillmore.c" + for (s_it = s_collection; s_it != NULL; s_it = s_it->next) { + char* s; +#line 409 "fillmore.vala" + s = g_strdup ((const char*) s_it->data); +#line 1390 "fillmore.c" + { + char* track_name; +#line 410 "fillmore.vala" + track_name = g_strdup_printf ("track %d", i); +#line 411 "fillmore.vala" + if (_vala_strcmp0 (s, track_name) != 0) { +#line 1397 "fillmore.c" + result = track_name; + _g_free0 (s); + __g_list_free_g_free0 (default_track_names); +#line 412 "fillmore.vala" + return result; +#line 1403 "fillmore.c" + } +#line 414 "fillmore.vala" + i = i + 1; +#line 1407 "fillmore.c" + _g_free0 (s); + _g_free0 (track_name); + } + } + } + result = g_strdup_printf ("track %d", i); + __g_list_free_g_free0 (default_track_names); +#line 416 "fillmore.vala" + return result; +#line 1417 "fillmore.c" +} + + +#line 419 "fillmore.vala" +static GtkWidget* recorder_get_widget (Recorder* self, GtkUIManager* manager, const char* name) { +#line 1423 "fillmore.c" + GtkWidget* result = NULL; + GtkWidget* widget; +#line 419 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), NULL); +#line 419 "fillmore.vala" + g_return_val_if_fail (GTK_IS_UI_MANAGER (manager), NULL); +#line 419 "fillmore.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 420 "fillmore.vala" + widget = _g_object_ref0 (gtk_ui_manager_get_widget (manager, name)); +#line 421 "fillmore.vala" + if (widget == NULL) { +#line 422 "fillmore.vala" + g_error ("fillmore.vala:422: can't find widget"); +#line 1438 "fillmore.c" + } + result = widget; +#line 423 "fillmore.vala" + return result; +#line 1443 "fillmore.c" +} + + +#line 426 "fillmore.vala" +static void recorder_on_track_move_up (Recorder* self) { +#line 1449 "fillmore.c" + gint index; + gint position; + gint track_ct; +#line 426 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 427 "fillmore.vala" + index = -1; +#line 428 "fillmore.vala" + position = 0; +#line 429 "fillmore.vala" + track_ct = gee_collection_get_size (GEE_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 430 "fillmore.vala" + if (0 < track_ct) { +#line 1463 "fillmore.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 431 "fillmore.vala" + while (TRUE) { +#line 1469 "fillmore.c" + ModelTrack* track; + ModelTrack* _tmp0_; + gboolean _tmp1_; +#line 431 "fillmore.vala" + if (!gee_iterator_next (_track_it)) { +#line 431 "fillmore.vala" + break; +#line 1477 "fillmore.c" + } +#line 431 "fillmore.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 432 "fillmore.vala" + index = index + 1; +#line 433 "fillmore.vala" + if ((_tmp1_ = (_tmp0_ = recorder_selected_track (self)) == track, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 434 "fillmore.vala" + position = index; +#line 1487 "fillmore.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 437 "fillmore.vala" + if (0 < position) { +#line 1495 "fillmore.c" + ModelTrack* _tmp2_; + ModelAudioTrack* track; +#line 438 "fillmore.vala" + track = (_tmp2_ = recorder_selected_track (self), MODEL_IS_AUDIO_TRACK (_tmp2_) ? ((ModelAudioTrack*) _tmp2_) : NULL); +#line 439 "fillmore.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self->project)->tracks), MODEL_TRACK (track)); +#line 440 "fillmore.vala" + gee_abstract_list_insert (GEE_ABSTRACT_LIST (MODEL_PROJECT (self->project)->tracks), position - 1, MODEL_TRACK (track)); +#line 1504 "fillmore.c" + _g_object_unref0 (track); + } + } +} + + +#line 444 "fillmore.vala" +static void recorder_on_track_move_down (Recorder* self) { +#line 1513 "fillmore.c" + gint index; + gint position; + gint track_ct; +#line 444 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 446 "fillmore.vala" + index = -1; +#line 447 "fillmore.vala" + position = 0; +#line 448 "fillmore.vala" + track_ct = gee_collection_get_size (GEE_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 449 "fillmore.vala" + if (0 < track_ct) { +#line 1527 "fillmore.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 450 "fillmore.vala" + while (TRUE) { +#line 1533 "fillmore.c" + ModelTrack* track; + ModelTrack* _tmp0_; + gboolean _tmp1_; +#line 450 "fillmore.vala" + if (!gee_iterator_next (_track_it)) { +#line 450 "fillmore.vala" + break; +#line 1541 "fillmore.c" + } +#line 450 "fillmore.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 451 "fillmore.vala" + index = index + 1; +#line 452 "fillmore.vala" + if ((_tmp1_ = (_tmp0_ = recorder_selected_track (self)) == track, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 453 "fillmore.vala" + position = index; +#line 1551 "fillmore.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 456 "fillmore.vala" + if ((track_ct - 1) > position) { +#line 1559 "fillmore.c" + ModelTrack* _tmp2_; + ModelAudioTrack* audio_track; +#line 457 "fillmore.vala" + audio_track = (_tmp2_ = recorder_selected_track (self), MODEL_IS_AUDIO_TRACK (_tmp2_) ? ((ModelAudioTrack*) _tmp2_) : NULL); +#line 458 "fillmore.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self->project)->tracks), MODEL_TRACK (audio_track)); +#line 459 "fillmore.vala" + gee_abstract_list_insert (GEE_ABSTRACT_LIST (MODEL_PROJECT (self->project)->tracks), position + 1, MODEL_TRACK (audio_track)); +#line 1568 "fillmore.c" + _g_object_unref0 (audio_track); + } + } +} + + +#line 463 "fillmore.vala" +static void recorder_on_tracks_scroll_up (Recorder* self) { +#line 1577 "fillmore.c" + gint _tmp0_ = 0; +#line 463 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 472 "fillmore.vala" + if (self->priv->scrollwin_pos_y < 4) { +#line 472 "fillmore.vala" + _tmp0_ = 0; +#line 1585 "fillmore.c" + } else { +#line 472 "fillmore.vala" + _tmp0_ = 64; +#line 1589 "fillmore.c" + } +#line 472 "fillmore.vala" + self->priv->scrollwin_pos_y = self->priv->scrollwin_pos_y - _tmp0_; +#line 473 "fillmore.vala" + hildon_pannable_area_scroll_to (self->priv->scrollwin, 0, self->priv->scrollwin_pos_y); +#line 1595 "fillmore.c" +} + + +#line 475 "fillmore.vala" +static void recorder_on_tracks_scroll_down (Recorder* self) { +#line 475 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 484 "fillmore.vala" + self->priv->scrollwin_pos_y = self->priv->scrollwin_pos_y + 64; +#line 485 "fillmore.vala" + hildon_pannable_area_scroll_to (self->priv->scrollwin, 0, self->priv->scrollwin_pos_y); +#line 1607 "fillmore.c" +} + + +#line 488 "fillmore.vala" +static void recorder_set_sensitive_group (Recorder* self, GtkActionGroup* group, const char* group_path, gboolean sensitive) { +#line 1613 "fillmore.c" + GtkAction* action; +#line 488 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 488 "fillmore.vala" + g_return_if_fail (GTK_IS_ACTION_GROUP (group)); +#line 488 "fillmore.vala" + g_return_if_fail (group_path != NULL); +#line 489 "fillmore.vala" + action = _g_object_ref0 (gtk_action_group_get_action (group, group_path)); +#line 490 "fillmore.vala" + gtk_action_set_sensitive (action, sensitive); +#line 1625 "fillmore.c" + _g_object_unref0 (action); +} + + +#line 493 "fillmore.vala" +static void recorder_on_track_changed (Recorder* self) { +#line 493 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 494 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_changed"); +#line 495 "fillmore.vala" + recorder_update_menu (self); +#line 1638 "fillmore.c" +} + + +#line 498 "fillmore.vala" +static void recorder_on_position_changed (Recorder* self) { +#line 498 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 499 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_position_changed"); +#line 500 "fillmore.vala" + recorder_update_menu (self); +#line 1650 "fillmore.c" +} + + +#line 516 "fillmore.vala" +static void _recorder_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self) { +#line 1656 "fillmore.c" + recorder_on_clip_added (self, clip); +} + + +#line 522 "fillmore.vala" +static void _recorder_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self) { +#line 1663 "fillmore.c" + recorder_on_clip_removed (self, clip); +} + + +#line 528 "fillmore.vala" +static void _recorder_on_track_selection_changed_model_track_track_selection_changed (ModelTrack* _sender, ModelTrack* track, gpointer self) { +#line 1670 "fillmore.c" + recorder_on_track_selection_changed (self, track); +} + + +#line 503 "fillmore.vala" +static void recorder_on_track_added (Recorder* self, ModelTrack* track) { +#line 503 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 503 "fillmore.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 504 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_added"); +#line 505 "fillmore.vala" + recorder_update_menu (self); +#line 506 "fillmore.vala" + g_signal_connect_object (track, "clip-added", (GCallback) _recorder_on_clip_added_model_track_clip_added, self, 0); +#line 507 "fillmore.vala" + g_signal_connect_object (track, "clip-removed", (GCallback) _recorder_on_clip_removed_model_track_clip_removed, self, 0); +#line 508 "fillmore.vala" + g_signal_connect_object (track, "track-selection-changed", (GCallback) _recorder_on_track_selection_changed_model_track_track_selection_changed, self, 0); +#line 1691 "fillmore.c" +} + + +#line 511 "fillmore.vala" +static void recorder_on_track_removed (Recorder* self, ModelTrack* unused) { +#line 511 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 511 "fillmore.vala" + g_return_if_fail (MODEL_IS_TRACK (unused)); +#line 512 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_removed"); +#line 513 "fillmore.vala" + recorder_update_menu (self); +#line 1705 "fillmore.c" +} + + +#line 538 "fillmore.vala" +static void _recorder_on_clip_moved_model_clip_moved (ModelClip* _sender, ModelClip* clip, gpointer self) { +#line 1711 "fillmore.c" + recorder_on_clip_moved (self, clip); +} + + +#line 516 "fillmore.vala" +static void recorder_on_clip_added (Recorder* self, ModelClip* clip) { +#line 516 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 516 "fillmore.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 517 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_added"); +#line 518 "fillmore.vala" + g_signal_connect_object (clip, "moved", (GCallback) _recorder_on_clip_moved_model_clip_moved, self, 0); +#line 519 "fillmore.vala" + recorder_update_menu (self); +#line 1728 "fillmore.c" +} + + +#line 522 "fillmore.vala" +static void recorder_on_clip_removed (Recorder* self, ModelClip* clip) { +#line 1734 "fillmore.c" + guint _tmp0_; +#line 522 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 522 "fillmore.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 523 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_removed"); +#line 524 "fillmore.vala" + g_signal_parse_name ("moved", MODEL_TYPE_CLIP, &_tmp0_, NULL, FALSE); +#line 524 "fillmore.vala" + g_signal_handlers_disconnect_matched (clip, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _recorder_on_clip_moved_model_clip_moved, self); +#line 525 "fillmore.vala" + recorder_update_menu (self); +#line 1748 "fillmore.c" +} + + +#line 528 "fillmore.vala" +static void recorder_on_track_selection_changed (Recorder* self, ModelTrack* track) { +#line 528 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 528 "fillmore.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 529 "fillmore.vala" + if (model_track_get_is_selected (track)) { +#line 1760 "fillmore.c" + { + GeeIterator* _t_it; + _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 530 "fillmore.vala" + while (TRUE) { +#line 1766 "fillmore.c" + ModelTrack* t; +#line 530 "fillmore.vala" + if (!gee_iterator_next (_t_it)) { +#line 530 "fillmore.vala" + break; +#line 1772 "fillmore.c" + } +#line 530 "fillmore.vala" + t = (ModelTrack*) gee_iterator_get (_t_it); +#line 531 "fillmore.vala" + if (t != track) { +#line 532 "fillmore.vala" + model_track_set_selected (t, FALSE); +#line 1780 "fillmore.c" + } + _g_object_unref0 (t); + } + _g_object_unref0 (_t_it); + } + } +} + + +#line 538 "fillmore.vala" +static void recorder_on_clip_moved (Recorder* self, ModelClip* clip) { +#line 538 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 538 "fillmore.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 539 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_moved"); +#line 540 "fillmore.vala" + recorder_update_menu (self); +#line 1800 "fillmore.c" +} + + +#line 543 "fillmore.vala" +static void recorder_on_drag_data_received (Recorder* self, GtkWidget* w, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time) { +#line 543 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 543 "fillmore.vala" + g_return_if_fail (GTK_IS_WIDGET (w)); +#line 543 "fillmore.vala" + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); +#line 543 "fillmore.vala" + g_return_if_fail (selection_data != NULL); +#line 545 "fillmore.vala" + gtk_window_present (GTK_WINDOW (self)); +#line 1816 "fillmore.c" +} + + +#line 548 "fillmore.vala" +static void recorder_update_menu (Recorder* self) { +#line 1822 "fillmore.c" + gboolean library_selected; + gboolean selected; + gboolean playhead_on_clip; + gint number_of_tracks; + gboolean is_stopped; + gboolean one_selected; + gboolean _tmp1_ = FALSE; + gboolean _tmp2_ = FALSE; + gboolean _tmp3_ = FALSE; + gboolean _tmp4_ = FALSE; + gboolean _tmp5_ = FALSE; + gboolean _tmp6_ = FALSE; + gboolean _tmp7_ = FALSE; + gboolean _tmp8_ = FALSE; + gboolean _tmp9_ = FALSE; + gboolean _tmp10_ = FALSE; + gboolean _tmp11_ = FALSE; + gboolean _tmp12_ = FALSE; + gboolean _tmp13_ = FALSE; +#line 548 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 549 "fillmore.vala" + library_selected = clip_library_view_has_selection (self->priv->library); +#line 550 "fillmore.vala" + selected = time_line_is_clip_selected (self->timeline); +#line 551 "fillmore.vala" + playhead_on_clip = model_project_playhead_on_clip (MODEL_PROJECT (self->project)); +#line 552 "fillmore.vala" + number_of_tracks = gee_collection_get_size (GEE_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 553 "fillmore.vala" + is_stopped = transport_delegate_is_stopped (TRANSPORT_DELEGATE (self)); +#line 554 "fillmore.vala" + one_selected = FALSE; +#line 555 "fillmore.vala" + if (library_selected) { +#line 1858 "fillmore.c" + GeeArrayList* _tmp0_; +#line 556 "fillmore.vala" + one_selected = gee_collection_get_size (GEE_COLLECTION (_tmp0_ = clip_library_view_get_selected_files (self->priv->library))) == 1; +#line 1862 "fillmore.c" + _g_object_unref0 (_tmp0_); + } else { +#line 557 "fillmore.vala" + if (selected) { +#line 558 "fillmore.vala" + one_selected = gee_collection_get_size (GEE_COLLECTION (self->timeline->selected_clips)) == 1; +#line 1869 "fillmore.c" + } + } +#line 562 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "NewProject", is_stopped); +#line 563 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Open", is_stopped); +#line 564 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Save", is_stopped); +#line 565 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "SaveAs", is_stopped); +#line 566 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Settings", is_stopped); +#line 567 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Export", model_project_can_export (MODEL_PROJECT (self->project))); +#line 568 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Quit", !model_project_transport_is_recording (MODEL_PROJECT (self->project))); +#line 571 "fillmore.vala" + if (is_stopped) { +#line 571 "fillmore.vala" + _tmp1_ = model_undo_manager_get_can_undo (MODEL_PROJECT (self->project)->undo_manager); +#line 1890 "fillmore.c" + } else { +#line 571 "fillmore.vala" + _tmp1_ = FALSE; +#line 1894 "fillmore.c" + } +#line 571 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Undo", _tmp1_); +#line 572 "fillmore.vala" + if (is_stopped) { +#line 572 "fillmore.vala" + _tmp2_ = selected; +#line 1902 "fillmore.c" + } else { +#line 572 "fillmore.vala" + _tmp2_ = FALSE; +#line 1906 "fillmore.c" + } +#line 572 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Copy", _tmp2_); +#line 573 "fillmore.vala" + if (is_stopped) { +#line 573 "fillmore.vala" + _tmp3_ = selected; +#line 1914 "fillmore.c" + } else { +#line 573 "fillmore.vala" + _tmp3_ = FALSE; +#line 1918 "fillmore.c" + } +#line 573 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Cut", _tmp3_); +#line 574 "fillmore.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->timeline->clipboard->clips)) != 0) { +#line 574 "fillmore.vala" + _tmp4_ = is_stopped; +#line 1926 "fillmore.c" + } else { +#line 574 "fillmore.vala" + _tmp4_ = FALSE; +#line 1930 "fillmore.c" + } +#line 574 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Paste", _tmp4_); +#line 575 "fillmore.vala" + if (selected) { +#line 575 "fillmore.vala" + _tmp6_ = TRUE; +#line 1938 "fillmore.c" + } else { +#line 575 "fillmore.vala" + _tmp6_ = library_selected; +#line 1942 "fillmore.c" + } +#line 575 "fillmore.vala" + if (_tmp6_) { +#line 575 "fillmore.vala" + _tmp5_ = is_stopped; +#line 1948 "fillmore.c" + } else { +#line 575 "fillmore.vala" + _tmp5_ = FALSE; +#line 1952 "fillmore.c" + } +#line 575 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Delete", _tmp5_); +#line 577 "fillmore.vala" + if (selected) { +#line 577 "fillmore.vala" + _tmp8_ = playhead_on_clip; +#line 1960 "fillmore.c" + } else { +#line 577 "fillmore.vala" + _tmp8_ = FALSE; +#line 1964 "fillmore.c" + } +#line 577 "fillmore.vala" + if (_tmp8_) { +#line 577 "fillmore.vala" + _tmp7_ = is_stopped; +#line 1970 "fillmore.c" + } else { +#line 577 "fillmore.vala" + _tmp7_ = FALSE; +#line 1974 "fillmore.c" + } +#line 576 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "SplitAtPlayhead", _tmp7_); +#line 579 "fillmore.vala" + if (selected) { +#line 579 "fillmore.vala" + _tmp10_ = playhead_on_clip; +#line 1982 "fillmore.c" + } else { +#line 579 "fillmore.vala" + _tmp10_ = FALSE; +#line 1986 "fillmore.c" + } +#line 579 "fillmore.vala" + if (_tmp10_) { +#line 579 "fillmore.vala" + _tmp9_ = is_stopped; +#line 1992 "fillmore.c" + } else { +#line 579 "fillmore.vala" + _tmp9_ = FALSE; +#line 1996 "fillmore.c" + } +#line 578 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "TrimToPlayhead", _tmp9_); +#line 580 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "ClipProperties", one_selected); +#line 583 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "ZoomProject", model_project_get_length (MODEL_PROJECT (self->project)) != 0); +#line 586 "fillmore.vala" + if (number_of_tracks > 0) { +#line 586 "fillmore.vala" + _tmp11_ = is_stopped; +#line 2008 "fillmore.c" + } else { +#line 586 "fillmore.vala" + _tmp11_ = FALSE; +#line 2012 "fillmore.c" + } +#line 586 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Rename", _tmp11_); +#line 587 "fillmore.vala" + if (number_of_tracks > 0) { +#line 587 "fillmore.vala" + _tmp12_ = is_stopped; +#line 2020 "fillmore.c" + } else { +#line 587 "fillmore.vala" + _tmp12_ = FALSE; +#line 2024 "fillmore.c" + } +#line 587 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "DeleteTrack", _tmp12_); +#line 588 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "NewTrack", is_stopped); +#line 591 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Play", TRUE); +#line 592 "fillmore.vala" + if (number_of_tracks > 0) { +#line 592 "fillmore.vala" + _tmp13_ = is_stopped; +#line 2036 "fillmore.c" + } else { +#line 592 "fillmore.vala" + _tmp13_ = FALSE; +#line 2040 "fillmore.c" + } +#line 592 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Record", _tmp13_); +#line 2044 "fillmore.c" +} + + +#line 595 "fillmore.vala" +ModelTrack* recorder_selected_track (Recorder* self) { +#line 2050 "fillmore.c" + ModelTrack* result = NULL; +#line 595 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), NULL); +#line 2054 "fillmore.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self->project)->tracks)); +#line 596 "fillmore.vala" + while (TRUE) { +#line 2060 "fillmore.c" + ModelTrack* track; +#line 596 "fillmore.vala" + if (!gee_iterator_next (_track_it)) { +#line 596 "fillmore.vala" + break; +#line 2066 "fillmore.c" + } +#line 596 "fillmore.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 597 "fillmore.vala" + if (model_track_get_is_selected (track)) { +#line 2072 "fillmore.c" + result = track; + _g_object_unref0 (_track_it); +#line 598 "fillmore.vala" + return result; +#line 2077 "fillmore.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 601 "fillmore.vala" + g_error ("fillmore.vala:601: can't find selected track"); +#line 2085 "fillmore.c" + result = NULL; +#line 602 "fillmore.vala" + return result; +#line 2089 "fillmore.c" +} + + +#line 605 "fillmore.vala" +void recorder_scroll_to_beginning (Recorder* self) { +#line 605 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 606 "fillmore.vala" + gtk_adjustment_set_value (self->priv->h_adjustment, 0.0); +#line 2099 "fillmore.c" +} + + +#line 609 "fillmore.vala" +void recorder_page_to_time (Recorder* self, gint64 time) { +#line 2105 "fillmore.c" + double location_in_window; + gint window_width; + gboolean _tmp0_ = FALSE; +#line 609 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 610 "fillmore.vala" + location_in_window = model_time_system_time_to_xpos (self->timeline->provider, time) - gtk_adjustment_get_value (self->priv->h_adjustment); +#line 611 "fillmore.vala" + window_width = GTK_WIDGET (gtk_widget_get_parent (GTK_WIDGET (self->timeline)))->allocation.width; +#line 612 "fillmore.vala" + if (location_in_window > (0.9 * window_width)) { +#line 612 "fillmore.vala" + _tmp0_ = TRUE; +#line 2119 "fillmore.c" + } else { +#line 613 "fillmore.vala" + _tmp0_ = location_in_window < (0.1 * window_width); +#line 2123 "fillmore.c" + } +#line 612 "fillmore.vala" + if (_tmp0_) { +#line 614 "fillmore.vala" + recorder_scroll_to_time (self, time); +#line 2129 "fillmore.c" + } +} + + +#line 618 "fillmore.vala" +void recorder_scroll_to_time (Recorder* self, gint64 time) { +#line 2136 "fillmore.c" + gint new_adjustment; + gint window_width; + gint max_value; +#line 618 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 619 "fillmore.vala" + new_adjustment = model_time_system_time_to_xpos (self->timeline->provider, time); +#line 620 "fillmore.vala" + window_width = GTK_WIDGET (gtk_widget_get_parent (GTK_WIDGET (self->timeline)))->allocation.width; +#line 621 "fillmore.vala" + if (new_adjustment < GTK_WIDGET (gtk_widget_get_parent (GTK_WIDGET (self->timeline)))->allocation.width) { +#line 622 "fillmore.vala" + new_adjustment = 0; +#line 2150 "fillmore.c" + } else { +#line 624 "fillmore.vala" + new_adjustment = new_adjustment - (window_width / 2); +#line 2154 "fillmore.c" + } +#line 627 "fillmore.vala" + max_value = (gint) (gtk_adjustment_get_upper (self->priv->h_adjustment) - GTK_WIDGET (self->priv->timeline_scrolled)->allocation.width); +#line 628 "fillmore.vala" + if (new_adjustment > max_value) { +#line 629 "fillmore.vala" + new_adjustment = max_value; +#line 2162 "fillmore.c" + } +#line 632 "fillmore.vala" + gtk_adjustment_set_value (self->priv->h_adjustment, (double) new_adjustment); +#line 2166 "fillmore.c" +} + + +#line 635 "fillmore.vala" +void recorder_scroll_to_end (Recorder* self) { +#line 635 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 636 "fillmore.vala" + recorder_scroll_to_time (self, model_project_get_length (MODEL_PROJECT (self->project))); +#line 2176 "fillmore.c" +} + + +#line 639 "fillmore.vala" +static gint recorder_sgn (gint x) { +#line 2182 "fillmore.c" + gint result = 0; + gint _tmp0_ = 0; +#line 640 "fillmore.vala" + if (x == 0) { +#line 2187 "fillmore.c" + result = 0; +#line 641 "fillmore.vala" + return result; +#line 2191 "fillmore.c" + } +#line 642 "fillmore.vala" + if (x < 0) { +#line 642 "fillmore.vala" + _tmp0_ = -1; +#line 2197 "fillmore.c" + } else { +#line 642 "fillmore.vala" + _tmp0_ = 1; +#line 2201 "fillmore.c" + } + result = _tmp0_; +#line 642 "fillmore.vala" + return result; +#line 2206 "fillmore.c" +} + + +#line 645 "fillmore.vala" +void recorder_scroll_toward_center (Recorder* self, gint xpos) { +#line 2212 "fillmore.c" + gint page_size; + gint diff; + gint d; + gint x; + gint max_value; +#line 645 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 646 "fillmore.vala" + if (self->priv->cursor_pos == (-1)) { +#line 647 "fillmore.vala" + self->priv->cursor_pos = xpos - ((gint) gtk_adjustment_get_value (self->priv->h_adjustment)); +#line 2224 "fillmore.c" + } +#line 652 "fillmore.vala" + page_size = (gint) gtk_adjustment_get_page_size (self->priv->h_adjustment); +#line 653 "fillmore.vala" + diff = (page_size / 2) - self->priv->cursor_pos; +#line 654 "fillmore.vala" + d = recorder_sgn (diff) * ((gint) sqrt ((double) abs (diff))); +#line 655 "fillmore.vala" + self->priv->cursor_pos = self->priv->cursor_pos + d; +#line 656 "fillmore.vala" + x = MAX (0, xpos - self->priv->cursor_pos); +#line 657 "fillmore.vala" + max_value = (gint) (gtk_adjustment_get_upper (self->priv->h_adjustment) - GTK_WIDGET (self->priv->timeline_scrolled)->allocation.width); +#line 658 "fillmore.vala" + if (x > max_value) { +#line 659 "fillmore.vala" + x = max_value; +#line 2242 "fillmore.c" + } +#line 661 "fillmore.vala" + gtk_adjustment_set_value (self->priv->h_adjustment, (double) x); +#line 2246 "fillmore.c" +} + + +#line 664 "fillmore.vala" +static gboolean recorder_real_key_press_event (GtkWidget* base, GdkEventKey* event) { +#line 2252 "fillmore.c" + Recorder * self; + gboolean result = FALSE; + self = RECORDER (base); +#line 665 "fillmore.vala" + switch ((*event).keyval) { +#line 2258 "fillmore.c" + case GDK_KP_Enter: + case GDK_Return: + { +#line 668 "fillmore.vala" + if (model_project_transport_is_recording (MODEL_PROJECT (self->project))) { +#line 669 "fillmore.vala" + break; +#line 2266 "fillmore.c" + } +#line 671 "fillmore.vala" + if (((*event).state & GDK_SHIFT_ALT_CONTROL_MASK) != 0) { +#line 2270 "fillmore.c" + result = GTK_WIDGET_CLASS (recorder_parent_class)->key_press_event (GTK_WIDGET (GTK_WINDOW (self)), event); +#line 672 "fillmore.vala" + return result; +#line 2274 "fillmore.c" + } +#line 673 "fillmore.vala" + recorder_on_rewind (self); +#line 674 "fillmore.vala" + break; +#line 2280 "fillmore.c" + } + case GDK_Left: + { +#line 676 "fillmore.vala" + if (model_project_transport_is_recording (MODEL_PROJECT (self->project))) { +#line 677 "fillmore.vala" + break; +#line 2288 "fillmore.c" + } +#line 679 "fillmore.vala" + if (((*event).state & GDK_CONTROL_MASK) != 0) { +#line 680 "fillmore.vala" + model_project_go_previous (MODEL_PROJECT (self->project)); +#line 2294 "fillmore.c" + } else { +#line 682 "fillmore.vala" + view_media_engine_go (MODEL_PROJECT (self->project)->media_engine, model_project_transport_get_position (MODEL_PROJECT (self->project)) - GST_SECOND); +#line 2298 "fillmore.c" + } +#line 684 "fillmore.vala" + recorder_page_to_time (self, model_project_transport_get_position (MODEL_PROJECT (self->project))); +#line 685 "fillmore.vala" + break; +#line 2304 "fillmore.c" + } + case GDK_Right: + { +#line 687 "fillmore.vala" + if (model_project_transport_is_recording (MODEL_PROJECT (self->project))) { +#line 688 "fillmore.vala" + break; +#line 2312 "fillmore.c" + } +#line 690 "fillmore.vala" + if (((*event).state & GDK_CONTROL_MASK) != 0) { +#line 691 "fillmore.vala" + model_project_go_next (MODEL_PROJECT (self->project)); +#line 2318 "fillmore.c" + } else { +#line 693 "fillmore.vala" + view_media_engine_go (MODEL_PROJECT (self->project)->media_engine, model_project_transport_get_position (MODEL_PROJECT (self->project)) + GST_SECOND); +#line 2322 "fillmore.c" + } +#line 695 "fillmore.vala" + recorder_page_to_time (self, model_project_transport_get_position (MODEL_PROJECT (self->project))); +#line 696 "fillmore.vala" + break; +#line 2328 "fillmore.c" + } + case GDK_KP_Add: + case GDK_equal: + case GDK_plus: + { +#line 700 "fillmore.vala" + recorder_on_zoom_in (self); +#line 701 "fillmore.vala" + break; +#line 2338 "fillmore.c" + } + case GDK_KP_Subtract: + case GDK_minus: + case GDK_underscore: + { +#line 705 "fillmore.vala" + recorder_on_zoom_out (self); +#line 706 "fillmore.vala" + break; +#line 2348 "fillmore.c" + } + default: + { + result = GTK_WIDGET_CLASS (recorder_parent_class)->key_press_event (GTK_WIDGET (GTK_WINDOW (self)), event); +#line 708 "fillmore.vala" + return result; +#line 2355 "fillmore.c" + } + } + result = TRUE; +#line 710 "fillmore.vala" + return result; +#line 2361 "fillmore.c" +} + + +#line 714 "fillmore.vala" +static void recorder_on_export (Recorder* self) { +#line 2367 "fillmore.c" + GError * _inner_error_; + char* filename; +#line 714 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 2372 "fillmore.c" + _inner_error_ = NULL; +#line 715 "fillmore.vala" + filename = NULL; +#line 716 "fillmore.vala" + if (dialog_utils_save (GTK_WINDOW (self), "Export", FALSE, RECORDER_export_filters, G_N_ELEMENTS (RECORDER_export_filters), &filename)) { +#line 2378 "fillmore.c" + { + MultiFileProgress* _tmp0_; + GstCaps* _tmp1_; + ViewOggVorbisExport* _tmp2_; + ViewOggVorbisExport* _tmp3_; + ViewOggVorbisExport* _tmp4_; +#line 718 "fillmore.vala" + _tmp0_ = g_object_ref_sink (multi_file_progress_new (GTK_WINDOW (self), 1, "Export", MULTI_FILE_PROGRESS_INTERFACE (MODEL_PROJECT (self->project)->media_engine))); +#line 2387 "fillmore.c" + _g_object_unref0 (_tmp0_); +#line 719 "fillmore.vala" + view_media_engine_disconnect_output (MODEL_PROJECT (self->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_output)); +#line 720 "fillmore.vala" + _tmp3_ = (_tmp2_ = view_ogg_vorbis_export_new (VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio, filename, _tmp1_ = view_media_engine_get_project_audio_export_caps (MODEL_PROJECT (self->project)->media_engine), &_inner_error_), _gst_caps_unref0 (_tmp1_), _tmp2_); +#line 2393 "fillmore.c" + if (_inner_error_ != NULL) { + goto __catch5_g_error; + } +#line 720 "fillmore.vala" + self->priv->audio_export = (_tmp4_ = _tmp3_, _g_object_unref0 (self->priv->audio_export), _tmp4_); +#line 722 "fillmore.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_export)); +#line 723 "fillmore.vala" + view_media_engine_start_export (MODEL_PROJECT (self->project)->media_engine, filename); +#line 2403 "fillmore.c" + } + goto __finally5; + __catch5_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 725 "fillmore.vala" + recorder_do_error_dialog ("Could not export file", e->message); +#line 2414 "fillmore.c" + _g_error_free0 (e); + } + } + __finally5: + if (_inner_error_ != NULL) { + _g_free0 (filename); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + _g_free0 (filename); +} + + +#line 730 "fillmore.vala" +static void recorder_on_post_export (Recorder* self, gboolean canceled) { +#line 2432 "fillmore.c" + ViewOggVorbisExport* _tmp1_; +#line 730 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 731 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_post_export"); +#line 732 "fillmore.vala" + view_media_engine_disconnect_output (MODEL_PROJECT (self->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_export)); +#line 733 "fillmore.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_output)); +#line 735 "fillmore.vala" + if (canceled) { +#line 2444 "fillmore.c" + char* _tmp0_; +#line 736 "fillmore.vala" + g_remove (_tmp0_ = view_ogg_vorbis_export_get_filename (self->priv->audio_export)); +#line 2448 "fillmore.c" + _g_free0 (_tmp0_); + } +#line 739 "fillmore.vala" + self->priv->audio_export = (_tmp1_ = NULL, _g_object_unref0 (self->priv->audio_export), _tmp1_); +#line 2453 "fillmore.c" +} + + +#line 742 "fillmore.vala" +static void _recorder_on_project_new_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self) { +#line 2459 "fillmore.c" + recorder_on_project_new_finished_closing (self, project_did_close); +} + + +#line 742 "fillmore.vala" +static void recorder_on_project_new_finished_closing (Recorder* self, gboolean project_did_close) { +#line 2466 "fillmore.c" + guint _tmp0_; + guint _tmp1_; +#line 742 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 743 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_project_new_finished_closing"); +#line 744 "fillmore.vala" + g_signal_parse_name ("closed", MODEL_TYPE_PROJECT, &_tmp0_, NULL, FALSE); +#line 744 "fillmore.vala" + g_signal_handlers_disconnect_matched (MODEL_PROJECT (self->project), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _recorder_on_project_close_model_project_closed, self); +#line 745 "fillmore.vala" + g_signal_parse_name ("finished-closing", TYPE_RECORDER, &_tmp1_, NULL, FALSE); +#line 745 "fillmore.vala" + g_signal_handlers_disconnect_matched (self, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _recorder_on_project_new_finished_closing_recorder_finished_closing, self); +#line 746 "fillmore.vala" + if (project_did_close) { +#line 747 "fillmore.vala" + view_media_engine_set_play_state (MODEL_PROJECT (self->project)->media_engine, PLAY_STATE_LOADING); +#line 748 "fillmore.vala" + model_project_load (MODEL_PROJECT (self->project), NULL); +#line 749 "fillmore.vala" + recorder_default_track_set (self); +#line 750 "fillmore.vala" + gst_element_set_state (GST_ELEMENT (MODEL_PROJECT (self->project)->media_engine->pipeline), GST_STATE_PAUSED); +#line 751 "fillmore.vala" + model_undo_manager_reset (MODEL_PROJECT (self->project)->undo_manager); +#line 2493 "fillmore.c" + } +} + + +#line 755 "fillmore.vala" +static void recorder_on_project_new (Recorder* self) { +#line 755 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 756 "fillmore.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->priv->load_errors)); +#line 757 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "closed", (GCallback) _recorder_on_project_close_model_project_closed, self, 0); +#line 758 "fillmore.vala" + g_signal_connect_object (self, "finished-closing", (GCallback) _recorder_on_project_new_finished_closing_recorder_finished_closing, self, 0); +#line 759 "fillmore.vala" + model_project_close (MODEL_PROJECT (self->project)); +#line 2510 "fillmore.c" +} + + +#line 762 "fillmore.vala" +static void _recorder_on_project_open_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self) { +#line 2516 "fillmore.c" + recorder_on_project_open_finished_closing (self, project_did_close); +} + + +static void _g_slist_free_g_free (GSList* self) { + g_slist_foreach (self, (GFunc) g_free, NULL); + g_slist_free (self); +} + + +#line 762 "fillmore.vala" +static void recorder_on_project_open_finished_closing (Recorder* self, gboolean project_did_close) { +#line 2529 "fillmore.c" + guint _tmp0_; + guint _tmp1_; +#line 762 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 763 "fillmore.vala" + g_signal_parse_name ("closed", MODEL_TYPE_PROJECT, &_tmp0_, NULL, FALSE); +#line 763 "fillmore.vala" + g_signal_handlers_disconnect_matched (MODEL_PROJECT (self->project), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _recorder_on_project_close_model_project_closed, self); +#line 764 "fillmore.vala" + g_signal_parse_name ("finished-closing", TYPE_RECORDER, &_tmp1_, NULL, FALSE); +#line 764 "fillmore.vala" + g_signal_handlers_disconnect_matched (self, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _recorder_on_project_open_finished_closing_recorder_finished_closing, self); +#line 765 "fillmore.vala" + if (project_did_close) { +#line 2544 "fillmore.c" + GSList* filenames; + GSList* _tmp4_; + gboolean _tmp3_; + GSList* _tmp2_ = NULL; + filenames = NULL; +#line 767 "fillmore.vala" + if ((_tmp3_ = dialog_utils_open (GTK_WINDOW (self), RECORDER_filters, G_N_ELEMENTS (RECORDER_filters), FALSE, FALSE, &_tmp2_), filenames = (_tmp4_ = _tmp2_, __g_slist_free_g_free0 (filenames), _tmp4_), _tmp3_)) { +#line 768 "fillmore.vala" + self->priv->loading = TRUE; +#line 769 "fillmore.vala" + model_project_load (MODEL_PROJECT (self->project), (const char*) filenames->data); +#line 2556 "fillmore.c" + } + __g_slist_free_g_free0 (filenames); + } +} + + +#line 774 "fillmore.vala" +static void recorder_on_project_open (Recorder* self) { +#line 774 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 775 "fillmore.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->priv->load_errors)); +#line 776 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "closed", (GCallback) _recorder_on_project_close_model_project_closed, self, 0); +#line 777 "fillmore.vala" + g_signal_connect_object (self, "finished-closing", (GCallback) _recorder_on_project_open_finished_closing_recorder_finished_closing, self, 0); +#line 778 "fillmore.vala" + model_project_close (MODEL_PROJECT (self->project)); +#line 2575 "fillmore.c" +} + + +#line 781 "fillmore.vala" +static void recorder_on_project_save_as (Recorder* self) { +#line 781 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 782 "fillmore.vala" + recorder_save_dialog (self); +#line 2585 "fillmore.c" +} + + +#line 785 "fillmore.vala" +static void recorder_on_project_save (Recorder* self) { +#line 785 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 786 "fillmore.vala" + recorder_do_save (self); +#line 2595 "fillmore.c" +} + + +#line 789 "fillmore.vala" +static void _recorder_on_save_new_file_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self) { +#line 2601 "fillmore.c" + recorder_on_save_new_file_finished_closing (self, project_did_close); +} + + +#line 789 "fillmore.vala" +static void recorder_on_save_new_file_finished_closing (Recorder* self, gboolean did_close) { +#line 2608 "fillmore.c" + guint _tmp0_; + guint _tmp1_; + char* _tmp2_; +#line 789 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 790 "fillmore.vala" + g_signal_parse_name ("closed", MODEL_TYPE_PROJECT, &_tmp0_, NULL, FALSE); +#line 790 "fillmore.vala" + g_signal_handlers_disconnect_matched (MODEL_PROJECT (self->project), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _recorder_on_project_close_model_project_closed, self); +#line 791 "fillmore.vala" + g_signal_parse_name ("finished-closing", TYPE_RECORDER, &_tmp1_, NULL, FALSE); +#line 791 "fillmore.vala" + g_signal_handlers_disconnect_matched (self, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _recorder_on_save_new_file_finished_closing_recorder_finished_closing, self); +#line 792 "fillmore.vala" + model_project_load (MODEL_PROJECT (self->project), _tmp2_ = model_project_get_project_file (MODEL_PROJECT (self->project))); +#line 2624 "fillmore.c" + _g_free0 (_tmp2_); +} + + +#line 795 "fillmore.vala" +static gboolean recorder_do_save (Recorder* self) { +#line 2631 "fillmore.c" + gboolean result = FALSE; + char* _tmp0_; + gboolean _tmp1_; +#line 795 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), FALSE); +#line 796 "fillmore.vala" + if ((_tmp1_ = (_tmp0_ = model_project_get_project_file (MODEL_PROJECT (self->project))) != NULL, _g_free0 (_tmp0_), _tmp1_)) { +#line 797 "fillmore.vala" + model_project_save (MODEL_PROJECT (self->project), NULL); +#line 2641 "fillmore.c" + result = TRUE; +#line 798 "fillmore.vala" + return result; +#line 2645 "fillmore.c" + } else { + result = recorder_save_dialog (self); +#line 801 "fillmore.vala" + return result; +#line 2650 "fillmore.c" + } +} + + +#line 805 "fillmore.vala" +static gboolean recorder_save_dialog (Recorder* self) { +#line 2657 "fillmore.c" + gboolean result = FALSE; + char* _tmp0_; + gboolean _tmp1_; + gboolean saving_new_file; + char* filename; + char* _tmp2_; + gboolean _tmp3_; + gboolean create_directory; +#line 805 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), FALSE); +#line 806 "fillmore.vala" + saving_new_file = (_tmp1_ = (_tmp0_ = model_project_get_project_file (MODEL_PROJECT (self->project))) == NULL, _g_free0 (_tmp0_), _tmp1_); +#line 808 "fillmore.vala" + filename = model_project_get_project_file (MODEL_PROJECT (self->project)); +#line 809 "fillmore.vala" + create_directory = (_tmp3_ = (_tmp2_ = model_project_get_project_file (MODEL_PROJECT (self->project))) == NULL, _g_free0 (_tmp2_), _tmp3_); +#line 810 "fillmore.vala" + if (dialog_utils_save (GTK_WINDOW (self), "Save Project", create_directory, RECORDER_filters, G_N_ELEMENTS (RECORDER_filters), &filename)) { +#line 2676 "fillmore.c" + gboolean _tmp4_ = FALSE; +#line 811 "fillmore.vala" + model_project_save (MODEL_PROJECT (self->project), filename); +#line 812 "fillmore.vala" + if (saving_new_file) { +#line 2682 "fillmore.c" + char* _tmp5_; +#line 812 "fillmore.vala" + _tmp4_ = (_tmp5_ = model_project_get_project_file (MODEL_PROJECT (self->project))) != NULL; +#line 2686 "fillmore.c" + _g_free0 (_tmp5_); + } else { +#line 812 "fillmore.vala" + _tmp4_ = FALSE; +#line 2691 "fillmore.c" + } +#line 812 "fillmore.vala" + if (_tmp4_) { +#line 813 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "closed", (GCallback) _recorder_on_project_close_model_project_closed, self, 0); +#line 814 "fillmore.vala" + g_signal_connect_object (self, "finished-closing", (GCallback) _recorder_on_save_new_file_finished_closing_recorder_finished_closing, self, 0); +#line 815 "fillmore.vala" + model_project_close (MODEL_PROJECT (self->project)); +#line 2701 "fillmore.c" + } + result = TRUE; + _g_free0 (filename); +#line 817 "fillmore.vala" + return result; +#line 2707 "fillmore.c" + } + result = FALSE; + _g_free0 (filename); +#line 819 "fillmore.vala" + return result; +#line 2713 "fillmore.c" +} + + +#line 822 "fillmore.vala" +static void recorder_on_properties (Recorder* self) { +#line 2719 "fillmore.c" + GError * _inner_error_; + GtkBuilder* builder; + ProjectProperties* properties; + gint response; +#line 822 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 2726 "fillmore.c" + _inner_error_ = NULL; +#line 823 "fillmore.vala" + builder = gtk_builder_new (); +#line 2730 "fillmore.c" + { + char* _tmp2_; + char* _tmp1_; + GFile* _tmp0_; +#line 825 "fillmore.vala" + gtk_builder_add_from_file (builder, _tmp2_ = g_strconcat (_tmp1_ = g_file_get_path (_tmp0_ = app_dirs_get_exec_dir ()), "/resources/fillmore.glade", NULL), &_inner_error_); +#line 2737 "fillmore.c" + _g_free0 (_tmp2_); + _g_free0 (_tmp1_); + _g_object_unref0 (_tmp0_); + if (_inner_error_ != NULL) { + goto __catch6_g_error; + } + } + goto __finally6; + __catch6_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 829 "fillmore.vala" + fprintf (stdout, "%s\n", e->message); +#line 2754 "fillmore.c" + _g_error_free0 (e); + _g_object_unref0 (builder); +#line 830 "fillmore.vala" + return; +#line 2759 "fillmore.c" + } + } + __finally6: + if (_inner_error_ != NULL) { + _g_object_unref0 (builder); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 832 "fillmore.vala" + gtk_builder_connect_signals (builder, NULL); +#line 833 "fillmore.vala" + properties = _g_object_ref0 (PROJECT_PROPERTIES (gtk_builder_get_object (builder, "projectproperties1"))); +#line 834 "fillmore.vala" + project_properties_setup (properties, MODEL_PROJECT (self->project), builder); +#line 836 "fillmore.vala" + response = gtk_dialog_run (GTK_DIALOG (properties)); +#line 837 "fillmore.vala" + if (response == GTK_RESPONSE_APPLY) { +#line 2779 "fillmore.c" + char* description; + Fraction _tmp4_; + Fraction _tmp3_ = {0}; +#line 838 "fillmore.vala" + description = g_strdup ("Set Project Properties"); +#line 839 "fillmore.vala" + model_undo_manager_start_transaction (MODEL_PROJECT (self->project)->undo_manager, description); +#line 840 "fillmore.vala" + model_project_set_bpm (MODEL_PROJECT (self->project), project_properties_get_tempo (properties)); +#line 841 "fillmore.vala" + model_project_set_time_signature (MODEL_PROJECT (self->project), (_tmp4_ = (project_properties_get_time_signature (properties, &_tmp3_), _tmp3_), &_tmp4_)); +#line 842 "fillmore.vala" + MODEL_PROJECT (self->project)->click_during_record = project_properties_during_record (properties); +#line 843 "fillmore.vala" + MODEL_PROJECT (self->project)->click_during_play = project_properties_during_play (properties); +#line 844 "fillmore.vala" + MODEL_PROJECT (self->project)->click_volume = project_properties_get_click_volume (properties); +#line 845 "fillmore.vala" + model_undo_manager_end_transaction (MODEL_PROJECT (self->project)->undo_manager, description); +#line 2799 "fillmore.c" + _g_free0 (description); + } +#line 847 "fillmore.vala" + gtk_object_destroy (GTK_OBJECT (properties)); +#line 2804 "fillmore.c" + _g_object_unref0 (builder); + _g_object_unref0 (properties); +} + + +#line 850 "fillmore.vala" +static void _recorder_on_quit_finished_closing_recorder_finished_closing (Recorder* _sender, gboolean project_did_close, gpointer self) { +#line 2812 "fillmore.c" + recorder_on_quit_finished_closing (self, project_did_close); +} + + +#line 850 "fillmore.vala" +static void recorder_on_quit_finished_closing (Recorder* self, gboolean project_did_close) { +#line 2819 "fillmore.c" + guint _tmp0_; + guint _tmp1_; +#line 850 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 851 "fillmore.vala" + g_signal_parse_name ("closed", MODEL_TYPE_PROJECT, &_tmp0_, NULL, FALSE); +#line 851 "fillmore.vala" + g_signal_handlers_disconnect_matched (MODEL_PROJECT (self->project), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _recorder_on_project_close_model_project_closed, self); +#line 852 "fillmore.vala" + g_signal_parse_name ("finished-closing", TYPE_RECORDER, &_tmp1_, NULL, FALSE); +#line 852 "fillmore.vala" + g_signal_handlers_disconnect_matched (self, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _recorder_on_quit_finished_closing_recorder_finished_closing, self); +#line 853 "fillmore.vala" + if (project_did_close) { +#line 854 "fillmore.vala" + gtk_main_quit (); +#line 2836 "fillmore.c" + } +} + + +#line 858 "fillmore.vala" +static void recorder_on_quit (Recorder* self) { +#line 858 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 859 "fillmore.vala" + if (!model_project_transport_is_recording (MODEL_PROJECT (self->project))) { +#line 860 "fillmore.vala" + g_signal_connect_object (MODEL_PROJECT (self->project), "closed", (GCallback) _recorder_on_project_close_model_project_closed, self, 0); +#line 861 "fillmore.vala" + g_signal_connect_object (self, "finished-closing", (GCallback) _recorder_on_quit_finished_closing_recorder_finished_closing, self, 0); +#line 862 "fillmore.vala" + model_project_close (MODEL_PROJECT (self->project)); +#line 2853 "fillmore.c" + } +} + + +#line 866 "fillmore.vala" +static gboolean recorder_on_delete_event (Recorder* self) { +#line 2860 "fillmore.c" + gboolean result = FALSE; +#line 866 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), FALSE); +#line 867 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_delete_event"); +#line 868 "fillmore.vala" + recorder_on_quit (self); +#line 2868 "fillmore.c" + result = TRUE; +#line 869 "fillmore.vala" + return result; +#line 2872 "fillmore.c" +} + + +#line 872 "fillmore.vala" +static void recorder_on_project_close (Recorder* self) { +#line 872 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 873 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_project_close"); +#line 874 "fillmore.vala" + if (model_undo_manager_get_is_dirty (MODEL_PROJECT (self->project)->undo_manager)) { +#line 875 "fillmore.vala" + switch (dialog_utils_save_close_cancel (GTK_WINDOW (self), NULL, "Save changes before closing?")) { +#line 2886 "fillmore.c" + case GTK_RESPONSE_ACCEPT: + { +#line 877 "fillmore.vala" + if (!recorder_do_save (self)) { +#line 878 "fillmore.vala" + g_signal_emit_by_name (self, "finished-closing", FALSE); +#line 879 "fillmore.vala" + return; +#line 2895 "fillmore.c" + } +#line 881 "fillmore.vala" + break; +#line 2899 "fillmore.c" + } + case GTK_RESPONSE_NO: + { + char* _tmp0_; + gboolean _tmp1_; +#line 884 "fillmore.vala" + if ((_tmp1_ = (_tmp0_ = model_project_get_project_file (MODEL_PROJECT (self->project))) == NULL, _g_free0 (_tmp0_), _tmp1_)) { +#line 885 "fillmore.vala" + model_project_save (MODEL_PROJECT (self->project), NULL); +#line 2909 "fillmore.c" + } +#line 887 "fillmore.vala" + break; +#line 2913 "fillmore.c" + } + case GTK_RESPONSE_DELETE_EVENT: + case GTK_RESPONSE_CANCEL: + { +#line 890 "fillmore.vala" + g_signal_emit_by_name (self, "finished-closing", FALSE); +#line 891 "fillmore.vala" + return; +#line 2922 "fillmore.c" + } + default: + { +#line 893 "fillmore.vala" + g_assert (FALSE); +#line 894 "fillmore.vala" + break; +#line 2930 "fillmore.c" + } + } + } +#line 897 "fillmore.vala" + g_signal_emit_by_name (self, "finished-closing", TRUE); +#line 2936 "fillmore.c" +} + + +#line 901 "fillmore.vala" +static void recorder_on_cut (Recorder* self) { +#line 901 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 902 "fillmore.vala" + time_line_do_cut (self->timeline); +#line 2946 "fillmore.c" +} + + +#line 905 "fillmore.vala" +static void recorder_on_copy (Recorder* self) { +#line 905 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 906 "fillmore.vala" + time_line_do_copy (self->timeline); +#line 2956 "fillmore.c" +} + + +#line 909 "fillmore.vala" +static void recorder_on_paste (Recorder* self) { +#line 909 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 910 "fillmore.vala" + time_line_paste (self->timeline); +#line 2966 "fillmore.c" +} + + +#line 913 "fillmore.vala" +static void recorder_on_undo (Recorder* self) { +#line 913 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 914 "fillmore.vala" + model_project_undo (MODEL_PROJECT (self->project)); +#line 2976 "fillmore.c" +} + + +#line 917 "fillmore.vala" +static void recorder_on_delete (Recorder* self) { +#line 917 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 918 "fillmore.vala" + if (clip_library_view_has_selection (self->priv->library)) { +#line 919 "fillmore.vala" + clip_library_view_delete_selection (self->priv->library); +#line 2988 "fillmore.c" + } else { +#line 921 "fillmore.vala" + time_line_delete_selection (self->timeline); +#line 2992 "fillmore.c" + } +} + + +#line 925 "fillmore.vala" +static void recorder_on_select_all (Recorder* self) { +#line 925 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 926 "fillmore.vala" + if (clip_library_view_has_selection (self->priv->library)) { +#line 927 "fillmore.vala" + clip_library_view_select_all (self->priv->library); +#line 3005 "fillmore.c" + } else { +#line 929 "fillmore.vala" + time_line_select_all (self->timeline); +#line 3009 "fillmore.c" + } +} + + +#line 933 "fillmore.vala" +void recorder_on_split_at_playhead (Recorder* self) { +#line 933 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 934 "fillmore.vala" + model_project_split_at_playhead (MODEL_PROJECT (self->project)); +#line 3020 "fillmore.c" +} + + +#line 937 "fillmore.vala" +void recorder_on_trim_to_playhead (Recorder* self) { +#line 937 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 938 "fillmore.vala" + model_project_trim_to_playhead (MODEL_PROJECT (self->project)); +#line 3030 "fillmore.c" +} + + +#line 941 "fillmore.vala" +void recorder_on_clip_properties (Recorder* self) { +#line 941 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 942 "fillmore.vala" + if (clip_library_view_has_selection (self->priv->library)) { +#line 3040 "fillmore.c" + GeeArrayList* files; +#line 943 "fillmore.vala" + files = clip_library_view_get_selected_files (self->priv->library); +#line 944 "fillmore.vala" + if (gee_collection_get_size (GEE_COLLECTION (files)) == 1) { +#line 3046 "fillmore.c" + char* file_name; + ModelClipFile* clip_file; +#line 945 "fillmore.vala" + file_name = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (files), 0); +#line 946 "fillmore.vala" + clip_file = model_project_find_clipfile (MODEL_PROJECT (self->project), file_name); +#line 947 "fillmore.vala" + dialog_utils_show_clip_properties (GTK_WINDOW (self), NULL, clip_file, NULL); +#line 3055 "fillmore.c" + _g_free0 (file_name); + _g_object_unref0 (clip_file); + } + _g_object_unref0 (files); + } else { + GeeArrayList* clips; +#line 950 "fillmore.vala" + clips = _g_object_ref0 (self->timeline->selected_clips); +#line 951 "fillmore.vala" + if (gee_collection_get_size (GEE_COLLECTION (clips)) == 1) { +#line 3066 "fillmore.c" + ClipView* clip_view; +#line 952 "fillmore.vala" + clip_view = (ClipView*) gee_abstract_list_get (GEE_ABSTRACT_LIST (clips), 0); +#line 953 "fillmore.vala" + dialog_utils_show_clip_properties (GTK_WINDOW (self), clip_view, NULL, NULL); +#line 3072 "fillmore.c" + _g_object_unref0 (clip_view); + } + _g_object_unref0 (clips); + } +} + + +#line 960 "fillmore.vala" +static void recorder_on_track_new (Recorder* self) { +#line 3082 "fillmore.c" + UITrackInformation* dialog; + char* _tmp0_; +#line 960 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 961 "fillmore.vala" + dialog = g_object_ref_sink (ui_track_information_new ()); +#line 962 "fillmore.vala" + ui_track_information_set_track_name (dialog, _tmp0_ = recorder_get_default_track_name (self)); +#line 3091 "fillmore.c" + _g_free0 (_tmp0_); +#line 963 "fillmore.vala" + if (recorder_track_name_dialog (self, dialog, NULL)) { +#line 3095 "fillmore.c" + ModelAudioTrack* _tmp2_; + char* _tmp1_; +#line 964 "fillmore.vala" + model_project_add_track (MODEL_PROJECT (self->project), MODEL_TRACK (_tmp2_ = model_audio_track_new (MODEL_PROJECT (self->project), _tmp1_ = ui_track_information_get_track_name (dialog)))); +#line 3100 "fillmore.c" + _g_object_unref0 (_tmp2_); + _g_free0 (_tmp1_); + } +#line 966 "fillmore.vala" + gtk_object_destroy (GTK_OBJECT (dialog)); +#line 3106 "fillmore.c" + _g_object_unref0 (dialog); +} + + +#line 969 "fillmore.vala" +static void recorder_on_track_rename (Recorder* self) { +#line 3113 "fillmore.c" + UITrackInformation* dialog; + ModelTrack* track; + ModelTrack* _tmp0_; +#line 969 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 970 "fillmore.vala" + dialog = g_object_ref_sink (ui_track_information_new ()); +#line 971 "fillmore.vala" + track = recorder_selected_track (self); +#line 972 "fillmore.vala" + gtk_window_set_title (GTK_WINDOW (dialog), "Rename Track"); +#line 973 "fillmore.vala" + ui_track_information_set_track_name (dialog, (_tmp0_ = recorder_selected_track (self))->display_name); +#line 3127 "fillmore.c" + _g_object_unref0 (_tmp0_); +#line 974 "fillmore.vala" + if (recorder_track_name_dialog (self, dialog, track)) { +#line 3131 "fillmore.c" + char* _tmp1_; +#line 975 "fillmore.vala" + model_track_set_display_name (track, _tmp1_ = ui_track_information_get_track_name (dialog)); +#line 3135 "fillmore.c" + _g_free0 (_tmp1_); + } +#line 977 "fillmore.vala" + gtk_object_destroy (GTK_OBJECT (dialog)); +#line 3140 "fillmore.c" + _g_object_unref0 (dialog); + _g_object_unref0 (track); +} + + +#line 980 "fillmore.vala" +static gboolean recorder_track_name_dialog (Recorder* self, UITrackInformation* dialog, ModelTrack* track) { +#line 3148 "fillmore.c" + gboolean result = FALSE; + GtkResponseType _result_; + gboolean is_ok; + gboolean _tmp2_ = FALSE; +#line 980 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), FALSE); +#line 980 "fillmore.vala" + g_return_val_if_fail (UI_IS_TRACK_INFORMATION (dialog), FALSE); +#line 980 "fillmore.vala" + g_return_val_if_fail ((track == NULL) || MODEL_IS_TRACK (track), FALSE); +#line 981 "fillmore.vala" + _result_ = GTK_RESPONSE_OK; +#line 982 "fillmore.vala" + is_ok = TRUE; +#line 3163 "fillmore.c" + { + gboolean _tmp0_; +#line 983 "fillmore.vala" + _tmp0_ = TRUE; +#line 983 "fillmore.vala" + while (TRUE) { +#line 3170 "fillmore.c" + char* new_name; +#line 983 "fillmore.vala" + if (!_tmp0_) { +#line 3174 "fillmore.c" + gboolean _tmp1_ = FALSE; +#line 999 "fillmore.vala" + if (_result_ == GTK_RESPONSE_OK) { +#line 999 "fillmore.vala" + _tmp1_ = !is_ok; +#line 3180 "fillmore.c" + } else { +#line 999 "fillmore.vala" + _tmp1_ = FALSE; +#line 3184 "fillmore.c" + } +#line 999 "fillmore.vala" + if (!_tmp1_) { +#line 999 "fillmore.vala" + break; +#line 3190 "fillmore.c" + } + } +#line 983 "fillmore.vala" + _tmp0_ = FALSE; +#line 984 "fillmore.vala" + _result_ = (GtkResponseType) gtk_dialog_run (GTK_DIALOG (dialog)); +#line 985 "fillmore.vala" + new_name = ui_track_information_get_track_name (dialog); +#line 987 "fillmore.vala" + if (_result_ == GTK_RESPONSE_OK) { +#line 988 "fillmore.vala" + if (_vala_strcmp0 (new_name, "") == 0) { +#line 989 "fillmore.vala" + is_ok = FALSE; +#line 990 "fillmore.vala" + dialog_utils_error ("Invalid track name.", "The track name cannot be empty."); +#line 3207 "fillmore.c" + } else { +#line 992 "fillmore.vala" + is_ok = !model_project_is_duplicate_track_name (MODEL_PROJECT (self->project), track, new_name); +#line 993 "fillmore.vala" + if (!is_ok) { +#line 994 "fillmore.vala" + dialog_utils_error ("Duplicate track name.", "A track with this name already exists."); +#line 3215 "fillmore.c" + } + } + } + _g_free0 (new_name); + } + } +#line 1000 "fillmore.vala" + if (_result_ == GTK_RESPONSE_OK) { +#line 1000 "fillmore.vala" + _tmp2_ = is_ok; +#line 3226 "fillmore.c" + } else { +#line 1000 "fillmore.vala" + _tmp2_ = FALSE; +#line 3230 "fillmore.c" + } + result = _tmp2_; +#line 1000 "fillmore.vala" + return result; +#line 3235 "fillmore.c" +} + + +#line 1003 "fillmore.vala" +static void recorder_on_track_remove (Recorder* self) { +#line 3241 "fillmore.c" + ModelTrack* _tmp0_; +#line 1003 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1004 "fillmore.vala" + model_project_remove_track (MODEL_PROJECT (self->project), _tmp0_ = recorder_selected_track (self)); +#line 3247 "fillmore.c" + _g_object_unref0 (_tmp0_); +} + + +#line 1008 "fillmore.vala" +static void recorder_on_zoom_in (Recorder* self) { +#line 1008 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1009 "fillmore.vala" + recorder_do_zoom (self, 0.1f); +#line 3258 "fillmore.c" +} + + +#line 1012 "fillmore.vala" +static void recorder_on_zoom_out (Recorder* self) { +#line 1012 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1013 "fillmore.vala" + recorder_do_zoom (self, -0.1f); +#line 3268 "fillmore.c" +} + + +#line 1016 "fillmore.vala" +static void recorder_on_zoom_to_project (Recorder* self) { +#line 1016 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1017 "fillmore.vala" + time_line_zoom_to_project (self->timeline, gtk_adjustment_get_page_size (self->priv->h_adjustment)); +#line 3278 "fillmore.c" +} + + +#line 1020 "fillmore.vala" +static void recorder_on_snap (Recorder* self) { +#line 1020 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1021 "fillmore.vala" + MODEL_PROJECT (self->project)->snap_to_clip = !MODEL_PROJECT (self->project)->snap_to_clip; +#line 3288 "fillmore.c" +} + + +#line 1024 "fillmore.vala" +static void recorder_on_view_library (Recorder* self) { +#line 1024 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1025 "fillmore.vala" + if (GTK_PANED (self->priv->timeline_library_pane)->child2 == GTK_WIDGET (self->priv->library_scrolled)) { +#line 1026 "fillmore.vala" + gtk_container_remove (GTK_CONTAINER (self->priv->timeline_library_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 1027 "fillmore.vala" + MODEL_PROJECT (self->project)->library_visible = FALSE; +#line 3302 "fillmore.c" + } else { +#line 1029 "fillmore.vala" + gtk_paned_add2 (GTK_PANED (self->priv->timeline_library_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 1030 "fillmore.vala" + gtk_widget_show_all (GTK_WIDGET (self->priv->timeline_library_pane)); +#line 1031 "fillmore.vala" + MODEL_PROJECT (self->project)->library_visible = TRUE; +#line 3310 "fillmore.c" + } +} + + +#line 1035 "fillmore.vala" +static void recorder_on_library_size_allocate (Recorder* self, GdkRectangle* rectangle) { +#line 3317 "fillmore.c" + gboolean _tmp0_ = FALSE; +#line 1035 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1036 "fillmore.vala" + if (!self->priv->loading) { +#line 1036 "fillmore.vala" + _tmp0_ = GTK_PANED (self->priv->timeline_library_pane)->child2 == GTK_WIDGET (self->priv->library_scrolled); +#line 3325 "fillmore.c" + } else { +#line 1036 "fillmore.vala" + _tmp0_ = FALSE; +#line 3329 "fillmore.c" + } +#line 1036 "fillmore.vala" + if (_tmp0_) { +#line 1037 "fillmore.vala" + MODEL_PROJECT (self->project)->library_width = (*rectangle).width; +#line 3335 "fillmore.c" + } +} + + +#line 1043 "fillmore.vala" +static void recorder_on_help_contents (Recorder* self) { +#line 3342 "fillmore.c" + GError * _inner_error_; +#line 1043 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 3346 "fillmore.c" + _inner_error_ = NULL; + { +#line 1045 "fillmore.vala" + gtk_show_uri (NULL, "http://trac.yorba.org/wiki/UsingFillmore0.1", (guint32) 0, &_inner_error_); +#line 3351 "fillmore.c" + if (_inner_error_ != NULL) { + goto __catch7_g_error; + } + } + goto __finally7; + __catch7_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally7: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +#line 1050 "fillmore.vala" +static void recorder_on_about (Recorder* self) { +#line 3377 "fillmore.c" + char* _tmp1_; + char* _tmp0_; +#line 1050 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1051 "fillmore.vala" + gtk_show_about_dialog (GTK_WINDOW (self), "version", _tmp0_ = model_project_get_version (MODEL_PROJECT (self->project)), "comments", "An audio editor and recorder", "copyright", "Copyright 2009-2010 Yorba Foundation", "website", "http://www.yorba.org", "license", _tmp1_ = model_project_get_license (MODEL_PROJECT (self->project)), "website-label", "Visit the Yorba web site", "authors", MODEL_PROJECT_authors, NULL); +#line 3384 "fillmore.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +} + + +#line 1062 "fillmore.vala" +static void recorder_on_save_graph (Recorder* self) { +#line 1062 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1063 "fillmore.vala" + model_project_print_graph (MODEL_PROJECT (self->project), GST_BIN (MODEL_PROJECT (self->project)->media_engine->pipeline), "save_graph"); +#line 3396 "fillmore.c" +} + + +#line 1068 "fillmore.vala" +static void recorder_on_volume (Recorder* self) { +#line 1068 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 3404 "fillmore.c" +} + + +#line 1072 "fillmore.vala" +static void recorder_on_rewind (Recorder* self) { +#line 1072 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1073 "fillmore.vala" + view_media_engine_go (MODEL_PROJECT (self->project)->media_engine, (gint64) 0); +#line 1074 "fillmore.vala" + recorder_scroll_to_beginning (self); +#line 3416 "fillmore.c" +} + + +#line 1077 "fillmore.vala" +static void recorder_on_end (Recorder* self) { +#line 1077 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1078 "fillmore.vala" + model_project_go_end (MODEL_PROJECT (self->project)); +#line 1079 "fillmore.vala" + recorder_scroll_to_end (self); +#line 3428 "fillmore.c" +} + + +#line 1082 "fillmore.vala" +static void recorder_on_play (Recorder* self) { +#line 1082 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1083 "fillmore.vala" + if (model_project_transport_is_recording (MODEL_PROJECT (self->project))) { +#line 1084 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Record", TRUE); +#line 1085 "fillmore.vala" + gtk_toggle_button_set_active (self->priv->record_button, FALSE); +#line 1086 "fillmore.vala" + gtk_toggle_button_set_active (self->priv->play_button, FALSE); +#line 1087 "fillmore.vala" + view_media_engine_pause (MODEL_PROJECT (self->project)->media_engine); +#line 3446 "fillmore.c" + } else { +#line 1088 "fillmore.vala" + if (gtk_toggle_button_get_active (self->priv->play_button)) { +#line 1089 "fillmore.vala" + view_media_engine_do_play (MODEL_PROJECT (self->project)->media_engine, PLAY_STATE_PLAYING); +#line 3452 "fillmore.c" + } else { +#line 1091 "fillmore.vala" + view_media_engine_pause (MODEL_PROJECT (self->project)->media_engine); +#line 3456 "fillmore.c" + } + } +} + + +#line 1094 "fillmore.vala" +static void recorder_on_record (Recorder* self) { +#line 1094 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1095 "fillmore.vala" + if (gtk_toggle_button_get_active (self->priv->record_button)) { +#line 3468 "fillmore.c" + ModelTrack* _tmp0_; + ModelAudioTrack* audio_track; + gint number_of_channels = 0; +#line 1096 "fillmore.vala" + audio_track = (_tmp0_ = recorder_selected_track (self), MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL); +#line 1098 "fillmore.vala" + if (model_audio_track_get_num_channels (audio_track, &number_of_channels)) { +#line 1099 "fillmore.vala" + if (number_of_channels > CHANNELS_PER_TRACK_RECORD) { +#line 1100 "fillmore.vala" + gtk_toggle_button_set_active (self->priv->record_button, FALSE); +#line 1101 "fillmore.vala" + recorder_on_error_occurred (self, "Can not record onto a stereo track", NULL); +#line 3482 "fillmore.c" + _g_object_unref0 (audio_track); +#line 1102 "fillmore.vala" + return; +#line 3486 "fillmore.c" + } + } +#line 1105 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Record", FALSE); +#line 1106 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Play", FALSE); +#line 1107 "fillmore.vala" + model_audio_project_record (self->project, audio_track); +#line 3495 "fillmore.c" + _g_object_unref0 (audio_track); + } else { +#line 1110 "fillmore.vala" + recorder_on_play (self); +#line 3500 "fillmore.c" + } +} + + +#line 1114 "fillmore.vala" +static void recorder_on_callback_pulse (Recorder* self) { +#line 1114 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1115 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_callback_pulse"); +#line 1116 "fillmore.vala" + if (model_project_transport_is_playing (MODEL_PROJECT (self->project))) { +#line 1117 "fillmore.vala" + recorder_scroll_toward_center (self, model_time_system_time_to_xpos (self->priv->provider, MODEL_PROJECT (self->project)->media_engine->position)); +#line 3515 "fillmore.c" + } +#line 1119 "fillmore.vala" + gtk_widget_queue_draw (GTK_WIDGET (self->timeline)); +#line 3519 "fillmore.c" +} + + +#line 1122 "fillmore.vala" +static gint64 recorder_get_zoom_center_time (Recorder* self) { +#line 3525 "fillmore.c" + gint64 result = 0LL; +#line 1122 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), 0LL); +#line 3529 "fillmore.c" + result = model_project_transport_get_position (MODEL_PROJECT (self->project)); +#line 1123 "fillmore.vala" + return result; +#line 3533 "fillmore.c" +} + + +#line 1126 "fillmore.vala" +static void recorder_do_zoom (Recorder* self, float increment) { +#line 1126 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1127 "fillmore.vala" + self->priv->center_time = recorder_get_zoom_center_time (self); +#line 1128 "fillmore.vala" + time_line_zoom (self->timeline, increment); +#line 3545 "fillmore.c" +} + + +#line 1131 "fillmore.vala" +static void recorder_on_timeline_size_allocate (Recorder* self, GdkRectangle* rectangle) { +#line 1131 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1132 "fillmore.vala" + if (self->priv->center_time != (-1)) { +#line 3555 "fillmore.c" + gint new_center_pixel; + gint page_size; +#line 1133 "fillmore.vala" + new_center_pixel = model_time_system_time_to_xpos (self->priv->provider, self->priv->center_time); +#line 1134 "fillmore.vala" + page_size = (gint) (gtk_adjustment_get_page_size (self->priv->h_adjustment) / 2); +#line 1135 "fillmore.vala" + gtk_adjustment_clamp_page (self->priv->h_adjustment, (double) (new_center_pixel - page_size), (double) (new_center_pixel + page_size)); +#line 1136 "fillmore.vala" + self->priv->center_time = (gint64) (-1); +#line 3566 "fillmore.c" + } +} + + +#line 1140 "fillmore.vala" +static void recorder_on_timeline_selection_changed (Recorder* self, gboolean selected) { +#line 1140 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1141 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_timeline_selection_changed"); +#line 1142 "fillmore.vala" + if (selected) { +#line 1143 "fillmore.vala" + clip_library_view_unselect_all (self->priv->library); +#line 3581 "fillmore.c" + } +#line 1145 "fillmore.vala" + recorder_update_menu (self); +#line 3585 "fillmore.c" +} + + +#line 1148 "fillmore.vala" +void recorder_on_library_selection_changed (Recorder* self, gboolean selected) { +#line 1148 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1149 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_library_selection_changed"); +#line 1150 "fillmore.vala" + if (selected) { +#line 1151 "fillmore.vala" + time_line_deselect_all_clips (self->timeline); +#line 1152 "fillmore.vala" + gtk_widget_queue_draw (GTK_WIDGET (self->timeline)); +#line 3601 "fillmore.c" + } +#line 1154 "fillmore.vala" + recorder_update_menu (self); +#line 3605 "fillmore.c" +} + + +#line 1206 "fillmore.vala" +void recorder_do_error_dialog (const char* major_message, const char* minor_message) { +#line 1206 "fillmore.vala" + g_return_if_fail (major_message != NULL); +#line 1207 "fillmore.vala" + dialog_utils_error (major_message, minor_message); +#line 3615 "fillmore.c" +} + + +#line 1210 "fillmore.vala" +void recorder_on_load_error (Recorder* self, const char* message) { +#line 1210 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1210 "fillmore.vala" + g_return_if_fail (message != NULL); +#line 1211 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_error"); +#line 1212 "fillmore.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->load_errors), message); +#line 3629 "fillmore.c" +} + + +#line 1215 "fillmore.vala" +void recorder_on_load_complete (Recorder* self) { +#line 3635 "fillmore.c" + GtkAction* _tmp0_; + GtkToggleAction* action; + GtkToggleAction* _tmp2_; + GtkAction* _tmp1_; +#line 1215 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1216 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_complete"); +#line 1217 "fillmore.vala" + gst_element_set_state (GST_ELEMENT (MODEL_PROJECT (self->project)->media_engine->pipeline), GST_STATE_PAUSED); +#line 1218 "fillmore.vala" + gtk_paned_set_position (GTK_PANED (self->priv->timeline_library_pane), MODEL_PROJECT (self->project)->library_width); +#line 1220 "fillmore.vala" + action = _g_object_ref0 ((_tmp0_ = gtk_action_group_get_action (self->priv->main_group, "Library"), GTK_IS_TOGGLE_ACTION (_tmp0_) ? ((GtkToggleAction*) _tmp0_) : NULL)); +#line 1221 "fillmore.vala" + if (gtk_toggle_action_get_active (action) != MODEL_PROJECT (self->project)->library_visible) { +#line 1222 "fillmore.vala" + gtk_toggle_action_set_active (action, MODEL_PROJECT (self->project)->library_visible); +#line 3654 "fillmore.c" + } +#line 1225 "fillmore.vala" + action = (_tmp2_ = _g_object_ref0 ((_tmp1_ = gtk_action_group_get_action (self->priv->main_group, "Snap"), GTK_IS_TOGGLE_ACTION (_tmp1_) ? ((GtkToggleAction*) _tmp1_) : NULL)), _g_object_unref0 (action), _tmp2_); +#line 1226 "fillmore.vala" + if (gtk_toggle_action_get_active (action) != MODEL_PROJECT (self->project)->snap_to_clip) { +#line 1227 "fillmore.vala" + gtk_toggle_action_set_active (action, MODEL_PROJECT (self->project)->snap_to_clip); +#line 3662 "fillmore.c" + } +#line 1230 "fillmore.vala" + if (MODEL_PROJECT (self->project)->library_visible) { +#line 1231 "fillmore.vala" + if (GTK_PANED (self->priv->timeline_library_pane)->child2 != GTK_WIDGET (self->priv->library_scrolled)) { +#line 1232 "fillmore.vala" + gtk_paned_add2 (GTK_PANED (self->priv->timeline_library_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 3670 "fillmore.c" + } + } else { +#line 1235 "fillmore.vala" + if (GTK_PANED (self->priv->timeline_library_pane)->child2 == GTK_WIDGET (self->priv->library_scrolled)) { +#line 1236 "fillmore.vala" + gtk_container_remove (GTK_CONTAINER (self->priv->timeline_library_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 3677 "fillmore.c" + } + } +#line 1240 "fillmore.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->priv->load_errors)) > 0) { +#line 3682 "fillmore.c" + char* message; +#line 1241 "fillmore.vala" + message = g_strdup (""); +#line 3686 "fillmore.c" + { + GeeIterator* _s_it; + _s_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->load_errors)); +#line 1242 "fillmore.vala" + while (TRUE) { +#line 3692 "fillmore.c" + char* s; + char* _tmp4_; + char* _tmp3_; +#line 1242 "fillmore.vala" + if (!gee_iterator_next (_s_it)) { +#line 1242 "fillmore.vala" + break; +#line 3700 "fillmore.c" + } +#line 1242 "fillmore.vala" + s = (char*) gee_iterator_get (_s_it); +#line 1243 "fillmore.vala" + message = (_tmp4_ = g_strconcat (_tmp3_ = g_strconcat (message, s, NULL), "\n", NULL), _g_free0 (message), _tmp4_); +#line 3706 "fillmore.c" + _g_free0 (_tmp3_); + _g_free0 (s); + } + _g_object_unref0 (_s_it); + } +#line 1245 "fillmore.vala" + recorder_do_error_dialog ("An error occurred loading the project.", message); +#line 3714 "fillmore.c" + _g_free0 (message); + } +#line 1248 "fillmore.vala" + self->priv->loading = FALSE; +#line 3719 "fillmore.c" + _g_object_unref0 (action); +} + + +#line 1251 "fillmore.vala" +static void recorder_on_name_changed (Recorder* self) { +#line 3726 "fillmore.c" + char* _tmp0_; +#line 1251 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1252 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_name_changed"); +#line 1253 "fillmore.vala" + gtk_window_set_title (GTK_WINDOW (self), _tmp0_ = model_project_get_file_display_name (MODEL_PROJECT (self->project))); +#line 3734 "fillmore.c" + _g_free0 (_tmp0_); +} + + +#line 1256 "fillmore.vala" +static void recorder_on_dirty_changed (Recorder* self, gboolean isDirty) { +#line 3741 "fillmore.c" + GtkMenuItem* file_save; +#line 1256 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1257 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_dirty_changed"); +#line 1258 "fillmore.vala" + file_save = GTK_MENU_ITEM (recorder_get_widget (self, self->priv->manager, "/MenuBar/ProjectMenu/Save")); +#line 1259 "fillmore.vala" + g_assert (file_save != NULL); +#line 1260 "fillmore.vala" + gtk_widget_set_sensitive (GTK_WIDGET (file_save), isDirty); +#line 3753 "fillmore.c" + _g_object_unref0 (file_save); +} + + +#line 1263 "fillmore.vala" +static void recorder_on_undo_changed (Recorder* self, gboolean can_undo) { +#line 3760 "fillmore.c" + GtkMenuItem* undo; + gboolean _tmp0_ = FALSE; +#line 1263 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1264 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_undo_changed"); +#line 1265 "fillmore.vala" + undo = GTK_MENU_ITEM (recorder_get_widget (self, self->priv->manager, "/MenuBar/EditMenu/EditUndo")); +#line 1266 "fillmore.vala" + g_assert (undo != NULL); +#line 1268 "fillmore.vala" + if (transport_delegate_is_stopped (TRANSPORT_DELEGATE (self))) { +#line 1268 "fillmore.vala" + _tmp0_ = model_undo_manager_get_can_undo (MODEL_PROJECT (self->project)->undo_manager); +#line 3775 "fillmore.c" + } else { +#line 1268 "fillmore.vala" + _tmp0_ = FALSE; +#line 3779 "fillmore.c" + } +#line 1268 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Undo", _tmp0_); +#line 3783 "fillmore.c" + _g_object_unref0 (undo); +} + + +#line 1271 "fillmore.vala" +static void recorder_on_playstate_changed (Recorder* self, PlayState playstate) { +#line 1271 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1272 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_playstate_changed"); +#line 1273 "fillmore.vala" + if (playstate == PLAY_STATE_STOPPED) { +#line 1274 "fillmore.vala" + self->priv->cursor_pos = -1; +#line 1275 "fillmore.vala" + gtk_toggle_button_set_active (self->priv->play_button, FALSE); +#line 1276 "fillmore.vala" + recorder_set_sensitive_group (self, self->priv->main_group, "Export", model_project_can_export (MODEL_PROJECT (self->project))); +#line 1277 "fillmore.vala" + recorder_update_menu (self); +#line 3804 "fillmore.c" + } +} + + +#line 1281 "fillmore.vala" +static void recorder_on_error_occurred (Recorder* self, const char* major_message, const char* minor_message) { +#line 1281 "fillmore.vala" + g_return_if_fail (IS_RECORDER (self)); +#line 1281 "fillmore.vala" + g_return_if_fail (major_message != NULL); +#line 1282 "fillmore.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error_occurred"); +#line 1283 "fillmore.vala" + dialog_utils_error (major_message, minor_message); +#line 3819 "fillmore.c" +} + + +#line 1286 "fillmore.vala" +static char* recorder_get_fillmore_directory (Recorder* self) { +#line 3825 "fillmore.c" + char* result = NULL; +#line 1286 "fillmore.vala" + g_return_val_if_fail (IS_RECORDER (self), NULL); +#line 3829 "fillmore.c" + result = g_build_filename (g_get_home_dir (), ".fillmore", NULL); +#line 1287 "fillmore.vala" + return result; +#line 3833 "fillmore.c" +} + + +#line 1291 "fillmore.vala" +static gboolean recorder_real_is_playing (TransportDelegate* base) { +#line 3839 "fillmore.c" + Recorder * self; + gboolean result = FALSE; + self = RECORDER (base); + result = model_project_transport_is_playing (MODEL_PROJECT (self->project)); +#line 1292 "fillmore.vala" + return result; +#line 3846 "fillmore.c" +} + + +#line 1295 "fillmore.vala" +static gboolean recorder_real_is_recording (TransportDelegate* base) { +#line 3852 "fillmore.c" + Recorder * self; + gboolean result = FALSE; + self = RECORDER (base); + result = model_project_transport_is_recording (MODEL_PROJECT (self->project)); +#line 1296 "fillmore.vala" + return result; +#line 3859 "fillmore.c" +} + + +#line 1299 "fillmore.vala" +static gboolean recorder_real_is_stopped (TransportDelegate* base) { +#line 3865 "fillmore.c" + Recorder * self; + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + self = RECORDER (base); +#line 1300 "fillmore.vala" + if (transport_delegate_is_playing (TRANSPORT_DELEGATE (self))) { +#line 1300 "fillmore.vala" + _tmp0_ = TRUE; +#line 3874 "fillmore.c" + } else { +#line 1300 "fillmore.vala" + _tmp0_ = transport_delegate_is_recording (TRANSPORT_DELEGATE (self)); +#line 3878 "fillmore.c" + } + result = !_tmp0_; +#line 1300 "fillmore.vala" + return result; +#line 3883 "fillmore.c" +} + + +static void recorder_class_init (RecorderClass * klass) { + recorder_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (RecorderPrivate)); + GTK_WIDGET_CLASS (klass)->key_press_event = recorder_real_key_press_event; + G_OBJECT_CLASS (klass)->finalize = recorder_finalize; + g_signal_new ("finished_closing", TYPE_RECORDER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); +} + + +static void recorder_transport_delegate_interface_init (TransportDelegateIface * iface) { + recorder_transport_delegate_parent_iface = g_type_interface_peek_parent (iface); + iface->is_playing = recorder_real_is_playing; + iface->is_recording = recorder_real_is_recording; + iface->is_stopped = recorder_real_is_stopped; +} + + +static void recorder_instance_init (Recorder * self) { + self->priv = RECORDER_GET_PRIVATE (self); + self->priv->cursor_pos = -1; + self->priv->center_time = (gint64) (-1); + self->priv->scrollwin_pos_y = 0; +} + + +static void recorder_finalize (GObject* obj) { + Recorder * self; + self = RECORDER (obj); + _g_object_unref0 (self->project); + _g_object_unref0 (self->timeline); + _g_object_unref0 (self->priv->click_track); + _g_object_unref0 (self->priv->header_area); + _g_object_unref0 (self->priv->library); + _g_object_unref0 (self->priv->provider); + _g_object_unref0 (self->priv->h_adjustment); + _g_object_unref0 (self->priv->timeline_library_pane); + _g_object_unref0 (self->priv->library_scrolled); + _g_object_unref0 (self->priv->timeline_scrolled); + _g_object_unref0 (self->priv->main_group); + _g_object_unref0 (self->priv->play_button); + _g_object_unref0 (self->priv->record_button); + _g_object_unref0 (self->priv->addnew_button); + _g_object_unref0 (self->priv->rewind_button); + _g_object_unref0 (self->priv->forward_button); + _g_object_unref0 (self->priv->zoomin_button); + _g_object_unref0 (self->priv->zoomout_button); + _g_object_unref0 (self->priv->volume_button); + _g_object_unref0 (self->priv->scrollwin); + _g_object_unref0 (self->priv->manager); + _g_object_unref0 (self->priv->audio_export); + _g_object_unref0 (self->priv->audio_output); + _g_object_unref0 (self->priv->load_errors); + G_OBJECT_CLASS (recorder_parent_class)->finalize (obj); +} + + +GType recorder_get_type (void) { + static volatile gsize recorder_type_id__volatile = 0; + if (g_once_init_enter (&recorder_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (RecorderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) recorder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Recorder), 0, (GInstanceInitFunc) recorder_instance_init, NULL }; + static const GInterfaceInfo transport_delegate_info = { (GInterfaceInitFunc) recorder_transport_delegate_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType recorder_type_id; + recorder_type_id = g_type_register_static (GTK_TYPE_WINDOW, "Recorder", &g_define_type_info, 0); + g_type_add_interface_static (recorder_type_id, TYPE_TRANSPORT_DELEGATE, &transport_delegate_info); + g_once_init_leave (&recorder_type_id__volatile, recorder_type_id); + } + return recorder_type_id__volatile; +} + + +#line 1307 "fillmore.vala" +void fillmore_run (Fillmore* self, char** args, int args_length1) { +#line 3959 "fillmore.c" + GError * _inner_error_; + GOptionContext* context; +#line 1307 "fillmore.vala" + g_return_if_fail (IS_FILLMORE (self)); +#line 3964 "fillmore.c" + _inner_error_ = NULL; +#line 1308 "fillmore.vala" + debug_level = -1; +#line 1309 "fillmore.vala" + context = g_option_context_new (" [project file] - Record and edit multitrack audio"); +#line 1311 "fillmore.vala" + g_option_context_add_main_entries (context, options, NULL); +#line 1312 "fillmore.vala" + g_option_context_add_group (context, gst_init_get_option_group ()); +#line 3974 "fillmore.c" + { +#line 1315 "fillmore.vala" + g_option_context_parse (context, &args_length1, &args, &_inner_error_); +#line 3978 "fillmore.c" + if (_inner_error_ != NULL) { + goto __catch8_g_error; + } + } + goto __finally8; + __catch8_g_error: + { + GError * arg_error; + arg_error = _inner_error_; + _inner_error_ = NULL; + { +#line 1317 "fillmore.vala" + fprintf (stderr, "%s\n" \ +"Run 'fillmore --help' for a full list of available command line option" \ +"s.", arg_error->message); +#line 3992 "fillmore.c" + _g_error_free0 (arg_error); + _g_option_context_free0 (context); +#line 1319 "fillmore.vala" + return; +#line 3997 "fillmore.c" + } + } + __finally8: + if (_inner_error_ != NULL) { + _g_option_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + { + GFile* _tmp1_; + GFile* _tmp0_; + char* _tmp2_; + char* rc_file; + char* project_file; + FillmoreClassFactory* _tmp6_; + Recorder* recorder; +#line 1323 "fillmore.vala" + g_set_application_name ("Fillmore"); +#line 1324 "fillmore.vala" + if (debug_level > (-1)) { +#line 1325 "fillmore.vala" + logging_set_logging_level ((LoggingLevel) debug_level); +#line 4021 "fillmore.c" + } +#line 1328 "fillmore.vala" + app_dirs_init (args[0], _PROGRAM_NAME); +#line 1329 "fillmore.vala" + rc_file = (_tmp2_ = g_file_get_path (_tmp1_ = g_file_get_child (_tmp0_ = app_dirs_get_resources_dir (), "fillmore.rc")), _g_object_unref0 (_tmp1_), _g_object_unref0 (_tmp0_), _tmp2_); +#line 1331 "fillmore.vala" + gtk_rc_parse (rc_file); +#line 1334 "fillmore.vala" + project_file = NULL; +#line 1335 "fillmore.vala" + if (args_length1 > 1) { +#line 4033 "fillmore.c" + char* _tmp3_; +#line 1336 "fillmore.vala" + project_file = (_tmp3_ = g_strdup (args[1]), _g_free0 (project_file), _tmp3_); +#line 4037 "fillmore.c" + { + char* _tmp4_; + char* _tmp5_; +#line 1338 "fillmore.vala" + _tmp4_ = g_filename_from_uri (project_file, NULL, &_inner_error_); +#line 4043 "fillmore.c" + if (_inner_error_ != NULL) { + goto __catch10_g_error; + } +#line 1338 "fillmore.vala" + project_file = (_tmp5_ = _tmp4_, _g_free0 (project_file), _tmp5_); +#line 4049 "fillmore.c" + } + goto __finally10; + __catch10_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally10: + if (_inner_error_ != NULL) { + _g_free0 (rc_file); + _g_free0 (project_file); + goto __catch9_g_error; + } + } +#line 1342 "fillmore.vala" + class_factory_set_class_factory (CLASS_FACTORY (_tmp6_ = fillmore_class_factory_new ())); +#line 4070 "fillmore.c" + _class_factory_unref0 (_tmp6_); +#line 1343 "fillmore.vala" + view_media_engine_can_run (&_inner_error_); +#line 4074 "fillmore.c" + if (_inner_error_ != NULL) { + _g_free0 (rc_file); + _g_free0 (project_file); + goto __catch9_g_error; + } +#line 1345 "fillmore.vala" + recorder = g_object_ref_sink (recorder_new (project_file, &_inner_error_)); +#line 4082 "fillmore.c" + if (_inner_error_ != NULL) { + _g_free0 (rc_file); + _g_free0 (project_file); + goto __catch9_g_error; + } +#line 1346 "fillmore.vala" + gtk_widget_show_all (GTK_WIDGET (recorder)); +#line 1347 "fillmore.vala" + gtk_main (); +#line 4092 "fillmore.c" + _g_free0 (rc_file); + _g_free0 (project_file); + _g_object_unref0 (recorder); + } + goto __finally9; + __catch9_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 1349 "fillmore.vala" + recorder_do_error_dialog ("Could not start application.", e->message); +#line 4106 "fillmore.c" + _g_error_free0 (e); + } + } + __finally9: + if (_inner_error_ != NULL) { + _g_option_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _g_option_context_free0 (context); +} + + +#line 1304 "fillmore.vala" +Fillmore* fillmore_construct (GType object_type) { +#line 4123 "fillmore.c" + Fillmore * self; + self = g_object_newv (object_type, 0, NULL); + return self; +} + + +#line 1304 "fillmore.vala" +Fillmore* fillmore_new (void) { +#line 1304 "fillmore.vala" + return fillmore_construct (TYPE_FILLMORE); +#line 4134 "fillmore.c" +} + + +static GObject * fillmore_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { + GObject * obj; + GObjectClass * parent_class; + Fillmore * self; + parent_class = G_OBJECT_CLASS (fillmore_parent_class); + obj = parent_class->constructor (type, n_construct_properties, construct_properties); + self = FILLMORE (obj); + { + } + return obj; +} + + +static void fillmore_class_init (FillmoreClass * klass) { + fillmore_parent_class = g_type_class_peek_parent (klass); + G_OBJECT_CLASS (klass)->constructor = fillmore_constructor; +} + + +static void fillmore_instance_init (Fillmore * self) { +} + + +GType fillmore_get_type (void) { + static volatile gsize fillmore_type_id__volatile = 0; + if (g_once_init_enter (&fillmore_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (FillmoreClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) fillmore_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Fillmore), 0, (GInstanceInitFunc) fillmore_instance_init, NULL }; + GType fillmore_type_id; + fillmore_type_id = g_type_register_static (HILDON_TYPE_PROGRAM, "Fillmore", &g_define_type_info, 0); + g_once_init_leave (&fillmore_type_id__volatile, fillmore_type_id); + } + return fillmore_type_id__volatile; +} + + +#line 1354 "fillmore.vala" +gint _vala_main (char** args, int args_length1) { +#line 4175 "fillmore.c" + gint result = 0; + Fillmore* fillmore; +#line 1355 "fillmore.vala" + gtk_init (&args_length1, &args); +#line 1356 "fillmore.vala" + gst_init (&args_length1, &args); +#line 1357 "fillmore.vala" + fillmore = fillmore_new (); +#line 1358 "fillmore.vala" + fillmore_run (fillmore, args, args_length1); +#line 4186 "fillmore.c" + result = 0; + _g_object_unref0 (fillmore); +#line 1359 "fillmore.vala" + return result; +#line 4191 "fillmore.c" +} + + +#line 1354 "fillmore.vala" +int main (int argc, char ** argv) { +#line 4197 "fillmore.c" + g_thread_init (NULL); +#line 1354 "fillmore.vala" + g_type_init (); +#line 1354 "fillmore.vala" + return _vala_main (argv, argc); +#line 4203 "fillmore.c" +} + + +#line 1362 "fillmore.vala" +void NO_main (char** args, int args_length1) { +#line 4209 "fillmore.c" + GError * _inner_error_; + GOptionContext* context; + _inner_error_ = NULL; +#line 1363 "fillmore.vala" + hildon_gtk_init (&args_length1, &args); +#line 1364 "fillmore.vala" + debug_level = -1; +#line 1365 "fillmore.vala" + context = g_option_context_new (" [project file] - Record and edit multitrack audio"); +#line 1367 "fillmore.vala" + g_option_context_add_main_entries (context, options, NULL); +#line 1368 "fillmore.vala" + g_option_context_add_group (context, gst_init_get_option_group ()); +#line 4223 "fillmore.c" + { +#line 1371 "fillmore.vala" + g_option_context_parse (context, &args_length1, &args, &_inner_error_); +#line 4227 "fillmore.c" + if (_inner_error_ != NULL) { + goto __catch11_g_error; + } + } + goto __finally11; + __catch11_g_error: + { + GError * arg_error; + arg_error = _inner_error_; + _inner_error_ = NULL; + { +#line 1373 "fillmore.vala" + fprintf (stderr, "%s\n" \ +"Run 'fillmore --help' for a full list of available command line option" \ +"s.", arg_error->message); +#line 4241 "fillmore.c" + _g_error_free0 (arg_error); + _g_option_context_free0 (context); +#line 1375 "fillmore.vala" + return; +#line 4246 "fillmore.c" + } + } + __finally11: + if (_inner_error_ != NULL) { + _g_option_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 1377 "fillmore.vala" + gtk_init (&args_length1, &args); +#line 4258 "fillmore.c" + { + GFile* _tmp1_; + GFile* _tmp0_; + char* _tmp2_; + char* rc_file; + char* project_file; + FillmoreClassFactory* _tmp6_; + Recorder* recorder; +#line 1379 "fillmore.vala" + g_set_application_name ("Fillmore"); +#line 1380 "fillmore.vala" + if (debug_level > (-1)) { +#line 1381 "fillmore.vala" + logging_set_logging_level ((LoggingLevel) debug_level); +#line 4273 "fillmore.c" + } +#line 1384 "fillmore.vala" + app_dirs_init (args[0], _PROGRAM_NAME); +#line 1385 "fillmore.vala" + rc_file = (_tmp2_ = g_file_get_path (_tmp1_ = g_file_get_child (_tmp0_ = app_dirs_get_resources_dir (), "fillmore.rc")), _g_object_unref0 (_tmp1_), _g_object_unref0 (_tmp0_), _tmp2_); +#line 1387 "fillmore.vala" + gtk_rc_parse (rc_file); +#line 1388 "fillmore.vala" + gst_init (&args_length1, &args); +#line 1390 "fillmore.vala" + project_file = NULL; +#line 1391 "fillmore.vala" + if (args_length1 > 1) { +#line 4287 "fillmore.c" + char* _tmp3_; +#line 1392 "fillmore.vala" + project_file = (_tmp3_ = g_strdup (args[1]), _g_free0 (project_file), _tmp3_); +#line 4291 "fillmore.c" + { + char* _tmp4_; + char* _tmp5_; +#line 1394 "fillmore.vala" + _tmp4_ = g_filename_from_uri (project_file, NULL, &_inner_error_); +#line 4297 "fillmore.c" + if (_inner_error_ != NULL) { + goto __catch13_g_error; + } +#line 1394 "fillmore.vala" + project_file = (_tmp5_ = _tmp4_, _g_free0 (project_file), _tmp5_); +#line 4303 "fillmore.c" + } + goto __finally13; + __catch13_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally13: + if (_inner_error_ != NULL) { + _g_free0 (rc_file); + _g_free0 (project_file); + goto __catch12_g_error; + } + } +#line 1398 "fillmore.vala" + class_factory_set_class_factory (CLASS_FACTORY (_tmp6_ = fillmore_class_factory_new ())); +#line 4324 "fillmore.c" + _class_factory_unref0 (_tmp6_); +#line 1399 "fillmore.vala" + view_media_engine_can_run (&_inner_error_); +#line 4328 "fillmore.c" + if (_inner_error_ != NULL) { + _g_free0 (rc_file); + _g_free0 (project_file); + goto __catch12_g_error; + } +#line 1401 "fillmore.vala" + recorder = g_object_ref_sink (recorder_new (project_file, &_inner_error_)); +#line 4336 "fillmore.c" + if (_inner_error_ != NULL) { + _g_free0 (rc_file); + _g_free0 (project_file); + goto __catch12_g_error; + } +#line 1402 "fillmore.vala" + gtk_widget_show_all (GTK_WIDGET (recorder)); +#line 1403 "fillmore.vala" + gtk_main (); +#line 4346 "fillmore.c" + _g_free0 (rc_file); + _g_free0 (project_file); + _g_object_unref0 (recorder); + } + goto __finally12; + __catch12_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 1405 "fillmore.vala" + recorder_do_error_dialog ("Could not start application.", e->message); +#line 4360 "fillmore.c" + _g_error_free0 (e); + } + } + __finally12: + if (_inner_error_ != NULL) { + _g_option_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _g_option_context_free0 (context); +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/fillmore/fillmore/fillmore.o b/src/fillmore/fillmore/fillmore.o new file mode 100644 index 0000000000000000000000000000000000000000..bc71086f72aceef7682b91e6fbc03ce9b3ed8302 GIT binary patch literal 275252 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

A7o0UCxkxE%wZYE*U4e7jkim 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_TRACK_HEADER (track_header_get_type ()) +#define TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_HEADER, TrackHeader)) +#define TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_HEADER, TrackHeaderClass)) +#define IS_TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_HEADER)) +#define IS_TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_HEADER)) +#define TRACK_HEADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_HEADER, TrackHeaderClass)) + +typedef struct _TrackHeader TrackHeader; +typedef struct _TrackHeaderClass TrackHeaderClass; +typedef struct _TrackHeaderPrivate TrackHeaderPrivate; + +#define TYPE_HEADER_AREA (header_area_get_type ()) +#define HEADER_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HEADER_AREA, HeaderArea)) +#define HEADER_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HEADER_AREA, HeaderAreaClass)) +#define IS_HEADER_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HEADER_AREA)) +#define IS_HEADER_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HEADER_AREA)) +#define HEADER_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HEADER_AREA, HeaderAreaClass)) + +typedef struct _HeaderArea HeaderArea; +typedef struct _HeaderAreaClass HeaderAreaClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +typedef struct _HeaderAreaPrivate HeaderAreaPrivate; + +#define TYPE_SLIDER_BASE (slider_base_get_type ()) +#define SLIDER_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SLIDER_BASE, SliderBase)) +#define SLIDER_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SLIDER_BASE, SliderBaseClass)) +#define IS_SLIDER_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SLIDER_BASE)) +#define IS_SLIDER_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SLIDER_BASE)) +#define SLIDER_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SLIDER_BASE, SliderBaseClass)) + +typedef struct _SliderBase SliderBase; +typedef struct _SliderBaseClass SliderBaseClass; +typedef struct _SliderBasePrivate SliderBasePrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +#define TYPE_PAN_SLIDER (pan_slider_get_type ()) +#define PAN_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PAN_SLIDER, PanSlider)) +#define PAN_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PAN_SLIDER, PanSliderClass)) +#define IS_PAN_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PAN_SLIDER)) +#define IS_PAN_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PAN_SLIDER)) +#define PAN_SLIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PAN_SLIDER, PanSliderClass)) + +typedef struct _PanSlider PanSlider; +typedef struct _PanSliderClass PanSliderClass; +typedef struct _PanSliderPrivate PanSliderPrivate; + +#define TYPE_VOLUME_SLIDER (volume_slider_get_type ()) +#define VOLUME_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VOLUME_SLIDER, VolumeSlider)) +#define VOLUME_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VOLUME_SLIDER, VolumeSliderClass)) +#define IS_VOLUME_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VOLUME_SLIDER)) +#define IS_VOLUME_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VOLUME_SLIDER)) +#define VOLUME_SLIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VOLUME_SLIDER, VolumeSliderClass)) + +typedef struct _VolumeSlider VolumeSlider; +typedef struct _VolumeSliderClass VolumeSliderClass; +typedef struct _VolumeSliderPrivate VolumeSliderPrivate; + +#define TYPE_AUDIO_TRACK_HEADER (audio_track_header_get_type ()) +#define AUDIO_TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_AUDIO_TRACK_HEADER, AudioTrackHeader)) +#define AUDIO_TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_AUDIO_TRACK_HEADER, AudioTrackHeaderClass)) +#define IS_AUDIO_TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_AUDIO_TRACK_HEADER)) +#define IS_AUDIO_TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_AUDIO_TRACK_HEADER)) +#define AUDIO_TRACK_HEADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_AUDIO_TRACK_HEADER, AudioTrackHeaderClass)) + +typedef struct _AudioTrackHeader AudioTrackHeader; +typedef struct _AudioTrackHeaderClass AudioTrackHeaderClass; +typedef struct _AudioTrackHeaderPrivate AudioTrackHeaderPrivate; +#define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL))) + +#define ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP (id_works_volume_and_pan_pop_up_get_type ()) +#define ID_WORKS_VOLUME_AND_PAN_POP_UP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUp)) +#define ID_WORKS_VOLUME_AND_PAN_POP_UP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUpClass)) +#define ID_WORKS_IS_VOLUME_AND_PAN_POP_UP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP)) +#define ID_WORKS_IS_VOLUME_AND_PAN_POP_UP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP)) +#define ID_WORKS_VOLUME_AND_PAN_POP_UP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUpClass)) + +typedef struct _IdWorksVolumeAndPanPopUp IdWorksVolumeAndPanPopUp; +typedef struct _IdWorksVolumeAndPanPopUpClass IdWorksVolumeAndPanPopUpClass; + +#define TYPE_RECORDER (recorder_get_type ()) +#define RECORDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RECORDER, Recorder)) +#define RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RECORDER, RecorderClass)) +#define IS_RECORDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RECORDER)) +#define IS_RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RECORDER)) +#define RECORDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RECORDER, RecorderClass)) + +typedef struct _Recorder Recorder; +typedef struct _RecorderClass RecorderClass; +typedef struct _RecorderPrivate RecorderPrivate; + +#define MODEL_TYPE_AUDIO_PROJECT (model_audio_project_get_type ()) +#define MODEL_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProject)) +#define MODEL_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) +#define MODEL_IS_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_IS_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_PROJECT)) +#define MODEL_AUDIO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass)) + +typedef struct _ModelAudioProject ModelAudioProject; +typedef struct _ModelAudioProjectClass ModelAudioProjectClass; + +#define TYPE_TRACK_SEPARATOR (track_separator_get_type ()) +#define TRACK_SEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_SEPARATOR, TrackSeparator)) +#define TRACK_SEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_SEPARATOR, TrackSeparatorClass)) +#define IS_TRACK_SEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_SEPARATOR)) +#define IS_TRACK_SEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_SEPARATOR)) +#define TRACK_SEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_SEPARATOR, TrackSeparatorClass)) + +typedef struct _TrackSeparator TrackSeparator; +typedef struct _TrackSeparatorClass TrackSeparatorClass; +#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) + +struct _TrackHeader { + GtkEventBox parent_instance; + TrackHeaderPrivate * priv; + ModelTrack* track; + HeaderArea* header_area; + GtkLabel* track_label; +}; + +struct _TrackHeaderClass { + GtkEventBoxClass parent_class; +}; + +struct _HeaderArea { + GtkEventBox parent_instance; + HeaderAreaPrivate * priv; + GdkColor background_color; +}; + +struct _HeaderAreaClass { + GtkEventBoxClass parent_class; +}; + +struct _SliderBase { + GtkHScrollbar parent_instance; + SliderBasePrivate * priv; +}; + +struct _SliderBaseClass { + GtkHScrollbarClass parent_class; +}; + +struct _SliderBasePrivate { + GdkPixbuf* slider_image; +}; + +struct _PanSlider { + SliderBase parent_instance; + PanSliderPrivate * priv; +}; + +struct _PanSliderClass { + SliderBaseClass parent_class; +}; + +struct _VolumeSlider { + SliderBase parent_instance; + VolumeSliderPrivate * priv; +}; + +struct _VolumeSliderClass { + SliderBaseClass parent_class; +}; + +struct _AudioTrackHeader { + TrackHeader parent_instance; + AudioTrackHeaderPrivate * priv; + double panorama; + double volume; +}; + +struct _AudioTrackHeaderClass { + TrackHeaderClass parent_class; +}; + +struct _HeaderAreaPrivate { + ModelProject* project; + GtkVBox* vbox; +}; + +struct _Recorder { + GtkWindow parent_instance; + RecorderPrivate * priv; + ModelAudioProject* project; + TimeLine* timeline; +}; + +struct _RecorderClass { + GtkWindowClass parent_class; +}; + + +static gpointer track_header_parent_class = NULL; +static gpointer slider_base_parent_class = NULL; +static gpointer pan_slider_parent_class = NULL; +static gpointer volume_slider_parent_class = NULL; +static gpointer audio_track_header_parent_class = NULL; +static gpointer header_area_parent_class = NULL; + +GType track_header_get_type (void); +GType header_area_get_type (void); +enum { + TRACK_HEADER_DUMMY_PROPERTY +}; +#define TRACK_HEADER_width 100 +static void track_header_on_track_renamed (TrackHeader* self); +static void _track_header_on_track_renamed_model_track_track_renamed (ModelTrack* _sender, ModelTrack* track, gpointer self); +static void track_header_on_track_selection_changed (TrackHeader* self, ModelTrack* track); +static void _track_header_on_track_selection_changed_model_track_track_selection_changed (ModelTrack* _sender, ModelTrack* track, gpointer self); +TrackHeader* track_header_new (ModelTrack* track, HeaderArea* area, gint height); +TrackHeader* track_header_construct (GType object_type, ModelTrack* track, HeaderArea* area, gint height); +void header_area_select (HeaderArea* self, ModelTrack* track); +static gboolean track_header_real_button_press_event (GtkWidget* base, GdkEventButton* event); +ModelTrack* track_header_get_track (TrackHeader* self); +static void track_header_finalize (GObject* obj); +GType slider_base_get_type (void); +#define SLIDER_BASE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SLIDER_BASE, SliderBasePrivate)) +enum { + SLIDER_BASE_DUMMY_PROPERTY +}; +static gboolean slider_base_real_expose_event (GtkWidget* base, GdkEventExpose* event); +SliderBase* slider_base_new (void); +SliderBase* slider_base_construct (GType object_type); +static GObject * slider_base_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); +static void slider_base_finalize (GObject* obj); +GType pan_slider_get_type (void); +enum { + PAN_SLIDER_DUMMY_PROPERTY +}; +PanSlider* pan_slider_new (void); +PanSlider* pan_slider_construct (GType object_type); +static GObject * pan_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); +GType volume_slider_get_type (void); +enum { + VOLUME_SLIDER_DUMMY_PROPERTY +}; +VolumeSlider* volume_slider_new (void); +VolumeSlider* volume_slider_construct (GType object_type); +static GObject * volume_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); +GType audio_track_header_get_type (void); +enum { + AUDIO_TRACK_HEADER_DUMMY_PROPERTY +}; +static void audio_track_header_on_parameter_changed (AudioTrackHeader* self, ModelParameter parameter, double new_value); +static void _audio_track_header_on_parameter_changed_model_audio_track_parameter_changed (ModelAudioTrack* _sender, ModelParameter parameter, double new_value, gpointer self); +static void audio_track_header_do_volpan_popup (AudioTrackHeader* self); +static void _audio_track_header_do_volpan_popup_gtk_button_clicked (GtkButton* _sender, gpointer self); +AudioTrackHeader* audio_track_header_new (ModelAudioTrack* track, HeaderArea* header, gint height); +AudioTrackHeader* audio_track_header_construct (GType object_type, ModelAudioTrack* track, HeaderArea* header, gint height); +IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_new (GtkWidget* parent, const char* title); +IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_construct (GType object_type, GtkWidget* parent, const char* title); +GType id_works_volume_and_pan_pop_up_get_type (void); +void id_works_volume_and_pan_pop_up_set_volume (IdWorksVolumeAndPanPopUp* self, double volume); +void id_works_volume_and_pan_pop_up_set_panorama (IdWorksVolumeAndPanPopUp* self, double panorama); +static void audio_track_header_on_volume_updated (AudioTrackHeader* self, double val); +static void _audio_track_header_on_volume_updated_id_works_volume_and_pan_pop_up_volume_updated (IdWorksVolumeAndPanPopUp* _sender, double volume, gpointer self); +static void audio_track_header_on_panorama_updated (AudioTrackHeader* self, double val); +static void _audio_track_header_on_panorama_updated_id_works_volume_and_pan_pop_up_panorama_updated (IdWorksVolumeAndPanPopUp* _sender, double panorama, gpointer self); +static void audio_track_header_finalize (GObject* obj); +#define HEADER_AREA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_HEADER_AREA, HeaderAreaPrivate)) +enum { + HEADER_AREA_DUMMY_PROPERTY +}; +GType recorder_get_type (void); +GType model_audio_project_get_type (void); +void header_area_on_trackview_removed (HeaderArea* self, TrackView* trackview); +static void _header_area_on_trackview_removed_time_line_trackview_removed (TimeLine* _sender, TrackView* trackview, gpointer self); +void header_area_on_trackview_added (HeaderArea* self, TrackView* trackview); +static void _header_area_on_trackview_added_time_line_trackview_added (TimeLine* _sender, TrackView* trackview, gpointer self); +TrackSeparator* track_separator_new (void); +TrackSeparator* track_separator_construct (GType object_type); +GType track_separator_get_type (void); +HeaderArea* header_area_new (Recorder* recorder, ModelTimeSystem* provider, gint height); +HeaderArea* header_area_construct (GType object_type, Recorder* recorder, ModelTimeSystem* provider, gint height); +static void header_area_finalize (GObject* obj); + + + +#line 30 "header_area.vala" +static void _track_header_on_track_renamed_model_track_track_renamed (ModelTrack* _sender, ModelTrack* track, gpointer self) { +#line 308 "header_area.c" + track_header_on_track_renamed (self); +} + + +#line 35 "header_area.vala" +static void _track_header_on_track_selection_changed_model_track_track_selection_changed (ModelTrack* _sender, ModelTrack* track, gpointer self) { +#line 315 "header_area.c" + track_header_on_track_selection_changed (self, track); +} + + +#line 16 "header_area.vala" +TrackHeader* track_header_construct (GType object_type, ModelTrack* track, HeaderArea* area, gint height) { +#line 322 "header_area.c" + TrackHeader * self; + GdkColor _tmp1_; + GdkColor _tmp0_ = {0}; + GtkLabel* _tmp2_; + GdkColor _tmp4_; + GdkColor _tmp3_ = {0}; +#line 16 "header_area.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 16 "header_area.vala" + g_return_val_if_fail (IS_HEADER_AREA (area), NULL); +#line 333 "header_area.c" + self = g_object_newv (object_type, 0, NULL); +#line 17 "header_area.vala" + self->track = track; +#line 18 "header_area.vala" + self->header_area = area; +#line 20 "header_area.vala" + g_signal_connect_object (track, "track-renamed", (GCallback) _track_header_on_track_renamed_model_track_track_renamed, self, 0); +#line 21 "header_area.vala" + g_signal_connect_object (track, "track-selection-changed", (GCallback) _track_header_on_track_selection_changed_model_track_track_selection_changed, self, 0); +#line 22 "header_area.vala" + gtk_widget_set_size_request (GTK_WIDGET (self), TRACK_HEADER_width, height); +#line 23 "header_area.vala" + gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, &self->header_area->background_color); +#line 24 "header_area.vala" + gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_SELECTED, (_tmp1_ = (parse_color ("#68a", &_tmp0_), _tmp0_), &_tmp1_)); +#line 26 "header_area.vala" + self->track_label = (_tmp2_ = g_object_ref_sink ((GtkLabel*) gtk_label_new (track->display_name)), _g_object_unref0 (self->track_label), _tmp2_); +#line 27 "header_area.vala" + gtk_widget_modify_fg (GTK_WIDGET (self->track_label), GTK_STATE_NORMAL, (_tmp4_ = (parse_color ("#fff", &_tmp3_), _tmp3_), &_tmp4_)); +#line 353 "header_area.c" + return self; +} + + +#line 16 "header_area.vala" +TrackHeader* track_header_new (ModelTrack* track, HeaderArea* area, gint height) { +#line 16 "header_area.vala" + return track_header_construct (TYPE_TRACK_HEADER, track, area, height); +#line 362 "header_area.c" +} + + +#line 30 "header_area.vala" +static void track_header_on_track_renamed (TrackHeader* self) { +#line 30 "header_area.vala" + g_return_if_fail (IS_TRACK_HEADER (self)); +#line 31 "header_area.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_renamed"); +#line 32 "header_area.vala" + gtk_label_set_text (self->track_label, self->track->display_name); +#line 374 "header_area.c" +} + + +#line 35 "header_area.vala" +static void track_header_on_track_selection_changed (TrackHeader* self, ModelTrack* track) { +#line 380 "header_area.c" + GtkStateType _tmp0_ = 0; +#line 35 "header_area.vala" + g_return_if_fail (IS_TRACK_HEADER (self)); +#line 35 "header_area.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 36 "header_area.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_selection_changed"); +#line 37 "header_area.vala" + if (model_track_get_is_selected (track)) { +#line 37 "header_area.vala" + _tmp0_ = GTK_STATE_SELECTED; +#line 392 "header_area.c" + } else { +#line 37 "header_area.vala" + _tmp0_ = GTK_STATE_NORMAL; +#line 396 "header_area.c" + } +#line 37 "header_area.vala" + gtk_widget_set_state (GTK_WIDGET (self), _tmp0_); +#line 400 "header_area.c" +} + + +#line 40 "header_area.vala" +static gboolean track_header_real_button_press_event (GtkWidget* base, GdkEventButton* event) { +#line 406 "header_area.c" + TrackHeader * self; + gboolean result = FALSE; + self = TRACK_HEADER (base); +#line 41 "header_area.vala" + header_area_select (self->header_area, self->track); +#line 412 "header_area.c" + result = TRUE; +#line 42 "header_area.vala" + return result; +#line 416 "header_area.c" +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 45 "header_area.vala" +ModelTrack* track_header_get_track (TrackHeader* self) { +#line 427 "header_area.c" + ModelTrack* result = NULL; +#line 45 "header_area.vala" + g_return_val_if_fail (IS_TRACK_HEADER (self), NULL); +#line 431 "header_area.c" + result = _g_object_ref0 (self->track); +#line 46 "header_area.vala" + return result; +#line 435 "header_area.c" +} + + +static void track_header_class_init (TrackHeaderClass * klass) { + track_header_parent_class = g_type_class_peek_parent (klass); + GTK_WIDGET_CLASS (klass)->button_press_event = track_header_real_button_press_event; + G_OBJECT_CLASS (klass)->finalize = track_header_finalize; +} + + +static void track_header_instance_init (TrackHeader * self) { +} + + +static void track_header_finalize (GObject* obj) { + TrackHeader * self; + self = TRACK_HEADER (obj); + _g_object_unref0 (self->track_label); + G_OBJECT_CLASS (track_header_parent_class)->finalize (obj); +} + + +GType track_header_get_type (void) { + static volatile gsize track_header_type_id__volatile = 0; + if (g_once_init_enter (&track_header_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (TrackHeaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) track_header_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackHeader), 0, (GInstanceInitFunc) track_header_instance_init, NULL }; + GType track_header_type_id; + track_header_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "TrackHeader", &g_define_type_info, 0); + g_once_init_leave (&track_header_type_id__volatile, track_header_type_id); + } + return track_header_type_id__volatile; +} + + +#line 62 "header_area.vala" +static gboolean slider_base_real_expose_event (GtkWidget* base, GdkEventExpose* event) { +#line 472 "header_area.c" + SliderBase * self; + gboolean result = FALSE; + GdkGC* gc; + gint radius; + gint center; + gint height; + self = SLIDER_BASE (base); +#line 63 "header_area.vala" + gc = _g_object_ref0 (gtk_widget_get_style (GTK_WIDGET (self))->fg_gc[(gint) GTK_STATE_NORMAL]); +#line 64 "header_area.vala" + radius = (GTK_RANGE (self)->slider_end - GTK_RANGE (self)->slider_start) / 2; +#line 65 "header_area.vala" + center = (GTK_WIDGET (self)->allocation.x + GTK_RANGE (self)->slider_start) + radius; +#line 66 "header_area.vala" + height = GTK_WIDGET (self)->allocation.y + (GTK_WIDGET (self)->allocation.height / 2); +#line 68 "header_area.vala" + gdk_draw_rectangle (GDK_DRAWABLE ((*event).window), gc, FALSE, GTK_WIDGET (self)->allocation.x + radius, height - 2, GTK_WIDGET (self)->allocation.width - (2 * radius), 1); +#line 71 "header_area.vala" + gdk_draw_pixbuf (GDK_DRAWABLE ((*event).window), gc, self->priv->slider_image, 0, 0, center - radius, GTK_WIDGET (self)->allocation.y + 2, gdk_pixbuf_get_width (self->priv->slider_image), gdk_pixbuf_get_height (self->priv->slider_image), GDK_RGB_DITHER_NORMAL, 0, 0); +#line 492 "header_area.c" + result = TRUE; + _g_object_unref0 (gc); +#line 73 "header_area.vala" + return result; +#line 497 "header_area.c" +} + + +#line 50 "header_area.vala" +SliderBase* slider_base_construct (GType object_type) { +#line 503 "header_area.c" + SliderBase * self; + self = g_object_newv (object_type, 0, NULL); + return self; +} + + +#line 50 "header_area.vala" +SliderBase* slider_base_new (void) { +#line 50 "header_area.vala" + return slider_base_construct (TYPE_SLIDER_BASE); +#line 514 "header_area.c" +} + + +static GObject * slider_base_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { + GObject * obj; + GObjectClass * parent_class; + SliderBase * self; + GError * _inner_error_; + parent_class = G_OBJECT_CLASS (slider_base_parent_class); + obj = parent_class->constructor (type, n_construct_properties, construct_properties); + self = SLIDER_BASE (obj); + _inner_error_ = NULL; + { +#line 53 "header_area.vala" + g_object_set (GTK_WIDGET (self), "can-focus", TRUE, NULL); +#line 530 "header_area.c" + { + char* _tmp2_; + GFile* _tmp1_; + GFile* _tmp0_; + GdkPixbuf* _tmp3_; + GdkPixbuf* _tmp4_; + GdkPixbuf* _tmp5_; +#line 55 "header_area.vala" + _tmp4_ = (_tmp3_ = gdk_pixbuf_new_from_file (_tmp2_ = g_file_get_path (_tmp1_ = g_file_get_child (_tmp0_ = app_dirs_get_resources_dir (), "dot.png")), &_inner_error_), _g_free0 (_tmp2_), _g_object_unref0 (_tmp1_), _g_object_unref0 (_tmp0_), _tmp3_); +#line 540 "header_area.c" + if (_inner_error_ != NULL) { + goto __catch14_g_error; + } +#line 55 "header_area.vala" + self->priv->slider_image = (_tmp5_ = _tmp4_, _g_object_unref0 (self->priv->slider_image), _tmp5_); +#line 546 "header_area.c" + } + goto __finally14; + __catch14_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 58 "header_area.vala" + g_warning ("header_area.vala:58: Could not load resource for slider: %s", e->message); +#line 557 "header_area.c" + _g_error_free0 (e); + } + } + __finally14: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + } + } + return obj; +} + + +static void slider_base_class_init (SliderBaseClass * klass) { + slider_base_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (SliderBasePrivate)); + GTK_WIDGET_CLASS (klass)->expose_event = slider_base_real_expose_event; + G_OBJECT_CLASS (klass)->constructor = slider_base_constructor; + G_OBJECT_CLASS (klass)->finalize = slider_base_finalize; +} + + +static void slider_base_instance_init (SliderBase * self) { + self->priv = SLIDER_BASE_GET_PRIVATE (self); +} + + +static void slider_base_finalize (GObject* obj) { + SliderBase * self; + self = SLIDER_BASE (obj); + _g_object_unref0 (self->priv->slider_image); + G_OBJECT_CLASS (slider_base_parent_class)->finalize (obj); +} + + +GType slider_base_get_type (void) { + static volatile gsize slider_base_type_id__volatile = 0; + if (g_once_init_enter (&slider_base_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (SliderBaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) slider_base_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SliderBase), 0, (GInstanceInitFunc) slider_base_instance_init, NULL }; + GType slider_base_type_id; + slider_base_type_id = g_type_register_static (GTK_TYPE_HSCROLLBAR, "SliderBase", &g_define_type_info, 0); + g_once_init_leave (&slider_base_type_id__volatile, slider_base_type_id); + } + return slider_base_type_id__volatile; +} + + +#line 77 "header_area.vala" +PanSlider* pan_slider_construct (GType object_type) { +#line 607 "header_area.c" + PanSlider * self; + self = g_object_newv (object_type, 0, NULL); + return self; +} + + +#line 77 "header_area.vala" +PanSlider* pan_slider_new (void) { +#line 77 "header_area.vala" + return pan_slider_construct (TYPE_PAN_SLIDER); +#line 618 "header_area.c" +} + + +static GObject * pan_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { + GObject * obj; + GObjectClass * parent_class; + PanSlider * self; + parent_class = G_OBJECT_CLASS (pan_slider_parent_class); + obj = parent_class->constructor (type, n_construct_properties, construct_properties); + self = PAN_SLIDER (obj); + { + } + return obj; +} + + +static void pan_slider_class_init (PanSliderClass * klass) { + pan_slider_parent_class = g_type_class_peek_parent (klass); + G_OBJECT_CLASS (klass)->constructor = pan_slider_constructor; +} + + +static void pan_slider_instance_init (PanSlider * self) { +} + + +GType pan_slider_get_type (void) { + static volatile gsize pan_slider_type_id__volatile = 0; + if (g_once_init_enter (&pan_slider_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (PanSliderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) pan_slider_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PanSlider), 0, (GInstanceInitFunc) pan_slider_instance_init, NULL }; + GType pan_slider_type_id; + pan_slider_type_id = g_type_register_static (TYPE_SLIDER_BASE, "PanSlider", &g_define_type_info, 0); + g_once_init_leave (&pan_slider_type_id__volatile, pan_slider_type_id); + } + return pan_slider_type_id__volatile; +} + + +#line 82 "header_area.vala" +VolumeSlider* volume_slider_construct (GType object_type) { +#line 659 "header_area.c" + VolumeSlider * self; + self = g_object_newv (object_type, 0, NULL); + return self; +} + + +#line 82 "header_area.vala" +VolumeSlider* volume_slider_new (void) { +#line 82 "header_area.vala" + return volume_slider_construct (TYPE_VOLUME_SLIDER); +#line 670 "header_area.c" +} + + +static GObject * volume_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { + GObject * obj; + GObjectClass * parent_class; + VolumeSlider * self; + parent_class = G_OBJECT_CLASS (volume_slider_parent_class); + obj = parent_class->constructor (type, n_construct_properties, construct_properties); + self = VOLUME_SLIDER (obj); + { + } + return obj; +} + + +static void volume_slider_class_init (VolumeSliderClass * klass) { + volume_slider_parent_class = g_type_class_peek_parent (klass); + G_OBJECT_CLASS (klass)->constructor = volume_slider_constructor; +} + + +static void volume_slider_instance_init (VolumeSlider * self) { +} + + +GType volume_slider_get_type (void) { + static volatile gsize volume_slider_type_id__volatile = 0; + if (g_once_init_enter (&volume_slider_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (VolumeSliderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) volume_slider_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (VolumeSlider), 0, (GInstanceInitFunc) volume_slider_instance_init, NULL }; + GType volume_slider_type_id; + volume_slider_type_id = g_type_register_static (TYPE_SLIDER_BASE, "VolumeSlider", &g_define_type_info, 0); + g_once_init_leave (&volume_slider_type_id__volatile, volume_slider_type_id); + } + return volume_slider_type_id__volatile; +} + + +#line 164 "header_area.vala" +static void _audio_track_header_on_parameter_changed_model_audio_track_parameter_changed (ModelAudioTrack* _sender, ModelParameter parameter, double new_value, gpointer self) { +#line 711 "header_area.c" + audio_track_header_on_parameter_changed (self, parameter, new_value); +} + + +#line 119 "header_area.vala" +static void _audio_track_header_do_volpan_popup_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 718 "header_area.c" + audio_track_header_do_volpan_popup (self); +} + + +#line 91 "header_area.vala" +AudioTrackHeader* audio_track_header_construct (GType object_type, ModelAudioTrack* track, HeaderArea* header, gint height) { +#line 725 "header_area.c" + AudioTrackHeader * self; + PangoFontDescription* _tmp0_; + GtkVBox* vbox; + HildonButton* volpan_button; + GtkImage* _tmp1_; +#line 91 "header_area.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (track), NULL); +#line 91 "header_area.vala" + g_return_val_if_fail (IS_HEADER_AREA (header), NULL); +#line 92 "header_area.vala" + self = (AudioTrackHeader*) track_header_construct (object_type, MODEL_TRACK (track), header, height); +#line 94 "header_area.vala" + gtk_widget_modify_font (GTK_WIDGET (TRACK_HEADER (self)->track_label), _tmp0_ = pango_font_description_from_string ("Sans 10")); +#line 739 "header_area.c" + _pango_font_description_free0 (_tmp0_); +#line 95 "header_area.vala" + gtk_misc_set_padding (GTK_MISC (TRACK_HEADER (self)->track_label), 4, 2); +#line 96 "header_area.vala" + gtk_misc_set_alignment (GTK_MISC (TRACK_HEADER (self)->track_label), (float) 0, (float) 0); +#line 98 "header_area.vala" + g_signal_connect_object (track, "parameter-changed", (GCallback) _audio_track_header_on_parameter_changed_model_audio_track_parameter_changed, self, 0); +#line 100 "header_area.vala" + self->volume = model_audio_track_get_volume (track); +#line 101 "header_area.vala" + self->panorama = model_audio_track_get_pan (track); +#line 103 "header_area.vala" + vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); +#line 104 "header_area.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (TRACK_HEADER (self)->track_label), TRUE, TRUE, (guint) 0); +#line 105 "header_area.vala" + volpan_button = g_object_ref_sink ((HildonButton*) hildon_button_new (HILDON_SIZE_AUTO_HEIGHT | HILDON_SIZE_AUTO_WIDTH, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL)); +#line 107 "header_area.vala" + hildon_button_set_image (volpan_button, GTK_WIDGET (_tmp1_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("statusarea_volumelevel4", GTK_ICON_SIZE_BUTTON)))); +#line 759 "header_area.c" + _g_object_unref0 (_tmp1_); +#line 108 "header_area.vala" + hildon_button_set_image_position (volpan_button, GTK_POS_LEFT); +#line 109 "header_area.vala" + g_signal_connect_object (GTK_BUTTON (volpan_button), "clicked", (GCallback) _audio_track_header_do_volpan_popup_gtk_button_clicked, self, 0); +#line 110 "header_area.vala" + gtk_container_add (GTK_CONTAINER (vbox), GTK_WIDGET (volpan_button)); +#line 116 "header_area.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (vbox)); +#line 769 "header_area.c" + _g_object_unref0 (vbox); + _g_object_unref0 (volpan_button); + return self; +} + + +#line 91 "header_area.vala" +AudioTrackHeader* audio_track_header_new (ModelAudioTrack* track, HeaderArea* header, gint height) { +#line 91 "header_area.vala" + return audio_track_header_construct (TYPE_AUDIO_TRACK_HEADER, track, header, height); +#line 780 "header_area.c" +} + + +#line 148 "header_area.vala" +static void _audio_track_header_on_volume_updated_id_works_volume_and_pan_pop_up_volume_updated (IdWorksVolumeAndPanPopUp* _sender, double volume, gpointer self) { +#line 786 "header_area.c" + audio_track_header_on_volume_updated (self, volume); +} + + +#line 131 "header_area.vala" +static void _audio_track_header_on_panorama_updated_id_works_volume_and_pan_pop_up_panorama_updated (IdWorksVolumeAndPanPopUp* _sender, double panorama, gpointer self) { +#line 793 "header_area.c" + audio_track_header_on_panorama_updated (self, panorama); +} + + +#line 119 "header_area.vala" +static void audio_track_header_do_volpan_popup (AudioTrackHeader* self) { +#line 800 "header_area.c" + char* _tmp0_; + IdWorksVolumeAndPanPopUp* _tmp1_; + IdWorksVolumeAndPanPopUp* dlg; + IdWorksVolumeAndPanPopUp* _tmp2_; +#line 119 "header_area.vala" + g_return_if_fail (IS_AUDIO_TRACK_HEADER (self)); +#line 120 "header_area.vala" + dlg = (_tmp1_ = g_object_ref_sink (id_works_volume_and_pan_pop_up_new (GTK_WIDGET (self), _tmp0_ = g_strconcat ("Volume / Pan: ", TRACK_HEADER (self)->track->display_name, NULL))), _g_free0 (_tmp0_), _tmp1_); +#line 122 "header_area.vala" + id_works_volume_and_pan_pop_up_set_volume (dlg, self->volume); +#line 123 "header_area.vala" + id_works_volume_and_pan_pop_up_set_panorama (dlg, self->panorama); +#line 124 "header_area.vala" + g_signal_connect_object (dlg, "volume-updated", (GCallback) _audio_track_header_on_volume_updated_id_works_volume_and_pan_pop_up_volume_updated, self, 0); +#line 125 "header_area.vala" + g_signal_connect_object (dlg, "panorama-updated", (GCallback) _audio_track_header_on_panorama_updated_id_works_volume_and_pan_pop_up_panorama_updated, self, 0); +#line 126 "header_area.vala" + gtk_dialog_run (GTK_DIALOG (dlg)); +#line 127 "header_area.vala" + gtk_object_destroy (GTK_OBJECT (dlg)); +#line 128 "header_area.vala" + dlg = (_tmp2_ = NULL, _g_object_unref0 (dlg), _tmp2_); +#line 823 "header_area.c" + _g_object_unref0 (dlg); +} + + +#line 131 "header_area.vala" +static void audio_track_header_on_panorama_updated (AudioTrackHeader* self, double val) { +#line 830 "header_area.c" + ModelTrack* _tmp0_; + ModelAudioTrack* audio_track; +#line 131 "header_area.vala" + g_return_if_fail (IS_AUDIO_TRACK_HEADER (self)); +#line 132 "header_area.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pan_value_changed"); +#line 133 "header_area.vala" + audio_track = _g_object_ref0 ((_tmp0_ = TRACK_HEADER (self)->track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL)); +#line 134 "header_area.vala" + if (audio_track != NULL) { +#line 135 "header_area.vala" + model_audio_track_set_pan (audio_track, val); +#line 843 "header_area.c" + } + _g_object_unref0 (audio_track); +} + + +#line 148 "header_area.vala" +static void audio_track_header_on_volume_updated (AudioTrackHeader* self, double val) { +#line 851 "header_area.c" + ModelTrack* _tmp0_; + ModelAudioTrack* audio_track; +#line 148 "header_area.vala" + g_return_if_fail (IS_AUDIO_TRACK_HEADER (self)); +#line 149 "header_area.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_volume_value_changed"); +#line 150 "header_area.vala" + audio_track = _g_object_ref0 ((_tmp0_ = TRACK_HEADER (self)->track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL)); +#line 151 "header_area.vala" + if (audio_track != NULL) { +#line 152 "header_area.vala" + model_audio_track_set_volume (audio_track, val); +#line 864 "header_area.c" + } + _g_object_unref0 (audio_track); +} + + +#line 164 "header_area.vala" +static void audio_track_header_on_parameter_changed (AudioTrackHeader* self, ModelParameter parameter, double new_value) { +#line 872 "header_area.c" + ModelTrack* _tmp0_; + ModelAudioTrack* audio_track; +#line 164 "header_area.vala" + g_return_if_fail (IS_AUDIO_TRACK_HEADER (self)); +#line 165 "header_area.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_parameter_changed"); +#line 166 "header_area.vala" + audio_track = _g_object_ref0 ((_tmp0_ = TRACK_HEADER (self)->track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL)); +#line 167 "header_area.vala" + g_assert (audio_track != NULL); +#line 168 "header_area.vala" + switch (parameter) { +#line 885 "header_area.c" + case MODEL_PARAMETER_VOLUME: + { +#line 170 "header_area.vala" + self->volume = new_value; +#line 171 "header_area.vala" + break; +#line 892 "header_area.c" + } + case MODEL_PARAMETER_PAN: + { +#line 173 "header_area.vala" + self->panorama = new_value; +#line 174 "header_area.vala" + break; +#line 900 "header_area.c" + } + } + _g_object_unref0 (audio_track); +} + + +static void audio_track_header_class_init (AudioTrackHeaderClass * klass) { + audio_track_header_parent_class = g_type_class_peek_parent (klass); + G_OBJECT_CLASS (klass)->finalize = audio_track_header_finalize; +} + + +static void audio_track_header_instance_init (AudioTrackHeader * self) { +} + + +static void audio_track_header_finalize (GObject* obj) { + AudioTrackHeader * self; + self = AUDIO_TRACK_HEADER (obj); + G_OBJECT_CLASS (audio_track_header_parent_class)->finalize (obj); +} + + +GType audio_track_header_get_type (void) { + static volatile gsize audio_track_header_type_id__volatile = 0; + if (g_once_init_enter (&audio_track_header_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (AudioTrackHeaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) audio_track_header_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AudioTrackHeader), 0, (GInstanceInitFunc) audio_track_header_instance_init, NULL }; + GType audio_track_header_type_id; + audio_track_header_type_id = g_type_register_static (TYPE_TRACK_HEADER, "AudioTrackHeader", &g_define_type_info, 0); + g_once_init_leave (&audio_track_header_type_id__volatile, audio_track_header_type_id); + } + return audio_track_header_type_id__volatile; +} + + +#line 233 "header_area.vala" +static void _header_area_on_trackview_removed_time_line_trackview_removed (TimeLine* _sender, TrackView* trackview, gpointer self) { +#line 938 "header_area.c" + header_area_on_trackview_removed (self, trackview); +} + + +#line 219 "header_area.vala" +static void _header_area_on_trackview_added_time_line_trackview_added (TimeLine* _sender, TrackView* trackview, gpointer self) { +#line 945 "header_area.c" + header_area_on_trackview_added (self, trackview); +} + + +#line 198 "header_area.vala" +HeaderArea* header_area_construct (GType object_type, Recorder* recorder, ModelTimeSystem* provider, gint height) { +#line 952 "header_area.c" + HeaderArea * self; + GtkVBox* _tmp0_; + GtkDrawingArea* status_bar; + TrackSeparator* _tmp1_; +#line 198 "header_area.vala" + g_return_val_if_fail (IS_RECORDER (recorder), NULL); +#line 198 "header_area.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (provider), NULL); +#line 961 "header_area.c" + self = g_object_newv (object_type, 0, NULL); +#line 199 "header_area.vala" + self->priv->project = MODEL_PROJECT (recorder->project); +#line 200 "header_area.vala" + g_signal_connect_object (recorder->timeline, "trackview-removed", (GCallback) _header_area_on_trackview_removed_time_line_trackview_removed, self, 0); +#line 201 "header_area.vala" + g_signal_connect_object (recorder->timeline, "trackview-added", (GCallback) _header_area_on_trackview_added_time_line_trackview_added, self, 0); +#line 203 "header_area.vala" + gtk_widget_set_size_request (GTK_WIDGET (self), TRACK_HEADER_width, 0); +#line 204 "header_area.vala" + gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, &self->background_color); +#line 206 "header_area.vala" + self->priv->vbox = (_tmp0_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)), _g_object_unref0 (self->priv->vbox), _tmp0_); +#line 207 "header_area.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->vbox)); +#line 208 "header_area.vala" + status_bar = GTK_DRAWING_AREA (g_object_ref_sink (view_status_bar_new (self->priv->project, provider, height))); +#line 210 "header_area.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (status_bar), FALSE, FALSE, (guint) 0); +#line 212 "header_area.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (_tmp1_ = g_object_ref_sink (track_separator_new ())), FALSE, FALSE, (guint) 0); +#line 983 "header_area.c" + _g_object_unref0 (_tmp1_); + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (recorder->timeline->tracks)); +#line 214 "header_area.vala" + while (TRUE) { +#line 990 "header_area.c" + TrackView* track; +#line 214 "header_area.vala" + if (!gee_iterator_next (_track_it)) { +#line 214 "header_area.vala" + break; +#line 996 "header_area.c" + } +#line 214 "header_area.vala" + track = (TrackView*) gee_iterator_get (_track_it); +#line 215 "header_area.vala" + header_area_on_trackview_added (self, track); +#line 1002 "header_area.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + _g_object_unref0 (status_bar); + return self; +} + + +#line 198 "header_area.vala" +HeaderArea* header_area_new (Recorder* recorder, ModelTimeSystem* provider, gint height) { +#line 198 "header_area.vala" + return header_area_construct (TYPE_HEADER_AREA, recorder, provider, height); +#line 1016 "header_area.c" +} + + +#line 219 "header_area.vala" +void header_area_on_trackview_added (HeaderArea* self, TrackView* trackview) { +#line 1022 "header_area.c" + ModelTrack* _tmp0_; + ModelAudioTrack* audio_track; + TrackHeader* header; + TrackSeparator* _tmp1_; +#line 219 "header_area.vala" + g_return_if_fail (IS_HEADER_AREA (self)); +#line 219 "header_area.vala" + g_return_if_fail (IS_TRACK_VIEW (trackview)); +#line 220 "header_area.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_trackview_added"); +#line 221 "header_area.vala" + audio_track = (_tmp0_ = track_view_get_track (trackview), MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL); +#line 222 "header_area.vala" + g_assert (audio_track != NULL); +#line 226 "header_area.vala" + header = TRACK_HEADER (g_object_ref_sink (audio_track_header_new (audio_track, self, track_view_get_track_height (trackview)))); +#line 227 "header_area.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (header), FALSE, FALSE, (guint) 0); +#line 228 "header_area.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (_tmp1_ = g_object_ref_sink (track_separator_new ())), FALSE, FALSE, (guint) 0); +#line 1043 "header_area.c" + _g_object_unref0 (_tmp1_); +#line 229 "header_area.vala" + gtk_widget_show_all (GTK_WIDGET (self->priv->vbox)); +#line 230 "header_area.vala" + header_area_select (self, MODEL_TRACK (audio_track)); +#line 1049 "header_area.c" + _g_object_unref0 (audio_track); + _g_object_unref0 (header); +} + + +#line 233 "header_area.vala" +void header_area_on_trackview_removed (HeaderArea* self, TrackView* trackview) { +#line 1057 "header_area.c" + ModelTrack* track; + TrackHeader* my_track_header; + GtkHSeparator* my_separator; +#line 233 "header_area.vala" + g_return_if_fail (IS_HEADER_AREA (self)); +#line 233 "header_area.vala" + g_return_if_fail (IS_TRACK_VIEW (trackview)); +#line 234 "header_area.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_trackview_removed"); +#line 235 "header_area.vala" + track = track_view_get_track (trackview); +#line 236 "header_area.vala" + my_track_header = NULL; +#line 237 "header_area.vala" + my_separator = NULL; +#line 1073 "header_area.c" + { + GList* widget_collection; + GList* widget_it; +#line 238 "header_area.vala" + widget_collection = gtk_container_get_children (GTK_CONTAINER (self->priv->vbox)); +#line 1079 "header_area.c" + for (widget_it = widget_collection; widget_it != NULL; widget_it = widget_it->next) { + GtkWidget* widget; +#line 238 "header_area.vala" + widget = _g_object_ref0 ((GtkWidget*) widget_it->data); +#line 1084 "header_area.c" + { +#line 239 "header_area.vala" + if (my_track_header == NULL) { +#line 1088 "header_area.c" + GtkWidget* _tmp0_; + TrackHeader* track_header; + gboolean _tmp1_ = FALSE; +#line 240 "header_area.vala" + track_header = _g_object_ref0 ((_tmp0_ = widget, IS_TRACK_HEADER (_tmp0_) ? ((TrackHeader*) _tmp0_) : NULL)); +#line 241 "header_area.vala" + if (track_header != NULL) { +#line 1096 "header_area.c" + ModelTrack* _tmp2_; +#line 241 "header_area.vala" + _tmp1_ = (_tmp2_ = track_header_get_track (track_header)) == track; +#line 1100 "header_area.c" + _g_object_unref0 (_tmp2_); + } else { +#line 241 "header_area.vala" + _tmp1_ = FALSE; +#line 1105 "header_area.c" + } +#line 241 "header_area.vala" + if (_tmp1_) { +#line 1109 "header_area.c" + TrackHeader* _tmp3_; +#line 242 "header_area.vala" + my_track_header = (_tmp3_ = _g_object_ref0 (track_header), _g_object_unref0 (my_track_header), _tmp3_); +#line 1113 "header_area.c" + } + _g_object_unref0 (track_header); + } else { + GtkHSeparator* _tmp5_; + GtkWidget* _tmp4_; +#line 245 "header_area.vala" + my_separator = (_tmp5_ = _g_object_ref0 ((_tmp4_ = widget, GTK_IS_HSEPARATOR (_tmp4_) ? ((GtkHSeparator*) _tmp4_) : NULL)), _g_object_unref0 (my_separator), _tmp5_); +#line 1121 "header_area.c" + _g_object_unref0 (widget); +#line 246 "header_area.vala" + break; +#line 1125 "header_area.c" + } + _g_object_unref0 (widget); + } + } +#line 238 "header_area.vala" + _g_list_free0 (widget_collection); +#line 1132 "header_area.c" + } +#line 250 "header_area.vala" + if (my_track_header != NULL) { +#line 251 "header_area.vala" + gtk_container_remove (GTK_CONTAINER (self->priv->vbox), GTK_WIDGET (my_track_header)); +#line 1138 "header_area.c" + } +#line 254 "header_area.vala" + if (my_separator != NULL) { +#line 255 "header_area.vala" + gtk_container_remove (GTK_CONTAINER (self->priv->vbox), GTK_WIDGET (my_separator)); +#line 1144 "header_area.c" + } +#line 258 "header_area.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->priv->project->tracks)) != 0) { +#line 1148 "header_area.c" + ModelTrack* _tmp6_; +#line 259 "header_area.vala" + header_area_select (self, _tmp6_ = (ModelTrack*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->project->tracks), 0)); +#line 1152 "header_area.c" + _g_object_unref0 (_tmp6_); + } + _g_object_unref0 (track); + _g_object_unref0 (my_track_header); + _g_object_unref0 (my_separator); +} + + +#line 263 "header_area.vala" +void header_area_select (HeaderArea* self, ModelTrack* track) { +#line 263 "header_area.vala" + g_return_if_fail (IS_HEADER_AREA (self)); +#line 263 "header_area.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 1167 "header_area.c" + { + GeeIterator* _t_it; + _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->project->tracks)); +#line 264 "header_area.vala" + while (TRUE) { +#line 1173 "header_area.c" + ModelTrack* t; +#line 264 "header_area.vala" + if (!gee_iterator_next (_t_it)) { +#line 264 "header_area.vala" + break; +#line 1179 "header_area.c" + } +#line 264 "header_area.vala" + t = (ModelTrack*) gee_iterator_get (_t_it); +#line 265 "header_area.vala" + model_track_set_selected (t, t == track); +#line 1185 "header_area.c" + _g_object_unref0 (t); + } + _g_object_unref0 (_t_it); + } +} + + +static void header_area_class_init (HeaderAreaClass * klass) { + header_area_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (HeaderAreaPrivate)); + G_OBJECT_CLASS (klass)->finalize = header_area_finalize; +} + + +static void header_area_instance_init (HeaderArea * self) { + GdkColor _tmp6_ = {0}; + self->priv = HEADER_AREA_GET_PRIVATE (self); + self->background_color = (parse_color ("#666", &_tmp6_), _tmp6_); +} + + +static void header_area_finalize (GObject* obj) { + HeaderArea * self; + self = HEADER_AREA (obj); + _g_object_unref0 (self->priv->vbox); + G_OBJECT_CLASS (header_area_parent_class)->finalize (obj); +} + + +GType header_area_get_type (void) { + static volatile gsize header_area_type_id__volatile = 0; + if (g_once_init_enter (&header_area_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (HeaderAreaClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) header_area_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (HeaderArea), 0, (GInstanceInitFunc) header_area_instance_init, NULL }; + GType header_area_type_id; + header_area_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "HeaderArea", &g_define_type_info, 0); + g_once_init_leave (&header_area_type_id__volatile, header_area_type_id); + } + return header_area_type_id__volatile; +} + + + + diff --git a/src/fillmore/fillmore/header_area.o b/src/fillmore/fillmore/header_area.o new file mode 100644 index 0000000000000000000000000000000000000000..0e68c593635d12746da671da7c8e92ffd3cc2afa GIT binary patch literal 123728 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

IW$eeZv9OhAp1hr6! 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 +#include +#include +#include +#include +#include + + +#define UI_TYPE_TRACK_INFORMATION (ui_track_information_get_type ()) +#define UI_TRACK_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_TRACK_INFORMATION, UITrackInformation)) +#define UI_TRACK_INFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_TRACK_INFORMATION, UITrackInformationClass)) +#define UI_IS_TRACK_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_TRACK_INFORMATION)) +#define UI_IS_TRACK_INFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_TRACK_INFORMATION)) +#define UI_TRACK_INFORMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_TRACK_INFORMATION, UITrackInformationClass)) + +typedef struct _UITrackInformation UITrackInformation; +typedef struct _UITrackInformationClass UITrackInformationClass; +typedef struct _UITrackInformationPrivate UITrackInformationPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) + +struct _UITrackInformation { + HildonDialog parent_instance; + UITrackInformationPrivate * priv; +}; + +struct _UITrackInformationClass { + HildonDialogClass parent_class; +}; + +struct _UITrackInformationPrivate { + HildonEntry* entry; +}; + + +static gpointer ui_track_information_parent_class = NULL; + +GType ui_track_information_get_type (void); +#define UI_TRACK_INFORMATION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UI_TYPE_TRACK_INFORMATION, UITrackInformationPrivate)) +enum { + UI_TRACK_INFORMATION_DUMMY_PROPERTY +}; +void ui_track_information_set_track_name (UITrackInformation* self, const char* new_name); +char* ui_track_information_get_track_name (UITrackInformation* self); +static void ui_track_information_on_entry_changed (UITrackInformation* self); +UITrackInformation* ui_track_information_new (void); +UITrackInformation* ui_track_information_construct (GType object_type); +static void _ui_track_information_on_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self); +static GObject * ui_track_information_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); +static void ui_track_information_finalize (GObject* obj); + + + +#line 34 "trackinformation.vala" +void ui_track_information_set_track_name (UITrackInformation* self, const char* new_name) { +#line 34 "trackinformation.vala" + g_return_if_fail (UI_IS_TRACK_INFORMATION (self)); +#line 34 "trackinformation.vala" + g_return_if_fail (new_name != NULL); +#line 35 "trackinformation.vala" + hildon_entry_set_text (self->priv->entry, new_name); +#line 36 "trackinformation.vala" + gtk_editable_select_region (GTK_EDITABLE (self->priv->entry), 0, -1); +#line 74 "trackinformation.c" +} + + +#line 1018 "glib-2.0.vapi" +static char* string_strip (const char* self) { +#line 80 "trackinformation.c" + char* result = NULL; + char* _result_; +#line 1018 "glib-2.0.vapi" + g_return_val_if_fail (self != NULL, NULL); +#line 1019 "glib-2.0.vapi" + _result_ = g_strdup (self); +#line 1020 "glib-2.0.vapi" + g_strstrip (_result_); +#line 89 "trackinformation.c" + result = _result_; +#line 1021 "glib-2.0.vapi" + return result; +#line 93 "trackinformation.c" +} + + +#line 39 "trackinformation.vala" +char* ui_track_information_get_track_name (UITrackInformation* self) { +#line 99 "trackinformation.c" + char* result = NULL; +#line 39 "trackinformation.vala" + g_return_val_if_fail (UI_IS_TRACK_INFORMATION (self), NULL); +#line 103 "trackinformation.c" + result = string_strip (hildon_entry_get_text (self->priv->entry)); +#line 40 "trackinformation.vala" + return result; +#line 107 "trackinformation.c" +} + + +static glong string_get_length (const char* self) { + glong result; + g_return_val_if_fail (self != NULL, 0L); + result = g_utf8_strlen (self, -1); +#line 1158 "glib-2.0.vapi" + return result; +#line 117 "trackinformation.c" +} + + +#line 43 "trackinformation.vala" +static void ui_track_information_on_entry_changed (UITrackInformation* self) { +#line 123 "trackinformation.c" + char* _tmp0_; + gboolean _tmp1_; + gboolean is_valid; +#line 43 "trackinformation.vala" + g_return_if_fail (UI_IS_TRACK_INFORMATION (self)); +#line 44 "trackinformation.vala" + is_valid = (_tmp1_ = string_get_length (_tmp0_ = ui_track_information_get_track_name (self)) > 0, _g_free0 (_tmp0_), _tmp1_); +#line 45 "trackinformation.vala" + gtk_dialog_set_response_sensitive (GTK_DIALOG (self), (gint) GTK_RESPONSE_OK, is_valid); +#line 133 "trackinformation.c" +} + + +#line 8 "trackinformation.vala" +UITrackInformation* ui_track_information_construct (GType object_type) { +#line 139 "trackinformation.c" + UITrackInformation * self; + self = g_object_newv (object_type, 0, NULL); + return self; +} + + +#line 8 "trackinformation.vala" +UITrackInformation* ui_track_information_new (void) { +#line 8 "trackinformation.vala" + return ui_track_information_construct (UI_TYPE_TRACK_INFORMATION); +#line 150 "trackinformation.c" +} + + +#line 43 "trackinformation.vala" +static void _ui_track_information_on_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self) { +#line 156 "trackinformation.c" + ui_track_information_on_entry_changed (self); +} + + +static GObject * ui_track_information_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { + GObject * obj; + GObjectClass * parent_class; + UITrackInformation * self; + parent_class = G_OBJECT_CLASS (ui_track_information_parent_class); + obj = parent_class->constructor (type, n_construct_properties, construct_properties); + self = UI_TRACK_INFORMATION (obj); + { + GtkLabel* label; + HildonEntry* _tmp0_; + GtkTable* table; +#line 13 "trackinformation.vala" + gtk_window_set_title (GTK_WINDOW (self), "New Track"); +#line 14 "trackinformation.vala" + gtk_window_set_modal (GTK_WINDOW (self), TRUE); +#line 15 "trackinformation.vala" + hildon_dialog_add_buttons (HILDON_DIALOG (self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL, NULL); +#line 18 "trackinformation.vala" + label = g_object_ref_sink ((GtkLabel*) gtk_label_new ("Track name:")); +#line 19 "trackinformation.vala" + self->priv->entry = (_tmp0_ = g_object_ref_sink ((HildonEntry*) hildon_entry_new (HILDON_SIZE_HALFSCREEN_WIDTH | HILDON_SIZE_FINGER_HEIGHT)), _g_object_unref0 (self->priv->entry), _tmp0_); +#line 20 "trackinformation.vala" + gtk_entry_set_activates_default (GTK_ENTRY (self->priv->entry), TRUE); +#line 21 "trackinformation.vala" + g_signal_connect_object (GTK_EDITABLE (self->priv->entry), "changed", (GCallback) _ui_track_information_on_entry_changed_gtk_editable_changed, self, 0); +#line 23 "trackinformation.vala" + table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) 1, (guint) 2, FALSE)); +#line 24 "trackinformation.vala" + gtk_table_attach_defaults (table, GTK_WIDGET (label), (guint) 0, (guint) 1, (guint) 0, (guint) 1); +#line 25 "trackinformation.vala" + gtk_table_attach_defaults (table, GTK_WIDGET (self->priv->entry), (guint) 1, (guint) 2, (guint) 0, (guint) 1); +#line 26 "trackinformation.vala" + gtk_table_set_col_spacing (table, (guint) 0, (guint) 12); +#line 27 "trackinformation.vala" + gtk_container_set_border_width (GTK_CONTAINER (table), (guint) 12); +#line 29 "trackinformation.vala" + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (self)->vbox), GTK_WIDGET (table), TRUE, TRUE, (guint) 0); +#line 30 "trackinformation.vala" + gtk_widget_show_all (GTK_WIDGET (self)); +#line 31 "trackinformation.vala" + gtk_dialog_set_default_response (GTK_DIALOG (self), (gint) GTK_RESPONSE_OK); +#line 202 "trackinformation.c" + _g_object_unref0 (label); + _g_object_unref0 (table); + } + return obj; +} + + +static void ui_track_information_class_init (UITrackInformationClass * klass) { + ui_track_information_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (UITrackInformationPrivate)); + G_OBJECT_CLASS (klass)->constructor = ui_track_information_constructor; + G_OBJECT_CLASS (klass)->finalize = ui_track_information_finalize; +} + + +static void ui_track_information_instance_init (UITrackInformation * self) { + self->priv = UI_TRACK_INFORMATION_GET_PRIVATE (self); +} + + +static void ui_track_information_finalize (GObject* obj) { + UITrackInformation * self; + self = UI_TRACK_INFORMATION (obj); + _g_object_unref0 (self->priv->entry); + G_OBJECT_CLASS (ui_track_information_parent_class)->finalize (obj); +} + + +GType ui_track_information_get_type (void) { + static volatile gsize ui_track_information_type_id__volatile = 0; + if (g_once_init_enter (&ui_track_information_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (UITrackInformationClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ui_track_information_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UITrackInformation), 0, (GInstanceInitFunc) ui_track_information_instance_init, NULL }; + GType ui_track_information_type_id; + ui_track_information_type_id = g_type_register_static (HILDON_TYPE_DIALOG, "UITrackInformation", &g_define_type_info, 0); + g_once_init_leave (&ui_track_information_type_id__volatile, ui_track_information_type_id); + } + return ui_track_information_type_id__volatile; +} + + + + diff --git a/src/fillmore/fillmore/trackinformation.o b/src/fillmore/fillmore/trackinformation.o new file mode 100644 index 0000000000000000000000000000000000000000..5e8bc0af5adc7ebf1f352fe0ebf27af0459db418 GIT binary patch literal 58560 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 0; + set_response_sensitive(Gtk.ResponseType.OK, is_valid); + } + } +} diff --git a/src/lombard/Makefile b/src/lombard/Makefile new file mode 100644 index 0000000..7bbf762 --- /dev/null +++ b/src/lombard/Makefile @@ -0,0 +1,18 @@ +PROGRAM = ../../$(PROGRAM_NAME) +all: $(PROGRAM) +USE_MARINA_VAPI=1 +-include ../../configure.mk + +VALA_LDFLAGS = -lmarina -L../marina +VALA_LDFLAGS += `pkg-config --libs $(EXT_PKGS)` +MARINA_DEPEND = ../marina/libmarina.a + +-include sources.mk + +ifndef BUILD_DIR +BUILD_DIR=lombard +endif + +-include ../../marina.mk +HEADER_DIRS += ../marina + diff --git a/src/lombard/lombard.vala b/src/lombard/lombard.vala new file mode 100644 index 0000000..e83f85e --- /dev/null +++ b/src/lombard/lombard.vala @@ -0,0 +1,909 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +int debug_level; +const OptionEntry[] options = { + { "debug-level", 0, 0, OptionArg.INT, &debug_level, + "Control amount of diagnostic information", + "[0 (minimal),5 (maximum)]" }, + { null } +}; + +class App : Gtk.Window, TransportDelegate { + Gtk.DrawingArea drawing_area; + + Model.VideoProject project; + View.VideoOutput video_output; + View.AudioOutput audio_output; + View.OggVorbisExport export_connector; + + TimeLine timeline; + ClipLibraryView library; + View.StatusBar status_bar; + + Gtk.HPaned h_pane; + + Gtk.ScrolledWindow library_scrolled; + Gtk.ScrolledWindow timeline_scrolled; + Gtk.Adjustment h_adjustment; + + double prev_adjustment_lower; + double prev_adjustment_upper; + + Gtk.ActionGroup main_group; + + int64 center_time = -1; + + Gtk.VBox vbox = null; + Gtk.MenuBar menubar; + Gtk.UIManager manager; + + string project_filename; + Gee.ArrayList load_errors; + bool loading; + + public const string NAME = "Lombard"; + const string LibraryToggle = "Library"; + + const Gtk.ActionEntry[] entries = { + { "Project", null, "_Project", null, null, null }, + { "Open", Gtk.STOCK_OPEN, "_Open...", null, null, on_open }, + { "Save", Gtk.STOCK_SAVE, null, null, null, on_save }, + { "SaveAs", Gtk.STOCK_SAVE_AS, "Save _As...", "S", null, on_save_as }, + { "Play", Gtk.STOCK_MEDIA_PLAY, "_Play / Pause", "space", null, on_play_pause }, + { "Export", null, "_Export...", "E", null, on_export }, + { "Quit", Gtk.STOCK_QUIT, null, null, null, on_quit }, + + { "Edit", null, "_Edit", null, null, null }, + { "Undo", Gtk.STOCK_UNDO, null, "Z", null, on_undo }, + { "Cut", Gtk.STOCK_CUT, null, null, null, on_cut }, + { "Copy", Gtk.STOCK_COPY, null, null, null, on_copy }, + { "Paste", Gtk.STOCK_PASTE, null, null, null, on_paste }, + { "Delete", Gtk.STOCK_DELETE, null, "Delete", null, on_delete }, + { "SelectAll", Gtk.STOCK_SELECT_ALL, null, "A", null, on_select_all }, + { "SplitAtPlayhead", null, "_Split at Playhead", "P", null, on_split_at_playhead }, + { "TrimToPlayhead", null, "Trim to Play_head", "H", null, on_trim_to_playhead }, + { "ClipProperties", Gtk.STOCK_PROPERTIES, "Properti_es", "Return", + null, on_clip_properties }, + + { "View", null, "_View", null, null, null }, + { "ZoomIn", Gtk.STOCK_ZOOM_IN, "Zoom _In", "plus", null, on_zoom_in }, + { "ZoomOut", Gtk.STOCK_ZOOM_OUT, "Zoom _Out", "minus", null, on_zoom_out }, + { "ZoomProject", null, "Fit to _Window", "Z", null, on_zoom_to_project }, + + { "Go", null, "_Go", null, null, null }, + { "Start", Gtk.STOCK_GOTO_FIRST, "_Start", "Home", null, on_go_start }, + { "End", Gtk.STOCK_GOTO_LAST, "_End", "End", null, on_go_end }, + + { "Help", null, "_Help", null, null, null }, + { "Contents", Gtk.STOCK_HELP, "_Contents", "F1", + "More information on Lombard", on_help_contents}, + { "About", Gtk.STOCK_ABOUT, null, null, null, on_about }, + { "SaveGraph", null, "Save _Graph", null, "Save graph", on_save_graph } + }; + + const Gtk.ToggleActionEntry[] check_actions = { + { LibraryToggle, null, "_Library", "F9", null, on_view_library, true }, + { "Snap", null, "_Snap to Clip Edges", null, null, on_snap, true } + }; + + const string ui = """ + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"""; + + const DialogUtils.filter_description_struct[] filters = { + { "Lombard Project Files", Model.Project.LOMBARD_FILE_EXTENSION }, + { "Fillmore Project Files", Model.Project.FILLMORE_FILE_EXTENSION } + }; + + const DialogUtils.filter_description_struct[] export_filters = { + { "Ogg Files", "ogg" } + }; + + public App(string? project_file) throws Error { + try { + set_icon_from_file( + AppDirs.get_resources_dir().get_child("lombard_icon.png").get_path()); + } catch (GLib.Error e) { + warning("Could not load application icon: %s", e.message); + } + + if (debug_level > -1) { + set_logging_level((Logging.Level)debug_level); + } + ClassFactory.set_transport_delegate(this); + set_default_size(600, 500); + project_filename = project_file; + + load_errors = new Gee.ArrayList(); + drawing_area = new Gtk.DrawingArea(); + drawing_area.realize.connect(on_drawing_realize); + drawing_area.modify_bg(Gtk.StateType.NORMAL, parse_color("#000")); + + main_group = new Gtk.ActionGroup("main"); + main_group.add_actions(entries, this); + main_group.add_toggle_actions(check_actions, this); + + manager = new Gtk.UIManager(); + manager.insert_action_group(main_group, 0); + try { + manager.add_ui_from_string(ui, -1); + } catch (Error e) { error("%s", e.message); } + + menubar = (Gtk.MenuBar) get_widget(manager, "/MenuBar"); + + project = new Model.VideoProject(project_filename); + project.snap_to_clip = true; + project.name_changed.connect(set_project_name); + project.load_error.connect(on_load_error); + project.load_complete.connect(on_load_complete); + project.error_occurred.connect(do_error_dialog); + project.undo_manager.undo_changed.connect(on_undo_changed); + project.media_engine.post_export.connect(on_post_export); + project.playstate_changed.connect(on_playstate_changed); + + audio_output = new View.AudioOutput(project.media_engine.get_project_audio_caps()); + project.media_engine.connect_output(audio_output); + + timeline = new TimeLine(project, project.time_provider, + Gdk.DragAction.COPY | Gdk.DragAction.MOVE); + timeline.selection_changed.connect(on_timeline_selection_changed); + timeline.track_changed.connect(on_track_changed); + timeline.drag_data_received.connect(on_drag_data_received); + timeline.size_allocate.connect(on_timeline_size_allocate); + project.media_engine.position_changed.connect(on_position_changed); + project.media_engine.callback_pulse.connect(on_callback_pulse); + ClipView.context_menu = (Gtk.Menu) manager.get_widget("/ClipContextMenu"); + ClipLibraryView.context_menu = (Gtk.Menu) manager.get_widget("/LibraryContextMenu"); + + library = new ClipLibraryView(project, project.time_provider, "Drag clips here.", + Gdk.DragAction.COPY | Gdk.DragAction.MOVE); + library.selection_changed.connect(on_library_selection_changed); + library.drag_data_received.connect(on_drag_data_received); + + status_bar = new View.StatusBar(project, project.time_provider, TimeLine.BAR_HEIGHT); + + library_scrolled = new Gtk.ScrolledWindow(null, null); + library_scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC); + library_scrolled.add_with_viewport(library); + + toggle_library(true); + + Gtk.MenuItem? save_graph = (Gtk.MenuItem?) + get_widget(manager, "/MenuBar/HelpMenu/SaveGraph"); + + // TODO: only destroy it if --debug is not specified on the command line + // or conversely, only add it if --debug is specified on the command line + if (save_graph != null) { + save_graph.destroy(); + } + + add_accel_group(manager.get_accel_group()); + + on_undo_changed(false); + + delete_event.connect(on_delete_event); + + if (project_filename == null) { + default_track_set(); + on_load_complete(); + } + + update_menu(); + show_all(); + } + + void default_track_set() { + project.add_track(new Model.VideoTrack(project)); + project.add_track(new Model.AudioTrack(project, "Audio Track")); + } + + bool on_delete_event() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_delete_event"); + on_quit(); + return true; + } + + void on_quit() { + if (project.undo_manager.is_dirty) { + switch (DialogUtils.save_close_cancel(this, null, "Save changes before closing?")) { + case Gtk.ResponseType.ACCEPT: + if (!do_save()) { + return; + } + break; + case Gtk.ResponseType.CLOSE: + break; + case Gtk.ResponseType.DELETE_EVENT: // when user presses escape. + case Gtk.ResponseType.CANCEL: + return; + default: + assert(false); + break; + } + } + + Gtk.main_quit(); + } + + void toggle_library(bool showing) { + if (vbox == null) { + vbox = new Gtk.VBox(false, 0); + vbox.pack_start(menubar, false, false, 0); + + Gtk.VPaned v_pane = new Gtk.VPaned(); + v_pane.set_position(290); + + h_pane = new Gtk.HPaned(); + h_pane.set_position(300); + h_pane.child2_resize = 1; + h_pane.child1_resize = 0; + + if (showing) { + h_pane.add1(library_scrolled); + h_pane.add2(drawing_area); + } else { + h_pane.add2(drawing_area); + } + h_pane.child2.size_allocate.connect(on_library_size_allocate); + v_pane.add1(h_pane); + + timeline_scrolled = new Gtk.ScrolledWindow(null, null); + timeline_scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC); + timeline_scrolled.add_with_viewport(timeline); + + Gtk.VBox timeline_vbox = new Gtk.VBox(false, 0); + timeline_vbox.pack_start(status_bar, false, false, 0); + timeline_vbox.pack_start(timeline_scrolled, true, true, 0); + v_pane.add2(timeline_vbox); + + v_pane.child1_resize = 1; + v_pane.child2_resize = 0; + + h_adjustment = timeline_scrolled.get_hadjustment(); + h_adjustment.changed.connect(on_adjustment_changed); + prev_adjustment_lower = h_adjustment.get_lower(); + prev_adjustment_upper = h_adjustment.get_upper(); + + vbox.pack_start(v_pane, true, true, 0); + + add(vbox); + } else { + project.library_visible = showing; + if (showing) { + h_pane.add1(library_scrolled); + } else { + h_pane.remove(library_scrolled); + } + } + show_all(); + } + + void on_drawing_realize() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_drawing_realize"); + loading = true; + project.load(project_filename); + try { + video_output = new View.VideoOutput(drawing_area); + project.media_engine.connect_output(video_output); + } catch (Error e) { + do_error_dialog("Could not create video output", e.message); + } + } + + void on_adjustment_changed(Gtk.Adjustment a) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_adjustment_changed"); + if (prev_adjustment_upper != a.get_upper() || + prev_adjustment_lower != a.get_lower()) { + + prev_adjustment_lower = a.get_lower(); + prev_adjustment_upper = a.get_upper(); + } + } + + void on_drag_data_received(Gtk.Widget w, Gdk.DragContext context, int x, int y, + Gtk.SelectionData selection_data, uint drag_info, uint time) { + present(); + } + + public void set_project_name(string? filename) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "set_project_name"); + set_title(project.get_file_display_name()); + } + + public static void do_error_dialog(string message, string? minor_message) { + DialogUtils.error(message, minor_message); + } + + public void on_load_error(string message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_error"); + load_errors.add(message); + } + + public void on_load_complete() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_complete"); + queue_draw(); + if (project.find_video_track() == null) { + project.add_track(new Model.VideoTrack(project)); + } + + project.media_engine.pipeline.set_state(Gst.State.PAUSED); + h_pane.set_position(h_pane.allocation.width - project.library_width); + Gtk.ToggleAction action = main_group.get_action(LibraryToggle) as Gtk.ToggleAction; + if (action.get_active() != project.library_visible) { + action.set_active(project.library_visible); + } + + action = main_group.get_action("Snap") as Gtk.ToggleAction; + if (action.get_active() != project.snap_to_clip) { + action.set_active(project.snap_to_clip); + } + + if (project.library_visible) { + if (h_pane.child1 != library_scrolled) { + h_pane.add1(library_scrolled); + } + } else { + if (h_pane.child1 == library_scrolled) { + h_pane.remove(library_scrolled); + } + } + + if (load_errors.size > 0) { + string message = ""; + foreach (string s in load_errors) { + message = message + s + "\n"; + } + do_error_dialog("An error occurred loading the project.", message); + } + loading = false; + } + + void on_library_size_allocate(Gdk.Rectangle rectangle) { + if (!loading && h_pane.child1 == library_scrolled) { + project.library_width = rectangle.width; + } + } + + // Loader code + + public void load_file(string name, Model.LibraryImporter im) { + if (get_file_extension(name) == Model.Project.LOMBARD_FILE_EXTENSION || + get_file_extension(name) == Model.Project.FILLMORE_FILE_EXTENSION) + load_project(name); + else { + try { + im.add_file(name); + } catch (Error e) { + do_error_dialog("Error loading file", e.message); + } + } + } + + void on_open() { + load_errors.clear(); + GLib.SList filenames; + if (DialogUtils.open(this, filters, true, true, out filenames)) { + project.create_clip_importer(null, false, 0, false, null, 0); + project.importer.started.connect(on_importer_started); + try { + foreach (string s in filenames) { + string str; + try { + str = GLib.Filename.from_uri(s); + } catch (GLib.ConvertError e) { str = s; } + load_file(str, project.importer); + } + project.importer.start(); + } catch (Error e) { + do_error_dialog("Could not open file", e.message); + } + } + } + + void on_importer_started(Model.ClipImporter i, int num) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_importer_started"); + new MultiFileProgress(this, num, "Import", i); + } + + bool do_save_dialog() { + string? filename = project.get_project_file(); + bool create_directory = filename == null; + if (DialogUtils.save(this, "Save Project", create_directory, filters, ref filename)) { + project.save(filename); + return true; + } + return false; + } + + void on_save_as() { + do_save_dialog(); + } + + void on_save() { + do_save(); + } + + bool do_save() { + if (project.get_project_file() != null) { + project.save(null); + return true; + } + return do_save_dialog(); + } + + public void load_project(string filename) { + loading = true; + + try { + project.media_engine.disconnect_output(video_output); + video_output = new View.VideoOutput(drawing_area); + project.media_engine.connect_output(video_output); + } catch (Error e) { + do_error_dialog("Could not create video output", e.message); + } + + project.load(filename); + + } + + const float SCROLL_MARGIN = 0.05f; + + void scroll_toward_center(int xpos) { + int cursor_pos = xpos - (int) h_adjustment.value; + + // Move the cursor position toward the center of the window. We compute + // the remaining distance and move by its square root; this results in + // a smooth decelerating motion. + int page_size = (int) h_adjustment.page_size; + int diff = page_size / 2 - cursor_pos; + int d = sign(diff) * (int) Math.sqrt(diff.abs()); + cursor_pos += d; + + int x = int.max(0, xpos - cursor_pos); + int max_value = (int)(h_adjustment.upper - timeline_scrolled.allocation.width); + if (x > max_value) { + x = max_value; + } + h_adjustment.set_value(x); + + h_adjustment.set_value(x); + } + + public void on_split_at_playhead() { + project.split_at_playhead(); + } + + public void on_trim_to_playhead() { + project.trim_to_playhead(); + } + + public void on_clip_properties() { + Fraction? frames_per_second = null; + project.get_framerate_fraction(out frames_per_second); + if (library.has_selection()) { + Gee.ArrayList files = library.get_selected_files(); + if (files.size == 1) { + string file_name = files.get(0); + Model.ClipFile? clip_file = project.find_clipfile(file_name); + DialogUtils.show_clip_properties(this, null, clip_file, frames_per_second); + } + } else { + Gee.ArrayList clips = timeline.selected_clips; + if (clips.size == 1) { + ClipView clip_view = clips.get(0); + DialogUtils.show_clip_properties(this, clip_view, null, frames_per_second); + } + } + } + + public void on_position_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_position_changed"); + update_menu(); + } + + void on_callback_pulse() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_callback_pulse"); + if (project.transport_is_playing()) { + scroll_toward_center(project.time_provider.time_to_xpos(project.media_engine.position)); + } + timeline.queue_draw(); + } + + public void on_track_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_changed"); + update_menu(); + } + + void update_menu() { + bool library_selected = library.has_selection(); + bool clip_selected = timeline.is_clip_selected(); + bool stopped = is_stopped(); + bool clip_is_trimmed = false; + bool playhead_on_clip = project.playhead_on_clip(); + bool dir; + bool can_trim = project.can_trim(out dir); + bool one_selected = false; + if (library_selected) { + one_selected = library.get_selected_files().size == 1; + } else if (clip_selected) { + one_selected = timeline.selected_clips.size == 1; + } + + if (clip_selected) { + foreach (ClipView clip_view in timeline.selected_clips) { + clip_is_trimmed = clip_view.clip.is_trimmed(); + if (clip_is_trimmed) { + break; + } + } + } + // File menu + set_sensitive_group(main_group, "Open", stopped); + set_sensitive_group(main_group, "Save", stopped); + set_sensitive_group(main_group, "SaveAs", stopped); + set_sensitive_group(main_group, "Export", project.can_export()); + + // Edit Menu + set_sensitive_group(main_group, "Undo", stopped && project.undo_manager.can_undo); + set_sensitive_group(main_group, "Delete", stopped && (clip_selected || library_selected)); + set_sensitive_group(main_group, "Cut", stopped && clip_selected); + set_sensitive_group(main_group, "Copy", stopped && clip_selected); + set_sensitive_group(main_group, "Paste", stopped && timeline.clipboard.clips.size > 0); + set_sensitive_group(main_group, "ClipProperties", one_selected); + + set_sensitive_group(main_group, "SplitAtPlayhead", stopped && playhead_on_clip); + set_sensitive_group(main_group, "TrimToPlayhead", stopped && can_trim); + + // View Menu + set_sensitive_group(main_group, "ZoomProject", project.get_length() != 0); + + } + + public void on_timeline_selection_changed(bool selected) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_timeline_selection_changed"); + if (selected) + library.unselect_all(); + update_menu(); + } + + public void on_library_selection_changed(bool selected) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_library_selection_changed"); + if (selected) { + timeline.deselect_all_clips(); + timeline.queue_draw(); + } + update_menu(); + } + + // We must use a key press event to handle the up arrow and down arrow keys, + // since GTK does not allow them to be used as accelerators. + public override bool key_press_event(Gdk.EventKey event) { + switch (event.keyval) { + case KeySyms.KP_Enter: + case KeySyms.Return: + if ((event.state & GDK_SHIFT_ALT_CONTROL_MASK) != 0) + return base.key_press_event(event); + on_go_start(); + break; + case KeySyms.Left: + if ((event.state & Gdk.ModifierType.CONTROL_MASK) != 0) { + project.go_previous(); + } else { + project.go_previous_frame(); + } + break; + case KeySyms.Right: + if ((event.state & Gdk.ModifierType.CONTROL_MASK) != 0) { + project.go_next(); + } else { + project.go_next_frame(); + } + break; + case KeySyms.KP_Add: + case KeySyms.equal: + case KeySyms.plus: + on_zoom_in(); + break; + case KeySyms.KP_Subtract: + case KeySyms.minus: + case KeySyms.underscore: + on_zoom_out(); + break; + default: + return base.key_press_event(event); + } + return true; + } + + void on_snap() { + project.snap_to_clip = !project.snap_to_clip; + } + + void on_view_library() { + Gtk.ToggleAction action = main_group.get_action(LibraryToggle) as Gtk.ToggleAction; + toggle_library(action.get_active()); + } + + int64 get_zoom_center_time() { + return project.transport_get_position(); + } + + void do_zoom(float increment) { + center_time = get_zoom_center_time(); + timeline.zoom(increment); + } + + void on_zoom_in() { + do_zoom(0.1f); + } + + void on_zoom_out() { + do_zoom(-0.1f); + } + + void on_zoom_to_project() { + timeline.zoom_to_project(h_adjustment.page_size); + } + + void on_timeline_size_allocate(Gdk.Rectangle rectangle) { + if (center_time != -1) { + int new_center_pixel = project.time_provider.time_to_xpos(center_time); + int page_size = (int)(h_adjustment.get_page_size() / 2); + h_adjustment.clamp_page(new_center_pixel - page_size, new_center_pixel + page_size); + center_time = -1; + } + } + + void set_sensitive_group(Gtk.ActionGroup group, string group_path, bool sensitive) { + Gtk.Action action = group.get_action(group_path); + action.set_sensitive(sensitive); + } + + // File commands + + void on_play_pause() { + if (project.transport_is_playing()) + project.media_engine.pause(); + else { + // TODO: we should be calling play() here, which in turn would call + // do_play(Model.PlayState). This is not currently how the code is organized. + // This is part of a checkin that is already large, so putting this off for another + // checkin for ease of testing. + project.media_engine.do_play(PlayState.PLAYING); + } + } + + void on_export() { + string filename = null; + if (DialogUtils.save(this, "Export", false, export_filters, ref filename)) { + new MultiFileProgress(this, 1, "Export", project.media_engine); + project.media_engine.disconnect_output(audio_output); + project.media_engine.disconnect_output(video_output); + try { + export_connector = new View.OggVorbisExport( + View.MediaConnector.MediaTypes.Audio | View.MediaConnector.MediaTypes.Video, + filename, project.media_engine.get_project_audio_export_caps()); + project.media_engine.connect_output(export_connector); + project.media_engine.start_export(filename); + } catch (Error e) { + do_error_dialog("Could not export file", e.message); + } + } + } + + void on_post_export(bool canceled) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_post_export"); + project.media_engine.disconnect_output(export_connector); + project.media_engine.connect_output(audio_output); + project.media_engine.connect_output(video_output); + if (canceled) { + GLib.FileUtils.remove(export_connector.get_filename()); + } + export_connector = null; + } + + // Edit commands + + void on_undo() { + project.undo(); + } + + void on_delete() { + if (library.has_selection()) + library.delete_selection(); + else + timeline.delete_selection(); + } + + void on_cut() { + timeline.do_cut(); + } + + void on_copy() { + timeline.do_copy(); + } + + void on_paste() { + timeline.paste(); + } + + void on_playstate_changed(PlayState playstate) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_playstate_changed"); + if (playstate == PlayState.STOPPED) { + update_menu(); + } + } + + void on_undo_changed(bool can_undo) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_undo_changed"); + Gtk.MenuItem? undo = (Gtk.MenuItem?) get_widget(manager, "/MenuBar/EditMenu/EditUndo"); + assert(undo != null); + //undo.set_label("_Undo " + project.undo_manager.get_undo_title()); + set_sensitive_group(main_group, "Undo", is_stopped() && project.undo_manager.can_undo); + } + + void on_select_all() { + if (library.has_selection()) { + library.select_all(); + } else { + timeline.select_all(); + } + } + + // Go commands + + void on_go_start() { project.go_start(); } + + void on_go_end() { project.go_end(); } + + // Help commands + + void on_help_contents() { + try { + Gtk.show_uri(null, "http://trac.yorba.org/wiki/UsingLombard0.1", 0); + } catch (GLib.Error e) { + } + } + + void on_about() { + Gtk.show_about_dialog(this, + "version", project.get_version(), + "comments", "A video editor", + "copyright", "Copyright 2009-2010 Yorba Foundation", + "website", "http://www.yorba.org", + "license", project.get_license(), + "website-label", "Visit the Yorba web site", + "authors", project.authors + ); + } + + void on_save_graph() { + project.print_graph(project.media_engine.pipeline, "save_graph"); + } + + // Transport Delegate methods + bool is_recording() { + return project.transport_is_recording(); + } + + bool is_playing() { + return project.transport_is_playing(); + } + + bool is_stopped() { + return !(is_playing() || is_recording()); + } +} + +extern const string _PROGRAM_NAME; + +void main(string[] args) { + debug_level = -1; + OptionContext context = new OptionContext( + " [project file] - Create and edit movies"); + context.add_main_entries(options, null); + context.add_group(Gst.init_get_option_group()); + + try { + context.parse(ref args); + } catch (GLib.Error arg_error) { + stderr.printf("%s\nRun 'lombard --help' for a full list of available command line options.", + arg_error.message); + return; + } + Gtk.init(ref args); + + try { + GLib.Environment.set_application_name("Lombard"); + + AppDirs.init(args[0], _PROGRAM_NAME); + Gst.init(ref args); + + if (args.length > 2) { + stderr.printf("usage: %s [project-file]\n", args[0]); + return; + } + + string? project_file = null; + if (args.length > 1) { + project_file = args[1]; + try { + project_file = GLib.Filename.from_uri(project_file); + } catch (GLib.Error e) { } + } + + string str = GLib.Environment.get_variable("LOMBARD_DEBUG"); + debug_enabled = (str != null && (str[0] >= '1')); + ClassFactory.set_class_factory(new ClassFactory()); + View.MediaEngine.can_run(); + + new App(project_file); + Gtk.main(); + } catch (Error e) { + App.do_error_dialog("Could not launch application", "%s.".printf(e.message)); + } +} + diff --git a/src/lombard/lombard/.stamp b/src/lombard/lombard/.stamp new file mode 100644 index 0000000..e69de29 diff --git a/src/lombard/lombard/lombard.c b/src/lombard/lombard/lombard.c new file mode 100644 index 0000000..1b8a507 --- /dev/null +++ b/src/lombard/lombard/lombard.c @@ -0,0 +1,2888 @@ +/* lombard.c generated by valac, the Vala compiler + * generated from lombard.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_APP (app_get_type ()) +#define APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_APP, App)) +#define APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_APP, AppClass)) +#define IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_APP)) +#define IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_APP)) +#define APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_APP, AppClass)) + +typedef struct _App App; +typedef struct _AppClass AppClass; +typedef struct _AppPrivate AppPrivate; + +#define MODEL_TYPE_VIDEO_PROJECT (model_video_project_get_type ()) +#define MODEL_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProject)) +#define MODEL_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass)) +#define MODEL_IS_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_PROJECT)) +#define MODEL_IS_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_PROJECT)) +#define MODEL_VIDEO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass)) + +typedef struct _ModelVideoProject ModelVideoProject; +typedef struct _ModelVideoProjectClass ModelVideoProjectClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _gst_caps_unref0(var) ((var == NULL) ? NULL : (var = (gst_caps_unref (var), NULL))) +typedef struct _ModelVideoProjectPrivate ModelVideoProjectPrivate; +#define __g_slist_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_free (var), NULL))) +#define _g_option_context_free0(var) ((var == NULL) ? NULL : (var = (g_option_context_free (var), NULL))) +#define _class_factory_unref0(var) ((var == NULL) ? NULL : (var = (class_factory_unref (var), NULL))) + +struct _App { + GtkWindow parent_instance; + AppPrivate * priv; +}; + +struct _AppClass { + GtkWindowClass parent_class; +}; + +struct _AppPrivate { + GtkDrawingArea* drawing_area; + ModelVideoProject* project; + ViewVideoOutput* video_output; + ViewAudioOutput* audio_output; + ViewOggVorbisExport* export_connector; + TimeLine* timeline; + ClipLibraryView* library; + ViewStatusBar* status_bar; + GtkHPaned* h_pane; + GtkScrolledWindow* library_scrolled; + GtkScrolledWindow* timeline_scrolled; + GtkAdjustment* h_adjustment; + double prev_adjustment_lower; + double prev_adjustment_upper; + GtkActionGroup* main_group; + gint64 center_time; + GtkVBox* vbox; + GtkMenuBar* menubar; + GtkUIManager* manager; + char* project_filename; + GeeArrayList* load_errors; + gboolean loading; +}; + +struct _ModelVideoProject { + ModelProject parent_instance; + ModelVideoProjectPrivate * priv; + ModelTimecodeTimeSystem* time_provider; +}; + +struct _ModelVideoProjectClass { + ModelProjectClass parent_class; +}; + + +extern gint debug_level; +gint debug_level = 0; +static gpointer app_parent_class = NULL; +static TransportDelegateIface* app_transport_delegate_parent_iface = NULL; + +GType app_get_type (void); +GType model_video_project_get_type (void); +#define APP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_APP, AppPrivate)) +enum { + APP_DUMMY_PROPERTY +}; +#define APP_NAME "Lombard" +#define APP_LibraryToggle "Library" +static void app_on_open (App* self); +static void _app_on_open_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_save (App* self); +static void _app_on_save_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_save_as (App* self); +static void _app_on_save_as_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_play_pause (App* self); +static void _app_on_play_pause_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_export (App* self); +static void _app_on_export_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_quit (App* self); +static void _app_on_quit_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_undo (App* self); +static void _app_on_undo_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_cut (App* self); +static void _app_on_cut_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_copy (App* self); +static void _app_on_copy_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_paste (App* self); +static void _app_on_paste_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_delete (App* self); +static void _app_on_delete_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_select_all (App* self); +static void _app_on_select_all_gtk_action_callback (GtkAction* action, gpointer self); +void app_on_split_at_playhead (App* self); +static void _app_on_split_at_playhead_gtk_action_callback (GtkAction* action, gpointer self); +void app_on_trim_to_playhead (App* self); +static void _app_on_trim_to_playhead_gtk_action_callback (GtkAction* action, gpointer self); +void app_on_clip_properties (App* self); +static void _app_on_clip_properties_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_zoom_in (App* self); +static void _app_on_zoom_in_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_zoom_out (App* self); +static void _app_on_zoom_out_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_zoom_to_project (App* self); +static void _app_on_zoom_to_project_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_go_start (App* self); +static void _app_on_go_start_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_go_end (App* self); +static void _app_on_go_end_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_help_contents (App* self); +static void _app_on_help_contents_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_about (App* self); +static void _app_on_about_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_save_graph (App* self); +static void _app_on_save_graph_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_view_library (App* self); +static void _app_on_view_library_gtk_action_callback (GtkAction* action, gpointer self); +static void app_on_snap (App* self); +static void _app_on_snap_gtk_action_callback (GtkAction* action, gpointer self); +#define APP_ui "\n" \ +"\n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +"\n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +" \n" \ +"\n" +#define APP_SCROLL_MARGIN 0.05f +static void app_on_drawing_realize (App* self); +static void _app_on_drawing_realize_gtk_widget_realize (GtkWidget* _sender, gpointer self); +ModelVideoProject* model_video_project_new (const char* filename, GError** error); +ModelVideoProject* model_video_project_construct (GType object_type, const char* filename, GError** error); +void app_set_project_name (App* self, const char* filename); +static void _app_set_project_name_model_project_name_changed (ModelProject* _sender, const char* project_file, gpointer self); +void app_on_load_error (App* self, const char* message); +static void _app_on_load_error_model_project_load_error (ModelProject* _sender, const char* _error_, gpointer self); +void app_on_load_complete (App* self); +static void _app_on_load_complete_model_project_load_complete (ModelProject* _sender, gpointer self); +void app_do_error_dialog (const char* message, const char* minor_message); +static void _app_do_error_dialog_model_project_error_occurred (ModelProject* _sender, const char* major_message, const char* minor_message, gpointer self); +static void app_on_undo_changed (App* self, gboolean can_undo); +static void _app_on_undo_changed_model_undo_manager_undo_changed (ModelUndoManager* _sender, gboolean can_undo, gpointer self); +static void app_on_post_export (App* self, gboolean canceled); +static void _app_on_post_export_view_media_engine_post_export (ViewMediaEngine* _sender, gboolean canceled, gpointer self); +static void app_on_playstate_changed (App* self, PlayState playstate); +static void _app_on_playstate_changed_model_project_playstate_changed (ModelProject* _sender, PlayState playstate, gpointer self); +void app_on_timeline_selection_changed (App* self, gboolean selected); +static void _app_on_timeline_selection_changed_time_line_selection_changed (TimeLine* _sender, gboolean selected, gpointer self); +void app_on_track_changed (App* self); +static void _app_on_track_changed_time_line_track_changed (TimeLine* _sender, gpointer self); +static void app_on_drag_data_received (App* self, GtkWidget* w, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time); +static void _app_on_drag_data_received_gtk_widget_drag_data_received (GtkWidget* _sender, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint info, guint time_, gpointer self); +static void app_on_timeline_size_allocate (App* self, GdkRectangle* rectangle); +static void _app_on_timeline_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self); +void app_on_position_changed (App* self); +static void _app_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self); +static void app_on_callback_pulse (App* self); +static void _app_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self); +void app_on_library_selection_changed (App* self, gboolean selected); +static void _app_on_library_selection_changed_clip_library_view_selection_changed (ClipLibraryView* _sender, gboolean selected, gpointer self); +static void app_toggle_library (App* self, gboolean showing); +static gboolean app_on_delete_event (App* self); +static gboolean _app_on_delete_event_gtk_widget_delete_event (GtkWidget* _sender, GdkEvent* event, gpointer self); +static void app_default_track_set (App* self); +static void app_update_menu (App* self); +App* app_new (const char* project_file, GError** error); +App* app_construct (GType object_type, const char* project_file, GError** error); +static gboolean app_do_save (App* self); +static void app_on_library_size_allocate (App* self, GdkRectangle* rectangle); +static void _app_on_library_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self); +static void app_on_adjustment_changed (App* self, GtkAdjustment* a); +static void _app_on_adjustment_changed_gtk_adjustment_changed (GtkAdjustment* _sender, gpointer self); +void app_load_project (App* self, const char* filename); +void app_load_file (App* self, const char* name, ModelLibraryImporter* im); +static void _g_slist_free_g_free (GSList* self); +static void app_on_importer_started (App* self, ModelClipImporter* i, gint num); +static void _app_on_importer_started_model_library_importer_started (ModelLibraryImporter* _sender, ModelClipImporter* i, gint num, gpointer self); +static gboolean app_do_save_dialog (App* self); +static void app_scroll_toward_center (App* self, gint xpos); +gboolean model_video_project_get_framerate_fraction (ModelVideoProject* self, Fraction* rate); +static Fraction* _fraction_dup (Fraction* self); +static void app_set_sensitive_group (App* self, GtkActionGroup* group, const char* group_path, gboolean sensitive); +void model_video_project_go_previous_frame (ModelVideoProject* self); +void model_video_project_go_next_frame (ModelVideoProject* self); +static gboolean app_real_key_press_event (GtkWidget* base, GdkEventKey* event); +static gint64 app_get_zoom_center_time (App* self); +static void app_do_zoom (App* self, float increment); +static gboolean app_real_is_recording (TransportDelegate* base); +static gboolean app_real_is_playing (TransportDelegate* base); +static gboolean app_real_is_stopped (TransportDelegate* base); +static void app_finalize (GObject* obj); +void _vala_main (char** args, int args_length1); +static int _vala_strcmp0 (const char * str1, const char * str2); + +const GOptionEntry options[2] = {{"debug-level", (gchar) 0, 0, G_OPTION_ARG_INT, &debug_level, "Control amount of diagnostic information", "[0 (minimal),5 (maximum)]"}, {NULL}}; +static const GtkActionEntry APP_entries[28] = {{"Project", NULL, "_Project", NULL, NULL, (GCallback) NULL}, {"Open", GTK_STOCK_OPEN, "_Open...", NULL, NULL, (GCallback) _app_on_open_gtk_action_callback}, {"Save", GTK_STOCK_SAVE, NULL, NULL, NULL, (GCallback) _app_on_save_gtk_action_callback}, {"SaveAs", GTK_STOCK_SAVE_AS, "Save _As...", "S", NULL, (GCallback) _app_on_save_as_gtk_action_callback}, {"Play", GTK_STOCK_MEDIA_PLAY, "_Play / Pause", "space", NULL, (GCallback) _app_on_play_pause_gtk_action_callback}, {"Export", NULL, "_Export...", "E", NULL, (GCallback) _app_on_export_gtk_action_callback}, {"Quit", GTK_STOCK_QUIT, NULL, NULL, NULL, (GCallback) _app_on_quit_gtk_action_callback}, {"Edit", NULL, "_Edit", NULL, NULL, (GCallback) NULL}, {"Undo", GTK_STOCK_UNDO, NULL, "Z", NULL, (GCallback) _app_on_undo_gtk_action_callback}, {"Cut", GTK_STOCK_CUT, NULL, NULL, NULL, (GCallback) _app_on_cut_gtk_action_callback}, {"Copy", GTK_STOCK_COPY, NULL, NULL, NULL, (GCallback) _app_on_copy_gtk_action_callback}, {"Paste", GTK_STOCK_PASTE, NULL, NULL, NULL, (GCallback) _app_on_paste_gtk_action_callback}, {"Delete", GTK_STOCK_DELETE, NULL, "Delete", NULL, (GCallback) _app_on_delete_gtk_action_callback}, {"SelectAll", GTK_STOCK_SELECT_ALL, NULL, "A", NULL, (GCallback) _app_on_select_all_gtk_action_callback}, {"SplitAtPlayhead", NULL, "_Split at Playhead", "P", NULL, (GCallback) _app_on_split_at_playhead_gtk_action_callback}, {"TrimToPlayhead", NULL, "Trim to Play_head", "H", NULL, (GCallback) _app_on_trim_to_playhead_gtk_action_callback}, {"ClipProperties", GTK_STOCK_PROPERTIES, "Properti_es", "Return", NULL, (GCallback) _app_on_clip_properties_gtk_action_callback}, {"View", NULL, "_View", NULL, NULL, (GCallback) NULL}, {"ZoomIn", GTK_STOCK_ZOOM_IN, "Zoom _In", "plus", NULL, (GCallback) _app_on_zoom_in_gtk_action_callback}, {"ZoomOut", GTK_STOCK_ZOOM_OUT, "Zoom _Out", "minus", NULL, (GCallback) _app_on_zoom_out_gtk_action_callback}, {"ZoomProject", NULL, "Fit to _Window", "Z", NULL, (GCallback) _app_on_zoom_to_project_gtk_action_callback}, {"Go", NULL, "_Go", NULL, NULL, (GCallback) NULL}, {"Start", GTK_STOCK_GOTO_FIRST, "_Start", "Home", NULL, (GCallback) _app_on_go_start_gtk_action_callback}, {"End", GTK_STOCK_GOTO_LAST, "_End", "End", NULL, (GCallback) _app_on_go_end_gtk_action_callback}, {"Help", NULL, "_Help", NULL, NULL, (GCallback) NULL}, {"Contents", GTK_STOCK_HELP, "_Contents", "F1", "More information on Lombard", (GCallback) _app_on_help_contents_gtk_action_callback}, {"About", GTK_STOCK_ABOUT, NULL, NULL, NULL, (GCallback) _app_on_about_gtk_action_callback}, {"SaveGraph", NULL, "Save _Graph", NULL, "Save graph", (GCallback) _app_on_save_graph_gtk_action_callback}}; +static const GtkToggleActionEntry APP_check_actions[2] = {{APP_LibraryToggle, NULL, "_Library", "F9", NULL, (GCallback) _app_on_view_library_gtk_action_callback, TRUE}, {"Snap", NULL, "_Snap to Clip Edges", NULL, NULL, (GCallback) _app_on_snap_gtk_action_callback, TRUE}}; +static const DialogUtilsfilter_description_struct APP_filters[2] = {{"Lombard Project Files", MODEL_PROJECT_LOMBARD_FILE_EXTENSION}, {"Fillmore Project Files", MODEL_PROJECT_FILLMORE_FILE_EXTENSION}}; +static const DialogUtilsfilter_description_struct APP_export_filters[1] = {{"Ogg Files", "ogg"}}; + + +#line 445 "lombard.vala" +static void _app_on_open_gtk_action_callback (GtkAction* action, gpointer self) { +#line 242 "lombard.c" + app_on_open (self); +} + + +#line 485 "lombard.vala" +static void _app_on_save_gtk_action_callback (GtkAction* action, gpointer self) { +#line 249 "lombard.c" + app_on_save (self); +} + + +#line 481 "lombard.vala" +static void _app_on_save_as_gtk_action_callback (GtkAction* action, gpointer self) { +#line 256 "lombard.c" + app_on_save_as (self); +} + + +#line 727 "lombard.vala" +static void _app_on_play_pause_gtk_action_callback (GtkAction* action, gpointer self) { +#line 263 "lombard.c" + app_on_play_pause (self); +} + + +#line 739 "lombard.vala" +static void _app_on_export_gtk_action_callback (GtkAction* action, gpointer self) { +#line 270 "lombard.c" + app_on_export (self); +} + + +#line 269 "lombard.vala" +static void _app_on_quit_gtk_action_callback (GtkAction* action, gpointer self) { +#line 277 "lombard.c" + app_on_quit (self); +} + + +#line 770 "lombard.vala" +static void _app_on_undo_gtk_action_callback (GtkAction* action, gpointer self) { +#line 284 "lombard.c" + app_on_undo (self); +} + + +#line 781 "lombard.vala" +static void _app_on_cut_gtk_action_callback (GtkAction* action, gpointer self) { +#line 291 "lombard.c" + app_on_cut (self); +} + + +#line 785 "lombard.vala" +static void _app_on_copy_gtk_action_callback (GtkAction* action, gpointer self) { +#line 298 "lombard.c" + app_on_copy (self); +} + + +#line 789 "lombard.vala" +static void _app_on_paste_gtk_action_callback (GtkAction* action, gpointer self) { +#line 305 "lombard.c" + app_on_paste (self); +} + + +#line 774 "lombard.vala" +static void _app_on_delete_gtk_action_callback (GtkAction* action, gpointer self) { +#line 312 "lombard.c" + app_on_delete (self); +} + + +#line 808 "lombard.vala" +static void _app_on_select_all_gtk_action_callback (GtkAction* action, gpointer self) { +#line 319 "lombard.c" + app_on_select_all (self); +} + + +#line 535 "lombard.vala" +static void _app_on_split_at_playhead_gtk_action_callback (GtkAction* action, gpointer self) { +#line 326 "lombard.c" + app_on_split_at_playhead (self); +} + + +#line 539 "lombard.vala" +static void _app_on_trim_to_playhead_gtk_action_callback (GtkAction* action, gpointer self) { +#line 333 "lombard.c" + app_on_trim_to_playhead (self); +} + + +#line 543 "lombard.vala" +static void _app_on_clip_properties_gtk_action_callback (GtkAction* action, gpointer self) { +#line 340 "lombard.c" + app_on_clip_properties (self); +} + + +#line 699 "lombard.vala" +static void _app_on_zoom_in_gtk_action_callback (GtkAction* action, gpointer self) { +#line 347 "lombard.c" + app_on_zoom_in (self); +} + + +#line 703 "lombard.vala" +static void _app_on_zoom_out_gtk_action_callback (GtkAction* action, gpointer self) { +#line 354 "lombard.c" + app_on_zoom_out (self); +} + + +#line 707 "lombard.vala" +static void _app_on_zoom_to_project_gtk_action_callback (GtkAction* action, gpointer self) { +#line 361 "lombard.c" + app_on_zoom_to_project (self); +} + + +#line 818 "lombard.vala" +static void _app_on_go_start_gtk_action_callback (GtkAction* action, gpointer self) { +#line 368 "lombard.c" + app_on_go_start (self); +} + + +#line 820 "lombard.vala" +static void _app_on_go_end_gtk_action_callback (GtkAction* action, gpointer self) { +#line 375 "lombard.c" + app_on_go_end (self); +} + + +#line 824 "lombard.vala" +static void _app_on_help_contents_gtk_action_callback (GtkAction* action, gpointer self) { +#line 382 "lombard.c" + app_on_help_contents (self); +} + + +#line 831 "lombard.vala" +static void _app_on_about_gtk_action_callback (GtkAction* action, gpointer self) { +#line 389 "lombard.c" + app_on_about (self); +} + + +#line 843 "lombard.vala" +static void _app_on_save_graph_gtk_action_callback (GtkAction* action, gpointer self) { +#line 396 "lombard.c" + app_on_save_graph (self); +} + + +#line 685 "lombard.vala" +static void _app_on_view_library_gtk_action_callback (GtkAction* action, gpointer self) { +#line 403 "lombard.c" + app_on_view_library (self); +} + + +#line 681 "lombard.vala" +static void _app_on_snap_gtk_action_callback (GtkAction* action, gpointer self) { +#line 410 "lombard.c" + app_on_snap (self); +} + + +#line 344 "lombard.vala" +static void _app_on_drawing_realize_gtk_widget_realize (GtkWidget* _sender, gpointer self) { +#line 417 "lombard.c" + app_on_drawing_realize (self); +} + + +#line 371 "lombard.vala" +static void _app_set_project_name_model_project_name_changed (ModelProject* _sender, const char* project_file, gpointer self) { +#line 424 "lombard.c" + app_set_project_name (self, project_file); +} + + +#line 380 "lombard.vala" +static void _app_on_load_error_model_project_load_error (ModelProject* _sender, const char* _error_, gpointer self) { +#line 431 "lombard.c" + app_on_load_error (self, _error_); +} + + +#line 385 "lombard.vala" +static void _app_on_load_complete_model_project_load_complete (ModelProject* _sender, gpointer self) { +#line 438 "lombard.c" + app_on_load_complete (self); +} + + +#line 376 "lombard.vala" +static void _app_do_error_dialog_model_project_error_occurred (ModelProject* _sender, const char* major_message, const char* minor_message, gpointer self) { +#line 445 "lombard.c" + app_do_error_dialog (major_message, minor_message); +} + + +#line 800 "lombard.vala" +static void _app_on_undo_changed_model_undo_manager_undo_changed (ModelUndoManager* _sender, gboolean can_undo, gpointer self) { +#line 452 "lombard.c" + app_on_undo_changed (self, can_undo); +} + + +#line 757 "lombard.vala" +static void _app_on_post_export_view_media_engine_post_export (ViewMediaEngine* _sender, gboolean canceled, gpointer self) { +#line 459 "lombard.c" + app_on_post_export (self, canceled); +} + + +#line 793 "lombard.vala" +static void _app_on_playstate_changed_model_project_playstate_changed (ModelProject* _sender, PlayState playstate, gpointer self) { +#line 466 "lombard.c" + app_on_playstate_changed (self, playstate); +} + + +#line 625 "lombard.vala" +static void _app_on_timeline_selection_changed_time_line_selection_changed (TimeLine* _sender, gboolean selected, gpointer self) { +#line 473 "lombard.c" + app_on_timeline_selection_changed (self, selected); +} + + +#line 575 "lombard.vala" +static void _app_on_track_changed_time_line_track_changed (TimeLine* _sender, gpointer self) { +#line 480 "lombard.c" + app_on_track_changed (self); +} + + +#line 366 "lombard.vala" +static void _app_on_drag_data_received_gtk_widget_drag_data_received (GtkWidget* _sender, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint info, guint time_, gpointer self) { +#line 487 "lombard.c" + app_on_drag_data_received (self, _sender, context, x, y, selection_data, info, time_); +} + + +#line 711 "lombard.vala" +static void _app_on_timeline_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self) { +#line 494 "lombard.c" + app_on_timeline_size_allocate (self, allocation); +} + + +#line 562 "lombard.vala" +static void _app_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self) { +#line 501 "lombard.c" + app_on_position_changed (self); +} + + +#line 567 "lombard.vala" +static void _app_on_callback_pulse_view_media_engine_callback_pulse (ViewMediaEngine* _sender, gpointer self) { +#line 508 "lombard.c" + app_on_callback_pulse (self); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 632 "lombard.vala" +static void _app_on_library_selection_changed_clip_library_view_selection_changed (ClipLibraryView* _sender, gboolean selected, gpointer self) { +#line 520 "lombard.c" + app_on_library_selection_changed (self, selected); +} + + +#line 263 "lombard.vala" +static gboolean _app_on_delete_event_gtk_widget_delete_event (GtkWidget* _sender, GdkEvent* event, gpointer self) { +#line 527 "lombard.c" + gboolean result; + result = app_on_delete_event (self); + return result; +} + + +#line 165 "lombard.vala" +App* app_construct (GType object_type, const char* project_file, GError** error) { +#line 536 "lombard.c" + GError * _inner_error_; + App * self; + char* _tmp3_; + GeeArrayList* _tmp4_; + GtkDrawingArea* _tmp5_; + GdkColor _tmp7_; + GdkColor _tmp6_ = {0}; + GtkActionGroup* _tmp8_; + GtkUIManager* _tmp9_; + GtkMenuBar* _tmp10_; + ModelVideoProject* _tmp11_; + ModelVideoProject* _tmp12_; + GstCaps* _tmp13_; + ViewAudioOutput* _tmp14_; + ViewAudioOutput* _tmp15_; + ViewAudioOutput* _tmp16_; + TimeLine* _tmp17_; + GtkMenu* _tmp18_; + GtkMenu* _tmp19_; + ClipLibraryView* _tmp20_; + ViewStatusBar* _tmp21_; + GtkScrolledWindow* _tmp22_; + GtkMenuItem* save_graph; + _inner_error_ = NULL; + self = g_object_newv (object_type, 0, NULL); + { + char* _tmp2_; + GFile* _tmp1_; + GFile* _tmp0_; +#line 167 "lombard.vala" + gtk_window_set_icon_from_file (GTK_WINDOW (self), _tmp2_ = g_file_get_path (_tmp1_ = g_file_get_child (_tmp0_ = app_dirs_get_resources_dir (), "lombard_icon.png")), &_inner_error_); +#line 568 "lombard.c" + _g_free0 (_tmp2_); + _g_object_unref0 (_tmp1_); + _g_object_unref0 (_tmp0_); + if (_inner_error_ != NULL) { + goto __catch0_g_error; + } + } + goto __finally0; + __catch0_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 170 "lombard.vala" + g_warning ("lombard.vala:170: Could not load application icon: %s", e->message); +#line 585 "lombard.c" + _g_error_free0 (e); + } + } + __finally0: + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 173 "lombard.vala" + if (debug_level > (-1)) { +#line 174 "lombard.vala" + logging_set_logging_level ((LoggingLevel) debug_level); +#line 599 "lombard.c" + } +#line 176 "lombard.vala" + class_factory_set_transport_delegate (TRANSPORT_DELEGATE (self)); +#line 177 "lombard.vala" + gtk_window_set_default_size (GTK_WINDOW (self), 600, 500); +#line 178 "lombard.vala" + self->priv->project_filename = (_tmp3_ = g_strdup (project_file), _g_free0 (self->priv->project_filename), _tmp3_); +#line 180 "lombard.vala" + self->priv->load_errors = (_tmp4_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL), _g_object_unref0 (self->priv->load_errors), _tmp4_); +#line 181 "lombard.vala" + self->priv->drawing_area = (_tmp5_ = g_object_ref_sink ((GtkDrawingArea*) gtk_drawing_area_new ()), _g_object_unref0 (self->priv->drawing_area), _tmp5_); +#line 182 "lombard.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->drawing_area), "realize", (GCallback) _app_on_drawing_realize_gtk_widget_realize, self, 0); +#line 183 "lombard.vala" + gtk_widget_modify_bg (GTK_WIDGET (self->priv->drawing_area), GTK_STATE_NORMAL, (_tmp7_ = (parse_color ("#000", &_tmp6_), _tmp6_), &_tmp7_)); +#line 185 "lombard.vala" + self->priv->main_group = (_tmp8_ = gtk_action_group_new ("main"), _g_object_unref0 (self->priv->main_group), _tmp8_); +#line 186 "lombard.vala" + gtk_action_group_add_actions (self->priv->main_group, APP_entries, G_N_ELEMENTS (APP_entries), self); +#line 187 "lombard.vala" + gtk_action_group_add_toggle_actions (self->priv->main_group, APP_check_actions, G_N_ELEMENTS (APP_check_actions), self); +#line 189 "lombard.vala" + self->priv->manager = (_tmp9_ = gtk_ui_manager_new (), _g_object_unref0 (self->priv->manager), _tmp9_); +#line 190 "lombard.vala" + gtk_ui_manager_insert_action_group (self->priv->manager, self->priv->main_group, 0); +#line 625 "lombard.c" + { +#line 192 "lombard.vala" + gtk_ui_manager_add_ui_from_string (self->priv->manager, APP_ui, (gssize) (-1), &_inner_error_); +#line 629 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch1_g_error; + } + } + goto __finally1; + __catch1_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 193 "lombard.vala" + g_error ("lombard.vala:193: %s", e->message); +#line 643 "lombard.c" + _g_error_free0 (e); + } + } + __finally1: + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 195 "lombard.vala" + self->priv->menubar = (_tmp10_ = GTK_MENU_BAR (get_widget (self->priv->manager, "/MenuBar")), _g_object_unref0 (self->priv->menubar), _tmp10_); +#line 197 "lombard.vala" + _tmp11_ = model_video_project_new (self->priv->project_filename, &_inner_error_); +#line 657 "lombard.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 197 "lombard.vala" + self->priv->project = (_tmp12_ = _tmp11_, _g_object_unref0 (self->priv->project), _tmp12_); +#line 198 "lombard.vala" + MODEL_PROJECT (self->priv->project)->snap_to_clip = TRUE; +#line 199 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project), "name-changed", (GCallback) _app_set_project_name_model_project_name_changed, self, 0); +#line 200 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project), "load-error", (GCallback) _app_on_load_error_model_project_load_error, self, 0); +#line 201 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project), "load-complete", (GCallback) _app_on_load_complete_model_project_load_complete, self, 0); +#line 202 "lombard.vala" + g_signal_connect (MODEL_PROJECT (self->priv->project), "error-occurred", (GCallback) _app_do_error_dialog_model_project_error_occurred, NULL); +#line 203 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project)->undo_manager, "undo-changed", (GCallback) _app_on_undo_changed_model_undo_manager_undo_changed, self, 0); +#line 204 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project)->media_engine, "post-export", (GCallback) _app_on_post_export_view_media_engine_post_export, self, 0); +#line 205 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project), "playstate-changed", (GCallback) _app_on_playstate_changed_model_project_playstate_changed, self, 0); +#line 207 "lombard.vala" + _tmp15_ = (_tmp14_ = view_audio_output_new (_tmp13_ = view_media_engine_get_project_audio_caps (MODEL_PROJECT (self->priv->project)->media_engine), &_inner_error_), _gst_caps_unref0 (_tmp13_), _tmp14_); +#line 683 "lombard.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 207 "lombard.vala" + self->priv->audio_output = (_tmp16_ = _tmp15_, _g_object_unref0 (self->priv->audio_output), _tmp16_); +#line 208 "lombard.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_output)); +#line 210 "lombard.vala" + self->priv->timeline = (_tmp17_ = g_object_ref_sink (time_line_new (MODEL_PROJECT (self->priv->project), MODEL_TIME_SYSTEM (self->priv->project->time_provider), GDK_ACTION_COPY | GDK_ACTION_MOVE)), _g_object_unref0 (self->priv->timeline), _tmp17_); +#line 212 "lombard.vala" + g_signal_connect_object (self->priv->timeline, "selection-changed", (GCallback) _app_on_timeline_selection_changed_time_line_selection_changed, self, 0); +#line 213 "lombard.vala" + g_signal_connect_object (self->priv->timeline, "track-changed", (GCallback) _app_on_track_changed_time_line_track_changed, self, 0); +#line 214 "lombard.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->timeline), "drag-data-received", (GCallback) _app_on_drag_data_received_gtk_widget_drag_data_received, self, 0); +#line 215 "lombard.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->timeline), "size-allocate", (GCallback) _app_on_timeline_size_allocate_gtk_widget_size_allocate, self, 0); +#line 216 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project)->media_engine, "position-changed", (GCallback) _app_on_position_changed_view_media_engine_position_changed, self, 0); +#line 217 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project)->media_engine, "callback-pulse", (GCallback) _app_on_callback_pulse_view_media_engine_callback_pulse, self, 0); +#line 218 "lombard.vala" + clip_view_context_menu = (_tmp18_ = _g_object_ref0 (GTK_MENU (gtk_ui_manager_get_widget (self->priv->manager, "/ClipContextMenu"))), _g_object_unref0 (clip_view_context_menu), _tmp18_); +#line 219 "lombard.vala" + clip_library_view_context_menu = (_tmp19_ = _g_object_ref0 (GTK_MENU (gtk_ui_manager_get_widget (self->priv->manager, "/LibraryContextMenu"))), _g_object_unref0 (clip_library_view_context_menu), _tmp19_); +#line 221 "lombard.vala" + self->priv->library = (_tmp20_ = g_object_ref_sink (clip_library_view_new (MODEL_PROJECT (self->priv->project), MODEL_TIME_SYSTEM (self->priv->project->time_provider), "Drag clips here.", GDK_ACTION_COPY | GDK_ACTION_MOVE)), _g_object_unref0 (self->priv->library), _tmp20_); +#line 223 "lombard.vala" + g_signal_connect_object (self->priv->library, "selection-changed", (GCallback) _app_on_library_selection_changed_clip_library_view_selection_changed, self, 0); +#line 224 "lombard.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->library), "drag-data-received", (GCallback) _app_on_drag_data_received_gtk_widget_drag_data_received, self, 0); +#line 226 "lombard.vala" + self->priv->status_bar = (_tmp21_ = g_object_ref_sink (view_status_bar_new (MODEL_PROJECT (self->priv->project), MODEL_TIME_SYSTEM (self->priv->project->time_provider), TIME_LINE_BAR_HEIGHT)), _g_object_unref0 (self->priv->status_bar), _tmp21_); +#line 228 "lombard.vala" + self->priv->library_scrolled = (_tmp22_ = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)), _g_object_unref0 (self->priv->library_scrolled), _tmp22_); +#line 229 "lombard.vala" + gtk_scrolled_window_set_policy (self->priv->library_scrolled, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); +#line 230 "lombard.vala" + gtk_scrolled_window_add_with_viewport (self->priv->library_scrolled, GTK_WIDGET (self->priv->library)); +#line 232 "lombard.vala" + app_toggle_library (self, TRUE); +#line 234 "lombard.vala" + save_graph = GTK_MENU_ITEM (get_widget (self->priv->manager, "/MenuBar/HelpMenu/SaveGraph")); +#line 239 "lombard.vala" + if (save_graph != NULL) { +#line 240 "lombard.vala" + gtk_object_destroy (GTK_OBJECT (save_graph)); +#line 733 "lombard.c" + } +#line 243 "lombard.vala" + gtk_window_add_accel_group (GTK_WINDOW (self), gtk_ui_manager_get_accel_group (self->priv->manager)); +#line 245 "lombard.vala" + app_on_undo_changed (self, FALSE); +#line 247 "lombard.vala" + g_signal_connect_object (GTK_WIDGET (self), "delete-event", (GCallback) _app_on_delete_event_gtk_widget_delete_event, self, 0); +#line 249 "lombard.vala" + if (self->priv->project_filename == NULL) { +#line 250 "lombard.vala" + app_default_track_set (self); +#line 251 "lombard.vala" + app_on_load_complete (self); +#line 747 "lombard.c" + } +#line 254 "lombard.vala" + app_update_menu (self); +#line 255 "lombard.vala" + gtk_widget_show_all (GTK_WIDGET (self)); +#line 753 "lombard.c" + _g_object_unref0 (save_graph); + return self; +} + + +#line 165 "lombard.vala" +App* app_new (const char* project_file, GError** error) { +#line 165 "lombard.vala" + return app_construct (TYPE_APP, project_file, error); +#line 763 "lombard.c" +} + + +#line 258 "lombard.vala" +static void app_default_track_set (App* self) { +#line 769 "lombard.c" + ModelVideoTrack* _tmp0_; + ModelAudioTrack* _tmp1_; +#line 258 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 259 "lombard.vala" + model_project_add_track (MODEL_PROJECT (self->priv->project), MODEL_TRACK (_tmp0_ = model_video_track_new (MODEL_PROJECT (self->priv->project)))); +#line 776 "lombard.c" + _g_object_unref0 (_tmp0_); +#line 260 "lombard.vala" + model_project_add_track (MODEL_PROJECT (self->priv->project), MODEL_TRACK (_tmp1_ = model_audio_track_new (MODEL_PROJECT (self->priv->project), "Audio Track"))); +#line 780 "lombard.c" + _g_object_unref0 (_tmp1_); +} + + +#line 263 "lombard.vala" +static gboolean app_on_delete_event (App* self) { +#line 787 "lombard.c" + gboolean result = FALSE; +#line 263 "lombard.vala" + g_return_val_if_fail (IS_APP (self), FALSE); +#line 264 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_delete_event"); +#line 265 "lombard.vala" + app_on_quit (self); +#line 795 "lombard.c" + result = TRUE; +#line 266 "lombard.vala" + return result; +#line 799 "lombard.c" +} + + +#line 269 "lombard.vala" +static void app_on_quit (App* self) { +#line 269 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 270 "lombard.vala" + if (model_undo_manager_get_is_dirty (MODEL_PROJECT (self->priv->project)->undo_manager)) { +#line 271 "lombard.vala" + switch (dialog_utils_save_close_cancel (GTK_WINDOW (self), NULL, "Save changes before closing?")) { +#line 811 "lombard.c" + case GTK_RESPONSE_ACCEPT: + { +#line 273 "lombard.vala" + if (!app_do_save (self)) { +#line 274 "lombard.vala" + return; +#line 818 "lombard.c" + } +#line 276 "lombard.vala" + break; +#line 822 "lombard.c" + } + case GTK_RESPONSE_CLOSE: + { +#line 278 "lombard.vala" + break; +#line 828 "lombard.c" + } + case GTK_RESPONSE_DELETE_EVENT: + case GTK_RESPONSE_CANCEL: + { +#line 281 "lombard.vala" + return; +#line 835 "lombard.c" + } + default: + { +#line 283 "lombard.vala" + g_assert (FALSE); +#line 284 "lombard.vala" + break; +#line 843 "lombard.c" + } + } + } +#line 288 "lombard.vala" + gtk_main_quit (); +#line 849 "lombard.c" +} + + +#line 424 "lombard.vala" +static void _app_on_library_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender, GdkRectangle* allocation, gpointer self) { +#line 855 "lombard.c" + app_on_library_size_allocate (self, allocation); +} + + +#line 356 "lombard.vala" +static void _app_on_adjustment_changed_gtk_adjustment_changed (GtkAdjustment* _sender, gpointer self) { +#line 862 "lombard.c" + app_on_adjustment_changed (self, _sender); +} + + +#line 291 "lombard.vala" +static void app_toggle_library (App* self, gboolean showing) { +#line 291 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 292 "lombard.vala" + if (self->priv->vbox == NULL) { +#line 873 "lombard.c" + GtkVBox* _tmp0_; + GtkVPaned* v_pane; + GtkHPaned* _tmp1_; + GtkScrolledWindow* _tmp2_; + GtkVBox* timeline_vbox; + GtkAdjustment* _tmp3_; +#line 293 "lombard.vala" + self->priv->vbox = (_tmp0_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)), _g_object_unref0 (self->priv->vbox), _tmp0_); +#line 294 "lombard.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (self->priv->menubar), FALSE, FALSE, (guint) 0); +#line 296 "lombard.vala" + v_pane = g_object_ref_sink ((GtkVPaned*) gtk_vpaned_new ()); +#line 297 "lombard.vala" + gtk_paned_set_position (GTK_PANED (v_pane), 290); +#line 299 "lombard.vala" + self->priv->h_pane = (_tmp1_ = g_object_ref_sink ((GtkHPaned*) gtk_hpaned_new ()), _g_object_unref0 (self->priv->h_pane), _tmp1_); +#line 300 "lombard.vala" + gtk_paned_set_position (GTK_PANED (self->priv->h_pane), 300); +#line 301 "lombard.vala" + GTK_PANED (self->priv->h_pane)->child2_resize = (guint) 1; +#line 302 "lombard.vala" + GTK_PANED (self->priv->h_pane)->child1_resize = (guint) 0; +#line 304 "lombard.vala" + if (showing) { +#line 305 "lombard.vala" + gtk_paned_add1 (GTK_PANED (self->priv->h_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 306 "lombard.vala" + gtk_paned_add2 (GTK_PANED (self->priv->h_pane), GTK_WIDGET (self->priv->drawing_area)); +#line 902 "lombard.c" + } else { +#line 308 "lombard.vala" + gtk_paned_add2 (GTK_PANED (self->priv->h_pane), GTK_WIDGET (self->priv->drawing_area)); +#line 906 "lombard.c" + } +#line 310 "lombard.vala" + g_signal_connect_object (GTK_PANED (self->priv->h_pane)->child2, "size-allocate", (GCallback) _app_on_library_size_allocate_gtk_widget_size_allocate, self, 0); +#line 311 "lombard.vala" + gtk_paned_add1 (GTK_PANED (v_pane), GTK_WIDGET (self->priv->h_pane)); +#line 313 "lombard.vala" + self->priv->timeline_scrolled = (_tmp2_ = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)), _g_object_unref0 (self->priv->timeline_scrolled), _tmp2_); +#line 314 "lombard.vala" + gtk_scrolled_window_set_policy (self->priv->timeline_scrolled, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); +#line 315 "lombard.vala" + gtk_scrolled_window_add_with_viewport (self->priv->timeline_scrolled, GTK_WIDGET (self->priv->timeline)); +#line 317 "lombard.vala" + timeline_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); +#line 318 "lombard.vala" + gtk_box_pack_start (GTK_BOX (timeline_vbox), GTK_WIDGET (self->priv->status_bar), FALSE, FALSE, (guint) 0); +#line 319 "lombard.vala" + gtk_box_pack_start (GTK_BOX (timeline_vbox), GTK_WIDGET (self->priv->timeline_scrolled), TRUE, TRUE, (guint) 0); +#line 320 "lombard.vala" + gtk_paned_add2 (GTK_PANED (v_pane), GTK_WIDGET (timeline_vbox)); +#line 322 "lombard.vala" + GTK_PANED (v_pane)->child1_resize = (guint) 1; +#line 323 "lombard.vala" + GTK_PANED (v_pane)->child2_resize = (guint) 0; +#line 325 "lombard.vala" + self->priv->h_adjustment = (_tmp3_ = _g_object_ref0 (gtk_scrolled_window_get_hadjustment (self->priv->timeline_scrolled)), _g_object_unref0 (self->priv->h_adjustment), _tmp3_); +#line 326 "lombard.vala" + g_signal_connect_object (self->priv->h_adjustment, "changed", (GCallback) _app_on_adjustment_changed_gtk_adjustment_changed, self, 0); +#line 327 "lombard.vala" + self->priv->prev_adjustment_lower = gtk_adjustment_get_lower (self->priv->h_adjustment); +#line 328 "lombard.vala" + self->priv->prev_adjustment_upper = gtk_adjustment_get_upper (self->priv->h_adjustment); +#line 330 "lombard.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (v_pane), TRUE, TRUE, (guint) 0); +#line 332 "lombard.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->vbox)); +#line 942 "lombard.c" + _g_object_unref0 (v_pane); + _g_object_unref0 (timeline_vbox); + } else { +#line 334 "lombard.vala" + MODEL_PROJECT (self->priv->project)->library_visible = showing; +#line 335 "lombard.vala" + if (showing) { +#line 336 "lombard.vala" + gtk_paned_add1 (GTK_PANED (self->priv->h_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 952 "lombard.c" + } else { +#line 338 "lombard.vala" + gtk_container_remove (GTK_CONTAINER (self->priv->h_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 956 "lombard.c" + } + } +#line 341 "lombard.vala" + gtk_widget_show_all (GTK_WIDGET (self)); +#line 961 "lombard.c" +} + + +#line 344 "lombard.vala" +static void app_on_drawing_realize (App* self) { +#line 967 "lombard.c" + GError * _inner_error_; +#line 344 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 971 "lombard.c" + _inner_error_ = NULL; +#line 345 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drawing_realize"); +#line 346 "lombard.vala" + self->priv->loading = TRUE; +#line 347 "lombard.vala" + model_project_load (MODEL_PROJECT (self->priv->project), self->priv->project_filename); +#line 979 "lombard.c" + { + ViewVideoOutput* _tmp0_; + ViewVideoOutput* _tmp1_; +#line 349 "lombard.vala" + _tmp0_ = view_video_output_new (GTK_WIDGET (self->priv->drawing_area), &_inner_error_); +#line 985 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch2_g_error; + } +#line 349 "lombard.vala" + self->priv->video_output = (_tmp1_ = _tmp0_, _g_object_unref0 (self->priv->video_output), _tmp1_); +#line 350 "lombard.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->video_output)); +#line 993 "lombard.c" + } + goto __finally2; + __catch2_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 352 "lombard.vala" + app_do_error_dialog ("Could not create video output", e->message); +#line 1004 "lombard.c" + _g_error_free0 (e); + } + } + __finally2: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +#line 356 "lombard.vala" +static void app_on_adjustment_changed (App* self, GtkAdjustment* a) { +#line 1019 "lombard.c" + gboolean _tmp0_ = FALSE; +#line 356 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 356 "lombard.vala" + g_return_if_fail (GTK_IS_ADJUSTMENT (a)); +#line 357 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_adjustment_changed"); +#line 358 "lombard.vala" + if (self->priv->prev_adjustment_upper != gtk_adjustment_get_upper (a)) { +#line 358 "lombard.vala" + _tmp0_ = TRUE; +#line 1031 "lombard.c" + } else { +#line 359 "lombard.vala" + _tmp0_ = self->priv->prev_adjustment_lower != gtk_adjustment_get_lower (a); +#line 1035 "lombard.c" + } +#line 358 "lombard.vala" + if (_tmp0_) { +#line 361 "lombard.vala" + self->priv->prev_adjustment_lower = gtk_adjustment_get_lower (a); +#line 362 "lombard.vala" + self->priv->prev_adjustment_upper = gtk_adjustment_get_upper (a); +#line 1043 "lombard.c" + } +} + + +#line 366 "lombard.vala" +static void app_on_drag_data_received (App* self, GtkWidget* w, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time) { +#line 366 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 366 "lombard.vala" + g_return_if_fail (GTK_IS_WIDGET (w)); +#line 366 "lombard.vala" + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); +#line 366 "lombard.vala" + g_return_if_fail (selection_data != NULL); +#line 368 "lombard.vala" + gtk_window_present (GTK_WINDOW (self)); +#line 1060 "lombard.c" +} + + +#line 371 "lombard.vala" +void app_set_project_name (App* self, const char* filename) { +#line 1066 "lombard.c" + char* _tmp0_; +#line 371 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 372 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "set_project_name"); +#line 373 "lombard.vala" + gtk_window_set_title (GTK_WINDOW (self), _tmp0_ = model_project_get_file_display_name (MODEL_PROJECT (self->priv->project))); +#line 1074 "lombard.c" + _g_free0 (_tmp0_); +} + + +#line 376 "lombard.vala" +void app_do_error_dialog (const char* message, const char* minor_message) { +#line 376 "lombard.vala" + g_return_if_fail (message != NULL); +#line 377 "lombard.vala" + dialog_utils_error (message, minor_message); +#line 1085 "lombard.c" +} + + +#line 380 "lombard.vala" +void app_on_load_error (App* self, const char* message) { +#line 380 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 380 "lombard.vala" + g_return_if_fail (message != NULL); +#line 381 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_error"); +#line 382 "lombard.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->load_errors), message); +#line 1099 "lombard.c" +} + + +#line 385 "lombard.vala" +void app_on_load_complete (App* self) { +#line 1105 "lombard.c" + ModelVideoTrack* _tmp0_; + gboolean _tmp1_; + GtkAction* _tmp3_; + GtkToggleAction* action; + GtkToggleAction* _tmp5_; + GtkAction* _tmp4_; +#line 385 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 386 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_complete"); +#line 387 "lombard.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 388 "lombard.vala" + if ((_tmp1_ = (_tmp0_ = model_project_find_video_track (MODEL_PROJECT (self->priv->project))) == NULL, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 1120 "lombard.c" + ModelVideoTrack* _tmp2_; +#line 389 "lombard.vala" + model_project_add_track (MODEL_PROJECT (self->priv->project), MODEL_TRACK (_tmp2_ = model_video_track_new (MODEL_PROJECT (self->priv->project)))); +#line 1124 "lombard.c" + _g_object_unref0 (_tmp2_); + } +#line 392 "lombard.vala" + gst_element_set_state (GST_ELEMENT (MODEL_PROJECT (self->priv->project)->media_engine->pipeline), GST_STATE_PAUSED); +#line 393 "lombard.vala" + gtk_paned_set_position (GTK_PANED (self->priv->h_pane), GTK_WIDGET (self->priv->h_pane)->allocation.width - MODEL_PROJECT (self->priv->project)->library_width); +#line 394 "lombard.vala" + action = _g_object_ref0 ((_tmp3_ = gtk_action_group_get_action (self->priv->main_group, APP_LibraryToggle), GTK_IS_TOGGLE_ACTION (_tmp3_) ? ((GtkToggleAction*) _tmp3_) : NULL)); +#line 395 "lombard.vala" + if (gtk_toggle_action_get_active (action) != MODEL_PROJECT (self->priv->project)->library_visible) { +#line 396 "lombard.vala" + gtk_toggle_action_set_active (action, MODEL_PROJECT (self->priv->project)->library_visible); +#line 1137 "lombard.c" + } +#line 399 "lombard.vala" + action = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_action_group_get_action (self->priv->main_group, "Snap"), GTK_IS_TOGGLE_ACTION (_tmp4_) ? ((GtkToggleAction*) _tmp4_) : NULL)), _g_object_unref0 (action), _tmp5_); +#line 400 "lombard.vala" + if (gtk_toggle_action_get_active (action) != MODEL_PROJECT (self->priv->project)->snap_to_clip) { +#line 401 "lombard.vala" + gtk_toggle_action_set_active (action, MODEL_PROJECT (self->priv->project)->snap_to_clip); +#line 1145 "lombard.c" + } +#line 404 "lombard.vala" + if (MODEL_PROJECT (self->priv->project)->library_visible) { +#line 405 "lombard.vala" + if (GTK_PANED (self->priv->h_pane)->child1 != GTK_WIDGET (self->priv->library_scrolled)) { +#line 406 "lombard.vala" + gtk_paned_add1 (GTK_PANED (self->priv->h_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 1153 "lombard.c" + } + } else { +#line 409 "lombard.vala" + if (GTK_PANED (self->priv->h_pane)->child1 == GTK_WIDGET (self->priv->library_scrolled)) { +#line 410 "lombard.vala" + gtk_container_remove (GTK_CONTAINER (self->priv->h_pane), GTK_WIDGET (self->priv->library_scrolled)); +#line 1160 "lombard.c" + } + } +#line 414 "lombard.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->priv->load_errors)) > 0) { +#line 1165 "lombard.c" + char* message; +#line 415 "lombard.vala" + message = g_strdup (""); +#line 1169 "lombard.c" + { + GeeIterator* _s_it; + _s_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->load_errors)); +#line 416 "lombard.vala" + while (TRUE) { +#line 1175 "lombard.c" + char* s; + char* _tmp7_; + char* _tmp6_; +#line 416 "lombard.vala" + if (!gee_iterator_next (_s_it)) { +#line 416 "lombard.vala" + break; +#line 1183 "lombard.c" + } +#line 416 "lombard.vala" + s = (char*) gee_iterator_get (_s_it); +#line 417 "lombard.vala" + message = (_tmp7_ = g_strconcat (_tmp6_ = g_strconcat (message, s, NULL), "\n", NULL), _g_free0 (message), _tmp7_); +#line 1189 "lombard.c" + _g_free0 (_tmp6_); + _g_free0 (s); + } + _g_object_unref0 (_s_it); + } +#line 419 "lombard.vala" + app_do_error_dialog ("An error occurred loading the project.", message); +#line 1197 "lombard.c" + _g_free0 (message); + } +#line 421 "lombard.vala" + self->priv->loading = FALSE; +#line 1202 "lombard.c" + _g_object_unref0 (action); +} + + +#line 424 "lombard.vala" +static void app_on_library_size_allocate (App* self, GdkRectangle* rectangle) { +#line 1209 "lombard.c" + gboolean _tmp0_ = FALSE; +#line 424 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 425 "lombard.vala" + if (!self->priv->loading) { +#line 425 "lombard.vala" + _tmp0_ = GTK_PANED (self->priv->h_pane)->child1 == GTK_WIDGET (self->priv->library_scrolled); +#line 1217 "lombard.c" + } else { +#line 425 "lombard.vala" + _tmp0_ = FALSE; +#line 1221 "lombard.c" + } +#line 425 "lombard.vala" + if (_tmp0_) { +#line 426 "lombard.vala" + MODEL_PROJECT (self->priv->project)->library_width = (*rectangle).width; +#line 1227 "lombard.c" + } +} + + +#line 432 "lombard.vala" +void app_load_file (App* self, const char* name, ModelLibraryImporter* im) { +#line 1234 "lombard.c" + GError * _inner_error_; + gboolean _tmp0_ = FALSE; + char* _tmp1_; + gboolean _tmp2_; +#line 432 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 432 "lombard.vala" + g_return_if_fail (name != NULL); +#line 432 "lombard.vala" + g_return_if_fail (MODEL_IS_LIBRARY_IMPORTER (im)); +#line 1245 "lombard.c" + _inner_error_ = NULL; +#line 433 "lombard.vala" + if ((_tmp2_ = _vala_strcmp0 (_tmp1_ = get_file_extension (name), MODEL_PROJECT_LOMBARD_FILE_EXTENSION) == 0, _g_free0 (_tmp1_), _tmp2_)) { +#line 433 "lombard.vala" + _tmp0_ = TRUE; +#line 1251 "lombard.c" + } else { + char* _tmp3_; +#line 434 "lombard.vala" + _tmp0_ = _vala_strcmp0 (_tmp3_ = get_file_extension (name), MODEL_PROJECT_FILLMORE_FILE_EXTENSION) == 0; +#line 1256 "lombard.c" + _g_free0 (_tmp3_); + } +#line 433 "lombard.vala" + if (_tmp0_) { +#line 435 "lombard.vala" + app_load_project (self, name); +#line 1263 "lombard.c" + } else { + { +#line 438 "lombard.vala" + model_library_importer_add_file (im, name, &_inner_error_); +#line 1268 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch3_g_error; + } + } + goto __finally3; + __catch3_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 440 "lombard.vala" + app_do_error_dialog ("Error loading file", e->message); +#line 1282 "lombard.c" + _g_error_free0 (e); + } + } + __finally3: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } +} + + +static void _g_slist_free_g_free (GSList* self) { + g_slist_foreach (self, (GFunc) g_free, NULL); + g_slist_free (self); +} + + +#line 466 "lombard.vala" +static void _app_on_importer_started_model_library_importer_started (ModelLibraryImporter* _sender, ModelClipImporter* i, gint num, gpointer self) { +#line 1304 "lombard.c" + app_on_importer_started (self, i, num); +} + + +#line 445 "lombard.vala" +static void app_on_open (App* self) { +#line 1311 "lombard.c" + GError * _inner_error_; + GSList* filenames; + GSList* _tmp2_; + gboolean _tmp1_; + GSList* _tmp0_ = NULL; +#line 445 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 1319 "lombard.c" + _inner_error_ = NULL; +#line 446 "lombard.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->priv->load_errors)); +#line 1323 "lombard.c" + filenames = NULL; +#line 448 "lombard.vala" + if ((_tmp1_ = dialog_utils_open (GTK_WINDOW (self), APP_filters, G_N_ELEMENTS (APP_filters), TRUE, TRUE, &_tmp0_), filenames = (_tmp2_ = _tmp0_, __g_slist_free_g_free0 (filenames), _tmp2_), _tmp1_)) { +#line 449 "lombard.vala" + model_project_create_clip_importer (MODEL_PROJECT (self->priv->project), NULL, FALSE, (gint64) 0, FALSE, NULL, 0); +#line 450 "lombard.vala" + g_signal_connect_object (MODEL_PROJECT (self->priv->project)->importer, "started", (GCallback) _app_on_importer_started_model_library_importer_started, self, 0); +#line 1331 "lombard.c" + { + { + GSList* s_collection; + GSList* s_it; +#line 452 "lombard.vala" + s_collection = filenames; +#line 1338 "lombard.c" + for (s_it = s_collection; s_it != NULL; s_it = s_it->next) { + char* s; +#line 452 "lombard.vala" + s = g_strdup ((const char*) s_it->data); +#line 1343 "lombard.c" + { + char* str; + str = NULL; + { + char* _tmp3_; + char* _tmp4_; +#line 455 "lombard.vala" + _tmp3_ = g_filename_from_uri (s, NULL, &_inner_error_); +#line 1352 "lombard.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_CONVERT_ERROR) { + goto __catch5_g_convert_error; + } + _g_free0 (s); + _g_free0 (str); + __g_slist_free_g_free0 (filenames); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 455 "lombard.vala" + str = (_tmp4_ = _tmp3_, _g_free0 (str), _tmp4_); +#line 1366 "lombard.c" + } + goto __finally5; + __catch5_g_convert_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + char* _tmp5_; +#line 456 "lombard.vala" + str = (_tmp5_ = g_strdup (s), _g_free0 (str), _tmp5_); +#line 1378 "lombard.c" + _g_error_free0 (e); + } + } + __finally5: + if (_inner_error_ != NULL) { + _g_free0 (s); + _g_free0 (str); + goto __catch4_g_error; + } +#line 457 "lombard.vala" + app_load_file (self, str, MODEL_PROJECT (self->priv->project)->importer); +#line 1390 "lombard.c" + _g_free0 (s); + _g_free0 (str); + } + } + } +#line 459 "lombard.vala" + model_library_importer_start (MODEL_PROJECT (self->priv->project)->importer, &_inner_error_); +#line 1398 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch4_g_error; + } + } + goto __finally4; + __catch4_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 461 "lombard.vala" + app_do_error_dialog ("Could not open file", e->message); +#line 1412 "lombard.c" + _g_error_free0 (e); + } + } + __finally4: + if (_inner_error_ != NULL) { + __g_slist_free_g_free0 (filenames); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + __g_slist_free_g_free0 (filenames); +} + + +#line 466 "lombard.vala" +static void app_on_importer_started (App* self, ModelClipImporter* i, gint num) { +#line 1430 "lombard.c" + MultiFileProgress* _tmp0_; +#line 466 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 466 "lombard.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (i)); +#line 467 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_importer_started"); +#line 468 "lombard.vala" + _tmp0_ = g_object_ref_sink (multi_file_progress_new (GTK_WINDOW (self), num, "Import", MULTI_FILE_PROGRESS_INTERFACE (i))); +#line 1440 "lombard.c" + _g_object_unref0 (_tmp0_); +} + + +#line 471 "lombard.vala" +static gboolean app_do_save_dialog (App* self) { +#line 1447 "lombard.c" + gboolean result = FALSE; + char* filename; + gboolean create_directory; +#line 471 "lombard.vala" + g_return_val_if_fail (IS_APP (self), FALSE); +#line 472 "lombard.vala" + filename = model_project_get_project_file (MODEL_PROJECT (self->priv->project)); +#line 473 "lombard.vala" + create_directory = filename == NULL; +#line 474 "lombard.vala" + if (dialog_utils_save (GTK_WINDOW (self), "Save Project", create_directory, APP_filters, G_N_ELEMENTS (APP_filters), &filename)) { +#line 475 "lombard.vala" + model_project_save (MODEL_PROJECT (self->priv->project), filename); +#line 1461 "lombard.c" + result = TRUE; + _g_free0 (filename); +#line 476 "lombard.vala" + return result; +#line 1466 "lombard.c" + } + result = FALSE; + _g_free0 (filename); +#line 478 "lombard.vala" + return result; +#line 1472 "lombard.c" +} + + +#line 481 "lombard.vala" +static void app_on_save_as (App* self) { +#line 481 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 482 "lombard.vala" + app_do_save_dialog (self); +#line 1482 "lombard.c" +} + + +#line 485 "lombard.vala" +static void app_on_save (App* self) { +#line 485 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 486 "lombard.vala" + app_do_save (self); +#line 1492 "lombard.c" +} + + +#line 489 "lombard.vala" +static gboolean app_do_save (App* self) { +#line 1498 "lombard.c" + gboolean result = FALSE; + char* _tmp0_; + gboolean _tmp1_; +#line 489 "lombard.vala" + g_return_val_if_fail (IS_APP (self), FALSE); +#line 490 "lombard.vala" + if ((_tmp1_ = (_tmp0_ = model_project_get_project_file (MODEL_PROJECT (self->priv->project))) != NULL, _g_free0 (_tmp0_), _tmp1_)) { +#line 491 "lombard.vala" + model_project_save (MODEL_PROJECT (self->priv->project), NULL); +#line 1508 "lombard.c" + result = TRUE; +#line 492 "lombard.vala" + return result; +#line 1512 "lombard.c" + } + result = app_do_save_dialog (self); +#line 494 "lombard.vala" + return result; +#line 1517 "lombard.c" +} + + +#line 497 "lombard.vala" +void app_load_project (App* self, const char* filename) { +#line 1523 "lombard.c" + GError * _inner_error_; +#line 497 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 497 "lombard.vala" + g_return_if_fail (filename != NULL); +#line 1529 "lombard.c" + _inner_error_ = NULL; +#line 498 "lombard.vala" + self->priv->loading = TRUE; +#line 1533 "lombard.c" + { + ViewVideoOutput* _tmp0_; + ViewVideoOutput* _tmp1_; +#line 501 "lombard.vala" + view_media_engine_disconnect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->video_output)); +#line 502 "lombard.vala" + _tmp0_ = view_video_output_new (GTK_WIDGET (self->priv->drawing_area), &_inner_error_); +#line 1541 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch6_g_error; + } +#line 502 "lombard.vala" + self->priv->video_output = (_tmp1_ = _tmp0_, _g_object_unref0 (self->priv->video_output), _tmp1_); +#line 503 "lombard.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->video_output)); +#line 1549 "lombard.c" + } + goto __finally6; + __catch6_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 505 "lombard.vala" + app_do_error_dialog ("Could not create video output", e->message); +#line 1560 "lombard.c" + _g_error_free0 (e); + } + } + __finally6: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 508 "lombard.vala" + model_project_load (MODEL_PROJECT (self->priv->project), filename); +#line 1572 "lombard.c" +} + + +#line 514 "lombard.vala" +static void app_scroll_toward_center (App* self, gint xpos) { +#line 1578 "lombard.c" + gint cursor_pos; + gint page_size; + gint diff; + gint d; + gint x; + gint max_value; +#line 514 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 515 "lombard.vala" + cursor_pos = xpos - ((gint) gtk_adjustment_get_value (self->priv->h_adjustment)); +#line 520 "lombard.vala" + page_size = (gint) gtk_adjustment_get_page_size (self->priv->h_adjustment); +#line 521 "lombard.vala" + diff = (page_size / 2) - cursor_pos; +#line 522 "lombard.vala" + d = sign (diff) * ((gint) sqrt ((double) abs (diff))); +#line 523 "lombard.vala" + cursor_pos = cursor_pos + d; +#line 525 "lombard.vala" + x = MAX (0, xpos - cursor_pos); +#line 526 "lombard.vala" + max_value = (gint) (gtk_adjustment_get_upper (self->priv->h_adjustment) - GTK_WIDGET (self->priv->timeline_scrolled)->allocation.width); +#line 527 "lombard.vala" + if (x > max_value) { +#line 528 "lombard.vala" + x = max_value; +#line 1605 "lombard.c" + } +#line 530 "lombard.vala" + gtk_adjustment_set_value (self->priv->h_adjustment, (double) x); +#line 532 "lombard.vala" + gtk_adjustment_set_value (self->priv->h_adjustment, (double) x); +#line 1611 "lombard.c" +} + + +#line 535 "lombard.vala" +void app_on_split_at_playhead (App* self) { +#line 535 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 536 "lombard.vala" + model_project_split_at_playhead (MODEL_PROJECT (self->priv->project)); +#line 1621 "lombard.c" +} + + +#line 539 "lombard.vala" +void app_on_trim_to_playhead (App* self) { +#line 539 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 540 "lombard.vala" + model_project_trim_to_playhead (MODEL_PROJECT (self->priv->project)); +#line 1631 "lombard.c" +} + + +static Fraction* _fraction_dup (Fraction* self) { + Fraction* dup; + dup = g_new0 (Fraction, 1); + memcpy (dup, self, sizeof (Fraction)); + return dup; +} + + +static gpointer __fraction_dup0 (gpointer self) { + return self ? _fraction_dup (self) : NULL; +} + + +#line 543 "lombard.vala" +void app_on_clip_properties (App* self) { +#line 1650 "lombard.c" + Fraction* frames_per_second; + Fraction* _tmp1_; + Fraction _tmp0_ = {0}; +#line 543 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 544 "lombard.vala" + frames_per_second = NULL; +#line 545 "lombard.vala" + model_video_project_get_framerate_fraction (self->priv->project, &_tmp0_); +#line 545 "lombard.vala" + frames_per_second = (_tmp1_ = __fraction_dup0 (&_tmp0_), _g_free0 (frames_per_second), _tmp1_); +#line 546 "lombard.vala" + if (clip_library_view_has_selection (self->priv->library)) { +#line 1664 "lombard.c" + GeeArrayList* files; +#line 547 "lombard.vala" + files = clip_library_view_get_selected_files (self->priv->library); +#line 548 "lombard.vala" + if (gee_collection_get_size (GEE_COLLECTION (files)) == 1) { +#line 1670 "lombard.c" + char* file_name; + ModelClipFile* clip_file; +#line 549 "lombard.vala" + file_name = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (files), 0); +#line 550 "lombard.vala" + clip_file = model_project_find_clipfile (MODEL_PROJECT (self->priv->project), file_name); +#line 551 "lombard.vala" + dialog_utils_show_clip_properties (GTK_WINDOW (self), NULL, clip_file, frames_per_second); +#line 1679 "lombard.c" + _g_free0 (file_name); + _g_object_unref0 (clip_file); + } + _g_object_unref0 (files); + } else { + GeeArrayList* clips; +#line 554 "lombard.vala" + clips = _g_object_ref0 (self->priv->timeline->selected_clips); +#line 555 "lombard.vala" + if (gee_collection_get_size (GEE_COLLECTION (clips)) == 1) { +#line 1690 "lombard.c" + ClipView* clip_view; +#line 556 "lombard.vala" + clip_view = (ClipView*) gee_abstract_list_get (GEE_ABSTRACT_LIST (clips), 0); +#line 557 "lombard.vala" + dialog_utils_show_clip_properties (GTK_WINDOW (self), clip_view, NULL, frames_per_second); +#line 1696 "lombard.c" + _g_object_unref0 (clip_view); + } + _g_object_unref0 (clips); + } + _g_free0 (frames_per_second); +} + + +#line 562 "lombard.vala" +void app_on_position_changed (App* self) { +#line 562 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 563 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_position_changed"); +#line 564 "lombard.vala" + app_update_menu (self); +#line 1713 "lombard.c" +} + + +#line 567 "lombard.vala" +static void app_on_callback_pulse (App* self) { +#line 567 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 568 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_callback_pulse"); +#line 569 "lombard.vala" + if (model_project_transport_is_playing (MODEL_PROJECT (self->priv->project))) { +#line 570 "lombard.vala" + app_scroll_toward_center (self, model_time_system_time_to_xpos (MODEL_TIME_SYSTEM (self->priv->project->time_provider), MODEL_PROJECT (self->priv->project)->media_engine->position)); +#line 1727 "lombard.c" + } +#line 572 "lombard.vala" + gtk_widget_queue_draw (GTK_WIDGET (self->priv->timeline)); +#line 1731 "lombard.c" +} + + +#line 575 "lombard.vala" +void app_on_track_changed (App* self) { +#line 575 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 576 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_changed"); +#line 577 "lombard.vala" + app_update_menu (self); +#line 1743 "lombard.c" +} + + +#line 580 "lombard.vala" +static void app_update_menu (App* self) { +#line 1749 "lombard.c" + gboolean library_selected; + gboolean clip_selected; + gboolean stopped; + gboolean clip_is_trimmed; + gboolean playhead_on_clip; + gboolean dir = FALSE; + gboolean can_trim; + gboolean one_selected; + gboolean _tmp1_ = FALSE; + gboolean _tmp2_ = FALSE; + gboolean _tmp4_ = FALSE; + gboolean _tmp5_ = FALSE; + gboolean _tmp6_ = FALSE; + gboolean _tmp7_ = FALSE; + gboolean _tmp8_ = FALSE; +#line 580 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 581 "lombard.vala" + library_selected = clip_library_view_has_selection (self->priv->library); +#line 582 "lombard.vala" + clip_selected = time_line_is_clip_selected (self->priv->timeline); +#line 583 "lombard.vala" + stopped = transport_delegate_is_stopped (TRANSPORT_DELEGATE (self)); +#line 584 "lombard.vala" + clip_is_trimmed = FALSE; +#line 585 "lombard.vala" + playhead_on_clip = model_project_playhead_on_clip (MODEL_PROJECT (self->priv->project)); +#line 587 "lombard.vala" + can_trim = model_project_can_trim (MODEL_PROJECT (self->priv->project), &dir); +#line 588 "lombard.vala" + one_selected = FALSE; +#line 589 "lombard.vala" + if (library_selected) { +#line 1783 "lombard.c" + GeeArrayList* _tmp0_; +#line 590 "lombard.vala" + one_selected = gee_collection_get_size (GEE_COLLECTION (_tmp0_ = clip_library_view_get_selected_files (self->priv->library))) == 1; +#line 1787 "lombard.c" + _g_object_unref0 (_tmp0_); + } else { +#line 591 "lombard.vala" + if (clip_selected) { +#line 592 "lombard.vala" + one_selected = gee_collection_get_size (GEE_COLLECTION (self->priv->timeline->selected_clips)) == 1; +#line 1794 "lombard.c" + } + } +#line 595 "lombard.vala" + if (clip_selected) { +#line 1799 "lombard.c" + { + GeeIterator* _clip_view_it; + _clip_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->timeline->selected_clips)); +#line 596 "lombard.vala" + while (TRUE) { +#line 1805 "lombard.c" + ClipView* clip_view; +#line 596 "lombard.vala" + if (!gee_iterator_next (_clip_view_it)) { +#line 596 "lombard.vala" + break; +#line 1811 "lombard.c" + } +#line 596 "lombard.vala" + clip_view = (ClipView*) gee_iterator_get (_clip_view_it); +#line 597 "lombard.vala" + clip_is_trimmed = model_clip_is_trimmed (clip_view->clip); +#line 598 "lombard.vala" + if (clip_is_trimmed) { +#line 1819 "lombard.c" + _g_object_unref0 (clip_view); +#line 599 "lombard.vala" + break; +#line 1823 "lombard.c" + } + _g_object_unref0 (clip_view); + } + _g_object_unref0 (_clip_view_it); + } + } +#line 604 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Open", stopped); +#line 605 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Save", stopped); +#line 606 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "SaveAs", stopped); +#line 607 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Export", model_project_can_export (MODEL_PROJECT (self->priv->project))); +#line 610 "lombard.vala" + if (stopped) { +#line 610 "lombard.vala" + _tmp1_ = model_undo_manager_get_can_undo (MODEL_PROJECT (self->priv->project)->undo_manager); +#line 1842 "lombard.c" + } else { +#line 610 "lombard.vala" + _tmp1_ = FALSE; +#line 1846 "lombard.c" + } +#line 610 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Undo", _tmp1_); +#line 611 "lombard.vala" + if (stopped) { +#line 1852 "lombard.c" + gboolean _tmp3_ = FALSE; +#line 611 "lombard.vala" + if (clip_selected) { +#line 611 "lombard.vala" + _tmp3_ = TRUE; +#line 1858 "lombard.c" + } else { +#line 611 "lombard.vala" + _tmp3_ = library_selected; +#line 1862 "lombard.c" + } +#line 611 "lombard.vala" + _tmp2_ = _tmp3_; +#line 1866 "lombard.c" + } else { +#line 611 "lombard.vala" + _tmp2_ = FALSE; +#line 1870 "lombard.c" + } +#line 611 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Delete", _tmp2_); +#line 612 "lombard.vala" + if (stopped) { +#line 612 "lombard.vala" + _tmp4_ = clip_selected; +#line 1878 "lombard.c" + } else { +#line 612 "lombard.vala" + _tmp4_ = FALSE; +#line 1882 "lombard.c" + } +#line 612 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Cut", _tmp4_); +#line 613 "lombard.vala" + if (stopped) { +#line 613 "lombard.vala" + _tmp5_ = clip_selected; +#line 1890 "lombard.c" + } else { +#line 613 "lombard.vala" + _tmp5_ = FALSE; +#line 1894 "lombard.c" + } +#line 613 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Copy", _tmp5_); +#line 614 "lombard.vala" + if (stopped) { +#line 614 "lombard.vala" + _tmp6_ = gee_collection_get_size (GEE_COLLECTION (self->priv->timeline->clipboard->clips)) > 0; +#line 1902 "lombard.c" + } else { +#line 614 "lombard.vala" + _tmp6_ = FALSE; +#line 1906 "lombard.c" + } +#line 614 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Paste", _tmp6_); +#line 615 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "ClipProperties", one_selected); +#line 617 "lombard.vala" + if (stopped) { +#line 617 "lombard.vala" + _tmp7_ = playhead_on_clip; +#line 1916 "lombard.c" + } else { +#line 617 "lombard.vala" + _tmp7_ = FALSE; +#line 1920 "lombard.c" + } +#line 617 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "SplitAtPlayhead", _tmp7_); +#line 618 "lombard.vala" + if (stopped) { +#line 618 "lombard.vala" + _tmp8_ = can_trim; +#line 1928 "lombard.c" + } else { +#line 618 "lombard.vala" + _tmp8_ = FALSE; +#line 1932 "lombard.c" + } +#line 618 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "TrimToPlayhead", _tmp8_); +#line 621 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "ZoomProject", model_project_get_length (MODEL_PROJECT (self->priv->project)) != 0); +#line 1938 "lombard.c" +} + + +#line 625 "lombard.vala" +void app_on_timeline_selection_changed (App* self, gboolean selected) { +#line 625 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 626 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_timeline_selection_changed"); +#line 627 "lombard.vala" + if (selected) { +#line 628 "lombard.vala" + clip_library_view_unselect_all (self->priv->library); +#line 1952 "lombard.c" + } +#line 629 "lombard.vala" + app_update_menu (self); +#line 1956 "lombard.c" +} + + +#line 632 "lombard.vala" +void app_on_library_selection_changed (App* self, gboolean selected) { +#line 632 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 633 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_library_selection_changed"); +#line 634 "lombard.vala" + if (selected) { +#line 635 "lombard.vala" + time_line_deselect_all_clips (self->priv->timeline); +#line 636 "lombard.vala" + gtk_widget_queue_draw (GTK_WIDGET (self->priv->timeline)); +#line 1972 "lombard.c" + } +#line 638 "lombard.vala" + app_update_menu (self); +#line 1976 "lombard.c" +} + + +#line 643 "lombard.vala" +static gboolean app_real_key_press_event (GtkWidget* base, GdkEventKey* event) { +#line 1982 "lombard.c" + App * self; + gboolean result = FALSE; + self = APP (base); +#line 644 "lombard.vala" + switch ((*event).keyval) { +#line 1988 "lombard.c" + case GDK_KP_Enter: + case GDK_Return: + { +#line 647 "lombard.vala" + if (((*event).state & GDK_SHIFT_ALT_CONTROL_MASK) != 0) { +#line 1994 "lombard.c" + result = GTK_WIDGET_CLASS (app_parent_class)->key_press_event (GTK_WIDGET (GTK_WINDOW (self)), event); +#line 648 "lombard.vala" + return result; +#line 1998 "lombard.c" + } +#line 649 "lombard.vala" + app_on_go_start (self); +#line 650 "lombard.vala" + break; +#line 2004 "lombard.c" + } + case GDK_Left: + { +#line 652 "lombard.vala" + if (((*event).state & GDK_CONTROL_MASK) != 0) { +#line 653 "lombard.vala" + model_project_go_previous (MODEL_PROJECT (self->priv->project)); +#line 2012 "lombard.c" + } else { +#line 655 "lombard.vala" + model_video_project_go_previous_frame (self->priv->project); +#line 2016 "lombard.c" + } +#line 657 "lombard.vala" + break; +#line 2020 "lombard.c" + } + case GDK_Right: + { +#line 659 "lombard.vala" + if (((*event).state & GDK_CONTROL_MASK) != 0) { +#line 660 "lombard.vala" + model_project_go_next (MODEL_PROJECT (self->priv->project)); +#line 2028 "lombard.c" + } else { +#line 662 "lombard.vala" + model_video_project_go_next_frame (self->priv->project); +#line 2032 "lombard.c" + } +#line 664 "lombard.vala" + break; +#line 2036 "lombard.c" + } + case GDK_KP_Add: + case GDK_equal: + case GDK_plus: + { +#line 668 "lombard.vala" + app_on_zoom_in (self); +#line 669 "lombard.vala" + break; +#line 2046 "lombard.c" + } + case GDK_KP_Subtract: + case GDK_minus: + case GDK_underscore: + { +#line 673 "lombard.vala" + app_on_zoom_out (self); +#line 674 "lombard.vala" + break; +#line 2056 "lombard.c" + } + default: + { + result = GTK_WIDGET_CLASS (app_parent_class)->key_press_event (GTK_WIDGET (GTK_WINDOW (self)), event); +#line 676 "lombard.vala" + return result; +#line 2063 "lombard.c" + } + } + result = TRUE; +#line 678 "lombard.vala" + return result; +#line 2069 "lombard.c" +} + + +#line 681 "lombard.vala" +static void app_on_snap (App* self) { +#line 681 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 682 "lombard.vala" + MODEL_PROJECT (self->priv->project)->snap_to_clip = !MODEL_PROJECT (self->priv->project)->snap_to_clip; +#line 2079 "lombard.c" +} + + +#line 685 "lombard.vala" +static void app_on_view_library (App* self) { +#line 2085 "lombard.c" + GtkAction* _tmp0_; + GtkToggleAction* action; +#line 685 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 686 "lombard.vala" + action = _g_object_ref0 ((_tmp0_ = gtk_action_group_get_action (self->priv->main_group, APP_LibraryToggle), GTK_IS_TOGGLE_ACTION (_tmp0_) ? ((GtkToggleAction*) _tmp0_) : NULL)); +#line 687 "lombard.vala" + app_toggle_library (self, gtk_toggle_action_get_active (action)); +#line 2094 "lombard.c" + _g_object_unref0 (action); +} + + +#line 690 "lombard.vala" +static gint64 app_get_zoom_center_time (App* self) { +#line 2101 "lombard.c" + gint64 result = 0LL; +#line 690 "lombard.vala" + g_return_val_if_fail (IS_APP (self), 0LL); +#line 2105 "lombard.c" + result = model_project_transport_get_position (MODEL_PROJECT (self->priv->project)); +#line 691 "lombard.vala" + return result; +#line 2109 "lombard.c" +} + + +#line 694 "lombard.vala" +static void app_do_zoom (App* self, float increment) { +#line 694 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 695 "lombard.vala" + self->priv->center_time = app_get_zoom_center_time (self); +#line 696 "lombard.vala" + time_line_zoom (self->priv->timeline, increment); +#line 2121 "lombard.c" +} + + +#line 699 "lombard.vala" +static void app_on_zoom_in (App* self) { +#line 699 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 700 "lombard.vala" + app_do_zoom (self, 0.1f); +#line 2131 "lombard.c" +} + + +#line 703 "lombard.vala" +static void app_on_zoom_out (App* self) { +#line 703 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 704 "lombard.vala" + app_do_zoom (self, -0.1f); +#line 2141 "lombard.c" +} + + +#line 707 "lombard.vala" +static void app_on_zoom_to_project (App* self) { +#line 707 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 708 "lombard.vala" + time_line_zoom_to_project (self->priv->timeline, gtk_adjustment_get_page_size (self->priv->h_adjustment)); +#line 2151 "lombard.c" +} + + +#line 711 "lombard.vala" +static void app_on_timeline_size_allocate (App* self, GdkRectangle* rectangle) { +#line 711 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 712 "lombard.vala" + if (self->priv->center_time != (-1)) { +#line 2161 "lombard.c" + gint new_center_pixel; + gint page_size; +#line 713 "lombard.vala" + new_center_pixel = model_time_system_time_to_xpos (MODEL_TIME_SYSTEM (self->priv->project->time_provider), self->priv->center_time); +#line 714 "lombard.vala" + page_size = (gint) (gtk_adjustment_get_page_size (self->priv->h_adjustment) / 2); +#line 715 "lombard.vala" + gtk_adjustment_clamp_page (self->priv->h_adjustment, (double) (new_center_pixel - page_size), (double) (new_center_pixel + page_size)); +#line 716 "lombard.vala" + self->priv->center_time = (gint64) (-1); +#line 2172 "lombard.c" + } +} + + +#line 720 "lombard.vala" +static void app_set_sensitive_group (App* self, GtkActionGroup* group, const char* group_path, gboolean sensitive) { +#line 2179 "lombard.c" + GtkAction* action; +#line 720 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 720 "lombard.vala" + g_return_if_fail (GTK_IS_ACTION_GROUP (group)); +#line 720 "lombard.vala" + g_return_if_fail (group_path != NULL); +#line 721 "lombard.vala" + action = _g_object_ref0 (gtk_action_group_get_action (group, group_path)); +#line 722 "lombard.vala" + gtk_action_set_sensitive (action, sensitive); +#line 2191 "lombard.c" + _g_object_unref0 (action); +} + + +#line 727 "lombard.vala" +static void app_on_play_pause (App* self) { +#line 727 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 728 "lombard.vala" + if (model_project_transport_is_playing (MODEL_PROJECT (self->priv->project))) { +#line 729 "lombard.vala" + view_media_engine_pause (MODEL_PROJECT (self->priv->project)->media_engine); +#line 2204 "lombard.c" + } else { +#line 735 "lombard.vala" + view_media_engine_do_play (MODEL_PROJECT (self->priv->project)->media_engine, PLAY_STATE_PLAYING); +#line 2208 "lombard.c" + } +} + + +#line 739 "lombard.vala" +static void app_on_export (App* self) { +#line 2215 "lombard.c" + GError * _inner_error_; + char* filename; +#line 739 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 2220 "lombard.c" + _inner_error_ = NULL; +#line 740 "lombard.vala" + filename = NULL; +#line 741 "lombard.vala" + if (dialog_utils_save (GTK_WINDOW (self), "Export", FALSE, APP_export_filters, G_N_ELEMENTS (APP_export_filters), &filename)) { +#line 2226 "lombard.c" + MultiFileProgress* _tmp0_; +#line 742 "lombard.vala" + _tmp0_ = g_object_ref_sink (multi_file_progress_new (GTK_WINDOW (self), 1, "Export", MULTI_FILE_PROGRESS_INTERFACE (MODEL_PROJECT (self->priv->project)->media_engine))); +#line 2230 "lombard.c" + _g_object_unref0 (_tmp0_); +#line 743 "lombard.vala" + view_media_engine_disconnect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_output)); +#line 744 "lombard.vala" + view_media_engine_disconnect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->video_output)); +#line 2236 "lombard.c" + { + GstCaps* _tmp1_; + ViewOggVorbisExport* _tmp2_; + ViewOggVorbisExport* _tmp3_; + ViewOggVorbisExport* _tmp4_; +#line 746 "lombard.vala" + _tmp3_ = (_tmp2_ = view_ogg_vorbis_export_new (VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio | VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video, filename, _tmp1_ = view_media_engine_get_project_audio_export_caps (MODEL_PROJECT (self->priv->project)->media_engine), &_inner_error_), _gst_caps_unref0 (_tmp1_), _tmp2_); +#line 2244 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch7_g_error; + } +#line 746 "lombard.vala" + self->priv->export_connector = (_tmp4_ = _tmp3_, _g_object_unref0 (self->priv->export_connector), _tmp4_); +#line 749 "lombard.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->export_connector)); +#line 750 "lombard.vala" + view_media_engine_start_export (MODEL_PROJECT (self->priv->project)->media_engine, filename); +#line 2254 "lombard.c" + } + goto __finally7; + __catch7_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 752 "lombard.vala" + app_do_error_dialog ("Could not export file", e->message); +#line 2265 "lombard.c" + _g_error_free0 (e); + } + } + __finally7: + if (_inner_error_ != NULL) { + _g_free0 (filename); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + _g_free0 (filename); +} + + +#line 757 "lombard.vala" +static void app_on_post_export (App* self, gboolean canceled) { +#line 2283 "lombard.c" + ViewOggVorbisExport* _tmp1_; +#line 757 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 758 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_post_export"); +#line 759 "lombard.vala" + view_media_engine_disconnect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->export_connector)); +#line 760 "lombard.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->audio_output)); +#line 761 "lombard.vala" + view_media_engine_connect_output (MODEL_PROJECT (self->priv->project)->media_engine, VIEW_MEDIA_CONNECTOR (self->priv->video_output)); +#line 762 "lombard.vala" + if (canceled) { +#line 2297 "lombard.c" + char* _tmp0_; +#line 763 "lombard.vala" + g_remove (_tmp0_ = view_ogg_vorbis_export_get_filename (self->priv->export_connector)); +#line 2301 "lombard.c" + _g_free0 (_tmp0_); + } +#line 765 "lombard.vala" + self->priv->export_connector = (_tmp1_ = NULL, _g_object_unref0 (self->priv->export_connector), _tmp1_); +#line 2306 "lombard.c" +} + + +#line 770 "lombard.vala" +static void app_on_undo (App* self) { +#line 770 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 771 "lombard.vala" + model_project_undo (MODEL_PROJECT (self->priv->project)); +#line 2316 "lombard.c" +} + + +#line 774 "lombard.vala" +static void app_on_delete (App* self) { +#line 774 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 775 "lombard.vala" + if (clip_library_view_has_selection (self->priv->library)) { +#line 776 "lombard.vala" + clip_library_view_delete_selection (self->priv->library); +#line 2328 "lombard.c" + } else { +#line 778 "lombard.vala" + time_line_delete_selection (self->priv->timeline); +#line 2332 "lombard.c" + } +} + + +#line 781 "lombard.vala" +static void app_on_cut (App* self) { +#line 781 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 782 "lombard.vala" + time_line_do_cut (self->priv->timeline); +#line 2343 "lombard.c" +} + + +#line 785 "lombard.vala" +static void app_on_copy (App* self) { +#line 785 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 786 "lombard.vala" + time_line_do_copy (self->priv->timeline); +#line 2353 "lombard.c" +} + + +#line 789 "lombard.vala" +static void app_on_paste (App* self) { +#line 789 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 790 "lombard.vala" + time_line_paste (self->priv->timeline); +#line 2363 "lombard.c" +} + + +#line 793 "lombard.vala" +static void app_on_playstate_changed (App* self, PlayState playstate) { +#line 793 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 794 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_playstate_changed"); +#line 795 "lombard.vala" + if (playstate == PLAY_STATE_STOPPED) { +#line 796 "lombard.vala" + app_update_menu (self); +#line 2377 "lombard.c" + } +} + + +#line 800 "lombard.vala" +static void app_on_undo_changed (App* self, gboolean can_undo) { +#line 2384 "lombard.c" + GtkMenuItem* undo; + gboolean _tmp0_ = FALSE; +#line 800 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 801 "lombard.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_undo_changed"); +#line 802 "lombard.vala" + undo = GTK_MENU_ITEM (get_widget (self->priv->manager, "/MenuBar/EditMenu/EditUndo")); +#line 803 "lombard.vala" + g_assert (undo != NULL); +#line 805 "lombard.vala" + if (transport_delegate_is_stopped (TRANSPORT_DELEGATE (self))) { +#line 805 "lombard.vala" + _tmp0_ = model_undo_manager_get_can_undo (MODEL_PROJECT (self->priv->project)->undo_manager); +#line 2399 "lombard.c" + } else { +#line 805 "lombard.vala" + _tmp0_ = FALSE; +#line 2403 "lombard.c" + } +#line 805 "lombard.vala" + app_set_sensitive_group (self, self->priv->main_group, "Undo", _tmp0_); +#line 2407 "lombard.c" + _g_object_unref0 (undo); +} + + +#line 808 "lombard.vala" +static void app_on_select_all (App* self) { +#line 808 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 809 "lombard.vala" + if (clip_library_view_has_selection (self->priv->library)) { +#line 810 "lombard.vala" + clip_library_view_select_all (self->priv->library); +#line 2420 "lombard.c" + } else { +#line 812 "lombard.vala" + time_line_select_all (self->priv->timeline); +#line 2424 "lombard.c" + } +} + + +#line 818 "lombard.vala" +static void app_on_go_start (App* self) { +#line 818 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 818 "lombard.vala" + model_project_go_start (MODEL_PROJECT (self->priv->project)); +#line 2435 "lombard.c" +} + + +#line 820 "lombard.vala" +static void app_on_go_end (App* self) { +#line 820 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 820 "lombard.vala" + model_project_go_end (MODEL_PROJECT (self->priv->project)); +#line 2445 "lombard.c" +} + + +#line 824 "lombard.vala" +static void app_on_help_contents (App* self) { +#line 2451 "lombard.c" + GError * _inner_error_; +#line 824 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 2455 "lombard.c" + _inner_error_ = NULL; + { +#line 826 "lombard.vala" + gtk_show_uri (NULL, "http://trac.yorba.org/wiki/UsingLombard0.1", (guint32) 0, &_inner_error_); +#line 2460 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch8_g_error; + } + } + goto __finally8; + __catch8_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally8: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +#line 831 "lombard.vala" +static void app_on_about (App* self) { +#line 2486 "lombard.c" + char* _tmp1_; + char* _tmp0_; +#line 831 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 832 "lombard.vala" + gtk_show_about_dialog (GTK_WINDOW (self), "version", _tmp0_ = model_project_get_version (MODEL_PROJECT (self->priv->project)), "comments", "A video editor", "copyright", "Copyright 2009-2010 Yorba Foundation", "website", "http://www.yorba.org", "license", _tmp1_ = model_project_get_license (MODEL_PROJECT (self->priv->project)), "website-label", "Visit the Yorba web site", "authors", MODEL_PROJECT_authors, NULL); +#line 2493 "lombard.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +} + + +#line 843 "lombard.vala" +static void app_on_save_graph (App* self) { +#line 843 "lombard.vala" + g_return_if_fail (IS_APP (self)); +#line 844 "lombard.vala" + model_project_print_graph (MODEL_PROJECT (self->priv->project), GST_BIN (MODEL_PROJECT (self->priv->project)->media_engine->pipeline), "save_graph"); +#line 2505 "lombard.c" +} + + +#line 848 "lombard.vala" +static gboolean app_real_is_recording (TransportDelegate* base) { +#line 2511 "lombard.c" + App * self; + gboolean result = FALSE; + self = APP (base); + result = model_project_transport_is_recording (MODEL_PROJECT (self->priv->project)); +#line 849 "lombard.vala" + return result; +#line 2518 "lombard.c" +} + + +#line 852 "lombard.vala" +static gboolean app_real_is_playing (TransportDelegate* base) { +#line 2524 "lombard.c" + App * self; + gboolean result = FALSE; + self = APP (base); + result = model_project_transport_is_playing (MODEL_PROJECT (self->priv->project)); +#line 853 "lombard.vala" + return result; +#line 2531 "lombard.c" +} + + +#line 856 "lombard.vala" +static gboolean app_real_is_stopped (TransportDelegate* base) { +#line 2537 "lombard.c" + App * self; + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + self = APP (base); +#line 857 "lombard.vala" + if (transport_delegate_is_playing (TRANSPORT_DELEGATE (self))) { +#line 857 "lombard.vala" + _tmp0_ = TRUE; +#line 2546 "lombard.c" + } else { +#line 857 "lombard.vala" + _tmp0_ = transport_delegate_is_recording (TRANSPORT_DELEGATE (self)); +#line 2550 "lombard.c" + } + result = !_tmp0_; +#line 857 "lombard.vala" + return result; +#line 2555 "lombard.c" +} + + +static void app_class_init (AppClass * klass) { + app_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (AppPrivate)); + GTK_WIDGET_CLASS (klass)->key_press_event = app_real_key_press_event; + G_OBJECT_CLASS (klass)->finalize = app_finalize; +} + + +static void app_transport_delegate_interface_init (TransportDelegateIface * iface) { + app_transport_delegate_parent_iface = g_type_interface_peek_parent (iface); + iface->is_recording = app_real_is_recording; + iface->is_playing = app_real_is_playing; + iface->is_stopped = app_real_is_stopped; +} + + +static void app_instance_init (App * self) { + self->priv = APP_GET_PRIVATE (self); + self->priv->center_time = (gint64) (-1); + self->priv->vbox = NULL; +} + + +static void app_finalize (GObject* obj) { + App * self; + self = APP (obj); + _g_object_unref0 (self->priv->drawing_area); + _g_object_unref0 (self->priv->project); + _g_object_unref0 (self->priv->video_output); + _g_object_unref0 (self->priv->audio_output); + _g_object_unref0 (self->priv->export_connector); + _g_object_unref0 (self->priv->timeline); + _g_object_unref0 (self->priv->library); + _g_object_unref0 (self->priv->status_bar); + _g_object_unref0 (self->priv->h_pane); + _g_object_unref0 (self->priv->library_scrolled); + _g_object_unref0 (self->priv->timeline_scrolled); + _g_object_unref0 (self->priv->h_adjustment); + _g_object_unref0 (self->priv->main_group); + _g_object_unref0 (self->priv->vbox); + _g_object_unref0 (self->priv->menubar); + _g_object_unref0 (self->priv->manager); + _g_free0 (self->priv->project_filename); + _g_object_unref0 (self->priv->load_errors); + G_OBJECT_CLASS (app_parent_class)->finalize (obj); +} + + +GType app_get_type (void) { + static volatile gsize app_type_id__volatile = 0; + if (g_once_init_enter (&app_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (AppClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) app_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (App), 0, (GInstanceInitFunc) app_instance_init, NULL }; + static const GInterfaceInfo transport_delegate_info = { (GInterfaceInitFunc) app_transport_delegate_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType app_type_id; + app_type_id = g_type_register_static (GTK_TYPE_WINDOW, "App", &g_define_type_info, 0); + g_type_add_interface_static (app_type_id, TYPE_TRANSPORT_DELEGATE, &transport_delegate_info); + g_once_init_leave (&app_type_id__volatile, app_type_id); + } + return app_type_id__volatile; +} + + +#line 863 "lombard.vala" +void _vala_main (char** args, int args_length1) { +#line 2623 "lombard.c" + GError * _inner_error_; + GOptionContext* context; + _inner_error_ = NULL; +#line 864 "lombard.vala" + debug_level = -1; +#line 865 "lombard.vala" + context = g_option_context_new (" [project file] - Create and edit movies"); +#line 867 "lombard.vala" + g_option_context_add_main_entries (context, options, NULL); +#line 868 "lombard.vala" + g_option_context_add_group (context, gst_init_get_option_group ()); +#line 2635 "lombard.c" + { +#line 871 "lombard.vala" + g_option_context_parse (context, &args_length1, &args, &_inner_error_); +#line 2639 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch9_g_error; + } + } + goto __finally9; + __catch9_g_error: + { + GError * arg_error; + arg_error = _inner_error_; + _inner_error_ = NULL; + { +#line 873 "lombard.vala" + fprintf (stderr, "%s\n" \ +"Run 'lombard --help' for a full list of available command line options" \ +".", arg_error->message); +#line 2653 "lombard.c" + _g_error_free0 (arg_error); + _g_option_context_free0 (context); +#line 875 "lombard.vala" + return; +#line 2658 "lombard.c" + } + } + __finally9: + if (_inner_error_ != NULL) { + _g_option_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 877 "lombard.vala" + gtk_init (&args_length1, &args); +#line 2670 "lombard.c" + { + char* project_file; + char* str; + gboolean _tmp3_ = FALSE; + ClassFactory* _tmp4_; + App* _tmp5_; +#line 880 "lombard.vala" + g_set_application_name ("Lombard"); +#line 882 "lombard.vala" + app_dirs_init (args[0], _PROGRAM_NAME); +#line 883 "lombard.vala" + gst_init (&args_length1, &args); +#line 885 "lombard.vala" + if (args_length1 > 2) { +#line 886 "lombard.vala" + fprintf (stderr, "usage: %s [project-file]\n", args[0]); +#line 2687 "lombard.c" + _g_option_context_free0 (context); +#line 887 "lombard.vala" + return; +#line 2691 "lombard.c" + } +#line 890 "lombard.vala" + project_file = NULL; +#line 891 "lombard.vala" + if (args_length1 > 1) { +#line 2697 "lombard.c" + char* _tmp0_; +#line 892 "lombard.vala" + project_file = (_tmp0_ = g_strdup (args[1]), _g_free0 (project_file), _tmp0_); +#line 2701 "lombard.c" + { + char* _tmp1_; + char* _tmp2_; +#line 894 "lombard.vala" + _tmp1_ = g_filename_from_uri (project_file, NULL, &_inner_error_); +#line 2707 "lombard.c" + if (_inner_error_ != NULL) { + goto __catch11_g_error; + } +#line 894 "lombard.vala" + project_file = (_tmp2_ = _tmp1_, _g_free0 (project_file), _tmp2_); +#line 2713 "lombard.c" + } + goto __finally11; + __catch11_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally11: + if (_inner_error_ != NULL) { + _g_free0 (project_file); + goto __catch10_g_error; + } + } +#line 898 "lombard.vala" + str = g_strdup (g_getenv ("LOMBARD_DEBUG")); +#line 899 "lombard.vala" + if (str != NULL) { +#line 899 "lombard.vala" + _tmp3_ = g_utf8_get_char (g_utf8_offset_to_pointer (str, 0)) >= '1'; +#line 2737 "lombard.c" + } else { +#line 899 "lombard.vala" + _tmp3_ = FALSE; +#line 2741 "lombard.c" + } +#line 899 "lombard.vala" + debug_enabled = _tmp3_; +#line 900 "lombard.vala" + class_factory_set_class_factory (_tmp4_ = class_factory_new ()); +#line 2747 "lombard.c" + _class_factory_unref0 (_tmp4_); +#line 901 "lombard.vala" + view_media_engine_can_run (&_inner_error_); +#line 2751 "lombard.c" + if (_inner_error_ != NULL) { + _g_free0 (project_file); + _g_free0 (str); + goto __catch10_g_error; + } +#line 903 "lombard.vala" + _tmp5_ = g_object_ref_sink (app_new (project_file, &_inner_error_)); +#line 2759 "lombard.c" + _g_object_unref0 (_tmp5_); + if (_inner_error_ != NULL) { + _g_free0 (project_file); + _g_free0 (str); + goto __catch10_g_error; + } +#line 904 "lombard.vala" + gtk_main (); +#line 2768 "lombard.c" + _g_free0 (project_file); + _g_free0 (str); + } + goto __finally10; + __catch10_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + char* _tmp6_; +#line 906 "lombard.vala" + app_do_error_dialog ("Could not launch application", _tmp6_ = g_strdup_printf ("%s.", e->message)); +#line 2782 "lombard.c" + _g_free0 (_tmp6_); + _g_error_free0 (e); + } + } + __finally10: + if (_inner_error_ != NULL) { + _g_option_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _g_option_context_free0 (context); +} + + +#line 863 "lombard.vala" +int main (int argc, char ** argv) { +#line 2800 "lombard.c" + g_thread_init (NULL); +#line 863 "lombard.vala" + g_type_init (); +#line 863 "lombard.vala" + _vala_main (argv, argc); +#line 863 "lombard.vala" + return 0; +#line 2808 "lombard.c" +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/lombard/lombard/lombard.o b/src/lombard/lombard/lombard.o new file mode 100644 index 0000000000000000000000000000000000000000..61205d44ba16d7d4e3ddb4a690163e6837d877ac GIT binary patch literal 200472 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 literal 0 HcmV?d00001 diff --git a/src/lombard/lombard/video_project.c b/src/lombard/lombard/video_project.c new file mode 100644 index 0000000..dae05f8 --- /dev/null +++ b/src/lombard/lombard/video_project.c @@ -0,0 +1,292 @@ +/* video_project.c generated by valac, the Vala compiler + * generated from video_project.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_VIDEO_PROJECT (model_video_project_get_type ()) +#define MODEL_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProject)) +#define MODEL_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass)) +#define MODEL_IS_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_PROJECT)) +#define MODEL_IS_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_PROJECT)) +#define MODEL_VIDEO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass)) + +typedef struct _ModelVideoProject ModelVideoProject; +typedef struct _ModelVideoProjectClass ModelVideoProjectClass; +typedef struct _ModelVideoProjectPrivate ModelVideoProjectPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +struct _ModelVideoProject { + ModelProject parent_instance; + ModelVideoProjectPrivate * priv; + ModelTimecodeTimeSystem* time_provider; +}; + +struct _ModelVideoProjectClass { + ModelProjectClass parent_class; +}; + + +static gpointer model_video_project_parent_class = NULL; + +GType model_video_project_get_type (void); +enum { + MODEL_VIDEO_PROJECT_DUMMY_PROPERTY +}; +static void model_video_project_real_load_complete (ModelProject* base); +ModelVideoProject* model_video_project_new (const char* filename, GError** error); +ModelVideoProject* model_video_project_construct (GType object_type, const char* filename, GError** error); +#define APP_NAME "Lombard" +static char* model_video_project_real_get_app_name (ModelProject* base); +gboolean model_video_project_get_framerate_fraction (ModelVideoProject* self, Fraction* rate); +static void model_video_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result); +void model_video_project_go_previous_frame (ModelVideoProject* self); +void model_video_project_go_next_frame (ModelVideoProject* self); +static void model_video_project_finalize (GObject* obj); + + + +#line 14 "video_project.vala" +static void model_video_project_real_load_complete (ModelProject* base) { +#line 63 "video_project.c" + ModelVideoProject * self; + ModelVideoTrack* _tmp0_; + gboolean _tmp1_; + self = MODEL_VIDEO_PROJECT (base); +#line 15 "video_project.vala" + if ((_tmp1_ = (_tmp0_ = model_project_find_video_track (MODEL_PROJECT (self))) == NULL, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 70 "video_project.c" + ModelVideoTrack* _tmp2_; +#line 16 "video_project.vala" + model_project_add_track (MODEL_PROJECT (self), MODEL_TRACK (_tmp2_ = model_video_track_new (MODEL_PROJECT (self)))); +#line 74 "video_project.c" + _g_object_unref0 (_tmp2_); + } +} + + +#line 20 "video_project.vala" +ModelVideoProject* model_video_project_construct (GType object_type, const char* filename, GError** error) { +#line 82 "video_project.c" + ModelVideoProject * self; +#line 21 "video_project.vala" + self = (ModelVideoProject*) model_project_construct (object_type, filename, TRUE, error); +#line 23 "video_project.vala" + if (self != NULL) { +#line 88 "video_project.c" + ModelTimecodeTimeSystem* _tmp0_; +#line 24 "video_project.vala" + self->time_provider = (_tmp0_ = model_timecode_time_system_new (), _g_object_unref0 (self->time_provider), _tmp0_); +#line 92 "video_project.c" + } + return self; +} + + +#line 20 "video_project.vala" +ModelVideoProject* model_video_project_new (const char* filename, GError** error) { +#line 20 "video_project.vala" + return model_video_project_construct (MODEL_TYPE_VIDEO_PROJECT, filename, error); +#line 102 "video_project.c" +} + + +#line 28 "video_project.vala" +static char* model_video_project_real_get_app_name (ModelProject* base) { +#line 108 "video_project.c" + ModelVideoProject * self; + char* result = NULL; + self = MODEL_VIDEO_PROJECT (base); + result = g_strdup (APP_NAME); +#line 29 "video_project.vala" + return result; +#line 115 "video_project.c" +} + + +#line 32 "video_project.vala" +static void model_video_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result) { +#line 121 "video_project.c" + ModelVideoProject * self; + TimeCode _tmp0_ = {0}; + TimeCode t; + self = MODEL_VIDEO_PROJECT (base); +#line 32 "video_project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 33 "video_project.vala" + t = (_tmp0_); +#line 35 "video_project.vala" + if (model_clip_file_is_of_type (f, MODEL_MEDIA_TYPE_VIDEO)) { +#line 132 "video_project.c" + Fraction rate = {0}; + TimeCode _tmp1_ = {0}; +#line 37 "video_project.vala" + if (!model_video_project_get_framerate_fraction (self, &rate)) { +#line 38 "video_project.vala" + rate.numerator = 2997; +#line 39 "video_project.vala" + rate.denominator = 100; +#line 141 "video_project.c" + } +#line 41 "video_project.vala" + t = (frame_to_time (time_to_frame_with_rate (model_clip_file_get_length (f), &rate), &rate, &_tmp1_), _tmp1_); +#line 145 "video_project.c" + } else { +#line 43 "video_project.vala" + time_code_get_from_length (&t, model_clip_file_get_length (f)); +#line 149 "video_project.c" + } + *result = t; +#line 45 "video_project.vala" + return; +#line 154 "video_project.c" +} + + +#line 48 "video_project.vala" +void model_video_project_go_previous_frame (ModelVideoProject* self) { +#line 160 "video_project.c" + ModelVideoTrack* video_track; +#line 48 "video_project.vala" + g_return_if_fail (MODEL_IS_VIDEO_PROJECT (self)); +#line 49 "video_project.vala" + video_track = model_project_find_video_track (MODEL_PROJECT (self)); +#line 50 "video_project.vala" + if (video_track != NULL) { +#line 51 "video_project.vala" + view_media_engine_go (MODEL_PROJECT (self)->media_engine, model_video_track_previous_frame (video_track, model_project_transport_get_position (MODEL_PROJECT (self)))); +#line 170 "video_project.c" + } + _g_object_unref0 (video_track); +} + + +#line 55 "video_project.vala" +void model_video_project_go_next_frame (ModelVideoProject* self) { +#line 178 "video_project.c" + ModelVideoTrack* video_track; +#line 55 "video_project.vala" + g_return_if_fail (MODEL_IS_VIDEO_PROJECT (self)); +#line 56 "video_project.vala" + video_track = model_project_find_video_track (MODEL_PROJECT (self)); +#line 57 "video_project.vala" + if (video_track != NULL) { +#line 58 "video_project.vala" + view_media_engine_go (MODEL_PROJECT (self)->media_engine, model_video_track_next_frame (video_track, model_project_transport_get_position (MODEL_PROJECT (self)))); +#line 188 "video_project.c" + } + _g_object_unref0 (video_track); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 62 "video_project.vala" +gboolean model_video_project_get_framerate_fraction (ModelVideoProject* self, Fraction* rate) { +#line 201 "video_project.c" + gboolean result = FALSE; +#line 62 "video_project.vala" + g_return_val_if_fail (MODEL_IS_VIDEO_PROJECT (self), FALSE); +#line 205 "video_project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->tracks)); +#line 63 "video_project.vala" + while (TRUE) { +#line 211 "video_project.c" + ModelTrack* track; + ModelTrack* _tmp0_; + ModelVideoTrack* video_track; + gboolean _tmp1_ = FALSE; +#line 63 "video_project.vala" + if (!gee_iterator_next (_track_it)) { +#line 63 "video_project.vala" + break; +#line 220 "video_project.c" + } +#line 63 "video_project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 64 "video_project.vala" + video_track = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_VIDEO_TRACK (_tmp0_) ? ((ModelVideoTrack*) _tmp0_) : NULL)); +#line 65 "video_project.vala" + if (video_track != NULL) { +#line 65 "video_project.vala" + _tmp1_ = model_video_track_get_framerate (video_track, rate); +#line 230 "video_project.c" + } else { +#line 65 "video_project.vala" + _tmp1_ = FALSE; +#line 234 "video_project.c" + } +#line 65 "video_project.vala" + if (_tmp1_) { +#line 238 "video_project.c" + result = TRUE; + _g_object_unref0 (track); + _g_object_unref0 (video_track); + _g_object_unref0 (_track_it); +#line 66 "video_project.vala" + return result; +#line 245 "video_project.c" + } + _g_object_unref0 (track); + _g_object_unref0 (video_track); + } + _g_object_unref0 (_track_it); + } + result = FALSE; +#line 68 "video_project.vala" + return result; +#line 255 "video_project.c" +} + + +static void model_video_project_class_init (ModelVideoProjectClass * klass) { + model_video_project_parent_class = g_type_class_peek_parent (klass); + MODEL_PROJECT_CLASS (klass)->load_complete = model_video_project_real_load_complete; + MODEL_PROJECT_CLASS (klass)->get_app_name = model_video_project_real_get_app_name; + MODEL_PROJECT_CLASS (klass)->get_clip_time = model_video_project_real_get_clip_time; + G_OBJECT_CLASS (klass)->finalize = model_video_project_finalize; +} + + +static void model_video_project_instance_init (ModelVideoProject * self) { +} + + +static void model_video_project_finalize (GObject* obj) { + ModelVideoProject * self; + self = MODEL_VIDEO_PROJECT (obj); + _g_object_unref0 (self->time_provider); + G_OBJECT_CLASS (model_video_project_parent_class)->finalize (obj); +} + + +GType model_video_project_get_type (void) { + static volatile gsize model_video_project_type_id__volatile = 0; + if (g_once_init_enter (&model_video_project_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelVideoProjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_video_project_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelVideoProject), 0, (GInstanceInitFunc) model_video_project_instance_init, NULL }; + GType model_video_project_type_id; + model_video_project_type_id = g_type_register_static (MODEL_TYPE_PROJECT, "ModelVideoProject", &g_define_type_info, 0); + g_once_init_leave (&model_video_project_type_id__volatile, model_video_project_type_id); + } + return model_video_project_type_id__volatile; +} + + + + diff --git a/src/lombard/lombard/video_project.o b/src/lombard/lombard/video_project.o new file mode 100644 index 0000000000000000000000000000000000000000..56358c9a82262e166c509765fe653d266665a17d GIT binary patch literal 37176 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 literal 0 HcmV?d00001 diff --git a/src/lombard/sources.mk b/src/lombard/sources.mk new file mode 100644 index 0000000..2e617b3 --- /dev/null +++ b/src/lombard/sources.mk @@ -0,0 +1,4 @@ +$(SRC_PREFIX)SRC_FILES = \ + lombard.vala \ + video_project.vala + diff --git a/src/lombard/video_project.vala b/src/lombard/video_project.vala new file mode 100644 index 0000000..1265288 --- /dev/null +++ b/src/lombard/video_project.vala @@ -0,0 +1,71 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +namespace Model { + +class VideoProject : Project { + public TimecodeTimeSystem time_provider; + + public override void load_complete() { + if (find_video_track() == null) { + add_track(new VideoTrack(this)); + } + } + + public VideoProject(string? filename) throws Error { + base(filename, true); + // TODO: When vala supports throwing from base constructor remove this check + if (this != null) { + time_provider = new TimecodeTimeSystem(); + } + } + + public override string get_app_name() { + return App.NAME; + } + + public override TimeCode get_clip_time(ClipFile f) { + TimeCode t = {}; + + if (f.is_of_type(MediaType.VIDEO)) { + Fraction rate; + if (!get_framerate_fraction(out rate)) { + rate.numerator = 2997; + rate.denominator = 100; + } + t = frame_to_time(time_to_frame_with_rate(f.length, rate), rate); + } else + t.get_from_length(f.length); + + return t; + } + + public void go_previous_frame() { + VideoTrack? video_track = find_video_track(); + if (video_track != null) { + media_engine.go(video_track.previous_frame(transport_get_position())); + } + } + + public void go_next_frame() { + VideoTrack? video_track = find_video_track(); + if (video_track != null) { + media_engine.go(video_track.next_frame(transport_get_position())); + } + } + + public bool get_framerate_fraction(out Fraction rate) { + foreach (Track track in tracks) { + VideoTrack video_track = track as VideoTrack; + if (video_track != null && video_track.get_framerate(out rate)) + return true; + } + return false; + } +} +} diff --git a/src/marina/AppDirs.vala b/src/marina/AppDirs.vala new file mode 100644 index 0000000..04d2248 --- /dev/null +++ b/src/marina/AppDirs.vala @@ -0,0 +1,44 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU LGPL (version 2.1 or later). + * See the COPYING file in this distribution. + */ + +extern const string _PREFIX; + + +public class AppDirs { + static File exec_dir; + static string program_name; + + public static void init(string arg0, string program_name) { + File exec_file = File.new_for_path(Environment.find_program_in_path(arg0)); + exec_dir = exec_file.get_parent(); + AppDirs.program_name = program_name; + } + + public static void terminate() { + } + + public static File get_exec_dir() { + return exec_dir; + } + + public static File get_resources_dir() { + File exec_dir = get_exec_dir(); + File install_dir = get_install_dir(); + File return_value; + if (install_dir != null) { + return_value = install_dir.get_child("share").get_child(program_name); + } else { // running locally + return_value = exec_dir; + } + return return_value.get_child("resources"); + } + + static File? get_install_dir() { + File prefix_dir = File.new_for_path(_PREFIX); + return exec_dir.has_prefix(prefix_dir) ? prefix_dir : null; + } +} + diff --git a/src/marina/AudioMeter.vala b/src/marina/AudioMeter.vala new file mode 100644 index 0000000..196291b --- /dev/null +++ b/src/marina/AudioMeter.vala @@ -0,0 +1,116 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +namespace View { +public class AudioMeter : Gtk.DrawingArea { + Cairo.ImageSurface meter = null; + Cairo.ImageSurface silkscreen; + + bool stereo = false; + double current_level_left = -100; + double current_level_right = -100; + const double minDB = -70; + + public AudioMeter(Model.AudioTrack track) { + int number_of_channels; + if (track.get_num_channels(out number_of_channels)) { + stereo = number_of_channels < 1; + } + + this.requisition.height = 10; + expose_event.connect(on_expose_event); + track.level_changed.connect(on_level_changed); + track.channel_count_changed.connect(on_channel_count_changed); + } + + void initialize_meter() { + meter = new Cairo.ImageSurface(Cairo.Format.ARGB32, + allocation.width, allocation.height); + Cairo.Context context2 = new Cairo.Context(meter); + Cairo.Pattern pat = new Cairo.Pattern.linear(0, 0, allocation.width, 0); + pat.add_color_stop_rgb(0, 0.1, 1, 0.4); + pat.add_color_stop_rgb(0.8, 1, 1, 0); + pat.add_color_stop_rgb(1, 1, 0, 0); + context2.set_source(pat); + context2.rectangle(0, 0, allocation.width, allocation.height); + context2.fill(); + + silkscreen = new Cairo.ImageSurface(Cairo.Format.ARGB32, + allocation.width, allocation.height); + context2 = new Cairo.Context(silkscreen); + context2.set_source_rgba(0, 0, 0, 0); + context2.rectangle(0, 0, allocation.width, allocation.height); + context2.fill(); + + // draw the segment edges + for (int i=0;i<20;++i) { + context2.set_source_rgba(0, 0, 0, 1); + context2.rectangle(i * allocation.width / 20, 0, 3, allocation.height); + context2.fill(); + } + + // draw a bevel around the edge + context2.set_line_width(1.1); + context2.set_source_rgba(0.9, 0.9, 0.9, 0.5); + context2.rectangle(0, 0, allocation.width, allocation.height); + context2.stroke(); + } + + public bool on_expose_event(Gdk.EventExpose event) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_expose_event"); + Gdk.Window window = get_window(); + Cairo.Context context = Gdk.cairo_create(window); + if (meter == null) { + initialize_meter(); + } + + context.set_source_rgb(0, 0, 0); + context.rectangle(0, 0, allocation.width, allocation.height); + context.fill(); + + int bar_height = stereo ? (allocation.height / 2) - 1 : allocation.height - 2; + + if (stereo) { + context.set_source_rgb(1, 1, 1); + context.rectangle(0, bar_height + 1, allocation.width, 0.3); + context.fill(); + } + + context.set_source_surface(meter, 0, 0); + int width = (int) (Math.pow10(current_level_left / 40) * allocation.width); + context.rectangle(0, 1, width, bar_height); + + if (stereo) { + width = (int) (Math.pow10(current_level_right / 40) * allocation.width); + context.rectangle(0, bar_height + 2, width, bar_height); + } + + context.clip(); + context.paint_with_alpha(1); + + context.set_source_surface(silkscreen, 0, 0); + context.paint_with_alpha(1); + + return true; + } + + public void on_level_changed(double level_left, double level_right) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_level_changed"); + current_level_left = level_left < minDB ? minDB : level_left; + current_level_right = level_right < minDB ? minDB : level_right; + Gdk.Window window = get_window(); + window.invalidate_rect(null, false); + } + + public void on_channel_count_changed(int number_of_channels) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_channel_count_changed"); + stereo = number_of_channels > 1; + window.invalidate_rect(null, false); + } +} +} diff --git a/src/marina/ClassFactory.vala b/src/marina/ClassFactory.vala new file mode 100644 index 0000000..53ccfbb --- /dev/null +++ b/src/marina/ClassFactory.vala @@ -0,0 +1,37 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +public interface TrackView : Gtk.Widget { + public signal void clip_view_added(ClipView clip_view); + public abstract void move_to_top(ClipView clip_view); + public abstract void resize(); + public abstract Model.Track get_track(); + public abstract int get_track_height(); + public abstract Gtk.Widget? find_child(double x, double y); + public abstract void select_all(); +} + +public class ClassFactory { + static ClassFactory class_factory = null; + static TransportDelegate transport_delegate = null; + + public static ClassFactory get_class_factory() { + return class_factory; + } + + public virtual TrackView get_track_view(Model.Track track, TimeLine timeline) { + assert(transport_delegate != null); + return new TrackViewConcrete(transport_delegate, track, timeline); + } + + public static void set_class_factory(ClassFactory class_factory) { + ClassFactory.class_factory = class_factory; + } + + public static void set_transport_delegate(TransportDelegate transport_delegate) { + ClassFactory.transport_delegate = transport_delegate; + } +} diff --git a/src/marina/ClipLibraryView.vala b/src/marina/ClipLibraryView.vala new file mode 100644 index 0000000..c405add --- /dev/null +++ b/src/marina/ClipLibraryView.vala @@ -0,0 +1,487 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +public class ClipLibraryView : Gtk.EventBox { + public static Gtk.Menu context_menu; + Model.Project project; + Gtk.TreeView tree_view; + Gtk.TreeSelection selection; + Gtk.Label label = null; + Gtk.ListStore list_store; + int num_clipfiles; + Gee.ArrayList files_dragging = new Gee.ArrayList(); + + Gtk.IconTheme icon_theme; + + Gdk.Pixbuf default_audio_icon; + Gdk.Pixbuf default_video_icon; + Gdk.Pixbuf default_error_icon; + + enum SortMode { + NONE, + ABC + } + + enum ColumnType { + THUMBNAIL, + NAME, + DURATION, + FILENAME + } + + public signal void selection_changed(bool selected); + + SortMode sort_mode; + Model.TimeSystem time_provider; + + public ClipLibraryView(Model.Project p, Model.TimeSystem time_provider, string? drag_message, + Gdk.DragAction actions) { + Gtk.drag_dest_set(this, Gtk.DestDefaults.ALL, drag_target_entries, Gdk.DragAction.COPY); + project = p; + this.time_provider = time_provider; + + icon_theme = Gtk.IconTheme.get_default(); + + list_store = new Gtk.ListStore(4, typeof (Gdk.Pixbuf), typeof (string), + typeof (string), typeof (string), -1); + + tree_view = new Gtk.TreeView.with_model(list_store); + + add_column(ColumnType.THUMBNAIL); + Gtk.TreeViewColumn name_column = add_column(ColumnType.NAME); + add_column(ColumnType.DURATION); + list_store.set_default_sort_func(name_sort); + list_store.set_sort_column_id(name_column.get_sort_column_id(), Gtk.SortType.ASCENDING); + + num_clipfiles = 0; + if (drag_message != null) { + label = new Gtk.Label(drag_message); + label.modify_fg(Gtk.StateType.NORMAL, parse_color("#fff")); + } + + modify_bg(Gtk.StateType.NORMAL, parse_color("#444")); + tree_view.modify_base(Gtk.StateType.NORMAL, parse_color("#444")); + + tree_view.set_headers_visible(false); + project.clipfile_added.connect(on_clipfile_added); + project.clipfile_removed.connect(on_clipfile_removed); + project.cleared.connect(on_remove_all_rows); + project.time_signature_changed.connect(on_time_signature_changed); + + Gtk.drag_source_set(tree_view, Gdk.ModifierType.BUTTON1_MASK, drag_target_entries, actions); + tree_view.drag_begin.connect(on_drag_begin); + tree_view.drag_data_get.connect(on_drag_data_get); + tree_view.cursor_changed.connect(on_cursor_changed); + + selection = tree_view.get_selection(); + selection.set_mode(Gtk.SelectionMode.MULTIPLE); + if (label != null) { + add(label); + } + + // We have to have our own button press and release handlers + // since the normal drag-selection handling does not allow you + // to click outside any cell in the library to clear your selection, + // and also does not allow dragging multiple clips from the library + // to the timeline + tree_view.button_press_event.connect(on_button_pressed); + tree_view.button_release_event.connect(on_button_released); + + try { + default_audio_icon = + icon_theme.load_icon("audio-x-generic", 32, (Gtk.IconLookupFlags) 0); + default_video_icon = + icon_theme.load_icon("video-x-generic", 32, (Gtk.IconLookupFlags) 0); + default_error_icon = + icon_theme.load_icon("error", 32, (Gtk.IconLookupFlags) 0); + } catch (GLib.Error e) { + // TODO: what shall we do if these icons are not available? + } + + sort_mode = SortMode.ABC; + } + + Gtk.TreePath? find_first_selected() { + Gtk.TreeIter it; + Gtk.TreeModel model = tree_view.get_model(); + + bool b = model.get_iter_first(out it); + while (b) { + Gtk.TreePath path = model.get_path(it); + if (selection.path_is_selected(path)) + return path; + + b = model.iter_next(ref it); + } + return null; + } + + bool on_button_pressed(Gdk.EventButton b) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_button_pressed"); + + Gtk.TreePath path; + int cell_x; + int cell_y; + + tree_view.get_path_at_pos((int) b.x, (int) b.y, out path, null, out cell_x, out cell_y); + + if (path == null) { + selection.unselect_all(); + return true; + } + + bool shift_pressed = (b.state & Gdk.ModifierType.SHIFT_MASK) != 0; + bool control_pressed = (b.state & Gdk.ModifierType.CONTROL_MASK) != 0; + + if (!control_pressed && + !shift_pressed) { + if (!selection.path_is_selected(path)) + selection.unselect_all(); + } else { + if (shift_pressed) { + Gtk.TreePath first = find_first_selected(); + + if (first != null) + selection.select_range(first, path); + } + } + selection.select_path(path); + + if (b.button == 3) { + selection_changed(true); + context_menu.select_first(true); + context_menu.popup(null, null, null, 0, b.time); + } else { + context_menu.popdown(); + } + + return true; + } + + bool on_button_released(Gdk.EventButton b) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_button_released"); + Gtk.TreePath path; + Gtk.TreeViewColumn column; + + int cell_x; + int cell_y; + + tree_view.get_path_at_pos((int) b.x, (int) b.y, out path, + out column, out cell_x, out cell_y); + + // The check for cell_x == 0 and cell_y == 0 is here since for whatever reason, this + // function is called when we drop some clips onto the timeline. We only need to mess with + // the selection if we've actually clicked in the tree view, but I cannot find a way to + // guarantee this, since the coordinates that the Gdk.EventButton structure and the + // (cell_x, cell_y) pair give are always 0, 0 when this happens. + // I can assume that clicking on 0, 0 exactly is next to impossible, so I feel this + // strange check is okay. + + if (path == null || + (cell_x == 0 && cell_y == 0)) { + selection_changed(false); + return true; + } + + bool shift_pressed = (b.state & Gdk.ModifierType.SHIFT_MASK) != 0; + bool control_pressed = (b.state & Gdk.ModifierType.CONTROL_MASK) != 0; + + if (!control_pressed && + !shift_pressed) { + if (selection.path_is_selected(path)) + selection.unselect_all(); + } + selection.select_path(path); + selection_changed(true); + + return true; + } + + void on_cursor_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_cursor_changed"); + selection_changed(has_selection()); + } + + public void unselect_all() { + selection.unselect_all(); + selection_changed(false); + } + + public override void drag_data_received(Gdk.DragContext context, int x, int y, + Gtk.SelectionData selection_data, uint drag_info, + uint time) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_drag_data_received"); + string[] a = selection_data.get_uris(); + Gtk.drag_finish(context, true, false, time); + + project.create_clip_importer(null, false, 0, false, (Gtk.Window) get_toplevel(), a.length); + + try { + foreach (string s in a) { + string filename; + try { + filename = GLib.Filename.from_uri(s); + } catch (GLib.ConvertError e) { continue; } + project.importer.add_file(filename); + } + project.importer.start(); + } catch (Error e) { + project.error_occurred("Error importing", e.message); + } + } + + + void on_drag_data_get(Gdk.DragContext context, Gtk.SelectionData data, + uint info, uint time) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_drag_data_get"); + string uri; + string[] uri_array = new string[0]; + + foreach (string s in files_dragging) { + try { + uri = GLib.Filename.to_uri(s); + } catch (GLib.ConvertError e) { + uri = s; + warning("Cannot get URI for %s! (%s)\n", s, e.message); + } + uri_array += uri; + } + data.set_uris(uri_array); + + Gtk.drag_set_icon_default(context); + } + + int get_selected_rows(out GLib.List paths) { + paths = selection.get_selected_rows(null); + return (int) paths.length(); + } + + void on_drag_begin(Gdk.DragContext c) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_drag_begin"); + GLib.List paths; + if (get_selected_rows(out paths) > 0) { + bool set_pixbuf = false; + files_dragging.clear(); + foreach (Gtk.TreePath t in paths) { + Gtk.TreeIter iter; + list_store.get_iter(out iter, t); + + string filename; + list_store.get(iter, ColumnType.FILENAME, out filename, -1); + files_dragging.add(filename); + + if (!set_pixbuf) { + Gdk.Pixbuf pixbuf; + list_store.get(iter, ColumnType.THUMBNAIL, out pixbuf, -1); + + Gtk.drag_set_icon_pixbuf(c, pixbuf, 0, 0); + set_pixbuf = true; + } + } + } + } + + Gtk.TreeViewColumn add_column(ColumnType c) { + Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(); + Gtk.CellRenderer renderer; + + if (c == ColumnType.THUMBNAIL) { + renderer = new Gtk.CellRendererPixbuf(); + } else { + renderer = new Gtk.CellRendererText(); + Gdk.Color color = parse_color("#FFF"); + renderer.set("foreground-gdk", &color); + } + + column.pack_start(renderer, true); + column.set_resizable(true); + + if (c == ColumnType.THUMBNAIL) { + column.add_attribute(renderer, "pixbuf", tree_view.append_column(column) - 1); + } else { + column.add_attribute(renderer, "text", tree_view.append_column(column) - 1); + } + return column; + } + + void update_iter(Gtk.TreeIter it, Model.ClipFile clip_file) { + Gdk.Pixbuf icon; + + if (clip_file.is_online()) { + if (clip_file.thumbnail == null) + icon = (clip_file.is_of_type(Model.MediaType.VIDEO) ? + default_video_icon : default_audio_icon); + else { + icon = clip_file.thumbnail; + } + } else { + icon = default_error_icon; + } + + list_store.set(it, ColumnType.THUMBNAIL, icon, + ColumnType.NAME, isolate_filename(clip_file.filename), + ColumnType.DURATION, time_provider.get_time_duration(clip_file.length), + ColumnType.FILENAME, clip_file.filename, -1); + } + + void on_clipfile_added(Model.ClipFile f) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_file_added"); + Gtk.TreeIter it; + + if (find_clipfile(f, out it) >= 0) { + list_store.remove(it); + } else { + if (num_clipfiles == 0) { + if (label != null) { + remove(label); + } + add(tree_view); + tree_view.show(); + } + num_clipfiles++; + } + + list_store.append(out it); + update_iter(it, f); + } + + int find_clipfile(Model.ClipFile f, out Gtk.TreeIter iter) { + Gtk.TreeModel model = tree_view.get_model(); + + bool b = model.get_iter_first(out iter); + + int i = 0; + while (b) { + string filename; + model.get(iter, ColumnType.FILENAME, out filename); + + if (filename == f.filename) + return i; + + i++; + b = model.iter_next(ref iter); + } + return -1; + } + + public void on_clipfile_removed(Model.ClipFile f) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_file_removed"); + Gtk.TreeIter it; + + if (find_clipfile(f, out it) >= 0) { + remove_row(ref it); + } + } + + bool remove_row(ref Gtk.TreeIter it) { + bool b = list_store.remove(it); + num_clipfiles--; + if (num_clipfiles == 0) { + remove(tree_view); + if (label != null) { + add(label); + label.show(); + } + } + return b; + } + + void on_remove_all_rows() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_remove_all_rows"); + Gtk.TreeModel model = tree_view.get_model(); + Gtk.TreeIter iter; + + bool b = model.get_iter_first(out iter); + + while (b) { + b = remove_row(ref iter); + } + } + + void on_time_signature_changed(Fraction time_signature) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_time_signature_changed"); + Gtk.TreeIter iter; + bool more_items = list_store.get_iter_first(out iter); + while (more_items) { + string filename; + list_store.get(iter, ColumnType.FILENAME, out filename, -1); + Model.ClipFile clip_file = project.find_clipfile(filename); + list_store.set(iter, ColumnType.DURATION, + time_provider.get_time_duration(clip_file.length), -1); + more_items = list_store.iter_next(ref iter); + } + } + + void delete_row(Gtk.TreeModel model, Gtk.TreePath path) { + Gtk.TreeIter it; + if (list_store.get_iter(out it, path)) { + string filename; + model.get(it, ColumnType.FILENAME, out filename, -1); + if (project.clipfile_on_track(filename)) { + if (DialogUtils.delete_cancel("Clip is in use. Delete anyway?") != + Gtk.ResponseType.YES) + return; + } + + project.remove_clipfile(filename); + + if (Path.get_dirname(filename) == project.get_audio_path()) { + if (DialogUtils.delete_keep("Delete clip from disk? This action is not undoable.") + == Gtk.ResponseType.YES) { + if (FileUtils.unlink(filename) != 0) { + project.error_occurred("Could not delete %s", filename); + } + project.undo_manager.reset(); + } + } + } + } + + public bool has_selection() { + GLib.List paths; + return get_selected_rows(out paths) != 0; + } + + public Gee.ArrayList get_selected_files() { + GLib.List paths; + Gee.ArrayList return_value = new Gee.ArrayList(); + if (get_selected_rows(out paths) != 0) { + foreach (Gtk.TreePath path in paths) { + Gtk.TreeIter iter; + if (list_store.get_iter(out iter, path)) { + string name; + list_store.get(iter, ColumnType.FILENAME, out name, -1); + return_value.add(name); + } + } + } + return return_value; + } + + public void delete_selection() { + GLib.List paths; + project.undo_manager.start_transaction("Delete Clips From Library"); + if (get_selected_rows(out paths) > 0) { + for (int i = (int) paths.length() - 1; i >= 0; i--) + delete_row(list_store, paths.nth_data(i)); + } + project.undo_manager.end_transaction("Delete Clips From Library"); + } + + public void select_all() { + selection.select_all(); + } + + int name_sort(Gtk.TreeModel model, Gtk.TreeIter a, Gtk.TreeIter b) { + string left; + string right; + model.get(a, ColumnType.NAME, out left); + model.get(b, ColumnType.NAME, out right); + return stricmp(left, right); + } +} diff --git a/src/marina/DialogUtils.vala b/src/marina/DialogUtils.vala new file mode 100644 index 0000000..a391f02 --- /dev/null +++ b/src/marina/DialogUtils.vala @@ -0,0 +1,350 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +namespace DialogUtils { + public struct filter_description_struct { + public string name; + public string extension; + } + + Gtk.FileFilter add_filter(Gtk.FileChooserDialog d, string name, string? extension) { + Gtk.FileFilter filter = new Gtk.FileFilter(); + filter.set_name(name); + if (extension != null) { + filter.add_pattern("*." + extension); + } else { + filter.add_pattern("*"); + } + d.add_filter(filter); + return filter; + } + + void add_filters(filter_description_struct[] filter_descriptions, Gtk.FileChooserDialog d, + Gee.ArrayList filters, bool allow_all) { + + int length = filter_descriptions.length; + for (int i=0;i filenames) { + bool return_value = false; + Hildon.FileChooserDialog file_chooser = new Hildon.FileChooserDialog(parent, Gtk.FileChooserAction.OPEN); + file_chooser.set_title("Open Files"); + //file_chooser.set_parent(parent); + //file_chooser.set_current_folder(GLib.Environment.get_home_dir()); + //file_chooser.set_safe_folder(GLib.Environment.get_home_dir()); + file_chooser.set_show_upnp(true); + Gee.ArrayList filters = new Gee.ArrayList(); + add_filters(filter_descriptions, (Gtk.FileChooserDialog)file_chooser, filters, allow_all); + file_chooser.set_select_multiple(allow_multiple); + if (file_chooser.run() == Gtk.ResponseType.OK) { + return_value = true; + filenames = file_chooser.get_filenames(); + } + file_chooser.destroy(); + return return_value; + } + + public bool save(Gtk.Window parent, string title, bool create_directory, + filter_description_struct[] filter_descriptions, ref string filename) { + bool return_value = false; + + + Hildon.FileChooserDialog file_chooser = new Hildon.FileChooserDialog(parent, Gtk.FileChooserAction.SAVE); + file_chooser.set_title(title); + file_chooser.set_show_upnp(false); + if (filename != null) { + file_chooser.set_current_folder(Path.get_dirname(filename)); + } else { + //file_chooser.set_current_folder(GLib.Environment.get_home_dir()); + } + int length = filter_descriptions.length; + Gee.ArrayList filters = new Gee.ArrayList(); + + // add_filters(filter_descriptions, (Gtk.FileChooserDialog)file_chooser, filters, false); + + //all this extra code is because the dialog doesn't append the extension for us + //in the filename, so we can't use d.set_do_overwrite_confirmation + + while (file_chooser.run() == Gtk.ResponseType.OK) { + string local_filename = file_chooser.get_filename(); + if (create_directory) { + if (GLib.DirUtils.create(local_filename, 0777) != 0) { + error("Could not create directory", GLib.strerror(GLib.errno));; + file_chooser.present(); + continue; + } + local_filename = Path.build_filename(local_filename, + Path.get_basename(local_filename)); + } + + unowned Gtk.FileFilter selected_filter = file_chooser.get_filter(); + + int i = 0; + foreach (Gtk.FileFilter file_filter in filters) { + if (file_filter == selected_filter) { + break; + } + ++i; + } + + assert(i < length); + + local_filename = append_extension(local_filename, filter_descriptions[i].extension); + if (!FileUtils.test(local_filename, FileTest.EXISTS) || + confirm_replace(parent, local_filename)) { + return_value = true; + filename = local_filename; + break; + } + else { + file_chooser.present(); + } + } + file_chooser.destroy(); + return return_value; + } + + string bold_message(string message) { + return message; //"" + message + ""; + } + + public void warning(string major_message, string? minor_message) { + string message = bold_message(major_message); + if (minor_message != null) { + message = message + "\n\n" + minor_message; + } + Gtk.Widget banner = Hildon.Banner.show_information_with_markup(null, null, message); + ((Hildon.Banner)banner).set_timeout(1000 * 2); + } + + public void error(string major_message, string? minor_message) { + string message = bold_message(major_message); + if (minor_message != null) { + message = message + "\n\n" + minor_message; + } + Gtk.Widget banner = Hildon.Banner.show_information_with_markup(null, null, message); + ((Hildon.Banner)banner).set_timeout(1000 * 2); + } + + Gtk.ResponseType run_dialog(Gtk.Window? parent, Gtk.MessageType type, + string? title, string message, ButtonStruct[] buttons) { + //string the_message = bold_message(message); + if (null == title) title = "Message"; + Hildon.Dialog dialog = new Hildon.Dialog(); + dialog.set_parent(parent); + dialog.set_title(title); + Gtk.VBox content = (Gtk.VBox)dialog.get_content_area(); + Gtk.Label label = new Gtk.Label(message); + //label.use_markup = true; + label.single_line_mode = false; + label.set_line_wrap(true); + + content.add(label); + + int length = buttons.length; + for (int i = 0; i < length; ++i) { + dialog.add_button(buttons[i].title, buttons[i].type); + } + + dialog.show_all(); + Gtk.ResponseType response = (Gtk.ResponseType) dialog.run(); + dialog.destroy(); + + return response; + } + + Gtk.ResponseType two_button_dialog(string message, string first_button, string second_button) { + Hildon.Dialog d = new Hildon.Dialog(); + + Gtk.VBox contents = (Gtk.VBox)d.get_content_area(); + Gtk.VBox vbox = new Gtk.VBox(true, 4); + Gtk.Label label = new Gtk.Label(message); + label.use_markup = true; + label.single_line_mode = false; + label.set_line_wrap(true); + vbox.pack_start(label); + contents.add(vbox); + d.add_buttons(first_button, Gtk.ResponseType.NO, + second_button, Gtk.ResponseType.YES); + + d.show_all(); + Gtk.ResponseType r = (Gtk.ResponseType) d.run(); + d.destroy(); + + return r; + } + + public Gtk.ResponseType delete_keep(string message) { + return two_button_dialog(message, "Keep", Gtk.STOCK_DELETE); + } + + public Gtk.ResponseType add_cancel(string message) { + return two_button_dialog(message, Gtk.STOCK_CANCEL, Gtk.STOCK_ADD); + } + + public Gtk.ResponseType delete_cancel(string message) { + return two_button_dialog(message, Gtk.STOCK_CANCEL, Gtk.STOCK_DELETE); + } + + public bool confirm_replace(Gtk.Window? parent, string filename) { + return Gtk.ResponseType.YES == two_button_dialog("A file named \"%s\" already exists. Do you want to replace it?", "Cancel", "Replace"); + } + + struct ButtonStruct { + public ButtonStruct(string title, Gtk.ResponseType type) { + this.title = title; + this.type = type; + } + + public string title; + public Gtk.ResponseType type; + } + + public Gtk.ResponseType save_close_cancel(Gtk.Window? parent, string? title, string message) { + ButtonStruct[] buttons = { + ButtonStruct(Gtk.STOCK_CLOSE, Gtk.ResponseType.NO), + ButtonStruct(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL), + ButtonStruct(Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT) + }; + + return run_dialog(parent, Gtk.MessageType.WARNING, title, message, buttons); + } + + Gtk.Alignment get_aligned_label(float x, float y, float exp_x, float exp_y, string text, + bool selectable) { + Gtk.Label l = new Gtk.Label(text); + l.set_line_wrap(true); + l.use_markup = true; + l.selectable = selectable; + + Gtk.Alignment a = new Gtk.Alignment(x, y, exp_x, exp_y); + a.add(l); + + return a; + } + + void add_label_to_table(Gtk.Table t, string str, int x, int y, int xpad, int ypad, + bool selectable) { + Gtk.Alignment a = get_aligned_label(0.0f, 0.0f, 0.0f, 0.0f, str, selectable); + t.attach(a, x, x + 1, y, y + 1, Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL, xpad, ypad); + } + + public void show_clip_properties(Gtk.Window parent, ClipView? selected_clip, + Model.ClipFile ? clip_file, Fraction? frames_per_second) { + Hildon.Dialog d = new Hildon.Dialog.with_buttons("Clip Properties", parent, + Gtk.DialogFlags.MODAL, Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT); + if (selected_clip != null) { + clip_file = selected_clip.clip.clipfile; + } + + d.set("has-separator", false); + + Gtk.Table t = new Gtk.Table(10, 2, false); + int row = 0; + int tab_padding = 25; + + for (int i = 0; i < 10; i++) + t.set_row_spacing(i, 10); + + row = 1; + add_label_to_table(t, "Clip", 0, row++, 5, 0, false); + + if (selected_clip != null) { + add_label_to_table(t, "Name:", 0, row, tab_padding, 0, false); + add_label_to_table(t, "%s".printf(selected_clip.clip.name), 1, row++, 5, 0, true); + } + + add_label_to_table(t, "Location:", 0, row, tab_padding, 0, false); + add_label_to_table(t, "%s".printf(clip_file.filename), 1, row++, 5, 0, true); + + if (selected_clip != null) { + add_label_to_table(t, "Timeline length:", 0, row, tab_padding, 0, false); + + string length_string = ""; + string actual_length = ""; + + if (frames_per_second != null && frames_per_second.numerator > 0) { + TimeCode time = frame_to_time (time_to_frame_with_rate(selected_clip.clip.duration, + frames_per_second), frames_per_second); + length_string = time.to_string(); + time = frame_to_time(time_to_frame_with_rate( + selected_clip.clip.clipfile.length, frames_per_second), frames_per_second); + actual_length = time.to_string(); + } else { + length_string = time_to_string(selected_clip.clip.duration); + actual_length = time_to_string(selected_clip.clip.clipfile.length); + } + + add_label_to_table(t, "%s".printf(length_string), 1, row++, 5, 0, true); + + if (selected_clip.clip.is_trimmed()) { + add_label_to_table(t, "Actual length:", 0, row, tab_padding, 0, false); + add_label_to_table(t, "%s".printf(actual_length), 1, row++, 5, 0, true); + } + } + + if (clip_file.has_caps_structure(Model.MediaType.VIDEO)) { + add_label_to_table(t, "Video", 0, row++, 5, 0, false); + + int w, h; + if (clip_file.get_dimensions(out w, out h)) { + add_label_to_table(t, "Dimensions:", 0, row, tab_padding, 0, false); + add_label_to_table(t, "%d x %d".printf(w, h), 1, row++, 5, 0, true); + } + + Fraction r; + if (clip_file.get_frame_rate(out r)) { + add_label_to_table(t, "Frame rate:", 0, row, tab_padding, 0, false); + + if (r.numerator % r.denominator != 0) + add_label_to_table(t, + "%.2f frames per second".printf(r.numerator / (float)r.denominator), + 1, row++, 5, 0, true); + else + add_label_to_table(t, + "%d frames per second".printf(r.numerator / r.denominator), + 1, row++, 5, 0, true); + } + } + + if (clip_file.has_caps_structure(Model.MediaType.AUDIO)) { + add_label_to_table(t, "Audio", 0, row++, 5, 0, false); + + int rate; + if (clip_file.get_sample_rate(out rate)) { + add_label_to_table(t, "Sample rate:", 0, row, tab_padding, 0, false); + add_label_to_table(t, "%d Hz".printf(rate), 1, row++, 5, 0, true); + } + + string s; + if (clip_file.get_num_channels_string(out s)) { + add_label_to_table(t, "Number of channels:", 0, row, tab_padding, 0, false); + add_label_to_table(t, "%s".printf(s), 1, row++, 5, 0, true); + } + } + + d.vbox.pack_start(t, false, false, 0); + + d.show_all(); + d.run(); + d.destroy(); + } +} diff --git a/src/marina/Logging.vala b/src/marina/Logging.vala new file mode 100644 index 0000000..da79dad --- /dev/null +++ b/src/marina/Logging.vala @@ -0,0 +1,57 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ +namespace Logging { + +public enum Facility { + SIGNAL_HANDLERS, + DEVELOPER_WARNINGS, + GRAPH, + LOADING, + IMPORT, + SINGLEDECODEBIN +} + +public enum Level { + CRITICAL, + HIGH, + MEDIUM, + LOW, + INFO, + VERBOSE +} + +const Level active_facility[] = { + Level.CRITICAL, // SIGNAL_HANDLERS + Level.CRITICAL, // DEVELOPER_WARNINGS + Level.CRITICAL, // GRAPH + Level.CRITICAL, //LOADING + Level.CRITICAL, //IMPORT + Level.CRITICAL //SINGLEDECODEBIN +}; + +const string facility_names[] = { + "SIGNAL_HANDLERS", + "DEVELOPER_WARNINGS", + "GRAPH", + "LOADING", + "IMPORT", + "SINGLEDECODEBIN" +}; + +Level current_level = Level.HIGH; + +public void set_logging_level(Level new_level) { + if (new_level <= Level.VERBOSE && new_level >= Level.CRITICAL) { + current_level = new_level; + } +} + +public void emit(Object object, Facility facility, Level level, string message) { + if (level <= current_level || level <= active_facility[facility]) { + stderr.printf("%s(%s): %s\n", object.get_type().name(), facility_names[facility], message); + } +} +} diff --git a/src/marina/Makefile b/src/marina/Makefile new file mode 100644 index 0000000..fa5345b --- /dev/null +++ b/src/marina/Makefile @@ -0,0 +1,29 @@ +LIBRARY = libmarina.a +all: $(LIBRARY) + +# defaults that may be overridden by configure.mk +BUILD_RELEASE=1 + +-include ../../configure.mk + +-include sources.mk + +HEADER_FILES = marina.h +LIBRARY_NAME = --library marina + +ifndef BUILD_DIR +BUILD_DIR=marina +endif + +-include ../../marina.mk + +clean: + rm -f $(EXPANDED_C_FILES) + rm -f $(EXPANDED_SAVE_TEMPS_FILES) + rm -f $(EXPANDED_OBJ_FILES) + rm -f $(VALA_STAMP) + rm -rf $(LIBRARY)-$(VERSION) + rm -f $(LIBRARY) + rm -f $(BUILD_DIR)/marina.vapi + rm -f marina.h + diff --git a/src/marina/MediaEngine.vala b/src/marina/MediaEngine.vala new file mode 100644 index 0000000..1bc90f8 --- /dev/null +++ b/src/marina/MediaEngine.vala @@ -0,0 +1,1190 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +public enum PlayState { + STOPPED, + PRE_PLAY, PLAYING, + PRE_RECORD_NULL, PRE_RECORD, RECORDING, POST_RECORD, + PRE_EXPORT, EXPORTING, CANCEL_EXPORT, + LOADING, + CLOSING, CLOSED +} + +public const int CHANNELS_PER_TRACK_PLAYBACK = 2; +public const int CHANNELS_PER_TRACK_RECORD = 1; + +namespace View { + +class MediaClip : Object { + public Gst.Element file_source; + weak Model.Clip clip; + Gst.Bin composition; + + public signal void clip_removed(MediaClip clip); + + public MediaClip(Gst.Bin composition, Model.Clip clip) throws Error { + this.clip = clip; + this.composition = composition; + file_source = make_element("gnlsource"); + if (!clip.is_recording) { + clip.duration_changed.connect(on_duration_changed); + clip.media_start_changed.connect(on_media_start_changed); + clip.start_changed.connect(on_start_changed); + + composition.add(file_source); + + on_start_changed(clip.start); + on_media_start_changed(clip.media_start); + on_duration_changed(clip.duration); + } + clip.removed.connect(on_clip_removed); + } + + ~MediaClip() { + clip.removed.disconnect(on_clip_removed); + if (!clip.is_recording) { + clip.duration_changed.disconnect(on_duration_changed); + clip.media_start_changed.disconnect(on_media_start_changed); + clip.start_changed.disconnect(on_start_changed); + } + file_source.set_state(Gst.State.NULL); + } + + public void on_clip_removed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_removed"); + composition.remove((Gst.Bin)file_source); + clip_removed(this); + } + + void on_media_start_changed(int64 media_start) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_media_start_changed"); + file_source.set("media-start", media_start); + } + + void on_duration_changed(int64 duration) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_duration_changed"); + file_source.set("duration", duration); + // TODO: is media-duration necessary? + file_source.set("media-duration", duration); + } + + void on_start_changed(int64 start) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_start_changed"); + file_source.set("start", start); + } + + protected void add_single_decode_bin(string filename, string caps) throws Error { + Gst.Element sbin = new SingleDecodeBin(Gst.Caps.from_string(caps), + "singledecoder", filename); + if (((Gst.Bin) file_source).add(sbin)) { + if (!file_source.sync_state_with_parent()) { + clip.clipfile.set_online(false); + } + } + } + + public bool is_equal(Model.Clip clip) { + return clip == this.clip; + } +} + +class MediaAudioClip : MediaClip { + public MediaAudioClip(Gst.Bin composition, Model.Clip clip, string filename) throws Error { + base(composition, clip); + if (!clip.is_recording) { + add_single_decode_bin(filename, "audio/x-raw-float;audio/x-raw-int"); + } + } +} + +class MediaVideoClip : MediaClip { + public MediaVideoClip(Gst.Bin composition, Model.Clip clip, string filename) throws Error { + base(composition, clip); + add_single_decode_bin(filename, "video/x-raw-yuv; video/x-raw-rgb"); + } +} + +public abstract class MediaTrack : Object { + Gee.ArrayList clips; + protected weak MediaEngine media_engine; + protected Gst.Bin composition; + + protected Gst.Element default_source; + protected Gst.Element sink; + + public signal void track_removed(MediaTrack track); + public signal void error_occurred(string major_message, string? minor_message); + + public MediaTrack(MediaEngine media_engine, Model.Track track) throws Error { + clips = new Gee.ArrayList(); + this.media_engine = media_engine; + track.clip_added.connect(on_clip_added); + track.track_removed.connect(on_track_removed); + + media_engine.pre_export.connect(on_pre_export); + media_engine.post_export.connect(on_post_export); + + composition = (Gst.Bin) make_element("gnlcomposition"); + + default_source = make_element_with_name("gnlsource", "track_default_source"); + Gst.Bin default_source_bin = (Gst.Bin) default_source; + if (!default_source_bin.add(empty_element())) + error("can't add empty element"); + + // If we set the priority to 0xffffffff, then Gnonlin will treat this source as + // a default and we won't be able to seek past the end of the last region. + // We want to be able to seek into empty space, so we use a fixed priority instead. + default_source.set("priority", 1); + default_source.set("start", 0 * Gst.SECOND); + default_source.set("duration", 1000000 * Gst.SECOND); + default_source.set("media-start", 0 * Gst.SECOND); + default_source.set("media-duration", 1000000 * Gst.SECOND); + + if (!composition.add(default_source)) { + error("can't add default source"); + } + + media_engine.pipeline.add(composition); + composition.pad_added.connect(on_pad_added); + composition.pad_removed.connect(on_pad_removed); + } + + ~MediaTrack() { + if (composition != null && !media_engine.pipeline.remove(composition)) { + error("couldn't remove composition"); + } + } + + protected abstract Gst.Element empty_element() throws Error; + public abstract Gst.Element? get_element(); + + public abstract void link_new_pad(Gst.Pad pad, Gst.Element track_element); + public abstract void unlink_pad(Gst.Pad pad, Gst.Element track_element); + + void on_clip_added(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_added"); + clip.updated.connect(on_clip_updated); + on_clip_updated(clip); + } + + void on_clip_updated(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_updated"); + if (clip.clipfile.is_online()) { + try { + MediaClip media_clip; + if (clip.type == Model.MediaType.AUDIO) { + media_clip = new MediaAudioClip(composition, clip, clip.clipfile.filename); + } else { + media_clip = new MediaVideoClip(composition, clip, clip.clipfile.filename); + } + media_clip.clip_removed.connect(on_media_clip_removed); + + clips.add(media_clip); + } catch (Error e) { + error_occurred("Could not create clip", e.message); + } + } else { + foreach (MediaClip media_clip in clips) { + if (media_clip.is_equal(clip)) { + media_clip.on_clip_removed(); + } + } + } + } + + void on_media_clip_removed(MediaClip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_media_clip_removed"); + clip.clip_removed.disconnect(on_media_clip_removed); + clips.remove(clip); + } + + void on_pad_added(Gst.Pad pad) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_pad_added"); + link_new_pad(pad, get_element()); + } + + void on_pad_removed(Gst.Pad pad) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_pad_removed"); + unlink_pad(pad, get_element()); + } + + void on_track_removed(Model.Track track) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_removed"); + track_removed(this); + } + + void on_pre_export(int64 length) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_pre_export"); + default_source.set("duration", length); + default_source.set("media-duration", length); + } + + void on_post_export(bool deleted) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_post_export"); + default_source.set("duration", 1000000 * Gst.SECOND); + default_source.set("media-duration", 1000000 * Gst.SECOND); + } +} + +public class MediaVideoTrack : MediaTrack { + weak Gst.Element converter; + + public MediaVideoTrack(MediaEngine media_engine, Model.Track track, + Gst.Element converter) throws Error { + base(media_engine, track); + this.converter = converter; + } + + public override Gst.Element? get_element() { + //converter shouldn't be null. since fillmore is currently not supporting + //video, but this is a shared track, we can't guarantee at compile time that + //convert is valid. This is why we have "Gst.Element?" rather than "Gst.Element" + assert(converter != null); + assert(converter.sync_state_with_parent()); + return converter; + } + + protected override Gst.Element empty_element() throws Error { + Gst.Element blackness = make_element("videotestsrc"); + blackness.set("pattern", 2); // 2 == GST_VIDEO_TEST_SRC_BLACK + return blackness; + } + + public override void link_new_pad(Gst.Pad pad, Gst.Element track_element) { + if (pad.link(track_element.get_static_pad("sink")) != Gst.PadLinkReturn.OK) { + error("couldn't link pad to converter"); + } + } + + public override void unlink_pad(Gst.Pad pad, Gst.Element track_element) { + pad.unlink(track_element.get_static_pad("sink")); + } +} + +public class ClickTrack : Object { + Gst.Controller click_controller; + Gst.Controller volume_controller; + Gst.Element audio_source; + Gst.Element audio_convert; + Gst.Element volume; + weak Model.Project project; + + public ClickTrack(MediaEngine engine, Model.Project project) throws Error { + this.project = project; + audio_source = make_element("audiotestsrc"); + audio_convert = make_element("audioconvert"); + volume = make_element("volume"); + GLib.List list = new GLib.List(); + list.append("freq"); + click_controller = new Gst.Controller.list(audio_source, list); + list.remove_all("freq"); + list.append("mute"); + volume_controller = new Gst.Controller.list(volume, list); + engine.pipeline.add_many(audio_source, volume, audio_convert); + audio_source.set("volume", project.click_volume); + + audio_source.link_many(audio_convert, volume, engine.adder); + engine.playstate_changed.connect(on_playstate_changed); + } + + void clear_controllers() { + volume_controller.unset_all("mute"); + click_controller.unset_all("freq"); + volume.set("mute", true); + volume.set("volume", 0.0); + } + + void on_playstate_changed() { + switch (project.media_engine.get_play_state()) { + case PlayState.PRE_EXPORT: + case PlayState.STOPPED: + clear_controllers(); + break; + case PlayState.PLAYING: { + if (project.click_during_play) { + setup_clicks(project.get_bpm(), project.get_time_signature()); + } else { + clear_controllers(); + } + } + break; + case PlayState.PRE_RECORD: { + if (project.click_during_record) { + setup_clicks(project.get_bpm(), project.get_time_signature()); + } else { + // TODO: Hack for bug #1436 Should be waiting for async message + // instead, spend some extra time allowing the seek to finish + setup_clicks(project.get_bpm(), project.get_time_signature()); + clear_controllers(); + } + } + break; + } + } + + void setup_clicks(int bpm, Fraction time_signature) { + clear_controllers(); + volume.set("volume", project.click_volume / 10); + + Gst.Value double_value = Gst.Value(); + double_value.init(Type.from_name("gdouble")); + Gst.Value bool_value = Gst.Value(); + bool_value.init(Type.from_name("gboolean")); + + Gst.ClockTime time = (Gst.ClockTime)(0); + bool_value.set_boolean(true); + volume_controller.set("volume", time, bool_value); + + int64 conversion = (Gst.SECOND * 60) / bpm; + uint64 current_time = 0; + // TODO: We are playing for a hard-coded amount of time. + for (int i = 0; current_time < Gst.SECOND * 60 * 10; ++i) { + current_time = i * conversion; + if (i > 0) { + time = (Gst.ClockTime)(current_time - Gst.SECOND/10); + bool_value.set_boolean(true); + volume_controller.set("mute", time, bool_value); + } + time = (Gst.ClockTime)(current_time); + if ((i % time_signature.numerator) == 0) { + double_value.set_double(880.0); + } else { + double_value.set_double(440.0); + } + click_controller.set("freq", time, double_value); + bool_value.set_boolean(false); + volume_controller.set("mute", time, bool_value); + + time = (Gst.ClockTime)(current_time + Gst.SECOND/10); + bool_value.set_boolean(true); + volume_controller.set("mute", time, bool_value); + } + } +} + +public class MediaAudioTrack : MediaTrack { + Gst.Element audio_convert; + Gst.Element audio_resample; + Gst.Element level; + Gst.Element pan; + Gst.Element volume; + Gst.Pad adder_pad; + + public MediaAudioTrack(MediaEngine media_engine, Model.AudioTrack track) throws Error { + base(media_engine, track); + track.parameter_changed.connect(on_parameter_changed); + + audio_convert = make_element("audioconvert"); + audio_resample = make_element("audioresample"); + level = make_element("level"); + + pan = make_element("audiopanorama"); + on_parameter_changed(Model.Parameter.PAN, track.get_pan()); + volume = make_element("volume"); + on_parameter_changed(Model.Parameter.VOLUME, track.get_volume()); + + Value the_level = (uint64) (Gst.SECOND / 30); + level.set_property("interval", the_level); + Value true_value = true; + level.set_property("message", true_value); + + if (!media_engine.pipeline.add(audio_convert)) { + error("could not add audio_convert"); + } + + if (!media_engine.pipeline.add(audio_resample)) { + error("could not add audio_resample"); + } + + if (!media_engine.pipeline.add(level)) { + error("could not add level"); + } + + if (!media_engine.pipeline.add(pan)) { + error("could not add pan"); + } + + if (!media_engine.pipeline.add(volume)) { + error("could not add volume"); + } + media_engine.level_changed.connect(on_level_changed); + level_changed.connect(track.on_level_changed); + } + + ~MediaAudioTrack() { + media_engine.level_changed.disconnect(on_level_changed); + media_engine.pipeline.remove_many(audio_convert, audio_resample, pan, volume, level); + } + + public signal void level_changed(double level_left, double level_right); + + void on_parameter_changed(Model.Parameter parameter, double new_value) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_parameter_changed"); + switch (parameter) { + case Model.Parameter.PAN: + pan.set_property("panorama", new_value); + break; + case Model.Parameter.VOLUME: + volume.set_property("volume", new_value); + break; + } + } + + void on_level_changed(Gst.Object source, double level_left, double level_right) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_level_changed"); + if (source == level) { + level_changed(level_left, level_right); + } + } + + protected override Gst.Element empty_element() throws Error { + return media_engine.get_audio_silence(); + } + + override void link_new_pad(Gst.Pad pad, Gst.Element track_element) { + Gst.Bin bin = (Gst.Bin) pad.get_parent_element(); + if (!bin.link_many(audio_convert, audio_resample, level, pan, volume)) { + stderr.printf("could not link_new_pad for audio track"); + } + + Gst.Pad volume_pad = volume.get_pad("src"); + adder_pad = track_element.request_new_pad( + track_element.get_compatible_pad_template(volume_pad.get_pad_template()), null); + + if (volume_pad.link(adder_pad) != Gst.PadLinkReturn.OK) { + error("could not link to adder %s->%s\n", volume.name, track_element.name); + } + } + + public override void unlink_pad(Gst.Pad pad, Gst.Element track_element) { + Gst.Bin bin = (Gst.Bin) pad.get_parent_element(); + bin.unlink_many(audio_convert, audio_resample, level, pan, volume, track_element); + track_element.release_request_pad(adder_pad); + } + + public override Gst.Element? get_element() { + return media_engine.adder; + } +} + +public abstract class MediaConnector : Object { + public enum MediaTypes { Audio = 1, Video = 2 } + MediaTypes media_types; + + // AudioIndex and VideoIndex are the order elements are passed in to connect and disconnect + protected int AudioIndex = 0; + protected int VideoIndex = 1; + + protected MediaConnector(MediaTypes media_types) { + this.media_types = media_types; + } + + protected bool has_audio() { + return (media_types & MediaTypes.Audio) == MediaTypes.Audio; + } + + protected bool has_video() { + return (media_types & MediaTypes.Video) == MediaTypes.Video; + } + + public new abstract void connect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements); + public abstract void do_disconnect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements); +} + +public class VideoOutput : MediaConnector { + Gst.Element sink; + Gtk.Widget output_widget; + + public VideoOutput(Gtk.Widget output_widget) throws Error { + base(MediaTypes.Video); + sink = make_element("xvimagesink"); + sink.set("force-aspect-ratio", true); + this.output_widget = output_widget; + } + + public override void connect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements) { + emit(this, Facility.GRAPH, Level.INFO, "connecting"); + + X.ID xid = Gdk.x11_drawable_get_xid(output_widget.window); + Gst.XOverlay overlay = (Gst.XOverlay) sink; + overlay.set_xwindow_id(xid); + + // Once we've connected our video sink to a widget, it's best to turn off GTK + // double buffering for the widget; otherwise the video image flickers as it's resized. + output_widget.unset_flags(Gtk.WidgetFlags.DOUBLE_BUFFERED); + + if (!pipeline.add(sink)) { + error("could not add sink"); + } + if (!elements[VideoIndex].link(sink)) { + error("can't link converter with video sink!"); + } + } + + public override void do_disconnect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements) { + emit(this, Facility.GRAPH, Level.INFO, "disconnecting"); + elements[VideoIndex].unlink(sink); + pipeline.remove(sink); + } +} + +public class AudioOutput : MediaConnector { + Gst.Element audio_sink; + Gst.Element capsfilter; + + public AudioOutput(Gst.Caps caps) throws Error { + base(MediaTypes.Audio); + audio_sink = make_element("autoaudiosink"); + capsfilter = make_element("capsfilter"); + capsfilter.set("caps", caps); + } + + public override void connect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements) { + pipeline.add_many(capsfilter, audio_sink); + + if (!elements[AudioIndex].link_many(capsfilter, audio_sink)) { + warning("could not link audio_sink"); + } + } + + public override void do_disconnect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements) { + elements[AudioIndex].unlink_many(capsfilter, audio_sink); + pipeline.remove_many(capsfilter, audio_sink); + } +} + +public class OggVorbisExport : MediaConnector { + Gst.Element capsfilter; + Gst.Element export_sink; + Gst.Element mux; + Gst.Element file_sink; + Gst.Element video_export_sink; + + public OggVorbisExport(MediaConnector.MediaTypes media_types, string filename, Gst.Caps caps) + throws Error { + base(media_types); + + file_sink = make_element("filesink"); + file_sink.set("location", filename); + mux = make_element("oggmux"); + + if (has_audio()) { + capsfilter = make_element("capsfilter"); + capsfilter.set("caps", caps); + export_sink = make_element("vorbisenc"); + } + + if (has_video()) { + video_export_sink = make_element("theoraenc"); + } + } + + public string get_filename() { + string filename; + file_sink.get("location", out filename); + return filename; + } + + public override void connect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements) { + pipeline.add_many(mux, file_sink); + mux.link(file_sink); + + if (has_audio()) { + pipeline.add_many(capsfilter, export_sink); + elements[AudioIndex].link_many(capsfilter, export_sink, mux); + } + + if (has_video()) { + pipeline.add(video_export_sink); + + if (!elements[VideoIndex].link(video_export_sink)) { + error("could not link converter to video_export_sink"); + } + + if (!video_export_sink.link(mux)) { + error("could not link video_export with mux"); + } + } + } + + public override void do_disconnect(MediaEngine media_engine, Gst.Pipeline pipeline, + Gst.Element[] elements) { + if (has_audio()) { + elements[AudioIndex].unlink_many(capsfilter, export_sink, mux); + pipeline.remove_many(capsfilter, export_sink); + } + + if (has_video()) { + elements[VideoIndex].unlink_many(video_export_sink, mux); + pipeline.remove(video_export_sink); + } + + mux.unlink(file_sink); + pipeline.remove_many(mux, file_sink); + } +} + +public class MediaEngine : MultiFileProgressInterface, Object { + const string MIN_GNONLIN = "0.10.11"; + const string MIN_GST_PLUGINS_GOOD = "0.10.15"; + const string MIN_GST_PLUGINS_BASE = "0.10.15"; + public Gst.Pipeline pipeline; + public Gst.Bin record_bin; + // Video playback + public Gst.Element converter; + + // Audio playback + public Gst.Element adder; + + protected Gst.State gst_state; + protected PlayState play_state = PlayState.STOPPED; + public int64 position; // current play position in ns + uint callback_id; + public bool playing; + + public Model.AudioTrack record_track; + public Model.Clip record_region; + Gst.Element audio_in; + Gst.Element record_capsfilter; + Gst.Element wav_encoder; + Gst.Element record_sink; + + weak Model.Project project; + + public signal void playstate_changed(); + public signal void position_changed(int64 position); + public signal void pre_export(int64 length); + public signal void post_export(bool canceled); + public signal void callback_pulse(); + public signal void level_changed(Gst.Object source, double level_left, double level_right); + public signal void record_completed(); + public signal void link_for_playback(Gst.Element mux); + public signal void link_for_export(Gst.Element mux); + public signal void prepare_window(); + public signal void error_occurred(string major_message, string? minor_message); + + Gee.ArrayList tracks; + + public MediaEngine(Model.Project project, bool include_video) throws Error { + tracks = new Gee.ArrayList(); + this.project = project; + playstate_changed.connect(project.on_playstate_changed); + pipeline = new Gst.Pipeline("pipeline"); + pipeline.set_auto_flush_bus(false); + + if (include_video) { + converter = make_element("ffmpegcolorspace"); + pipeline.add(converter); + } + + Gst.Element silence = get_audio_silence(); + + adder = make_element("adder"); + + Gst.Element audio_convert = make_element_with_name("audioconvert", "projectconvert"); + pipeline.add_many(silence, audio_convert, adder); + + if (!silence.link_many(audio_convert, adder)) { + error("silence: couldn't link"); + } + + Gst.Bus bus = pipeline.get_bus(); + + bus.add_signal_watch(); + bus.message["error"] += on_error; + bus.message["warning"] += on_warning; + bus.message["eos"] += on_eos; + bus.message["state-changed"] += on_state_change; + bus.message["element"] += on_element; + } + + public static void can_run() throws Error { + Gst.Registry registry = Gst.Registry.get_default(); + check_version(registry, "adder", "gst-plugins-base", MIN_GST_PLUGINS_BASE); + check_version(registry, "level", "gst-plugins-good", MIN_GST_PLUGINS_GOOD); + check_version(registry, "gnonlin", "gnonlin", View.MediaEngine.MIN_GNONLIN); + } + + static void check_version(Gst.Registry registry, string plugin_name, + string package_name, string min_version) throws Error { + Gst.Plugin plugin = registry.find_plugin(plugin_name); + if (plugin == null) { + throw new MediaError.MISSING_PLUGIN( + "You must install %s to use this program".printf(package_name)); + } + + string version = plugin.get_version(); + if (!version_at_least(version, min_version)) { + throw new MediaError.MISSING_PLUGIN( + "You have %s version %s, but this program requires at least version %s".printf( + package_name, version, min_version)); + } + } + + public void connect_output(MediaConnector connector) { + connector.connect(this, pipeline, { adder, converter }); + } + + public void disconnect_output(MediaConnector connector) { + pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, 0); + pipeline.set_state(Gst.State.NULL); + connector.do_disconnect(this, pipeline, {adder, converter}); + } + + public Gst.Element get_audio_silence() throws Error { + Gst.Element silence = make_element("audiotestsrc"); + silence.set("wave", 4); // 4 is silence + Gst.Caps audio_cap = get_project_audio_caps(); + foreach (Gst.Pad pad in silence.pads) { + pad.set_caps(audio_cap); + } + return silence; + } + + public int get_sample_rate() { + return 48000; + } + + public int get_sample_width() { + return 16; + } + + public int get_sample_depth() { + return 16; + } + + public PlayState get_play_state() { + return play_state; + } + + public void set_play_state(PlayState play_state) { + this.play_state = play_state; + } + + protected Gst.Caps build_audio_caps(int num_channels) { + string caps = "audio/x-raw-int,rate=%d,channels=%d,width=%d,depth=%d"; + caps = caps.printf(get_sample_rate(), num_channels, get_sample_width(), get_sample_depth()); + return Gst.Caps.from_string(caps); + } + + public Gst.Caps get_project_audio_caps() { + return build_audio_caps(CHANNELS_PER_TRACK_PLAYBACK); + } + + public Gst.Caps get_project_audio_export_caps() { + return Gst.Caps.from_string( + "audio/x-raw-float,rate=48000,channels=2,width=32"); + } + + void on_warning(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_warning"); + Error error; + string text; + message.parse_warning(out error, out text); + warning("%s", text); + } + + void on_error(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_error"); + Error error; + string text; + message.parse_error(out error, out text); + warning("%s", text); + project.print_graph(pipeline, "bus_error"); + } + + void on_eos(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_eos"); + if (play_state == PlayState.EXPORTING) + pipeline.set_state(Gst.State.NULL); + } + + void on_element(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_element"); + unowned Gst.Structure structure = message.get_structure(); + + if (play_state == PlayState.PLAYING && structure.get_name().to_string() == "level") { + Gst.Value? rms = structure.get_value("rms"); + uint size = rms.list_get_size(); + Gst.Value? temp = rms.list_get_value(0); + double level_left = temp.get_double(); + double level_right = level_left; + + if (size > 1) { + temp = rms.list_get_value(1); + level_right = temp.get_double(); + } + level_changed(message.src, level_left, level_right); + } + } + + void on_state_change(Gst.Bus bus, Gst.Message message) { + if (message.src != pipeline) { + emit(this, Facility.GRAPH, Level.VERBOSE, + "on_state_change returning. message from %s".printf(message.src.get_name())); + return; + } + + Gst.State old_state; + Gst.State new_state; + Gst.State pending; + + message.parse_state_changed(out old_state, out new_state, out pending); + + emit(this, Facility.GRAPH, Level.INFO, + "on_state_change old(%s) new(%s) pending(%s)".printf(old_state.to_string(), + new_state.to_string(), pending.to_string())); + if (new_state == gst_state) + return; + + gst_state = new_state; + do_state_change(); + } + + protected bool do_state_change() { + playstate_changed(); + switch (play_state) { + case PlayState.STOPPED: + if (gst_state != Gst.State.PAUSED) { + pipeline.set_state(Gst.State.PAUSED); + } else { + go(position); + } + return true; + case PlayState.PRE_EXPORT: + if (gst_state != Gst.State.PAUSED) { + return false; + } + do_paused_state_export(); + return true; + case PlayState.EXPORTING: + if (gst_state != Gst.State.NULL) + return false; + end_export(false); + return true; + case PlayState.CANCEL_EXPORT: + if (gst_state != Gst.State.NULL) + return false; + end_export(true); + return true; + case PlayState.CLOSING: + close(); + return true; + case PlayState.PRE_RECORD_NULL: + if (gst_state == Gst.State.NULL) { + try { + start_record(record_region); + } catch (GLib.Error error) { + error_occurred("An error occurred starting the recording.", null); + warning("An error occurred starting the recording: %s", error.message); + } + return true; + } + break; + case PlayState.PRE_RECORD: + if (gst_state == Gst.State.PAUSED) { + do_play(PlayState.RECORDING); + return true; + } + break; + case PlayState.POST_RECORD: + if (gst_state != Gst.State.NULL) { + set_gst_state(Gst.State.NULL); + } else { + post_record(); + set_gst_state(Gst.State.PAUSED); + play_state = PlayState.STOPPED; + } + return true; + } + return false; + } + + protected virtual void do_null_state_export(int64 length) { + pre_export(length); + play_state = PlayState.PRE_EXPORT; + pipeline.set_state(Gst.State.PAUSED); + } + + void do_paused_state_export() { + play_state = PlayState.EXPORTING; + + if (callback_id == 0) + callback_id = Timeout.add(50, on_callback); + pipeline.set_state(Gst.State.PLAYING); + } + + void end_export(bool deleted) { + play_state = PlayState.STOPPED; + + callback_id = 0; + post_export(deleted); + } + + public void go(int64 pos) { + if (position == pos) { + pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, position); + return; + } + if (pos < 0) + position = 0; + else + position = pos; + + // We ignore the return value of seek_simple(); sometimes it returns false even when + // a seek succeeds. + pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, position); + position_changed(position); + } + + bool on_callback() { + if ((play_state == PlayState.STOPPED && !playing) || + (play_state == PlayState.POST_RECORD)) { + callback_id = 0; + return false; + } + + Gst.Format format = Gst.Format.TIME; + int64 time = 0; + if (pipeline.query_position(ref format, out time) && format == Gst.Format.TIME) { + position = time; + callback_pulse(); + + if (play_state == PlayState.PLAYING) { + if (position >= project.get_length()) { + go(project.get_length()); + pause(); + } + position_changed(time); + } else if (play_state == PlayState.EXPORTING) { + if (time > project.get_length()) { + fraction_updated(1.0); + } + else + fraction_updated(time / (double) project.get_length()); + } else if (play_state == PlayState.RECORDING) { + position_changed(time); + } + } + return true; + } + + public virtual void pause() { + if (project.transport_is_recording()) { + record_bin.send_event(new Gst.Event.eos()); + play_state = PlayState.POST_RECORD; + } else { + if (!playing) { + return; + } + play_state = PlayState.STOPPED; + } + set_gst_state(Gst.State.PAUSED); + playing = false; + } + + // TODO: don't expose Gst.State + public void set_gst_state(Gst.State state) { + if (pipeline.set_state(state) == Gst.StateChangeReturn.FAILURE) + error("can't set state"); + } + + void seek(Gst.SeekFlags flags, int64 pos) { + // We do *not* check the return value of seek_simple here: it will often + // be false when seeking into a GnlSource which we have not yet played, + // even though the seek appears to work fine in that case. + pipeline.seek_simple(Gst.Format.TIME, flags, pos); + } + + public void do_play(PlayState new_state) { + seek(Gst.SeekFlags.FLUSH, position); + play_state = new_state; + play(); + } + + void play() { + if (playing) + return; + + set_gst_state(Gst.State.PLAYING); + if (callback_id == 0) + callback_id = Timeout.add(50, on_callback); + playing = true; + } + + public void start_export(string filename) { + file_updated(filename, 0); + do_null_state_export(project.get_length()); + } + + void cancel() { + play_state = PlayState.CANCEL_EXPORT; + pipeline.set_state(Gst.State.NULL); + } + + public void complete() { + pipeline.set_state(Gst.State.NULL); + } + + public void on_load_complete() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_complete"); + play_state = PlayState.STOPPED; + pipeline.set_state(Gst.State.PAUSED); + } + + public void on_callback_pulse() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_callback_pulse"); + if (record_region != null) { + record_region.duration = position - record_region.start; + } + } + + public void close() { + if (gst_state != Gst.State.NULL) { + play_state = PlayState.CLOSING; + set_gst_state(Gst.State.NULL); + } else { + play_state = PlayState.CLOSED; + } + playstate_changed(); + } + + public void post_record() { + assert(gst_state == Gst.State.NULL); + + record_track._delete_clip(record_region); + + audio_in.unlink_many(record_capsfilter, wav_encoder, record_sink); + record_bin.remove_many(audio_in, record_capsfilter, wav_encoder, record_sink); + pipeline.remove(record_bin); + record_completed(); + record_bin = null; + record_region = null; + record_track = null; + audio_in = record_capsfilter = null; + wav_encoder = record_sink = null; + set_gst_state(Gst.State.PAUSED); + } + + public void record(Model.AudioTrack track) { + assert(gst_state != Gst.State.NULL); + play_state = PlayState.PRE_RECORD_NULL; + set_gst_state(Gst.State.NULL); + record_track = track; + + string filename = new_audio_filename(track); + Model.ClipFile clip_file = new Model.ClipFile(filename); + record_region = new Model.Clip(clip_file, Model.MediaType.AUDIO, "", position, 0, 1, true); + } + + public void start_record(Model.Clip region) throws Error { + if (project.transport_is_recording()) + return; + + if (project.transport_is_playing()) + error("can't switch from playing to recording"); + + if (gst_state != Gst.State.NULL) + error("can't record now: %s", gst_state.to_string()); + record_bin = new Gst.Bin("recordingbin"); + record_track._move(record_region, position); + record_track.clip_added(record_region, true); + audio_in = make_element("pulsesrc"); + audio_in.set_property("device", "source.hw0"); /// TODO + record_capsfilter = make_element("capsfilter"); + record_capsfilter.set("caps", get_record_audio_caps()); + record_sink = make_element("filesink"); + record_sink.set("location", record_region.clipfile.filename); + wav_encoder = make_element("wavenc"); + + record_bin.add_many(audio_in, record_capsfilter, wav_encoder, record_sink); + if (!audio_in.link_many(record_capsfilter, wav_encoder, record_sink)) + error("audio_in: couldn't link"); + pipeline.add(record_bin); + + play_state = PlayState.PRE_RECORD; + set_gst_state(Gst.State.PAUSED); // we must advance to PAUSED before we can seek + } + + protected Gst.Caps get_record_audio_caps() { + return build_audio_caps(CHANNELS_PER_TRACK_RECORD); + } + + string new_audio_filename(Model.Track track) { + int i = 1; + string base_path = project.get_audio_path(); + GLib.DirUtils.create(base_path, 0777); + string base_name = Path.build_filename(base_path, generate_base(track.display_name)); + while (true) { + string name = "%s_%d.wav".printf(base_name, i); + if (!FileUtils.test(name, FileTest.EXISTS)) { + return name; + } + ++i; + } + } + + string generate_base(string name) { + string base_name = name.down(); + base_name.canon("abcdefghijklmnopqrstuvwxyz1234567890", '_'); + return base_name; + } + + public void on_track_added(Model.Track track) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_added"); + MediaTrack? media_track = null; + try { + switch (track.media_type()) { + case Model.MediaType.AUDIO: + media_track = create_audio_track(track); + break; + case Model.MediaType.VIDEO: + media_track = new MediaVideoTrack(this, track, converter); + break; + } + } catch(GLib.Error error) { + error_occurred("An error occurred adding the track.", null); + warning("An error occurred adding the track: %s", error.message); + return; + } + + media_track.track_removed.connect(on_track_removed); + media_track.error_occurred.connect(on_error_occurred); + + tracks.add(media_track); + } + + MediaTrack create_audio_track(Model.Track track) throws Error { + Model.AudioTrack? model_track = track as Model.AudioTrack; + MediaAudioTrack? audio_track = null; + if (model_track != null) { + audio_track = new MediaAudioTrack(this, model_track); + } else { + assert(false); + } + return audio_track; + } + + void on_track_removed(MediaTrack track) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_removed"); + tracks.remove(track); + } + + void on_error_occurred(string major_message, string? minor_message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_error_occurred"); + error_occurred(major_message, minor_message); + } +} +} diff --git a/src/marina/MultiFileProgress.vala b/src/marina/MultiFileProgress.vala new file mode 100644 index 0000000..a44e733 --- /dev/null +++ b/src/marina/MultiFileProgress.vala @@ -0,0 +1,112 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +public interface MultiFileProgressInterface : Object { + public signal void fraction_updated(double d); + public signal void file_updated(string filename, int index); + public signal void done(); + + public abstract void cancel(); + public abstract void complete(); +} + +public class MultiFileProgress : Gtk.Window { + Gtk.ProgressBar progress_bar; + Gtk.Label file_label; + Gtk.Label number_label; + Gtk.Button cancel_button; + int num_files; + bool needs_show; + + MultiFileProgressInterface provider_interface; + + string dialog_title; + + public MultiFileProgress(Gtk.Window parent, int num_files, + string dialog_title, MultiFileProgressInterface provider) { + this.num_files = num_files; + needs_show = true; + file_label = new Gtk.Label(""); + number_label = new Gtk.Label(""); + progress_bar = new Gtk.ProgressBar(); + + Gtk.VBox vbox = new Gtk.VBox(true, 0); + + vbox.pack_start(number_label, false, false, 0); + vbox.pack_start(file_label, false, false, 0); + vbox.pack_start(progress_bar, false, false, 0); + + Gtk.HButtonBox button_area = new Gtk.HButtonBox(); + button_area.set("layout-style", Gtk.ButtonBoxStyle.CENTER); + + cancel_button = new Gtk.Button.from_stock(Gtk.STOCK_CANCEL); + cancel_button.clicked.connect(on_cancel_clicked); + + button_area.add(cancel_button); + + vbox.pack_start(button_area, false, false, 0); + add(vbox); + + set_transient_for(parent); + set_title(dialog_title); + this.dialog_title = dialog_title; + + provider_interface = provider; + + provider_interface.fraction_updated.connect(on_fraction_updated); + provider_interface.file_updated.connect(on_file_updated); + provider_interface.done.connect(on_done); + } + + void on_done() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_done"); + destroy(); + } + + void on_cancel_clicked() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_cancel_clicked"); + destroy(); + } + + void on_destroy() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_destroy"); + if (progress_bar.get_fraction() < 1.0) + provider_interface.cancel(); + else + provider_interface.complete(); + } + + void on_fraction_updated(double d) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_fraction_updated"); + if (needs_show) { + needs_show = false; + set_border_width(8); + set_resizable(false); + set_modal(true); + + destroy.connect(on_destroy); + + show_all(); + } + + progress_bar.set_fraction(d); + + if (progress_bar.get_fraction() == 1.0) + destroy(); + else { + show_all(); + queue_draw(); + } + } + + void on_file_updated(string filename, int index) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_file_updated"); + number_label.set_text("%sing %d of %d".printf(dialog_title, index + 1, num_files)); + file_label.set_text("%s".printf(filename)); + } +} diff --git a/src/marina/ProjectLoader.vala b/src/marina/ProjectLoader.vala new file mode 100644 index 0000000..7a9ffdf --- /dev/null +++ b/src/marina/ProjectLoader.vala @@ -0,0 +1,353 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +namespace Model { + +public class LoaderHandler : Object { + public signal void load_error(string error_message); + public signal void complete(); + + public LoaderHandler() { + } + + public virtual bool commit_library(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_marina(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_track(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_clip(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_clipfile(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_time_signature_entry(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_tempo_entry(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_click(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual bool commit_library_preference(string[] attr_names, string[] attr_values) { + return true; + } + + public virtual void leave_library() { + } + + public virtual void leave_marina() { + } + + public virtual void leave_track() { + } + + public virtual void leave_clip() { + } + + public virtual void leave_clipfile() { + + } +} + +// TODO: Move these classes into separate file +public class XmlTreeLoader { + XmlElement current_element = null; + public XmlElement root = null; + + public XmlTreeLoader(string document) { + MarkupParser parser = { xml_start_element, xml_end_element, null, null }; + MarkupParseContext context = + new MarkupParseContext(parser, (MarkupParseFlags) 0, this, null); + try { + context.parse(document, document.length); + } catch (MarkupError e) { + } + + } + + void xml_start_element(GLib.MarkupParseContext c, string name, + string[] attr_names, string[] attr_values) { + Model.XmlElement new_element = new Model.XmlElement(name, attr_names, attr_values, current_element); + if (root == null) { + root = new_element; + } else { + assert(current_element != null); + current_element.add_child(new_element); + } + + current_element = new_element; + } + + void xml_end_element(GLib.MarkupParseContext c, string name) { + assert(current_element != null); + current_element = current_element.parent; + } +} + +// ProjectBuilder is responsible for verifying the structure of the XML document. +// Subclasses of this class will be responsible for checking the attributes of +// any particular element. +class ProjectBuilder : Object { + LoaderHandler handler; + + public signal void error_occurred(string error); + + public ProjectBuilder(LoaderHandler handler) { + this.handler = handler; + } + + bool check_name(string expected_name, XmlElement node) { + if (node.name == expected_name) { + return true; + } + + error_occurred("expected %s, got %s".printf(expected_name, node.name)); + return false; + } + + void handle_clip(XmlElement clip) { + if (check_name("clip", clip)) { + if (handler.commit_clip(clip.attribute_names, clip.attribute_values)) { + if (clip.children.size != 0) { + error_occurred("clip cannot have children"); + } + handler.leave_clip(); + } + } + } + + void handle_track(XmlElement track) { + if (check_name("track", track)) { + emit(this, Facility.LOADING, Level.VERBOSE, "loading track"); + if (handler.commit_track(track.attribute_names, track.attribute_values)) { + foreach (XmlElement child in track.children) { + handle_clip(child); + } + handler.leave_track(); + } + } + } + + void handle_preference(XmlElement preference) { + if ("click" == preference.name) { + handler.commit_click(preference.attribute_names, preference.attribute_values); + } else if ("library" == preference.name) { + handler.commit_library_preference( + preference.attribute_names, preference.attribute_values); + } else { + error_occurred("Unknown preference: %s".printf(preference.name)); + } + } + + void handle_time_signature(XmlElement time_signature) { + foreach (XmlElement child in time_signature.children) { + if (check_name("entry", child)) { + if (!handler.commit_time_signature_entry(child.attribute_names, + child.attribute_values)) { + error_occurred("Improper time signature node"); + } + } + } + } + + void handle_tempo(XmlElement tempo) { + foreach (XmlElement child in tempo.children) { + if (check_name("entry", child)) { + if (!handler.commit_tempo_entry(child.attribute_names, child.attribute_values)) { + error_occurred("Improper tempo node"); + } + } + } + } + + void handle_map(XmlElement map) { + switch (map.name) { + case "tempo": + handle_tempo(map); + break; + case "time_signature": + handle_time_signature(map); + break; + default: + error_occurred("improper map node"); + break; + } + } + + void handle_library(XmlElement library) { + if (handler.commit_library(library.attribute_names, library.attribute_values)) { + foreach (XmlElement child in library.children) { + if (!handler.commit_clipfile(child.attribute_names, child.attribute_values)) + error_occurred("Improper library node"); + } + handler.leave_library(); + } + } + + void handle_tracks(XmlElement tracks) { + foreach (XmlElement child in tracks.children) { + handle_track(child); + } + } + + void handle_preferences(XmlElement preferences) { + foreach (XmlElement child in preferences.children) { + handle_preference(child); + } + } + void handle_maps(XmlElement maps) { + foreach (XmlElement child in maps.children) { + handle_map(child); + } + } + public bool check_project(XmlElement? root) { + if (root == null) { + error_occurred("Invalid XML file!"); + return false; + } + + if (check_name("marina", root) && + handler.commit_marina(root.attribute_names, root.attribute_values)) { + if (root.children.size != 3 && root.children.size != 4) { + error_occurred("Improper number of children!"); + return false; + } + + if (!check_name("library", root.children[0]) || + !check_name("tracks", root.children[1]) || + !check_name("preferences", root.children[2])) + return false; + + if (root.children.size == 4 && !check_name("maps", root.children[3])) { + return false; + } + } else + return false; + return true; + } + + public void build_project(XmlElement? root) { + handle_library(root.children[0]); + handle_tracks(root.children[1]); + handle_preferences(root.children[2]); + if (root.children.size == 4) { + handle_maps(root.children[3]); + } + + handler.leave_marina(); + } +} + +public class XmlElement { + public string name { get; private set; } + + public string[] attribute_names; + + public string[] attribute_values; + + public Gee.ArrayList children { get { return _children; } } + + public weak XmlElement? parent { get; private set; } + + private Gee.ArrayList _children; + public XmlElement(string name, string[] attribute_names, string[] attribute_values, + XmlElement? parent) { + this.name = name; + + this.attribute_names = copy_array(attribute_names); + this.attribute_values = copy_array(attribute_values); + this.parent = parent; + this._children = new Gee.ArrayList(); + } + + public void add_child(XmlElement child_element) { + _children.add(child_element); + } +} + +public class ProjectLoader : Object { + string? file_name; + LoaderHandler loader_handler; + string text; + size_t text_len; + bool project_load_completed = false; + bool load_completed_fired = false; + bool handler_completed = false; + + public signal void load_started(string filename); + public signal void load_complete(); + public signal void load_error(string error); + + public ProjectLoader(LoaderHandler loader_handler, string? file_name) { + this.file_name = file_name; + this.loader_handler = loader_handler; + loader_handler.load_error.connect(on_load_error); + loader_handler.complete.connect(on_handler_complete); + } + + void on_load_error(string error) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_error"); + load_error(error); + } + + void on_handler_complete() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_handler_complete"); + handler_completed = true; + if (project_load_completed && !load_completed_fired) { + load_completed_fired = true; + load_complete(); + } + } + + public void load() { + try { + FileUtils.get_contents(file_name, out text, out text_len); + } catch (FileError e) { + emit(this, Facility.LOADING, Level.MEDIUM, + "error loading %s: %s".printf(file_name, e.message)); + load_error(e.message); + load_complete(); + return; + } + emit(this, Facility.LOADING, Level.VERBOSE, "Building tree for %s".printf(file_name)); + XmlTreeLoader tree_loader = new XmlTreeLoader(text); + + ProjectBuilder builder = new ProjectBuilder(loader_handler); + builder.error_occurred.connect(on_load_error); + + if (builder.check_project(tree_loader.root)) { + emit(this, Facility.LOADING, Level.VERBOSE, "project checked out. starting load"); + load_started(file_name); + builder.build_project(tree_loader.root); + project_load_completed = true; + if (handler_completed && !load_completed_fired) { + load_completed_fired = true; + load_complete(); + } + } + else { + emit(this, Facility.LOADING, Level.INFO, "project did not check out. stopping."); + load_complete(); + } + } +} +} diff --git a/src/marina/Ruler.vala b/src/marina/Ruler.vala new file mode 100644 index 0000000..9bd0477 --- /dev/null +++ b/src/marina/Ruler.vala @@ -0,0 +1,80 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +namespace View { +public class Ruler : Gtk.DrawingArea { + weak Model.TimeSystem provider; + const int BORDER = 4; + + public signal void position_changed(int x); + + public Ruler(Model.TimeSystem provider, int height) { + this.provider = provider; + set_flags(Gtk.WidgetFlags.NO_WINDOW); + set_size_request(0, height); + } + + public override bool expose_event(Gdk.EventExpose event) { + int x = event.area.x; + int frame = provider.get_start_token(x); + + Cairo.Context context = Gdk.cairo_create(window); + + Gdk.cairo_set_source_color(context, parse_color("#777")); + context.rectangle(event.area.x, event.area.y, event.area.width, event.area.height); + context.fill(); + + Cairo.Antialias old_antialias = context.get_antialias(); + + context.set_antialias(Cairo.Antialias.NONE); + context.set_source_rgb(1.0, 1.0, 1.0); + int stop = event.area.x + event.area.width; + Pango.FontDescription f = Pango.FontDescription.from_string("Sans 9"); + while (x <= stop) { + x = provider.frame_to_xsize(frame); + int y = provider.get_pixel_height(frame); + + context.move_to(x + BORDER, 0); + context.line_to(x + BORDER, y); + + string? display_string = provider.get_display_string(frame); + if (display_string != null) { + Pango.Layout layout = create_pango_layout(display_string); + + int w; + int h; + layout.set_font_description(f); + layout.get_pixel_size (out w, out h); + int text_pos = x - (w / 2) + BORDER; + if (text_pos < 0) { + text_pos = 0; + } + + Gdk.draw_layout(window, style.white_gc, text_pos, 7, layout); + } + + frame = provider.get_next_position(frame); + } + context.set_antialias(old_antialias); + context.set_line_width(1.0); + context.stroke(); + return true; + } + + public override bool button_press_event(Gdk.EventButton event) { + position_changed((int) event.x); + return false; + } + + public override bool motion_notify_event(Gdk.EventMotion event) { + if ((event.state & Gdk.ModifierType.BUTTON1_MASK) != 0) { + queue_draw(); + position_changed((int) event.x); + } + return false; + } +} +} diff --git a/src/marina/StatusBar.vala b/src/marina/StatusBar.vala new file mode 100644 index 0000000..4e29c83 --- /dev/null +++ b/src/marina/StatusBar.vala @@ -0,0 +1,41 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +namespace View { +public class StatusBar : Gtk.DrawingArea { + Model.TimeSystem provider; + int64 current_position = 0; + + public StatusBar(Model.Project p, Model.TimeSystem provider, int height) { + set_flags(Gtk.WidgetFlags.NO_WINDOW); + modify_bg(Gtk.StateType.NORMAL, parse_color("#666")); + set_size_request(0, height); + + p.media_engine.position_changed.connect(on_position_changed); + this.provider = provider; + } + + public void on_position_changed(int64 new_position) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_position_changed"); + current_position = new_position; + queue_draw(); + } + + public override bool expose_event(Gdk.EventExpose e) { + window.draw_rectangle(style.bg_gc[(int) Gtk.StateType.NORMAL], true, + allocation.x, allocation.y, allocation.width, allocation.height); + + string time = provider.get_time_string(current_position); + + Pango.Layout layout = create_pango_layout(time); + Gdk.draw_layout(window, style.white_gc, allocation.x + 4, allocation.y + 2, layout); + + return true; + } +} +} diff --git a/src/marina/TimeSystem.vala b/src/marina/TimeSystem.vala new file mode 100644 index 0000000..77a4411 --- /dev/null +++ b/src/marina/TimeSystem.vala @@ -0,0 +1,406 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +namespace Model { +using Logging; + +public interface TimeSystem : Object { + public signal void geometry_changed(); + public abstract void calculate_pixel_step(float inc, float pixel_min, float pixel_div); + public abstract int64 xpos_to_time(int x); + public abstract int64 xsize_to_time(int x); + public abstract int time_to_xpos(int64 time); + public abstract int64 get_pixel_snap_time(); + public abstract int time_to_xsize(int64 time); + public abstract float get_pixel_percentage(); + public abstract int get_start_token(int xsize); + public abstract int get_next_position(int token); + public abstract int get_pixel_height(int token); + public abstract string? get_display_string(int token); + public abstract int frame_to_xsize(int frame); + public abstract int xsize_to_frame(int xsize); + public abstract string get_time_string(int64 time); + public abstract string get_time_duration(int64 time); +} + +public abstract class TimeSystemBase : Object { + public const int PIXEL_SNAP_INTERVAL = 10; + + public float pixel_percentage = 0.0f; + public float pixels_per_second; + public int64 pixel_snap_time; + + const int BORDER = 4; // TODO: should use same value as timeline. will happen when this gets + // refactored back into view code. + + abstract int[] get_timeline_seconds(); + abstract int correct_sub_second_value(float seconds, int div, int fps); + + protected int correct_seconds_value (float seconds, int div, int fps) { + if (seconds < 1.0f) { + return correct_sub_second_value(seconds, div, fps); + } + + int i; + int secs = (int) seconds; + int [] timeline_seconds = get_timeline_seconds(); + for (i = timeline_seconds.length - 1; i > 0; i--) { + if (secs <= timeline_seconds[i] && + secs >= timeline_seconds[i - 1]) { + if ((div % (timeline_seconds[i] * fps)) == 0) { + break; + } + if ((div % (timeline_seconds[i - 1] * fps)) == 0) { + i--; + break; + } + } + } + return timeline_seconds[i] * fps; + } + + public int64 get_pixel_snap_time() { + return pixel_snap_time; + } + + public float get_pixel_percentage() { + return pixel_percentage; + } + + public int64 xpos_to_time(int x) { + return xsize_to_time(x - BORDER); + } + + public int64 xsize_to_time(int size) { + return (int64) ((float)(size * Gst.SECOND) / pixels_per_second); + } + + public int time_to_xsize(int64 time) { + return (int) (time * pixels_per_second / Gst.SECOND); + } + + public int time_to_xpos(int64 time) { + int pos = time_to_xsize(time) + BORDER; + + if (xpos_to_time(pos) != time) + pos++; + return pos; + } +} + +public class TimecodeTimeSystem : TimeSystem, TimeSystemBase { + float pixels_per_frame; + + int small_pixel_frames = 0; + int medium_pixel_frames = 0; + int large_pixel_frames = 0; + + public Fraction frame_rate_fraction = Fraction(30000, 1001); + + override int correct_sub_second_value(float seconds, int div, int fps) { + int frames = (int)(fps * seconds); + if (frames == 0) { + return 1; + } + + if (div == 0) { + div = fps; + } + + int mod = div % frames; + while (mod != 0) { + mod = div % (++frames); + } + return frames; + } + + public string get_time_string(int64 the_time) { + string time; + + int frame = time_to_frame_with_rate(the_time, frame_rate_fraction); + time = frame_to_string(frame, frame_rate_fraction); + + return time; + } + + public string get_time_duration(int64 the_time) { + // Timecode is already zero-based + return get_time_string(the_time); + } + public void calculate_pixel_step(float inc, float pixel_min, float pixel_div) { + int pixels_per_large = 300; + int pixels_per_medium = 50; + int pixels_per_small = 20; + + pixel_percentage += inc; + if (pixel_percentage < 0.0f) + pixel_percentage = 0.0f; + else if (pixel_percentage > 1.0f) + pixel_percentage = 1.0f; + + pixels_per_second = pixel_min * GLib.Math.powf(pixel_div, pixel_percentage); + int fps = frame_rate_fraction.nearest_int(); + large_pixel_frames = correct_seconds_value(pixels_per_large / pixels_per_second, 0, fps); + medium_pixel_frames = correct_seconds_value(pixels_per_medium / pixels_per_second, + large_pixel_frames, fps); + small_pixel_frames = correct_seconds_value(pixels_per_small / pixels_per_second, + medium_pixel_frames, fps); + + if (small_pixel_frames == medium_pixel_frames) { + int i = medium_pixel_frames; + + while (--i > 0) { + if ((medium_pixel_frames % i) == 0) { + small_pixel_frames = i; + break; + } + } + } + + pixels_per_frame = pixels_per_second / (float) fps; + pixel_snap_time = xsize_to_time(PIXEL_SNAP_INTERVAL); + } + + public int frame_to_xsize(int frame) { + return ((int) (frame * pixels_per_frame)); + } + + public int xsize_to_frame(int xsize) { + return (int) (xsize / pixels_per_frame); + } + + public int get_start_token(int xsize) { + int start_frame = xsize_to_frame(xsize); + return large_pixel_frames * (start_frame / large_pixel_frames); + } + + public int get_next_position(int token) { + return token + small_pixel_frames; + } + + public string? get_display_string(int frame) { + if ((frame % large_pixel_frames) == 0) { + return frame_to_time(frame, frame_rate_fraction).to_string(); + } + return null; + } + + public int get_pixel_height(int frame) { + if ((frame % medium_pixel_frames) == 0) { + if (medium_pixel_frames == small_pixel_frames && + (medium_pixel_frames != large_pixel_frames && + frame % large_pixel_frames != 0)) { + return 2; + } + else { + return 6; + } + } else { + return 2; + } + } + + override int[] get_timeline_seconds() { + return { 1, 2, 5, 10, 15, 20, 30, 60, 120, 300, 600, 900, 1200, 1800, 3600 }; + } +} + +public interface TempoInformation { + public abstract Fraction get_time_signature(); + public abstract int get_bpm(); + public signal void time_signature_changed(Fraction time_signature); + public signal void bpm_changed(int bpm); +} + +public class BarBeatTimeSystem : TimeSystem, TimeSystemBase { + float pixels_per_sixteenth; + + int small_pixel_sixteenth = 0; + int medium_pixel_sixteenth = 0; + int large_pixel_sixteenth = 0; + int[] timeline_bars = { + 1, 2, 4, 8, 16, 24, 32, 64, 128, 256, 512, 768, 1024, 2048, 3192 + }; + + int bpm; + Fraction time_signature; + float bars_per_minute; + float bars_per_second; + int sixteenths_per_bar; + int sixteenths_per_beat; + + public BarBeatTimeSystem(TempoInformation tempo_information) { + bpm = tempo_information.get_bpm(); + time_signature = tempo_information.get_time_signature(); + tempo_information.bpm_changed.connect(on_bpm_changed); + tempo_information.time_signature_changed.connect(on_time_signature_changed); + set_constants(); + } + + void on_time_signature_changed(Fraction time_signature) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_time_signature_changed"); + this.time_signature = time_signature; + set_constants(); + } + + void on_bpm_changed(int bpm) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_bpm_changed"); + this.bpm = bpm; + set_constants(); + } + + void set_constants() { + bars_per_minute = bpm / (float)time_signature.numerator; + bars_per_second = bars_per_minute / 60.0f; + + sixteenths_per_beat = 16 / time_signature.denominator; + sixteenths_per_bar = time_signature.numerator * sixteenths_per_beat; + geometry_changed(); + } + + override int correct_sub_second_value(float bars, int div, int unused) { + int sixteenths = (int)(sixteenths_per_bar * bars); + + if (sixteenths == 0) { + return 1; + } + + if (sixteenths > sixteenths_per_beat) { + return sixteenths_per_beat; + } + + if (sixteenths > 2) { + return 2; + } + + return 1; + } + + string beats_to_string(int total_sixteenths, bool maximum_resolution, bool zero_based) { + int number_of_measures = + (total_sixteenths / sixteenths_per_beat) / time_signature.numerator; + + int number_of_beats = + (total_sixteenths / sixteenths_per_beat) % time_signature.numerator; + int number_of_sixteenths = total_sixteenths % sixteenths_per_beat; + if (!zero_based) { + ++number_of_measures; + ++number_of_beats; + ++number_of_sixteenths; + } + float pixels_per_bar = pixels_per_second / bars_per_second; + float pixels_per_large_gap = large_pixel_sixteenth * pixels_per_sixteenth; + if (maximum_resolution || + ((pixels_per_large_gap < pixels_per_sixteenth * sixteenths_per_beat) && + number_of_sixteenths > 1)) { + return "%d.%d.%d".printf(number_of_measures, number_of_beats, number_of_sixteenths); + } else if (pixels_per_large_gap < pixels_per_bar && number_of_beats > 1) { + return "%d.%d".printf(number_of_measures, number_of_beats); + } else { + return "%d".printf(number_of_measures); + } + } + + public string get_time_string(int64 the_time) { + double beats_per_second = bpm / 60.0; + double sixteenths_per_second = sixteenths_per_beat * beats_per_second; + double sixteenths_per_nanosecond = sixteenths_per_second / Gst.SECOND; + int total_beats = (int)(the_time * sixteenths_per_nanosecond); + return beats_to_string(total_beats, true, false); + } + + public string get_time_duration(int64 the_time) { + double beats_per_second = bpm / 60.0; + double sixteenths_per_second = sixteenths_per_beat * beats_per_second; + double sixteenths_per_nanosecond = sixteenths_per_second / Gst.SECOND; + int total_beats = (int)(the_time * sixteenths_per_nanosecond); + if (total_beats == 0 && the_time > 0) { + // round up + total_beats = 1; + } + return beats_to_string(total_beats, true, true); + } + + public void calculate_pixel_step(float inc, float pixel_min, float pixel_div) { + int pixels_per_large = 80; + int pixels_per_medium = 40; + int pixels_per_small = 20; + + pixel_percentage += inc; + if (pixel_percentage < 0.0f) { + pixel_percentage = 0.0f; + } else if (pixel_percentage > 1.0f) { + pixel_percentage = 1.0f; + } + + pixels_per_second = pixel_min * GLib.Math.powf(pixel_div, pixel_percentage); + float pixels_per_bar = pixels_per_second / bars_per_second; + large_pixel_sixteenth = correct_seconds_value( + pixels_per_large / pixels_per_bar, 0, sixteenths_per_bar); + + medium_pixel_sixteenth = correct_seconds_value(pixels_per_medium / pixels_per_bar, + large_pixel_sixteenth, sixteenths_per_bar); + small_pixel_sixteenth = correct_seconds_value(pixels_per_small / pixels_per_bar, + medium_pixel_sixteenth, sixteenths_per_bar); + if (small_pixel_sixteenth == medium_pixel_sixteenth) { + int i = medium_pixel_sixteenth; + + while (--i > 0) { + if ((medium_pixel_sixteenth % i) == 0) { + small_pixel_sixteenth = i; + break; + } + } + } + + pixels_per_sixteenth = pixels_per_bar / (float) sixteenths_per_bar; + pixel_snap_time = xsize_to_time(PIXEL_SNAP_INTERVAL); + } + + public int frame_to_xsize(int frame) { + return ((int) (frame * pixels_per_sixteenth)); + } + + public int xsize_to_frame(int xsize) { + return (int) (xsize / pixels_per_sixteenth); + } + + public int get_start_token(int xsize) { + int start_frame = xsize_to_frame(xsize); + return large_pixel_sixteenth * (start_frame / large_pixel_sixteenth); + } + + public int get_next_position(int token) { + return token + small_pixel_sixteenth; + } + + public string? get_display_string(int frame) { + if ((frame % large_pixel_sixteenth) == 0) { + return beats_to_string(frame, false, false); + } + return null; + } + + public int get_pixel_height(int frame) { + if ((frame % medium_pixel_sixteenth) == 0) { + if (medium_pixel_sixteenth == small_pixel_sixteenth && + (medium_pixel_sixteenth != large_pixel_sixteenth && + frame % large_pixel_sixteenth != 0)) { + return 2; + } + else { + return 6; + } + } else { + return 2; + } + } + + override int[] get_timeline_seconds() { + return timeline_bars; + } +} +} diff --git a/src/marina/TrackView.vala b/src/marina/TrackView.vala new file mode 100644 index 0000000..a0a80f6 --- /dev/null +++ b/src/marina/TrackView.vala @@ -0,0 +1,199 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +class TrackViewConcrete : TrackView, Gtk.Fixed { + Model.Track track; + TimeLine timeline; + TransportDelegate transport_delegate; + + const int clip_height = 64; + const int TrackHeight = clip_height + TimeLine.BORDER * 2; + + public TrackViewConcrete(TransportDelegate transport_delegate, + Model.Track track, TimeLine timeline) { + this.track = track; + this.timeline = timeline; + this.transport_delegate = transport_delegate; + + track.clip_added.connect(on_clip_added); + track.clip_removed.connect(on_clip_removed); + } + + override void size_request(out Gtk.Requisition requisition) { + base.size_request(out requisition); + requisition.height = TrackHeight; + requisition.width += TimeLine.BORDER; // right margin + } + + void on_clip_moved(ClipView clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_moved"); + set_clip_pos(clip); + } + + void on_clip_deleted(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_deleted"); + track.delete_clip(clip); + clear_drag(); + } + + void on_clip_added(Model.Track t, Model.Clip clip, bool select) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_added"); + ClipView view = new ClipView(transport_delegate, clip, timeline.provider, clip_height); + view.clip_moved.connect(on_clip_moved); + view.clip_deleted.connect(on_clip_deleted); + view.move_begin.connect(on_move_begin); + view.trim_begin.connect(on_trim_begin); + + put(view, timeline.provider.time_to_xpos(clip.start), TimeLine.BORDER); + view.show(); + + timeline.track_changed(); + clip_view_added(view); + if (select) { + view.selection_request(view, false); + } + } + + // TODO: This method should not be public. When linking/grouping is done, this method + // should become private. See Timeline.on_clip_view_move_begin for more information. + public void move_to_top(ClipView clip_view) { + /* + * We remove the ClipView from the Fixed object and add it again to make + * sure that when we draw it, it is displayed above every other clip while + * dragging. + */ + remove(clip_view); + put(clip_view, + timeline.provider.time_to_xpos(clip_view.clip.start), + TimeLine.BORDER); + clip_view.show(); + } + + void on_trim_begin(ClipView clip_view) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_trim_begin"); + move_to_top(clip_view); + } + + void on_move_begin(ClipView clip_view, bool do_copy) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_move_begin"); + move_to_top(clip_view); + } + + void set_clip_pos(ClipView view) { + move(view, timeline.provider.time_to_xpos(view.clip.start), TimeLine.BORDER); + queue_draw(); + } + + public void resize() { + foreach (Gtk.Widget w in get_children()) { + ClipView view = w as ClipView; + if (view != null) { + view.on_clip_moved(view.clip); + } + } + } + + void on_clip_removed(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_removed"); + foreach (Gtk.Widget w in get_children()) { + ClipView view = w as ClipView; + if (view.clip == clip) { + view.clip_moved.disconnect(on_clip_moved); + remove(view); + timeline.track_changed(); + return; + } + } + } + +/* + void unselect_gap() { + if (timeline.gap_view != null) { + TrackView parent = timeline.gap_view.parent as TrackView; + parent.remove(timeline.gap_view); + timeline.gap_view = null; + } + } +*/ + + override bool button_press_event(Gdk.EventButton e) { + if (e.type != Gdk.EventType.BUTTON_PRESS && + e.type != Gdk.EventType.2BUTTON_PRESS && + e.type != Gdk.EventType.3BUTTON_PRESS) + return false; + + if (e.button == 1 || + e.button == 3) { +/* + int x = (int) e.x; + int64 time = timeline.provider.xpos_to_time(x); + Model.Gap g; + track.find_containing_gap(time, out g); + if (g.end > g.start) { + int64 length = g.end - g.start; + int width = timeline.provider.time_to_xpos(g.start + length) - + timeline.provider.time_to_xpos(g.start); + + timeline.gap_view = new GapView(g.start, length, + width, clip_height); + timeline.gap_view.removed += on_gap_view_removed; + timeline.gap_view.unselected += on_gap_view_unselected; + put(timeline.gap_view, timeline.provider.time_to_xpos(g.start), TimeLine.BORDER); + timeline.gap_view.show(); + } +*/ + timeline.deselect_all_clips(); + /* + track.set_selected(true); + */ + } + return false; + } + +/* + void on_gap_view_removed(GapView gap_view) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_gap_view_removed"); + track.delete_gap(gap_view.gap); + } + + void on_gap_view_unselected(GapView gap_view) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_gap_view_unselected"); + unselect_gap(); + } +*/ + void clear_drag() { + window.set_cursor(null); + queue_draw(); + } + + public Model.Track get_track() { + return track; + } + + public int get_track_height() { + return TrackHeight; + } + + public Gtk.Widget? find_child(double x, double y) { + foreach (Gtk.Widget w in get_children()) { + if (w.allocation.x <= x && x < w.allocation.x + w.allocation.width) { + return w; + } + } + return null; + } + + public void select_all() { + foreach (Gtk.Widget child in get_children()) { + ClipView? clip_view = child as ClipView; + if (clip_view != null) { + clip_view.select(); + } + } + } +} diff --git a/src/marina/TransportDelegate.vala b/src/marina/TransportDelegate.vala new file mode 100644 index 0000000..d01c2e2 --- /dev/null +++ b/src/marina/TransportDelegate.vala @@ -0,0 +1,11 @@ +/* Copyright 2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +public interface TransportDelegate : Object { + public abstract bool is_playing(); + public abstract bool is_recording(); + public abstract bool is_stopped(); +} diff --git a/src/marina/UndoManager.vala b/src/marina/UndoManager.vala new file mode 100644 index 0000000..e7db9e5 --- /dev/null +++ b/src/marina/UndoManager.vala @@ -0,0 +1,103 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +namespace Model { +public class UndoManager { + int saved_index = 0; + bool _in_undo = false; + Gee.ArrayList command_list = new Gee.ArrayList(); + public bool is_dirty { get { return saved_index != command_list.size; } } + public bool can_undo { get { return command_list.size > 0; } } + public bool in_undo { get { return _in_undo; } private set { _in_undo = value; } } + + public signal void undo_changed(bool can_undo); + public signal void dirty_changed(bool is_dirty); + + public class UndoManager() { + } + + public void reset() { + command_list.clear(); + saved_index = 0; + undo_changed(false); + } + + public void mark_clean() { + saved_index = command_list.size; + dirty_changed(false); + } + + public void start_transaction(string description) { + TransactionCommand command = new TransactionCommand(false, description); + command_list.add(command); + undo_changed(true); + } + + public void end_transaction(string description) { + TransactionCommand command = new TransactionCommand(true, description); + command_list.add(command); + undo_changed(true); + } + + public void do_command(Command the_command) { + if (!in_undo) { + the_command.apply(); + Command? current_command = get_current_command(); + if (current_command == null || !current_command.merge(the_command)) { + command_list.add(the_command); + } + dirty_changed(true); + undo_changed(can_undo); + } + } + + Command? get_current_command() { + int index = command_list.size - 1; + if (index >= 0) { + return command_list[index]; + } else { + return null; + } + } + + public void undo() { + assert(in_undo == false); + in_undo = true; + int in_transaction = 0; + do { + Command? the_command = get_current_command(); + if (the_command != null) { + command_list.remove(the_command); + TransactionCommand transaction_command = the_command as TransactionCommand; + if (transaction_command != null) { + if (transaction_command.in_transaction()) { + in_transaction++; + } else { + in_transaction--; + } + } else { + the_command.undo(); + } + } else { + break; + } + } while (in_transaction > 0); + dirty_changed(is_dirty); + undo_changed(can_undo); + in_undo = false; + } + + public string get_undo_title() { + Command? the_command = get_current_command(); + if (the_command != null) { + return the_command.description(); + } else { + return ""; + } + } + +} +} diff --git a/src/marina/clip.vala b/src/marina/clip.vala new file mode 100644 index 0000000..0f3b9c2 --- /dev/null +++ b/src/marina/clip.vala @@ -0,0 +1,607 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +namespace Model { + +public enum MediaType { + AUDIO, + VIDEO +} + +public class Gap { + public int64 start; + public int64 end; + + public Gap(int64 start, int64 end) { + this.start = start; + this.end = end; + } + + public bool is_empty() { + return start >= end; + } + + public Gap intersect(Gap g) { + return new Gap(int64.max(start, g.start), int64.min(end, g.end)); + } +} + +public class ClipFile : Object { + public string filename; + int64 _length; + public int64 length { + public get { + if (!online) { + warning("retrieving length while clip offline"); + } + return _length; + } + + public set { + _length = value; + } + } + + bool online; + + public Gst.Caps video_caps; // or null if no video + public Gst.Caps audio_caps; // or null if no audio + public Gdk.Pixbuf thumbnail = null; + + public signal void updated(); + + public ClipFile(string filename, int64 length = 0) { + this.filename = filename; + this.length = length; + online = false; + } + + public bool is_online() { + return online; + } + + public void set_online(bool o) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "set_online"); + online = o; + updated(); + } + + public void set_thumbnail(Gdk.Pixbuf b) { + // TODO: Investigate this + // 56x56 - 62x62 icon size does not work for some reason when + // we display the thumbnail while dragging the clip. + + thumbnail = b.scale_simple(64, 44, Gdk.InterpType.BILINEAR); + } + + public bool has_caps_structure(MediaType m) { + if (m == MediaType.AUDIO) { + if (audio_caps == null || audio_caps.get_size() < 1) + return false; + } else if (m == MediaType.VIDEO) { + if (video_caps == null || video_caps.get_size() < 1) + return false; + } + return true; + } + + public bool is_of_type(MediaType t) { + if (t == MediaType.VIDEO) + return video_caps != null; + return audio_caps != null; + } + + bool get_caps_structure(MediaType m, out Gst.Structure s) { + if (!has_caps_structure(m)) + return false; + if (m == MediaType.AUDIO) { + s = audio_caps.get_structure(0); + } else if (m == MediaType.VIDEO) { + s = video_caps.get_structure(0); + } + return true; + } + + public bool get_frame_rate(out Fraction rate) { + Gst.Structure structure; + if (!get_caps_structure(MediaType.VIDEO, out structure)) + return false; + return structure.get_fraction("framerate", out rate.numerator, out rate.denominator); + } + + public bool get_dimensions(out int w, out int h) { + Gst.Structure s; + + if (!get_caps_structure(MediaType.VIDEO, out s)) + return false; + + return s.get_int("width", out w) && s.get_int("height", out h); + } + + public bool get_sample_rate(out int rate) { + Gst.Structure s; + if (!get_caps_structure(MediaType.AUDIO, out s)) + return false; + + return s.get_int("rate", out rate); + } + + public bool get_video_format(out uint32 fourcc) { + Gst.Structure s; + + if (!get_caps_structure(MediaType.VIDEO, out s)) + return false; + + return s.get_fourcc("format", out fourcc); + } + + public bool get_num_channels(out int channels) { + Gst.Structure s; + if (!get_caps_structure(MediaType.AUDIO, out s)) { + return false; + } + + return s.get_int("channels", out channels); + } + + public bool get_num_channels_string(out string s) { + int i; + if (!get_num_channels(out i)) + return false; + + if (i == 1) + s = "Mono"; + else if (i == 2) + s = "Stereo"; + else if ((i % 2) == 0) + s = "Surround %d.1".printf(i - 1); + else + s = "%d".printf(i); + return true; + } +} + +public abstract class Fetcher : Object { + protected Gst.Element filesrc; + protected Gst.Element decodebin; + protected Gst.Pipeline pipeline; + + public ClipFile clipfile; + public string error_string; + + protected abstract void on_pad_added(Gst.Pad pad); + protected abstract void on_state_change(Gst.Bus bus, Gst.Message message); + + public signal void ready(Fetcher fetcher); + + protected void do_error(string error) { + error_string = error; + pipeline.set_state(Gst.State.NULL); + } + + protected void on_warning(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_warning"); + Error error; + string text; + message.parse_warning(out error, out text); + warning("%s", text); + } + + protected void on_error(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_error"); + Error error; + string text; + message.parse_error(out error, out text); + do_error(text); + } +} + +public class ClipFetcher : Fetcher { + public signal void clipfile_online(bool online); + + public ClipFetcher(string filename) throws Error { + clipfile = new ClipFile(filename); + + clipfile_online.connect(clipfile.set_online); + + filesrc = make_element("filesrc"); + filesrc.set("location", filename); + + decodebin = (Gst.Bin) make_element("decodebin"); + pipeline = new Gst.Pipeline("pipeline"); + pipeline.set_auto_flush_bus(false); + if (pipeline == null) + error("can't construct pipeline"); + pipeline.add_many(filesrc, decodebin); + + if (!filesrc.link(decodebin)) + error("can't link filesrc"); + decodebin.pad_added.connect(on_pad_added); + + Gst.Bus bus = pipeline.get_bus(); + + bus.add_signal_watch(); + bus.message["state-changed"] += on_state_change; + bus.message["error"] += on_error; + bus.message["warning"] += on_warning; + + error_string = null; + pipeline.set_state(Gst.State.PLAYING); + } + + public string get_filename() { return clipfile.filename; } + + protected override void on_pad_added(Gst.Pad pad) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_pad_added"); + Gst.Pad fake_pad; + Gst.Element fake_sink; + try { + if (pad.caps.to_string().has_prefix("video")) { + fake_sink = make_element("fakesink"); + pipeline.add(fake_sink); + fake_pad = fake_sink.get_static_pad("sink"); + + if (!fake_sink.sync_state_with_parent()) { + error("could not sync state with parent"); + } + } else { + fake_sink = make_element("fakesink"); + pipeline.add(fake_sink); + fake_pad = fake_sink.get_static_pad("sink"); + + if (!fake_sink.sync_state_with_parent()) { + error("could not sync state with parent"); + } + } + pad.link(fake_pad); + } + catch (Error e) { + } + } + + Gst.Pad? get_pad(string prefix) { + foreach(Gst.Pad pad in decodebin.pads) { + string caps = pad.caps.to_string(); + if (caps.has_prefix(prefix)) { + return pad; + } + } + return null; + } + + protected override void on_state_change(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_state_change"); + if (message.src != pipeline) + return; + + Gst.State old_state; + Gst.State new_state; + Gst.State pending; + + message.parse_state_changed(out old_state, out new_state, out pending); + if (new_state == old_state) + return; + + if (new_state == Gst.State.PLAYING) { + Gst.Pad? pad = get_pad("video"); + if (pad != null) { + clipfile.video_caps = pad.caps; + } + + pad = get_pad("audio"); + if (pad != null) { + clipfile.audio_caps = pad.caps; + } + + Gst.Format format = Gst.Format.TIME; + int64 length; + if (!pipeline.query_duration(ref format, out length) || + format != Gst.Format.TIME) { + do_error("Can't fetch length"); + return; + } + clipfile.length = length; + + clipfile_online(true); + pipeline.set_state(Gst.State.NULL); + } else if (new_state == Gst.State.NULL) { + ready(this); + } + } +} + +public class ThumbnailFetcher : Fetcher { + ThumbnailSink thumbnail_sink; + Gst.Element colorspace; + int64 seek_position; + bool done_seek; + bool have_thumbnail; + + public ThumbnailFetcher(ClipFile f, int64 time) throws Error { + clipfile = f; + seek_position = time; + + SingleDecodeBin single_bin = new SingleDecodeBin ( + Gst.Caps.from_string ("video/x-raw-rgb; video/x-raw-yuv"), + "singledecoder", f.filename); + + pipeline = new Gst.Pipeline("pipeline"); + pipeline.set_auto_flush_bus(false); + + thumbnail_sink = new ThumbnailSink(); + thumbnail_sink.have_thumbnail.connect(on_have_thumbnail); + + colorspace = make_element("ffmpegcolorspace"); + + pipeline.add_many(single_bin, thumbnail_sink, colorspace); + + single_bin.pad_added.connect(on_pad_added); + + colorspace.link(thumbnail_sink); + + Gst.Bus bus = pipeline.get_bus(); + + bus.add_signal_watch(); + bus.message["state-changed"] += on_state_change; + bus.message["error"] += on_error; + bus.message["warning"] += on_warning; + + have_thumbnail = false; + done_seek = false; + pipeline.set_state(Gst.State.PAUSED); + } + + void on_have_thumbnail(Gdk.Pixbuf buf) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_have_thumbnail"); + if (done_seek) { + have_thumbnail = true; + clipfile.set_thumbnail(buf); + } + } + + protected override void on_pad_added(Gst.Pad pad) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_pad_added"); + Gst.Caps c = pad.get_caps(); + + if (c.to_string().has_prefix("video")) { + pad.link(colorspace.get_static_pad("sink")); + } + } + + protected override void on_state_change(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_state_change"); + if (message.src != pipeline) + return; + + Gst.State new_state; + Gst.State old_state; + Gst.State pending_state; + + message.parse_state_changed (out old_state, out new_state, out pending_state); + if (new_state == old_state && + new_state != Gst.State.PAUSED) + return; + + if (new_state == Gst.State.PAUSED) { + if (!done_seek) { + done_seek = true; + pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, seek_position); + } else { + if (have_thumbnail) + pipeline.set_state(Gst.State.NULL); + } + } else if (new_state == Gst.State.NULL) { + ready(this); + } + } +} + +public class Clip : Object { + public ClipFile clipfile; + public MediaType type; + // TODO: If a clip is being recorded, we don't want to set duration in the MediaClip file. + // Address when handling multiple track recording. This is an ugly hack. + public bool is_recording; + public string name; + int64 _start; + public int64 start { + get { + return _start; + } + + set { + _start = value; + if (connected) { + start_changed(_start); + } + moved(this); + } + } + + int64 _media_start; + public int64 media_start { + get { + return _media_start; + } + } + + int64 _duration; + public int64 duration { + get { + return _duration; + } + + set { + if (value < 0) { + // saturating the duration + value = 0; + } + + if (!is_recording) { + if (value + _media_start > clipfile.length) { + // saturating the duration + value = clipfile.length - media_start; + } + } + + _duration = value; + if (connected) { + duration_changed(_duration); + } + moved(this); + } + } + + bool connected; + + public int64 end { + get { return start + duration; } + } + + public signal void moved(Clip clip); + public signal void updated(Clip clip); + public signal void media_start_changed(int64 media_start); + public signal void duration_changed(int64 duration); + public signal void start_changed(int64 start); + public signal void removed(Clip clip); + + public Clip(ClipFile clipfile, MediaType t, string name, + int64 start, int64 media_start, int64 duration, bool is_recording) { + this.is_recording = is_recording; + this.clipfile = clipfile; + this.type = t; + this.name = name; + this.connected = clipfile.is_online(); + this.set_media_start_duration(media_start, duration); + this.start = start; + clipfile.updated.connect(on_clipfile_updated); + } + + public void gnonlin_connect() { connected = true; } + public void gnonlin_disconnect() { connected = false; } + + void on_clipfile_updated(ClipFile f) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clipfile_updated"); + if (f.is_online()) { + if (!connected) { + connected = true; + // TODO: Assigning to oneself has the side-effect of firing signals. + // fire signals directly. Make certain that loading a file still works + // properly in this case. + set_media_start_duration(media_start, duration); + + start = start; + } + } else { + if (connected) { + connected = false; + } + } + updated(this); + } + + public bool overlap_pos(int64 start, int64 length) { + return start < this.start + this.duration && + this.start < start + length; + } + + public int64 snap(Clip other, int64 pad) { + if (time_in_range(start, other.start, pad)) { + return other.start; + } else if (time_in_range(start, other.end, pad)) { + return other.end; + } else if (time_in_range(end, other.start, pad)) { + return other.start - duration; + } else if (time_in_range(end, other.end, pad)) { + return other.end - duration; + } + return start; + } + + public bool snap_coord(out int64 s, int64 span) { + if (time_in_range(s, start, span)) { + s = start; + return true; + } else if (time_in_range(s, end, span)) { + s = end; + return true; + } + return false; + } + + public Clip copy() { + return new Clip(clipfile, type, name, start, media_start, duration, false); + } + + public bool is_trimmed() { + if (!clipfile.is_online()) + return false; + return duration != clipfile.length; + } + + public void trim(int64 delta, Gdk.WindowEdge edge) { + switch (edge) { + case Gdk.WindowEdge.WEST: + if (media_start + delta < 0) { + delta = -media_start; + } + + if (duration - delta < 0) { + delta = duration; + } + + start += delta; + set_media_start_duration(media_start + delta, duration - delta); + break; + case Gdk.WindowEdge.EAST: + duration += delta; + break; + } + } + + public void set_media_start_duration(int64 media_start, int64 duration) { + if (media_start < 0) { + media_start = 0; + } + + if (duration < 0) { + duration = 0; + } + + if (clipfile.is_online() && media_start + duration > clipfile.length) { + // We are saturating the value + media_start = clipfile.length - duration; + } + + _media_start = media_start; + _duration = duration; + + if (connected) { + media_start_changed(_media_start); + duration_changed(_duration); + } + + moved(this); + } + + public void save(FileStream f, int id) { + f.printf( + " \n", + id, name, start, media_start, duration); + } +} + +public class FetcherCompletion { + public FetcherCompletion() { + } + + public virtual void complete(Fetcher fetcher) { + } +} +} diff --git a/src/marina/command.vala b/src/marina/command.vala new file mode 100644 index 0000000..c2c5083 --- /dev/null +++ b/src/marina/command.vala @@ -0,0 +1,409 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +namespace Model { +public abstract class Command { + public abstract void apply(); + public abstract void undo(); + public abstract bool merge(Command command); + public abstract string description(); +} + +public enum Parameter { PAN, VOLUME } + +public class ParameterCommand : Command { + AudioTrack target; + Parameter parameter; + double delta; + + public ParameterCommand(AudioTrack target, Parameter parameter, + double new_value, double old_value) { + this.target = target; + this.parameter = parameter; + this.delta = new_value - old_value; + } + + void change_parameter(double amount) { + switch (parameter) { + case Parameter.PAN: + target._set_pan(target.get_pan() + amount); + break; + case Parameter.VOLUME: + target._set_volume(target.get_volume() + amount); + break; + } + } + + public override void apply() { + change_parameter(delta); + } + + public override void undo() { + change_parameter(-delta); + } + + public override bool merge(Command command) { + ParameterCommand parameter_command = command as ParameterCommand; + if (parameter_command != null && parameter_command.parameter == parameter) { + delta = delta + parameter_command.delta; + return true; + } + return false; + } + + public override string description() { + switch (parameter) { + case Parameter.PAN: + return "Adjust Pan"; + case Parameter.VOLUME: + return "Adjust Level"; + default: + assert(false); + return ""; + } + } +} + +public class ClipCommand : Command { + public enum Action { APPEND, DELETE } + Track track; + Clip clip; + int64 time; + Action action; + int index; + bool select; + + public ClipCommand(Action action, Track track, Clip clip, int64 time, bool select) { + this.track = track; + this.clip = clip; + this.time = time; + this.action = action; + this.select = select; + this.index = track.get_clip_index(clip); + } + + public override void apply() { + switch(action) { + case Action.APPEND: + track._append_at_time(clip, time, select); + break; + case Action.DELETE: + track._delete_clip(clip); + break; + default: + assert(false); + break; + } + } + + public override void undo() { + switch(action) { + case Action.APPEND: + track._delete_clip(clip); + break; + case Action.DELETE: + track.add(clip, time, false); + break; + default: + assert(false); + break; + } + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + switch(action) { + case Action.APPEND: + return "Create Clip"; + case Action.DELETE: + return "Delete Clip"; + default: + assert(false); + return ""; + } + } +} + +public class ClipAddCommand : Command { + Track track; + Clip clip; + int64 delta; + + public ClipAddCommand(Track track, Clip clip, int64 original_time, + int64 new_start) { + this.track = track; + this.clip = clip; + this.delta = new_start - original_time; + } + + public override void apply() { + track._move(clip, clip.start); + } + + public override void undo() { + track.remove_clip_from_array(clip); + track._move(clip, clip.start - delta); + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return "Move Clip"; + } +} + +public class ClipSplitCommand : Command { + Track track; + int64 time; + bool do_split; + + public enum Action { SPLIT, JOIN } + + public ClipSplitCommand(Action action, Track track, int64 time) { + this.track = track; + this.time = time; + do_split = action == Action.SPLIT; + } + + public override void apply() { + if (do_split) { + track._split_at(time); + } else { + track._join(time); + } + } + + public override void undo() { + if (do_split) { + track._join(time); + } else { + track._split_at(time); + } + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + if (do_split) { + return "Split Clip"; + } else { + return "Join Clip"; + } + } +} + +public class ClipFileDeleteCommand : Command { + ClipFile clipfile; + Project project; + + public ClipFileDeleteCommand(Project p, ClipFile cf) { + clipfile = cf; + project = p; + } + + public override void apply() { + project._remove_clipfile(clipfile); + } + + public override void undo() { + try { + project._add_clipfile(clipfile); + } catch (Error e) { + project.error_occurred("Could not add clipfile.", e.message); + } + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return "Delete from Library"; + } +} + +public class ClipTrimCommand : Command { + Track track; + Clip clip; + int64 delta; + Gdk.WindowEdge edge; + + public ClipTrimCommand(Track track, Clip clip, int64 delta, Gdk.WindowEdge edge) { + this.track = track; + this.clip = clip; + this.delta = delta; + this.edge = edge; + } + + public override void apply() { + track._trim(clip, delta, edge); + } + + public override void undo() { + track._trim(clip, -delta, edge); + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return "Trim To Playhead"; + } +} + +public class ClipRevertCommand : Command { + Track track; + Clip clip; + int64 left_delta; + int64 right_delta; + + public ClipRevertCommand(Track track, Clip clip) { + this.track = track; + this.clip = clip; + } + + public override void apply() { + right_delta = clip.end; + left_delta = clip.media_start; + track._revert_to_original(clip); + left_delta -= clip.media_start; + right_delta = clip.end - right_delta - left_delta; + } + + public override void undo() { + track._trim(clip, -left_delta, Gdk.WindowEdge.WEST); + track._trim(clip, -right_delta, Gdk.WindowEdge.EAST); + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return "Revert To Original"; + } +} + +public class TimeSignatureCommand : Command { + Fraction new_time_signature; + Fraction old_time_signature; + Project project; + + public TimeSignatureCommand(Project project, Fraction new_time_signature) { + this.project = project; + this.new_time_signature = new_time_signature; + this.old_time_signature = project.get_time_signature(); + } + + public override void apply() { + project._set_time_signature(new_time_signature); + } + + public override void undo() { + project._set_time_signature(old_time_signature); + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return "Set Time Signature"; + } +} + +public class BpmCommand : Command { + int delta; + Project project; + + public BpmCommand(Project project, int new_bpm) { + delta = new_bpm - project.get_bpm(); + this.project = project; + } + + public override void apply() { + project._set_bpm(project.get_bpm() + delta); + } + + public override void undo() { + project._set_bpm(project.get_bpm() - delta); + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return "Set Tempo"; + } +} + +public class AddClipCommand : Command { + ClipFile clip_file; + Project project; + + public AddClipCommand(Project project, ClipFile clip_file) { + this.project = project; + this.clip_file = clip_file; + } + + public override void apply() { + try { + project._add_clipfile(clip_file); + } catch (GLib.Error error) { + project.error_occurred("Error importing", "An error occurred importing this file."); + } + } + + public override void undo() { + project._remove_clipfile(clip_file); + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return "Add Clip To Library"; + } +} + +public class TransactionCommand : Command { + bool open; + string transaction_description; + + public TransactionCommand(bool open, string transaction_description) { + this.open = open; + this.transaction_description = transaction_description; + } + + public bool in_transaction() { + return open; + } + + public override void apply() { + } + + public override void undo() { + } + + public override bool merge(Command command) { + return false; + } + + public override string description() { + return transaction_description; + } +} +} diff --git a/src/marina/import.vala b/src/marina/import.vala new file mode 100644 index 0000000..7c002cb --- /dev/null +++ b/src/marina/import.vala @@ -0,0 +1,469 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +namespace Model { + +public class ClipImporter : MultiFileProgressInterface, Object { + enum ImportState { + FETCHING, + IMPORTING, + CANCELLED + } + + string import_directory; + + ImportState import_state; + bool import_done; + bool all_done; + ClipFetcher our_fetcher; + + Gst.Pad video_pad; + Gst.Pad audio_pad; + + Gst.Pipeline pipeline = null; + Gst.Element filesink; + Gst.Element video_convert; + Gst.Element audio_convert; + Gst.Element mux; + + Gst.Bin video_decoder; + Gst.Bin audio_decoder; + + int current_file_importing = 0; + + int64 current_time; + int64 total_time; + int64 previous_time; + + Gee.ArrayList filenames = new Gee.ArrayList(); + Gee.ArrayList queued_fetchers = new Gee.ArrayList(); + Gee.ArrayList queued_filenames = new Gee.ArrayList(); + Gee.ArrayList no_import_formats = new Gee.ArrayList(); + + public signal void clip_complete(ClipFile f); + public signal void importing_started(int num_clips); + public signal void error_occurred(string error); + + public ClipImporter() { + import_directory = GLib.Environment.get_home_dir(); + import_directory += "/.lombard_fillmore_import/"; + + GLib.DirUtils.create(import_directory, 0777); + + no_import_formats.add("YUY2"); + no_import_formats.add("Y41B"); + + import_state = ImportState.FETCHING; + } + + public void add_filename(string filename) { + filenames.add(filename); + } + + bool on_timer_callback() { + int64 time; + Gst.Format format = Gst.Format.TIME; + + if (all_done) + return false; + + if (pipeline.query_position(ref format, out time) && + format == Gst.Format.TIME) { + if (time > previous_time) + current_time += time - previous_time; + previous_time = time; + if (current_time >= total_time) { + fraction_updated(1.0); + return false; + } else + fraction_updated(current_time / (double)total_time); + } + return true; + } + + void start_import() { + import_state = ImportState.IMPORTING; + current_file_importing = 0; + importing_started(queued_fetchers.size); + Timeout.add(50, on_timer_callback); + } + + void cancel() { + all_done = true; + import_state = ImportState.CANCELLED; + if (pipeline != null) { + pipeline.set_state(Gst.State.NULL); + } + } + + public void start() throws Error { + process_curr_file(); + } + + void process_curr_file() throws Error { + if (import_state == ImportState.FETCHING) { + if (current_file_importing == filenames.size) { + if (queued_fetchers.size == 0) + done(); + else + start_import(); + } else { + emit(this, Facility.IMPORT, Level.VERBOSE, + "fetching %s".printf(filenames[current_file_importing])); + our_fetcher = new Model.ClipFetcher(filenames[current_file_importing]); + our_fetcher.ready.connect(on_fetcher_ready); + } + } + + if (import_state == ImportState.IMPORTING) { + if (current_file_importing == queued_fetchers.size) { + fraction_updated(1.0); + all_done = true; + } else + do_import(queued_fetchers[current_file_importing]); + } + } + + // TODO: Rework this + void complete() { + all_done = true; + } + + void do_import_complete() throws Error{ + if (import_state == ImportState.IMPORTING) { + our_fetcher.clipfile.filename = append_extension( + queued_filenames[current_file_importing], "mov"); + clip_complete(our_fetcher.clipfile); + } else + total_time += our_fetcher.clipfile.length; + + current_file_importing++; + + if (current_file_importing <= filenames.size) + process_curr_file(); + else + warning ("do_import_complete: current_file_importing out of bounds! %d %d".printf( + current_file_importing, filenames.size)); + } + + bool need_to_import(Fetcher f) { + //for now, use the clip as is + return false; + /* + if (f.clipfile.is_of_type(MediaType.VIDEO)) { + uint32 format; + if (f.clipfile.get_video_format(out format)) { + foreach (string s in no_import_formats) { + if (format == *(uint32*)s) { + return false; + } + } + return true; + } + } + return false; + */ + } + + void on_fetcher_ready(Fetcher f) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_fetcher_ready"); + try { + if (f.error_string != null) { + error_occurred(f.error_string); + do_import_complete(); + return; + } + + if (need_to_import(f)) { + string checksum; + if (md5_checksum_on_file(f.clipfile.filename, out checksum)) { + string base_filename = import_directory + isolate_filename(f.clipfile.filename); + + int index = 0; + string new_filename = base_filename; + while (true) { + string existing_checksum; + if (get_file_md5_checksum(new_filename, out existing_checksum)) { + if (checksum == existing_checksum) { + // Re-fetch this clip to get the correct caps + filenames[current_file_importing] = + append_extension(new_filename, "mov"); + current_file_importing--; + total_time -= f.clipfile.length; + break; + } + index++; + new_filename = base_filename + index.to_string(); + } else { + // Truly need to import + save_file_md5_checksum(new_filename, checksum); + queued_filenames.add(new_filename); + queued_fetchers.add(f as ClipFetcher); + break; + } + } + } else + error("Cannot get md5 checksum for file %s!", f.clipfile.filename); + } else { + clip_complete(f.clipfile); + } + do_import_complete(); + } catch (Error e) { + error_occurred(e.message); + } + } + + void do_import(ClipFetcher f) throws Error { + file_updated(f.clipfile.filename, current_file_importing); + previous_time = 0; + + our_fetcher = f; + import_done = false; + pipeline = new Gst.Pipeline("pipeline"); + pipeline.set_auto_flush_bus(false); + + Gst.Bus bus = pipeline.get_bus(); + bus.add_signal_watch(); + + bus.message["state-changed"] += on_state_changed; + bus.message["eos"] += on_eos; + bus.message["error"] += on_error; + bus.message["warning"] += on_warning; + + mux = make_element("qtmux"); + + filesink = make_element("filesink"); + filesink.set("location", append_extension(queued_filenames[current_file_importing], "mov")); + + pipeline.add_many(mux, filesink); + + if (f.clipfile.is_of_type(MediaType.VIDEO)) { + video_convert = make_element("ffmpegcolorspace"); + pipeline.add(video_convert); + + video_decoder = new SingleDecodeBin(Gst.Caps.from_string( + "video/x-raw-yuv"), + "videodecodebin", + f.clipfile.filename); + video_decoder.pad_added.connect(on_pad_added); + + pipeline.add(video_decoder); + + if (!video_convert.link(mux)) + error("do_import: Cannot link video converter to mux!"); + } + if (f.clipfile.is_of_type(MediaType.AUDIO)) { + audio_convert = make_element("audioconvert"); + pipeline.add(audio_convert); + + // setup for importing h.264 and other int flavors. change to audio/x-raw-float + // if you need to import ogg and other float flavors. see bug 2055 + audio_decoder = new SingleDecodeBin( + Gst.Caps.from_string("audio/x-raw-int"), + "audiodecodebin", f.clipfile.filename); + audio_decoder.pad_added.connect(on_pad_added); + + pipeline.add(audio_decoder); + + if (!audio_convert.link(mux)) + error("do_import: Cannot link audio convert to mux!"); + } + + if (!mux.link(filesink)) + error("do_import: Cannot link mux to filesink!"); + + emit(this, Facility.IMPORT, Level.VERBOSE, + "Starting import to %s...".printf(queued_filenames[current_file_importing])); + pipeline.set_state(Gst.State.PLAYING); + } + + void on_pad_added(Gst.Pad p) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_pad_added"); + + string str = p.caps.to_string(); + Gst.Pad sink = null; + + if (str.has_prefix("video")) { + video_pad = p; + sink = video_convert.get_compatible_pad(p, p.caps); + } else if (str.has_prefix("audio")) { + audio_pad = p; + sink = audio_convert.get_compatible_pad(p, p.caps); + } else { + //error_occurred here gives a segfault + warning("Unrecognized prefix %s".printf(str)); + return; + } + + if (p.link(sink) != Gst.PadLinkReturn.OK) { + error("Cannot link pad in importer!"); + } + } + + void on_error(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_error"); + Error e; + string text; + message.parse_error(out e, out text); + warning("%s\n", text); + error_occurred(text); + } + + void on_warning(Gst.Bus bus, Gst.Message message) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_warning"); + Error e; + string text; + message.parse_warning(out e, out text); + warning("%s", text); + } + + void on_state_changed(Gst.Bus b, Gst.Message m) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_state_changed"); + if (m.src != pipeline) + return; + + Gst.State old_state; + Gst.State new_state; + Gst.State pending; + + m.parse_state_changed (out old_state, out new_state, out pending); + + if (old_state == new_state) + return; + + emit(this, Facility.IMPORT, Level.VERBOSE, + "Import State in %s".printf(new_state.to_string())); + if (new_state == Gst.State.PAUSED) { + if (!import_done) { + if (video_pad != null) { + our_fetcher.clipfile.video_caps = video_pad.caps; + } + if (audio_pad != null) { + our_fetcher.clipfile.audio_caps = audio_pad.caps; + } + emit(this, Facility.IMPORT, Level.VERBOSE, + "Got clipfile info for: %s".printf(our_fetcher.clipfile.filename)); + } + } else if (new_state == Gst.State.NULL) { + if (import_state == ImportState.CANCELLED) { + GLib.FileUtils.remove(append_extension(queued_filenames[current_file_importing], + "mov")); + GLib.FileUtils.remove(append_extension(queued_filenames[current_file_importing], + "md5")); + } else { + if (import_done) + try { + do_import_complete(); + } catch (Error e) { + error_occurred(e.message); + } + } + } + } + + void on_eos() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_eos"); + import_done = true; + pipeline.set_state(Gst.State.NULL); + } +} + +public class LibraryImporter : Object { + protected Project project; + public ClipImporter importer; + + public signal void started(ClipImporter i, int num); + + public LibraryImporter(Project p) { + project = p; + + importer = new ClipImporter(); + importer.clip_complete.connect(on_clip_complete); + importer.error_occurred.connect(on_error_occurred); + importer.importing_started.connect(on_importer_started); + } + + void on_importer_started(ClipImporter i, int num) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_importer_started"); + started(i, num); + } + + void on_error_occurred(string error) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_error_occurred"); + emit(this, Facility.DEVELOPER_WARNINGS, Level.INFO, error); + project.error_occurred("Error importing", "An error occurred importing this file."); + } + + protected virtual void append_existing_clipfile(ClipFile f) { + + } + + protected virtual void on_clip_complete(ClipFile f) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_complete"); + ClipFile cf = project.find_clipfile(f.filename); + if (cf == null) { + project.add_clipfile(f); + } + } + + public void add_file(string filename) throws Error { + ClipFile cf = project.find_clipfile(filename); + + if (cf != null) + append_existing_clipfile(cf); + else + importer.add_filename(filename); + } + + public void start() throws Error { + importer.start(); + } +} + +public class TimelineImporter : LibraryImporter { + Track track; + int64 time_to_add; + bool both_tracks; + + public TimelineImporter(Track track, Project p, int64 time_to_add, bool both_tracks) { + base(p); + this.track = track; + this.time_to_add = time_to_add; + this.both_tracks = both_tracks; + } + + void add_to_both(ClipFile clip_file) { + if (both_tracks) { + Track other_track; + if (track is Model.VideoTrack) { + other_track = project.find_audio_track(); + } else { + other_track = project.find_video_track(); + } + if (other_track != null) { + project.add(other_track, clip_file, time_to_add); + } + } + } + + protected override void append_existing_clipfile(ClipFile f) { + project.undo_manager.start_transaction("Create Clip"); + project.add(track, f, time_to_add); + add_to_both(f); + project.undo_manager.end_transaction("Create Clip"); + } + + protected override void on_clip_complete(ClipFile f) { + project.undo_manager.start_transaction("Create Clip"); + base.on_clip_complete(f); + project.add(track, f, time_to_add); + add_to_both(f); + project.undo_manager.end_transaction("Create Clip"); + } +} +} diff --git a/src/marina/libmarina.a b/src/marina/libmarina.a new file mode 100644 index 0000000000000000000000000000000000000000..4f7ed1b2ab108c27364b84bf047c344779f4c42f GIT binary patch literal 2426248 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�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%0D-!1aMH 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%0D&?nA`U;&tK@@j>wkaUF?x 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

M|mi{rl|~wZ$*K-Su;E# zwHxAS-w+_BHZ3>wnc3OXWLHRgR;IsJ(Ckc497cHT32AdPO*3XOFN2waImRa`3^hN) z&Db19g=4(}80uIt5Np!y2wxJ~92M+qS!ynzFM8`>H|c8qH{b+MJ!6?=&%qf+r$3B9 zq2qKqWIX<;&}UeG+AsF8tgQY#wRTii1>OpG0>Q)tROCR2Sp!aGMWEB0Xk`yWkjxrF z9QG{ss=SPqS;6(VBW3>tL}v|OCncSpu0}~i1xm(C^GEQ8YSxBdpfb2E+p=O=8{Wlp z=p_)Fb?XEOGf-lMuE5|~cd{Z-l4W%&%(@L9WNT&BpRmx%;%C}g*%6@4x_vMoF%MZ; zcU1Cm3&K*?kE`%#b?%4XCHU#WUp=fGrxUn33-3EPS(=t_D?$D`5}3fk$;vM`RAFDAI^+?3wp`Owq;+B9P6U^VxAWvwt-PkHerW%U%s;vJd$=OaBCUXIH(3M=0l=fhhSs-vT#U27Cy7a3DRrWLBA}97PQB8(Wa<b zkXVN1LEAZ{+cc_BH|&Yz^rhr5dk8U1IkA)%ENuuZq;B+RB zMqO?VenJ0im**TJzh}ztSJAu2Ka*$}Qm3G#@NVcV4&V*|?jGFPb2_VgF(@SARzq1% z7p2*Xxj({5zmuaT3u%}#|2_dGHo*^dxpoBNu{Xuw68%m`LGb60Vph1{jd&Ks;WmiFgIGap z$a7A_Q=UWh6gveYTLDFX4)amb$p~YC=*QT_aiY&Lx(L1nN z)1aaW2z{kxZwDD&`+W=?!EYgioUZ-)f{oA_xb4z)pr+mmO@u#mO>@>84Z4+#VJrX-0C0&X{|e}@>qAg+y}B6`f>Nu;ErS7{r;1Tm z*aLQ23ZRJ%PlQwFKWZNbwrR9qA~fYcZr>*T9CtU^$bZ7VPrxkq39y>qWdBOQ9QOpW z_q6@2fMItL3_kxEJ6DXVz}?Ur;IBQ*h3*AtmH(Uv7P)Uy#LwHmmA=L9N{;)2-4D}9 zpd@DXC^{JM1!_C#-2}Pj0O*9a?!A3bvD5xi`dRK*&|rS6?MOezJ&khwv#sqKDj7-n ztW*)SE?n0SrUZa8anBlrinY!J>1Vkg66-Y{=(u;l1M;tPPLkRz_rCrBZ*VRUFvopj z2*4X19ah5b^T3_%l-gq0++`rCM-vBlAi((B<36H$ zR6kz^9p;zXjKw{kMTpL?(9fq+TI20^Kzg2ovsT3G&+t1UzsN0$X)irKu0-85-RWcq zFMp0a_j2-Y5aC8Q!_mUgA^06bpK_4ZlX6A;$76)QP&@{x@*K|T`Dz}^<(F4khk~BE z#bi9{m`d45EA(3|r4&yiO9e4~E+QbG(1`Ao=UkL-N&)F%_G-ErRh_aTXVcNLFMz@$ zOBq437h#r+EMxQRB4CRw-^9l~2n&&Oe#6Ho+n##?#>+mcFCJH1#m8w#I3nl$g$>>Z zjgj-elt;`ikqbnWoqvY`r(rOOxeB4G+m%-XjD7%LQPIodu+iu;geNCD0XoWx{tUBO zIC}9ohN|^__`9i80@laH3|N+3i&?DOI-;~^!tlCnxf74U#b{dAZOiD+2rN(bNAYi{ zLI#!vF+eYB19L*3z*xF%Cj|&Ip$+)k?Ij&Kazf`5dRar^(9hvD-F~P06@;e2Z@T?n zLxmxQxY+GghR8rkaY(V>Ym^<_Eu=6@cY9q!rBKVwsO?Ny91Yq`)^a86wENWKP!fD{ z02uB*bu9cpMoitWXY_RPx`O!FB22;EZ;%2NW`P6W?tY^#$Ya54AgudMQV=+Z1w+|l zofKpRS@1H(?tZiG;;`UwoKtsSuM2Dz{1s8H`$k<5V8JF1d#f%`EI7Re1-Iz}k?Ls7 zCEf4d07^N_F?e_X37Mo+2POgC^R3k7SoR5|aM}?7gFi$F%<4XEDV}woOLZSB^a`Zi z{W4Z?as?SL&rdNK?ABJ&$(Ngkp*8f9cFd2 z=cU1`rUBwC(fyS$-8~|B2?80zP@coK`6>^r_)ro=9mmdd{wXae3f;n^s3!`<-N)lW z+&yI3*$FUPGz}%W_rOk6?f~dj*|T9qZuvqK2k%Av4ZGz(!n0e2Chj?kyiqEj!iL>* zmBL&YD1kqHh=JW9>xt}$fkZPG)1rISeMGYXeG1&8{*Xpi zS(HGw`a3Z_KL(ic9BMJop<41BN;S`+Q1Tq|l;;qsoel996%PcGU;!ksrl`0U^Pjs8 zR$O$KdK$!$;Yb|dCUq1{JWx{RE`ZpI?o*R(g5~ZPh>=B`RXyx0P!f0hVL~kWsk#7o z0wtC1a?F)Q_j_Qqdmm9f;DMvuM`24v52`^3MuC!K?-Q3VwTgbGK7*SFN^0DTAj+a& zs9yLJD4FDzBGecCQavbSq}&rRLeZn@I2m`2yA0`9(PK&{{PW!@2uekdd$o1$RUGIE zuXdqZ1?G#M^lBHm{V-tBQ(o;7_sCL!O&&+}ZV=)u+OCchB3B@s77ZkK(I?9>baWWV zQPCH>fyU@~XxEO8#cYpx;1KAuC{B6W#o(alkZbT5%o~c+qMk#hQ}4O(-{ON5q8RwI z++{I<`RZAbtK&u)x+5N#<(>|riVHk2$K8cq#oatG>|O#Yio1JYf$JhL7x(bMLbuNl zfQ24d?EaIeTn~)7$061g_w>M0_r^m37JFcsyMa_iJ+R!}fCWWyFZClajkwzg(<$z) zZV<52tph8?B_2oB?q`@@iu-%uD7QaiM)3gkQ(-Xa{u^kYCIB3wAZ&mW z-K_{6#Y5Ew!F;%TA%tCAq3#oK68W==N2x7>D&^J;19+I?CP$!Tjyr|mL=T+r&LDWW z2iCcB2~P6Bg>D_e$%@Jhlq_;zreLRdG{Y7+&@}asj9YK@xu+}Ohl1GbwsMMpMKOdH zL*K<)v_!1XMxuK}3&aWCNpU@)HO!Uf9CXNYXbG}dCp!{oSxTFbQu>{g_P6Xm!*HX& z;2Jl0F=o!P=r1Ni)ggLlbgLI;Lkbi`pVuKLC$tzo7JXrYh$bvKWYo(c3qp%we$nkF z7yJYoh`vOG%mtZWMqk!`91HD+%|w5v(+TE+Br4B223YO84#vv1tPb6Rxu7Y0aM@j? z>7Q_rgMXCH4M5Yu*Jzq_?t1XGoU52+5%pp_*Ia!T{8%eV=mz13m~;u z4IA0B0r&docO39TxYC2YKFY-(2~)i?Vd^%>q}NZBX1vV(1Lm4u_bQUcxO5Awyw`mm zSna+AyuCJiVA8#x)bMEyVt|&N#S*odnG)i*RQ-Fw#2;~k*C+AUTwX5!FYg=DJ`aDF1DbpUXOd=3illL zeZm7*x?dr@^mIvjRtW@N^F{T@3X(gV{j=- zW4+Hl3iGp!-ur4ZI{l^hwSL>|eFO1v^v~h3z1Ojm8NK(03CNlPC1J>cJDqvXr)Zn! zkZJp;LCfmnE zKIc6zb@9+Kn8o^>ueq%Zy*m!jO6@h(p?{YE`hkWl zK-&%ImV#^>(C-LLKMm{{ln&_m78q|}*Lo0(2PayJk_#>Sq8OOGfMV?HlynyE+&i&+ zFX`fC4tNZgWUJdjZ9lqVNsc-h&!zONl3Ycjf-L%sdt77z{*h8(R2BUz9l^41M5yR< z7`xlUVds5j{T`2b&YSq%U9l7Mq=@|bl25c6)Sm!})6*d=RKXaI;UT}(WB-RC>c0Kgpdk4ENXvS^Z~u?+ zTyWy4XIOnFvIW_`3KrLQvL3!kg?MDscM1cmU9wGuwvPiiRfDf+YWg1aEwI=nZ)$4# zPS@1z05t;A@GIDwqd zKm?+JhiE7iav`sQ6&k`WLp|oa0VjM!e5+y2#REj2czSF1xEm5@NRfl&VU6M5j%t7po$x% zj}^KWhC8UzaDT%{K*K%mExQbi4On<3G29MkiVax!S3_UnkifYX+S1#=)K}1|Ma{ zBJG2x=l3S}IUycS4W41fS^={geDqqN36vCsE&v^aYjs^==)5?fnHnk%eFHiM&(`{i zg(C3M!E$-U8MaXLKu^OrjZGnLfK3=!1 z4)qTMs?&9&LSw+l;1e{Iw1W0%D&y4840}UHc9q2@D-hNMg|IKtFWE z0u2U2Oaq5j%aLozx&Q+1fU_vc=q(8MR&)wn5FYv-yU}|L%dJV$oxf3pZioc?_l?75x#y8z!XJpdU;}FT)5h|II`!#6(7TNSkdEQ9x6I|1ZBb99y`i?W+(b6B2X~;H<)fHdIN%Q zCxkPIJO0w`f@5%XKExD#5WM1aa2Rp)grEb_PcV=j{U%NvkBtTn%RULqg27{Vp`U%> zD9ai)tPEX)eL@iSuwm2jEH-h-JZ@GpK66!c$O-kp41=)j0bsDAYChWa{}2T32~<=q zDDgT~Oz{k<;N(-Rile@Qe$c1jL;xubObXQ~^q)@1E?K2QeK7e{%+O$yDmeYrg;vGU z8vI&?{so;@)M{``Ak-alshFw3&jX3TqjfjbF2_Q#ANG)E&?kR;)s}RQOj|U?*cP}p*x|c5fm%xG?QhU{v9r}Y%7wgf{LlKnFn66})gL5XA)^%{I7D50_9EQUtA zHL4vtC7%D(P#R_go+a-SvhMr{Yd0da! zCGQ7AwWRrcUHcIX>dR4p6KB8(`u`H6)ToNYY^YbvsB(-6y9^VR07BBQ&^2 ziGnMqYH@51h=MDpY4E{7s2R>$nbIsh90>g#>aRRnvjjUMhm|um_;?_ejg+l&wigxc zk|w04^K!uRVJCvD;0;i~sEWflu&jE9Z;8S==s8{Be8ZnQ4$>o&e?x=eTMrW`Kg4^2 z!?$ZFBCEmSuW8{FgyzF1hX0W_U;-tDp={XG@RrL3Dh};Lz#6`b8!8mlW(3ONAC7}) zvDFyjZpQFWMo3+?)tRPG%aUm2=;%e`G4Pq_MwNSTofRu;dbQt)ss}LTC-})-MpMb!3{qS2S0E?uORn^<^ z$nK|toT@{$7$=3MgVL&z8k!nf1E;MTrJ+>lWJIy5(Hg1^oe#8CW3}MsgigaeQI*ut z{LotkfW{pLu?I@(LcamIRpXg$2TB%(PMZK|f)@Xx&<&ugs%E;>EeTx$R;ngy<=4j^ z;dqB@6T;D7eeCIRD43)Ra#?UW5|OIOx&UW^^|7TaNa=zc7TgCBR87|fU0Co+4;0Lh z0y~QZOl_);mI4Q-h4ry_pyH}p-36zG^|4!EFjX^k0Zt3+V+X-zsyy4qX<>bA8(YlL zEx=@b>=R5qRr7QKa)M>C!SJ1`V|Bs7EU?Jjak?PNf}g^8s*cwM#Vja>Lsix3f}SiW zfVEVeC~mD?@&Er z_>mYsILtwO8!?>r7Wz5lGU8DB2~7_%%Nj9C8_lTL6_Ch?F&w}NGmLpejV^$?lep-E6ry_A8zf{kEOt`$Fbl>O zIu&+NT}5{wAroMe)zz91Y=pc{W)A6scDZqAR@qxXX;nor3WA*wxWiQyv~3C2RU1vP zPGq6ctqg#i^Yff-7%tD@Xn9Uo`7NtQW#eXTY!Pui-4nPHvFq?Gr%s8QHfLao!_>D- zNSHy)Wv|}1vezH7af2z*`%0L)`w%3Un5=lp3O?L%B><05LlFzPIsPDKpTraooaA;w zR+O0Pfm7W8Mo&!hz?2(@QW8gcV6A&@AAm=B;2igL3;goK9A#!Rh-4hk{1Duw9BJ3|QxCB+fe?T5tiNQy* z*>mWUI9bgVY?eC`fj@DIxBrTOd>@P_Q8kyn-bb%FiK>(EM-%+BwhI5b!c}dImE-=4 zB7E4x8FpQS*TgS8u)qx?z9xR@frai#NNN(lQn;p#zQyi6Fq*^`@9-t&{tbCq;t`dU z+ERBL1@)-HO=>j8hBpoCF*Q}da`z^V`?$&iM(%(Afr5I%+jy>aU%+gZc+vw$xl^(M zKBc&Nfv>p*w7w>~z4^aen7g*M!#E8gXBXevX zpfLC%jHNh{JcrbZ z)qU7ji65zz(ksXPH73)Uc4>9CtbubhhlLAzyNTN#9!Pfd%fX2!4rW>LhLF?i3QRTrC!`*v%dX z@El_&mYpQ7+5p6qyF=^`)f?>iS=qG{$L-%-9=m2;DLqiVg%#FMs)!uD7XkxBO2$bk2&JM zu*8ccR?S3-9)T7`UdXy^eOV|7trzx%kFlff8Z*ir@*xtn92eS@<>751sEzZ zAn+{wOGZ4Hs=1;LqvXah?I?RCB0}QYvsf?~jg&o)7J1#pC`=kCUbto$gM# z`bm!%PR8z1g<{58?l0-icdH=+VxssLRet^RMDj1lwlHyhFG$q2sFYV#j&NeR4|DF+AQ}Qj`#;pqdD#o;3)Bi7ZY%i;!q$=+%yosgV&WKpG@3zF^AYr zJGeJ(7Ng1Dea0-@ALRku?15P>v%thp(?guj0DQj}95BRoC??T(6^ED^#>qpX@kr35 z)sxp&J>kH5Pd#GoT?5+M!|qKzfg?X~F8P$WVEQx}LPh&y7nE#!O&`(}~g5X7%w+a(aZcTGLtSz^P1U7rzN^q$N z=qW9%<9KD@XHr{W+0*cl*!Eivk|l%u6|-C7_suML0H&$z9h_O;{FDWcz#)}Au@4Gb z0+>C5&p}wRM9VxpYoUKFH;QS0yuOwAx8gN&+*#5t@{PJ$#?5kbOHli*(vk}IKIx2w zR>JZGhZxrb*;AtRB%saBg~U~E_i-Hg!CVyobtQ|Rg()gK1_~4ZxQYeYFa_1)Oi-Ax z)om<^f=<=rjS(nu)k7>93l~&9o+p+*>RFa7LIhPkZUpv3x#Ge-_XM<8J=Rj~Rf;=m zxqs=;lHGKLr1~dI4h3)6zh-LHU5s%65J%)!5Ymbuh~WJ=^Mt&P=|-LtM5}yBS)?sW zhNC3UVG@z&Fh|I9IJseG9A1Fkez271`~ZfT=bR@yPs;nOO za3;D~or?;zSf!q4i|r7z6|GF7MHFw*Vu|@YqK_R-fjuWWJ_Z%C^;Hrqql5C<`Z9FH zkr}8DL|4L~?dUR4??i9HtPlhx41oD62i6*qU-@`K@yRI0R-Tag6;N~+r)9j6W~e(D z&v_1GRi4900G44?dCu|jyB@#u)grd1twtCAAt5?M#D5d0SJCH@_6MRrhiTvv50v0UPeV`)Mwh~cLeUmXp`D_4 z!`8E+S0LGJA^PInk)Hwg)KnV4D4!scPaZ-Mk zJaZb(bFP!;yX5z;@ViX?6$%XQcOqeqjNBVHsvu; zErh~UV?fSl*Pw*2N^s9ncWsoe+|L@cl+nFWuIceIxkl9}s2VygyF{sl_Eke0orf_IerfRsT8L&s>ytFB4Hy6EFOG`_ymmd@!t4-uF{0G5 zXgJ_qI2a%{7;rPZ0?!OK1Cj;u97B24A*Wh_mt^vQ#Qsgn--swm>oxrR34^=_OoIf| z8-fWRsAUZjY;Op*GQxuKjR-NG4S2-C=)`}4HzUD851MAT>%V`1}~kz$Mqy@pAy%T^+@?8}aiN>c)WALFZw7RB$=z zzzfAB08;=x09)~Ch8E99A zW`U<7AKraKCrjBv!D4I-_v zo3K;}G)2^{EFp%mW69Igk)}qLl(Hy(FPaAKizp(-R=@Q)e$K%FHg-9JTVQ=e*67!ytoUyc%LB_J zik+^6g&v7UygHy&yF9|@^VqQ>hKA>)JLWmuh=|{UU+Qe7*p`UCb@V&r_~Xwe%!QHXcE4;y z!=R0U5pc?D0L*qIt>E}&_<0}w9wrSuy+WlVB)~pQWcE@%!__c126kS~r@J9QE`dR+ z8IEH2SMW0o%@2pZG#fJ{!p%on`HA(Xvmv{k4>-97-K)@0vo*sJwi;1bA#BZX$ksai zXvStZWbBuKHDfazA7hKr4~(VI+ln7f#wI(8)HqQ3pU{UFw=`3eg(-ZMr#FvIc9?LL z0oF|3Elh&3IgI=@jv|VO@iP%kV(<{nSdB1t7SV8>hK5A*Bf!ZmAR-S9HDfiJF@|)_ zSdB3DQ?%5K)d*vJl}a;K<7e!IMqz9bdc*UUf($iM&nP5mZLVc~j*fpzlQmMv>IKp( zL`~=Ab0Iv5@RPlvw(|u(nXp*p1p=Q(Sj>B+z*hnuc3mH||AD~C_c8p=G)p5jOBVRn zER7VFZbL84(nw+HXMi z4H3gdtS6#Oi*=reWjTqOgYo}uhyoTNYDHQ!!$mY}&{B(LxQOO%z*;oJ{i2zn$=asL zI(Gudy4@BBB}vJ!W&IW%?@E((yQClgLYXG(xG=rzAOw`;Iy_vDhS~^kw}q@NX|is& zDXT$fsmZ$CrnDvl)@0po`=n)Qvi?l62C7$GkhRfPB&Qr9@N9ING|otBqmXn9$_9;t zRM3#K`D26+200%57U1NYpk@R*Y7#eU68EG@+$bb|ftH%YjY48KIJG8mqo2gDZUgS1 z?Vz_6|2U>8By~yr@IB=_Fp$ilpnyr{GL-o#Tus!*ON_{?q^GqLhz zfhLrG?ZeEi;1AhzPdv@*H-vW#NyA;?xPHv|ycA?N@AO84^KGSmfSGN841B(ba=`07 zrG{dhFb|blT<43ps)k9dJYPfwv0wr?U&N$EbiOB|2}|1b(^=RpjlhiQQ-pRomMtWJ zY*ix{9Rad(V1Zg_=i5v?P9*6*dX}eIIbVcy9pDxMn;}JONL?Li35I2Ke#Q|9>ki{hC_|@nbo^04$Ec-1#Lzy z5gdJ+CT+21lP`N|vK9-QAETvabFr|g;1-(A#U7hNRyS>Cr6eon{)cKGP5ZRrzuHL(o$5uwG;`4zT87 zy?=3kd81HurMM202<|MCn)mT@8v1;YrbzEB^KF>S&hjQe{+;E=04Fzrls651fr~py zeBOpaz2dsKlYhl^aVJLSm(fqCLv!C6VwI+jxd7tLy(2*0>5k&r9m%6ZeuR$wjx<6$ zT~=H@Xwz;CdZ~%9Eh9nleT;wRG$XXry~QYo)nLJ{6>lxg7=MpzetZzLN*!e%h7EpDL}-j+073x%#xXsPL1D0CeK zSPO5V5#B54G6P7p@S-BT6=*hY4{?d``iP94;i&w0ql3{}3vY-PUKt9t@P_(?H&lez z1D>RXH`E9(iRM~(Ckv5DG|@z!EJU7ax~P-e2=9C?yw54TJm;t(*!mpW2NJB)3x1W8 zGI?X2h)wTreI+Y=P4Cz8JmC#8z->`O<32=1l#c6JC{4LCUm$Q!`7CgMY>Kr}+>HkJyL$7tJFn-=>q!ssmY*J3|L zm|X@~GklE4@TgP4-X@Yi->C+*)fWIB_X-L|ug25p>+ma?g~YA^m80)uWem{hhwwD< z3H-VRC`bPW4+zBXgY`Z5>Cd(wvn){uNl+T2cSsX!OcFo}KQquq3;HjbBN6NJMo<#8 z3n801-|%Eu0hz zwM}*t;S5GgEu3y5oFrf^oNk_Q#%#mDe1&K@5c_c@Sn&~l{P<37hi~Ox_=Lp@&EizD zh_m2B$mq8ST56i3$Yen&A{)AXl4f+8Fv^cv(fhK~WMB55fGZ9|$H33>*|rD5a&i%P zd^b((G|hNJn(=AE_&~JOj87BBM+4T3PxBZTLQmF&F4BblRR|r}1%!@u6p4HVKPRK> zx}%Lo#tNa=piJ+xj+K4ZM*(X>|0kbq-vpfGUh!%GTB>6;p%11B9V>)>h?bhru|nuK zfHk3G{e;ffgf?hG-w{Ha5ZP2e>??!Foc=J$m}M=VX$b8ngw8;jPDlGW+-9mL`~Xd< zpP;{!@E8qWU|H5Pgb#t(z50&{AB>p}Fz>n+!So09jR?%VDgijT4Lpsh1*0+*jm@80 z2~5d7D7}oOVxavr`&pRUv_bU~_D@28&3->&e+6L8zNQa|%Mm*k;^z~rYv~XP!?#F1UiFZY~s>BfQ`fY2HCS)548G30syzPUCWPYUJar_KKzuH-# z;8OtM2e6)3{@9i2ODU|rq8nzvz`I>Ji_IY{2KXnbKL>Df5hT(X zh_#r)T1;!wVhW3xu18BPrm%?VCxEq%!+tRh(PG+xvB1U=m_AgVEsG7Z;J}C8LB~(i zY~;yCNC*a{*~pV^sY7XCl0jDGGL7fQP$f5kqKDFC=IM=*rZky(vN3WKT52-$WMkxB zz?#fFZ(}6+Cb~2OPsPbW$YpdcGst(*Y}_7Hj9-AY!+06A3`Xf$;o9583N1&tS~eEY zt9so{j#fc~r=aodxkfp!%DVenlxePB4Ny4`0@hrqgQ%Q81D5du2a(Ak&~q{?+p=z) zV|4MVUY5sDsQvdk~vMfIyux9fAkoGQsQC3I$`0l;|76=d^Vjx&oiWV>= zL8vA*;6_3WNq{VbTT2>3?vfkH27-cOKtx506)jo}v7*HmDphKci&CVDEw<58K~?|Ek4+a{pj|NBP|bLMj9%*>f{-t%7fZ`QSy6f`*rJtHduaI$+3I(a|D zQdhuW|CMMT_V{9YaJBm_$mzUqHnLkRWaCBlP0H?p>~WN<@SH%P2T!#57p#M9CVW-h z*NJ@65GYv%2K8o$-U%daw)IXDxw#}B0+BlNZJlzQS)@@O$S7aC1O58$=`BxIc;}-x zxk?C%JY6u%8#@$(@P*-J@awQW+y%ui{?HnLFC?u#2JK2dt_eXtuE{n!AYVwDWf7lz zvG6BhfEEECx$|0dytX$#L;EoCYJ|x5NN?(X9k?#vExoBPc(yCnE--ZFd|_Uz>xNcx zzVL;lUO$P$%q2Ot?wGNckAP4z9RMAz)W0? zW*g}HIpb-l&8h_L7KrM)IPDUDIjmM=RH_ZEw&Y*pXXLk_JrX(ylkpA_LtdM>w zIn7~7z#M@bbM{T3!6Du7?QqCx6uvaC2ZE?pe-)#vptpJkmryeeLeheNOW z=D{Hy-cO@hAKMpV>eQ>^lzHy(syGDWaqjS{IHQidYC1AD=l|HQk?kaN+FV_f6 zF2uDt>e>>zmV8aTy2f$iZLB(kqp<*ECs(`Gx1WP{CDYmTm0#r1W9F+q&Z>RDGdSQY zOeMap(J6lfKJGdECA6~|Gs zDG&!zszu4X9GD+@ojC%PD^M9dnoY2LQ2k-3Pv3xA<|n94qTCm#R8y{#$U$_NcT`VU z^t8`QUq@kA@F4gzer);kw2bN>K+|pA)AC%|yTF6Hp!#zdrQ`avChH*(HMyRa!2cJL znp{sy@MADPbc~<2k~KI2lLX}kbn4cXN=6BaTVE>LyY=OE&?h50MMrc!M|7BXEL`(` zW_an|5{z0S8eLmxx%io^aIK)}kbY)xg?b)%@C3Yh(>CifU6uUZEt5WzRp~8As!5;8 zs`M#vb@4N6Ra%CQcW}prPSr)#l}g426m?Pc#bJKB_2mMO)F&?XYK2psj9u#DcdiHa ziQ%PtQP>YRqS5oVi=U{Apalc4ev@s+C+bp)?b0XW((|?npNLDZ*(QAAzA4g8P2dG7 zM0wWLFyV2-%kGb${vS3fvZDOBm~c4~nb+JNH&$TPAIr3^_xP$}%!i7Cc`zhrwiTqu z)w&AXy2r)3A~e$gJucRTfop&sw{|8=(B$vXqX*UnF+6B*fLMAf7(B2pis1qKC6H1N z!IDL=R~M`m!Wg+5gW|h0hS!ZgwS>+=PzP$G*wF)NrFLu-I|9Jfj*X@rn7*UXXbs9` zhydD$nYpM^*-nGGSsJ0UWMG)Vk_Lw$x?Y1G`;Wl zoIH}-4{cQU!_n+|6iVEuIbnqJSz(m5HD8nEYN>EsJ08nEZgrBh6t zu}%^qnI;bRUWtFbEnYcKpozQEJf3^e@QiI{i`>9?4m35hMQ(N+1g<;kPI9@QZ#(IP z=ACLY@6I7m+Jds>Z{56`S&Y;tH~|yOZCAPF*#37ejg*{t<{qN znp-g%r?6=FNQo8MT8ZrKps9&Pa`Wvm;xcM;1b-HIFbfu~L_%+ss;t?0!h9 znY9wxqrlb7T6bjmyeC%JDw_HIpIrpxk|?kD$EDVe=Mp(_9Q&!=-6e9uXYOq-k&`{B z#op!;InmQDE-_E?#!i5u5pwN4why!Q>Jf6;xPKp}iN=0_)_)m;`4-=YcK}S~m%5Z+ z>Qa8Gsa&(SpT?P&w~@Uc;Uvj>kJroiuDuR7H=(Yn%!=_nk`~v37HmSe+Gw1d?BAn9 zy~>W^Ju=iYA*nIENAAk-oJJkI#~kV#IDi>rv@`F0-g5Mn@@vq>WPvyvr9UX6cYu;= zQAWQ4Ec5U9=hx6T`aM**i9z3)r%~SzV)`LqqrI>%vj_h9FG!jFQMm$ZVCrUQZ9~bt z0+dOhWL|~J98^Y+L4|)ZX|8OMpiEwC1sTjG^+-0OnHOLOh)Hqk_ zvKatTSAj}dHfKUo<6J4rW)*OabES2#v78j>t=q1<;wGtB4fCg_75NJX=W{KiIz({YiyILX<9Dt(+FCYW(SxkII8#RtxVkvg z96d?L<2n+&P2{BZx--kllRi_EcO!ITL5hV{benf|}8 z$_9(FnYjAU$$Ylc+vP@687NdX^bA6YI+cy*kKmYf?Zl90$VU9^J1{3oIvl~*?0lWX zkg>b0&e2FZAN#sZNi``)Y>GZJ>lu5-rUX?+{C`_bPNB)ey>||VoiQgAf`6k0iUc&QTEjS;q4+bzIH^Xl|Qj8JCpHxDIBfH5Kcq2WDPhQi*+SrfBC!)`YF9(Ld)Lj`E3l!Za=8Fx3A!X*@Q60=&4(9jys)hF`E)@Kr+B$3=)e8l@^l?-! zeT*GZWkvp|9I(xU+)>x5`%%}a`%&{CJ+|`y*zOg!s|X;%&2lO2>Z@=@aEDxKlb2?G z+JpBRuGVAl&*Tc@)tWDl$aOZoxZYwiWOuyTz5s`LITXIC{y#YSUvl)nX6l#mJYcGk z40ucR%jmytGODkDp`W_+%amEJQReMQta2}52ZPU_csW&8XXBSZFdQRmt?A;C>Cyz6 zo(Op4n%#rI<)Ud{xk&qWpuqsf`Omao4*mFP0ccN80Z|ttCp+ypMl^OF+SL z4!ndycyWPLTt&QdMP=GTTY>Av+83gEvGx(*n)|z=W$(Wk#yrE(lqmP-P~#YT>5=-b1|F$T0<}N` zwS$4`6~$NEhk3t)eDUt|c^RrT6FiUbQ8YUoaJ{0Jn~@txxM=fKs_otESKU`P}U$$$~+xavwJ;{=LZUjTa; zx4x0UBlU^n1?u=AI{y8C_k+hioVQ$6Z!N$+Id2&%*Drlh&b8Vdz2#c%3$`gfIYgVQ zvCnnN;d7mG_^k7p&;O6@E`woutv1TlMU<`k zE^EN>$3WRLzLaHc=S0?GX1Fi845{3UnUAAVOS#{Q97KnCzXI;v6%`fBwa57uIaVOO4lLibT-PVcDho@ z$VGAM%WS7_W(R#Tq7yY;W4pk`;oklO;o@?=8bB8}Ou<91Xt=%6a&x)3xd}9NbGf+r zXX5|tB#pVZ{U6}EIebm74s;oZFdT!&ze2oprY+Yncw#NHmrEFCK~lr8T*6QbT*I*3 z3PW-TM=g~9w9}Q!=Y8@~Gz_ZmH|_NOp`*SPXfkjzuDip@k>`5j5cyVjp2hteqN(e_ zj0SV$L?0OMb?50$-%K#}f^i&0x3-^j=k>TWFh-0FK=5DUHewo#gM+`aHGeIdOCgt@ zOwUDYlw6xyN@5;~as@CZni?OaM%m-^mZJeQ%CL>sVdHZ_7`Dy;-o-j>9J06a@lYOG zHqW<)ZLtj7KS9%Bc|z>-Q$Ss`3GAwD3)L~gH!!ilD4$ES5 zSc0u+G7oz6Z1LCPXcNTJw^Em!EpC?Z?FP|wW0blvyNkHN$D_Srb%QR%O+)OnJf5Nj zmK$Ml;~LP^jfLXIRN%ojH11@`;6c87@qz7Hxw&8e-|2 zsY{Y*XHU+-J3us(=s9(X4<^B-DFEJqc%upKY@CTpR1kc4q2+k`kVAs@8h z4D|LB+k`kZq0TlTPE4qWq?!;XCfshD5a%}GVKpJvF9Ta04-@(sUUonGN4Q*sM&HF8 z(d|S(G2soGumZjH0YjtEPfcjGP3R{kd~Tc2PfX~BgStkcpWB27)CB(OCDz%ft6;() zU7%>fs2?M=Xt;ZkWyTRTIk8JZ#7fO>O%UJlFP*>DJwA1t1NamKaQw+E z?ydovr2*=WM&65kUIwSB2nSY3zI2Nfpo=9yE2&Kaae4BQwKlNVgA@nh_wim~%Yn-JqC zCv_UJk3e%rENZ$FUp{~{2sl>DTfYlcPkH47PE>WI1c3!>{cV=`Q*uvZE}P2$Jmuv8 ztOKsAx=y<1;S2YtaHOt>GqG@A?M9!VHt>9fJmOfC^G9wD)b#HFJ! zb!$cPH4@j5cop*27xvTtD{z?SpA628IygHtyKnD|koNF-8Oj-DxW)|8&P%Ou_K@uU zIcR!r)BtkGfbM=Y(=PtIp1lg zq-zgJ|Dll7==6~EPXn&e?qQ{WS}AV-qdeYDS1K8^QQZ1U+v#iSsE@ifqWrtPJ~Gy{ z)AwjQeOo%{lL#Nx2*0HferyN=WB9y`?yL%r=WR54XqgpZLn7?|kriP>B76mLiLfCN z&H%3W9A1`?&LPgX%zS&h-i(Mh0}mcXG`C{tGzkrJg|S0yNQi$0Ne!_fA>IjGLu^TURO>`%yH+s_&zA`uIp%JAKp@C`Wp=*GEP)7;b%oW<}cfec+M$f-(JZ z4+*+P@;;yM?_IfV_%X!Nlff8y2Fr!-&92-wYyiCt#Lvic#|2R@#Jn%?;H!vfq?<|V<4ey_!HtW}*WkA$3hSXMs;ZlS^*QF5>_UYiJ zH_>|8Vq7g@e-K37h+QLo^Jf@zH<2Rv>r|<0(bg99hOc6E1!0(X;Kjg>dc6$z=DD~M z4Z+4cte_v2pkGmF1^uW5eG+gDa=9pP0v=oii+00Q&EBILIm>T2-669;ZFoU>LgP6b|4);zQf*`)H-$7##_f_E>9KwrMSb=x<>yy!~f>?SAb;QY5l5PC(?q~YFAXzxq< zTn8OnTZ@N4(B$E}EazSl=el9%kx)!g?f}LBQ`hiObm*A{Tu1w_@|4FC;K4jt@`ddx ze!LTc=@quCFNv!gAgR;lC2@5-aCP-1Yjm?}aE^sC9wuqnR97k)RVX^Ts_#fUeV=#G z7hD1p?u0H4-2vI>1WI7r8as6VkR8#DAddX$2&}koiC0eoH$(Z5hH@E0In4XtSOjq! z9uY$DHq_zf9R%;W+X~<|3E(-<68L+05aidN2b6;U9mE7UuSll=4{nA9323NpZqtyp z*&*8|A)5wC4cRscStW1{nf@3nhUWwf83IEVwbPYKMjRL#GSzoSJADs#&?gh(R&{wT zT^{b8)DxE9<`viIa#THb3ut)VO1L#XMwooh`vcJQw(@P_<{9Dx;1L>gU5G6ME_WMm z^YU)vRlu*4S3@>*;oU~x%`^0qgim&vfMc+CsxJM%>cXE2$b+z+|NdIO8gQMQpKt8K z4^4Te>t*Rpf_akpflgx~K3E4s<52K`f#*&d%ku^>sQq3V!?^>TNBl>L^JWlm9?Z7@ z_vCnA#U{wx*Zci@RMUQFdl?+!x#GIKqkT>iv^S3Z&$Q;w)pm#^HQWFl}qajY=d zSMUUaG8l{ra&x`!<>)Hik3^X$M{;=wJQr;y$*pzip%7@Eyx?NK1uo;X^$~R0$=J$q z>J|0KFpgFr1^qU3k#wQCvl_7HLF+%DKlvzS03G=nyW9d?KT3HBQpZuOk5Udq3$|Jd ziIK1Lf%F3TpuscH;<+wnGzj4?`cX;@zWGtg`CYt7nodSCD4yiE*~g7tyi{`pezr3oLh;T>uK-c==)WSFz6ylv9=uN3Y{hF;-bd9^p? z1JqLv@}EEBANjlPr&nTdI!Q-(iyXA;T1n|_QZQ4n1>Qzeag&*zFnHl6Ttr8IZ>_Qd z7$pIG4>S#6lmzgi8?69FNdQL@mjEh%GH?x`^6daV=nCM^BrNkF8uVaL9!H-H;KLfg z>FNB@Pz~TZ4IqCVR0H^UXLkUf=*$5A1d7s|Afmy0t256@H-X4M4aYB~StkQRW;iyO zlmIDFlG^)M+WRO`vG=dE_XVP2 zuW(NRReOaCdv!TK+=-L5Pqj5+-|NIQznr)n$KLP6<5&rCdHV2!PRy7mfM-|Y0{W3o zoXEbL^QI|-3Y_^e#j>x{UI8s9|l?T_N4SUX2wmJ zSt!>+R*#B)NluNO=MqHZpcA_|;OC7UZs&ou3`+EYp2W_4;i+d0B9cnm@=@^EwC}pk z^b1!ZcVof#?)G}et;Val^612FMg$iqyu0O*k$*v#9@Ta;u2)ZxBie3$9S4UmT<6@) zoq`_8b~AXm^*9L1{=c>vg*FiYnO zSuP%mwR1qqm4{yhZ6vBraR+ce&}*1Q{B)4-jZP`QMSa{8_{TdvI2*LTz=qK;08eiM zmicGYo~3l~|ghvRpmIHtzUTW{6F(!27|O(~>DRAG_#9hOgIT+fVtPpS`rHS$UH;Co+w zwD~v0*@;2#J6L#{R_ zAn3ib1uC6c-3`OtBLQx95o-YsaS?@IHCVP*y+>6^og!VOWC-#Ne+1PHJq=>7I{oGTE(Dj zMk}4L3z=5x#QW+*3Y_pv=C2of$4IuatK2(r>IB`FK8(6#>lk)76(r5pG0fK0L?v6t zQ0>!1Wla`t8&F-7g=-%}K9eoBX6i|~UHT~`HB(O+TyXXB=V^m$@pl`5^A{I={}%ij z;K3A*&KgZ8ucT8B$mw|?tN)!fohm@kbc&8*I)$lB(y50$MgI(yErHPMP^OtNSSExg z_3Uz-K-^(vMv_wDWN-t-AAAUUfh2@$zYMv#;r4u_JkNy#9kf|N#+ zl0^!CnZ`HYq~wC)xz>ZV(D!ygc+I|SDq>Q2LaH&#!5pEuF0 z8#t@l;M{2x-|NP7_?9vPv{Z{YdNeR|rSo5kfc#(uW$aD=5YWyy>ar2bk_L`&#RY^t zlmCH{!s(A3)e+~kl{i<1C$FrvVjag=p9D!`9mkl&%(r44$5O&|o0Z7X3>`r+I z@4?1`tfLgYdq!~{?L zPK(GRgb=Uv#J`TZ{3GJrw+Uy6C;m7&eE&%}d~s1Y-|@tEMqP+}XHSTOJn``sk*|^p zaeya2*&^}-l|l@7;>TG;-o_N-C7$>nT0~y*5@LT(e62-XZ4u)<@yk$;?+b^eCU)?; zv9uZJiGPf28so5e=SbMGp7`CUOB>$d6Jl>q{6UJ-g7`OZXc9IbA`x~!Py88j=(PBw z${ArN5PW1&q=$Oq2cs@3_&BBzFZaZ!qArfB3h9f%ae~2T<3&2&6JJhgnxef@qnalS zx}Y{m%?=VDc@qs6dE%dB6R}Z@f5mc(uXTw`j3@q8%82V^$N!7}NO0{)xSSU5Z~H>T z9{r)nK+$!XC%!-G?V_G#vHN)9Q*1V^m2uT*NINlB?390G1SQ<^57Q-HEEIU>3iMyR4l<`MT>>wWx18ho=Klv&HL zh{oUh06g}3XZ;>4Li|q@DVW#`vOymY0+@i1^>mYq$&Z@hi1HNN(FGz6#t@K95zpR% zI4F2_LbuQRWzQbaD!;OYJoY9vHq<9o))ZGYmXs!yS5?j#epO!tPewe?!J#IezWs)n#BQBo8xYACg^1{Y^uV`*clDaFR9VuqB%O(C;h zUE0u4RBl^QS5#kAZHg6F)iyNNTa6kj%WI0NOqLG2iIh?VGXP^+T2)$IT0>JX<=}c{ zEvkqD!eLb*Ww(Y9(CW&X%624lUCaQe08*#1IIN~9rMRe$aZ_YYqfLMWJ6O2PV}b!#pZdvLafTsVwq5^paB~ij`+r2nk-^y${g0hERU+Bi|Trb|U|b z4?Fo1ytM!9z{JPE`)W>hc3F0!zcI)E9R`!EcLruJT@K!w;zZ>wHF??Dbn2yn{xG=P zihapmpnn>80N9q|7B+oqU?Py$iYeEw4%;r>3Fe=Qx2Y`r^ROf zvA+)=dhr_1mNjQL!^lmi_WOqQf#`$1+08#|*bVAQK>kON+x=vGxquAR$vCt?z1VbW zt8Z8jafo_`P|v;nDSony;;2*nd1Q(NAK={G!#9cn{k;CTv*54(MO%5159%5iN%OvVn%Z9ZkblG&C~73@@3)T$e#GGbh%dOiOS`6cDMv8B+#M$47$qK2DC7F&#m&B^f%?uY4(c8?8|FzlB}@tc7h%R|N4$e4itDWlGJg;z{#EQM&>rT(tQo`uI8&9>M8(%N>?=`dIseb;A zpuS#t66+I$UhKz&*jdR2FZSbb?2!6P{Wu)YRdP69?RUUvNDK+yY-IRX$&A?q&emAA z-aD7Ax5l#dpXM@~UW%2eAoQ1nzJ2ZicK41ncvKkg#kMR%i-+cN_}5=_(zr1(X=%<< zqi3Q~pJ+^PSq|nSb7{aSQFo8DIwk7vRdsh?#Qsm;$o}uWsAXBj?LZITc))nV=ikVv zgT5&qa|7hROHh6tPb>dkA`6++U$g358U9j2V|GduUlhgz@to}cDrxaw=5GY=_k!;! zX)&5_!5r4aIJniA%t2G^)H+{cuQzTrN;OhQ94z_6bCw=_*m%K*)y`_B2QVQ%D3#d+{xNC%v$7T(pn$&LzicV^zbI=l8V(q7@Iee{%&A;D=}-j( zHVoiMzEOGrhb*Aa4q*6RDP@$N8z4jUvc=mgyx$A&&jXk~TT7d_?^w6?g-2Sq%O4t@ z8Q>3qb9ZU>_8r?NfbgFIoZW9o+&4(vPnKlo>@+Ib#iIlKN5I`*Y%Xsy0w4AD&j9hE zsuttJ#n!BwkO}eIdeGV18WNuaa!&Rt`@`0fzHTds%ldFMAFgWV9KtgH!tKWVlc2vP z%iESFrp4KKS+MRbIdIVbN)8Bj4?M{reI}FjzJanX6t`p^Mg}`mm3W&Mzuez@yVH(Q=XfZd^_Y<#kF7qk&}at-YsY9{VI;3e6Kva z70AJhTXLd08F$^-oKrq=5;Ns6re-IjRi@_Qi|F$+6+Cd=gAf!p`$vO$wzAn@2hzVU z!ou6hxbH?;fB(4HH$>OiP31XQOpRhjZtX?fiFl0D!uduKo4o~a~vWj_wV-8VM-FJn$W+OI5!E6;0{Wtb!fhlBLWMU?p6jm_9e3gK%Z zd|lbhjaYyGM&o)cC^+0hc3G?*VE-%Y(NbBDP~Yyq+*ruP@0YR6!Z+q-{~O2yvUGhs zmu5T=E6MTk+-Cnwplf3pz&Gb&lcDPdHgZ1WWM3x1N+kCmeP$rAfSmFr_bos8$?5VN zA2sH;AOcqyk1a-KYr~uq#!Se{b|j@QlpN^8S^Mj1&RPz}i9QmId#gEcr~62(R@vOU z`wI6|6}dm@%SarpVlJ)gdlCoVrB@qG9KTPixCTx)7VsE|?1sQoeIzMgua<1y(}#}l zs3vDmA2!)u&GdY^k1Ph&RQZ=a2e7(x-|=jJB*Mxh@N z^=tbia!T%}4(=KoA2I&u#p)@OPLIHMUrY=BT|sNKex_pE!KCrZ{kd-FK9CLFx{GPx zM-|OR6GQOJi|NPP71>LX9;))jVON!d^Qk1#>Pmmwb~*HZ*-!jmCX3Zqa>%?LDHEoa zl^1gizN)}J{v^ZYON$YZBEVRAi!V(UTZldvqhYM|?>&eSD`!`q#kA1FyK1THYzzlw zb#3#FMt4r42YdUj;%wMcL+-BLOr*A&?3^4N)NjEMVYsQ|r?Q3qm+YFgeyXO-n9n3_ z7S>n7YVOS?cxCN24%S*>91(_HM}+4;T9J?p{;x#%V9kMp+eciPT<#wX+N-@~fqYV| zd80Rj`Ha-x>&;}oTeh~J%hq;HO}4S)R%}OHBef!i{eMx5^_DZ>;TQ()NG+{tiJ`Ki z5`>l*DtoiG%wNkf_vQ6HRpLwI7XKmHRUDQ1_)x55*V4JN#Rv1Z=6<-Xp82<{2bJ%t zXIAX$!3_CB{Wk8C56C|G$$IwsMi1GUJSNENJrGO|#YWjEf7s)s?!&&WN4}{YIk$0= zeJ0!Ud+Mm+bT6jR%DQZ0J`VV%80fF}qN~3Vnb&)<``^~dLH(UxG6x?O&U>^{Tx!r)o-kw;G44EiT&NGkG$9l?$JSc~UgFV^llk@2F@tzFg zee;+D|L*A<#4LJvUW<92!UMxy;>OuJQ`67H%41^7!@ZihZXT91kVnPEck8lG8w

`Eh7&@otiX`rjH7vDFroAq0x61*f<>dnTGQ^3?{q_>9QD z+K{+zeA4z)r$Koky4k2JE61gV7Z$=r3Is6a1GM^A6}0iBks+ z9M7=>U3Ut4ck4OaIx+e^kzXfUrT67TuSMwZHzc0IHXx0;{7!ee`in5Te5X6(@K~7i zx6L}~Uv=MRbR+94Y#(mQ9%bCrj6$h%-I;L9r1gKh)3K#ionzJ6crGl5{oEGRN0C21 z@%Af?Zqy1}jM>zBTbTKJU$pE7Uu(d`1G-x5IxgB)i!GmsUH6-HYWSVlWpv{zvMbzz zvvLrh!5WIOlZIQwq6{?TOh$wdr`u}Pb|RdO^S(iH+2&+7hV0%(I&e~=`jbYs z`^>E4(AU{`2iGbf^~9~sK;HB)a8KOIZ2U@E|0CSOCJ%Pw*!@#fJt)opC93Z4mWW?0 zH~!U_=pVFyX=@g)Izi2UJnVSst=mxluUSvLdQue>?Gr^?8rj3XZi$Ah3Qr39cDIu` zMjy7kL-3co$$WdEQMWm-cf+N-i<--GaKQ>PcQtZV`vYW*RN8htjE$A99jAEA`nszG zw0VBEe^7bO@SKCj0&dXPbmROuhRxXaTX9(hl;eIjUoDq`j{7-04=iY|0pr20*b5;W zaj3+=>)5x=Z!u)~SlyLle|$b;`#@Jl?PII1>A0myM)%oUn2&$*vX5tPNi^aT=km{A z;LC_b(@(o@!v)7%Xwye>JbkpVNUv~ z@6iR>#yJ08N^b2!tM_8l#yTVON>lS(Aa8ZSP)H&^)Wo&)%`VMJ+z#Oc1YTb`;)W5$ zBd#=hz}4;R{F`Kl^Q6C-p_B>q#|3QkxZi5@)&fowOcYRG_h+xmF+RVAJ+EupW?VsU z_xrc`2KUXGXxu;x|1Oj7cYZkB+4vo{$~cF+<$xiZga3B%2RK>QHZ>znu<4&oM?UYu z0lHHhIn(7N1)EWNZXrnb$}OWWe?JP6*^g`xTkrgt`; z@-e4g6QQR>=(WY!LZ?};EoS%4YW;~Oe}MfQ>&)go6ZI?}S1~7o_-KEbQt!&8gh%_c z@q1-u{>yTPFU9;iSbhq}Du_MT|A21*?p)%=Lt(LbH>j|&p|rjbH_jR=imD2yO&Xt3 zSU4qr^7x52n7~tATT)t8Xx>IB#BH*w!m8S$l0x3XtSaS8y7=l_q!8|270#)vJ}*67 zSzTHvH=lS12yG*q;wDF7Rb_E$O+!bX^i6@Hy1K#|+x*g{>T2u5g$ztxZ9`>P-EXHyVpoZ%LK1E80DGh!;TM&Zn9L47 zIQ>*M6xLN0Ev&35Z||q*D5>S}@IxmZbkM@$s>(VU2izDdZR#jvkFk|-6h5D=ma;-7 zR7X8!&|g^8h&z^+N0I&te|}|2=>_tYQG-TmsZ!#SL0=I&^*B8~J*GPHEMGADFi#uXVVG$m3Y{$1!^L)NW%%l2J+^Q~- znbckfV!~O5C55A2fkz{_uteH7wyLzKKA)3$0@mUBhW7m8A}nf6%$1Juq>cDMH6DEE z$SbB^-0sK26y>t4*n%dlp>dAZI<}==ncpRq4Rqjq>vV^7Xy+G>H}J<t2O!H zV*A|Unq?(vJ3SGsc09z_Ojj%8B4f+8c$TC%T#5WJv#x!7F}F$@>u|K<7-=@>65g&a z#-Rdf%{jz7^_As~wT%s8HT;R}H$oO`WqZDpKjj_fdUGM<+VyWemQF-%tbP#kH97 z9os689z^?}N3eCn(olj2$(UG}lX$Mi(S2UIc3J<8I%NUm z;S570(fx-0MHUN(Jzc&{*3^4}xuxo`&-BOwMW@>R&1i>P=pw7q4&nhm`)>`N0o;mm z2qh{;$yjjtuvDQuP1O(>JvuPbGl6^GJUxC=ib>jTN%nBcJ1aDvjpF85w~1P}k4AVN ziANxezGf|Q6NuKG{BE}mMH_R+q~Z?lGyx4OHgrvxlrb*1aQu|QyvdWY$BoSo3~4B> zDjVv-W_-AH5aCW^xV-_l$)0YPHv}ph0%dr9DbP?`7G402*9I2WHU^N_0cgh)YW026FLG8kjef;t8dq zsz6@j94wlFT;1jeiW&lSq%>5NmIUT3lvbIvqT3YHj6h~B)E99+UK=Q_L?`tDa~~hT z1CUl%row~(3>#7urtS5C+B!BH8t7J3voKJFmD+Ba*v)j=@vJ0JStI>d)Yg@v0wr*5 zL1k4{U`}ZOr%GjwRS5yaATWJ=e%7R^`GIcf6K4jdr%#@oJ~4mhwGa(g)Ph|)zf=`r zV^UQKzYtCA)WZvD>x6NW$7Vr3{rd5_(*^1#<2mWRh0xPFh?<- z#icm3l>~|c#kF-}*8fgHE}q{DOhN0+%Cc}pAhQaKV?yBiT0B!&lMtAY9tb2~HDW~a@DU@E zM+Bx$N$1n@`FQX#F#Ga`?*&R~OB>jEfI*fA6$3@wnBb@#s4m4olmuq$Dr9YexjV5= z9=``&cy<*Jwqgw|y0NxiCvD)e(SeCmb8|g7^0c3d9w7|3PZ2$)gu9J<`pf(uZmtE~ z6>+Vwh0!ni5P9p&k$h)HI(*j>qB>m!t`EaqYk{mM!*#K+*Mt1Y>0@&OLxeZfBWsr1 z4qI+)?)bdI%<;M70z<5I2jb4U;^OnHfxQ2}_M3$b+MqoYdGIXO7Dsn>B87;n+zN z@^Z)JkDoL#FvL1Cn`6sWi*2oOaF4OA$2A_sSm%*X9nPfe_U7@!Zfn|rj-?;X8z+&* z@j+!yEu25#L?A#tw8w6*eXAq3^+P>nt}zG%((H3999hguAEO6dUXpZq$soK7hY20P zUz%m4j6G)oWEutqDoZFkC`skg_&7XI)QEcUUXADSh96)N!n@D1uyHBi=~}={4ZJ(0 zPlQ_s3sGk35_cPbp!XyjfllDqEti#I;EPKsfIn=kq}W|?{-F5$5u+9X+qvBt;nNjHPje#_*k z!tt@nwb0r7Di>{P4ac%1kf+i#=DIxu(}hFym@U7s$!6+Yja%H=sp0`Km9ju1gLKvBVMrg9Z(yERR?DII9Ze z*9P*elP1un@JuR@9(EI9D`%E{_GH^*Eqt)Urg1*&vM=j_O}`->WSsDTdYK+h&Ij1!_(@KecJn1uKDJ4rf%-XC-C$q7rX4z z`Yb*9@wg6$9+_6?)0|VD#+tb`wF_zjMPY0E%KeeKk_5hojf9=2%vYViY%h}+-@iL= zdxRB}Ut1#|`7(uhJ$rl&2CxzvE4#m1Yy~l80*;i-MD%ffS=-)M@vQ*6 zO@}2Dd`q9rLj%ShQ|AY8xdxSzA7HCqT+~=zfn6$>c&?z#`ULPe2xhbs`Lay=M0eI% zZd=e0lhKlA+WuffYRV4+9i(KDw)1JixQy}Xg}IZ`GjIUJJ~$(H++^!S1$}aE4<92J z;c@1x2XAXnX2rq0G~tmm+~JCqG~%+loU!AL_zq*nqXhPOl?@Hn^u)m>0yi(e+ceQC z1Lw5UGivS6(&g@#ahF3FlryXgaBjn+5~GFFv-A39?kzlg8-+GbFl|)N)#FH-O3Gdd z@_4bO7DrZj(TV4HHKkSJt6ba$-#+ZRblbE*xCoc=JxM55?l?R7k?Uoz2M=k3lt+frs zW}vihPn>_;kX?wk;v0Ca-@x1Y4ZJq+cpb&`GmCx>2F}0ZD63I2dIsproyLl&J31}z ze0!H=evu1+$G;`G|CkS$+cS=GcNoi~Ztt|Lv&dN2X!b*93ra@M7|PskEQ^YW=?c7k z7YiL38t;gms$Bci+J7JG0GJ|R7 zUB;bJD>~iLd3l%H{mZ(V<7mka>4HxhL1#wK3(H#mufz*#ypY%4e~Ztz%QSByeGJej z{0#wr17JpEjKv~LM;l~DiOl(RMBzoU%@@!S0G)qZAoCXBH}%6GTU;+Pk^NY9jKVdz zmEXYM1^$xr@B^UnFBqe_cRm}ed6Lk(W4>6t;CXlf(TqF=?+EJW({0J5^trH%)yKfT z9s9T1Cxf@*Tl(OyO>Mb=j1|W!Oo%-qbN)E<7iYAeNd927;ony9TP2qVGM85vcSJ4k zbbIGzUCcZVh!obNi;>3{m=~7J4miFH^5=`2)nBkbKI)9O5i@#zbAMU!_$cSM^tT5= zxKMvqeE9jPR(967X~MbhVX>v-+G5!=KX*@{mz_Q6Y}zsUGlIlL15Wboa`xBzhe?Eo+4TYTP!1uNwOGM24T z!(fBh+F@;$EVSg7C1B2ru5ZqrI_yvV7w9t}mg5Hku=#2F7MT-pJmXtrMqPzt+682+ z7%v%Vt1%a&zJ30rU5mL5?dO||0qxeqAGY83Ei(Ki z`3)D4vFztBp^y3&`>lN9kAq{$f?cv_ir6FYm%lF*%K+N&?_3byLA^k{tr+n)s;fli z{P|?r%^yWR{VjG|viwEZXo>rfj>r6^-6HaoKO%Ze`v2xU<*#QBynrtOI*Y$G6L72( z8!x=1wa;ki*4&=(L1{b4%Y16|lI{yf@h$e%9X*Mku=N7{S~C2+{)Og^)gQkwbDsQ^mCiZ8v<~vC+dD9J=bJZH4ES;C6&+)vXLLSJ@miKSAO_Z=g9f+c3mjWN ziq}&>5RKyVEcO#}S@L;qhI7sz)88v6?KVwGAsa_UNs}!S6$Mbx2LaQBeGp=|7SRVq z6Hr`zP-K*l3J6kA&^nfIhSVJkDVm4UuC4TzcQCxjEB)bo`+8|N|1RGJPkZ`Ni9fhsHx1hKbIwV^mTkR650)jm#R7lt+bw?pZ z_o28HQsj`33J4CPur=XvsXMJH`W6aW6C9JOJ-U=WA*2F=vnWs$AY6i3=T3WyCW8h= zGXS_rby-9%_g!93h+G~@Pz6!`9PVUtXA9RJEpmB$@_MEaERpI|v#B^lvd?p0l*7i> zOaJ1)qE4@8x<%sgRY@}}5_PT=sRDx4DDX3maKF@@fKjv+19+$ckN{VhofkFbZy>ca0 zhK1+}Ar%n#qeM}FkXJI@mc;=di~_%S0!g;ZMWU;OR6wvAMFtm;mpk2xD7qE}77>u` zN*tmmgj7Iq8U>056Y^T9TM`#*1SJd5m%^qUc%_D6(2_1llGfd-T{U3Iz%Yc!1;R5%LnOTOmbb zP@s^2Y?oz36NFSikc`5h6Shg+Ndt-oQJ{!`>~@Nj8*;ezEUAKUowi*Guu7|zgR_BB z0-7DcP!lN2A_dv!ejybQ973VnguH6(cAKI{P@t25Y?rkTH{@{b)q%o(X;46b`z;a_ zLSA@wcSF&EDCmZOY*#l9H{@{bpkzTfSKHPBgtck~B@HMgpxF@&<%2RSQjmRa6;c7g z4ipX{AuoZut)=K*6zC*K02}E(8-S9o%%266WC$(-U_sR~jqQ|chb+z}*-0O5lkDa2 zG&()2{ad<@0VNsg9d3xN3dPl}Lkf|@7G94%at_zFU=5_!s*cS7TeWJLyb>rS(1Rlw zS`P|^*)KYXl}_w{v(Gdk6%Yhb=l~&afw>)^XdVg_5s>X#_#AG?;o80|LW3pRb`8K< zty+fH0i^^qJA$DVpimgpV*uy0YPDha0WqO~U{o%cOMkZLO~w{WV@!Q!worHJ2+toH)&g|=L(=CL!HA7Edga& zq#!%mA*2F=T_`k>khd4zCQ`Hw1v&}Hc8#CI4LMwUoj8XEJe_xi@B~OCgXC~Seh9^? z;1Gc1$TsY=PDlj=VH8*!L&%$*ZfhyJ1jW^(L$U{LBP2Gf)DD0>kqugbQUW?0!O&Jv zDD2YA&PSo(Fh-Cfwk(bz&& zcCy2@b2h3UR(=$hU1y<=WRM(gC3R5vr*8RAPwJqhl#BKlyq6^2!<%A z+!>a&4tKJ{o!*fS?^HHs@hbv7xq7S+~B?p~n#B1t=dk_;UVH?$uV{!Fk-vj=@gN&ogpo`wX;l(M;@ zXjJ2r8iPm=mT22;7~WhV6%gd1Fv$q{ScZE9DLNYk>IwEsH9rGVB`Ao)3IP5>ohu|x zn-JSjrE6Cc1j_c*2%u{6mZ3^jpsojCp-1N5TTqiBq^TtUDmazh?op~GxDtY^#74XA z5}+hQox=^S0cCBZ;2xlRBT4)TNs`gl;fC5kITR^)0%(+&l2725Y97HTr4pnml^{c@ zB>?J7zT-^3Dqo zdzDJCU#SFY&{P^EKLX@j#-*lNBA8zVutBQ?o28mZz#ra%i)?OsOW+rO@(5I^ov?#J zN>(nxD5-|%f1OgT0ayf$YejjUBbXP4P*bE}7(z=#a590m2|0rHfYXwd(zbwL6$*!x zkWY8Hhm@jgQ4nnc{)Q2pTo%BpgW?*}I-n$DNY~ojX~$5FhDz6xwihb)sYZ|aw*x52 z=)~cM_Ji_Pq~HmlQBaAU34vd#c?1iCnt9+V9#K%h$PA>9K~n{o;EOEpCQW2AQ{hrvl}FPIk#p}0uFSO^6~a590m z2|0rHkkXO_XAlnrkhZ}OZ_8PVW4R&c; ztLM!?NrpOy8`=xXzDU8-K+i^!jsYbZZ5?jN1B;@>DtjnsrkMRV5?N~j{{KB<*6eWqM&jePeEcM*F0Mbv{gv9U8{hSjLsZxXagvlBL%5FPWmq( z7>Gg#2>H;b+X0Fupg<=x6AQvdf=*;1U zNlw>q;xS<)K%!(9T33RoP z3JBJqzz9DfAF6gw0gA3ifzHhUTeWKSNbW`m)et*qRjSp77PSef zfM7ogBT2}o*WHn%=n)k3NHAn5tNCjHwraHvfQ?*{blQa2M!B|!%g|t@w9Q)$Kvht_ z1%L(BeE`&o>IndCZu=VpQmk?orM3Ya)~eMe2sA@TQwg$^ORz|( z1T+;&3DnG~beh^+>vkT{5+UUiR7f?CAgolj*`rhfy5|ZO-SbQQ3J9W6Fctwqz9HZq z3yKazfk^~pd*w+lamwL_$gLB>ss1Yw1r!*Z3wdp0@70EY!vc-70V=dw2N2e33fcsv zpS&yps(@@AfNHXbh260)^uz8{(C#M-+*~opZjc6)WT~9>H;?5}Z~lf%cwH{VPPj zJvB+vpiQS;+NEuq!=2`EZG#+cKDirJ^C5t@v`TPTs(A!a5|(^|XpIm7J#{4(2WW+m z3J6xBAh8A#@|6;IVo`Jh3dVvU3T!A!2B2g+ohle2*f5;jsRaA9>a?-P-cdf8ZGs{= zJr7{DR-HC>xSTdq*ha0e_ch6Amx1E*%v(fAU2tc16=2w`Q#TcpZlw>qrYxTCu|!d| zBwbJa>_?x6P!JER?OvcHgXC~She0_KDHx3oVx$whtp_N{XzOr8ai9!QDhm}ha1fkO$H;s}QL^sYZr%?=3d zQbBT}Be|Qwp#;=8f}y>j>{F`MA00a_Z3_s_qA*H?e0j?qC5rk-h)x2sT{-S>Lk`zo zkw&3Ging_S9zq>Ta=4)&C>fE0RY2<^Nwa~H4EG#vs0oy1k%BZbMGP$Sq0_@Z35rAV_ z&4-~gP@u_Dz8)O51IcL~+5yTgrCNgWa-Fm-SO%~H1^&kn^1V8@{}f$~0-Xe8yH@I5 zAnj4ErF#odlF`87hW3Hd7AZ(oeoGPZgBq(dM)8>F zC?GhFg7^<4R`KAUQUG;Ice zYMf?q_oiU^LGgMf^M|UJh~Q+4`Skz}94O%8p$CD9H$?!wsc?lBLvKfPAf5YIXtLFQlmihm=bYC9X~- zh?Z&|L9$Za&G%@VV*n?#YH=x?p$!PKq?$(%Rw}_Fr4p#OQ|YZnXsTP&C>5LmFk7n@ zcMlru(~!0S?3bz?77k-jlB0ki1BL4W&IrxZo=Q4m1_vR&!wa6=B)PLItH-YN}3 zdjR%I)iz=Y&}EUNFi?`wnZpgO1Z8!kAk8={qymC-D0G03FZH?|plCE`&`ChH%K?WQ za=6p2DCR*pU)$CJut1H)O#zw~NlE}pGNc@CC<7F#0yPYj4@SNjeR+BvXgY4Mn3G6Di2PtAtcQ zP=^Am2NUu&Xt&iAU4jCg1Y~Tg zg0s+$?Ll(Xg!nm}MUfgkKm$UWkp_^V)l~qq#KswxjgH_nM{t@WXlJ}5INcGP?g-kM zbqJljCH>jyv=1oBFx%mV@?psgvBnl;09%DrK(GM?q4yK=EpvD1DY_oT6&;c`3Mpi{ z$5vZ}R6wv5g&9bAE*PnhqI*!FkRT0gR|duajTKVfC;%1+t_Rql)#CtE>9Xep)SOn0 z9`o-AP?90#a6{)n@kF+b2CDr{%}2FDxKjzLq?$)?NT~#el}eyi*sCd<&lYZe9l&O- z66}&{9zmN@J?0-(c+zQR0YMZB!$!!r^xfk?(HIfUBgmC%{xN_UNV+0;1SFEJ=i#Ek zX0dRyYtIZ@Zrc4()9;U>8g|;*qqrrP2Du=LE8xjMNe0Q`hO$7(ixjK^xw6zK@eDJ=^xzCr(Su_~ zGl~wwNl1V&gPr6gfiM#wKfZySk@zJfUy=+V$t2%!f-;q{sMO*VJJ_OS_0m;TmX|78 zdM~}jUTSGYi_noo-5!z!jK0$ltjA=3^fKz$a zL7><~H@(b&#kXY1ym>1~#k%F(md@htoVk@|#y)B0V>;7*fR7I?V!@lcK(ProllDD^ z^CWNaCD3BCUqPR8;q6xd7P0-o$5lvWksKKcHl5j9l{wg5@9i>11*TZ`M^V~kHAxT`6GHLe&2529I&(++6^mgFvKMG0_+W0fSCFry-7 z-jrHWZ_?adjdZQE*xQKKV#W~1dZ5^3^i8yfW^Bcql8abc>&0 zGKK!^4w~YNQIS*3qFzpEJ?mJ*(#}ED+YQonzerqfW%Uw76s1WVO&&67pQP1YE|_(@ z=?o!4Ttqu>#s-|4^E7v!;YK#-3}oq`^E@4+?;^bi5p)Y4w>r<$#NI+88%Q&YeGlL~ zF|K@@bv~wU>hNNfc_Yn?ebOuzZ)LGa+f*A7>vnPMn?Rd##?;5NxINUZSPaSSLnlqE z@f&SKu8Qf`SFQp#1rQKvSWO7~~dG|8ECFq5X~ zyo=ihmd-kSUG04CTZ^{d8PjyCMqO~MVQCj3s`7g2x&kMz%CdSLB3aTTjt)s>(mqL_ zeqPcvKAE&XbDNfPBbHA?gm&l>`W0`!gYIK-DCBpLTP;8=| zN&B9{d6u`h4)4}OSPX7g1I31wN&6b$wB#)+8mC-_3`;u=k&Wx5>z1H68)fx8grCwR zjxs8f_GQwv&^Kba#X0C}L+f#E{ zChe;u%+>jDm4u6qH7xBCq{K_t^+$2yW%U|_pCO7Ft4|WSi1H(o_6G+i_cGc*_#y4A zGxn{*-5TdM^?5Clbw!J*bQKcWz?;ls-vnOF=Dm4HtR7jMH(-CGxw(dR!;G?D&AYjW zeYwN)%z57vI8Tim5~JikbZ&>GJ%W^X(seCVoOiPN48l)oQ-~QM&Y;O=G(2S%`()9i zX&qXR<$C9Uf2P)85*wd0Y2OAo8;u(*mViTfRyR;=+-B0gLvY6O78Q+$jx{Xp5kyKG zr0Y_vTuR}+fbdhA#4D0?M3F}(?aQQTUy@1tGif^Kxk4?v2I2D!w3}vph$e#j60OdK z*Si{RjTsx!TFiJF%_2lJOf|3)-2mY{u+{;^hLuVC8sY3P?gZMR84uxO)jSW*4mC zRaoZDa^Ypt{h8Y|kW9Lq&&u(uE{}$#U4zt2q(5Xj6jvTuy$O*~(j<jM9dju~*uJapnBFaiy707)%L1a?)XGk0E8IbX^M< zXQr$^gNU6piKEQCLgcPNNN=FsG~+`w5!_YSH#cc!u18XD(h#3DK(TR7+K0|wM#^6R?talkO zEUg|=wn^7bd2zPMY70a>q)8n0&ysG0UQPPHRyXjqI+< zbJbxI1D5%GB$xSOkdru>A4T$)nCl24_$Tukhs{5k*G6)g6{V1QAt%;*e@RJ6e#(x_ zLH>-SJhxN@)?=X9Bs7!uy@aE?cA{Kv0d_mq0ckxZm3GUx((V{nn$pLbEJP#PtC3Hw zW>K0lkM!zH7u5zk^D5~vk{hAUKR`Q9{$Rm3QTTfCoa4y z@fY$O9sxMe*s zrAZuhFi&AUGimVq5m0O#WYWGDa9-vu%BxQ2-LSN7NRg1PdpF}q$Z83~PiYcIkvIiB zZPE~lDo|`3WYWH~aL(l|%By>hH7xBuq)15D<(_dQWc3k*pVB0bBC#5{#<9{aGXaW? zgG}1D4$k_#MR_&mSi{mLAhjClx-~S8gsh%~@Kc(^(Lz3x_5~@9+d{5fI><-`;dsL^ zBLjr72Tg?W9@=9wK0|wM#?=I})&oV(r zytceJpuDgo(hr)F#fQ$~U}kYJv&h(brBktwgXagklt`8-yCGM z1W}sO)|F)(lD5Gad!;=wuC!;yl_syErqe6mVXOK`H}?alPPj zX6%!8+lBhpqcl`HLQ|)Zo;EjuRRxMok}_%ESvcqN79RkgI@TAYJu|7ai!Qt`NW1Ke zz0xceU&vySHd6UibruguTQoP)%*}z!Oa=Ai{C?X+{VU)mXSF3p_p&zz?fv<>M5 z6vpROhpa>b4!LpA+gsu8r*&Kv+y;oBv!rc=s2=O2>rP~fq%QGFR$C$RQkujJh+deS zf_2)Y(#+T=t=m~l(>exg!Yn3U4FSc*=S&!lOd-NL)u=5rgqb~~TbUidl^*&y7^V&7dj_l%o(^#b@Z&w7xu`s(m? zRo>@DU`w90CS~>Qz^LdDuCz{PWYfWvlK<4PhNV4+$hcL~bz63vakBah!Xs%3;-~|Z z^o5i5Ni!)up(#mUI%&T&lcrgtkXAYGhNZ2BRC>~N9d{fFSzQki32En?v9tqQhamdd z^Jq8B7y{4S^vR99j5a|J0?lpjIgE0T=hx9h7;mB7G2=ZnbDqY%8y|aIEK=4EpxC(0 zqLqOCSJS)6(m zrzzt~TQuWIv@>Q51*#N2ajao!Pa)M8>AIRdt}n7$S8@3%P2#BRGijfsx17cO((XHB z-y<}0ljdjUra$vB&AB@`kRxj1OSC!{UYZ4suv(lntt<^du_^FO+P4EvTi)UXa4OF_ z2oxK)nY6D8XEAT_67X`Kbsi`-ZZm1$RXEr37M1*iE*Znp4nbsggLK_(A7{3#E<*Sz zP2y;}kxBb9X*wWh(*8`EP8wRrsXGv%4ZTEPV-`bH!Sc zrecVaqyj(WSi{oBAgW5ebUkknR~1>ULb#Up(iuyauqB((A~UntCyOtf#r@JwI*a?y zq;AqCdJ&eq!t+~bx6Sw%O%z2~-k8PI?Il>3T_9;motG_RWzxQ@aIWPoJ^((VXauQaom_Gl`tmrgn?E%~A=@^#YnT18ysvbq*NSt0GRGnN{# zC7V%^XBPWp@usslm|09CejbU~jDc-v-DaFXGau7JZNp-x^Cm6S7NFR~CX@E{!0F9f zTm+uXv!;Mz<2IA_orZHZZ&6XV2o7cuOr!r4>9f28#rwKT#;~*-kVZD?de|e*PFcMJ z5eaD}#N?qK;67`{^Jv%282X&dO`qJz%V_Q^FXSF?at$#U`$qv`_c_*SSE_QrQS>%(Lo&V&gWG_O-%k%Uiq)yysZM((Xg*eWdHL zlQ{2W^(lm((l#I_rB~7JnlVH?v)Ct#@+TV6Bz+8p6`ahn7Jh38PKu+@I=or$yh;Hv+{b-!o}nH=Lfl#VT+y&zb;=joVDx zcM8s#yv2*aYmRk5+I5pkQ>^L871@Jkls4v!z0#Cl(Jr}sx@69!ne+W}-svpvm)7l! zz0%Bi+7HUP+`O8UzE(HLk7M3Sz#*el2A3fA8>C%^)D213TR(A$%j$KAOpqpVRJNJ4 zFO#PAGL!aa(scZKjCW7W=Mb;kDXZ@p#^-tIdcv-E;r9jyFR@{)z70sa^HN3js$&gH zyAF}e2I+dHC{CuV-h)VH@LQ}~j@2iv@k^4XvCkaz%bom-e(TAk1DQ0P?LNlAD(79= zNaTK%^J7@r8i=T_lCD>i;;72%YAA}TSZf_CUHE6L{*WMfwBFeomR1j`)TQgyr8o>( zZG;Fzn#57sGihHYO-sFs%=~n7CP3S>bhn%!G#H$x5Hi2c*z6m%}d5en11IHSc z_6$-2r0YqjI00?oZYa7mL{<(t*08iONUo*pv8dR!tm@fmVkAxCXdD%M;#kAdo%}t*)c^Um;aXt01KS+srX{qCZNSqe_ zBZ3kUpC0@*zf6bt|uC9cx%x6;h^1*W+7p?#k*} zh)77g?Tn@Rw<#Wo{JDg7)r=wV%uS!%$jc~GGHHL1#+j0d2O@DA^~(e$QfcF_`JGA| zkhGdqTALX|ymsKA(?zDg8?DC~Q@8SJ(Xoc5orK7gdg*N^@|hy57a<}cEkPXh{F$^* z($!8n7$T8L`SsjA#NZO(^ zrj;?1_DL$oaeD-s+ceghgMrM!fsm$aIJoZo=zWMLBHSRA@6R1;SlSCn6;QffVT)re zt82c`xt2EMjHT0PXUtgoe)>3w5;%z4b5K+mne#q5m+w*DX3~C1UpgO$KoJh+sFcC(qge z6dSjhw66q5!AB{%0lei{{kPHXiVnW9cT^ zBQp;DAnAtSo3GsL_)P7rUoi*mM=c!))mlnbU_5)U!S zxwgP-M5>H|*Expn<()yk5&12X_uS6pJwd)2`BRgZo@Mg1U%hvVrUenV^`xQR(h*#* zO_NrNN+^}$x1}rXS5>mNop*!El6pdj3wO*-V75ZbBwZqb$xZL~lYUvZF^L0>GpF;#AZ8hSkGRgLoV+~82g;bfP>tV~d zGRx{22#=)Qcg9lkL(I`3{JeaIh5=!GgeLcekj#0XG?S*4X#$o>`!i`;sWa(7kP@@B zbAR~5Gy{mx7Jr0&A_!x*;$YEHtQ4gvI=2W=Ec{7x^?JrjE6QDXiSzq_f-t`itVumg ztAO(3g3E|OSzPBLF?c48&!F5`d)ZuiEbKWa$of$)IxCXq9uf%pp`W=XJ zkfy-IR!9m$=HTou&gz`iQYYFWGX`k_lxr4B!Ev-^k~@>SM9AxC=FyF` zb0cwSbs12q;!eqpvR*~s>ng{vv=XE`CtVMul7PD4k*qF4q*dAtXH3f`llDn^-${pd z{3wk8iuT1ai~X{A(Mi*+&!hvADh|=a_@W#*pL<(zC*O(97@7r=)*e~9>@1d^pqa(e z6c#TyH)*slq!x!1WwSUW-z?~~_yp@*Y=)(+g2<>1()BuQoKdp69wKVeE;wTvVkYgA z^sbYp>CdG7lFI8S@3Ke?tVL>p3}hD5MmmOc!ui~L4eh!a8}QA1OfzZ?taUDs{`F|} z&X`JNxy`YLrFBCjdX02Fc^fBMR(l{4EluL6nh73stYK+~AUs+pz5AtjiFAT}QiN#^B&QP&SZe7W=Nk zk!85S;%~lRX^`sqn=A~rB+0RvvC33=c5dd2mCyizTXPEF31tCPnn$@ZwlY1I{Ieypk+HFIb#7$zX!4H)iYUkF`PmtYOevn7nV+mGQ75`T-!C00 zS{ogq8852vlP`}Kg^J5mWqO>dS(+#cN2e+ybIJR@Smeu*YdT|-^NN9WeV;y7v{x*y zW`0{Jl&E^?P(hNzvqc|r;*Yc6o3Az!Pfm}FRwpSEEAzT)(Gs~hwlGUKscdqVEWUq# zp=eWSnW)g2k+Y*S)78oGg_(tU7r*2OkH4dBI+JAN?V^>eD92}#=S#%nGv#SoR`RQC z)8!L}WOlA{e3IakpE|LORAb&Zf8R0!*AFL`mWbvm^Oefca0h9G!Bo^G{eT=j|vrHO^ag7)$z26>V6l9GROrW|@7N zC2HOeN;-L!)nS2agMTBF`@Dd8293HrJ~EpuFwM^kmEy?4Nhbe!3-i+>vs3^YUNXr1 zcR8WT`=^)?=Vh~Vlhce*b0f18$&WF;%uA_K^VPY9(Q5J+nJJmQ-#EqbpxiU?7 zYzjTI_!(wq?_g04(akM>?czJyo36Z_e3VI8K0dqm?r-ne-C5q*-@d1-+}~d6N?NhB zXJ2PmPr0{$-{-nIN{n6AiJ3WC9%?;gGrDyB<7Svn$iGu7SR+FhA-%?a9=ZVO4fu0V zP&OS_0krBHgKg?^#D9)CsDs$iBZpIv-WD8#CZM2V`Pt>4>kV?mFpY!s~Qnn9r!w@k;OB>1n$n|318j&?9KgHwW9KHR8X-98?KA zdgyHo(t~XWp+itmvHbKh@)xrEG5Rn_@1_M6^XntN?C5bcy-lX~!1S)!7!;JAN7Gws zwdBEmkOz0-Z-Dednfwh(Z>;Gpvqk6v6x0RmT!Jn`dK@gMn13tc%g*U~wq!p}IM8Lx zb?8Cq4X_D#wdBEmkOz0--+}ZDm;4QCwRq4vs1*vT1v{(@1-blMQ&2Jge8k_-z}XY11=1@^LB;&ui2nrhGe~d!to{!23Ro}Mxh{}vR~y6<8>0X0B+bR(#k z-xl#FFi$~x;^H(E-unpdE+M-NU4dRgLFs9WgWgT!M(Q(W`4Lo*UxKFxENaPbAzzF9 z2Kr5?mOZ_cQMZggm*HK7u0eXWA*h&tH{ze(#GDX12kD`Mpkn^jh=1k{>_ev;sh3a* znu2uC{|-pk_&Yr;=x4WzsGgNpeZBYyX0<{(fB(q;BR#r)Zb zf3BIhKo=oh4Ifm@zY+1*w@`4=Uz&M*P#5&p^5b{p42i4D-uKu4~wzM)Kg_ zOYGKdV@?3ILP5p+hKS$$8R7#Sgmj&BP%(co;;-64o4hy%P#5$aN>HZfz~fqipK4Gs|4_ugj2~AZ-QKB- zHm_m64h1Dy;OTzSpkn^Li2oe3?ja4giR#W!`5n{~kApn$b(N;>{M6N)y7Mwz`Weet zEhE>}pSnpjDETkH*5HTy3QGKEP?3KTJC~s=kgm22D(2sg_|GxxhDzNWdGK?=HvaCS zPAtRMosPP+^9C~A!gvk3?(JPb-`Gw0LTjN0=m~Zc^xNq7psUa|=rVK#IuGeC%b)^& zC;wai6#fT)L%6m4ReaYk6W{+)+^c+)zly&u?hN@J;-@_Ch7!t9w`#t?&PzyT^ax6z zb(_n`~WWk{Efo`x17-77i)>B7yRQv447>mt(k>VNPzgj*}#^6wc`jPL&_ z?$i7wU)D$Y9^!Wu-Zdy(?0Ez8O(-bI0#7$|1{L!kMEr9-lo@mp(xsL`#rzu)|H>ZP zoM<2Y0i;_S&p{g@-TbHv9qZ9ApkIX!L8lXRZ#r*XVe|t9g1WbYF6((@&M0R?ps^C_s7 z{04sAf^I{)>@KL7|0v?ij&8II*VzU8Yv9c;!+#3zIrIY3{cl0V{IwBZc67;GxZy3> z*Y$3fmf<(XPeuG|m=C^1-a=QQpmal3&oca*@NPqQAl>;CRLp-I@q76t za0ogG>3XK1V*X;pe~9@p^aRpPN&hG5rxH}lA?hB~2F*f2#r%U2|J(@ahAu+7h9jt$eRn(8lVysRLpOS_`0+~ zw;|ksbZJ1iav``27c&(3w{UkG3j8~m8*v|$?op^;#=oS(ng?19>HdIJMf?pBzj}o6 z7di#$bN8TP{>6yDVVpe|D17+ciuo24l)f(4r|3Z*`22d5EJ7zCeKZ|Z%)b!v_1W_x zr0=`+g>z7AzDWIt)jB38u4!*rCgzVkUljHD&{|x%&RBZc?La)^xMyho(g%h?#r&3tuMY|Jv0e)_1qBs8;uHU1#J`4F zpV8fd^mW_~=q40YEPu3&eB&HpL9LKJt_mvVmmDgVNVL4fM{ZbG-9+md@#i?0uF&O`dHN8hVl#jKBR zE}>t6g8J`mPu~(LoI1i(xIyVdlH1T7=pGbQExx|XSO>L0kD&%=0~FM|$!}oy9`q1; z6uGO#e}SEK-_M*6dJYBk@FacNpQlbiIu0L{zFK$!J%v_%IdF+<4gMAET!XGdPb2$J z@w4$1W6xJe;}2&3{Au}h_^}S!0BwYVsynqjUt#IU`6Wo_&4apnntJy`1MG zcazKRdFTps6_Ov9p`hMX{+DnM>5%OuD5x_v`1j#If}TOop~uiuD5!Un&z@!cflfj? z2pUw(zYy`~Mma8cf)kzPnIlIy;+BlN6A!a9oSxv|*O8e~ow}Kr?Yp|l1EsEB{0L zlt)K6r8N3OSKmTqp_1&;aoAovVb|fj#>>gM zneq{WFVDE3=ZPGL_&A26L$c#@mCAJa*vR}*?kO3cs3wIIfV;{)`=GA<9N^f!cjrEW zDsl95H|I`9rbmgZ&!Lh$+vURCJv~|7xiCG7)#}j$lVfCYA-^~mQts$(-@B`;^PSG3 z5X&idl9BU39QUCZ>;z4|1np>zPS5z5QQ${Lh?piM^zCL9iE%# z0B(7Fblzp*$m~2`aV(~Kc;N_PP_8r8$s;Ecoop>nFSsMFGjqxD^4QG6Vd^>Of{rKE z$}!G5yA#P4JjZ4$bKQ34Cs`yJqerKyv6RGob-*1I(y3pIYYE3QyQh!L%pDtXRkFOR zV}>(es(pI~-YoCj-9J#W8r2i~YxOE$2Fsr7JmQYtmXA+X-Y(mrBu)iRPFK=Xn`Mq* zRmKX(_w3-7lO*9_W$}m~$G`lMPELT0jGgdatSrBl8mj zR7llLl3N`iLX_UFeTQ{|9FCo*>K)-&agy2ZCA%pJpLHG7wzQ0$?}a8x1gjGZ#|}@A zOio!8y~~~cB&srb|L%do_8#>drQIFnUH$EEC3FdMlNG82;_kP4yZWvD6OZ=8M2usJ zin}_WHwOpG?E`P^?T9KQ$7V;SCclqZ9+?^$pHJLLz~dYRqf7HAGV{gePU*T{nW6*=*%zPPP3yq;5l)3yNz~hR*iyNmybE1Pd1w3Xp27aE zWPE|*ZrVyW$AB=OjN5rO6}S~Lc@dwtJv?5Xom@P|`8-!&^Es41iM(sKMiVvuoj$8w zKga33Eny3Ds3vu55-EU`O#+IKP7bqw|o?B2JR45OOQoG8CNS)C}`7#X#>(0W`S zJWqSo@o{yk`zPlYMy8VGTk)6HniB)e;`&+(J%Sh8nM&{=Haq6am+uRglu5yH-a)Gf$BZCGF>jTQW_m$tCqgaV# zaqi>3KC!{z&Dmoe{*wVW(w2|UOfl#bE1y0dC`=G$-lhY!Cgw*s^$Lk~9@UxIs<&iRVg`@L69*oI$j6G2u&^WnV z67^< z#QMNW+2#hx`FAZTU#uF0Y(f%MR~N_Np|3HeF!qKHgEG*7u3TEs@LDc0xRzbt!-3_& zu5$aE1Ev1$b zk&WIxlk*IlQRr#7=An;om~9YtyE;~zpXFPRo86M7x!MpM=DtQ#Gk0H8rSq3uiwbUb zm3!McwoOagOI{3ePTUdyO+mysU_E+)?|Kn8gokhS@_Aw(yQrY(L9|$Kt1v||+0UeSj}Gd0xhZjo{vNI0 zI^x-7ywL3L>Kp6|vz{fL(!jpKQa7{SFD*>^kJ<9ENn@*gvBjU7`sDOc*Vd~OmGEs= zA(_h@>MyHnES26W?;PCQQDWdOm+356wRV)>WYwB5HoK*So9GRkm>%t~%ubz1_`-+T z-gt6sa!jLLK7MqROz`-2CwxD(Yk*#}a;!9=zN=t4*UMyIG-+IjJL&^umzyB;PA+O; zby!1@Eeeh?a+m$^Jgtsw$}Pr>2ULy z{t91sPBTiy-!jc7ZV#ka;O`AkO-Q~ypk7HKeG`JjngKh2j}7t4-a zUHUFGu}OZuW<>LY<9w>=dIb%MxkmNc-6@&g|#R2Q-PiLGi#mlJ^i@Wxhf2CesIu`8T|5lS$QvA@0HcE)+HyGIJaql2Ays+*#qJ67f zz12CF@IqEa-_`Ol*fACF;SsZ=lTTyE3ZWl_0Q<%-qhQ)(+sg}-U^WSbSv$d1A zP{_Xy;xOlCM|=2`jxWHp3hf`Y&Wx?o&2H;7Yl!__?VWEaw)EbbXj<<%s=YGnUfepB zb+(`I$77}28!310+uN1w+}+bM8+v%LwHZu-V&J> zHl_2?)?zg`P>hYt9bG!iMxQC>-Mbc+Wu`01L^-UTp2E1gcV9nq4a=6ah1n)?&%Oh> zYX9co&YfNTTFEZmiNU(e?dHa}+I<|*N z({|rzyRnWApKg>rFg{Xc^>>(&E-Ya}ywYicwg=elrM54b#)gFT5AOAQt={!JjRDzI zG#dH)Qu{&?xSZ=hpjfvNS-k#1LeI)#2lxu82R zToav~9-Uek<4y`yu3Uj1Xz$;vdYM)+l|%4s5VmbREsk7_N!Cii1*8c=%^MG96ocI!dr}mI;NH7($?JqZnS(p!#iF{ny zl34b`eYFRh4TNpCTnp*irJh$d^c$bsR?p8ORZj-@yi-J7@9N7aKjv!pkZT|IxYiN> z&=Qj1ByQLYoG^D(l=m1ahIf}qj5Tv zq?5IteeIp9uPk+Zzvg}(iRzLCKF^xtXp|sQ$fQ=wFgkrSH9oh)oi3gZ&#=SH>}vGr zye$jeDkooE!jjYt^9&bnA1lwzFdv}Sjpg!eA8GfQcG%4Z*}xtnr&*t9o6GOWZnm9D9y_XWQ*wy9t*YWb-A5Q&(v8K=a%Z zWU1)z=4iUChqUvLa5mRW;vN z*;;#Zn`7l{4Iyi8@}LcPzvj1s_Ddn6r3+)Uiix%ueWhti)Yo$wVNR<(zs0|_+s==T zUhZmlaoA+`qU(}aYP*8iuVK-3E`{OD)h~^)1-{BN+d(SiIx;TEpdD&@?|+{OBa|(i z-R{D^&SvXH=Bxai%|e5s*j&~e+LiJgKVwjV{2oF+h|nZ$disVswKvA*7T(bQ_ZzOE ze5!F%)27BZ*u#FqPp>VvJ6KMI`k(jHRZ(?}E=Sb-6rru?c9HdbO84 zpepcA9lHEzW?Rf}tM>Nq-mm*GT;8ZVa=leH`QYbWqUlW@YrZ$h{dSqzh2tNQ*zA!a`Fllo!TwH0M-+;t6<_VxC%+u>8<-Q?y;Jw$tN zM{&P2v~<_?*`{n}ZeC#+GS`ZUw-Bk z&YjY*g(|9T&9vdW<$&vx^z-p@znan@RUE#-o#IZHb=GJDqR#@-cmEzDV$~B-0j0^ z&JlKfF1U zw-ci)X*91-@|~J`y=)tLp6%=Ko3KCgLtWTbCi(h_ES?AL8*nKf7)(!YSiJUUrz^5* z>Bb4SA?=oKu3=J_^n-@|%9PB{j!d&z#Nv)oZ0S$(bcIWQHS|YpG(b%<$)~bXbSjd3 z6J0VYvl|`nwrg{(UcHTiG#nzb+_Y9AwQ+^RRUhojo0+vUo_cMlyj|D80? zP{GJ5W*XT}WIi5+OP-Xm9q!x~$!ji`r$!D}rZ&gDTu1xf4vx)r4fV2JQb?4)WYX<` zML*eSu;)kfsmgI0rk$Da!PpkAMrHSdV1+s{HaGG%JsrVsXPlwdbI;Q5ox8)Sp+f9& zs$ZZu|}Pj@pra5E6qLM_xedFF?Hok*gr>?hUSp+%o=&622z)tM>I<5Nd{T;kuq{a$V% z!)Yxp?cvHWew7)WU?`cT4|B5(X23eK6Q_FV?~Ar6e| zJelfLTpRFH7<*Xi<6Z4n`|6xLLVuY}bX2?eVYtL`2YX{I}$MOtv3s8~iTV`LM4rR~h$v|Ek8>762`x#WzR`I-n*O zk%08mQD(C_hiuljlO&h*Z=kEhDp3PiG;G<5Ps>w_x>Z7I=P2uXQ>{r(XsK2sSU9`Ym$t=1ea&u74M!iB z?s&BicJAi9FIm)@%glf*GXvU8v*b)iva}k9bAtQ`q3ML$U9^}FXJV3a;n&uDB9^Vz zE-QU5<>&fgRLGW&8U!>^a#M$R)E@A=J8la!7PR;F_HY8vZ9CgS$la`GBdpGbraz8p z-Nwmn3RDNM($35uH*;NcPkN$u*PHxEuroeC7)E{nTX7*D__dthr#V4uC(p~{%=xwF zHm6P{U&887_3MS36}q22eCE*eQFX1lL}yf7Wzry+aB4!o{knZ$jq-MUi#?L+498$? zXz`oCn!Hhdl_Qgjh2Z^93+iUwjMJ?ET({3WiC=o6agJ`1cEZJlQB7ciFh!^1d!gNo z9XdYlHV5J}ieXt}J1jndfvI>^7}S_VXsYY`lsWfXxSv&7E-2L+`jZ;1l;I+rJhgFy zfb3dV*Gr}Qj)y1twSoQi^4$30bgg%QvzzU2@~czSS!j+c7>+7weH##@h7U zg0+dB{MQSi1GW!qYzpC)A-;=u=gWOH9(RKLjIew6u5Lw+u-vx}ZWAl4OWi=npr>C3 zy~a}8ecIqR5y!Zl67$0d^MCEm@fWk5`Jx>oHeqsJs6Hpj=Mcg7r|Z|gL~{Z zE6pGI8JYi^Z4bvfsO3vAbf@YW{SPehp0@wi=1Xo)T4Tmev9s+lKhLhTx>K68=KXFh z?mBAgxb1i}zh1i-FF8YL{i)jk(T&D#0L(s02$iL<4$E!V6=W(MI!_*e zE*g8(L@e9^O9Fn)8+#GN{uy&6^9&6Xfck{lJ+_|ezDsC$` zY?BqjDXcNP)b$oNh=j#Q?w6G`>xh!Ri?F!Y?t}6}Ub5`xWi~jvxz5`Yoc`wc2Oq+? zEBBcxyP`~-KnDcWL&m4(+^_p~PQlH2Wv9G{ZS+aCF{-kwOzCKs9vFo~58yu*OMhLB zHb_eC#oW{{DY+Z*$Nf;x(t`P-s{%E;rCsjyTrVe#tsK+uIFy0>I%~USzE63FJWVG} ztTpJy-BKh8Jz4r|!0tV65pNq~xm_QdxOeXEFTItFAD-d&A$DzC#5J{8x=|6e(WoPG zi&^(Cx73RVDciE*7+uLP+!Oz;W0`WL;&Nc0owrIQU0&67~^5nl)+$EN5Tm+jfU3VbUZbDGUqx4O-uD-lP!O3 z-$mun(cU}Y&W!Wr6~~9&=aOm~@j^Bn8?j7sYYrBT3$wQDh^B+KDdg6U3B4pQnxJ6dsSqFIL!|ndZd;emYdfYKPDNj^nojl%_D}vpP@T?^b_qt>k_) zEAM2_-iEv|!M0p11t^IN@3I}dk$K~okt&gi8Nx*eM~ z<@Qb7w1Kv+Z%FJnEPo=%{TiE_3u>>EVL02q@F#5DmOygUzIM%)4B6Nl)q^radH6y& zZd!KWosY--XQ_$bCS1O)GW=3ftTA@8fA78kBiJxByIcwN&Whl@cI9qW)yiF zob9xv+iNKT$WQo2Xalc~dS1W()il3$I>#VL^ z@9qyx6~;z>b=8lY@s7D|U%8G=+sS-9#ln$|FN=lx_-KAkC#nnLZGN7wzHXq1=g9Ue zFzb{(8tPSblaa%dZWhFfEd41=8|;Nx=Jtl;A1-sFG}9~n zqN7OjOV(mK#db|M8~_MkH}zNi2TuBd(T^4GcQnlly6p?q;IVDAxjkR)bt$*l=G|hu zaB362*T`p=Ywb%m`O}79=8Fm@t4%HCaXgUoUVq{=?8{isTc+*gj$`OokPcgaVuMU}eVVul=NYH9o^*#4qOMabX}_oL;ugjQ zohN5R)vrMoHT@Lrwoq*c#S)i!xnzv*)K~8N^xKV}ybJ`NLMQs)G`jiEWPP$(ClWe{)Q&^OuVLw=3Dw|x(XZkNs(qt@lF6Y!sG`g1U>nBHbQRZpMp z5V6apvyOb9;eOmLbH-bZzz!z*c2M4BA5o}JxA~agFR@Rg^9j;=w32=Ppe9&5jdW0X z*W_&e1rxufvXLxQK^<4NJv2A*-nGYmj@4jMUT*0dc42LCV`l{|++_!k{IC%J_~Fh4 z#J^#%O%sjoZvJkcvfJ1GcECV+;HFs&uwCvu41F-mc0uJhpB7d%q=aG9rHaoY^x;+^ zYt&n~^F3S&{SVgtsn<0u`ck3ZGkn!Ngf_qDHD@!`6)D?Ym78(vwr;u}|d z)5_Oh`Pj;2)BK5JWHLIxY&m@*nC2=|o7@rCO>Su0beP*5Hj!rwaVhgCkCWW_jc z%@kqxY5k@-mP35WVth=_FgLSFW6D&49eB=(qSLggB@V$#-v@`~ST?)BeFtn)$2?BT z@PBR@r_&fe6f_WnJaq66092AFr#zXb~`pjW-c7WD3~ zdVp5vjjyA>KVv7Ce|=?A|Jfw@W_WThd#j*Nc>D^w)XB&%VcC`XBqaN>JuWLuRS35c zPH-ck{QJ!yjAU;{X4(7P*SK-*Z^~pU`0?j}aXN0l|CQtsH+v}^%7c)Oe$2rQ#^kTI ztVr&zm&sI+?FGjEUH>fDw z?=1c){>s0PLczb^!5rLROnwUgHq^^xD#-p2D08Fd|H`+lOcpym@G{9?dUKF`dTeF# z;Q%7p*I_yMEpZR_VijZ`#X#Mg4Kmql4gfvaQ&EOGD)A3s?-M~7*%K=c>EstzCa0R* z<1NXzB2d04pOkm8e=q;~%H*dv!SpKfI{+J#;x4)z~`^%nMHk|y^b!rmhsoq;dB9jqJeT1l#K z1^kSg`5sUf!ao6S17Gv@^@^Bo^tGM)DLgZR_-jahzg01tfw{`>fMfp5^kT=KXg`B}=; z<1d3BZ-s|0|9=Ag+@G=jS@`dQ&k~I}JUk{GM6Ap6OzZzks??!|r zKPbmeG1lSV6!Yu3<$w!$qJvvMo!3g20 zeg?VhUs#u6`FAtI&Ohq6DPKMjmb_7uPp3@Y9bw6@tMhfrm0`)N8#AodZ;7zv6V2Ybm!FETiv27 zx(G{tDZ&c>YJ??kNEg>5p+6Fi?YC4jtnjoRF=hT;jj-fezr^z1;~AD*>m5_(zOnY=GJo9TuU}N`|0Gz=?^`|Y0xS4$^0*AXg1O$~6W}|TgZyjY z$6!qX<=@{1*HISr9{(!10lePh{~O!}{+P#q3_b*I@c5(eXTAdt@p}WTz9RU)8+;S| z32%QC{1{yC@t46`gKLVa`200+1NhrK{zY(iB>xTY1o-1#{{Mi_f8T>rL{{p<`)hvF02yOs>*!%y%53$z+))H3n`vkZL+~DzN z!L#5H-?zZ$z~ANN^WdA{P``f+`~V!%^RwXR;1J(`2-bc`$lrejZUuk4_wSFuhrq%A z*I4VH1qb)v3BC#r{&#@yfJ6Nm20sFa_W3sWC0I*TrSHeVYiV<#KK{?(jo={v$KcLL z{;$CY!6E$r3_c02_x^q4HQFaQ^2p$(dho#re=B$_ z!W+OBBD@KFHNq|6+Y$aWSp9VfzYY8(!aKnU{b!K(fY(I0ADr!9zm^PvyCeDcf=dw| z10Ra;7s1sC&w>{td>ni!!Y9GkBK(8k>k&Q!z8T@Kg6~K8JossZe+v8}!k56SR%Pk^ z8SwfDUj;Wr_?N&MKSKW80FOoZAArwA_%`@*gnu1;EyDM}w<7#oV2vNa|A*kG5&k#e zI{Nb}-4PL{X(9~-d@sVk4t@~f{}cQ&!Vkc88l0VaE&12rH4*+@@VW^9K6poj zpM$$2{Kw#_2(M&tu15I%;0qC61HK&LZvbD3@W;TnBm4>Qg9vW~uS%y0uO-dkwGsX_ zxFN#r;MNFtgAYY`ANWj!_k*+FuU<=r!B->s7&!Yq>$T)4_*NvJ1K*AC3Gm|xp8`LR z@Q;93F$WFh@m28p2>%4QF~S$Yoe}<9;IRn*960-Z?X~0=!Dk}*4e-SX|L@>y5&kFO z8xj6Lz_%lOAAB#u{|fvd!v6;RIKsaNei`9sV5VhhdjAu6eT4rjIQ#wYwdCuVShq#; z)!@Yle*}Cc!n=dlPOnS8NfYx_)g=ucYs$c{&q)th=74_ytnN7Ap9ZV?1$+yvDR995 z0jwki{5}>gno9@#I#_F|fZqVuN4Nvr5a9#h4G}&H-WcH@0Bb%S{QDZXCBi=o*8Dff z|2}v}g#RhHEyBM8?u_t%0(VFFgDk9iB8)LrcH$+4%;y<=BK3+})n|-X+$t%?TD4{B z6_;}{)~Y8{ueeoIj9*W_#e1PV|1c%`8L-R&e*vugQl3ga2Of&#KMJ0W@K1x!MEC~y zQiOj4d?UiY3l2*4;y)DdtBQzMl7CA9ZzNR|@!lE#TiO;D1-ZAB?Jm;#Xh5%>}%#fDaY$ zR|@#23iwI^-z?x?E8u@y!0*$>hF6O3CknU=+zWpd^!2pbBL(?az#Hg*t{_)=T`0(Z z9$d$Ga?Q){fi*s9O)2~TZ^8b5Dd1PtIeDe{tp@A7#aYa9|Lq0&8{k{WPkH%Xu+CRJ z^?15q|NFr@5AoQ`e-f-Yq1u@I|7EbwH(dAle!>0k%RYTWCgoOq@9epdm%S-@W? z;DrMIY61U30sjVA=NC>Bmg4&d1^L%$qsS}8r@nySDB#b5b)MlQYkK*2v>-oQz<;BF ze*vuX3YWb5-z>;~53KVFLB2{GU0x}E-v-usgA{{T2B$&c0tWaILW6!6a$ z@NX9I?-uZj0{#ej6_mo;2-bOuQ&lcnd3ix}$H?hBFh1vf~L4F>r^AxRKehsYi z6Q_K7?}2q*;;EPadvH*S&sxeRDB({Q@OKyR7Yg`GV4bg6<^4ZbkpBW$=OsG5{MQTe ze_guz$3G&lK>_fOTF& zzY!_^zh034b^-r>0sq$mUi0mR_!jWC0&XwhJz$*=SzTxGIa-jPE8xFVz`s?%e*o5b zk|#cYK0w<6#zXxtO#2%8Dzn{J}DEa>}u+EQ6c=?Wkycb+IN`K_#(_oz!sd{{>VE@O#IxnK% zY!#oMDaij`0sm?N|C<8-j|KedC++-*&R@&_Zvh9T^lUER-C&(33H9*^Sm#F?y!#(0 z*#E0wogcaC_!+Y5N0fJX}WO9lLu0{&|S{7VIV zuYmu!fWMxxJ1CX^dhm|3w&$Sy_)I~bowc;`SSZN+6#bF*&dc5_sCVf#;m_ zZ!7(2ZZB%!k{~_`46iV{4>8~26Ha$Sgnc^u4z}FaiT=VD|0VT%v>mRfd5_lZZiaWW z9DmUHZgzdF^qIjZ^+-P{rG0Y_ZXf0r=0%nh4<)|=#7R4T;DYrJvE}Gq~0lwM##? zP1BV3H~*z`UbdtOg%qTbQH8Rn4)ZQk3&DjxTV5`%+1Z-HG5Ff;1zfC?96+0|5e(Yw1{TIt@^2NyfDl~0=l`AfhG z6*gSCz*oV%=Mf?v$}M*8Z7dW2T;3G?k9`PjW*IMBP4d@wc^@qEVu2q3_^#P*fXyeB zl!VJssed(ItuMq5H|c%r+-33JT`jp8e3`qNme?uOM^!o9q2X?N2+uhzq~T- z@sbjXB;NaFyUu(&_qnjF&3DhkO+8$^-Mz1$J9wAAQ@Ux()|SStH6)uGTWd%fH|u81 zC9j@t+OlQ))*8NT+1|9hhMU$_U8%X8Z>=?bYu;QdoaRQ|)47~)O|9E%Nw(^W&t=@S zY;Ua*PD|~SZf>lR(w6NlHDb`Rd2=mEQ)`X5HE-WmqZFFAwALu?=BBMR%Cxzuu|^D< z8*53nHf^a*T{pdjkVous}X}O+Zt=+!ItgYYq{CZzSOd1x@Ft;8hNl~TXT&Z z-LiFC4L2>@YSrGBEj3%omTfiS*0QasMtWLWw$&)p7K*M$O1CuC2xkjbv4)%G7H+m( zt}Se#k}fZ4Y2H#J-`2mX=z*WlQt68a>jMt+nb~%jQ~cS{hqxw9}TxT4mbOSS!}e z+qcx{dt0{Gs-rEf+iJOKt<_VswAQLsEv>ckpt-eH-`l*s)(F_#+E}AyHE-KeqZFDq zH`QoA&D(0`+t!vErO@2cTuZX0)`-#Evb{!*HaFMm`I?(+=Fa9?z4GSGwd&61tt~ZT zuz5>!jeOg@rPipqxw%$)wrt+AB?r|-mz8xw&`E1{%zMkD!cwWHx#=XR@eyVZruG*Eo!mI;i^&MiYCW~M><@7&Uv$n4y1b8hMS#BpvJ z#ASAF8DucGI=4)*WOi;D6l8X8nf%G@+_pNmRCzd7FSa{ZR8Dc6tL@I!cIS$TiTKVH zlOfDa^d?SoVKy zlhwK=t9DIR?=&k=2v+l&tm-vc-D|SS*JQP?$*NzI)xRdIfK65do2&{pSsiS$O4wwz zu*s@nlhs4bQx%@o#3rkXO;#71tTHxPZEUjY*ktvw$tq-%tC6;h;xRFIA>gvBvD~G= z`SotCJ}CDVLEg!dyGdPNwXLu&T_((BK4WsWDeTQrVDZkrvCnO?+eaXgE29EKa~ zB6|vhNvCrgo@r5BT4*KmFYsiqMYHgTr?|Axe)8p`9f4YVYLbO*nPs-qYVD-e+C+PY z{WERZ6e70Fu32uwEZ){<*oYY;jBI7;A8FgoF;e*YKqM-#Y1%! zZ(Wrgov5&xV!n>@#AC8_!!7KJr8`#X6Kdg7&Nw%mVgScbm{)>@)RlO@#nXF*sdLf z2;{8uh}%S2&q8FDvrW7uF063OH+G@3+Q40l?wW4Ap8V$BoTCM?&l0y?1|m5ARs*?B^2LGB2y}z+zmp(}Lw9 zO@4CA*Us>qMw+(Du}NNuJ5hFzMlNId9e;38x$vtE*Wjyl(b#$ZTjf1nJrd&N{N;`2 znejq0%cP+K!Qe*5~ z?dN`K8h744H9cJVi|^?ZcH`7|Zd%ntlxk49s$Jl_OK;PX;>zA>y) zv5h!c@tG*JQRgzgPu;{3r0k9uDpTyAWL-7njPkjNa3|B@}^|_hZk#Uu_>(^_0wRDP- zdR`d9{5xGCAvHS*vsXyIckKEz_ku{p-h0cMlAaX_Of?lvy^6ndQ_N|FbBXqO66`IL zRRtTNsO)O>rPEd8=ZhxykkXO2=ji5iWx5SIyr9P2)Va~XO~1&+5uBC)`vCPUs^+>B~23dduhwPyxUSS4uh+#6fX0(*jU;oc+Ieo z>qL%XVbZT|+H6IW5M!uP zRnfho;qsg1O*;L~M}>gG9DQb)1~wi>;1C{9@Jut1`aJQ;hf(Goy}*s^>V=0%(w4Iy zm^Iw!iJyEV3Di~O0$Xd2N|tqX-mqua9vmEBaGC;yY z+~%nv%ww(pbnh9)4uZ7cNY#Ndq)$FJlfAy1#x|Pdh16R3?jc-REBHs{P9}MPQZ=>4 zWZAzHZ;{hs9OYFMkbmRGd+dYLqk2as=jeD5dr|HnPsEG&OG2!DpHpx=&#HB{8Xo*=cBVJDW08XQpgljsvCS!N~mR z4gOx|visH2H?K_Ad%VHpR*yS9E_r;&<5`bSdaOJ6+JxgvxL5mk5GoB^I^b2>D*m(NcxAlGeSDw-RiEsbsYAe zlFoOwv(mW(pemhj*%zhr{p(5Te2aZbI^Q^-mdEkb*su3kcO(h#@VMLKA&{^>|1+`F_&#PkFxX5)%K0=il`FCm!o=AeE2acu@JQM_0Y5m(I63x*KR6-_&f7 z{s!M+N^j&FI_XV(yC$9QWm~25UF;6&ElJWQeart(*Zsg(J@@hdKW97Ds#Q~q(;qCQ zmR7Aytv@uZj7CGHl1x^TsH;YyNR6g{Mx!AbLKqg)H7te@<}wUJ=-(JBU4#(*p3ie0 zUHrb^-|xEJF87}A_vih7zuuqoIe#|#9R0mp+bw!ep^j&%Zs*CtK#uGC0}JgH z!N|Rd!g>)cRPK0=UcaQzUyU85*C(426YzINc>f2aUtfLCq41T#Kzw}k_^{RU)Athc zc;7R~;}=>z@0ZiR#-6M5Z8dMT^t`?&Q244~V2joKHCFR)lb&z4)%;=ol_lpatNHV+ z=AUKNztC#_HCFTcUO%3Hy$sLP--ooCzuap6&C>Jvo;{u~)LQn82_&HJ)#IFQ^(K&M z^?H(xqcPuVJ>Q$h>lMiGES*=Y^_E+$=X>*bJ>O%;>-kW$&S_jbngYv<9pyIIZe?~)472?o+-rwKa0==&pj-4d&HE3DS_eFMGjR;zUnSgq&xKAR-H zZZ{d8tNE=y9HdyEN2_(y>^1rxAL(^`zdEl|VzrL%ALn%{tj=$>_2&tzb$kmP>+b;Z zdcNOU__|;q!D^jEt9ATd9KKd{$W9Y=9a*iHZ+$+k=J9ufc%E|U@fB9%YuvBn4_Y0c zsP}Z&lVnv-y486YZ8eX-L&Wps%JB7iov@m3n$>*srROWNny=bwzjfB<)n2UkK|4w3 z*J}PmeTMM-{>~B4pCrTc^_^i>-{F;PwN8rFIvLXI%(7Z%jrBfdWS=s!PpjkW+^^$9 z`i$b^6RckMhmy1HCEA}=y}5R>&Z9j(CQxKGf0eyd`@mf`FD9_hYTQ9PMf2-3koT2h zHO}9K;=0nM>l$jk539fToM~?e2D0o3{k?pv>p92XsPA^O3-$Udy^m6>eUw@4qn;en zXD-**4O8q?t!q_ZhP_OWr&WEktm-Sm66reENY_>pW;xXR4_4zQx?jf^SwEgu``SXTvwA=E4Q<`;&yt-k*LlTE zJ6-P&_6oh8*cp1hS$*EAu-fNtjMHaO=VbJE$GEOE>AKRb>KbabpA5Sw7|66Ysb1-N zms{22`|G&A&Ez_(^S;aKyf@mb^nPGx>N?c@X*%h{e%PwMB&+suR&~vweLk+Cy^QSd zvT?nY()CtZ)mv>B>w1^2FQj|ExV}WI=XI*p{Qj;RkI#@EpJ_FIwEH!#&}!ToJ4WZv z>V2fvYP`P-$K$uku>R8jHmiAdS-7C*Jigxg zakGBhtRFY4^+WoZ#C68oeC^A6U8{A+SsgczTw+z{I;-Prt&ZPEzi)u;afw#_ou%tc zlCHCxRh{YXSDn+W#^;kutmh|hp?{mbM%TO5>v-I8a<0~~%AIkj)%a}kXw1cF()G-c zu4k52J^A+LU|_j)T~$_fZL!zte39e2DqpA9Bdc{X(BEa`d9$VG&9Rzyw7n%5m?1r{ z@6+OW%k6xvV>SO4tH-C#YW`hzL5xnA)H?nyB+nl&J%57L{K@XuyyL9qondd(<7G8( zfz`Z4R`Zrx&0A$PufIdd^KOxzx5jGTeeT!1Nykggn`ZU;HI6*P-lTcS)pn8Qv5U12 z>+8*)topml0zF<*v{(dcU=*W4=`#z7L4&SZ=lM8moHNTOC(nbzG&@ahvI{v#NKi)wly>e_^iM zldS4aArHk&9F5a(Ar@M#TWqy%iPgI6tk$Wps;}DWxEibDYORjjO8;)FI`&(QOGt_4 zFs5JzPP3}l-}&Y9I#2q%&bK%YVXi_x2yELu$p%{ zmfB*SPpjY8)Yv=qx^K0Q16H4(LVcw6mtfWIpT+&TDcNdY*;e!Vz8J1|oOHbtt?JFS zx9Rh-y-}Z!?Ml6_S?!}hdLI>5`>3`f^!y|rv|2x|uhjYpcC}tdtvumLTU4PRcvffauda~%xvHJZ} zzSTU1R`sp3s;h!rORkr$Z>tR7q35SvrSImosY+v#q-o?6wr#@?gP!&c{~!m8eC`nOosS5N-|t2+HV6zlJDbA8=p_)fh~Sk;wc zRhRybMdWi}mULb7toB`CPuKesxytH%Zn3JXp1h0fFUfU%ovqf@Uloa%Wi@WJ)wo={ zMvtd-T{EOVch9nS>G8CxZ=O|s^X=+jph&vDYODHc?frVaw_5Lj^n3@U$NMI*9^YAd zT(;G?d|RsLjn#Q9u|CgM&-3+mrk+REuLoA2$Lp=0AKU0ZK#n^}?GNbrV>Pe-T1@2U zrcA4Ov+aZ0r+rB4Tg@}yUZU&E>bT{0vL0uvd1|coRd4nADKtQ;{?2xtt{>~?D>;vx zk40ANRanjA@7(kGsg~ip^}ZrIo}Gc)2fa_yH=k&toFCw>ikz&?Z49M{BO28|8-X9f17g5?4~nY4 zqY>%P!d#q3e-U{-R@g`NIMQEd`)D8ZhXzOI>x|v3{v}9?eN6S+$Mw9idi<8#C-nYh z%XI$iXgz*b&%0Wy`TgCAew??;@cnwc>;rl|vJVCWjrJkE9@%yJd}kll=Oz27e!j8m z_4wMy^u9ktKCag-`-DC(*)she(>|%++t{b{o$B^!eLk?|dfwR$!9bFIM!)Z{x}K7) zuBR0Hh+co}TK!(hmg?sLtJi}Z>FaBu)%8_m_4|l5R*&;KtLIgPEzxyj^|)@cI$!>d zNS}w@((CTCS~qT}`ZaI5)x6WJj-O}sd@QhtNCl) zulWNfOU<8P%XNKXj@5ep4oZ*Dl^&mGHGaPPHNMPhe6>|Qb=JRUvYPLp)#DyIC7Q!l zIo)dhOsjdOSUmONy+5nxNwJ-&{aHOv%B+6wthX8$KTP^{-Rk_NV4BsqY;wNU zy7Q&?wNQqi)#m}L-?taq=kz{p59vD=toB=CEA%;9cG{r*TGhSJYW+Zl)P7T}<{xUc zk1VTwWLxcHoK-#3toAX>KC9=ARo!c_8n;*-zl*$2y6*kb^&POPFaA^=r+S83)stz87MRUK7U$JLVqrzvY+ou$`Ll3u@?)%xk~_v2`_{(QSp zkE2x`MOJkbTh&o&HGjEP9o6>VdVR2Z9Jk?at9tfZ9iMP|G>5I`?PfJ^vaQtTCEAD5 zoNcNALvdz0l>`zx~A-+Jl&)m!ba(RNi`RzK$lGUW^U zyl7w4^=S3`o-|vf>)iI#<6-rBIK%eQ`z+4K0$h&eR&`d}O*%icZ?&5DfPG2lWq8z7 z`?9VB%(B&5*S?~4t=Gi@tGY_8>RLy88E&;&KQtn03XaBH>GPK-!~fR5ud-G8{A+do zW?7xTeEVWBFwbt(>xX?_KUdgFJ^$^(yWfl zup?9lIp6B~SZH;96xgeD9a>#SrB>Hnxz+1wmDO?8cCya1)$8e2+IQIp^*U{JJ^E(* z9v5#lF2QPCl2w1Q)jApEEUS7(TOB{ns-8Tnnq8pR53BW- zTU{3=*6%x3bTuj$L+T|F77O;62=KN z^TCI~odzRHY7U1@S?z0v z)xKugMSA{3)Xy7MKgSkH@2}cwe>GP7J3x*T^Jr)&57*KGB}8_Z_S8Ypi}Q zte}6h)wpd|=RGh=s=frPu_>r0b}Wk@c+Cv-+MW^?z4Jb*N>Z29Ez>ZONrI*N7q>WUbNJ{rr%51SM=|{q|aBQ z9i@F*?I$!^YCmyS`$@E_vzyg^Qf;oTEBk?-pH}#g=#ZgqSOx!!)H$J44le^H6}m>MO9Suh>r0<7QP~wN-t!R`qSQT5q>ieFyDlT4#LJG^@IXS{*lzoM%VA!jzc4zkv(@=Xu^OLkHQwL-?(yTK$4|5xKhOOdzus!yN~`l% zZ*~55S)ITAR_7%&QR@69Sgn&}b^Yd9oxgmXZ*_bzxytJJ8vB(V54%m{FOnLUX;o*Q zRe!$SuE!V4Xm7MSzVoE0{?2;uD@A%=sn+My{o2<;t9=#QFSSpr&zY50pEIki_FH3p zy;xr_R`u_;+V26Y`r|H^+HW_joMu&Tp53Xst?Dbl+gAOVR{I!d_5Po0ztH1rwO%P!;}+@lYh?Hh{XWEM{W`1l z>+PF*{@5-0J(KM8wcaN$m8vVtYTeORbu1(oS)W(y^J;xw?M$6l>+@=LT%FZ%^;XC2 zvN~?R)p2ooQs+Ctsy&6AhNG>|CwU$gVj2Bg$aT{Du9x2LR;&GPv)X51issY)Qmytk z)atxXBkON7Mm}ejlFRLPdS2LWn%C-aK44W>=c!SLVy5)^S<>rgTdkjC^?7HsU8K*u z(sit}s-xVhj;-WIJ3`Nc%cA|=tm;U&I-_iDfP2feS_eY*Z}hSk3Et;Q9TE3Nji6&t1N-z{DL zKCAlo+qd-l)9E^1k4J`8-Pu-k&m$MxAN6=y)m?5?cZF5m)mH1*TGhSP{-pJ+>f29$ z{1wsM*=ip{t?JChVyn-KCDQe-k*>GYs@`>0^{%)2d{}1R*5`Za`uAJa?=OpX{V7&C z%c}ldt91*k)-A&->Gi6m*V}Bh-WIF%8l~qCUnwO73LIuFzA zFM9p3IuC{PuOn}^s-up)OS+Cm={j~>)e(P{j??->t@mT~x|B~Yu&SrXs-9x2dP=S8 zDYvSp+8)s3Wc9w)XjRt%Oq!{zdNQrrv#rKYBhRuLw_Li;BI!Ddt?DeX@95`q>3Vlr z)w|FBuGfoM(VT6y&J0|R#nSVZNYA^**68N|>&M@|tDoOwr-QoA?4O$74%6fQFRAyz zc-u#xFYI5suC4Yn&0ea<0oP-ty-4T9uF~_>>iAtU@_0!9_jtSQr+WU_)%w02tKTOd zu==_3pv?*d0<)w4UMoR%I;88+>U>PJIv+D^Fg8$NwN9ng`Pd@8UXAqrYwdsZJazv7 zy-&=M19cv4KV5e=U5}R?qQ^^me2xrh}X>(({(faIN0Q-LCm|S%TX!ALzd~upjC?TK#v)h0^t`v6??LS2m3e zq*>K9&Z@2o+>fDoYFAweR^yVb>dLUHE6b{`(b9E|ldfx`ty4W#_2t=*RFC~wzn8V2 z=zYklz7pyB%Br_4@t4)qF$kr+VL$o_Ctn zyoFZt7L(Uo&AY|w@u;&ox}K!x-6g}H>2=j=-re?dz0O^y<1}xQ)x5b@&*vFd=cC4I zzR>mZ4n4oE)=jZGeyG*DnO1)(E8A+^M62VbSsgdu>bL^>i|n0xzoEa<>UCm^&C}~M z?c3}WJs+&D^U!>$`4epO*g%#YtLw?Ohz(4%Ue|hE>vgTh6=SLNd08jJTlM~CztH=e z)%hv6Uj+jd_6L1Wnbq$JtL%3D+-|q&eb9cX&wJA6F=2t!>rH2?{bi9STGcbl>httM zt2&p{zRv1;tg@F7kVXOH%TRoqXt>#OkJ;Q3AiB_+3^RYmB z--R-~L%-*>JN5H{)xL}EE?vh~&;K=6uZyL&LGK4v|2@lQ>HXGQ)lqt*Y#AGToR@XzCjgJis zwK`wfwC7r_pKo9Y4?N z_~ll|71Lize;NHXXLg@H57^y$f3SP>`&Fy! zq~7Xt;#T{${yPKd>*S!-c?lOtJ#M3|>K!Lt??mbGxmM%zti~5ek1w$rAAhsd^_6P% z_-0!@z7ws^!+P5)Hc)Q$^G%i2xO%H~57^`NxZNT(PrlVW#a8bl>uqaY7gopDSj}69 zjaJ78mPoA|Z`Ge}^>}4ky`N{3$62jE-|DymTw^s)rPaDyY#TkFXg_H6yooE633^?z zn!mHve5qECf4bGY893S=q1QpH{ZF$xexcQV)>!R-oz;95^l!16uhwe5dW^qSS&vhK z^y8E$eO-m^Px?KH{YC%1hy7Lmy@%CxmTZ61fA3-SKACC{==UgA*H^mzS?_Ole=v|? z_4sF6J^oqtNB!I?{rDGJ?W4xF)%9dmf85e&duOZqhg!8~(LRy(0;}^`iskkUz2Df2 z^!_NlzeXAUUGIq@nUbYAUWIZ-lO+-d!(-Ol~V6lou&7gB*Q_y4%)Nz-x1ju?cbiM-#=QN zhcvrD`?u%m_q?`qAdq2wU0MA+(=?#J(%wXW|JoiCqwjW$+8#StZTD#GVw(j5z3Cr} zr{V}aA1C0&I0N-#N@P8KOo*tD*EJgjRl}rB@I)MjBXJx~ z#jEiqT!O2x6w9#+-@cn>~|8}Ma(7eB{u@mFlpBDzjH z?1Fu9G+vBXpzl}U`c~lm_%v4I`?v#t!cfcT`1aTp`(Xx-#0zi=`u+i4|4sY=zeL|3 z!2PZD#$yw)BPL;YOu_y*7>DDzcrjjy^Kl8T!Uu5!`hEhg<30Qm_uxTn*(!QmN9>7% zFcU}Ng*Y8gZyg3AMqg0t{OT#5Ig?^odQFXG$yDK_G-*tA{r`1aThPsG#kJRFZxa1P#tuj0G- zDSm@LV{Bq{-6QZ=?2SWkEM9_F;`MkduEs}j16JXi_yK;2d+;E()CXptzmC`w)A0-( zi&HQk7vmlH0G8v+_#gZd_hOqPSs(l25cGWxT;Gkj4DZHA@i}}Ax8XPVBmRlakBZKF z6dsQ!;;A?puf%I{3Eqhh;Rbve-^I`ITRecV;b-@}jb3*3d@IFC-iMFj>-Zt= zz&-dIHq#I2uBSbA#eSH9Bk=;9f^%>YuE4wTQG55_qlVhTFwZksh7f;5K zI36#jj%)Erd=cM5-$%mdV;BB}e_``uqy3541^Z$Ko`V9oOOG zSdJU93SULvm%{VBhack?==)T-|9kuqf5VuhXn#B&iAmTCmtqmF#>cT7H)0jOid*nM zScjkEUfhqrW1vg4zNQ$D?eG}vi6`OdcphGa)A0^`0AI%c;1{?X|G*ZOik2jFn@{WARc=iyA8k4v!xAHfRTir?e! z*t{F-V-FmF!_oKA@cNhHOk9A=@NRq*pTpPief$dd;E3a+^Jn9E==*AT-HUN4-iZ(3 z)A$m;g}&d0$M401*rI#1J&fHk4Nt=yoP;y*IxNJy@o{_+Yw!!)i-$0wN3@PE*dI^F z(KrRK!6jINkKqgW4sONo@BlVTj;?zo9*=35iKFmByd39ZA>NITtjBNg7i@Auw4Oxliv96a%)yKCDqMgoumtbN z$M8AyeLj4Beuz8pNBk3;_lh3Z0lQ%;4#QD60jJ{CSb(eWLEM18--qjY55L4cco18r zM33u;Juw~6z_BMm8_#*~Wqx}h(guQSej=(XP zhjVZ-uEcxrF|5Ql@ndYj{TSOXT2EW-f~hzRN8tp_#Vhb%I3EjfH9msR;pcr`~<(io%k*OfXAH_UDx+7@pw!)l(9IEwyp z^j}JzPM&Rb{55zT{fp^eNnS<1pZpN{De|-Am&mV?eP0#V@B68E9p6vI?y}n79{LZE z|0Kr^jP|#&8h@14xK4O1{mJy7NY+;~M~>GQa7X6PBA-v5K%Q(h-&CAV{~Y>nATK7b zB;QHC&uaVw_%QuX(f>U8CGuP3TJlz_@xI@S-9`T%`VWx*BDYA79@iS%TAja6R_CWX zIfd-|!Fb+u97_Li`h9;Gj~_$MB~KyGB417RePew5&E#TSOZz&q?`&S@v?4anl-l*^8jm$F~C*f49eND%!tm>Le|041d@*U*W;1dPXB81 z8uEJFh%Z@spOL@AAFS#B ztMzMfC+&OfU;29<#&TchX*Jwf>{zr>)k17XNKEuA2UL$hG9p$=k@^llNKG z^Be6=PL1XkR{LykHSh75PW$Or^_)pQ*Q%Z|INoa9Wcsfp&n7P*FCwoX-$A~Q{1EvG ztNEYCXX&q^|4niY`4jS1@;Bt&0xNhp_eO(fNgPcx!!5yE6KiJl;O7Q@E3E3M#44+CuhU;k{)oJd+(6z( z{*`>lYQEUasLibAOR%c56FG_8i=1k;pFy+_C!a+gV>QndoJad&tNkn`-(j`>U3ibx zxQFO}iu^43CGu-l>(|g;PyT}3Xf==TUu9bkms+O{hOPE@Jo>&?u4@1}6UX3WEW}k- z$KOqUz-s=7@iD7)pP_#f`Bn0}Q1s6*A0{D???Yo z@~Px(^0`*?PoRA&`3mwiR_on@chkPkYQK+@pRrnhBfelY?lt=VL;jHbC3z=#FZm~{ zdVK#a?CdsMV>FJZJK@6%wnFnKunEb&Q2gms-`oiuSc+-zUs@R>yr$ z{sDd8Ft;DF8sFxusK;52?~Z+~jvGQAhMBaFvKoIe&Zd2V)%o-N#XR2k6Z5>qSYkEq z0s70x8^~4USI9Nw&+sd&^U_HFe)4bR(8%cgiP*zx{a%=6RaXYt_bqe(nY53#sxJ@c zTCKN`{$;cm(SASqVfxFh_P>$*s@42&;M-R7e@OqAyN{UR^z77@B5=U-++s0UrAnNRmU3I*OQ+lzhO20Q}QmW^}i?o zYPJ3!c*yGbxU;49(atLS?|L|QB_~_0+mH5>$)}Oewi;>q5Tco-=Y0u+CQg#7w!AVKa=A}Mdv@(s*Y|}`{_&j zFg&03Nml!wPM(j2Sd0(jGx!DmfCsTzPISK3R_k`OI*-TTaaQ~9MgIWu5b_A}Nb*?n zh2*K^E3EdHPy0>erR2NF_mUs6T6ZJ9OaGU+2miq4=SGijZ&iN>OvV%(geT(&t9_r3 zldR6~6!Mi;^Zg62wyNs}`fnw#B;QTG-)g^)(*7*j_qX$UuUXCWA%1PO&Ug5e)p3W& zvFAnm2auT^0Ih8zwoMBbZnY51~PasdRn)hn-{rNoq zDyw=*$?L7^DZ_HBanIAgnfw;Hj{GTk7x`QAe)4bR(CFxV&8^n={rfzB2XZ%ZPpkd( zr+pYXi#(bt- z$0uSBtNK%|#totURIBxe<2m$Sh*PZ|k2&P)t&YDD7hBc2oc`71HCF3AO#24%M)E6G zl>gX|=E3*w1R* zVETuX&mxZ@PasbrPq(UP4(&IR3&^)w&AS$#q5nnt-=O^++CL+2r+>Fq-9M2JS=Ajo zE^0HY`4g=6*@>J)?nO=|4I;Y`oOE@mB2}$;Xm?-$x(Umv-O((Z`)Z`*~L9&G&)y zano@g`hJjJzW@uZ*1MhlHRK1#W#kRyD)KAj8uI((t>o=w-&fM}|CjuyRlQ9oNY&TY zDj!8Y&g%I7INYkqmzfJzgs-6ZsV71OcY%)n%>mOm&-X1&Be!SKAlQ4_+^X*@Ozy$JStMOBDy4AQj z^xr^UOkPP|WmW$g+I=5U=O@X&pQz{Af}dNh^A$E))xV$Y`-!^$Puk-yj*bswFRSAR z*uV5O9^~Oxy$C>iGdk z`=V9-Z;;<1e@yLe_x2>t;S8J z|4Q;~@&fWA@(S`Dv)%+jg*R=oFs;&d%P@b~tioenpm?_b^T4P7-f#=|Ot9f(D z)2#M617}&)b1nS^GyqkJ>PcnZt{Pv_VqjMO)rb)mR5BhX*I4p4x;}w`p>5QJgfD`;)V22rT&xyW>F2#8Fnqk0D=%b8s21#)q&1-@tnO4u8d%>CyR{Th-Iv>U?#; zqpkMQo&J900pwH3Bgp5H$6B4wi)o)u`%LnD`fn!RPQHu$fYrJia5Me&9;(Pcb9>SJaM&}LV33!rKJwwU9 z-?I0Sh1pj1kD))8JcT@qd?OZEosSjt-%Y-s{Fv2z&tnb!AJM;!_6G7k@^4o2w!A88 z*lM1m$=%7l$Z6z3R{Ncf^Kd>cwOZ#c@;$g7%kVj?<6gqIt?K=dTuthD`p1(ekuN7-MZT7N1Nm0+ zO7cBc`*?`_6#W&nZ=(Gz@_)#mTGjC_9<-`6Fe_?vtNpYmcfez4?`buD5N6YUfz|%= z$TO_worU>U;}+0gNM1qqeX!ksA9+3bNvnNsr2SR$o8%9y#_hnLt=9bwWB#SA{j|1f zZ;MCKew@|#{y3cW9IO3|CFkKRoR2H;9()}?z(4W0+0i|%B~tMzWjbyn-F#|>8VZ6d#d zZ_xg})%fkWpY}smk4Mw|==io)^B##Et;ThwzYqCD@+sug$>)&ICr=_@YPG)^w9g|i zAQxJ#Q-V)e)$ue|TJ3K$c?-Tvd%e~8M*M^RLl}2;bbLFjJ{)lK!!@Ur4*}kM4P{pnW!ZfmOW)Ys^otmd6h{}S?Y@@n!LtNI_NeFJ$T`4y{q-p5_E|6sNLFXX?h){mJNwW-y( zHdg!WNIsT)0=X}FFnO3&Jz2E-KJ(7w$-b|==gr3@^cT^8FYTqYKTLZ$?f)jfYE}PR z#XYc{q1d;)jH47Urm19s=oiw{u%iz@^@C_e#chVDQkaWtM!g0 z_pn;07xuLpmrnob{flW|g3IY&O~1eQz{ju0jrfZFOWy}buC-dH4(qMz*iQd$^6z+v_7*ork85MK zudvm6-N-%3X;$-P;ssXgU5I&B<7Scb@mksoti~7Pqx3(46;|V`$(!*l+Uu;w@4{bc zk6Ebpzx4YntMLg|btPihYFrokQ^@_uL&>L-v&rX^FSeTRQoM}*S@d5|UPxX>E+XGc zF10$pkJ0`d`33UpR&{=ajaKXK#-FYB7rZIj-UM4%wYRq#e>|pJt#>N@*|eWa`&im9 zp?xatSI~Y9?bp-p@2&7U%V;kqueCb=kC30Ts{0w-XjRwC^uJAhkNg?=EAn^bAIN`U z^F`5lT3hYwD64w9l9S0NTCI0FjZm7$RFe9w0~_i{ugXs5FOtNkF*+p9JxF8qJ4nX_z^hX zs@}=;UrGCH+UL@~i1u5_#a8F{9&#BzkFQ(p>n(iOYTb|N-%kE7{z7~3=IC)vt@d#Q z`ADlekEOjAIh8!bYW|Tp$!h({c!kw`bII4^LfV&EjlUP4p?@R3L3<6k7C*I`cNhKN zTGhFi_TOm#i`@K{=sK;f#&sYkk$YL4*Z$%U0*o8%huCsy-+gTGs?{}(n}8eO-YRr^ucnf4x5;|Jnd zR_mQl|0LQkrF|Ohb7-GOUQAv}zSHWwtRb(nT7Ny3S*`mV{ng}J{D}5#c~x(s)%+dE$K#2Zfmv2{Wn+%jxbgJokuN9bldmNgke89~ zvYPK6yr2F@>EA%!NUkQoPOc??MBZ-o_J3QWM|EX5z|77x+R&||? z=UVM^lGXe(X`h2P;$mEGHScPxarcoQw;}!Bm+bHH@qJESCBJR8?tkzDtMOms_g3@% zjxj5v$2Y|mR>!xqI_?;9H*$*A{Hf^g_wn&3)1O5?n|vW&iPz&2t9h2;ZC3M?(Ekv5 zJ^5L3CHXb-7V?MWdh$2;6aGbi>}^^{=Rb@`TkW$axes|Lo?%s2HvMC0&!v4j?bqXK z`qx=KPLGi{lB>vDtoC1nwN~qVO8+kMx8(ig-^ih&=<&_1>Q5whASYuQ4x>NQYX9SL z68+Q3Gsz3E(5kK#^xr}IeY8J9e%5NgmE_mSZ<9YEe?e}v+W&6cXSL36^vB*F&2d)y zYfC?3%6ZsZ$F|MV39rfB5Inf$xezT#I!>psFNA8EC}&$gQXTpVMy?j-uBk*_4rCC?|{LcYyv zKM&yse1ZPg@I9;bKE&54t*Po;k_c^LUj@;T&j z!S*`y(c@w@$`v+FzKPP`}wa#wxuU6OB zL2~oe%6h$QZ8dKvauT^Wxj%UrIg@-Y`2zAJt9mEnRIBx8(tj=a2J&(&u^P7qAEtc+ zR$0~kD*0Wj#9K4YBT=Es< zSyqq3BJvXQa;x=9$oG-gTh;$0xstreYMwV}|IljRpWs&7cUv9zGdXZ~biO85>m`ue zTOHSxoJ{U*b=)BGDdaP)>NkhoJt--&LEE@ z=UCM@p7tr^>Ex@e*0~u=Xn)A+dGJPQbo~#lo(J{h2J(00U&#l_%^!%4I}*FubM$;B zpJ9)R4ZN*6z3=#dJVF0mjqRcPCfQ^3-*MX3`nlL{(?9gTn2Un}4T~6uk@0Fzbnc*^ zW31*)C8v=i^Qb?EJd6H(@^Z31Zb!ziCzp{oledt!k#~^~k^{l$_^{P_oyi&GOmZH1 z8o7X6NG>I>BUh6*lN-sq$?@8=*GsVae>!<6IgdPzTtF@)uOqJ~Zz0!^8_B!L@v*FD z)s{+5Bj=DulV_3h$wlO1as|1PTuZJa?NVkvRbbjIhmYA&L+@(lWylZ(jZX)Zo=DCm7my3d zk?#%F@#W-N`s>L1$p^?`J)u2+XRG}TC1;Q)l5@$0LE+m(eE6BCvI`Tg9esY3dcq7k0>&J_nL7qmQL0(QS zBA1gZ$Tj3z@;>r@a$>9KdSR>eGRTqd^;DiloB07J()%3hht*+`_Vccu zF=ck2nSGP^U%&q8gVG144oDl2l+-UZHT56=955g)DJgAGTB^|ha$DRuJbOeis5d$6#E8NuhzxF`R&fg9lYT;v&6V^5)C#`J=CKPOoNh;XZG?lRl zrP~i5zxU9g@5V*e{rexOT035A1#+Utr>YLu5ctQqq|~(yISHjZV^a&Zg#xP@yk0o9 zsKN7|c&P98RMnKil>eJA?0#k(BNZdY0U(!*}3-Y9f92Fadld^PV0E>$U0gt z6jKOQ$e{S{v4zC;3e1{+Zl>d*%KXm4J`tkE6wjY^VFWF z_Ow88WDU1vXN=qt(tLr1rQ7Gn__0|Md2IAtYRpI->2tobSzvKvtd5CezJ%1f8WL4U z(cq?gzrL_?Z_x=&_r_P>)eug&tHH;7eSPKLz=bRJ6m@K}H|BczcC)?TsIB3O%DqSR zI)8WQiWPgj_Tl*s8`L#DQ8gaUp(I_;snK=!WxTunfd21s^})3bJ`ahi!}Z3bF5Whd z^Ol>`sbO4dr-sPc`4a!j+ek_jHHJPS5Q>isa$9U{$ zADa_>jM9=u?(pkIYQo4J?mPTAre;Ks_2aj0RKd2*swtF_x1(7`!M3zOQDmOTnz^Oh z4?pf6zq#+`?afq2McbmtH6O@X5jj?WyK|@4(WM!Ap8TKn`&!BgMAsarbJ|Sjv+U5J z$0ut2!{;Khf1Rrgy&ib2!|l4W&Q8A`AI_swwZFjmk+xW^>0^U>t|jaFAG2)J?tQmy zYTTyx8$IKO@l*-y8`=BY&U&5%wa*$WOJDcR(wylZQ2&5KA=GJii zd6gdboXB(E&-=sA8NWa1J*;Dao}&dxeh;`=?*TVQu5-UO>|3^}QOEBLCY5e)rtJD6 z&#hdoov}E2zV!I~^R?C2gpd2@I_{6xb22G)@y_^vyne=MUeE92cj!H);_xP=-w*tn z=K1_S<751MY@#v#v)>PbM+A>=-L7S9>rSnY2(}F-XfH9{0xesf(lRzqzjZh=5Ziii z%ONe#Y^Ph-)2>e@O`?C)+jkos8wfNrJ|?ca)@|NC*dsou)S^kijV;>+V_Uau>3Q55 z-|Byprt8ybE5*3z8jh{o2YTo;U7KL=%yvFHp^N6|t2K^jr(ymW*_NW3cJ}UTkNge(!NsnddA3dFtHDPCc2<&`PWQLrsbSh@7o%e;=d&`u*?m z`d2~J87ZU(+lhqacK_Hx&pw(@1vK%_lOl7T&?Nc@M9yHZmU=#=r2V6%cc0*}_`k>a zy2xniv)kwBV83=_nvQEZKC(>TCV_rxO>L=*sI4aHmlnzWquB#a{Ciq|*h~9I)X6#N z@5=sOV}NS&<)GR;WZ>VWI;JzEr8o2Upg|m^YtTmxW}V0-Ippu)zM+a-ZjLAaqgN%J z(lR(kt;7CtkXkeTcS8P;bx-x--sow64+sQK_nc?8ON)=u*v!8d7#8o#H_+-7J;x$X z(@^k1{kkG}NUaMrN#uX}dDs7o2{pO=s{BA~f&Lu&c%c6oYIcf#3l{rWlAeFv&vZ+$ z=_36&8GEWeQ#a{xVWcJQeXSYmZ=r0Ge5G4rnhe)xgjoMv)x`fXwpyBP?5&o!bYPP{ zo;miJ6#db^`3!{OnmnUlk;V4zsFstSinKIKKTa**`k2#vc#}}GP%v(*CJe=eZq@HU znubE5CO_%4#roSPoA!ClbB@su7ESxQgxF*i*);V-|1qeQoA%S2RUkG?OEm5OhyPfr zO*c*R24aVH&>v57ow5GP!lncI>%!93-$+zTYA3Y}jFh}mJ8U{=RHQRBK<%;bYfRI@ zZ+qmxB>nMhH^kQakLS$Qam_*t^v}3vA^$3^d9XV=omi)EHT-w!R zl6_!&H@%%SOK<KExglhdkua9&4Xlvc4sHNqXsy@DX_ci)+q~zu&cmb6hzrC*x>g5iV z9Di}DQc5(%Xz_7TbbnHRJmM4mvNagn&pYb=k{VjxsV&B}?Ea1Z9GSS~|7+rw zz1-n*(Jb_={?shwN4Qz&LH${m%lIU{ey8bd#Lo;qr;fHS>WYb<6AZ_y{x(`FtZIgdaL=9bdAMyjSIAWSSKPrKX{IM6L+>!fo%usa*V$wnCp4I>Y}w2 z7AUm$Jn>6|OcZF_qnq-);H^HeQCkTqJmLd~>C%iZ4mRq7){23)cX;5n!DoEnM4gXr z3S-sT{`q6o@j`6mH^W^6?bDhmR>kg(j0?3tQI*DTiv2wj|LSg)t=CPd{4!DLT^TT6WgDqXK4Jr^oHA)dFyLKyCc1w z^`MW|xodlp9@Y4#V{TA+Z3Dh2Ux@yBtPYFs7VGC>+b?|%PmKQgBF}PKtlpzEL#qDS zJb0@9*&^}}p0Ivon}yC+^O1f?ng=KO2>(OP{?&7{(0K~YgV(z~@(((1Qp1taBc|(* zM+H5jcN;lMEYIadYoF#z1^+pdVy~>?;-!Ojb5Ew zU7P6xrt9i$_5U#TCGb&I*Z=R$Oh_O@NH7C|2Qp(45-}UAteTw!l1#|L;x=R>M6!{E zMJ=R)ifgsF;8s$lt+uwsr4{Rzx?4A@)}LByL5#T7qP2Ce|L^zS^WMxv`}zDwC*ODO ze$PGk+;h*pZ#ZWq9|Mr1vF9r0jQa!?cA_$+6HHh$377pAq;)H%y=h&AYF*Y7eh9wx zB_ux1N`+=kw3Z=>-}(Sm_^r|C{E%T)ry0foCe8%Zkg$hEy5~Vy5)M3$$9Ok}H8bJB zSsXb`Nh9HD4hrXL5EC-t87(p%Zw<`FglE|T%v|pv~5T$%TheoXcuMZ#~vN$aI{w28j}_-*etrwlnE--Oe~8zGn;!fTa6w0)KpGqwJ)GCg%jW zV^WzpPLW>UrD$nVh50VZaiu2up1@EhRhoG! zHre+o7?4yYWQy-?3~^G8xl_eX@qHWsS#RE`NWX6#OI|IB(|q@$;YnwhKUJ}?b*rG< zlK#LxyGLXElkR7i-Sfenqz4{E_3;zX!?>ge*c9JJ_Px!d46sZ2sUXi*b5SnAkY*5gBh(W*re$@HYv$>ym9g?2fZwJh!o(iEOCs$7yN>@L)a z2?}Dgxs55pHIqaf>yGu%aX(sdMW>J!U4r0ooJe=#K~14iNX&)b-GL=${FX-$p0otB z(42ZI9zEkfFh2rX+<_aG7gNf#_Fynw)^m`2w=w>UlaTG0`4ke3{~2ta@n?BPaSVc( z-)5}mUWB`sBg1k2sSN%Vl8}C1F0}9jOUN|es~Cg{Q-sX)eGT?am?~tJ?Z@jdXPc)fvds4(RKbMB<^okzweOD@g9#-jtwvYsYTr{N zONBhc_X5eKLaz0_Lb6QAX5ZgPmYZ2B?|NS=bk~IC(&lzw8HRL1rMXts+ie`*1qC_b z&iIEQhu#VIk`3NB$&v$_BZl{34%>a2As%lTnfag|VOnUh$Pnwvha_nG52O-QhEgU} zXty1jVYr_G`zMy1i;(zTkdMTPB@f_v>=t9{BLIKZ*RYp6Bp4>3THGbUzPGF!A&YQJTAzDb~Kn+NMBAyc5^vpugTD zSy%`2n1c27v@{zjGqnlj@s7f*NtvaoQQj5kSqgs-1S#VT_Xim9i46--M*MvInKH3~ zXE)ya(W#WBR3IqNJ03G7Wtp_ndpi=OEN{lD32o^;m<_7xY(*t|8`0jBYR+(1YKr0J zdB()1>yROyM_t~DP0zFRqY#xzv(HP_rQd{^JZX;2pK~yrljaJ44EHuPbYk;sEMYa$ z`6o6n1gQ2+e%Nl`8c4+CKicgZLQRt&(Nv=MKn$oyHI?jbLd}z9TvA|qfqJ4rwPT9m zcBABp>q_u9>CPGC`zk1+iLEOU5WfUTizl|u#loj5w}N)%?2NVI9#x3fI~ViXshb6_hVXGt94wOHy$EmtE*-cJ=rh%3;SwgvK95*Q+OXoQz(oyi@aR z)?`9qOr5QFKVEMVs+>AUQ;FVAJ z=6hR7m1?TYaDRea6FUph3BS+6A9G^oFYO*3Z}&*maQrN%2CsJmM&tN7v(@M)dT&EF zj-N})oqDC|J%*Mae{#7dUEW*3j^pS53FF{S-GfVNo{1YN8W!BU`1=Z`5bVMCU1&!i zt493RH3+m`K(|b*9aG$8 zis2dXSbsq3fjDb3gmECzItZa2@LPX?Ko1PyVId|69+3IBs0>fYpCL~k%RqhKK0I&; zE};9s<%zrhgqFp6-b9hHp5+iQ_wC3(ZTh*$5q~A-?wo1UPk`!Ik}$2pmW10;>9p$0 z5rKW0*8^#rRx=75rv|we-Je#sN5v(3&&G&OtJhSD_Y`QLX{)r%Oz}R3PEK1LR4M)5 zO-#8)Q)%AG&}-99(^RJSSI|n+&bSb)q0CS#O;T>U4R)G zV|@emjxyZ)Fc8xgpN3qqp3^ZJ?jf+upM5(5;yaN%&Y%4vp1ts@8~#;VPz`T3xa(id zv8Scyo`|;jbNC}kL~YmG5lxFg~(CoceHgH{US&fmu*&ZYAEc~r{PvG^AWkc6LgJc||K8UWr?PEnHd%G~s z{Q$+UK4ASze~rZdH1m+-K8on6a4fqV)<4EIBi(3 zDt^9+>@Mq3%uTo9KApMq*;J%0V(r!?Xco*t6k%H9z+C)R(jJVEf9Wea)iUzKs=#x?bj$H*24jb_51{X-Mo(z z$X$gZ<3Hsv1#+*#vyUo25O4PS$sEJ?BFYPRO)aw?UnjZ~7;Bz_Ca5Jgh^hm5H?fe# z0eCtBd2Upy3mG3>$Z^qyB-@4f=Ce$nNxOrNjtA2~PB5QGaoDl>)o?-*3-JbKmN_*}iLP;KbdAT`H5%^g!MDJyS{70V$w&;$y2&XdHM)?r=t9!% zLVQcesOjeQiczp{-ofYvX8(d^4q8=UAHWdCacBY_m~~Ql{^7qzcS2^}3Sf`;wK+ zm7?-|#~>IEIp1&>z&r@d;WUW`mxAB&^=u_Uq|r$qMS)aZWX zNB5(^>BlFSeStzDr5{Dn{V0y^hfSg%Pmx7)Pe$A0mqKRp19OL+ew0V|V_9@RmPhxa zBC;Qqk^QK0`k{m&C@uB-l4hdrYV&a=8)y~H~cia;aWaUm*yqZed-=ewafr+$hY~fHMr`iU4G&$AUh4Aaq>JTzhPnS+-@VIycy3Dz1BF^{iAv?OwZ`8mq z_I<#ax6#zANxmM29^rej;jVzP2rPJ=-Fg~k!<4{+3NTD}YkPFJ2BN$5L%UmS`1vw) zUN+n&5`El_1$IbWvX9%bz)pLV4fh%>3xS2JP+|PL;Au)=;X_X47e`lqNp$6x+Lim} zbEq#fxhbUTRy@7j=Be)P6}Ffe?g5xFfkjWV#`_@H{=lLtD0ki6-O)8(9bMx!PL1QS z0Sa8})L23eUMFOtuaNBDBV@8}&-K!t6dxU_fg8-1RBN#(dWlQP;x%YP{B+na{=nil zo%ZaFZqHzJdw%M)=LAlrTck{{&(Fo{R`U@h4v9Y1+I`XO`I*z6g;+KNKNk}1xd*mc zV99%I&x>eka$rdTrlRK0Z=&1t+vxV}ciN+d;7%#it2NJEqIqB}{g4bgr2@sqp9+b~ z44iVeQ^mc}RUC+};y$MeHwEVp&Jer+yCZPFsjj2L!^rcNz>s-JaUdBcG^fC+53$Da zNSP8ibq*@lojM#{<6F@+9&u`HLXN=OW+wEMBWCYN9~1QiJ!%dsjg+h>s7>OK{YEZ^ z`Rr}HA2T93kk8$zZou==4R|5C0SBE1JOTqL@Mp76b;|48N%BP@!By_<0tL6Qif&a! z!Iw@Ik4IPWM06ETI#tld4?JbwAXU&{4LmK5FH~_DDl||SgEcMw7W_#G6t)9&FJ6hR z;{T$nc-5)mGZ)HuO|+5M$BXQN*M&^dU=t(B(M z_D@XONNIDh?+X0Oq@9tzp#^1rYI3bk`#bag+vM_*mM{a)|1r4~rm=v)XC~KxG&SWv zH>o(&)O7p8q#jEf$24D>)G%qKu%ZKBnVj8e*?j)m#J@{i<*CE_(E+fX0ls)+&?3x~|gM#u@)Z&7BdRZH#~?kA`u zZ@duALcj079u2dC5O>4kdlRPh9L5Rzlrm1ThqoaXsUCTpseX+Z!>WWjFs%&;a9Li2 zVCVBYG(YgPm*!isfCLP4 zJEEt10&cYeSZh(UVGW@9ru7tJkZ#$DNEd7V98|1_?!H(L4g6RSx4jw3fd|Yua5uft z2s~&mL-zDuBk+(8YX^tT6vP_iI`D^2i9>i8ZH#*fK<%h#9-wz)Jlqq&$*JiJ5FY;) zI_904PM4Io11y>vI)X>~KOc61Y90#~@)RmS@o3FfRGcyHLX=D8rph&qaoh&dt7Ow; z!C;t<_52*fgdF^d^{fL&Vm7Q-rKytM<3cUf0KSlrg1 zkv{+T#MaGxrz@3lE2IMXru#7$w>+%# z?HdniwBjL2aP6S!ru92aXH2}_45Yg4Go+gCIic4qVX_z1tauO&GA%b6;j%ViKDe#V z@a!?h7en=&u+^N3r0#Pt%~JEuz+?RFXnJC5-c@*3PVCf6c*;W&;aZe>sooEG#x@(N zzxV`+)c(H(52-V6V*U`CotQfFapu1td`&xzhnLLHgWR+R$`V#@@R(J^dRE|XW?bs6 zENkpKBXwUh_=x1J;Aagefc~MBxYXU3px2Xr4h@ld&Fd&*(yf>&sn>GoCgp=isn^lG zp0pk!lDdZiIjISnAoY4~h9`aK!Q&0b7soWF0?WAW=_FLui{VY zPuR^#pOGzl*_BD3G20;9GpQ9rmHP8PBh+vQz{IrrYtXd#Q;?%Nt^Rd9dmkEw;B~){ zjz5IvrENHd2plnauS3SPPED10+aSDYTU?L?S84^O2*by)#xc+E4_gl=vCz>bQ>i$F z{0AZKa{Ni3cN~KKi5^@~b*0an4CSf#p1xe1USshu*`x>WqI{)#$2Nkf)W6Ocr7U@kCO>!Mq6Wy*Qo%da>+!xh0i<&9yHj_0yxEYmbmif9r(Wjq zz6}9R4?Ut9d8Nnu<2;aSHM!5@y#fnzdV?kpc)XWmI;1yh@>!4fea1Fv@{q@y#5Ol; z@>7rZr!gQ~G`TCryAOkwzD|=j#duF);#TSmck2EaZxCEgU$4n~V!S16H(Rvn1( zu4IooDR%DEXJgb6NqV;?55}lNnDmW2gmI_79OIo&=JeDn^3@pcqnPgLy_y?upeRhh z^i6N6k`Kjr``Du`Jmq(%z8&K|hZSvoSH->?kPad6-wj3; zo9PP@kXA{=^iv|;pwkQWO!j&=LW-srO^1G>8hf59c^h!gD`uh--Qu4(5$lBO#!GR{BTsYB3x8HtftXfgyy{j-18P96!IHl$?Ue?S>_O|#D_qUH! zpHsXGpnftAS3)v)i)1|7k}>>4MWuP^BF*?fdr0Sae}K@8e}1a+%{RtT^eI_t`SIxG z=*0;7bTolOF7dG*&f{1QZxqIQcqcm6!*QJKnLgLTU|9L6+O$?9!ew2H&Umal&>0+d zE(QmtFZ>c|$FU0>IlE3~EDh6>J(<^SLowDR5M_grDDhf$#=0Nnx~*c2i^r-Sjb+Gs z1CxK0H443mwQzMFHq!rrv7@aOFqg+z$52ANb$kN2ZpG!&a-9GkL$ToOOCEE!Tgc=RWIVOvMS-B`9s8bs0iZEDL!jS$M%5mg_-`ux0%g zLovllg|e7xT>!=$Z(RigY?}2MYV=zPC^=xgkJg@G{TnSwwf=+})2uis?sSXm^mOa< z6EG;&E-cHL)-#a$6Ri(X;|%Kat9bF5}ev$@tXq?u=Zh1ip=y<>3A*eb`oU10f$Dk~> zX5;S?YZ7WX#p=cLsn)MC)I)}qh06YDSmOYX7}h~F;8DZkb)Lrz>la|v<2Vw9NIzj% zkAd}18rENs`zgbkh?Gwo)}K)KpA2gW8ug4}l_lbrt_*7qSpOW3U{S;KhP8Q=VZ2~i z>EPNy!}=@Y{%lz1gP$)N)@v^O6pmqyMGY?-)`?*LUkvL_aOV{SLNxvlCl1K)Dg@&y zjDP0Gl%(mN%vkeL%Fw^i7PJ=qgjC|uWqHtlxAi)>@3BtBIvQiWhVW6=4cU+(WBfF9 zEHlx(7@5Z}hgfAUG5<=bhzC2 z%wBUBGUB+^cPeVj>@z9hIH&jVx@Km-d4-Cd;@f}@W^Ph#r?YZ=I{KD*s>wsHV#IO}KV??9q;KE`XnZ=LM{Ajbj-Cl4v#g(wXm&s5YifJ~bb zh;i1JkcR|8%MVl9ft5E<@46qwP( z2D|xUcgD4=@fe?qaf-{hmKsf6;>h>~l{D2Sy@naLX$r@6H=^{6>v&Y-o(Q&Q?75EF zXQDMzGWLuDc)16ku}FIa4KMw3GZt&gqs+<~OEeYd{TPBW;}l)ASKZT{acU3~jCz_b z=^6PtF4;Q}vgJqFzW?eY zk!s&W%=8RHe35m&Y=~z@ta&f8@yd?h0y)NfT9Ie?Vj$uf@j|ZkJx88-g>3efv-+_@ zt`BrHbQ>87Lbm(p-pm*$WVbH?@{o}zWS?&b#xEmD$SuBZHsd(+9aZmnzEKd344>(q z1NNp4n7(ZA60c`WR`gEO_d4SznRr_Q@w-ePe*FS!P3X%^-%ju;W2#xE;;%G)A?BZE zh7^6Z>6?vV&Ip*B6urmvErRf6q?(s2`X=Nj%QDQ{6g_DA&f=;!L$%hOy3bVZ?2Ih) zQ5Aoi=}X2!k&$P6?bp&sb6{Eq*$II^iG%WWw!4u^HLSR%jNr&g1OebL(!MHe2Xv}G8&~lSGs(~ z(3=^}=5s3kYL{;x`FXbasiOC|e6i$bhnaXX`+Jkim(Kb&ni+~7bouUL`d*>;xqPQl zUbdK(D*iT?@Bg6KGR~3sJ6yiAIB&L_Z7P1h%l85lYQ|1;x1#TH`8rwt#X=u&`Q~yw zt~4K2@ejCs4|0<3HeXZpkjr;Hrg+AU=BJ8&%;l?w&dk_rj+xK)KIQU#$og(E1B!mu z<+~;s^geU3q7S-!Q=tknZZpqR^vf>aN38FcBG0e7eCKhl?l&)2@o%_%|Ka%FYx3?d z#^2?OnE?8L&~LkZ$)xWS`dwI{TRCBFz7f+mi9Z8ij#e6F46Q$XwNx&S{uC)jt9n%& zmW~Hi$RYgIsriIpT9~n(7gXdoP9&cYO!XY=`A|htC+M6d=oErSBVe>r1v;2*K(Jp0 zQzPhL8ng&LSp`!u=wP}R5L~5#sULJOch(4QQNdIbI#_PJo`-;m%709a5tU=N6GdgA zqv-lTVZU*rs5f*JJ;oOKUp`!nPJ*913HXF4I@iH2C&80W0zM&% zUUpo#1~JT(E8L$7M?3UsB1aq%mR(dKNJjTgq z7oV+CQCmf%630s|LNx=ay&~ejLIq>gA4%DzN}&$>-c;YI^?Ijd>N%AMEq>YwrMA;0 z(RxGF-&GWiQYt<>!a1Q!cLm?BGUQkO+L>&Y1WJdV!)lWgk~f&{Q+WjQodHkAG*9xlPu8WF_-sMl7*Ut z8|o;@B29h{&Fq?pJ>Ar~C^fzc4KL1`dKPP-V=^meH)>`LEwG-mavwm1D>dJ6zm3*r z9p47h&t36(X4df+Fca;{tl8`qG8yhJ=*p~VS0X0<=tzA-1hgAss(vhFJtU_jS;D9t1#d88eTn*jf2_X08UL zn0?D6q&`uVhMr(oyAgt5PB&R&jH+VJ^B4^?(>%1q4l(AofjQ>!rpaQS#rG6^A3$;Q zx*E@B1mBxzLs-@n42n6;WE^_VA)fm+dTvfKP3Aj>??w22i1?FL+DR(yT?jMgnvfzluI!a5W#0kCrakf&gbvgxXTnvnS2Yrlfd{6BwIkArMrwvBAvbq zXt%n{xGpq;T&Sx4nyp+IhoLsVQOn-^n_*46i&TLu>?wQ)ko+O1z#%xE z1%4PV@E^Ls)4*eQvMP{;eG2J2isXkE+bv9Hf%s`YX<;(goy8y*sTS^JfqX+#xAFoO zx_FCWUPvzNK=_jNlhOK%NSbSw@X*}cqgY~IfI zM%?G_-+l^aiLvM|tmo!~3z2CQr0CSmhWQYSbDdj#>UzU`SU*=R+5--lL!@%GJm;HF zL-gGVN({&!{)kv5;(i42Tksp0>$t}batpo-IN{t0oN#o6E#OYooxsBG0jXKmMwYz@ zvS2mBx1o@QoLlY$POVeA@n;cVO>!p`psufwZgD7tSEp4S379#Bp->MTVwXDoILe_e-XB+r=hQDePh>_+@`LM?l$~zQg3ck@2tGMlQ+)J zX5yw4&dJ}kLHaX(KjNZ0TC=2Xmm96v~@NZhW?SMCh*v3?OWf|($Jg(fwsdpHMAp* zVf6MjH@B=q3?_x*W>@FBwpP#>sMfx%-7UR3S8GF0Ps3LIYzJe+k)^j!QZzU8HT1UF zRBuEKGawNppcVD@+t1w%Jq;Za-qhaJ+uviy^tQEjHndBW=C39cU-1YD*8E)8)yWzm z&6;j+*xJ=EA?RCM7a}ojFu3+(Yx4%X1JEL%n!4J%dXP+0QlKVUo1E}XZN2@fNjj#v zr(ttLV>=rx0d2kAsNA6;xGgQ64vG64&U0I5w`!u!*s`gmvyWUR*|(vkv%iBBCNL~onOmwWay{ANgH4xe(Op6bufMPN1qE0$IM z%ia6Rvb?N{)_=J-uUnS8*WH`5E;k$h;s53LXD@G6|L=88KhEQJ-?c4nF^m1ZxeU}Z z+s;QqMdm0nCwDKXA@dbb2ezHhl)q9b|FVs>>E~Crt;6$O<{yygC)>_HAH;tQ=D%b+ z6XE%65EpLGagWVGV-WPEioR$&+XeD-Mef?3vp#N9Ssnt88RsL%b;z+bXNN28xQdFb zyyXvMFV9|{+mf5Rqdd3bWzaj3@+y-ReY7oSIh(!P%*h7%&uuwp&zP0Ft7LY`MF_pY zjJpz{?`>ntZZdy@=jXO9b5B~=x&r~Xn9FwDf}q>BeX{KQWo+HMhU)~=y_pQTWjph{ zsoHnT_MF_fCE2ZUQyGRPy6~^ynVZ^LHivrnV{@Sd-6v%FbiJ zr|`8uUUWYh-xPey$O`#HhR=xzhh5m!-X2m`pHWb^JX8~`C<&EURoB;rDog6hg2ka# zQ>iGJ4z2X~E`^yvAbO-O|&yRh3y>Qd?IOTw{cm z7SP%^ma=(8p~8aN5*3g2e0Hd^pmw>@2rE9+yS{B5N@?!uhanu%fZ)oK8Z-qhs4l1} zs0>xtl&>tP(?!&l)YX+&Ee#b&+sg{7mX;J7ORKpTC~a?O?KQeKceeBxczHh5(a^iW zSXx_wJ%+I~sJ2-}wjHA~7@@G4;`Fz;q^_X60)^U!h7qdlYHn$-YwKvK-P+sN(h+8D zMR{!$&E=JO?uVs%7W@@6w%bx(-P|L!mpH}N!YKzR1dYml4|H|Lb~P+HL#dr z5+M_;E11e5Zi0-CE?P?l?uTQ$!(_E;Ghl?ugQ4DrO)a4o+~&5qQ(IS1S6&pVDlb|d zZdZ9_!BWkz>YCu{^2+kMHKAaA9Y&^agD|4Kp|{sq-`3L8(9^Vjt7Do`HiE0FCnKCDe%BVpvM6 zf}yftaCxm=Ljz<}D&UqZ)ZEhB1SU81ArHi|xV$EWNm6Bm+Pj)IU`x~2(6k;_Za;oc zuCF(=HPqG9){0lNLTE*C%ceFAmo4g{CM0cvfaxtz2zww~((6iAgD+L}{vy9}6X;n{ zQ-HCm3DyNetBb23tKjg;^4jvk@(K=1Rj{tS6vECq8LY1uT!nh4f0vGHu)2TG#hM&ansP(6h-}|AZ)* zB_Qg`ifanMY1PB}YDkt+0jRHFOIvR}1`&H>?62F~`nHBTA^PjKN)_#0_Kcu-Vl-F; z3bWZ+5i9~b*eTWWs;-hP*lJ*;)GR`Fw)6Y#)@<#(s>9(nU^hiwdf_YACKp zXs@pRo~D+NOl8H3h6Zw>4GV8*T|*O!Y-{PYRbZ1+KB2yj?z~WV{2+N-+BzTws#g`Y zg`v{&8t7MwfuBG0Xb*G&UdH)O$IFX?Rpq7S98B<}G+0%q{$Rn-L(+!9HToKQpn7^$ z63oGREN|fanp((FNyLbjS5%bL7@^isV;9!ThR)EYhMtgtiQWfgXY_Z1hwWGcjZM%V z2x#qTXtev@+7D6f371t?Qc#Stx|{nuI<~3-fP-xVG+KlW5;jh>9G1cX$MTgd+MQO? z0WDWk0zFVtRTr+JsH~)DITrt_`cOG`$VRKu4B>S~N#r^y(;(Mpg6ou3a;g@RSW%&s z;nH$ho1B@TXSrUMm|E%o)heT23XB2>iZUuh+@N1%G8^qpUEN#3JFJX`nvx;asK~B6 z_8JvcV?)!1{%)<<9d8m8nvzM;32X%H2#&NU5@-HXxuP`{4O_w9Ry8tA4Y`0-QlYgD zls7!9p@z=BHn6y%H-d{0fvRG$gp^Swc9iP2m>a?BHL!kKJ6oFlYM2=prS1v}VZErK z;##1VnTk4y5_(q(qrwhA3pI|h>uGAHXbrLGjZJyMla*Ot^52ifT$h8$cj=xL?WTBVF0#d4#m zy{$WJULdjxj?_&pItelLoIh|wq-Q-&f!YSr8?4C*QAEGn{~baXYht%He&na;6R zi=1P}aIR=uP%*oO4oi>0fzdNwPnJHTtv6&BuZ@D%k`u0OGc?#OA4*QV>0yAi$R&J>h5S`KwPSa&1Sl zt%$+LV(mb$)<$1hSJ#GKV{6~~wx$i8u$R;-Q)F8yjjf?>ZK`%QbkK(SuI|$QZ#8jg zA!56u?H`;Dj1={9?3XIavF<>=prA!{1ZGc~JrAC=JRZ?7Dhw{{BOYMbJn?mc< zHfcS4sG)}Tc0-fo0k(GG4FV=63_5!d(6ypqWpxlDf>~WwUZIy+dT62KYB|}9jfUPP ziiB-n*OV_UtD~}6rOpzx^l_w=J-r-nzZMmg*91caRWxhMG1+VD3#-dlLvHK=snk0m zN2>&t@qv9|Rf%e9WXU|Pp^3;Hlry41ZU&2#+u7*s3PtIvrA6pI*Bqm@cYRk+A99iL z<(=!g*nnES+!tuI8Zjj)beIoHOGFK(GW5b?K1++N(|GJTu(b)+tkLav!mF`Y3qfB- zjJ0gRAsk|*$S#k@ik_{?xQ1%4P)t_pLC@Ju&b|lxUs@ViER@f{XjOAH$WY&X!BMsFku7 zyVm7;--Ah0vKq35G3}(Stak9CG$J*W>T`KjSW`JHtSKq3$Knl}FIcz?Ojga3#Y~UF zrV!QIyg6E7&1e6@mWo!*PHCmEv0<}m<)w;>YVlU57E>EEj&dMG$e`^+P|@MREXG6%E>$*}Y)>J@ z;b^R2HJatcHNk2&r6$6TtSG33#ZppQUIl4z)&R#ZLO+l;$l)^+a~G>7chn&ofe{t5 z*W#hEcaIFJuYy|yVyF&*w0A}co%lN({?lB**2oBTty>41Av~LD`0FVg?vp)xLfRLD z1yyY!m2K0EHG#+fFaap~vV+G)#IXq+ML~7cAKq|cEY)hEeO+RL8oBGcI$Cm@d-`)> z)HdXHv^2LhWas7Z=)AY5DOZlp)eb;RW@lXrcOq;#Dd7kfN9YOdfvYSor+gN0%eFPt z)7907BQy*M77t}clTkXQHfQXuzbpc_XQ-lJbx5sDa1dd~=GaN0K6tXi4AhodO>mWM zrmp3`MmGTO^vFn;;B$XliNK!^Bm*wTafp z@{nT>*VI+$EuCZeaRxa16JZL@`-*Bx;0Y1q7ryIH*rB#)KjpvX2k^iEDK^s`xG&wJtJUKkFN=8bG^>Tx? zpIZidvk~g=#4pb^qvFuUes~1v!;vH2hE}?p zJ#kG{^U4ZWkz!=+Y3tVelQ0Xbf>jkzHU%|U!?ZU}=3t1^l#ywMB@8fh9VKel;FMh0g3#%?9`@mo37W%|YO4%dn-_Csjg(2b z6i$^w-AUb~D91m%(%9}%rDJoZy8w&5Z+%$JMy|qo@yF7y?L4Q+1vOB6Y7~kKl*e3r zs9S7}3XhGgB*Yw~Cz`eP_S&YgoKmc+DOZ{_(!0?IbCNm>+sp9UqoqQ-dNI(oP$AlU zb5x+SY=tw07c6)ZwEtTj0)TrF4pEpXvu7b7SWRa`t+sVw^E9_~gEe}2kR`iSTw7sT ziQcQPgSy4S?#LC_NBCiSwubs-H{)<|DKv4dC>dPCg3Cbf8}gZoh@7=zh6C*NBTgalWwVYy?~=2?Db@d;)+?QVGG>3YGNw? z;di!jYNvvEr`&MP(t>3q6zXo^@<-t61Hf`ez%oaetBR#JO7A!HoRmW)wT*?TZ26T{2$7Jq^)x7-dVjmnG==ZoK8g)R2i(t&XSi9!!kk7 zNFjW^aCqZ<0|jlZ@8qtt*;f1z@kR`OFUD=8yQj9gyvk{Z?F9`r;hdnyUJ~?dnWJ@@ zzEUbWURf~OQ>&*BM76YhDUAW~^l`((*2^MEt;jLbPJgV-wwI1+B2+&O^HPjn9cUb3n>2!BL~2DjRe=rd&~Ffl$+WiH$0Rpqs1utn6uraju>uB$`M zB3yHzV*HNk(sl;aTrW?7$Yc97FT%CwoEFI$tuqtFlT}zzUxR~a=VZXyY*lNcMKwOs z8y3Q?BG}M8$K%9?7R3FOsGX6ry|l{d(QfMqe&8^_rl7hk+(+d~gNIpnlJ9Kr@-W6m z+(zunW^t}yRytk@S z=Q56SRuEEW1xy_^Z^M_K#A72zrdnoT%FAURhwWv)13YmRN;P-@=38)n%r1| z;7_huRZtTp`ca2DTeK&P#;4j~a+id)mBJcf8*8s!V>{jYwpmT%E7It8j{8D<$)wld zQiUTdFsGcaR@CZKl}#a84N*ZI+|ps)t(Hf1@26F7EJAY0EW$yn4hckkL~a+IVH|n1 zQO?sv-nWyjdh`qqtE7lJBK8z$qvKapmXwHvQiQNHqLj3uCWX3E(MnHMcyw{+iyC-D za%BsW3$pX;=xpie>TGLre13+u2K&_YH|&jZX-4^aoDr{sE6)&9mHt7T@#3Z&tbN{y zQ=%ku!*&EY-bArrLz`6Lwl7BCFw=gua3#Eb^*t;PCkQTGsy2K)gye8Xo(|dmF}*|(*;t-mn;YwCIN z#8J9hrL+BdLfR*d+~n%BJ9Q^Z+@GNl`ShUh4u;&1R67P+1r)05V({~81*H!X)LupD z@W^%FaZEUzti^dJ*B~f0+-$?0s_;cNN5G{5(sEphC+%cX27psoL4942hl>>@yyPin z6a5X?(C{Lmt@)h{+GCANtr3=(tyGbp9>?e!D1Ov274TO=Za0J(F7_oAZ^Xn>lQ;UT z5Ixn3RjhiaG0Kmqj7*~u*A;Qci}w}D8N9s09#IRSK{rH@=hMyj1&o58<(}TcdJpLcE!${g*jFa z7TQXzAv}Xt6GtD4Nhpryae&aO%s!qlVC%%I2C|~FIPDDh&Qhst0CrGWv>a?(nw<5n z6&p2PeBGe_LiaUqh7RI_(xmRNqLC33+bIw(l?t4NjIiBwtMxruy+rD1Dz+#lRu68Y z(`wWTH_GzHaW(DoP5L^fnt1f?;-V@o*l^QfMam6paWp!6rV!lcYxKoKEa1*?b6ch? z33XyY>C^r~-uYAOqVg)(oRR&vlbiPowWTcA$TYw7y%f>c;1(nrYQni@>SV_yDl8y& z;m(arM0rh@Co88>{(4snQ2dUbi$Y(rc51XeUdrjiY_f5-Z;f*?i(VS- zv$XZnxlTJ{-^ z@({_yF`_I|C6A61RU7Wkii~BdWmC8^3V403a+IJ!Bkta7^;T@aK&JgD#uN5#mK4P|SAzIPGjnF~ekXxF!>tH;ibt*|Cimx>Hr z>MdI6&%|}?6XiB`!5q9?(ZIL34RZz_V~VifELojhFy9z8Cbl5X9OD}ANj81vM0W~) zxnZ))a^oioa(cIR!1w_6^=MpgKVcH&C|6;Q8jzeuXqKGjmd5_pP(x!QS((EmIz)|b z1dZ3qTM*x+v#NBM|0+RGR}NiU?RGS)o|!WzvNY|Vm!gq4GOoM7k$V-iC0sj>Px0!d z)4XU3#Tz-;Ytdb4}N??rH@R<{PxGL zm+$h}c^Jp?dhJXRafK1jO!o`C6RqAoB7u)x246>t?8k>U;oZ(u-4F7>?g!ssvh(24 zI8bI7eG%^r*>P2fi!5*PknR`x!v5IhorP!S(eE$uCl&PjNeEIOyT50HVmiBv#YmT? zlSHLk2P(4O;vu}3hA`HPcfFl@e}HF}Hw#~W)}y>;{iy!3UdCT3r~>ilS)^Od2>ICU z<2#^{_0|pPysS3?U#4TfZ^kzwyOCCH7(cNKiHN%+;u(*|BY0cRdDAT-?lwF}*8BEQ zn9ukT7pGnXN7b8xchdX_vp;s59zZ~3c^?ji`F9-R?0&p}XFCrbjrk~V7a!zf$Ndd7 zpDC~W3?bbN{04~qVI05j3fkfCUx;5GwTXzhk0YKL{Wa1>e(ZYr3mcG?Zaa?Y=Gp|% zPDdWuGR5eb7h!(bkrC+_WXmYiJ&OV7n}U4z4zGJFz9a(4yU6nH*p1)YMLPQvQM4VT zFf!a@eEe->q}yq&4#mID5E%_BLVytCHXpSFh+BB$F`2H>56=!@G zXucq9*Z*VCh*0mO+vStiA6;H|1kG_^{>b>D2%7P%FEajZhi$sQpGMGZ??H!+I-c)( z+WGA#q8qrlxvZX!6qp&HBS1YO?UhZHzU(36ppl zi(i_-k6k%oV~tqQ{s`I&TCHg+Y^;)bj*2f7}MS8veMA31I?HZuQ1%ILK|_ zXU8HwZexT{ePl z7(t&ig1%w|ed7rFzzF*J5%k+5=ur_Why36x@b-sv_6T~x2)b?r-8_QkKMHDpSl*5i z^mQZXJ4VnijG&K=ppT;<%7^6#M$r5R&g~E5>qgMMBj{^J(07iYpBO>EGJ+l+L63HH zjUNBR5p?K`CIUgXQ&bH`tpVu&lcL1lPuJ$UanUait9{WacphY zT;}0IL~9VLU7~Ojt4kngMhoB9#T_GN(UIz2j5^PeC>_j~y!3nbn#Rk}?Q(04{SDuA z443kKVfq%5y7SY`yRP9YU2;1zw63SC!}jujx2tLsj|+97Ey~&X-2`eB=?)Evw?nt5 zqYH7arK7|KEbs62j1p*1g&8iJ{3j6B9 z{~QyP6*2dn+iCx!Es-;N#FWHMv<3)vPfK5aPiLrY9bR>AYY)Mt+{t4dr>B@Po7Ak3 zo`>gDcr=ux;-&)%!=%AXk7yxh96nRWy1U7JLh!Q_{8FpAyh}ObZ*Xo0u=(F!mD*_^)v2d`|(H?^T8)-P^=M{DHk?6&Z$~ zSd4XwSc3Kt3k;(|uvw756UOk%h$!b}VyWJ>#E~BQDeXE7rGI!i$N^VebgNnplB)iIwO-5k8NXi9xLK#A@`P zxB~qoV)N$p0BiBPGDP?)Du~$YuO-59v5Sb`0~#b^(DxJ9pj;x__XhDa@RN8t_(nVf z?T^v%X@YYE=M&Gw{*VYK(pq8&?Iy0p-j%*`X~zJ0_-!?=Ukgx|FxHtQc;vRcp| z(B$8Tz?4kzk9Z>b1)Iid)xRQSt%tmlZbLo9vkhZ_SOQ-U5&hUh+<^Loen9XkV!Pf$ zvYwYgryLJCCC)&-j9-9$6W3|KqYG{D8rb&2alsuBkvkpYBqGLms$hT^3p-rmG1XK$ zRHYC@st`k_kbXCo16C;P7VH;1U+^M9?!TFSui!qxI|aGlW&9I@&k4RF_*cPq1V0x1 zT9Erw<{vLORWMU;BN#uKN-${z>)ZjApb!h(q9Xjm`9|?3QiK7E;vW9NH8c^FW4a1 zDY#AW5<%{tSpF{r?-m>qxO6kA)CV6y)zlkzOjeO0Y?=TX4JJ z6@oVl-XVCu;GYCv6a1&(SAwya6Rhtz!D)hD368@2VSJL{6u}I^S%OOh`MXt2Un|Ie zgo*SI1a}BtEcheAYXol;{Hfq=g8K#U7komH|70}Fr|*#Xk>J;YV=#vqo+3D1kp6v! z7YbGjwg~<}kpFZI(_Jk1Bf)C~ZxsBg;O&C<2o4E8FZhPw2ZEmoj*8Ru_yp4gXA2ez zt`J-+$bZR^?b{}Jx!}!$w+Y@Y_>kbA1YZ+8Fj|-MsNmCruL!;&_?F;PHYp1m_AC2v!Q7A-F;C9KnkP_XzU5h2{TV@NvPH1&;`RB51<3$MlJU(*$z_ zmk3q}o-TN{;8ww1g4YTDT<~{-j|sjc_?Fjr_ z|3Sg$1z#5YyWsnR{}CKNR_F5z<_azpEETL1Y!vJk+$MOr;2yz!f_DiH3BDlsy5Kv4 zp9;F*s#N14$bUtTbe7;E!BW8r!Bv7yf*S?53tldGqu}j=_X<8P_>$mZ!G8*VBNz`y zJ=-%$Fhg*jV4>g&!7~K;FCjBukKi`J%LH!_yiM@;f{zKlD0oQlBf+l)$HJ+^@-4v= z1?LME304c9CD0z2eV+?G3VRKGqBjv;=1e@}EQ{zsm*d z1lJ073G&}|XS&M;Zx*~w@E*ZO1z!|AEI0;7F3dkkFjMek!BW9`!4|=8!Se(!6}&<4 zcEJ|~4+|a>{8lglM>?#3s$jO@e8FPDTERxaje<7_-Y$4R@JYc}1m6+-SnwM`Z;Gzp z5}YBpK(I`3mEbzTe!-oBy9IwPc&Fflg3k*6RqzWz4>pACf1=Sejxaj;3)V$)OZO71oH$>6|53GQ?NsDi{MVd zn*?tYyhm_I@L9oE1^I6Zv;MCI6#S{+ zF9d%rc(>qvf)5KmF8GY#p9TL<@Na@g1m6?#(*+v@TLn7=`vrFiULkn3ApZ$p z%He*&-wQq<_^4p+2|C?E!BW9G!A8OERGn^<;12|^6uegOCc#?-Zxj5D;O_*V5`13p zWx>}44+*{__zyuI5VK#S1igaC31$dp3(gi?Ab6@^sbG!ZnSyPCn+1O?c(dT`g7*r3 zB{(Www<}3-ieQG|EWss$WrDSWX9>0m_6cqmyj1X7!CM6P3qB53AkDG+PK=5k8TLteD{G;GO!M_WBB>0V>H$&HJ3C<8)AXp~2N^qTEzaal{V~+1` z!CM6H6dV$KLGVq%e+Ygp7@sNa5S%VJTd+VdD0rse2EpBew+P-TI3)Oj;G2T~5d2zj z+=;sW$%4}b=Li-GRtugb*e-aE;4Z;y1@{TMXXx@r3yu@?2~H6V3f2prF4!R0D%c^| zE4Wo~yWjBTxI%E1;F*F=f^C9bg8hQ$3jR>=BEicA zcMD!GxL5FJg1-{HQ}ABF2L&G$d|L1Y!B+(TCiu4C2ZEmnej#XNX+FjZCJ6cjrwFDB z&Jdg_IA8Eo!BW9W!8*ay1set11iJ+{3vL(OEqJ})UcsLU{z~vp!FvTC6nsqZpx_&V z?+Jb`7@Mv8KS3~EaE@S+V69+CuwC#R!J7qd6}(+=zu>)s4+%al_^jYdg0Bm{CHTJJ zCxTxJx^i^8#|VxWv;@-x=Ls$rEE22|TqD>b*eiIx;N^mQ1osKvB{(Gbyx<#x?+bn| z7@MoxJ6>>_V7A~Q!DWJL1lJ307Q9e!pWxksj|l!*@Q~m!L0&B9dXp&V7t9mP7vw)m z&U9-9y9EaXuM`{<+%GsJcu??=;4wjCrqnO!7t9mP7pxXsE7&bKAb6$Vpx}PNA;E)! zhXjua@&yLfe?h-so?yOUwcuL8ZovV;D+LDy_X`dQ9uzzzcudfkE%gif1@i>+1*-+u z3U&()2wo+4li=0!b-8;5eye-(UJ(6vz4pFniMPa!yg2w6%c&cS^Y37;=mELbMEf{1>c zK}5brp}UA4+!GP{heYgcE)x1jMAW-m@H!&$|4MK_5#>HA_zV&0Ul4qWi1cqr{86F* zA@skANdJZ4HxfT;kuEohi2PH9&LkpzmSCR5FOc{mq05A>5qg!-je?zmTZt&|2ZBE& zqP|Nc{%WDG7y4GAZxi}%!G{I^L_~Sd3%*E1d4HAoVWHm_`ct955Zb+1r;j6oue|HT z{C=Uc1s4jI3$7My72HNdz8yr!$CW}~Bk}tr{C1)5miU80zb^CotJm^nEnfSpDx}xv-X`FdXqv z8wP2xL(!{+K11j&LZ2t}O+pU}JtXvFLccBayFw?My8IL(>RT*yzR;tX4u5P+lzh2! z^8AsXnX~3En16EKygBpy{+W4sh;;tWn>WYrUvTogSpa<2j@e#PQL6vRVHAdsiGTeI z)j6N1#wjWW!-r2M?i5YN3tQE18D-h;xs5^7v;Xq9j9m}L{rB5%KLEa)hj1^$ss|4< ztRjE!a7EtUVNd>#4*3%YkGPGUM`H{fr}88Y9=7RBq^o9{yq$+0%NrQB!;=y2&fj?` zC4XQz4|Nnft+OAhkKiBhJ?M*jzh!cr^aWd&5|9B-X%dH2H%^Jmxh= z&HSBj;dU7E7-LTUHuvx-qwetM-+nvUuJ0J?U|B53?#GqrhYM|EKMeoi5hHK#@PM&* z82?1xA=MAmrx0;W$N1*Rc(i3?e@7*LKObTx+%Q)0)ev0!ki5pqBWPRPD52TTT{a7V zZ1Z}wbA7kwcP#kmsowDx`(gLZSX=!TL~D$SGjJs<_kYBB5tsNs;t~j%F?4uxSd< zIM%gCd?E*tbq*n4T>kE1dmb{*uA9#eKUvOq#us&hPm~KA6Z3!U^vfa}^|!L#mX-CG~Y+_BqamxFl%rCG1$vK_}feHiz?A;?DF;9*zd zo}*s>o}&yWPuO2uUO8Xw@WlM{hsoc>>hp)m<49g{F8va9r9qa`P_~)43v+ju(ogo7 ze67^EEh!QB|D)6MuR^=RauLP9{ICo~_R(XkJ(P#}kq6z>jyYyjSHI=X`_Un;5hn7) zP#&P4^L+f@rQ4b4=kVYey5*14zVqfX-G3ob3_;U zcr2Lx-ecFW9V_1QqYYUHE8iM@CFaFi>e0A3=?3CfjP&zaQpc%+jg~Y@9@>> zY|F)H%f*MX&=y!CY7SDiiu2-!iw$eoe{lI*$9{xyf!r_S%bbXFLq@18-2TDCnMkM0 ztv^z1#1G?L$}#NEPf%Ar=zNrMBc6-%tl=R)v07KXDup2Xb_52u}3BM*AdX=i7uUv1 zj+*}S-^%mH54&bwa&#om?D|5S9eIOE7+;^6w`2Tb ze|(HPX)uZDjlsdgN06sF>Hm@TCh$=d>HBzB_snE~NCF8m9U7PrjscR%0V3hhB!F_8 za2XYZKmv(|Bqjm51OyaTQ2|j=5%8<-dacKbF5W?wQ$sa9O67e>Cz3W0LstGK>q*kgw0U5%I12DLRgA zWAO<4kA%Ds=+kWQ^>n}0)%_*d@(&?wj6bFAeZ||wFTNu95I*tx;#l>g-^4gE zX6gCd(_eG}4RaaGDpkjTS09tD$c^g++An{A9a{09cAz6<^mwH});#3%YRUKU9Gm3! zHL{`I!CzC?((MQHpbvSSjW#>s{QtinZ_OIST%e${*`U`=R;kv5HsZKQ%0qpr&K>E@ z^O#?}whB7ahA+t)X;jDOBoN1IO05 zD-k0NJ3hD@aV2qpIe}|kt@oB=WcT#;#uDY97}NXA1G=4FD<jzX=`Z8OqT{0U z0B(P|@jb=$^M5xk=Ad1rLE6#-xV7Du`5W^da&WoW#`C|gfpK%@fe2~fi#PuT`>l-k z{}u9$N9)bKFOY_7l^xm#o?Y9*{*-+;bZ*JJ{$Og6yXHWBB8{gTZWp1?vpJ8-{)hE@ zk)LReP&M)M{L+p+^#_{b2<9M~q9sg|{C+f}E zior*%517*v`(+;TWTQiE))A0#-#^$CBQzw zcPGF>z&jG)WWWLJ^Qot=^pX!5C#~$&Q2HVL-wtaI(xhViBCaw#dzR;64Fx>f9I(PS zd~zn@i@C_#4|{ZZN6}3H9rit<8-EAqKYhIMS;_IaW5)-}QrjI|iM4>Wa>obXU+3lF zvk!1ziL>ut3PO|(=vB$rrYYh`SEh`GDEKo*|w+KcBQ*!(QUD3 z_?doJCbV@ZBgV3hg)QFv`9W9IXLsIyFuPBD-*q@47SPA1$-t)`g{KbQ*gAaT_Jc=y zw{B1Tw}{bKfqU;bxX*#(n2gzGR(wo)I+F+UkX$h?Jbef+!urJXGv|gyv}fs#51IqG z7nX-H?Cz8P+p)XIwUsxgdAw^!ZP1J~}DhhI1lyxCd=K zomvn-Y;Sn`t|C`&=1u5@aBa1}Sc|bCZNl{bqyyN`%2@et<8V9pQHK8|4p+Ht|Ccyi zg0>=e1LZ#Rz8|bl3Ngz6I`8;NCk9?sMRF0=MfpIPRlFpX21zF#M6IH}4sAf&Ht&tJdW; z7X5qszUCtLUJz{M*+zInKekJZuVDqp+N9adwNL%{Q#=kJpHURgp_!2B5cY?MGPMo7 z{$ulL(T)R@<2~4y_GG-TM7|>L3Ch6QNIxf`T+Pg57|*{!f2JFE*l&L7#mmutX1$j) zW`IBO>mkSbComTB_?+Z=-1F4;8AuyKzDUp0IinhD%Vy+J#M5gJ{`Av3MtH}8+Hkvr zwUDbCa#(89C({v&4WN;Jv97@Vj<%Jv#_{>ar@m6|o2JT~X0%*$Fi?c`|9;-vd;Cy} zaqFR3EnN<>Y#P(Cf4UWQx<19&hVq(2xR;wzZj6)rjg0A5YXIiG2JJJ<(~_&a+)R71 zEOQxh2<$5OcU=7$AI*lIHydDUksWl*p&pM0=*aQSy4d&*-ypi<-ol5quuTYil3Lio z#J=R=pMHA2xv0y*^U=rQr2n*X_|G_RFKd<}*F!%wYsUw(ioNy3)P#NAv3pW)JrP@% z!47z4D7rJ3`cd|t0UU2F;ptBM;dLjs-88oy?@=9p{Sx07l^*Dgb{sRF47X#A-O77x@HOb-`z`F1r(k_LCCu@p_f(y_ z>73&2v4{N(j(ahEU;fy3Q{e35eY~}v?8R1UpO_mEUpug_xWMyG`GKScZ>{&=?YZ@S z1^YPqrRe(Dnv3@mdLm!+lzg!k>+iMuXCP;J`2v3Y)W`cxN8uUA-kM9t^x3ZO{=2m& z*N=($j&qN<@8C102*&vqtkWZidAzxD+`W(IcQ2Pl+;LV3yL0`bQgyo^__fJ%eI3^G zRA1NEyl>{Ue;(tBdmQ~7G;Ry(_Y`ooKjSm{k$zJ}nD-srSHWIqy}Oq-;kOMKznigU zC!fut&shh|@KyUaBfsf!@?Y$yk?(GT&9tq5!G0R;?uxbh1wKN%U%Tx#xcN!T%6xtN zvAMyuKlgli7edylpMQrrz{}ajS#FH{7y2SEY>vtO3-m?1tI*E#so1;)d-4p9-}U>; zxt;+{zS8?S=4VfCu`T@Ntz$^XoEC$TQ;e1F8mXc5!*RfE2JbB{Z|$4X1M8qK@8b*1 z*fZQVMfy47ov;b}^<*@`*UN|NVZ(K?d7|_{CHQdN=HZX#>D`Mu`re2~zs~hZOb6(M zIL~0-`jMH#W@_>^(G)20nq?Z2-to{b?U=E>T|y)OYeFCYAz zEVp9}v0XFTr$Q$_ztc7=KX7xxy_#*LYr!)G^fw-~^qU!8zn}e)p5vbP*C|ujl_>%` z+>4QR$*6OFrrld^yF($Z1NGS-*?zD-L6=1?pQk~y4>^azbu}c@a#|8 zxzEP`U-M!E=wW}E$Bd%u4sxF~HqUD3p9jBXL*_^xp3Pw%+=`sD3^`^8 z@=rCc%{cUZwBtV$!t06HmtT9(M0{?AZRrEOZd<>92Vif1z$8TCLg`569OG9M{*m z_Y*lzFb%l*c`EW;9Ol~EGNyfS2=>~7{W@*NJwE%j!dpLi9{pGeW1Kd)8Fd^-)RE)S z+s_|8u1|n2M$zWu#|3iKGg!NaaNomNx#K_twq{K1KpgOX={oem@wgT8(7(xe?oOM* z24Zvind>F``T~g!yz}Ae=-qo|3@FHX*N<4Uqirc-trEv99Mf@>fJl#dZV%k@mUJrG`Knv4}IxB%E;>v zJ@tNtaEkHZq46!_K1?z0K4cl!92yTBTE_ZA^x-}{dlvg3Kaf^*ge*tr`zU>hdan=9 zha3;n!GkczgS0Qw@gLLYsQb0li_g_{8!vyJ8H*E-_j<_3_-5=RySl9}YIm?0`#1I* zjLE)Ae9m#p{;Ag&Y0!T^o|ix`j^Flqct!?Z9IMp#X7C)iKR#y3?@hF!e$-ptYY795{4S8%N4fwz}4^3bP3e_LAG9em?Q#8=Ds57|dK`uJ~i z#~LG^JJ!Hv%n4gsy7-s1wDUiXF|o$za&XT#$S0{7hv01*Wgl>Fc?)#oxa6LUd4P1x zAIi-qEHkIjR(HF$+=~4^{X*S0W8c3bVJ-;y6%NIuT}CvUAnTiuQQ z#NF6ea1FrseW+vdvKTTQf+qEM`0TVbOMm88L zkfhEkjtc@8^jNfs6C&1>8k5H6?J|uqX}Rt2LbvV#znqr>5%6alY2Z5yR!AXC8B#m9 z>bL`LAs8JysXob?Q<@)~@FF;C$hlK*flrLfK>0d%GWvjN$d@3d9YI$PcG(%O%6>BH z64TR9cEF1{fFmFLK8Y5u+ey+*cefiC9rlceUnqAiB3ydJx!}7ZX$eB~bR`n9UM@y} z-f`B3(MP26d)ALcVG{zh0-abCps;=YT3FbPFQNBysr-GC<23zU8c0l<>^MzW9Gerz z8%DGpCZpVe+MQyaysj!gZEB#r-C2J8+lJrBN4Ev-5K{c*#{mNYn=sQrG@*R#1mH>W zPR69^Zt%Bk9))3?995?#Yp}IKgX6tXze4gij3K%|)(nlap*F)HJR{FlZg@LIqEkpT zCT(CcWjQrbmbh7pK;yLpRdG8t75qv>ArwXsCa;lh53Y$vx!lANTC>w!14{6o?#d^? zXtxgm#>8|!%86s+O{mhim?{4XS;3Wndj% zE#`;cY~{!F`T2Ky7Ve-J{=FyT?DHi(*$o#JxUm=V)ZgKaK%Y_~RPbC3W1s17=?_Hv zHbC^PA;L^*z#V668nA&Vc~~vEC=R@o$e@1~ZsA+^bwtfcTcjpwGCBW=G$lg*0PfWW zZhR0(f3I}I2nTNbGs=NcnK*45fsi+|jKDn*J#Z@#W>(Nh3I(>O0TXPfs5AmQSZp(c zY;MkBu?6}C{%;_Q4?^0&ErU=r+V;jd3r9PiI^*|vlc3cnDHPL}3JFi}`F#EZVI;`Q zkR?@$Z#d|zcVWiBJ-jiQ%5Rni1NU5ka+^me(EU=Bo_`nb`GI)PJL5gygjUis{+s4` zNRo2fLQa-F>SR3&$IH}+P)_#IclLozsBAgSzX3ScMr#?w1i|zQG z@ub2p1?k&?dg~yXCk>%6)+s$uoIqi$sl8F0XhW40Uw524bW~)15{hZdLv(*JNTd?;vfc?*b zPcYc~ag+lzU@-eD6ye_!@qgh)Fy~#+n^``?T51Csd5&#PB3&>-!axW3I5_yn#5RRq zn-m{=OYx0DA1OYHZ2cWtx9QzL;cw<0-f#xa{;@fj65EE$P!2rO7u7v|C^E>NB-D$B zfe?WtzGTx|3m7yoL%u?u1J4Ct# z1i3Ye{h3+GhLs!!I9eh$8OF251TgB`e+8c*kjXm5_b)kjLw$-b1?7wo116yIP}Ai- z4D~z!=L2wV8URFFbteRa7|!L0Mys9DmJU1JAc2*v#)u%8;5(wfc0)Pdt=AE~?KVg> zUk+oo+emgPK1R9>zyAX$gCGmFw*%-TgWyM)D!KPA!2Z7=T9T7{^G9t({p5aHeIt+y zp_2Q{uie5JYYAm*CK(zLKI3hhiZ38SF+>%y&b~$ao$+)9Mx8L@+WQM!cmpsTp9=#e#7|0M?S< zuYgUjCu=Wc)0f?X{+OsU`opMc&FX4kyPgVFRYoBaZrVb18~L1v@$3WeBmjqe(k@dj zBO_xebVysIUM68NMwAc0-$*zB^G(`jm4lTudNeZrh^Z%SvHFgLw?ToP0Qe)mj)Uk= z+ijf-#th>TXpr`(CBMI$<#XXI#!9=Y!q=pLM|u=QU)Qv_D#Nq^;xd2OZL$x7G_7HZmS!<7MhM z5V1>j0U`qcm2sxgG#h+(2%+J;7zVh}1%1vAa=qI3f?$JA1?K6rYka&7jRfEv2?4y; zr_)uclS$$me97X6bSE46C+$WT8**kKg3`A8@&)T4c&>-?87IQ4Y4@7U-x;r+fbwo# z{)kb~(_-e&coFfOHb9phaw)O+d&Mcf1vsaxOL0z<6C(=M^lXZ66RJDWCF$xGQt*W8 zGC^JkAYHYvUQRCZSyXh=6!)U2lP$FsDztu0YN>DldI--n4vI7ZSppFwG{yHxjFc+t zZjK@C2vkxqy^*oorWvC*y@^A-4S(-0y_w`~J_4Wg1^mJEHcj}|u=It`v6u!wrC+!d z{k6Fqrb=IQ1&bSCsr1Dkli+O(g7hW)pMy4B-=;4W9p$>lmmByMW^TJ6pq#XkgL-RI%IqS{;q1L7byWoZlD1{+UX@d7?T4} zL+nm3YbZ6qU()FGnr@dKsLKTOx`sl5fym39-e3+hvz$N&Wb;mM(spK6I4~MU?evz0 zdcrL~p)bkE4?{M0ZPbnEknhB+-awuG8G2IoZ8)2T^$LXOyz9@X_a6b@f~sdS#CZWXNKJcDrRJXJj+VAvT;(aT-pp3aG|PUq?B3Bh8T#d8m%^P}%m_)n4L zf}I~_r_On7Rio%$3g3Vn()m0YW_q$}52AF{7w0rN(Y|`HunD|CL#Oyo5;Dr2K&Ho| zCYvS%vpoU~NU~c-m~o+p9zigpRa1PVO;_7U5$~BGaO^w9w@xUizou{{x)T)=7q6ip zaS<@A*Lol>ocB=U|2vjN>q1TdnmZT5rJ>stpHfi$C}JdZyXuGNHM1g4FIYHqm+FY@ zZDwUVxwwYzR$LL9S$WPw*lvV=s~&*K%&dXVVT_s3JuW!d`8TLS_qyOP=T3~u(0wWo z7c;A<`|JfxM(B6y^Zo=!I=7?4(1U6w2W{49=U3SPA5ve47^O}LhC^t#(i2g+!(Xfn zJ)-pNKHb5M8YA?mi=E}1gV7v%%*9qZ(=kJY9(S?T&ID@o2NzrGe1-rIwYVBJIJt<` z(2MFu5pt1Xb%s2lt{fBo&WM@sLtXjn)lLfq_*9*bIfF*yKdFR1Q>oD3%v$86=K}mv zJq9LL))wV_iKG!aB3)WpTa|MsCHh7-5LVU>d!Y|auoGD5|1I!)%2`AE*k&3`Z)NRQP9`HW!;A|2k#ZhD zjE1_JcOb;AtV0UfEYy!NX8#e%!LSFMz?{|*OiladFlg*=5X0E?^dX--I>_G}fx5+x zF7E(m{SGu4Cn(T}vn)uL(NV3JkoGytqX5%fFz5_{t{LernC$!+rpf5!f~n5=FnPv_ zE|~5tLKtLpcEOM{1uKe-kPAA_BJ_}9yI|OPf?yXH?CC6v0CZe1;uIi+GP=58w$lzF zkwDEaEp^MK*>*mV;IhXr!$7Bi-lFGb3aB$#wf)d zv6)rw>>_xY3r=_VyP_GVyWlM6S%RZou+n*n;24EaM%!v94`ViCoGWv!V^QV_>I)I0 z0hw(LO6h6?&S~t<2)~*Niu?TqNb1QMzo%gW7a<%nc4-?Kf$!PD!`ei?zq939)P06Onv;_9S@SZ{G>A0(MW>Gs&)kkrtQ-ixoNV{F~+$3)Ho?Kz(ZqG_WBkSIB`*7BYyl+yw_a z{K+(Dg-bk)5f8Qfr(yV%JMYs0+614u6mAfF-r59TxY^4Mf-hT};H%aq_}T?s6C80t zHweCQK{p7#jhWykn&2O9+UV)v`!a^}PZx|h{3ip)FzGX{RwiNOIm!j|oaIo*G0npg zK?9v63;@S6b>I$m96H+Pg2TGkR3hB`rcQN5&dH3RfD4Z7K6TP~!%1?9M?3c*dpSW9 z{L$}tCkMIQX=}bM!C0!Jubta=3XE$(uJ*5DRH=+NkP4iMV#kbk*~i&xIpphdHIhIG z0K;7mlNm}2?%MubHCOcTIWLpN%vktsryjFhFj@Pp!u4CKQxpbvwikYor4d|Ge9|X> z??2C3D}zY4yR5apFK_Md^|3x>&|l&D%nkV~UC<5rt6b3a_Xc;Uy8hnig08rCxcKs)}Xq4j!BBJXLn)}EA{}ZR{zqu>GYFSJ5lU}orcP_&y=xVBB>AKYU z2iaIIIK}x3vPM^*Di>_I^Bsx(s#(D4&PT9L*EZ@Z0cSaFk?Xs*b%`rwVb=8o#f2H> zaF~?4h7?~}NTc9#LUkU>>C#qLKLcV^pDxwxFixH3Zd}eqZAV2yO3!}S zVT^8(9Vq(8r(&|~7CDG=;McHZx2wDzEIrn3qjwjYyYgG z&%1)bFbkINehP0wSi2E5-A9thnuU3+`{53#@K3|=xUc)+iP#ayrm1^;(^QP3+8h7CF}w`&$SEmf_v8dGHV-7dDlIUD(> z`y;XmF|(STcM(e6A9cY+&Pi%=>Ckl0`&+N+Pf`H$B;G82>CMm^#Mc$QlNc9+@AK&xwfI@*bI+!Pyy$pzP6BT?4anL(AtTJ=&}9(Za+{nTfpsrnt{9 z(w!Ax+@qr#b|GgH!88{PI~1wMiHdBQq@O_~^{^Gk7zaZEgzu5zf`grfuv8Dn?Wo9! z5Zg`hxfpK>P=g+s>K1quX$~q-(G=g?a=rl_gnU_j{)nsnI#QBhKaQzT+4BES_TMm6 z@WkjnWQ?qAK3%Y$>49SOeH8t}F{}n=MHj*t@>nG675Q@qq}g1g$E;WP0KwZ|1xWW< zuYD#^Fc1a%tk>INpTY3>5!b9Y`Lq`%5;te<)oxCggq-!Z&Ih4@A127!*B};f0`ocm z`qPQRMLQ|$ea}hIXYfXFw9f#sVYf#>E8Bpd5Z&ppYt}G|Y<*2lrv3&+Jh#EQqoNTg zN}8PbfDfqGsrBz*;jF4Rg!WHD%MPfLre%B^*14E`vYP%OR6pUIuBfI^7}h)4KrYuv zY7z4F95@DOdm}Tt{Se%v>|3%RrQH|GSvD77K6?NMBE|(Mdk%GQ4*7arz(1L=4S$?)vQhW!rW?OQNLG+e6en~^ELRQ4w@!^Nh}jyIY%|NQ4> z(=NoUc)w|HMOPR5>}62+QlC8sm8*RAY7Eh}KKsB4cu^B~2hgR_YuywyxA+e@y*7P< zqJIM-KCjoNiD7pT^col&1k4+~PFC`_7#IYM`d)+G$PIOGYMf*ADpY!c4?7X`*=wk3 z03Xchav!Nzu_9Xx0wdGc>lDHDSda<2Q{`Sy4~BQIB6$c3Z!wdFe7%Rhgf{j*C~Me1 z!cNNmZ7wbQ5$tQ(Pm5)T!DfED2yO}3eL$0BUyapH&^{R&wXrwBqiyX}4B>Y6R+tI% z+?Oz6?=cI(*?Is2qWAOzDEiZ38K?L32t*1n0rbAs9sd%|y|1SvjBV=H`$nx=x}=rf z+jLqCL2fGmuK&j5(x*3Xw^)OqRiFHkVCuiUA71F_lm7}k;Hs+6Rqk!ZfDcnupH2S) z0_F*nK>9vcyEhqS@btMxuV(V(X1 z1DoP2l=BWCvV48Ek$K=%Xw_#&vT%m&ll$DnUV@zS`rO#72eN8UF8SWU|S>4rV5O z1i>CT)6{kv=)8^e5GgkU=)%mxJt6cGIos4JXqa;d){mTHY7-YZpCJe$GhGn(grI$7 zmiZ?1=FQiSplzhW6=S?4^hl+t6MCuhFrp$-W%d^0DNg4sfOAdx(+1oV`Uk=;GS93R z>~v=~Rj4+X3OLL85^j&2XU>H*W>%&1PpA?(-@HP=YNrSZAyVstwaz85P^8}Evq3Yf z!D)x!iZqx(Vb$!EU?fB?FxN`kMb1tVH@Pw|b4FlTM;4k704ocYZ3y+qh33iNWo4~V z&dKm$WRdwN!D9hqAc!N2&9;JHk6V%$Tal&aIfCDyoILt(xw%&Go0aoV@?T-@6d1R7 zKcL#H%n<_P7O#)}tuePjSc|uKtC7hg>r77ka*Htw&zQOi04Sj0YG*HW67{D#00m(&O|z0 zZVyMGTx6dEs%7?E=&{sZh{3+Zus(ovk+Juo6{HNi zg?%r=Yq|Xr7+z$bjOt}JZ|^R(?}MUC>}TPdtt$-cV{CyU>ps&Q@1ynXOaO-c7!*ElB6v`|qe`dCwO#ef@zFi@ngIw)j+i;>awn(PWt>8CM#A;`%1H+?x!od|*y zpM$d&GC$UUC7|Aek23CnxRDWx8fCO)v`cQ4AFUJ9ebR~coCR0}Fne9z*nC4JW;PGbqE zeI!nyO)pV=$0x=2wGcCaIKH$U!~q#qOcm=@I;vBA891ja4t-a=nMkXV8&rW{2jkpP z7JkeIF2xA8|Bad=6lV(sy~PBfyJ222GA>6*MjjBdj1ORf$m43QG`Rw2JOn$6{07Jy z`9Sf8W{U4VoI5J|ni))UjXRP2)3hgNbJYJs?Uz;`uTk{p!GcA7 z`woUM0g?HJ6&SX>`5-disAcwPnYU`0gMrDJU~m)nI#?AWlk^=%j6DGv(y&Wmab@2M z5{&z)uyEfZvbUCELDJ8zLDAnGo-gfZA7QUd0sWdhyA6Yl`z`zzf?5^{=%L?*dP2(% zypRuQ@za9K3+xU6TB7I8fq_fWPrqe)%Re}}g1{ zhW$?jm9qa1#Z7xUZ0)ljK?DZvCGGeSp$hg5+kEuhV%W2g%~vWr8(v>&+QXsVN}p{Y zj#mclA9257WvYD$9$Fc;7bCJ(qQ(8_VI`V0wB^;bJF+Pny@0W_60N$n;WgFH#I&~( z?G7NOSF&L(a^*_4yc0sAVA^ZoQWSjlldveJ2tQ=%zm#U|AE{A8c1xf+3?uzhxshJ1lOnBB6AH53e#oB*gqL;Chc_9)#4 zZf`8W0wUUPF}b&gKIzeZ_mVpe8+|4(SIm53O{Eci*1LDYTNKfEN1{XAJ29+(!NAe} zyUE}*bekIO{}UNJjWCRUqT3h&-c5^ss%`2E@PFi@fA8Y_(D@+$5e*Eie~dK za{M!Zsf=d-6=hklM@PlpmUur1s?qN4xrkE>uSCbFHu)4P+qnZtH9FS4iI(R~r^Msc ziz4zs=McOTouKv!IM_Lzs!o*6pqVwy`2(bnma0X9Epm1sQle!pcBC^i3~-X-@{kMm zcT)jQQC~>tjCcNmj2fNl_FL-YBS%EbUE(QnQzd$idsC$xLn(SPZD21zLct?;6qUUg zMGU1D1W9x#6$jO6bc4-5X*cW!m=!Z328d~!j1JtIMf2#m6wp}bV<1K^It@jC1j8pa zdQm;fff{mK%l$jY4BxYfu3O5E;6L!cb|Z-F6HsB;3f@%quV50>E=ofJfiUkNNknfV zrz~IeIsSQ%1X%QWH~5UKQ zy*mtj;`vpJjp!RLKOKB;>QU{Jp%r~gPccCwD;Ry7v8R>V=PIQc{7H`^AGU_kJ#=7@ zf&0Q%^wefKVl(<0g>S>TF1q(Hi(;8~D1wpkD8fIg)EWS|<%qLh!`+Hfnw;)r$xT{} z@f05iVozVRt%R1%zwb5d3`Cc*zfOgoMux>OZLj!;Lm3~_0NvC_D5v;7#aZ)b%xeB} z3!hoY>x3f_uV9?XH+Sr{aGzn%fz-;DKZvwHLK*(wh7=N-&NtXW`$#ouZ-&F$+I&4R z&3+Q&$+4e6GR(3U_JbVuH68Gr+ptyv5qfec=zFDxo|ZRnoZle3hMslb95S3LNEzDW z-e3%3dI&uwFW1QQ5PD8Ep|MO4p%?V@kmBQilBKIRfk=~+yP4qoP$|BrP@OKX&j=DV z{L7<`ibQ;gMmPBoqc@GN1pX_*(*XG~yp-g`o6#WRD=I0zjv(kLZ#hkhkrD$G9|UL= zU$xP_&`>~?qat1LjT>Ff=?T?M(tvQG%@iYeoctUhp*;nl)INXBq-TsU|f5AER=P)@Le6e;kC2YwH9o;#1DlaCGpe0G>y&79092Z4`}Fmh`eAfJ`BK?QC` zFz236Ygk#ERp2e8qTE_dyhR0OkX0QO;Coepo|ypaHMm0sPJsxy7ijQS73c<6<~Gt! zR@Ut*u#?113=S*nZYAr&+=Y)rT<*7JzRg|4g`wVVXJM|$9n6(ppV7TB`>EW)zolw? zMwfdTU!UhTg^ZV1GoiaXO`egzrh(P#VLpqXlqFA`%*u?%5YkUa<0et$Y9$AauDQFcB8 z!-9p%ed;WGx`GQ;{mJYO%aO0Kaw&*jPi7||dn)T&jH!Y%?j)Pb5gX|RXS@|-bC)Vd z8K%-~?p6zg4VGCKL*0V1{bUoOOx9^gas@AZNj7I=Urp(-)$YzqcRM@0D z)2P{GQ-6&pZ{3*o%cppd8Tm2@v+- zy}7U&(D!||;y4{JgxLtK4C@5skpcY_tMn1vbR%X=v`VM~6rp;h%b{C-gH1ki#tUu?n#@Kf5z=Tv~9@8~tv> zl3xY{FU7ary+iFdJJ{_h1(F}_AX)JI7B%1LJxTZ z(1;&3)SrJA%J~y`D#oecK2-0+F<>qrH3g-96FZ{xwNJ6jEoeRhN8u1p%ddUZvJQ0x zU$_JV|H8G^H$E;9)R_arNDS&*4Nb#W0)K*UtTUC|$h78yQO?Xv)J#(>M+e=H;cJyE zt#gX67M0z$gY(IX|F^Ds_~i>c6vTnP>v8=KB!ejt`ZH8d|4tP1$Kh1471;Z56qWv`ZM&z5QIj{vP$lz`c|=%g-MD76z#?@Ei`nUjDnLvj!Eg#t@LIPVhN8 zr)JLs&L4`G0qbXBB<{12G*bhMG5Dkdz23?1^R*QTbYlDnDlo$IrwuZkzB<%-6+Alf?zuifI zUzo|AIkTB%>WgwC%bfes?r&_j9%DgW>Z^f}(Lr31sLOpaDH^Bz3OfB7Hc+k+PCcDt zewvb19F=&}kDJ^O`pscb#MDT(y$yB!lOQ38xsZDb@E}q2*FMqYZ3v@&G1pg-cN?S&I{X7{wT|A62)Z%aT`7a|AWT5hzshKA-`R z3IUJ}H;%_qxCM1_=r%wl_v17jWQC8RAfL$Tm~hmiGWe+yr>_lUG~65fk8+GX!m7wW zG5F2tvWXSX-+btLE z#;Ie$&$q}Y?jhetar8s$hrwIo1jzpbJQYWOzazwin{W)39wtfK#{i4-)@tX0(lAEd z!l_}7qI|03sfKZygw`DTp{*`O_`R!xfQ108(Lx}MouEf8%6F^{W- zy37o(F4Q!qGkq+Q^6=_Y4C8bO&^f&zO7wJz&p8aw(Gs3>7@a60I_J2-sUYH@W@g%z zavx#PD|@2; zDqVj;D#{zA?22_>T&(lrVx6bOat*s)8bGYOHhQzBFmLCIiVhO^tMR1gp zUqROqrQ9z*&NOoxeDOO1&uW>_!O~GW{Ke;V7~)6_7ZyRIev{d3+%?q zczvGXaRxz2J};2-a)76c4PPWUR!sO3$NfjdtfgySrcz@UqfWiT+3h=EMpUCvTI7Yo z@Lo{P7*dL)HXTO|5#q7^ zsH7C9GE$#|0<#U0LE(I27UQ%8nDJ-AYx|J6zi0BEmrJ>-P-PUaBkiRiE8d4v$<-*m zfd(bpQTTy8??R#E_c--J)551vD0~H{A*BEta9jaiCGVkTB7l-lP^ci`S11@0IF9+C z!mQ69iDLd>p0arg@*|Lj%6L_>*S`!M3@zj` z#Z;VZo&!9nEEljPuud);^%%%zFJsjA5=#=JjL+l~F#Vyb0jv{(@)T4h1m$#q2|>Ap z*mzKG0cd28N934w7#N*Lc++8>bd$r$3K#~)@R!k#o&xI|DX=bK3apa>k9Gkt z{U6#%c7698Sj2BN&;b3$XK691xDR9bAqf9CnD_q^7N)M0AD~Y1IABgFKLMUd3-O0+ z*huwN`IiCCUyjp=(UxIs28+TQ0Ts^zG~jlW)RdB)xO9Z`3R_SBZV_;WZ;*=9R>^*p zh5}u37=?+X`(EfE<_@GgGg~S4_8wBlg~0wW(i1CN4Eukm>o3O57UQ-69x8Fu*|#3q z;m?F69fSn_0q_~z)+*b_TSdL#|DiIHGXx$?Sn@>|Sy_w&Jcthp@HzmUH-cNp8zF>t zM7B7vxCNC%WuC|uC!UK|XUJrcEso?j0`+<(+jZuUDNu@e^lwM;Dj;GJjzoU99mVgd zWB7@a2k0o@B2Ml=>kUzgmK%(0$uHzzdYWgwA!5DG@TIoi5V77#fJf|uGVhOq0ONZ? z?Ghgodkqjn!v%mx2)qe!aViknmZQaXe2t*E6qVZGrBeAaTZ%)<#DE_F9>n)P)Fgq6 z*Rg?E{A}^iPi!C_IY;2Gw1uSY>B4X*V17pMmlAqGA?=AF+7tW8O*}C~JW&s7?TI0J zO%7OlVu9L4X=WB7?DqS_OWQqVDqKW=1pmHz07mB?2A zM!Wjcy?oP^IW7W6jg^(r<($7y16bNv)qoWO16h^pba(|@oxZj|YOdsDb^0o;r^Cq;qTNN~jW;Lwc?Wnt4*X0s8ge#1DIl~42o;q}7!y&fpuK>X=GGQN?; z;s_|q7FN_6>SoGv1-QG5izjqm`G^%M;;-y$Ijv_P39cFKCBck@B$y$QHi=^pR2+kP zP4uZn)_UpoH(iz}IBYSk54XTfdpaXAX=WrO&5VSknc*ePq5osMrvI&-cz?9^elmPw zjOqbTn~N1UKkBz*yrt}7S<1=^Xfd6ym$L5)S+49d-jnk1?;wZv+G4uGUH2`Hulp9q z*L{oKILs=3^Mhx7;?}c#?mLQQDsT`cUkR42el*t^M$*L z-Gt1kzR}Cu)tM-N>mnY7Tl)_e+B??Zh8FCQ{T0y%n^3a1<7icMO_9-e=)7o3vHJ8{SKWKe{2j zhW?0oQT@^4_+;i9Bx}h%76UAg87vQkW_y*t1Lgc{a4IfEP2pWA75*NlA$Sb~PsI%5 z8rY+74{8d$n!+~$mHY*#L+txg6wvd1Xnrece;{1E2Vltw7@!?s??M}el3qAX08|`I z0#pF#SA+%wDm)cXaWzZhNm`E6`$TR*)qpBM*2XO>iubT#BcKjg(G@Ny+l+y&@C(*GU>89Pr2Jlt6H> z@9)1hBxGEE3?VEt+Dv(Wu$(a8@Blrt_d>ur;XW!0h0TP;CyxpIJHnEnAD4yR>wrfL zhFWdWt#nL7V$%A!uD;lD_kp({4} zNe@0eNMu+uj2@GmqAr=_+2}FaXsV32$7G=>t7BzJnJ*S9Q}VPH!m{{7NqUs~bXf%Q z3;pmSu+=t^Ulefd_*mSIkHziym}|%8U*1M^`={1zA9b7dJche@rBWA7@$|Yf?)xjn z_c96!O;QXBz{_fg_0 zN>{J(|3jM~g_HOgoe&>m660f{8y~W&(qD4W_cfA+qqUj-i|o8IfB9Mz0(62{R%3lQdNhqt5^zkj3s{saAvpWQ+y z+1%)<9;Q-Hq8EL`wTCHXx#8NwjNfo|%W}iDhn7CY$C$`&kA<(w29ugU*69* z_i!0^4nX~gAyd-BQo#B?MGr{@_Y#kP)53!^!G8;Q9Ot%b3^((IPG@4iz8PTtwKx^? zhk6R{MyX^MPU+Yb4_O&Dj2$@EP6O)Ss4ehn3fmxymZal!E(i;|qX7ERpsmL7d(uBg zdatJNEi&GZ(^}I14Fz-=YJ+k1i-F5;H~`jOS^P&gNJpZ<(E1ms!JQM-E&-CZ2S-95e6*h80J3u?XB*h9A~%z`?B z?9r|tvL3E_8pmy|`4q7JJ{$?W`k`?GuhGZwBA*{{e0dZv)*ouk>w?z2t~!Pn`3w#t zp37V5SHSw7s85h8=;a1lp133sUyEuSv(7fp|Vjv)#76jzBo9P zGr1~~c)FUf+=4Eac;ho+Jw=rWegbDW-Y_;l%)bf6{7pC&^F7VN+fgdniPHcGThfBU zBP_g#Lbps5_Mvbw3L~o9A*9Yi%?Zd49}#7vVB+r01m=i!K%2MZcSkWl9j75iKWsE{ z3_+X1IjAY{Y6|NCl`O$&Hd+^6f&#F6`oj1)3Uf&tgNBm!G@LFcZJE$QnjPrw7IN+n zAqr2%sbmCBJ3&;u2e^__K<^XUPiO`pCyV{y&J-#xhLsD;FgcXWz-bgP#ns7x&I5EC zA>O4gxe$;aRxVkM!Xgw#3`PbRjJ74uqJ}Ti6j!6B(Wqp&OB z7*x_1&@_;h3`Bw7Y%Dxg=-FmO7&FWcq)WY)&Xk<2yrn3=5fCssaT@5f$>(DD z5JND%@QaPae9^(haN-qA7o*cbuZ@)CH=)>vpdF)=59N46-l!E!Z=+K;Vq%@~CZ1qI zMyJ6j3nOlqrLvpRX@XbD)xK2rG&;@pD)~5DDpQP37ox1WQ#N75R}}h{A zHRjgT&8b~bS(Q7lwq|xtK{QVacv*5zV@30v>e=;+a_7{~Z>XuQYHZ4#(^Qa`ck%@T za!5RJ}`@nOC=(S`f9`MPui@c_7F}{W$BP716Oi(|TfI)TgXJw22;De)OA1fO@vg?$uW2S3b*n zXwg`}&nHEt%x2Fgjg6IGPg*q&zO%$`37Gh5Cbm;2r=sN*4!RHtg>2;9y<4=qqhV zkZfDQ>cff>U9+6!zo}?&y3c3b9T+<{I+iv27tcKp6y5 zEGMu*WwS^6=)B-_!G+^MbdOqv+SixU4EG4do6Dnb2TuX`kfQvr zE?;G(2b+T%QFDVi7d3yqh}^fCZ1~|tduxKv0esL5hF4patE{TI+flz(BzWH>hgBEt z2Eh~RE0q5r9X+AQXW#Nw6XuP{4Q2xSrRaN=wE9v-3vzSjS??Rs)#I$2R?N-K`5NRG z3vz=BhUc+|e=Of-mF~4pm>WFEFnL@BH=y=+%eMj8V~SgLU1UboZW`<_if(z`7&~_E z*r+)$E!f?9e1+LtxgaRM^MiIAh%Q?)cFmuHnIhFs{<*7B_3h$q_>uD7YSr9mG&&Z| zLBBo_wfd~G&Y}^HES@`WUU2w4RR2~7#LJ5*#;(9#U|(KL+wKU!OXUB7fVW7T{CV-J zdDg8Zq<4m6qo(OU=*yCi1>$rkpv;E6UJIi^yE)Ma;5n1E4LiAE{Iy` z7+phdLHC3Ju1H&0RH#*ylkC1Y0yvsMRtjt_3K>{aHJ zv^DcqLzWLbo9tklOO6Dev(5?Ly*k)ywUrtSTYp&&m8@$OgnAp)d;E0p&5L(iH!=#9 z^`d{l5st z>DMn!Tyt|CF;Bs|+MQHq>P6yAOv^Lp)K*p0O>MxOs@FC%=hW9VSJdFwP4xuainhK^ zuUn3Tn^)C5xxTTvs`50wJ{XTV-J8S{c~ma0tC(LiXJY+?`o^l#ipr)Dv)Q+-T@&fB zsy%;NMQu&xD7`Q{o;;0J^XnH@O|4tdR23&PYMN#?R$O>Io>+o4vCr`}b>|-se_>-q zgP7tt^327GW(2kw70orXYpYx(k3;9`hhB=YhOUHm$Lhu1FS)%*pEsv3`jrIsso` zp(MwC_9Rq+*ZElAd234pzf6?~8k5D>B3o5SO`S1j^32I&CZ0Zi)Xb5iMw~Hn)Xb7G z6T^|Fs@l1I4W7f9!^0D&jvvo1>Z+2TGX72r8~@LNO@6CLq*-Z`Wz0M1r5gWq>A^E9fm{DS9X}{u+s%~=hxL=SQnHzYi#enD*|4KfG&@8+to z>y_}_#`^hTcW(vWO|*VR*o`BP%77hmDwtQ$M;*M4916$dw}J6FTHmJn1&wp6`g-+Z zM{kFF=~q^O)5TX=J+v_5std=nyMxm8aFA8pYTzJTGk%#*5V;W?Bk#`x_$6U zb-6h@xt%Zeoh{ZQxwf;*3mn5wT zN`D^R4$ut*KbP*Zqv<@`@GC4oXPYm88!3IYwhig|;nz;q;hJE(QtA^Cto}+$I%r0= z?@3uNvwr1U=U*GRH0hGynl|G}34L5z-eDew^6_-{X!yGH_di49>CJbQ`Pld8?BmJC zw{rOvs?o=jO)QBA7Orf3XLNL&XQC}d3y&w?oGTChjJ_^UPZz%BviWCx?eXKQAG?I+ zIQDb-d9-|X_dRU*pKMKaARca>&EO>!hiP0CK#4@K&* zRL$Upb^@bRUO8S88Id#_2N>}}v@+bs78=|tRWo?G6$coFc>PGqaf#USJ{(}g3(-e0 z(%3Ryb_sSGFRx0mjF)}7mY4lfEaOFU!jnP$*?Y8jB}m`a|##4w#Ua!#F4~ zuN>itnv?Vh4hYN((Fp<*;%1`-(oFoHOgfyV>-Lz1vm&ETac4z}i% z2_msINwaa#0WMk@F>ObpYP81k!p2JSo%BPnr&P`0MZP>@TomS&`6aO%lIGz+H@py? zpe?~$rD_H*e1{+MhIwTIN@PURojAaVmsh383@o2Gwv1RdPSBa}?h5v8{s|0yv>P@r?N%!M`Rd_ip#n^Zx^%1F>!OQnJz$leh=IBI5 zB=w;Vj6BifRWZrfYOqkv;AJ!pGUSzCDobQYQofK0hP)7+V81xFjM#F)PT^&`6w7#7 zr)zmxuWNbHoMN7@L=_M8vj!L4ru6n0VN4yiYZ1a3yu645viIbblT4!QB>e~nc=9r^ z4U5yh$E6y#ZBZPIhddi_pvW&q9o9vD4T`K1A}`LVjGVHOUttBd*(YtLvJJn5l3<&7 zn@Mc*v~+pqeq4Og=1lgk`-$bBc$>*=vrgKS$HgpXm%2^4=U=vIMzv{dlq(gY6?oMa z+31ntAC55MaR6Ulge%2nnWAgjr7^x9tz|5Ibj5g=Sb#+?wE!M(j~wiZ_#Hkz#b=q< zO3|Z~R$rv0E8=w-4)}%_>P70ExVl0WB?wjI^|BM3kKjniVqV9n>WL1tYh!U0$4;f! z)=LabB~gP2HI>Glf&-qLj*AY5sqA|tjs$;toFL}tAlUGq30dYfEWAp2AwO1=k*n3{ z1WiVJnk29rSp;@&yO9a)MjnT@bXc6WG=a8sP27dCvEucijI-0-W+;|JGOCKA#{fl7 zMijkn`A>vjNT`?cazu({{HCG-Zt$E(==B4=$7cgYeOTs|!!2Rdv6|MWx~Pr|FwGNy z6dq$Tpi|-7c%v!tMlm;&kiYE!f5i!>#tCB+h9{~r%GpMXQ649Zh5sU8mkGz1nzaB~ z4b9`&GWJ(1GR6qEz(oHs()K}nhB?Ij50M7@kkj$=miFMZ!!b@V1197xj_Eh0pBcRD z!+~TO;+3mym>LtA{*d$w98iuIq7w#L99tI0#+Dgz?4&q0mek_d$#HDVA?zqsI-9`@ ze{Y*2^2)`2qKG8zi31|?BHxmXFE-=Y*gQ89RHeEBFH@vgHXWB)y4F*E9l-UitN5ym zt}5G%B421hzr1XfVyqL25yZh|H!jH{^hIG_xeG~DfTRu%Fye)1#Gxld99tI0#;nM1 z!o4SLC-2AQBPqrrZYRK9x{4QFEaPRQbP_Z7Fn}ARD&{>>=&Bgilvq`4gpCHT@w$i2 zxNOlyPxfH|Nde8`gk@7uQ{I|zCBQYh>ULc2ZjEgQND8ot6PB$<4f{l`*B?#yk*G0) zmqR$X3gDI7xkRIr^amVh%?r`Wz{^zn6UUYjyC;>{DcKzmI5<$`_kwhrm?`+9H|vD3 z^j2JM*TvDXHl-f(HNcRSGR`EHtWfl@WTCO;acnFaD9QIY5(Z(s!P)T!v248+J=`jt zO}-tMyQNrqY-dyBZDal>XLg9rLTIO@nnFU?3j9exEq=@jd7vLCZA#05osI)0K7z~l zy6AP?6GS8iHr}R;-~KGpwH{$Lz}nVT(*d#?ZR6N7ew~y~K&{u7E*d8Gox#g!90-Uo zuiUpM1_VhARB#Y%uYfE|d2gK?lZ9T)OR=#gK!%hOfkaVc+&-47N)shYw| zvc~eFIZokan6BkTGmjaU;2Ocs;AI^S#y79LwUDR|NpHmg(Rd*`VGfUD%RDTWZEIF| zc8lXDCE!;c2S3@vC#0XSSKb=GnFs`5#HQ z>Y~@>tFYjk+L(tS`4=L6>1Oo46$ebb2N!-#3B__Soh~w!rh<36@GpH2m;JgJLRStB z&}QS3r;Fvd%+kg6xNO!%{-R_=WGUspBJ;1G(99F-X^2G8{y*N{1w5+iZsXlU1`^1C z;W9CjfKd>matROwEowq;L_!jBfk4qAkO0vDF$oA3ORU(^N)?qVD%RLyOD$Sju|>s- zig#>Lu|=yEFSOWdixw+wsh;;;>s>QDlkk1*dCqs{dG`GFe_j9Uy4PBJ@3mnR({Kjg zVmxR~ox>0mPO(aR&@yN>-3To=Sxuco502;=4r4W{Vh?PX z39yaj#f&#$aLwF4-5B8jPMBjxSR9LFQ#2BnRJhpa_q%b8&+o=Ht7CpQcIS74 z-|q&$-wnoZvu*Pm*6^gwH026HiQdp9Oq4G(ktxBc(*>ta6JG_O(M}v_^+$me6MQu> z$i_r$vZk&Yx^$zXiN!N37SAjOnq~aVBC^eC1u@B*5|gbd!Ibze`V`+ZMwbu=ad5ax zay{7JvD4{M94JwO)^Pz@+Zi$2nJyVIzm?ADAlGV57}d^b1B^D}@YR{M5NQmfnC*URmSR+3rF@cH1;LqwNrBjAX`aXYl3B z1J;!9Xdbht&QB>quD}65^MHDL>TGi%(gkc|4rkQDgpOhA95TnVa9|olU;rmTG?eP76XP{o<@a0M@@Ja@LB$Kvt z=!f5@!D(C6`y6_on`KNlpN(~C9B?rC91O>B_(oB&K&za_=opWD)g|6Tn2Z7`$^v-c zbR)3Ip6&(q*;D7I0GiPc0y_Ft`k-P)pu;_9O5n+JI1nDeyfltnFw7Jibu|OAiHz2f z1BfKWWLqtB&^oM*IjrUTNj3{=V_8re%Ys@L&t`_HILN~3P|YGAuP?w1}mQ{63^G@NbC`w%}L9J4sx}}UldX>6lwxbhTYr3VCy0V6#2t z_frZ?mRB@Gr#7QkMGo}hXM@o47Nh<&nL1Q)1mM>3BIY%fN54%Lu7j1d?r+qDtchcO$C zz$l(`0#A-uVdEN}FpG^dM$T`q8^L^p-Q;+zaiRXR>|np%ugCf|TVr~xU*pqb{TiPh z>(}^_x_*r>sj*p;FRAPNQLJ0DJ{H9~e-!KdQLOVvvCbdGx;5S8=30LgYuD_KMX}Z& z#ae$9YyDBI^+yp~uGxmn-+=?;$(_J1a~f^AE{*EQ?O34ZAbRc~in4R>y&hgSSnq^A zok8TF2Qq;pTM4NMN!xbq?Q0Fh^|Qgzcwh9LFhNi}khrn8xOE zZ8e^G1RCoa?Lv$>G}kC4jSeTf@rsNhPY18FU5h9dehtHC*`P3D;n&2%k0#XR z6E02BVII#JLk3d7b8@&zO%=hcqOpsP=dN+_oDs4m^W4SA^Y|peEII_`Iis9vqpT(u zn<(cJin5wfHsc6*a|!k_^y!Pe+82AZFZM272mG0_H){sZ8M~sX@TIK67j}g&>sPs>uD zmZd%|qazF#HagGa=F-5xjo?Bzf(zaVE_@@n2#nxjFoG-MCZv9|%?M}YVnts6U#6(t z-;uVj@ujHU-;uWaJJNQ4N80Z1NMq~TIVf5Vx6lj3MqM+wb8Ce)b?Iz|*k+AZqj=j* z5&OEoXl1E~BRWQiF+Vd_!=&Asx)3?s{vSuGe7l^3QGfk`pENT_Ji%Ov^CashI%H@@ z5Ddx}Og&t2WJw(XJHVX5;V|DNhpE$XGenN*U=$nL&EQ~pS7(PU@X^EgdUGxwJwD$( zX6%1$07F*Ev`hoc@xHjV-uSvW@G2;s=Y!F@xIm&dK|lP zG~sB&;eNYh{{J>y7mkaE;pE`>PxW*D_w>T>563|qM{&4cN)qxPhkK&NnLh_JKF`5N zYxr1zd+vhIP|&UWxjna?J8po%hiUf6-41X!jx9L0;aHDjBMyec=X$pEw()Qymkl^7 za5U2l2Os-zKPPt=4<8NrPvYSNF7ffW@Ljxq{r}T&_xi&9zY5Q#k58mgFXrz-9PY=* zEV6Kn#4#0z`<=*~k5$y;;KLJZeeO?Wo`$>nnK*{y;KKs$=Qq#wne%S_K^(j*&D+tu z5zL#_K`?}axA6Jk^AYeE&-IJ<$J_Sww+`HddZ7SExbX_w9t?H z`R%j1vFEMtTpXo1=HYNZ-i;oFJB7UI%samBM{{>i+Hc+gH(POR!@;|Z?&mju&S##J zivBGP>f+`I@4{`vxp#{51vA)J;K-6a-KF{5O@e#+58?>n;0@HnIG)3?564y|ys^i97J1)}`!l*9KSE5Ms2gvMP&euj{XypK9%s+nOT6df zenFgb57MddOaB=-CgI@C=Rr6;96=l#5$0hWyl=-FMb$WXdyO~d7#_pjf+HIT<8wb} zPIudV=Fb0r8?Ou3=|lf*I8LPZ{}=9g2mXHxe>?Jm`9ppF6ZbA(Pv~BX@5g}PO&kX~ zFu?5%_v4+hV>piENTZ#8Co*3Tzudoc6As=raX-KL4xjl*tY&57aO;I`36T?z%n_)& z7>RRzrXUmLkE0rH=i=Z^gbEx5IHuxozo~Gu7>5gQQWo6fV7Qs!QHA>^cm&5z99(o{ ze7q0h;@gKX7+*V%4jk_1-2J!VJO3`;|H=O#q}%=eTlZXAKaPXx&c(sCU#2?=2RBUO zyGKD%Kjt0tl6krw2lJG9?0$axmEG7gkIZMC&q3YA_|eUTnCDERTU+Cdii>ydcLe@8 z0dkY2|I{DD;|+)t`E%jBU995Wae_&`HiKJmd%5%Kc|OVD{}fd z`#sXv**kMCNilxv$LVyue$JgUr@LGn?sp<{r>8&P7&r5Yiwh^pC*}ud`2T5sI6d|u zFAn1Pzl!hw?|59jap^fxzB#?xRnPuY_b&gPdkG-9T*P|FcE$2LQTaIc zuH2ma9q_vc$2J_>anS!(9PXFJz8U?DyDjB6=e?}%%nRVhnR8lAcO5vk;NVnyJ&vh3 zYH{%XVHWr%co4^49Q$!_mfeA4DvrfC+^@K`t&rO#Rr6J6zB8LwRaKr}l2=_)UKS}T z%`1+Sm6sKEc}txxi%QF9!L~Y5R#;qK4KIZS_U+p0!pgkr^2$g_b>Z|#)wGfd53y9V zEL*t>Zz@-`G_Js#zSd<~L1AsAsAkTb+1?^MQ8!y?MVcCxVoNT}$oUSj$5}jHYi@36 zXUel2=__Su&-jx-e2U zy}Eo_VOclJ1=z#@TQppSc#vGCRBuZcSDEb}u#ZHOS6ps3LCbe54<<5%#jUs^S8@lp z2);+n6kDa1E?oHQW0(wX7Zz|8mWooPt7Ysrc{*X&Bg`-k?L}!wx$Y& zf=$0r!V&CZ(N@Q|w;6Jye;0yQZ(!0}y#>o#7PTzH`}lRO zt;-f5(uRh-`B;F#78&`=nws>QIjh!;n!?K2ktsDrMTM0}3pOv1>hrNnS|pawtgrdi zrZ6KFHC0nR6@Jn3r3;WVtFRZ?5>8FpzeCDSX)k!xrr%bHd+v_!DYOp8f@tBT$9h}~}d5kb(AQWR`yWICFG zhh!~X)S&*3P0C#=;!3lmpt7*Y?InWzUbS=qy1=E_0mbT}>V>@q+o&blvZ=RMwxC`{ zOzmJ@cLi8jSy^6*tIjg?i0B#{+fWsetzNTfPzx3}Hr1ooR0DRE&0RoT@0K^c(8Jy% zEp?vV_beVk_vIH&EUVLz2Lgh9^;dRMeyXA}B@dX>cc#*ax&DrRRY_HRR z4g^_L*?>(2p_1*0rZ2}i1HErp#2)Fy7$5!n9(bl+dm8mYS_cblXTy5B}kP7sq z2opmRJ2tV!k0Niu9v^I3$X{G{*#gI&i%P(f>(p};)W9PKMW#-1Um4UDR#w**jbk$; zQZHUrlb?@qil;c>*j|Y$ut}$J%xg?3t}&5WmF2iFO)Y_HmHAU=chipCwp3lS)m<4) z6*f6gU091D89NMD%WPZA$7LOZC0vubyX?9e-cpC{e>D6mF41K-+I5(XOc_8l)wp(> zZnJrLQ7l7XUBr$ob=mADk9o7l6exo$M8!b)x3*13#nzQ|k*P(d zgX%owF{8bzhBo%%(e5}>JQc&U>N+#-G%jkEVt?JsqYnI?QFUH1;_lp{(at)JiKf(4 zVZ?w61+C1rGMe_H#wPY$=v1Q}Ye`vAxv|%k0&Sc9p&dGyhHU$MbTi{jH#6PtEgPK% zl$fD8u6-DXl@yqaLDO}$1S;?vYzikj4PafyXtRDfHfQC2K}=w@j+d1el~+#Bt9C=( zWp*!MZV-gtWl1xNyP~qN8soB}nlcROF#Cvj+{hR`c`HLh8#lqWdZy!maYM@rG+BQ( z`s+!7rwcH*#%*1^tO-ti8D!f(cll}c?Dn$el5BG&n!|R3Af#TSc3ww)HPY?X|K>_(LKY3;#VydUMIr5cvv}?tfZ^7l544_pmYB0Jn zjA)Km)l~4B%y}0Ju4L)LWnS?VjDw0a6JcdD(RLYMM#{^lu!5ja&HRrpO{ujsEQBV@ zm$rGDP<8EdF#hgl^EcEgdowkzP-@Dim6gvb^O{?m8>}+^y5$>sqF^K3?KrX!TM3&& zwv{BZd?}RblzWwh7gZMr<$C8IGkM4+7Ave>ho zVW*~nQH`0V+0w{cu%My2b63)}1fqHEDT_?PJNNfy0*4BViC;a(ShoJzir~tGde~%D zlvm;MfXiFg$hzHEkUpcmY-J&9v&k%9e`$BR^H2=Pf(7UsZR0|hlM{(;P3N+rsxqJT zv6x$_`FfhJ>U7--5n}*13^G?|Ge2tc%)k%R<>;9=R%U%@bYJJi)}0?G-!fbZ1)(9 zUQV#P8>XTyXjpdQq!E|B%GjOB+$6SJm)UC_FM6iO@nw^@(5zD!<+vQ9v4`#5 za5=16KHmfwH^jq~yrDUwVH0Oi-2FV#+}7en2dh{YvSTw_$6Ya*0ZaKbjC!#PeQV>2 z26WOG7IM5gA<|9di46`T*xU{yNi4XSz7l;1hOfm1X8PKQ5oJrnj4tf_+g8f_@-mbT zh61tf&Gf98BiY7M+|X9Zt})ts!5GceU8Y!!1=R(bKDkcZ^;34~Wd-yyb0sfgM|G$m zu~8joSavGa%B}0|K-kQinc{P;vc5jdE}50)RaJXtyuq-{3V}J{EYE)tDkz*%!wWx0 z`Pu*-6MZ=9TI;nLXSAU0n9=rsW|hh=pDB$Vw>d|^Rc6VevSEQ8TA0k6#BK8;rop)S z$f;j9D>2yW&uo|(4akOq8K$ZR>%OV=_L@x9QIi&CnP#S%Qhur;1W=ZWsb7^*+^bRTZ>(8G*!&a)y=3I^Fg(`C3YeeS+;N?8zIYC z8CPU?g*6QUvotKNjaj^GNyC`>mgQqOSRJ#Zp}w(>pG3g-9ng=CLDl3}4Vd1>1(79Y z>SrdZuFsDyYn7Jg6>!Ncf}I-cF)Bpe=CITDy)g~EI&+qMUBAJHDbjL$IziA_{Jvs&4?%@UClr5ZmmQxzy=mVOM?4T-h!K$LWg% z&=2Pm1(jM+Q@t$EN^RHpx^AEwy=<7J6;}`KTob+al=7-VlNqrY2o`Lj#bisb+O4Ew zq1o+PN>64;ijPfT?ZK?XV5tz}{y0BOgln00z5@e0wv1lb)rhr@tz~TWGZ9TmF}~!M z$ta0@b1949(;es_yUBE1>bltl7-K7Z@xhI>IpfJIos~D+_9afiS$UOZY?gLpXohRC zPQ*7=G@S%*$VAt??ShEyB{+;T*K_u~X3$|LnC1e;I|vJK17g1BU!7~I>6;>$2D$DC zo3*yAGHOF7tletOEZX%ld*gDmn2V8iM_w%d+u;E=3g!}AMBm5gRO4Nu{UsG!)JJi0 zXpPt#>!Y!*K(km@M`i41Ficgo9nXyNDo?!>x?ffkbBRH9h7WE6Yu7nD&3#ajFE{J= zm;;(+OL~j0G;?hRTljK`RBJOWjmxlHXlDLu5_b55WrGDRjm^<{tww?sg_Zf3Bb%ye zTD@IMu3r}6cSM#hSY>+_)4j0GE6;F|wT`ttb;z@@B9u1;tNL~yXKj`zHNqV&G(X`-!B{@WcV-~w%WnqtPD0*Hl)SnVR`>66(@|*qt2L z-MAYUW`V&iX1n2D3#uXSqaoLg4$f14X?gxMtdU^wiqv*m@^GT7W~}TirC!EN@8>pkJTfF*Xbf&lvh$(Q(1^{2-o&vH(RhyhGH9QG0p<( z7BtMUnBXmMX|%I}u1RDgG8dmnD@w>~Uf#MG-H@A>+VQ;^o?wdA)i-@|jKj)_F$^bg zyd+}8%jCJC*mMpf?S!|B`q6tuoyQB)3kyo{HEnZ+@8&rHn=`tbZO2W#MIIfzYJhF4 z8dr}HQUwQORa|n4_P#F8=vcY9GOuDP+|D%9cP!G_B@0{*xQG^A^)|DN2sT2;g#mXR zkh0L|`Nx;6@Vtcv z%C_NfPj|Z#ZU(7VWIZt5@*>xy-R0F+QBAhH2QT~=k+Slt{Hd`uOJo-xN}z&WCej6k zrPX=SJJD#z`CJg~Zq^^YApx~@5ho)tlZp<-GFVs3_QAyhm+|M&ac@JeO-I>84L3)5W5#tzP4rPxG{xl z;m*1GM;j4KV!kZ2U(P44gh8ta<(Qt?ZeN9j?4ICeVGvB4t%?42UB|(uZid3u{M1AI(hVoB!RB{$nf2V*b#>QgmC#E8{A34qk|S)*335mz0I zSfeFlXUh0OpNaiEyYQtPh03;MT`O5+x-r)`#1!c=%rSQ%SnV;0<}*2FD$UGfu9yqA zt%Z4fTq4>~BUR?^a`c-iwrMh$=u;C#m3e$}4L3pYi3coh(m#Tn!H+Ux=-0LwRf$6l ztdel%j*ibOX82~RTv1}Z+ChdXQs?S|$F{yDr7G*dsbHfIG=>_vvRO+!~ z&EiJa5v0A5X8Tq*rQ(IaU90ST8cVxzlX#P1C8jg54WH$S2d<`I)G!72T2?fgxsuC9 zj{l=~Kk{82;1YnnSm1#UbC=C#dZ*cf(%7h3F4(ZyubY^L-P+_`IM<4|Qu-AZ$xheHZHEYgBoNv4AMM;*}`a>AiY zB(h=|re=JM3WGb{xo%y&kVPNSsy*wg{}xsGl#9_Fn?%%>l;xM!;G;aYh58$=9XwZ5 zmd`9ftwW{AH@94jj<{fT8hV-z^xG%sg;aH`re0m}8lb~+ccFZe8KHA}Y6u3`a_t2twQZaU0pGnRypKhLj zGKposYi>E?CZT4CxE8lW;x6(Y@AhI^v%)=fV;;y^WM@%W4>!Gi=jvEkh6k##O$x)ZeCF3)AME3nTM@e<>i_L0f8g+=xrpUG{r!VxRhMYsv58->y3d3U4D zl!d>#+o6VAY4OZ>x7n?W#CN^Mx4q8t!pb_=ZRgC4jgBHJ`1vYVQQWOabEAl(XpNcM z%%ZCqS1vcpF6b5cc%gkZWvr(`yUhxBso@C3t*sz`-4(M4Q-WA-z{0o4tT70>=@lkQ zw>)NhF+8+t+W`v*xA>?7t{?7UB|8$=%s@|S#@8-h*gP{pXv3A4wn%~+G_W>93Ohn{b?)A@lQl{#0z>#@wU(hZ?n8ZfR$t-wPsW*NX# zzxbky>C)**TB_zB%S4toqDeE^xcp9uU4u>ihui4Tq@Z!(Lbr@>uB~RJz}$M|A`k`* zSTjR^Xr|pxikJRzf%O!kSmabmDH6PL15NiRUt-d7R0u8pqXhmsz;<@EJHhTkh5t5sB@a)!Dfx z!_4EnOP86az0EYsjFh`;^fi^mTxO)Ywy{N@M#IO3`N$}3Y$MLc4bwb4LAc0_TWD=8 zJ1J0xN5d-%E6dRg&7}xKN%ZEeSPIo+JJz**!U{80w}9lCDbFG-qw_hK%gsLuxI$BQ zU+u1JXl`2NHKXnD%7(tN1?vuM+_t~!G%&_JVXkzsNZsuwTcEsyWrw9*r#F%EveMZ$ z*{;9F)d!vbLObp;BeCv>0epPL_pL#*N)=tbc3p)T(At4MFWn~Pb}7;>Hkb#OqmRIL zvsS`Er=BZxkG4jaJb9y?89xz&!Y&{MonfcVxJo@*FzK!U&t_5j*_^wV)k{o%IU!|UB7vo0pC{V zqp#+cSf|?#(dNr1qtzPFyPDC%Om?DrCJr^$H9foLX&OmQ6>AG_$(iS7>Km3W!*exe ze2&ndjGOZ?MBm_slSAGkYF@@Jq!C$<5h8mwv?fGk7KQCY5pLLLhJ0Ns2zvC`M==qD z8L=1gX+Tq>%z*6*vjnIMhaOus9jNbG5_{qh4;GEH&m=kBeXZ49{V+$tGuhD8ycmGy zSIM<&ttXk;j{jL&jJ~>lU9@Xjx;%2rD;FMijXk~Z3V^G&or@T=Saj;lV>eK69ULyn zsAwLmBa)>zIbxcZoBkR1V)D<=%)-O}XX)Ahym5HtsICDEs9u2YTlLK6lWVo3@+Nt` z`XuHh1qK8M1;T-o6Vd{w1P1p=PZ-+68{N8U2`@(V{N;-xb@S&lH%HTnH8E=sJ{g@-1MHVsuf`o7Lop6omW@Wr>zbT3qaHgt#~<24 zEG)vi4H}O9cFoJ@^LhhaVzFa>iAPkT>UEY7yf+%pIWFOqZ#16BX&8-68-+H2>>r(1 zIeoNmH0WO1`rpX+P`Q^#FFDKs{hO2oWsY}~z1}(}HjNE<9e6RH=JZc@NjUiaBjp4f z{FyJV*;DgRJO1!4t8wplNB{2U;?0JE^Fup^ca5|3*BH*FzI5xFg-53OL0y=J#g@s zb~|1cbpm9Uq|0zlcP?LQ@5IIvkloL@TL=Sxyay03_6{)RK{Z{xSL2-Fu}Sf_8sY76 zfkUP{+HVj6^UJ;4GhbqJvWs^;4E*sPLA(_Rfa&EP7%twsaL#buZ{GJjZ#f&Ye$H+i zWOq)h*Iw|v6>>v3yRA6)$D4a~ET6GQMl{~tK0i41roD)C@I*fs-Y&@g@TMX>?p48b zaL)*rj$h;4`N64oIl|lS+w8;Hy(M?7ul%LI;d!&znDnDN9*0F4doBF}9-2|~=fe9K zChnY;YvIoSa}qvH&AQU;?C5U16F}#VdE_g0?-y{_-&y+H(a2XVy^28ruN|9xa9@I3 za4=t(Ps}@ic>9J0yr+GesrZ71%h=Cv9`ru`B4)$z{I-<+F;I53(E3X7diuS?-t}V6 zKFO3NCFAq zR&OqR%JvuVZo|p@ICkKmJ;PrgO{Ud{-(j>rYafahfVF3Qe)~buYzcS|!XguLJLux4 zY=1VqjXrreESMg@{jO*>2E12cu^+NOzbHHR@8aYLWTu1hF(3GWy>*glzAah|R)2o{ z&Hj}BP)tVkGMmQl1fBlebji6t59a)6(lHpg{5uk@X8~^&?D0YtQ(cO#eI2iOKGaOz`@6 zUy9Z(n)LAsC1d{+lx`m{0-1GzZJzQf$Rlx1Gs?F>o{Dp}Bg*$fZpQft$!cze_Z%iLvDk7hU{;H z%nj6-Weo49kat0L`o9R7b;tQX1o^nn{tL)y(9y+*V4}YSFWEaK7!`4n>=aU;DZ}!PcA#d@?+~94yPreHBPM_Qkd5=&2I^?}Rc|GL)KKW+IZ~Ej-klCl$ zUtjOLkkfqf7RWh1`98?GK6yLjQlI>D$hAJ1o6^<$9F`{d^!ul32lg1pHm?}xm@ zC%*xieSp*VAmsOb@*f}{^~oPXKIW4@ft-c<<@|HAJ$?n($)7`JU*+T=`rc-r+z0YH zpPT}DvrkTiywfLVK;G?>PlvqMCv$VX13q~)u!$H@bu*IL_;oD(PK#mQ6S15v8sfj+6fpClByVim1=f zIQg77c~YEQ5+_IEWPX#>{TTk&;^e#IgCl|-bbK>NskU4&xjA)quYvb&1ij(h+lOK+gpO2Fd#mS$<$qBw8hAF=|IXh0C z5hu@s%<=A2v}x+UD9-+>IQjZG`K~zm{y6!mIQchm^5Hl+h`e+^re{c;JSI*qj*}yC za&w$~SDgIQIQhvq`HeXFlQ_9=bZ%nn*WfrgGfwtzSjzO(#M#e}liT9tZ^g;?$H}_g z;9u7Fzb|X<@eaq^LR}V)?Gr8LvDx9+;h~Ft*P9ky-9+Dv>GCXGSGVS-u8FRzUFRE> zM*ju4(_&vB>+0Oya_2kYd^i^ir%)e@*-QD}e|N9UnWq#x-|N8*_7m(&@t-}R*VTL1 zw^6&g>GlQMuFg8$dgyBH+p*)s$*B0>w$~V4npc)TwY-v#4tIIse)PC;6DCdU-e&B? zv6D_N#_u@ecbxG%-uNAF{9-!=ggM^$9dG=O zH-5((zvGSH@y73X;}?Yp_c_LIj`5pgQ)>L?7{58jZ;tV6^CrjmonZVoAzoSmXAGgW(r^;Zp`~1#_9AtM8v)(VZ!Zfft!fY2VNO~yZOimdD+iJ zUGw>9s}gR?;tm})Kq#MrZO+PzimD2EdlB#ZMBv)q$wx@0&*ftvbxT(n-Efc4z8#F4 z!hAl&7`piE1;l9MbLLNz-K?Q&cK9^K?c61Ji&YQpL|_Aj;`U*RG-6*P6YhL$!r}AG z)Z!Y!x5M}_m3b7mlXtw^g16G`c7nJ8&-{p9YD|_e|4gc_s)*X`MWSscvB#yEUS^`z<^(x|%@6BfWuGsIG%m#JWR2XAu*Gab7tJz0UqK=68P86s@5T=I zJTK=Jn|C|ARt@vCFki$qL7Sq91?Wl#nZ3f;yQ=601WW2JM{z5SsF`^5;qutqiP6$U zesuDVd%%|?!P;99DwsX3%pG9{=H5Rv1%&6=>$rW+B5V=BCyBE=h2#{8=^XFhz3IeS zgFsB>!DB=X*wZg6@~xFCTJf;!3B$I}+iLnQ@zq&IYz4mfle-RB0A+1Gm%czHLPZkJO*R+buxc zPM|b3wGnRz*x@FW!U;FtL<-CXGf_8)4KFj}4I#gYzfWbx;7LL4av5{QUFXc^5;3Dz zJQ=o`IxFPLaN#SAMsKZ$NjL<#=hUCXyvg_RC#F<<72#vYHdcpLY zAYEMk+HQMaJt75*Ney3e)r<^T$5{d8&NQBF^^>o}I;5`?b&y{(- z%z5u6{VuzPPV!zS_1FNWRbu0MvI=X`bayxI1&|%sfSA0;u8pUE59_m7Q%?Ur?)`xD zp8_%+gUD(eWSLz%Pya5~TOg-zK|YZ8+BI?$KV|5#mHYwL>P0NZn)L8qD#K3$2g6+k z$aqH59^vMaKSa7oq_>IOYS*YKuanGstPE!p$Z$53D6j3bM>u@ug8Jz*I?q5rug{4JLGO7cg@XUQAL`>-}nBL3avkFkC%`+ej#lskDp*6_&( zkl*A_aLZuGpZUlS1yP^5B=Upn>@?p<{uJpZe}=V4 zkomG3WWMeJnJ>?g2$$>IY3F0jjKl}x4uk0rqEcf0GJOZipQJwILvSPW;WE#Xc`f;K z+}k1%Z->Zx(TsmP$ar>;Gg1G@S%?oz--&njoAdzpINyOJdBHwnBi03)+Fu4cukWZuBv5uJj4AMcu z-8>TMZzG>YeJ7toy^;M<@i>WoWF*$@(w~PuB=WzWd;$JQgwswUTz(*l{mVY`MYIEQ zFX}%D`(xyfkgw>gsDFrj3FS|szGcXKI0<*zl5@#lpOBcP4w5ME!=i_0C)m$~ zNQ5(p+>df1Uqin^vYcc;nfwj<5AwH2H;H^*DXtT@kVx-tkD^Bv zy$497mmeQudb3kNq?aEkVtN-#-bf<8?c@Q3PePyPNa%A=_Qy!1E7%`Ixj#2|bRJ z+mXKmK*Y~yRhTbXAoF7+iTubW7otBRkuTLC`?;0m&!88HLBJ*w{mNDn?R%&AoOnQd zUpz*>h5lk7h;*ch{Ad&9TyY*qz3M^gwV1pd`9m&3`y>~me<2&87kL@_U2rhM=>S=d z`^cZ-x<#TKLxZfGMxtI#l{}9``qq*^gMV?i_@?+FiF`atzKnJfwsMes1>uu0Pm_6u z%(F=3R{{Ad>Me=#tS6ywlh`J%7T1z*BcDmcyN!guo#gLPpJjef<{y#=QO@K$sDG&- z{HKxVNBI#e=1VP!e5ogIMZYGwgG9dUlbmugWW<|BB3;8JXOT$nWD@DACZX3{66vWI z+sM7>KS|WfE#$kH$oEmsS)RycK$r zAK>~x{t4wyqTEx`L6mnIiSo~uJc&fVR6ru!QgT1^m3=b_J@||n+g}IB_P2#Z``b#^ zpdOO-=!eKwT-V4ZlqFpA(4)qB=UD3`DfG@66qf_1VsL3i=`r;iDUX|!L&A{pF}$6kw{-X ziS#Wdkv@JLi+b!Lq1S#A<#&uk_=AR8W|Gjql!Uu^B=l<{-$egHqP=V;q3;&*cI2nH zi+mCNH+dKOms3H6&u8?gZwREGDJ05c5V-;exg7mEiG0o^uSC5EsZTozefR+>rh^~7 zr@V(mejbs`PuHh^hkf(ZP9pC?y(HmpF8L_(pTu>njr=RFJCfIv_n{s{S1ltL&L#OkRM{b*hV6s+DX)xy(HWR&jA07@*?j=I!Kr| zk;u1ok~fH(#4RNB+fG7{9VGNPN+SN05g_w}Wciaw*J={=Wvk>pvYbi8zggznCGQarlh89Q%W^V_d})&0 zA#NuT?k?H$Lre^J5{dGx6&I7xi{Cfrb!4?-6&&jF!lj#w?O6gx<`<1@PK zA9jIhE1?&83F<3}{^B_j{n}n~4f;v)TJ&S&T9hAo9pWYHF^(lyp}mk-p&iKG%xh6mJx7 z74H$Zi95w-M6Q=HoOi{KMXr<4JTYi_hB#KdP@FE#6`RB>#jlAEh!2ZTi?53Bh<_IY zsOu(vae$a5ju$Tyr;E+v3URggHF2GIgUIzX#&f6mJ@H544so~mEAdV73o(cW%5Y8+ z)5WvIiDHphDPAgGF0K;Si5tZ`#2<(cicg8Z7T**<6px8L(HBs^K_Z{~q&!Z{6D!1s zxKzAaTrX}Gw~7ymd&F18cg2rIzO-lZNgOJ2U61CuBG>gOoA*AzdS~C;nokpFigjX> zc%{ha9~sWK#ZBTa@kx>Ec69eEaliP6cu@R<_>uUjh*uws|77uG@eFaim?xHtmxz~( ztHf`J-w~e`UlR9=zZd^3{zFVmw)&)sr-`G)$>KC|j@T%2U6J|m4e?g-UU7%W=MCxZ zRq<`{PvSqsS8(B?ySKy-MDyMb%oF=cU-1kvN6Z&1#b$Ahc!PMCxJ`Uid_jC&;t$39#U0|~;)~)N;s+wv`>0Q1ie;*JhL|JfiF)Ni~vMVujW-H`Un#GAxT;ui5|;%+f8!1^03W{M+3t^+dM zapENLLa{)+Sga6digU&J;$m^B*d|^jwu@gE*NZocw~N0J9}}MvpBH~Ez9#-od`JAF z_>p*2{6b6~sC*I661hIf{3sS@iVY&yA!*NbNAf4)FU6Ncu0zuP&thPZmHUbr;yL2^ zVu@HQE)rLW8^!O7KNFu2_ldt3{~~hTlKP~Gr;4M+3&c|K%i?9?D)Bb)2jWBG9`RN2 zUGZb_q*NRKC~>klO{^0aiLK%qalLq_c%S&N_?-A#@oyquong995{HVTM6PSnewsK( zY!tsEay^so9uc1r-xvQX{!8qgX5F7Go*|AG^TcxT60u3VQoL5YNxWOUUwl-2L3~|2 zEPf{T!o-UDhs9gPd&K+2N5$vG-->?_KNgRRiGyvp1H_@?C~>klO`Ib(iYvu$h_{OO ziaW%o#8Hmx*5yxvt6ld0c!^d|mvb_^FtXVcm26lK##V z$B7q+CE_fxL2MPT5xLIEaPAa;C_W@UB_0sp6aOlHF7_Q_!^sfO5ziM(M6QQ2zD42+ z@jCG*;zQ!2;uGR?;;Z7@;-5sWmoofbLoK;(O8Im#Tf9)@Ix6kwh>OKF;&tNn;?3e+ z;`8EPMXsMRyfege#IfQ;@d7blyjZ+MTp%`z%fuDp)#6(5dhurQcCkbJq4?Li#6h0aglg~$n|u_`-Yf2!pf6GuB+32p}0t-E#n;4MS=L`j93Y+|o*|AEFBD6~IpSh*g}7GSEdE&hjrf6h zRP@fWdh`=B#Iwabu~?igR*MnwGI52tR=ip45FZeCi7$u;#6O6iir(2)zg}X0afo=1 zc%E1+&J^3kYsEXod&D1#_lpmT4~vhBPm6oSSH(BPcf`ZuU&X(RpNqZDQGSc5;!tsf zI9i-2=87d^r8rw$BHk?iP`qD!P<%vuTIBja>-j+ORB@E}C9y=DB{qny;x*!p;@#qX z;?KoB;w$1o@h{?WvHvKmSB97+o+}oJmEt^cnRu1>b@3i?yZEU1toWMvp7^oojkbCu zizkaC#0g@7SS8LEuMpeC8^!O6_lvv47sWTkPsC&5=VH$>RMz91eD6SA#d{lzSCmN;KrBCZl25qFEvh%bq+i)mwR_(R3v z;@RR@u|T|7tPp34bH({$qjhY(@f+f;;=SSy@hR~Y@g4Dq z_=R{2`QjB~yLhAcUGV|&Ve#wAY!=suH;Q+N9paD0Ux?3$zY*UN|0sSU zelGT%X!Xqy&k@fTOT^h?z4$fp+v4rw55-@IPl~@5-xfa*KNS-uDc{6X#Zlsy#1e6q z_;qo;c(b@k{I0k~d{BH?d|Z55d{KN^JRrVD_VBzvihm}r$MXxa|6FqLJe!UX3HK@D zAQJ9}$UaLlUdlArt0`icI7e(1zd|CsHR81-!dox<+azz6{6opxB>zJ4Zt@1t`z?v^ zekcBkywUSMk^Fb@pCsZ*IN#d$BOwnY;s0bYL-uEj=ZmG{Y_U~bL&E>H;x|ZyyOD%` z_saZ7;zQ!Y;*%uweTjs>S0x`LgPwOt@+ahUJU1ZO`x0ct8x)gB_|FheBN6UM$&)1K zlJHj`PL=%(+0T_cUvjg!T3jdIF8)A#S$tdkQ2dNU-v3*2@5wg)zG8n8dJiU{?-`QM zmOMf7`I3vodJ_42g}8=9IBO-}B>7g!cT4^OiS*wm?htp1&yWb`H4^$9l==JOVcCBy z`+rFeTwvXYNQ9pv4k8iW8R9r`B8l+lii=73YZ9AD_**6WwUWOnd86dpC2x`ZBgs2R z4JYOslmx@=3-w-#79pW}|r?^MlC%z^2xX8xe zmxTTUC7&ja63-J0#aeNp*e0$ak+0W^-yo5%8)Scny!dxI}WJ)I=FgMx|GN00%s(ShF8`L?v(SdyTkK21Un+_4Pm?@C@>t2|lF@8;fC(o;!rd~-ZIV}!2!E~2zbSd6+3&xK-RC?iODb-xhmMwR)tAd19H^Caxh7-*u9274H$ZiO-9#iT@V+mDqR&izCGG zVy-w{oGmUCTg5fv_2OOPRucL>Ao(E@<@vDq7>WFQM)vz8zb5(jlK&$9P3HfW+~Z=a ze_s;e43IoT^68RCNggNp0?AV(PnTRN`BD<~VUgq($yZ9ghD3ZD#P5+v*AK*>kf=wG zNdBexl+0fu;r~tXFS7qc{1*xTy{6f4`-mrzFh7O79?yx3=aY#4La~^HyICaC(IS3@ zydM3AcmoN4H;WzO7V&4~^`7@j$xn*=#QoyCcaF;6MrkdFP>Cp!_5%SBoY27$rDKA!+GKbB=jnh z{S3)<;zF5UA^9p2{=X{TM&5w_ltei9$@~Fvm$+Meo`kzs#J9;C@SMB&smwnY`;^0; zF>8$EBStg<79rJNQThP@E>#iuGc%c(wRV@pf?w3BB%<{HXY{ z_?GyA_^BAEw0aB>hl)jFrMO&dCz*c9w}{^reZm_e<1t�N?E|E1(7#b;&yG70|&#ZP4ackv4n{`=H|(5s&~ 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%0A{O`f%JL216 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 VbaDn+FXN$#`hWkgZoBe+{tv+@mni@M literal 0 HcmV?d00001 diff --git a/src/marina/marina/MultiFileProgress.c b/src/marina/marina/MultiFileProgress.c new file mode 100644 index 0000000..df969ee --- /dev/null +++ b/src/marina/marina/MultiFileProgress.c @@ -0,0 +1,441 @@ +/* MultiFileProgress.c generated by valac, the Vala compiler + * generated from MultiFileProgress.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_MULTI_FILE_PROGRESS_INTERFACE (multi_file_progress_interface_get_type ()) +#define MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterface)) +#define IS_MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE)) +#define MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterfaceIface)) + +typedef struct _MultiFileProgressInterface MultiFileProgressInterface; +typedef struct _MultiFileProgressInterfaceIface MultiFileProgressInterfaceIface; + +#define TYPE_MULTI_FILE_PROGRESS (multi_file_progress_get_type ()) +#define MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgress)) +#define MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass)) +#define IS_MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS)) +#define IS_MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTI_FILE_PROGRESS)) +#define MULTI_FILE_PROGRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass)) + +typedef struct _MultiFileProgress MultiFileProgress; +typedef struct _MultiFileProgressClass MultiFileProgressClass; +typedef struct _MultiFileProgressPrivate MultiFileProgressPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +struct _MultiFileProgressInterfaceIface { + GTypeInterface parent_iface; + void (*cancel) (MultiFileProgressInterface* self); + void (*complete) (MultiFileProgressInterface* self); +}; + +struct _MultiFileProgress { + GtkWindow parent_instance; + MultiFileProgressPrivate * priv; +}; + +struct _MultiFileProgressClass { + GtkWindowClass parent_class; +}; + +struct _MultiFileProgressPrivate { + GtkProgressBar* progress_bar; + GtkLabel* file_label; + GtkLabel* number_label; + GtkButton* cancel_button; + gint num_files; + gboolean needs_show; + MultiFileProgressInterface* provider_interface; + char* dialog_title; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +static gpointer multi_file_progress_parent_class = NULL; + +GType multi_file_progress_interface_get_type (void); +void multi_file_progress_interface_cancel (MultiFileProgressInterface* self); +void multi_file_progress_interface_complete (MultiFileProgressInterface* self); +GType multi_file_progress_get_type (void); +#define MULTI_FILE_PROGRESS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressPrivate)) +enum { + MULTI_FILE_PROGRESS_DUMMY_PROPERTY +}; +static void multi_file_progress_on_cancel_clicked (MultiFileProgress* self); +static void _multi_file_progress_on_cancel_clicked_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void multi_file_progress_on_fraction_updated (MultiFileProgress* self, double d); +static void _multi_file_progress_on_fraction_updated_multi_file_progress_interface_fraction_updated (MultiFileProgressInterface* _sender, double d, gpointer self); +static void multi_file_progress_on_file_updated (MultiFileProgress* self, const char* filename, gint index); +static void _multi_file_progress_on_file_updated_multi_file_progress_interface_file_updated (MultiFileProgressInterface* _sender, const char* filename, gint index, gpointer self); +static void multi_file_progress_on_done (MultiFileProgress* self); +static void _multi_file_progress_on_done_multi_file_progress_interface_done (MultiFileProgressInterface* _sender, gpointer self); +MultiFileProgress* multi_file_progress_new (GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider); +MultiFileProgress* multi_file_progress_construct (GType object_type, GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +static void multi_file_progress_on_destroy (MultiFileProgress* self); +static void _multi_file_progress_on_destroy_gtk_object_destroy (GtkObject* _sender, gpointer self); +static void multi_file_progress_finalize (GObject* obj); + + +static void g_cclosure_user_marshal_VOID__STRING_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); + +#line 14 "MultiFileProgress.vala" +void multi_file_progress_interface_cancel (MultiFileProgressInterface* self) { +#line 14 "MultiFileProgress.vala" + MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE (self)->cancel (self); +#line 124 "MultiFileProgress.c" +} + + +#line 15 "MultiFileProgress.vala" +void multi_file_progress_interface_complete (MultiFileProgressInterface* self) { +#line 15 "MultiFileProgress.vala" + MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE (self)->complete (self); +#line 132 "MultiFileProgress.c" +} + + +static void multi_file_progress_interface_base_init (MultiFileProgressInterfaceIface * iface) { + static gboolean initialized = FALSE; + if (!initialized) { + initialized = TRUE; + g_signal_new ("fraction_updated", TYPE_MULTI_FILE_PROGRESS_INTERFACE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE); + g_signal_new ("file_updated", TYPE_MULTI_FILE_PROGRESS_INTERFACE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); + g_signal_new ("done", TYPE_MULTI_FILE_PROGRESS_INTERFACE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + } +} + + +GType multi_file_progress_interface_get_type (void) { + static volatile gsize multi_file_progress_interface_type_id__volatile = 0; + if (g_once_init_enter (&multi_file_progress_interface_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (MultiFileProgressInterfaceIface), (GBaseInitFunc) multi_file_progress_interface_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; + GType multi_file_progress_interface_type_id; + multi_file_progress_interface_type_id = g_type_register_static (G_TYPE_INTERFACE, "MultiFileProgressInterface", &g_define_type_info, 0); + g_type_interface_add_prerequisite (multi_file_progress_interface_type_id, G_TYPE_OBJECT); + g_once_init_leave (&multi_file_progress_interface_type_id__volatile, multi_file_progress_interface_type_id); + } + return multi_file_progress_interface_type_id__volatile; +} + + +#line 71 "MultiFileProgress.vala" +static void _multi_file_progress_on_cancel_clicked_gtk_button_clicked (GtkButton* _sender, gpointer self) { +#line 162 "MultiFileProgress.c" + multi_file_progress_on_cancel_clicked (self); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 84 "MultiFileProgress.vala" +static void _multi_file_progress_on_fraction_updated_multi_file_progress_interface_fraction_updated (MultiFileProgressInterface* _sender, double d, gpointer self) { +#line 174 "MultiFileProgress.c" + multi_file_progress_on_fraction_updated (self, d); +} + + +#line 107 "MultiFileProgress.vala" +static void _multi_file_progress_on_file_updated_multi_file_progress_interface_file_updated (MultiFileProgressInterface* _sender, const char* filename, gint index, gpointer self) { +#line 181 "MultiFileProgress.c" + multi_file_progress_on_file_updated (self, filename, index); +} + + +#line 66 "MultiFileProgress.vala" +static void _multi_file_progress_on_done_multi_file_progress_interface_done (MultiFileProgressInterface* _sender, gpointer self) { +#line 188 "MultiFileProgress.c" + multi_file_progress_on_done (self); +} + + +#line 30 "MultiFileProgress.vala" +MultiFileProgress* multi_file_progress_construct (GType object_type, GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider) { +#line 195 "MultiFileProgress.c" + MultiFileProgress * self; + GtkLabel* _tmp0_; + GtkLabel* _tmp1_; + GtkProgressBar* _tmp2_; + GtkVBox* vbox; + GtkHButtonBox* button_area; + GtkButton* _tmp3_; + char* _tmp4_; + MultiFileProgressInterface* _tmp5_; +#line 30 "MultiFileProgress.vala" + g_return_val_if_fail (GTK_IS_WINDOW (parent), NULL); +#line 30 "MultiFileProgress.vala" + g_return_val_if_fail (dialog_title != NULL, NULL); +#line 30 "MultiFileProgress.vala" + g_return_val_if_fail (IS_MULTI_FILE_PROGRESS_INTERFACE (provider), NULL); +#line 211 "MultiFileProgress.c" + self = g_object_newv (object_type, 0, NULL); +#line 32 "MultiFileProgress.vala" + self->priv->num_files = num_files; +#line 33 "MultiFileProgress.vala" + self->priv->needs_show = TRUE; +#line 34 "MultiFileProgress.vala" + self->priv->file_label = (_tmp0_ = g_object_ref_sink ((GtkLabel*) gtk_label_new ("")), _g_object_unref0 (self->priv->file_label), _tmp0_); +#line 35 "MultiFileProgress.vala" + self->priv->number_label = (_tmp1_ = g_object_ref_sink ((GtkLabel*) gtk_label_new ("")), _g_object_unref0 (self->priv->number_label), _tmp1_); +#line 36 "MultiFileProgress.vala" + self->priv->progress_bar = (_tmp2_ = g_object_ref_sink ((GtkProgressBar*) gtk_progress_bar_new ()), _g_object_unref0 (self->priv->progress_bar), _tmp2_); +#line 38 "MultiFileProgress.vala" + vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (TRUE, 0)); +#line 40 "MultiFileProgress.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (self->priv->number_label), FALSE, FALSE, (guint) 0); +#line 41 "MultiFileProgress.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (self->priv->file_label), FALSE, FALSE, (guint) 0); +#line 42 "MultiFileProgress.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (self->priv->progress_bar), FALSE, FALSE, (guint) 0); +#line 44 "MultiFileProgress.vala" + button_area = g_object_ref_sink ((GtkHButtonBox*) gtk_hbutton_box_new ()); +#line 45 "MultiFileProgress.vala" + g_object_set (G_OBJECT (button_area), "layout-style", GTK_BUTTONBOX_CENTER, NULL); +#line 47 "MultiFileProgress.vala" + self->priv->cancel_button = (_tmp3_ = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock (GTK_STOCK_CANCEL)), _g_object_unref0 (self->priv->cancel_button), _tmp3_); +#line 48 "MultiFileProgress.vala" + g_signal_connect_object (self->priv->cancel_button, "clicked", (GCallback) _multi_file_progress_on_cancel_clicked_gtk_button_clicked, self, 0); +#line 50 "MultiFileProgress.vala" + gtk_container_add (GTK_CONTAINER (button_area), GTK_WIDGET (self->priv->cancel_button)); +#line 52 "MultiFileProgress.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button_area), FALSE, FALSE, (guint) 0); +#line 53 "MultiFileProgress.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (vbox)); +#line 55 "MultiFileProgress.vala" + gtk_window_set_transient_for (GTK_WINDOW (self), parent); +#line 56 "MultiFileProgress.vala" + gtk_window_set_title (GTK_WINDOW (self), dialog_title); +#line 57 "MultiFileProgress.vala" + self->priv->dialog_title = (_tmp4_ = g_strdup (dialog_title), _g_free0 (self->priv->dialog_title), _tmp4_); +#line 59 "MultiFileProgress.vala" + self->priv->provider_interface = (_tmp5_ = _g_object_ref0 (provider), _g_object_unref0 (self->priv->provider_interface), _tmp5_); +#line 61 "MultiFileProgress.vala" + g_signal_connect_object (self->priv->provider_interface, "fraction-updated", (GCallback) _multi_file_progress_on_fraction_updated_multi_file_progress_interface_fraction_updated, self, 0); +#line 62 "MultiFileProgress.vala" + g_signal_connect_object (self->priv->provider_interface, "file-updated", (GCallback) _multi_file_progress_on_file_updated_multi_file_progress_interface_file_updated, self, 0); +#line 63 "MultiFileProgress.vala" + g_signal_connect_object (self->priv->provider_interface, "done", (GCallback) _multi_file_progress_on_done_multi_file_progress_interface_done, self, 0); +#line 259 "MultiFileProgress.c" + _g_object_unref0 (vbox); + _g_object_unref0 (button_area); + return self; +} + + +#line 30 "MultiFileProgress.vala" +MultiFileProgress* multi_file_progress_new (GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider) { +#line 30 "MultiFileProgress.vala" + return multi_file_progress_construct (TYPE_MULTI_FILE_PROGRESS, parent, num_files, dialog_title, provider); +#line 270 "MultiFileProgress.c" +} + + +#line 66 "MultiFileProgress.vala" +static void multi_file_progress_on_done (MultiFileProgress* self) { +#line 66 "MultiFileProgress.vala" + g_return_if_fail (IS_MULTI_FILE_PROGRESS (self)); +#line 67 "MultiFileProgress.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_done"); +#line 68 "MultiFileProgress.vala" + gtk_object_destroy (GTK_OBJECT (self)); +#line 282 "MultiFileProgress.c" +} + + +#line 71 "MultiFileProgress.vala" +static void multi_file_progress_on_cancel_clicked (MultiFileProgress* self) { +#line 71 "MultiFileProgress.vala" + g_return_if_fail (IS_MULTI_FILE_PROGRESS (self)); +#line 72 "MultiFileProgress.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_cancel_clicked"); +#line 73 "MultiFileProgress.vala" + gtk_object_destroy (GTK_OBJECT (self)); +#line 294 "MultiFileProgress.c" +} + + +#line 76 "MultiFileProgress.vala" +static void multi_file_progress_on_destroy (MultiFileProgress* self) { +#line 76 "MultiFileProgress.vala" + g_return_if_fail (IS_MULTI_FILE_PROGRESS (self)); +#line 77 "MultiFileProgress.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_destroy"); +#line 78 "MultiFileProgress.vala" + if (gtk_progress_bar_get_fraction (self->priv->progress_bar) < 1.0) { +#line 79 "MultiFileProgress.vala" + multi_file_progress_interface_cancel (self->priv->provider_interface); +#line 308 "MultiFileProgress.c" + } else { +#line 81 "MultiFileProgress.vala" + multi_file_progress_interface_complete (self->priv->provider_interface); +#line 312 "MultiFileProgress.c" + } +} + + +#line 76 "MultiFileProgress.vala" +static void _multi_file_progress_on_destroy_gtk_object_destroy (GtkObject* _sender, gpointer self) { +#line 319 "MultiFileProgress.c" + multi_file_progress_on_destroy (self); +} + + +#line 84 "MultiFileProgress.vala" +static void multi_file_progress_on_fraction_updated (MultiFileProgress* self, double d) { +#line 84 "MultiFileProgress.vala" + g_return_if_fail (IS_MULTI_FILE_PROGRESS (self)); +#line 85 "MultiFileProgress.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_fraction_updated"); +#line 86 "MultiFileProgress.vala" + if (self->priv->needs_show) { +#line 87 "MultiFileProgress.vala" + self->priv->needs_show = FALSE; +#line 88 "MultiFileProgress.vala" + gtk_container_set_border_width (GTK_CONTAINER (self), (guint) 8); +#line 89 "MultiFileProgress.vala" + gtk_window_set_resizable (GTK_WINDOW (self), FALSE); +#line 90 "MultiFileProgress.vala" + gtk_window_set_modal (GTK_WINDOW (self), TRUE); +#line 92 "MultiFileProgress.vala" + g_signal_connect_object (GTK_OBJECT (self), "destroy", (GCallback) _multi_file_progress_on_destroy_gtk_object_destroy, self, 0); +#line 94 "MultiFileProgress.vala" + gtk_widget_show_all (GTK_WIDGET (self)); +#line 344 "MultiFileProgress.c" + } +#line 97 "MultiFileProgress.vala" + gtk_progress_bar_set_fraction (self->priv->progress_bar, d); +#line 99 "MultiFileProgress.vala" + if (gtk_progress_bar_get_fraction (self->priv->progress_bar) == 1.0) { +#line 100 "MultiFileProgress.vala" + gtk_object_destroy (GTK_OBJECT (self)); +#line 352 "MultiFileProgress.c" + } else { +#line 102 "MultiFileProgress.vala" + gtk_widget_show_all (GTK_WIDGET (self)); +#line 103 "MultiFileProgress.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 358 "MultiFileProgress.c" + } +} + + +#line 107 "MultiFileProgress.vala" +static void multi_file_progress_on_file_updated (MultiFileProgress* self, const char* filename, gint index) { +#line 365 "MultiFileProgress.c" + char* _tmp0_; + char* _tmp1_; +#line 107 "MultiFileProgress.vala" + g_return_if_fail (IS_MULTI_FILE_PROGRESS (self)); +#line 107 "MultiFileProgress.vala" + g_return_if_fail (filename != NULL); +#line 108 "MultiFileProgress.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_file_updated"); +#line 109 "MultiFileProgress.vala" + gtk_label_set_text (self->priv->number_label, _tmp0_ = g_strdup_printf ("%sing %d of %d", self->priv->dialog_title, index + 1, self->priv->num_files)); +#line 376 "MultiFileProgress.c" + _g_free0 (_tmp0_); +#line 110 "MultiFileProgress.vala" + gtk_label_set_text (self->priv->file_label, _tmp1_ = g_strdup_printf ("%s", filename)); +#line 380 "MultiFileProgress.c" + _g_free0 (_tmp1_); +} + + +static void multi_file_progress_class_init (MultiFileProgressClass * klass) { + multi_file_progress_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (MultiFileProgressPrivate)); + G_OBJECT_CLASS (klass)->finalize = multi_file_progress_finalize; +} + + +static void multi_file_progress_instance_init (MultiFileProgress * self) { + self->priv = MULTI_FILE_PROGRESS_GET_PRIVATE (self); +} + + +static void multi_file_progress_finalize (GObject* obj) { + MultiFileProgress * self; + self = MULTI_FILE_PROGRESS (obj); + _g_object_unref0 (self->priv->progress_bar); + _g_object_unref0 (self->priv->file_label); + _g_object_unref0 (self->priv->number_label); + _g_object_unref0 (self->priv->cancel_button); + _g_object_unref0 (self->priv->provider_interface); + _g_free0 (self->priv->dialog_title); + G_OBJECT_CLASS (multi_file_progress_parent_class)->finalize (obj); +} + + +GType multi_file_progress_get_type (void) { + static volatile gsize multi_file_progress_type_id__volatile = 0; + if (g_once_init_enter (&multi_file_progress_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (MultiFileProgressClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) multi_file_progress_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MultiFileProgress), 0, (GInstanceInitFunc) multi_file_progress_instance_init, NULL }; + GType multi_file_progress_type_id; + multi_file_progress_type_id = g_type_register_static (GTK_TYPE_WINDOW, "MultiFileProgress", &g_define_type_info, 0); + g_once_init_leave (&multi_file_progress_type_id__volatile, multi_file_progress_type_id); + } + return multi_file_progress_type_id__volatile; +} + + + +static void g_cclosure_user_marshal_VOID__STRING_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__STRING_INT) (gpointer data1, const char* arg_1, gint arg_2, gpointer data2); + register GMarshalFunc_VOID__STRING_INT callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__STRING_INT) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_string (param_values + 1), g_value_get_int (param_values + 2), data2); +} + + + diff --git a/src/marina/marina/MultiFileProgress.o b/src/marina/marina/MultiFileProgress.o new file mode 100644 index 0000000000000000000000000000000000000000..0c3b979a7207dc7200194e07bb1042f7489f576c GIT binary patch literal 69468 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 +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_LOADER_HANDLER (model_loader_handler_get_type ()) +#define MODEL_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandler)) +#define MODEL_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) +#define MODEL_IS_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_IS_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) + +typedef struct _ModelLoaderHandler ModelLoaderHandler; +typedef struct _ModelLoaderHandlerClass ModelLoaderHandlerClass; +typedef struct _ModelLoaderHandlerPrivate ModelLoaderHandlerPrivate; + +#define MODEL_TYPE_XML_TREE_LOADER (model_xml_tree_loader_get_type ()) +#define MODEL_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoader)) +#define MODEL_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) +#define MODEL_IS_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_IS_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_XML_TREE_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) + +typedef struct _ModelXmlTreeLoader ModelXmlTreeLoader; +typedef struct _ModelXmlTreeLoaderClass ModelXmlTreeLoaderClass; +typedef struct _ModelXmlTreeLoaderPrivate ModelXmlTreeLoaderPrivate; + +#define MODEL_TYPE_XML_ELEMENT (model_xml_element_get_type ()) +#define MODEL_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElement)) +#define MODEL_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) +#define MODEL_IS_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_IS_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_XML_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) + +typedef struct _ModelXmlElement ModelXmlElement; +typedef struct _ModelXmlElementClass ModelXmlElementClass; +#define _model_xml_element_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_element_unref (var), NULL))) +#define _g_markup_parse_context_free0(var) ((var == NULL) ? NULL : (var = (g_markup_parse_context_free (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +typedef struct _ModelParamSpecXmlTreeLoader ModelParamSpecXmlTreeLoader; + +#define MODEL_TYPE_PROJECT_BUILDER (model_project_builder_get_type ()) +#define MODEL_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilder)) +#define MODEL_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass)) +#define MODEL_IS_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_BUILDER)) +#define MODEL_IS_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_BUILDER)) +#define MODEL_PROJECT_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass)) + +typedef struct _ModelProjectBuilder ModelProjectBuilder; +typedef struct _ModelProjectBuilderClass ModelProjectBuilderClass; +typedef struct _ModelProjectBuilderPrivate ModelProjectBuilderPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +typedef struct _ModelXmlElementPrivate ModelXmlElementPrivate; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +typedef struct _ModelParamSpecXmlElement ModelParamSpecXmlElement; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; +typedef struct _ModelProjectLoaderPrivate ModelProjectLoaderPrivate; +#define _model_xml_tree_loader_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_tree_loader_unref (var), NULL))) + +struct _ModelLoaderHandler { + GObject parent_instance; + ModelLoaderHandlerPrivate * priv; +}; + +struct _ModelLoaderHandlerClass { + GObjectClass parent_class; + gboolean (*commit_library) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_marina) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_track) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clip) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clipfile) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_time_signature_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_tempo_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_click) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_library_preference) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + void (*leave_library) (ModelLoaderHandler* self); + void (*leave_marina) (ModelLoaderHandler* self); + void (*leave_track) (ModelLoaderHandler* self); + void (*leave_clip) (ModelLoaderHandler* self); + void (*leave_clipfile) (ModelLoaderHandler* self); +}; + +struct _ModelXmlTreeLoader { + GTypeInstance parent_instance; + volatile int ref_count; + ModelXmlTreeLoaderPrivate * priv; + ModelXmlElement* root; +}; + +struct _ModelXmlTreeLoaderClass { + GTypeClass parent_class; + void (*finalize) (ModelXmlTreeLoader *self); +}; + +struct _ModelXmlTreeLoaderPrivate { + ModelXmlElement* current_element; +}; + +struct _ModelParamSpecXmlTreeLoader { + GParamSpec parent_instance; +}; + +struct _ModelProjectBuilder { + GObject parent_instance; + ModelProjectBuilderPrivate * priv; +}; + +struct _ModelProjectBuilderClass { + GObjectClass parent_class; +}; + +struct _ModelProjectBuilderPrivate { + ModelLoaderHandler* handler; +}; + +struct _ModelXmlElement { + GTypeInstance parent_instance; + volatile int ref_count; + ModelXmlElementPrivate * priv; + char** attribute_names; + gint attribute_names_length1; + char** attribute_values; + gint attribute_values_length1; +}; + +struct _ModelXmlElementClass { + GTypeClass parent_class; + void (*finalize) (ModelXmlElement *self); +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _ModelXmlElementPrivate { + char* _name; + ModelXmlElement* _parent; + GeeArrayList* _children; +}; + +struct _ModelParamSpecXmlElement { + GParamSpec parent_instance; +}; + +struct _ModelProjectLoader { + GObject parent_instance; + ModelProjectLoaderPrivate * priv; +}; + +struct _ModelProjectLoaderClass { + GObjectClass parent_class; +}; + +struct _ModelProjectLoaderPrivate { + char* file_name; + ModelLoaderHandler* loader_handler; + char* text; + gsize text_len; + gboolean project_load_completed; + gboolean load_completed_fired; + gboolean handler_completed; +}; + + +static gpointer model_loader_handler_parent_class = NULL; +static gpointer model_xml_tree_loader_parent_class = NULL; +static gpointer model_project_builder_parent_class = NULL; +static gpointer model_xml_element_parent_class = NULL; +static gpointer model_project_loader_parent_class = NULL; + +GType model_loader_handler_get_type (void); +enum { + MODEL_LOADER_HANDLER_DUMMY_PROPERTY +}; +ModelLoaderHandler* model_loader_handler_new (void); +ModelLoaderHandler* model_loader_handler_construct (GType object_type); +gboolean model_loader_handler_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +void model_loader_handler_leave_library (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_library (ModelLoaderHandler* self); +void model_loader_handler_leave_marina (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_marina (ModelLoaderHandler* self); +void model_loader_handler_leave_track (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_track (ModelLoaderHandler* self); +void model_loader_handler_leave_clip (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_clip (ModelLoaderHandler* self); +void model_loader_handler_leave_clipfile (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_clipfile (ModelLoaderHandler* self); +gpointer model_xml_tree_loader_ref (gpointer instance); +void model_xml_tree_loader_unref (gpointer instance); +GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_tree_loader (GValue* value, gpointer v_object); +void model_value_take_xml_tree_loader (GValue* value, gpointer v_object); +gpointer model_value_get_xml_tree_loader (const GValue* value); +GType model_xml_tree_loader_get_type (void); +gpointer model_xml_element_ref (gpointer instance); +void model_xml_element_unref (gpointer instance); +GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_element (GValue* value, gpointer v_object); +void model_value_take_xml_element (GValue* value, gpointer v_object); +gpointer model_value_get_xml_element (const GValue* value); +GType model_xml_element_get_type (void); +#define MODEL_XML_TREE_LOADER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderPrivate)) +enum { + MODEL_XML_TREE_LOADER_DUMMY_PROPERTY +}; +static void model_xml_tree_loader_xml_start_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static void _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func (GMarkupParseContext* context, const char* element_name, char** attribute_names, char** attribute_values, gpointer self); +static void model_xml_tree_loader_xml_end_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name); +static void _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func (GMarkupParseContext* context, const char* element_name, gpointer self); +ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document); +ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document); +ModelXmlElement* model_xml_element_new (const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent); +ModelXmlElement* model_xml_element_construct (GType object_type, const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent); +void model_xml_element_add_child (ModelXmlElement* self, ModelXmlElement* child_element); +ModelXmlElement* model_xml_element_get_parent (ModelXmlElement* self); +static void model_xml_tree_loader_finalize (ModelXmlTreeLoader* obj); +GType model_project_builder_get_type (void); +#define MODEL_PROJECT_BUILDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderPrivate)) +enum { + MODEL_PROJECT_BUILDER_DUMMY_PROPERTY +}; +ModelProjectBuilder* model_project_builder_new (ModelLoaderHandler* handler); +ModelProjectBuilder* model_project_builder_construct (GType object_type, ModelLoaderHandler* handler); +const char* model_xml_element_get_name (ModelXmlElement* self); +static gboolean model_project_builder_check_name (ModelProjectBuilder* self, const char* expected_name, ModelXmlElement* node); +GeeArrayList* model_xml_element_get_children (ModelXmlElement* self); +static void model_project_builder_handle_clip (ModelProjectBuilder* self, ModelXmlElement* clip); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +static void model_project_builder_handle_track (ModelProjectBuilder* self, ModelXmlElement* track); +static void model_project_builder_handle_preference (ModelProjectBuilder* self, ModelXmlElement* preference); +static void model_project_builder_handle_time_signature (ModelProjectBuilder* self, ModelXmlElement* time_signature); +static void model_project_builder_handle_tempo (ModelProjectBuilder* self, ModelXmlElement* tempo); +static void model_project_builder_handle_map (ModelProjectBuilder* self, ModelXmlElement* map); +static void model_project_builder_handle_library (ModelProjectBuilder* self, ModelXmlElement* library); +static void model_project_builder_handle_tracks (ModelProjectBuilder* self, ModelXmlElement* tracks); +static void model_project_builder_handle_preferences (ModelProjectBuilder* self, ModelXmlElement* preferences); +static void model_project_builder_handle_maps (ModelProjectBuilder* self, ModelXmlElement* maps); +gboolean model_project_builder_check_project (ModelProjectBuilder* self, ModelXmlElement* root); +void model_project_builder_build_project (ModelProjectBuilder* self, ModelXmlElement* root); +static void model_project_builder_finalize (GObject* obj); +#define MODEL_XML_ELEMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_XML_ELEMENT, ModelXmlElementPrivate)) +enum { + MODEL_XML_ELEMENT_DUMMY_PROPERTY +}; +static void model_xml_element_set_name (ModelXmlElement* self, const char* value); +char** copy_array (char** source, int source_length1, int* result_length1); +static void model_xml_element_set_parent (ModelXmlElement* self, ModelXmlElement* value); +static void model_xml_element_finalize (ModelXmlElement* obj); +GType model_project_loader_get_type (void); +#define MODEL_PROJECT_LOADER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderPrivate)) +enum { + MODEL_PROJECT_LOADER_DUMMY_PROPERTY +}; +static void model_project_loader_on_load_error (ModelProjectLoader* self, const char* _error_); +static void _model_project_loader_on_load_error_model_loader_handler_load_error (ModelLoaderHandler* _sender, const char* error_message, gpointer self); +static void model_project_loader_on_handler_complete (ModelProjectLoader* self); +static void _model_project_loader_on_handler_complete_model_loader_handler_complete (ModelLoaderHandler* _sender, gpointer self); +ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name); +ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name); +static void _model_project_loader_on_load_error_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self); +void model_project_loader_load (ModelProjectLoader* self); +static void model_project_loader_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); +static int _vala_strcmp0 (const char * str1, const char * str2); + + + +#line 15 "ProjectLoader.vala" +ModelLoaderHandler* model_loader_handler_construct (GType object_type) { +#line 332 "ProjectLoader.c" + ModelLoaderHandler * self; +#line 15 "ProjectLoader.vala" + self = (ModelLoaderHandler*) g_object_new (object_type, NULL); +#line 336 "ProjectLoader.c" + return self; +} + + +#line 15 "ProjectLoader.vala" +ModelLoaderHandler* model_loader_handler_new (void) { +#line 15 "ProjectLoader.vala" + return model_loader_handler_construct (MODEL_TYPE_LOADER_HANDLER); +#line 345 "ProjectLoader.c" +} + + +#line 18 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 351 "ProjectLoader.c" + gboolean result = FALSE; +#line 18 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 355 "ProjectLoader.c" + result = TRUE; +#line 19 "ProjectLoader.vala" + return result; +#line 359 "ProjectLoader.c" +} + + +#line 18 "ProjectLoader.vala" +gboolean model_loader_handler_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 18 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_library (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 367 "ProjectLoader.c" +} + + +#line 22 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 373 "ProjectLoader.c" + gboolean result = FALSE; +#line 22 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 377 "ProjectLoader.c" + result = TRUE; +#line 23 "ProjectLoader.vala" + return result; +#line 381 "ProjectLoader.c" +} + + +#line 22 "ProjectLoader.vala" +gboolean model_loader_handler_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 22 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_marina (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 389 "ProjectLoader.c" +} + + +#line 26 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 395 "ProjectLoader.c" + gboolean result = FALSE; +#line 26 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 399 "ProjectLoader.c" + result = TRUE; +#line 27 "ProjectLoader.vala" + return result; +#line 403 "ProjectLoader.c" +} + + +#line 26 "ProjectLoader.vala" +gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 26 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_track (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 411 "ProjectLoader.c" +} + + +#line 30 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 417 "ProjectLoader.c" + gboolean result = FALSE; +#line 30 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 421 "ProjectLoader.c" + result = TRUE; +#line 31 "ProjectLoader.vala" + return result; +#line 425 "ProjectLoader.c" +} + + +#line 30 "ProjectLoader.vala" +gboolean model_loader_handler_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 30 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_clip (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 433 "ProjectLoader.c" +} + + +#line 34 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 439 "ProjectLoader.c" + gboolean result = FALSE; +#line 34 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 443 "ProjectLoader.c" + result = TRUE; +#line 35 "ProjectLoader.vala" + return result; +#line 447 "ProjectLoader.c" +} + + +#line 34 "ProjectLoader.vala" +gboolean model_loader_handler_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 34 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_clipfile (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 455 "ProjectLoader.c" +} + + +#line 38 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 461 "ProjectLoader.c" + gboolean result = FALSE; +#line 38 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 465 "ProjectLoader.c" + result = TRUE; +#line 39 "ProjectLoader.vala" + return result; +#line 469 "ProjectLoader.c" +} + + +#line 38 "ProjectLoader.vala" +gboolean model_loader_handler_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 38 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_time_signature_entry (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 477 "ProjectLoader.c" +} + + +#line 42 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 483 "ProjectLoader.c" + gboolean result = FALSE; +#line 42 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 487 "ProjectLoader.c" + result = TRUE; +#line 43 "ProjectLoader.vala" + return result; +#line 491 "ProjectLoader.c" +} + + +#line 42 "ProjectLoader.vala" +gboolean model_loader_handler_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 42 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_tempo_entry (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 499 "ProjectLoader.c" +} + + +#line 46 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 505 "ProjectLoader.c" + gboolean result = FALSE; +#line 46 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 509 "ProjectLoader.c" + result = TRUE; +#line 47 "ProjectLoader.vala" + return result; +#line 513 "ProjectLoader.c" +} + + +#line 46 "ProjectLoader.vala" +gboolean model_loader_handler_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 46 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_click (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 521 "ProjectLoader.c" +} + + +#line 50 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 527 "ProjectLoader.c" + gboolean result = FALSE; +#line 50 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 531 "ProjectLoader.c" + result = TRUE; +#line 51 "ProjectLoader.vala" + return result; +#line 535 "ProjectLoader.c" +} + + +#line 50 "ProjectLoader.vala" +gboolean model_loader_handler_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 50 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_library_preference (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 543 "ProjectLoader.c" +} + + +#line 54 "ProjectLoader.vala" +static void model_loader_handler_real_leave_library (ModelLoaderHandler* self) { +#line 54 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 551 "ProjectLoader.c" +} + + +#line 54 "ProjectLoader.vala" +void model_loader_handler_leave_library (ModelLoaderHandler* self) { +#line 54 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_library (self); +#line 559 "ProjectLoader.c" +} + + +#line 57 "ProjectLoader.vala" +static void model_loader_handler_real_leave_marina (ModelLoaderHandler* self) { +#line 57 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 567 "ProjectLoader.c" +} + + +#line 57 "ProjectLoader.vala" +void model_loader_handler_leave_marina (ModelLoaderHandler* self) { +#line 57 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_marina (self); +#line 575 "ProjectLoader.c" +} + + +#line 60 "ProjectLoader.vala" +static void model_loader_handler_real_leave_track (ModelLoaderHandler* self) { +#line 60 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 583 "ProjectLoader.c" +} + + +#line 60 "ProjectLoader.vala" +void model_loader_handler_leave_track (ModelLoaderHandler* self) { +#line 60 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_track (self); +#line 591 "ProjectLoader.c" +} + + +#line 63 "ProjectLoader.vala" +static void model_loader_handler_real_leave_clip (ModelLoaderHandler* self) { +#line 63 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 599 "ProjectLoader.c" +} + + +#line 63 "ProjectLoader.vala" +void model_loader_handler_leave_clip (ModelLoaderHandler* self) { +#line 63 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_clip (self); +#line 607 "ProjectLoader.c" +} + + +#line 66 "ProjectLoader.vala" +static void model_loader_handler_real_leave_clipfile (ModelLoaderHandler* self) { +#line 66 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 615 "ProjectLoader.c" +} + + +#line 66 "ProjectLoader.vala" +void model_loader_handler_leave_clipfile (ModelLoaderHandler* self) { +#line 66 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_clipfile (self); +#line 623 "ProjectLoader.c" +} + + +static void model_loader_handler_class_init (ModelLoaderHandlerClass * klass) { + model_loader_handler_parent_class = g_type_class_peek_parent (klass); + MODEL_LOADER_HANDLER_CLASS (klass)->commit_library = model_loader_handler_real_commit_library; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_marina = model_loader_handler_real_commit_marina; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_track = model_loader_handler_real_commit_track; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_clip = model_loader_handler_real_commit_clip; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_clipfile = model_loader_handler_real_commit_clipfile; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_time_signature_entry = model_loader_handler_real_commit_time_signature_entry; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_tempo_entry = model_loader_handler_real_commit_tempo_entry; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_click = model_loader_handler_real_commit_click; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_library_preference = model_loader_handler_real_commit_library_preference; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_library = model_loader_handler_real_leave_library; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_marina = model_loader_handler_real_leave_marina; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_track = model_loader_handler_real_leave_track; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_clip = model_loader_handler_real_leave_clip; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_clipfile = model_loader_handler_real_leave_clipfile; + g_signal_new ("load_error", MODEL_TYPE_LOADER_HANDLER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + g_signal_new ("complete", MODEL_TYPE_LOADER_HANDLER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); +} + + +static void model_loader_handler_instance_init (ModelLoaderHandler * self) { +} + + +GType model_loader_handler_get_type (void) { + static volatile gsize model_loader_handler_type_id__volatile = 0; + if (g_once_init_enter (&model_loader_handler_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelLoaderHandlerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_loader_handler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelLoaderHandler), 0, (GInstanceInitFunc) model_loader_handler_instance_init, NULL }; + GType model_loader_handler_type_id; + model_loader_handler_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelLoaderHandler", &g_define_type_info, 0); + g_once_init_leave (&model_loader_handler_type_id__volatile, model_loader_handler_type_id); + } + return model_loader_handler_type_id__volatile; +} + + +#line 87 "ProjectLoader.vala" +static void _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func (GMarkupParseContext* context, const char* element_name, char** attribute_names, char** attribute_values, gpointer self) { +#line 666 "ProjectLoader.c" + model_xml_tree_loader_xml_start_element (self, context, element_name, attribute_names, _vala_array_length (attribute_names), attribute_values, _vala_array_length (attribute_values)); +} + + +#line 100 "ProjectLoader.vala" +static void _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func (GMarkupParseContext* context, const char* element_name, gpointer self) { +#line 673 "ProjectLoader.c" + model_xml_tree_loader_xml_end_element (self, context, element_name); +} + + +static glong string_get_length (const char* self) { + glong result; + g_return_val_if_fail (self != NULL, 0L); + result = g_utf8_strlen (self, -1); +#line 1158 "glib-2.0.vapi" + return result; +#line 684 "ProjectLoader.c" +} + + +#line 76 "ProjectLoader.vala" +ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document) { +#line 690 "ProjectLoader.c" + GError * _inner_error_; + ModelXmlTreeLoader* self; + GMarkupParser _tmp0_ = {0}; + GMarkupParser parser; + GMarkupParseContext* context; +#line 76 "ProjectLoader.vala" + g_return_val_if_fail (document != NULL, NULL); +#line 698 "ProjectLoader.c" + _inner_error_ = NULL; + self = (ModelXmlTreeLoader*) g_type_create_instance (object_type); +#line 77 "ProjectLoader.vala" + parser = (_tmp0_.start_element = _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func, _tmp0_.end_element = _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func, _tmp0_.text = NULL, _tmp0_.passthrough = NULL, _tmp0_); +#line 79 "ProjectLoader.vala" + context = g_markup_parse_context_new (&parser, (GMarkupParseFlags) 0, self, NULL); +#line 705 "ProjectLoader.c" + { +#line 81 "ProjectLoader.vala" + g_markup_parse_context_parse (context, document, (gssize) string_get_length (document), &_inner_error_); +#line 709 "ProjectLoader.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_MARKUP_ERROR) { + goto __catch12_g_markup_error; + } + _g_markup_parse_context_free0 (context); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + } + goto __finally12; + __catch12_g_markup_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally12: + if (_inner_error_ != NULL) { + _g_markup_parse_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + _g_markup_parse_context_free0 (context); + return self; +} + + +#line 76 "ProjectLoader.vala" +ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document) { +#line 76 "ProjectLoader.vala" + return model_xml_tree_loader_construct (MODEL_TYPE_XML_TREE_LOADER, document); +#line 746 "ProjectLoader.c" +} + + +static gpointer _model_xml_element_ref0 (gpointer self) { + return self ? model_xml_element_ref (self) : NULL; +} + + +#line 87 "ProjectLoader.vala" +static void model_xml_tree_loader_xml_start_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 757 "ProjectLoader.c" + ModelXmlElement* new_element; + ModelXmlElement* _tmp1_; +#line 87 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_TREE_LOADER (self)); +#line 87 "ProjectLoader.vala" + g_return_if_fail (c != NULL); +#line 87 "ProjectLoader.vala" + g_return_if_fail (name != NULL); +#line 89 "ProjectLoader.vala" + new_element = model_xml_element_new (name, attr_names, attr_names_length1, attr_values, attr_values_length1, self->priv->current_element); +#line 90 "ProjectLoader.vala" + if (self->root == NULL) { +#line 770 "ProjectLoader.c" + ModelXmlElement* _tmp0_; +#line 91 "ProjectLoader.vala" + self->root = (_tmp0_ = _model_xml_element_ref0 (new_element), _model_xml_element_unref0 (self->root), _tmp0_); +#line 774 "ProjectLoader.c" + } else { +#line 93 "ProjectLoader.vala" + g_assert (self->priv->current_element != NULL); +#line 94 "ProjectLoader.vala" + model_xml_element_add_child (self->priv->current_element, new_element); +#line 780 "ProjectLoader.c" + } +#line 97 "ProjectLoader.vala" + self->priv->current_element = (_tmp1_ = _model_xml_element_ref0 (new_element), _model_xml_element_unref0 (self->priv->current_element), _tmp1_); +#line 784 "ProjectLoader.c" + _model_xml_element_unref0 (new_element); +} + + +#line 100 "ProjectLoader.vala" +static void model_xml_tree_loader_xml_end_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name) { +#line 791 "ProjectLoader.c" + ModelXmlElement* _tmp0_; +#line 100 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_TREE_LOADER (self)); +#line 100 "ProjectLoader.vala" + g_return_if_fail (c != NULL); +#line 100 "ProjectLoader.vala" + g_return_if_fail (name != NULL); +#line 101 "ProjectLoader.vala" + g_assert (self->priv->current_element != NULL); +#line 102 "ProjectLoader.vala" + self->priv->current_element = (_tmp0_ = _model_xml_element_ref0 (model_xml_element_get_parent (self->priv->current_element)), _model_xml_element_unref0 (self->priv->current_element), _tmp0_); +#line 803 "ProjectLoader.c" +} + + +static void model_value_xml_tree_loader_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_xml_tree_loader_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_xml_tree_loader_unref (value->data[0].v_pointer); + } +} + + +static void model_value_xml_tree_loader_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_xml_tree_loader_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_xml_tree_loader_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_xml_tree_loader_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelXmlTreeLoader* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_xml_tree_loader_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_xml_tree_loader_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelXmlTreeLoader** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_xml_tree_loader_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecXmlTreeLoader* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_XML_TREE_LOADER), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_xml_tree_loader (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_xml_tree_loader (GValue* value, gpointer v_object) { + ModelXmlTreeLoader* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_TREE_LOADER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_xml_tree_loader_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_tree_loader_unref (old); + } +} + + +void model_value_take_xml_tree_loader (GValue* value, gpointer v_object) { + ModelXmlTreeLoader* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_TREE_LOADER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_tree_loader_unref (old); + } +} + + +static void model_xml_tree_loader_class_init (ModelXmlTreeLoaderClass * klass) { + model_xml_tree_loader_parent_class = g_type_class_peek_parent (klass); + MODEL_XML_TREE_LOADER_CLASS (klass)->finalize = model_xml_tree_loader_finalize; + g_type_class_add_private (klass, sizeof (ModelXmlTreeLoaderPrivate)); +} + + +static void model_xml_tree_loader_instance_init (ModelXmlTreeLoader * self) { + self->priv = MODEL_XML_TREE_LOADER_GET_PRIVATE (self); + self->priv->current_element = NULL; + self->root = NULL; + self->ref_count = 1; +} + + +static void model_xml_tree_loader_finalize (ModelXmlTreeLoader* obj) { + ModelXmlTreeLoader * self; + self = MODEL_XML_TREE_LOADER (obj); + _model_xml_element_unref0 (self->priv->current_element); + _model_xml_element_unref0 (self->root); +} + + +GType model_xml_tree_loader_get_type (void) { + static volatile gsize model_xml_tree_loader_type_id__volatile = 0; + if (g_once_init_enter (&model_xml_tree_loader_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_xml_tree_loader_init, model_value_xml_tree_loader_free_value, model_value_xml_tree_loader_copy_value, model_value_xml_tree_loader_peek_pointer, "p", model_value_xml_tree_loader_collect_value, "p", model_value_xml_tree_loader_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelXmlTreeLoaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_xml_tree_loader_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelXmlTreeLoader), 0, (GInstanceInitFunc) model_xml_tree_loader_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_xml_tree_loader_type_id; + model_xml_tree_loader_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelXmlTreeLoader", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_xml_tree_loader_type_id__volatile, model_xml_tree_loader_type_id); + } + return model_xml_tree_loader_type_id__volatile; +} + + +gpointer model_xml_tree_loader_ref (gpointer instance) { + ModelXmlTreeLoader* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_xml_tree_loader_unref (gpointer instance) { + ModelXmlTreeLoader* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_XML_TREE_LOADER_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 114 "ProjectLoader.vala" +ModelProjectBuilder* model_project_builder_construct (GType object_type, ModelLoaderHandler* handler) { +#line 979 "ProjectLoader.c" + ModelProjectBuilder * self; + ModelLoaderHandler* _tmp0_; +#line 114 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (handler), NULL); +#line 114 "ProjectLoader.vala" + self = (ModelProjectBuilder*) g_object_new (object_type, NULL); +#line 115 "ProjectLoader.vala" + self->priv->handler = (_tmp0_ = _g_object_ref0 (handler), _g_object_unref0 (self->priv->handler), _tmp0_); +#line 988 "ProjectLoader.c" + return self; +} + + +#line 114 "ProjectLoader.vala" +ModelProjectBuilder* model_project_builder_new (ModelLoaderHandler* handler) { +#line 114 "ProjectLoader.vala" + return model_project_builder_construct (MODEL_TYPE_PROJECT_BUILDER, handler); +#line 997 "ProjectLoader.c" +} + + +#line 118 "ProjectLoader.vala" +static gboolean model_project_builder_check_name (ModelProjectBuilder* self, const char* expected_name, ModelXmlElement* node) { +#line 1003 "ProjectLoader.c" + gboolean result = FALSE; + char* _tmp0_; +#line 118 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_PROJECT_BUILDER (self), FALSE); +#line 118 "ProjectLoader.vala" + g_return_val_if_fail (expected_name != NULL, FALSE); +#line 118 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (node), FALSE); +#line 119 "ProjectLoader.vala" + if (_vala_strcmp0 (model_xml_element_get_name (node), expected_name) == 0) { +#line 1014 "ProjectLoader.c" + result = TRUE; +#line 120 "ProjectLoader.vala" + return result; +#line 1018 "ProjectLoader.c" + } +#line 123 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", _tmp0_ = g_strdup_printf ("expected %s, got %s", expected_name, model_xml_element_get_name (node))); +#line 1022 "ProjectLoader.c" + _g_free0 (_tmp0_); + result = FALSE; +#line 124 "ProjectLoader.vala" + return result; +#line 1027 "ProjectLoader.c" +} + + +#line 127 "ProjectLoader.vala" +static void model_project_builder_handle_clip (ModelProjectBuilder* self, ModelXmlElement* clip) { +#line 127 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 127 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (clip)); +#line 128 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "clip", clip)) { +#line 129 "ProjectLoader.vala" + if (model_loader_handler_commit_clip (self->priv->handler, clip->attribute_names, clip->attribute_names_length1, clip->attribute_values, clip->attribute_values_length1)) { +#line 130 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (clip))) != 0) { +#line 131 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "clip cannot have children"); +#line 1045 "ProjectLoader.c" + } +#line 133 "ProjectLoader.vala" + model_loader_handler_leave_clip (self->priv->handler); +#line 1049 "ProjectLoader.c" + } + } +} + + +#line 138 "ProjectLoader.vala" +static void model_project_builder_handle_track (ModelProjectBuilder* self, ModelXmlElement* track) { +#line 138 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 138 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (track)); +#line 139 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "track", track)) { +#line 140 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, "loading track"); +#line 141 "ProjectLoader.vala" + if (model_loader_handler_commit_track (self->priv->handler, track->attribute_names, track->attribute_names_length1, track->attribute_values, track->attribute_values_length1)) { +#line 1067 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (track))); +#line 142 "ProjectLoader.vala" + while (TRUE) { +#line 1073 "ProjectLoader.c" + ModelXmlElement* child; +#line 142 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 142 "ProjectLoader.vala" + break; +#line 1079 "ProjectLoader.c" + } +#line 142 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 143 "ProjectLoader.vala" + model_project_builder_handle_clip (self, child); +#line 1085 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +#line 145 "ProjectLoader.vala" + model_loader_handler_leave_track (self->priv->handler); +#line 1092 "ProjectLoader.c" + } + } +} + + +#line 150 "ProjectLoader.vala" +static void model_project_builder_handle_preference (ModelProjectBuilder* self, ModelXmlElement* preference) { +#line 150 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 150 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (preference)); +#line 151 "ProjectLoader.vala" + if (_vala_strcmp0 ("click", model_xml_element_get_name (preference)) == 0) { +#line 152 "ProjectLoader.vala" + model_loader_handler_commit_click (self->priv->handler, preference->attribute_names, preference->attribute_names_length1, preference->attribute_values, preference->attribute_values_length1); +#line 1108 "ProjectLoader.c" + } else { +#line 153 "ProjectLoader.vala" + if (_vala_strcmp0 ("library", model_xml_element_get_name (preference)) == 0) { +#line 154 "ProjectLoader.vala" + model_loader_handler_commit_library_preference (self->priv->handler, preference->attribute_names, preference->attribute_names_length1, preference->attribute_values, preference->attribute_values_length1); +#line 1114 "ProjectLoader.c" + } else { + char* _tmp0_; +#line 157 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", _tmp0_ = g_strdup_printf ("Unknown preference: %s", model_xml_element_get_name (preference))); +#line 1119 "ProjectLoader.c" + _g_free0 (_tmp0_); + } + } +} + + +#line 161 "ProjectLoader.vala" +static void model_project_builder_handle_time_signature (ModelProjectBuilder* self, ModelXmlElement* time_signature) { +#line 161 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 161 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (time_signature)); +#line 1132 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (time_signature))); +#line 162 "ProjectLoader.vala" + while (TRUE) { +#line 1138 "ProjectLoader.c" + ModelXmlElement* child; +#line 162 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 162 "ProjectLoader.vala" + break; +#line 1144 "ProjectLoader.c" + } +#line 162 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 163 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "entry", child)) { +#line 164 "ProjectLoader.vala" + if (!model_loader_handler_commit_time_signature_entry (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) { +#line 166 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper time signature node"); +#line 1154 "ProjectLoader.c" + } + } + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 172 "ProjectLoader.vala" +static void model_project_builder_handle_tempo (ModelProjectBuilder* self, ModelXmlElement* tempo) { +#line 172 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 172 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (tempo)); +#line 1170 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (tempo))); +#line 173 "ProjectLoader.vala" + while (TRUE) { +#line 1176 "ProjectLoader.c" + ModelXmlElement* child; +#line 173 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 173 "ProjectLoader.vala" + break; +#line 1182 "ProjectLoader.c" + } +#line 173 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 174 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "entry", child)) { +#line 175 "ProjectLoader.vala" + if (!model_loader_handler_commit_tempo_entry (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) { +#line 176 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper tempo node"); +#line 1192 "ProjectLoader.c" + } + } + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 182 "ProjectLoader.vala" +static void model_project_builder_handle_map (ModelProjectBuilder* self, ModelXmlElement* map) { +#line 1204 "ProjectLoader.c" + GQuark _tmp1_; + const char* _tmp0_; + static GQuark _tmp1__label0 = 0; + static GQuark _tmp1__label1 = 0; +#line 182 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 182 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (map)); +#line 1213 "ProjectLoader.c" + _tmp0_ = model_xml_element_get_name (map); + _tmp1_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_); + if (_tmp1_ == ((0 != _tmp1__label0) ? _tmp1__label0 : (_tmp1__label0 = g_quark_from_static_string ("tempo")))) + switch (0) { + default: + { +#line 185 "ProjectLoader.vala" + model_project_builder_handle_tempo (self, map); +#line 186 "ProjectLoader.vala" + break; +#line 1224 "ProjectLoader.c" + } + } else if (_tmp1_ == ((0 != _tmp1__label1) ? _tmp1__label1 : (_tmp1__label1 = g_quark_from_static_string ("time_signature")))) + switch (0) { + default: + { +#line 188 "ProjectLoader.vala" + model_project_builder_handle_time_signature (self, map); +#line 189 "ProjectLoader.vala" + break; +#line 1234 "ProjectLoader.c" + } + } else + switch (0) { + default: + { +#line 191 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "improper map node"); +#line 192 "ProjectLoader.vala" + break; +#line 1244 "ProjectLoader.c" + } + } +} + + +#line 196 "ProjectLoader.vala" +static void model_project_builder_handle_library (ModelProjectBuilder* self, ModelXmlElement* library) { +#line 196 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 196 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (library)); +#line 197 "ProjectLoader.vala" + if (model_loader_handler_commit_library (self->priv->handler, library->attribute_names, library->attribute_names_length1, library->attribute_values, library->attribute_values_length1)) { +#line 1258 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (library))); +#line 198 "ProjectLoader.vala" + while (TRUE) { +#line 1264 "ProjectLoader.c" + ModelXmlElement* child; +#line 198 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 198 "ProjectLoader.vala" + break; +#line 1270 "ProjectLoader.c" + } +#line 198 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 199 "ProjectLoader.vala" + if (!model_loader_handler_commit_clipfile (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) { +#line 200 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper library node"); +#line 1278 "ProjectLoader.c" + } + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +#line 202 "ProjectLoader.vala" + model_loader_handler_leave_library (self->priv->handler); +#line 1286 "ProjectLoader.c" + } +} + + +#line 206 "ProjectLoader.vala" +static void model_project_builder_handle_tracks (ModelProjectBuilder* self, ModelXmlElement* tracks) { +#line 206 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 206 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (tracks)); +#line 1297 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (tracks))); +#line 207 "ProjectLoader.vala" + while (TRUE) { +#line 1303 "ProjectLoader.c" + ModelXmlElement* child; +#line 207 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 207 "ProjectLoader.vala" + break; +#line 1309 "ProjectLoader.c" + } +#line 207 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 208 "ProjectLoader.vala" + model_project_builder_handle_track (self, child); +#line 1315 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 212 "ProjectLoader.vala" +static void model_project_builder_handle_preferences (ModelProjectBuilder* self, ModelXmlElement* preferences) { +#line 212 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 212 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (preferences)); +#line 1329 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (preferences))); +#line 213 "ProjectLoader.vala" + while (TRUE) { +#line 1335 "ProjectLoader.c" + ModelXmlElement* child; +#line 213 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 213 "ProjectLoader.vala" + break; +#line 1341 "ProjectLoader.c" + } +#line 213 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 214 "ProjectLoader.vala" + model_project_builder_handle_preference (self, child); +#line 1347 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 217 "ProjectLoader.vala" +static void model_project_builder_handle_maps (ModelProjectBuilder* self, ModelXmlElement* maps) { +#line 217 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 217 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (maps)); +#line 1361 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (maps))); +#line 218 "ProjectLoader.vala" + while (TRUE) { +#line 1367 "ProjectLoader.c" + ModelXmlElement* child; +#line 218 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 218 "ProjectLoader.vala" + break; +#line 1373 "ProjectLoader.c" + } +#line 218 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 219 "ProjectLoader.vala" + model_project_builder_handle_map (self, child); +#line 1379 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 222 "ProjectLoader.vala" +gboolean model_project_builder_check_project (ModelProjectBuilder* self, ModelXmlElement* root) { +#line 1389 "ProjectLoader.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; +#line 222 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_PROJECT_BUILDER (self), FALSE); +#line 222 "ProjectLoader.vala" + g_return_val_if_fail ((root == NULL) || MODEL_IS_XML_ELEMENT (root), FALSE); +#line 223 "ProjectLoader.vala" + if (root == NULL) { +#line 224 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Invalid XML file!"); +#line 1400 "ProjectLoader.c" + result = FALSE; +#line 225 "ProjectLoader.vala" + return result; +#line 1404 "ProjectLoader.c" + } +#line 228 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "marina", root)) { +#line 229 "ProjectLoader.vala" + _tmp0_ = model_loader_handler_commit_marina (self->priv->handler, root->attribute_names, root->attribute_names_length1, root->attribute_values, root->attribute_values_length1); +#line 1410 "ProjectLoader.c" + } else { +#line 228 "ProjectLoader.vala" + _tmp0_ = FALSE; +#line 1414 "ProjectLoader.c" + } +#line 228 "ProjectLoader.vala" + if (_tmp0_) { +#line 1418 "ProjectLoader.c" + gboolean _tmp1_ = FALSE; + gboolean _tmp2_ = FALSE; + gboolean _tmp3_ = FALSE; + ModelXmlElement* _tmp4_; + gboolean _tmp5_; + gboolean _tmp8_ = FALSE; +#line 230 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) != 3) { +#line 230 "ProjectLoader.vala" + _tmp1_ = gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) != 4; +#line 1429 "ProjectLoader.c" + } else { +#line 230 "ProjectLoader.vala" + _tmp1_ = FALSE; +#line 1433 "ProjectLoader.c" + } +#line 230 "ProjectLoader.vala" + if (_tmp1_) { +#line 231 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper number of children!"); +#line 1439 "ProjectLoader.c" + result = FALSE; +#line 232 "ProjectLoader.vala" + return result; +#line 1443 "ProjectLoader.c" + } +#line 235 "ProjectLoader.vala" + if ((_tmp5_ = !model_project_builder_check_name (self, "library", _tmp4_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 0)), _model_xml_element_unref0 (_tmp4_), _tmp5_)) { +#line 235 "ProjectLoader.vala" + _tmp3_ = TRUE; +#line 1449 "ProjectLoader.c" + } else { + ModelXmlElement* _tmp6_; +#line 236 "ProjectLoader.vala" + _tmp3_ = !model_project_builder_check_name (self, "tracks", _tmp6_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 1)); +#line 1454 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp6_); + } +#line 235 "ProjectLoader.vala" + if (_tmp3_) { +#line 235 "ProjectLoader.vala" + _tmp2_ = TRUE; +#line 1461 "ProjectLoader.c" + } else { + ModelXmlElement* _tmp7_; +#line 237 "ProjectLoader.vala" + _tmp2_ = !model_project_builder_check_name (self, "preferences", _tmp7_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 2)); +#line 1466 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp7_); + } +#line 235 "ProjectLoader.vala" + if (_tmp2_) { +#line 1471 "ProjectLoader.c" + result = FALSE; +#line 238 "ProjectLoader.vala" + return result; +#line 1475 "ProjectLoader.c" + } +#line 240 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) == 4) { +#line 1479 "ProjectLoader.c" + ModelXmlElement* _tmp9_; +#line 240 "ProjectLoader.vala" + _tmp8_ = !model_project_builder_check_name (self, "maps", _tmp9_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 3)); +#line 1483 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp9_); + } else { +#line 240 "ProjectLoader.vala" + _tmp8_ = FALSE; +#line 1488 "ProjectLoader.c" + } +#line 240 "ProjectLoader.vala" + if (_tmp8_) { +#line 1492 "ProjectLoader.c" + result = FALSE; +#line 241 "ProjectLoader.vala" + return result; +#line 1496 "ProjectLoader.c" + } + } else { + result = FALSE; +#line 244 "ProjectLoader.vala" + return result; +#line 1502 "ProjectLoader.c" + } + result = TRUE; +#line 245 "ProjectLoader.vala" + return result; +#line 1507 "ProjectLoader.c" +} + + +#line 248 "ProjectLoader.vala" +void model_project_builder_build_project (ModelProjectBuilder* self, ModelXmlElement* root) { +#line 1513 "ProjectLoader.c" + ModelXmlElement* _tmp0_; + ModelXmlElement* _tmp1_; + ModelXmlElement* _tmp2_; +#line 248 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 248 "ProjectLoader.vala" + g_return_if_fail ((root == NULL) || MODEL_IS_XML_ELEMENT (root)); +#line 249 "ProjectLoader.vala" + model_project_builder_handle_library (self, _tmp0_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 0)); +#line 1523 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp0_); +#line 250 "ProjectLoader.vala" + model_project_builder_handle_tracks (self, _tmp1_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 1)); +#line 1527 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp1_); +#line 251 "ProjectLoader.vala" + model_project_builder_handle_preferences (self, _tmp2_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 2)); +#line 1531 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp2_); +#line 252 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) == 4) { +#line 1535 "ProjectLoader.c" + ModelXmlElement* _tmp3_; +#line 253 "ProjectLoader.vala" + model_project_builder_handle_maps (self, _tmp3_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 3)); +#line 1539 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp3_); + } +#line 256 "ProjectLoader.vala" + model_loader_handler_leave_marina (self->priv->handler); +#line 1544 "ProjectLoader.c" +} + + +static void model_project_builder_class_init (ModelProjectBuilderClass * klass) { + model_project_builder_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelProjectBuilderPrivate)); + G_OBJECT_CLASS (klass)->finalize = model_project_builder_finalize; + g_signal_new ("error_occurred", MODEL_TYPE_PROJECT_BUILDER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); +} + + +static void model_project_builder_instance_init (ModelProjectBuilder * self) { + self->priv = MODEL_PROJECT_BUILDER_GET_PRIVATE (self); +} + + +static void model_project_builder_finalize (GObject* obj) { + ModelProjectBuilder * self; + self = MODEL_PROJECT_BUILDER (obj); + _g_object_unref0 (self->priv->handler); + G_OBJECT_CLASS (model_project_builder_parent_class)->finalize (obj); +} + + +GType model_project_builder_get_type (void) { + static volatile gsize model_project_builder_type_id__volatile = 0; + if (g_once_init_enter (&model_project_builder_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelProjectBuilderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_builder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProjectBuilder), 0, (GInstanceInitFunc) model_project_builder_instance_init, NULL }; + GType model_project_builder_type_id; + model_project_builder_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProjectBuilder", &g_define_type_info, 0); + g_once_init_leave (&model_project_builder_type_id__volatile, model_project_builder_type_id); + } + return model_project_builder_type_id__volatile; +} + + +#line 272 "ProjectLoader.vala" +ModelXmlElement* model_xml_element_construct (GType object_type, const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent) { +#line 1583 "ProjectLoader.c" + ModelXmlElement* self; + char** _tmp1_; + gint _tmp0_; + char** _tmp3_; + gint _tmp2_; + GeeArrayList* _tmp4_; +#line 272 "ProjectLoader.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 272 "ProjectLoader.vala" + g_return_val_if_fail ((parent == NULL) || MODEL_IS_XML_ELEMENT (parent), NULL); +#line 1594 "ProjectLoader.c" + self = (ModelXmlElement*) g_type_create_instance (object_type); +#line 274 "ProjectLoader.vala" + model_xml_element_set_name (self, name); +#line 276 "ProjectLoader.vala" + self->attribute_names = (_tmp1_ = copy_array (attribute_names, attribute_names_length1, &_tmp0_), self->attribute_names = (_vala_array_free (self->attribute_names, self->attribute_names_length1, (GDestroyNotify) g_free), NULL), self->attribute_names_length1 = _tmp0_, _tmp1_); +#line 277 "ProjectLoader.vala" + self->attribute_values = (_tmp3_ = copy_array (attribute_values, attribute_values_length1, &_tmp2_), self->attribute_values = (_vala_array_free (self->attribute_values, self->attribute_values_length1, (GDestroyNotify) g_free), NULL), self->attribute_values_length1 = _tmp2_, _tmp3_); +#line 278 "ProjectLoader.vala" + model_xml_element_set_parent (self, parent); +#line 279 "ProjectLoader.vala" + self->priv->_children = (_tmp4_ = gee_array_list_new (MODEL_TYPE_XML_ELEMENT, (GBoxedCopyFunc) model_xml_element_ref, model_xml_element_unref, NULL), _g_object_unref0 (self->priv->_children), _tmp4_); +#line 1606 "ProjectLoader.c" + return self; +} + + +#line 272 "ProjectLoader.vala" +ModelXmlElement* model_xml_element_new (const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent) { +#line 272 "ProjectLoader.vala" + return model_xml_element_construct (MODEL_TYPE_XML_ELEMENT, name, attribute_names, attribute_names_length1, attribute_values, attribute_values_length1, parent); +#line 1615 "ProjectLoader.c" +} + + +#line 282 "ProjectLoader.vala" +void model_xml_element_add_child (ModelXmlElement* self, ModelXmlElement* child_element) { +#line 282 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (self)); +#line 282 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (child_element)); +#line 283 "ProjectLoader.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->_children), child_element); +#line 1627 "ProjectLoader.c" +} + + +const char* model_xml_element_get_name (ModelXmlElement* self) { + const char* result; + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL); + result = self->priv->_name; +#line 261 "ProjectLoader.vala" + return result; +#line 1637 "ProjectLoader.c" +} + + +static void model_xml_element_set_name (ModelXmlElement* self, const char* value) { + char* _tmp0_; + g_return_if_fail (MODEL_IS_XML_ELEMENT (self)); + self->priv->_name = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_name), _tmp0_); +} + + +GeeArrayList* model_xml_element_get_children (ModelXmlElement* self) { + GeeArrayList* result; + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL); + result = self->priv->_children; +#line 267 "ProjectLoader.vala" + return result; +#line 1654 "ProjectLoader.c" +} + + +ModelXmlElement* model_xml_element_get_parent (ModelXmlElement* self) { + ModelXmlElement* result; + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL); + result = self->priv->_parent; +#line 269 "ProjectLoader.vala" + return result; +#line 1664 "ProjectLoader.c" +} + + +static void model_xml_element_set_parent (ModelXmlElement* self, ModelXmlElement* value) { + g_return_if_fail (MODEL_IS_XML_ELEMENT (self)); + self->priv->_parent = value; +} + + +static void model_value_xml_element_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_xml_element_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_xml_element_unref (value->data[0].v_pointer); + } +} + + +static void model_value_xml_element_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_xml_element_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_xml_element_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_xml_element_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelXmlElement* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_xml_element_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_xml_element_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelXmlElement** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_xml_element_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecXmlElement* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_XML_ELEMENT), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_xml_element (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_xml_element (GValue* value, gpointer v_object) { + ModelXmlElement* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_ELEMENT)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_xml_element_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_element_unref (old); + } +} + + +void model_value_take_xml_element (GValue* value, gpointer v_object) { + ModelXmlElement* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_ELEMENT)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_element_unref (old); + } +} + + +static void model_xml_element_class_init (ModelXmlElementClass * klass) { + model_xml_element_parent_class = g_type_class_peek_parent (klass); + MODEL_XML_ELEMENT_CLASS (klass)->finalize = model_xml_element_finalize; + g_type_class_add_private (klass, sizeof (ModelXmlElementPrivate)); +} + + +static void model_xml_element_instance_init (ModelXmlElement * self) { + self->priv = MODEL_XML_ELEMENT_GET_PRIVATE (self); + self->ref_count = 1; +} + + +static void model_xml_element_finalize (ModelXmlElement* obj) { + ModelXmlElement * self; + self = MODEL_XML_ELEMENT (obj); + _g_free0 (self->priv->_name); + self->attribute_names = (_vala_array_free (self->attribute_names, self->attribute_names_length1, (GDestroyNotify) g_free), NULL); + self->attribute_values = (_vala_array_free (self->attribute_values, self->attribute_values_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (self->priv->_children); +} + + +GType model_xml_element_get_type (void) { + static volatile gsize model_xml_element_type_id__volatile = 0; + if (g_once_init_enter (&model_xml_element_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_xml_element_init, model_value_xml_element_free_value, model_value_xml_element_copy_value, model_value_xml_element_peek_pointer, "p", model_value_xml_element_collect_value, "p", model_value_xml_element_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelXmlElementClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_xml_element_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelXmlElement), 0, (GInstanceInitFunc) model_xml_element_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_xml_element_type_id; + model_xml_element_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelXmlElement", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_xml_element_type_id__volatile, model_xml_element_type_id); + } + return model_xml_element_type_id__volatile; +} + + +gpointer model_xml_element_ref (gpointer instance) { + ModelXmlElement* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_xml_element_unref (gpointer instance) { + ModelXmlElement* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_XML_ELEMENT_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +#line 307 "ProjectLoader.vala" +static void _model_project_loader_on_load_error_model_loader_handler_load_error (ModelLoaderHandler* _sender, const char* error_message, gpointer self) { +#line 1841 "ProjectLoader.c" + model_project_loader_on_load_error (self, error_message); +} + + +#line 312 "ProjectLoader.vala" +static void _model_project_loader_on_handler_complete_model_loader_handler_complete (ModelLoaderHandler* _sender, gpointer self) { +#line 1848 "ProjectLoader.c" + model_project_loader_on_handler_complete (self); +} + + +#line 300 "ProjectLoader.vala" +ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name) { +#line 1855 "ProjectLoader.c" + ModelProjectLoader * self; + char* _tmp0_; + ModelLoaderHandler* _tmp1_; +#line 300 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (loader_handler), NULL); +#line 300 "ProjectLoader.vala" + self = (ModelProjectLoader*) g_object_new (object_type, NULL); +#line 301 "ProjectLoader.vala" + self->priv->file_name = (_tmp0_ = g_strdup (file_name), _g_free0 (self->priv->file_name), _tmp0_); +#line 302 "ProjectLoader.vala" + self->priv->loader_handler = (_tmp1_ = _g_object_ref0 (loader_handler), _g_object_unref0 (self->priv->loader_handler), _tmp1_); +#line 303 "ProjectLoader.vala" + g_signal_connect_object (loader_handler, "load-error", (GCallback) _model_project_loader_on_load_error_model_loader_handler_load_error, self, 0); +#line 304 "ProjectLoader.vala" + g_signal_connect_object (loader_handler, "complete", (GCallback) _model_project_loader_on_handler_complete_model_loader_handler_complete, self, 0); +#line 1871 "ProjectLoader.c" + return self; +} + + +#line 300 "ProjectLoader.vala" +ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name) { +#line 300 "ProjectLoader.vala" + return model_project_loader_construct (MODEL_TYPE_PROJECT_LOADER, loader_handler, file_name); +#line 1880 "ProjectLoader.c" +} + + +#line 307 "ProjectLoader.vala" +static void model_project_loader_on_load_error (ModelProjectLoader* self, const char* _error_) { +#line 307 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_LOADER (self)); +#line 307 "ProjectLoader.vala" + g_return_if_fail (_error_ != NULL); +#line 308 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_error"); +#line 309 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-error", _error_); +#line 1894 "ProjectLoader.c" +} + + +#line 312 "ProjectLoader.vala" +static void model_project_loader_on_handler_complete (ModelProjectLoader* self) { +#line 1900 "ProjectLoader.c" + gboolean _tmp0_ = FALSE; +#line 312 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_LOADER (self)); +#line 313 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_handler_complete"); +#line 314 "ProjectLoader.vala" + self->priv->handler_completed = TRUE; +#line 315 "ProjectLoader.vala" + if (self->priv->project_load_completed) { +#line 315 "ProjectLoader.vala" + _tmp0_ = !self->priv->load_completed_fired; +#line 1912 "ProjectLoader.c" + } else { +#line 315 "ProjectLoader.vala" + _tmp0_ = FALSE; +#line 1916 "ProjectLoader.c" + } +#line 315 "ProjectLoader.vala" + if (_tmp0_) { +#line 316 "ProjectLoader.vala" + self->priv->load_completed_fired = TRUE; +#line 317 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 1924 "ProjectLoader.c" + } +} + + +#line 307 "ProjectLoader.vala" +static void _model_project_loader_on_load_error_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self) { +#line 1931 "ProjectLoader.c" + model_project_loader_on_load_error (self, _error_); +} + + +#line 321 "ProjectLoader.vala" +void model_project_loader_load (ModelProjectLoader* self) { +#line 1938 "ProjectLoader.c" + GError * _inner_error_; + char* _tmp3_; + ModelXmlTreeLoader* tree_loader; + ModelProjectBuilder* builder; +#line 321 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_LOADER (self)); +#line 1945 "ProjectLoader.c" + _inner_error_ = NULL; + { + char* _tmp1_; + char* _tmp0_ = NULL; +#line 323 "ProjectLoader.vala" + g_file_get_contents (self->priv->file_name, &_tmp0_, &self->priv->text_len, &_inner_error_); +#line 323 "ProjectLoader.vala" + self->priv->text = (_tmp1_ = _tmp0_, _g_free0 (self->priv->text), _tmp1_); +#line 1954 "ProjectLoader.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch13_g_file_error; + } + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + goto __finally13; + __catch13_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + char* _tmp2_; +#line 325 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_MEDIUM, _tmp2_ = g_strdup_printf ("error loading %s: %s", self->priv->file_name, e->message)); +#line 1974 "ProjectLoader.c" + _g_free0 (_tmp2_); +#line 327 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-error", e->message); +#line 328 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 1980 "ProjectLoader.c" + _g_error_free0 (e); +#line 329 "ProjectLoader.vala" + return; +#line 1984 "ProjectLoader.c" + } + } + __finally13: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 331 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, _tmp3_ = g_strdup_printf ("Building tree for %s", self->priv->file_name)); +#line 1995 "ProjectLoader.c" + _g_free0 (_tmp3_); +#line 332 "ProjectLoader.vala" + tree_loader = model_xml_tree_loader_new (self->priv->text); +#line 334 "ProjectLoader.vala" + builder = model_project_builder_new (self->priv->loader_handler); +#line 335 "ProjectLoader.vala" + g_signal_connect_object (builder, "error-occurred", (GCallback) _model_project_loader_on_load_error_model_project_builder_error_occurred, self, 0); +#line 337 "ProjectLoader.vala" + if (model_project_builder_check_project (builder, tree_loader->root)) { +#line 2005 "ProjectLoader.c" + gboolean _tmp4_ = FALSE; +#line 338 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, "project checked out. starting load"); +#line 339 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-started", self->priv->file_name); +#line 340 "ProjectLoader.vala" + model_project_builder_build_project (builder, tree_loader->root); +#line 341 "ProjectLoader.vala" + self->priv->project_load_completed = TRUE; +#line 342 "ProjectLoader.vala" + if (self->priv->handler_completed) { +#line 342 "ProjectLoader.vala" + _tmp4_ = !self->priv->load_completed_fired; +#line 2019 "ProjectLoader.c" + } else { +#line 342 "ProjectLoader.vala" + _tmp4_ = FALSE; +#line 2023 "ProjectLoader.c" + } +#line 342 "ProjectLoader.vala" + if (_tmp4_) { +#line 343 "ProjectLoader.vala" + self->priv->load_completed_fired = TRUE; +#line 344 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 2031 "ProjectLoader.c" + } + } else { +#line 348 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_INFO, "project did not check out. stopping."); +#line 349 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 2038 "ProjectLoader.c" + } + _model_xml_tree_loader_unref0 (tree_loader); + _g_object_unref0 (builder); +} + + +static void model_project_loader_class_init (ModelProjectLoaderClass * klass) { + model_project_loader_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelProjectLoaderPrivate)); + G_OBJECT_CLASS (klass)->finalize = model_project_loader_finalize; + g_signal_new ("load_started", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + g_signal_new ("load_complete", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("load_error", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); +} + + +static void model_project_loader_instance_init (ModelProjectLoader * self) { + self->priv = MODEL_PROJECT_LOADER_GET_PRIVATE (self); + self->priv->project_load_completed = FALSE; + self->priv->load_completed_fired = FALSE; + self->priv->handler_completed = FALSE; +} + + +static void model_project_loader_finalize (GObject* obj) { + ModelProjectLoader * self; + self = MODEL_PROJECT_LOADER (obj); + _g_free0 (self->priv->file_name); + _g_object_unref0 (self->priv->loader_handler); + _g_free0 (self->priv->text); + G_OBJECT_CLASS (model_project_loader_parent_class)->finalize (obj); +} + + +GType model_project_loader_get_type (void) { + static volatile gsize model_project_loader_type_id__volatile = 0; + if (g_once_init_enter (&model_project_loader_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelProjectLoaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_loader_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProjectLoader), 0, (GInstanceInitFunc) model_project_loader_instance_init, NULL }; + GType model_project_loader_type_id; + model_project_loader_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProjectLoader", &g_define_type_info, 0); + g_once_init_leave (&model_project_loader_type_id__volatile, model_project_loader_type_id); + } + return model_project_loader_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/marina/marina/ProjectLoader.o b/src/marina/marina/ProjectLoader.o new file mode 100644 index 0000000000000000000000000000000000000000..c3909bdd493621e508fde13a49f3f959002f00f2 GIT binary patch literal 127256 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 M>u>+tmap^w0kLKV8vp +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define VIEW_TYPE_RULER (view_ruler_get_type ()) +#define VIEW_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_RULER, ViewRuler)) +#define VIEW_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_RULER, ViewRulerClass)) +#define VIEW_IS_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_RULER)) +#define VIEW_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_RULER)) +#define VIEW_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_RULER, ViewRulerClass)) + +typedef struct _ViewRuler ViewRuler; +typedef struct _ViewRulerClass ViewRulerClass; +typedef struct _ViewRulerPrivate ViewRulerPrivate; + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL))) +#define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL))) + +struct _ViewRuler { + GtkDrawingArea parent_instance; + ViewRulerPrivate * priv; +}; + +struct _ViewRulerClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +struct _ViewRulerPrivate { + ModelTimeSystem* provider; +}; + + +static gpointer view_ruler_parent_class = NULL; + +GType view_ruler_get_type (void); +GType model_time_system_get_type (void); +#define VIEW_RULER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_RULER, ViewRulerPrivate)) +enum { + VIEW_RULER_DUMMY_PROPERTY +}; +#define VIEW_RULER_BORDER 4 +ViewRuler* view_ruler_new (ModelTimeSystem* provider, gint height); +ViewRuler* view_ruler_construct (GType object_type, ModelTimeSystem* provider, gint height); +gint model_time_system_get_start_token (ModelTimeSystem* self, gint xsize); +void parse_color (const char* color, GdkColor* result); +gint model_time_system_frame_to_xsize (ModelTimeSystem* self, gint frame); +gint model_time_system_get_pixel_height (ModelTimeSystem* self, gint token); +char* model_time_system_get_display_string (ModelTimeSystem* self, gint token); +gint model_time_system_get_next_position (ModelTimeSystem* self, gint token); +static gboolean view_ruler_real_expose_event (GtkWidget* base, GdkEventExpose* event); +static gboolean view_ruler_real_button_press_event (GtkWidget* base, GdkEventButton* event); +static gboolean view_ruler_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event); +static void view_ruler_finalize (GObject* obj); + + + +#line 14 "Ruler.vala" +ViewRuler* view_ruler_construct (GType object_type, ModelTimeSystem* provider, gint height) { +#line 105 "Ruler.c" + ViewRuler * self; +#line 14 "Ruler.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (provider), NULL); +#line 109 "Ruler.c" + self = g_object_newv (object_type, 0, NULL); +#line 15 "Ruler.vala" + self->priv->provider = provider; +#line 16 "Ruler.vala" + GTK_WIDGET_SET_FLAGS (GTK_WIDGET (self), GTK_NO_WINDOW); +#line 17 "Ruler.vala" + gtk_widget_set_size_request (GTK_WIDGET (self), 0, height); +#line 117 "Ruler.c" + return self; +} + + +#line 14 "Ruler.vala" +ViewRuler* view_ruler_new (ModelTimeSystem* provider, gint height) { +#line 14 "Ruler.vala" + return view_ruler_construct (VIEW_TYPE_RULER, provider, height); +#line 126 "Ruler.c" +} + + +#line 20 "Ruler.vala" +static gboolean view_ruler_real_expose_event (GtkWidget* base, GdkEventExpose* event) { +#line 132 "Ruler.c" + ViewRuler * self; + gboolean result = FALSE; + gint x; + gint frame; + cairo_t* context; + GdkColor _tmp1_; + GdkColor _tmp0_ = {0}; + cairo_antialias_t old_antialias; + gint stop; + PangoFontDescription* f; + self = VIEW_RULER (base); +#line 21 "Ruler.vala" + x = (*event).area.x; +#line 22 "Ruler.vala" + frame = model_time_system_get_start_token (self->priv->provider, x); +#line 24 "Ruler.vala" + context = gdk_cairo_create (GDK_DRAWABLE (GTK_WIDGET (self)->window)); +#line 26 "Ruler.vala" + gdk_cairo_set_source_color (context, (_tmp1_ = (parse_color ("#777", &_tmp0_), _tmp0_), &_tmp1_)); +#line 27 "Ruler.vala" + cairo_rectangle (context, (double) (*event).area.x, (double) (*event).area.y, (double) (*event).area.width, (double) (*event).area.height); +#line 28 "Ruler.vala" + cairo_fill (context); +#line 30 "Ruler.vala" + old_antialias = cairo_get_antialias (context); +#line 32 "Ruler.vala" + cairo_set_antialias (context, CAIRO_ANTIALIAS_NONE); +#line 33 "Ruler.vala" + cairo_set_source_rgb (context, 1.0, 1.0, 1.0); +#line 34 "Ruler.vala" + stop = (*event).area.x + (*event).area.width; +#line 35 "Ruler.vala" + f = pango_font_description_from_string ("Sans 9"); +#line 36 "Ruler.vala" + while (TRUE) { +#line 168 "Ruler.c" + gint y; + char* display_string; +#line 36 "Ruler.vala" + if (!(x <= stop)) { +#line 36 "Ruler.vala" + break; +#line 175 "Ruler.c" + } +#line 37 "Ruler.vala" + x = model_time_system_frame_to_xsize (self->priv->provider, frame); +#line 38 "Ruler.vala" + y = model_time_system_get_pixel_height (self->priv->provider, frame); +#line 40 "Ruler.vala" + cairo_move_to (context, (double) (x + VIEW_RULER_BORDER), (double) 0); +#line 41 "Ruler.vala" + cairo_line_to (context, (double) (x + VIEW_RULER_BORDER), (double) y); +#line 43 "Ruler.vala" + display_string = model_time_system_get_display_string (self->priv->provider, frame); +#line 44 "Ruler.vala" + if (display_string != NULL) { +#line 189 "Ruler.c" + PangoLayout* layout; + gint w = 0; + gint h = 0; + gint text_pos; +#line 45 "Ruler.vala" + layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), display_string); +#line 49 "Ruler.vala" + pango_layout_set_font_description (layout, f); +#line 50 "Ruler.vala" + pango_layout_get_pixel_size (layout, &w, &h); +#line 51 "Ruler.vala" + text_pos = (x - (w / 2)) + VIEW_RULER_BORDER; +#line 52 "Ruler.vala" + if (text_pos < 0) { +#line 53 "Ruler.vala" + text_pos = 0; +#line 206 "Ruler.c" + } +#line 56 "Ruler.vala" + gdk_draw_layout (GDK_DRAWABLE (GTK_WIDGET (self)->window), gtk_widget_get_style (GTK_WIDGET (self))->white_gc, text_pos, 7, layout); +#line 210 "Ruler.c" + _g_object_unref0 (layout); + } +#line 59 "Ruler.vala" + frame = model_time_system_get_next_position (self->priv->provider, frame); +#line 215 "Ruler.c" + _g_free0 (display_string); + } +#line 61 "Ruler.vala" + cairo_set_antialias (context, old_antialias); +#line 62 "Ruler.vala" + cairo_set_line_width (context, 1.0); +#line 63 "Ruler.vala" + cairo_stroke (context); +#line 224 "Ruler.c" + result = TRUE; + _cairo_destroy0 (context); + _pango_font_description_free0 (f); +#line 64 "Ruler.vala" + return result; +#line 230 "Ruler.c" +} + + +#line 67 "Ruler.vala" +static gboolean view_ruler_real_button_press_event (GtkWidget* base, GdkEventButton* event) { +#line 236 "Ruler.c" + ViewRuler * self; + gboolean result = FALSE; + self = VIEW_RULER (base); +#line 68 "Ruler.vala" + g_signal_emit_by_name (self, "position-changed", (gint) (*event).x); +#line 242 "Ruler.c" + result = FALSE; +#line 69 "Ruler.vala" + return result; +#line 246 "Ruler.c" +} + + +#line 72 "Ruler.vala" +static gboolean view_ruler_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) { +#line 252 "Ruler.c" + ViewRuler * self; + gboolean result = FALSE; + self = VIEW_RULER (base); +#line 73 "Ruler.vala" + if (((*event).state & GDK_BUTTON1_MASK) != 0) { +#line 74 "Ruler.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 75 "Ruler.vala" + g_signal_emit_by_name (self, "position-changed", (gint) (*event).x); +#line 262 "Ruler.c" + } + result = FALSE; +#line 77 "Ruler.vala" + return result; +#line 267 "Ruler.c" +} + + +static void view_ruler_class_init (ViewRulerClass * klass) { + view_ruler_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewRulerPrivate)); + GTK_WIDGET_CLASS (klass)->expose_event = view_ruler_real_expose_event; + GTK_WIDGET_CLASS (klass)->button_press_event = view_ruler_real_button_press_event; + GTK_WIDGET_CLASS (klass)->motion_notify_event = view_ruler_real_motion_notify_event; + G_OBJECT_CLASS (klass)->finalize = view_ruler_finalize; + g_signal_new ("position_changed", VIEW_TYPE_RULER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); +} + + +static void view_ruler_instance_init (ViewRuler * self) { + self->priv = VIEW_RULER_GET_PRIVATE (self); +} + + +static void view_ruler_finalize (GObject* obj) { + ViewRuler * self; + self = VIEW_RULER (obj); + G_OBJECT_CLASS (view_ruler_parent_class)->finalize (obj); +} + + +GType view_ruler_get_type (void) { + static volatile gsize view_ruler_type_id__volatile = 0; + if (g_once_init_enter (&view_ruler_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewRulerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_ruler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewRuler), 0, (GInstanceInitFunc) view_ruler_instance_init, NULL }; + GType view_ruler_type_id; + view_ruler_type_id = g_type_register_static (GTK_TYPE_DRAWING_AREA, "ViewRuler", &g_define_type_info, 0); + g_once_init_leave (&view_ruler_type_id__volatile, view_ruler_type_id); + } + return view_ruler_type_id__volatile; +} + + + + diff --git a/src/marina/marina/Ruler.o b/src/marina/marina/Ruler.o new file mode 100644 index 0000000000000000000000000000000000000000..314852894d9a7dcee8e38dfcb48a29188de995b8 GIT binary patch literal 49404 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 literal 0 HcmV?d00001 diff --git a/src/marina/marina/StatusBar.c b/src/marina/marina/StatusBar.c new file mode 100644 index 0000000..b6b72c1 --- /dev/null +++ b/src/marina/marina/StatusBar.c @@ -0,0 +1,401 @@ +/* StatusBar.c generated by valac, the Vala compiler + * generated from StatusBar.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define VIEW_TYPE_STATUS_BAR (view_status_bar_get_type ()) +#define VIEW_STATUS_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_STATUS_BAR, ViewStatusBar)) +#define VIEW_STATUS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_STATUS_BAR, ViewStatusBarClass)) +#define VIEW_IS_STATUS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_STATUS_BAR)) +#define VIEW_IS_STATUS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_STATUS_BAR)) +#define VIEW_STATUS_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_STATUS_BAR, ViewStatusBarClass)) + +typedef struct _ViewStatusBar ViewStatusBar; +typedef struct _ViewStatusBarClass ViewStatusBarClass; +typedef struct _ViewStatusBarPrivate ViewStatusBarPrivate; + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +#define _g_free0(var) (var = (g_free (var), NULL)) + +struct _ViewStatusBar { + GtkDrawingArea parent_instance; + ViewStatusBarPrivate * priv; +}; + +struct _ViewStatusBarClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +struct _ViewStatusBarPrivate { + ModelTimeSystem* provider; + gint64 current_position; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +static gpointer view_status_bar_parent_class = NULL; + +GType view_status_bar_get_type (void); +GType model_time_system_get_type (void); +#define VIEW_STATUS_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_STATUS_BAR, ViewStatusBarPrivate)) +enum { + VIEW_STATUS_BAR_DUMMY_PROPERTY +}; +void parse_color (const char* color, GdkColor* result); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType model_tempo_information_get_type (void); +GType model_project_get_type (void); +GType model_clip_file_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType model_track_get_type (void); +GType view_media_engine_get_type (void); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +GType model_library_importer_get_type (void); +void view_status_bar_on_position_changed (ViewStatusBar* self, gint64 new_position); +static void _view_status_bar_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self); +ViewStatusBar* view_status_bar_new (ModelProject* p, ModelTimeSystem* provider, gint height); +ViewStatusBar* view_status_bar_construct (GType object_type, ModelProject* p, ModelTimeSystem* provider, gint height); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +char* model_time_system_get_time_string (ModelTimeSystem* self, gint64 time); +static gboolean view_status_bar_real_expose_event (GtkWidget* base, GdkEventExpose* e); +static void view_status_bar_finalize (GObject* obj); + + + +#line 23 "StatusBar.vala" +static void _view_status_bar_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self) { +#line 281 "StatusBar.c" + view_status_bar_on_position_changed (self, position); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 14 "StatusBar.vala" +ViewStatusBar* view_status_bar_construct (GType object_type, ModelProject* p, ModelTimeSystem* provider, gint height) { +#line 293 "StatusBar.c" + ViewStatusBar * self; + GdkColor _tmp1_; + GdkColor _tmp0_ = {0}; + ModelTimeSystem* _tmp2_; +#line 14 "StatusBar.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (p), NULL); +#line 14 "StatusBar.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (provider), NULL); +#line 302 "StatusBar.c" + self = g_object_newv (object_type, 0, NULL); +#line 15 "StatusBar.vala" + GTK_WIDGET_SET_FLAGS (GTK_WIDGET (self), GTK_NO_WINDOW); +#line 16 "StatusBar.vala" + gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, (_tmp1_ = (parse_color ("#666", &_tmp0_), _tmp0_), &_tmp1_)); +#line 17 "StatusBar.vala" + gtk_widget_set_size_request (GTK_WIDGET (self), 0, height); +#line 19 "StatusBar.vala" + g_signal_connect_object (p->media_engine, "position-changed", (GCallback) _view_status_bar_on_position_changed_view_media_engine_position_changed, self, 0); +#line 20 "StatusBar.vala" + self->priv->provider = (_tmp2_ = _g_object_ref0 (provider), _g_object_unref0 (self->priv->provider), _tmp2_); +#line 314 "StatusBar.c" + return self; +} + + +#line 14 "StatusBar.vala" +ViewStatusBar* view_status_bar_new (ModelProject* p, ModelTimeSystem* provider, gint height) { +#line 14 "StatusBar.vala" + return view_status_bar_construct (VIEW_TYPE_STATUS_BAR, p, provider, height); +#line 323 "StatusBar.c" +} + + +#line 23 "StatusBar.vala" +void view_status_bar_on_position_changed (ViewStatusBar* self, gint64 new_position) { +#line 23 "StatusBar.vala" + g_return_if_fail (VIEW_IS_STATUS_BAR (self)); +#line 24 "StatusBar.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_position_changed"); +#line 25 "StatusBar.vala" + self->priv->current_position = new_position; +#line 26 "StatusBar.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 337 "StatusBar.c" +} + + +#line 29 "StatusBar.vala" +static gboolean view_status_bar_real_expose_event (GtkWidget* base, GdkEventExpose* e) { +#line 343 "StatusBar.c" + ViewStatusBar * self; + gboolean result = FALSE; + char* time; + PangoLayout* layout; + self = VIEW_STATUS_BAR (base); +#line 30 "StatusBar.vala" + gdk_draw_rectangle (GDK_DRAWABLE (GTK_WIDGET (self)->window), gtk_widget_get_style (GTK_WIDGET (self))->bg_gc[(gint) GTK_STATE_NORMAL], TRUE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width, GTK_WIDGET (self)->allocation.height); +#line 33 "StatusBar.vala" + time = model_time_system_get_time_string (self->priv->provider, self->priv->current_position); +#line 35 "StatusBar.vala" + layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), time); +#line 36 "StatusBar.vala" + gdk_draw_layout (GDK_DRAWABLE (GTK_WIDGET (self)->window), gtk_widget_get_style (GTK_WIDGET (self))->white_gc, GTK_WIDGET (self)->allocation.x + 4, GTK_WIDGET (self)->allocation.y + 2, layout); +#line 357 "StatusBar.c" + result = TRUE; + _g_free0 (time); + _g_object_unref0 (layout); +#line 38 "StatusBar.vala" + return result; +#line 363 "StatusBar.c" +} + + +static void view_status_bar_class_init (ViewStatusBarClass * klass) { + view_status_bar_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewStatusBarPrivate)); + GTK_WIDGET_CLASS (klass)->expose_event = view_status_bar_real_expose_event; + G_OBJECT_CLASS (klass)->finalize = view_status_bar_finalize; +} + + +static void view_status_bar_instance_init (ViewStatusBar * self) { + self->priv = VIEW_STATUS_BAR_GET_PRIVATE (self); + self->priv->current_position = (gint64) 0; +} + + +static void view_status_bar_finalize (GObject* obj) { + ViewStatusBar * self; + self = VIEW_STATUS_BAR (obj); + _g_object_unref0 (self->priv->provider); + G_OBJECT_CLASS (view_status_bar_parent_class)->finalize (obj); +} + + +GType view_status_bar_get_type (void) { + static volatile gsize view_status_bar_type_id__volatile = 0; + if (g_once_init_enter (&view_status_bar_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewStatusBarClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_status_bar_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewStatusBar), 0, (GInstanceInitFunc) view_status_bar_instance_init, NULL }; + GType view_status_bar_type_id; + view_status_bar_type_id = g_type_register_static (GTK_TYPE_DRAWING_AREA, "ViewStatusBar", &g_define_type_info, 0); + g_once_init_leave (&view_status_bar_type_id__volatile, view_status_bar_type_id); + } + return view_status_bar_type_id__volatile; +} + + + + diff --git a/src/marina/marina/StatusBar.o b/src/marina/marina/StatusBar.o new file mode 100644 index 0000000000000000000000000000000000000000..edfc5f690fd53a48af4c0c14c9bbcdcd5e04e2a7 GIT binary patch literal 50708 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 RTh5T{#pA-4|84BN{{WTzs7n9< literal 0 HcmV?d00001 diff --git a/src/marina/marina/TimeSystem.c b/src/marina/marina/TimeSystem.c new file mode 100644 index 0000000..163403d --- /dev/null +++ b/src/marina/marina/TimeSystem.c @@ -0,0 +1,1709 @@ +/* TimeSystem.c generated by valac, the Vala compiler + * generated from TimeSystem.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; + +#define MODEL_TYPE_TIME_SYSTEM_BASE (model_time_system_base_get_type ()) +#define MODEL_TIME_SYSTEM_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM_BASE, ModelTimeSystemBase)) +#define MODEL_TIME_SYSTEM_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIME_SYSTEM_BASE, ModelTimeSystemBaseClass)) +#define MODEL_IS_TIME_SYSTEM_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM_BASE)) +#define MODEL_IS_TIME_SYSTEM_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIME_SYSTEM_BASE)) +#define MODEL_TIME_SYSTEM_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIME_SYSTEM_BASE, ModelTimeSystemBaseClass)) + +typedef struct _ModelTimeSystemBase ModelTimeSystemBase; +typedef struct _ModelTimeSystemBaseClass ModelTimeSystemBaseClass; +typedef struct _ModelTimeSystemBasePrivate ModelTimeSystemBasePrivate; + +#define MODEL_TYPE_TIMECODE_TIME_SYSTEM (model_timecode_time_system_get_type ()) +#define MODEL_TIMECODE_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIMECODE_TIME_SYSTEM, ModelTimecodeTimeSystem)) +#define MODEL_TIMECODE_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIMECODE_TIME_SYSTEM, ModelTimecodeTimeSystemClass)) +#define MODEL_IS_TIMECODE_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIMECODE_TIME_SYSTEM)) +#define MODEL_IS_TIMECODE_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIMECODE_TIME_SYSTEM)) +#define MODEL_TIMECODE_TIME_SYSTEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIMECODE_TIME_SYSTEM, ModelTimecodeTimeSystemClass)) + +typedef struct _ModelTimecodeTimeSystem ModelTimecodeTimeSystem; +typedef struct _ModelTimecodeTimeSystemClass ModelTimecodeTimeSystemClass; +typedef struct _ModelTimecodeTimeSystemPrivate ModelTimecodeTimeSystemPrivate; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define MODEL_TYPE_BAR_BEAT_TIME_SYSTEM (model_bar_beat_time_system_get_type ()) +#define MODEL_BAR_BEAT_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, ModelBarBeatTimeSystem)) +#define MODEL_BAR_BEAT_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, ModelBarBeatTimeSystemClass)) +#define MODEL_IS_BAR_BEAT_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM)) +#define MODEL_IS_BAR_BEAT_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM)) +#define MODEL_BAR_BEAT_TIME_SYSTEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, ModelBarBeatTimeSystemClass)) + +typedef struct _ModelBarBeatTimeSystem ModelBarBeatTimeSystem; +typedef struct _ModelBarBeatTimeSystemClass ModelBarBeatTimeSystemClass; +typedef struct _ModelBarBeatTimeSystemPrivate ModelBarBeatTimeSystemPrivate; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +struct _ModelTimeSystemBase { + GObject parent_instance; + ModelTimeSystemBasePrivate * priv; + float pixel_percentage; + float pixels_per_second; + gint64 pixel_snap_time; +}; + +struct _ModelTimeSystemBaseClass { + GObjectClass parent_class; + gint* (*get_timeline_seconds) (ModelTimeSystemBase* self, int* result_length1); + gint (*correct_sub_second_value) (ModelTimeSystemBase* self, float seconds, gint div, gint fps); +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTimecodeTimeSystem { + ModelTimeSystemBase parent_instance; + ModelTimecodeTimeSystemPrivate * priv; + Fraction frame_rate_fraction; +}; + +struct _ModelTimecodeTimeSystemClass { + ModelTimeSystemBaseClass parent_class; +}; + +struct _ModelTimecodeTimeSystemPrivate { + float pixels_per_frame; + gint small_pixel_frames; + gint medium_pixel_frames; + gint large_pixel_frames; +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _ModelBarBeatTimeSystem { + ModelTimeSystemBase parent_instance; + ModelBarBeatTimeSystemPrivate * priv; +}; + +struct _ModelBarBeatTimeSystemClass { + ModelTimeSystemBaseClass parent_class; +}; + +struct _ModelBarBeatTimeSystemPrivate { + float pixels_per_sixteenth; + gint small_pixel_sixteenth; + gint medium_pixel_sixteenth; + gint large_pixel_sixteenth; + gint* timeline_bars; + gint timeline_bars_length1; + gint _timeline_bars_size_; + gint bpm; + Fraction time_signature; + float bars_per_minute; + float bars_per_second; + gint sixteenths_per_bar; + gint sixteenths_per_beat; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +static gpointer model_time_system_base_parent_class = NULL; +static gpointer model_timecode_time_system_parent_class = NULL; +static ModelTimeSystemIface* model_timecode_time_system_model_time_system_parent_iface = NULL; +static gpointer model_bar_beat_time_system_parent_class = NULL; +static ModelTimeSystemIface* model_bar_beat_time_system_model_time_system_parent_iface = NULL; + +GType model_time_system_get_type (void); +void model_time_system_calculate_pixel_step (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); +gint64 model_time_system_xpos_to_time (ModelTimeSystem* self, gint x); +gint64 model_time_system_xsize_to_time (ModelTimeSystem* self, gint x); +gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time); +gint64 model_time_system_get_pixel_snap_time (ModelTimeSystem* self); +gint model_time_system_time_to_xsize (ModelTimeSystem* self, gint64 time); +float model_time_system_get_pixel_percentage (ModelTimeSystem* self); +gint model_time_system_get_start_token (ModelTimeSystem* self, gint xsize); +gint model_time_system_get_next_position (ModelTimeSystem* self, gint token); +gint model_time_system_get_pixel_height (ModelTimeSystem* self, gint token); +char* model_time_system_get_display_string (ModelTimeSystem* self, gint token); +gint model_time_system_frame_to_xsize (ModelTimeSystem* self, gint frame); +gint model_time_system_xsize_to_frame (ModelTimeSystem* self, gint xsize); +char* model_time_system_get_time_string (ModelTimeSystem* self, gint64 time); +char* model_time_system_get_time_duration (ModelTimeSystem* self, gint64 time); +GType model_time_system_base_get_type (void); +enum { + MODEL_TIME_SYSTEM_BASE_DUMMY_PROPERTY +}; +#define MODEL_TIME_SYSTEM_BASE_PIXEL_SNAP_INTERVAL 10 +#define MODEL_TIME_SYSTEM_BASE_BORDER 4 +static gint* model_time_system_base_get_timeline_seconds (ModelTimeSystemBase* self, int* result_length1); +static gint* model_time_system_base_real_get_timeline_seconds (ModelTimeSystemBase* self, int* result_length1); +static gint model_time_system_base_correct_sub_second_value (ModelTimeSystemBase* self, float seconds, gint div, gint fps); +static gint model_time_system_base_real_correct_sub_second_value (ModelTimeSystemBase* self, float seconds, gint div, gint fps); +gint model_time_system_base_correct_seconds_value (ModelTimeSystemBase* self, float seconds, gint div, gint fps); +gint64 model_time_system_base_get_pixel_snap_time (ModelTimeSystemBase* self); +float model_time_system_base_get_pixel_percentage (ModelTimeSystemBase* self); +gint64 model_time_system_base_xsize_to_time (ModelTimeSystemBase* self, gint size); +gint64 model_time_system_base_xpos_to_time (ModelTimeSystemBase* self, gint x); +gint model_time_system_base_time_to_xsize (ModelTimeSystemBase* self, gint64 time); +gint model_time_system_base_time_to_xpos (ModelTimeSystemBase* self, gint64 time); +ModelTimeSystemBase* model_time_system_base_construct (GType object_type); +static void model_time_system_base_finalize (GObject* obj); +GType model_timecode_time_system_get_type (void); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +#define MODEL_TIMECODE_TIME_SYSTEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_TIMECODE_TIME_SYSTEM, ModelTimecodeTimeSystemPrivate)) +enum { + MODEL_TIMECODE_TIME_SYSTEM_DUMMY_PROPERTY +}; +void fraction_init (Fraction *self, gint numerator, gint denominator); +static gint model_timecode_time_system_real_correct_sub_second_value (ModelTimeSystemBase* base, float seconds, gint div, gint fps); +gint time_to_frame_with_rate (gint64 time, Fraction* rate); +char* frame_to_string (gint frame, Fraction* rate); +static char* model_timecode_time_system_real_get_time_string (ModelTimeSystem* base, gint64 the_time); +static char* model_timecode_time_system_real_get_time_duration (ModelTimeSystem* base, gint64 the_time); +gint fraction_nearest_int (Fraction *self); +static void model_timecode_time_system_real_calculate_pixel_step (ModelTimeSystem* base, float inc, float pixel_min, float pixel_div); +static gint model_timecode_time_system_real_frame_to_xsize (ModelTimeSystem* base, gint frame); +static gint model_timecode_time_system_real_xsize_to_frame (ModelTimeSystem* base, gint xsize); +static gint model_timecode_time_system_real_get_start_token (ModelTimeSystem* base, gint xsize); +static gint model_timecode_time_system_real_get_next_position (ModelTimeSystem* base, gint token); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +void frame_to_time (gint frame, Fraction* rate, TimeCode* result); +char* time_code_to_string (TimeCode *self); +static char* model_timecode_time_system_real_get_display_string (ModelTimeSystem* base, gint frame); +static gint model_timecode_time_system_real_get_pixel_height (ModelTimeSystem* base, gint frame); +static gint* model_timecode_time_system_real_get_timeline_seconds (ModelTimeSystemBase* base, int* result_length1); +ModelTimecodeTimeSystem* model_timecode_time_system_new (void); +ModelTimecodeTimeSystem* model_timecode_time_system_construct (GType object_type); +static void model_timecode_time_system_finalize (GObject* obj); +GType model_tempo_information_get_type (void); +void model_tempo_information_get_time_signature (ModelTempoInformation* self, Fraction* result); +gint model_tempo_information_get_bpm (ModelTempoInformation* self); +GType model_bar_beat_time_system_get_type (void); +#define MODEL_BAR_BEAT_TIME_SYSTEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, ModelBarBeatTimeSystemPrivate)) +enum { + MODEL_BAR_BEAT_TIME_SYSTEM_DUMMY_PROPERTY +}; +static void model_bar_beat_time_system_on_bpm_changed (ModelBarBeatTimeSystem* self, gint bpm); +static void _model_bar_beat_time_system_on_bpm_changed_model_tempo_information_bpm_changed (ModelTempoInformation* _sender, gint bpm, gpointer self); +static void model_bar_beat_time_system_on_time_signature_changed (ModelBarBeatTimeSystem* self, Fraction* time_signature); +static void _model_bar_beat_time_system_on_time_signature_changed_model_tempo_information_time_signature_changed (ModelTempoInformation* _sender, Fraction* time_signature, gpointer self); +static void model_bar_beat_time_system_set_constants (ModelBarBeatTimeSystem* self); +ModelBarBeatTimeSystem* model_bar_beat_time_system_new (ModelTempoInformation* tempo_information); +ModelBarBeatTimeSystem* model_bar_beat_time_system_construct (GType object_type, ModelTempoInformation* tempo_information); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +static gint model_bar_beat_time_system_real_correct_sub_second_value (ModelTimeSystemBase* base, float bars, gint div, gint unused); +static char* model_bar_beat_time_system_beats_to_string (ModelBarBeatTimeSystem* self, gint total_sixteenths, gboolean maximum_resolution, gboolean zero_based); +static char* model_bar_beat_time_system_real_get_time_string (ModelTimeSystem* base, gint64 the_time); +static char* model_bar_beat_time_system_real_get_time_duration (ModelTimeSystem* base, gint64 the_time); +static void model_bar_beat_time_system_real_calculate_pixel_step (ModelTimeSystem* base, float inc, float pixel_min, float pixel_div); +static gint model_bar_beat_time_system_real_frame_to_xsize (ModelTimeSystem* base, gint frame); +static gint model_bar_beat_time_system_real_xsize_to_frame (ModelTimeSystem* base, gint xsize); +static gint model_bar_beat_time_system_real_get_start_token (ModelTimeSystem* base, gint xsize); +static gint model_bar_beat_time_system_real_get_next_position (ModelTimeSystem* base, gint token); +static char* model_bar_beat_time_system_real_get_display_string (ModelTimeSystem* base, gint frame); +static gint model_bar_beat_time_system_real_get_pixel_height (ModelTimeSystem* base, gint frame); +static gint* _vala_array_dup1 (gint* self, int length); +static gint* model_bar_beat_time_system_real_get_timeline_seconds (ModelTimeSystemBase* base, int* result_length1); +static void model_bar_beat_time_system_finalize (GObject* obj); + + +static void g_cclosure_user_marshal_VOID__BOXED (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); + +#line 12 "TimeSystem.vala" +void model_time_system_calculate_pixel_step (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div) { +#line 12 "TimeSystem.vala" + MODEL_TIME_SYSTEM_GET_INTERFACE (self)->calculate_pixel_step (self, inc, pixel_min, pixel_div); +#line 305 "TimeSystem.c" +} + + +#line 13 "TimeSystem.vala" +gint64 model_time_system_xpos_to_time (ModelTimeSystem* self, gint x) { +#line 13 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->xpos_to_time (self, x); +#line 313 "TimeSystem.c" +} + + +#line 14 "TimeSystem.vala" +gint64 model_time_system_xsize_to_time (ModelTimeSystem* self, gint x) { +#line 14 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->xsize_to_time (self, x); +#line 321 "TimeSystem.c" +} + + +#line 15 "TimeSystem.vala" +gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time) { +#line 15 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->time_to_xpos (self, time); +#line 329 "TimeSystem.c" +} + + +#line 16 "TimeSystem.vala" +gint64 model_time_system_get_pixel_snap_time (ModelTimeSystem* self) { +#line 16 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_pixel_snap_time (self); +#line 337 "TimeSystem.c" +} + + +#line 17 "TimeSystem.vala" +gint model_time_system_time_to_xsize (ModelTimeSystem* self, gint64 time) { +#line 17 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->time_to_xsize (self, time); +#line 345 "TimeSystem.c" +} + + +#line 18 "TimeSystem.vala" +float model_time_system_get_pixel_percentage (ModelTimeSystem* self) { +#line 18 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_pixel_percentage (self); +#line 353 "TimeSystem.c" +} + + +#line 19 "TimeSystem.vala" +gint model_time_system_get_start_token (ModelTimeSystem* self, gint xsize) { +#line 19 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_start_token (self, xsize); +#line 361 "TimeSystem.c" +} + + +#line 20 "TimeSystem.vala" +gint model_time_system_get_next_position (ModelTimeSystem* self, gint token) { +#line 20 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_next_position (self, token); +#line 369 "TimeSystem.c" +} + + +#line 21 "TimeSystem.vala" +gint model_time_system_get_pixel_height (ModelTimeSystem* self, gint token) { +#line 21 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_pixel_height (self, token); +#line 377 "TimeSystem.c" +} + + +#line 22 "TimeSystem.vala" +char* model_time_system_get_display_string (ModelTimeSystem* self, gint token) { +#line 22 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_display_string (self, token); +#line 385 "TimeSystem.c" +} + + +#line 23 "TimeSystem.vala" +gint model_time_system_frame_to_xsize (ModelTimeSystem* self, gint frame) { +#line 23 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->frame_to_xsize (self, frame); +#line 393 "TimeSystem.c" +} + + +#line 24 "TimeSystem.vala" +gint model_time_system_xsize_to_frame (ModelTimeSystem* self, gint xsize) { +#line 24 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->xsize_to_frame (self, xsize); +#line 401 "TimeSystem.c" +} + + +#line 25 "TimeSystem.vala" +char* model_time_system_get_time_string (ModelTimeSystem* self, gint64 time) { +#line 25 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_time_string (self, time); +#line 409 "TimeSystem.c" +} + + +#line 26 "TimeSystem.vala" +char* model_time_system_get_time_duration (ModelTimeSystem* self, gint64 time) { +#line 26 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_GET_INTERFACE (self)->get_time_duration (self, time); +#line 417 "TimeSystem.c" +} + + +static void model_time_system_base_init (ModelTimeSystemIface * iface) { + static gboolean initialized = FALSE; + if (!initialized) { + initialized = TRUE; + g_signal_new ("geometry_changed", MODEL_TYPE_TIME_SYSTEM, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + } +} + + +GType model_time_system_get_type (void) { + static volatile gsize model_time_system_type_id__volatile = 0; + if (g_once_init_enter (&model_time_system_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelTimeSystemIface), (GBaseInitFunc) model_time_system_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; + GType model_time_system_type_id; + model_time_system_type_id = g_type_register_static (G_TYPE_INTERFACE, "ModelTimeSystem", &g_define_type_info, 0); + g_type_interface_add_prerequisite (model_time_system_type_id, G_TYPE_OBJECT); + g_once_init_leave (&model_time_system_type_id__volatile, model_time_system_type_id); + } + return model_time_system_type_id__volatile; +} + + +#line 39 "TimeSystem.vala" +static gint* model_time_system_base_real_get_timeline_seconds (ModelTimeSystemBase* self, int* result_length1) { +#line 445 "TimeSystem.c" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), NULL); + g_critical ("Type `%s' does not implement abstract method `model_time_system_base_get_timeline_seconds'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return NULL; +} + + +#line 39 "TimeSystem.vala" +gint* model_time_system_base_get_timeline_seconds (ModelTimeSystemBase* self, int* result_length1) { +#line 39 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_BASE_GET_CLASS (self)->get_timeline_seconds (self, result_length1); +#line 456 "TimeSystem.c" +} + + +#line 40 "TimeSystem.vala" +static gint model_time_system_base_real_correct_sub_second_value (ModelTimeSystemBase* self, float seconds, gint div, gint fps) { +#line 462 "TimeSystem.c" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0); + g_critical ("Type `%s' does not implement abstract method `model_time_system_base_correct_sub_second_value'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return 0; +} + + +#line 40 "TimeSystem.vala" +gint model_time_system_base_correct_sub_second_value (ModelTimeSystemBase* self, float seconds, gint div, gint fps) { +#line 40 "TimeSystem.vala" + return MODEL_TIME_SYSTEM_BASE_GET_CLASS (self)->correct_sub_second_value (self, seconds, div, fps); +#line 473 "TimeSystem.c" +} + + +#line 42 "TimeSystem.vala" +gint model_time_system_base_correct_seconds_value (ModelTimeSystemBase* self, float seconds, gint div, gint fps) { +#line 479 "TimeSystem.c" + gint result = 0; + gint i = 0; + gint secs; + gint* _tmp1_; + gint _timeline_seconds_size_; + gint timeline_seconds_length1; + gint _tmp0_; + gint* timeline_seconds; +#line 42 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0); +#line 43 "TimeSystem.vala" + if (seconds < 1.0f) { +#line 492 "TimeSystem.c" + result = model_time_system_base_correct_sub_second_value (self, seconds, div, fps); +#line 44 "TimeSystem.vala" + return result; +#line 496 "TimeSystem.c" + } +#line 48 "TimeSystem.vala" + secs = (gint) seconds; +#line 500 "TimeSystem.c" + timeline_seconds = (_tmp1_ = model_time_system_base_get_timeline_seconds (self, &_tmp0_), timeline_seconds_length1 = _tmp0_, _timeline_seconds_size_ = timeline_seconds_length1, _tmp1_); + { + gboolean _tmp2_; +#line 50 "TimeSystem.vala" + i = timeline_seconds_length1 - 1; +#line 50 "TimeSystem.vala" + _tmp2_ = TRUE; +#line 50 "TimeSystem.vala" + while (TRUE) { +#line 510 "TimeSystem.c" + gboolean _tmp3_ = FALSE; +#line 50 "TimeSystem.vala" + if (!_tmp2_) { +#line 50 "TimeSystem.vala" + i--; +#line 516 "TimeSystem.c" + } +#line 50 "TimeSystem.vala" + _tmp2_ = FALSE; +#line 50 "TimeSystem.vala" + if (!(i > 0)) { +#line 50 "TimeSystem.vala" + break; +#line 524 "TimeSystem.c" + } +#line 51 "TimeSystem.vala" + if (secs <= timeline_seconds[i]) { +#line 52 "TimeSystem.vala" + _tmp3_ = secs >= timeline_seconds[i - 1]; +#line 530 "TimeSystem.c" + } else { +#line 51 "TimeSystem.vala" + _tmp3_ = FALSE; +#line 534 "TimeSystem.c" + } +#line 51 "TimeSystem.vala" + if (_tmp3_) { +#line 53 "TimeSystem.vala" + if ((div % (timeline_seconds[i] * fps)) == 0) { +#line 54 "TimeSystem.vala" + break; +#line 542 "TimeSystem.c" + } +#line 56 "TimeSystem.vala" + if ((div % (timeline_seconds[i - 1] * fps)) == 0) { +#line 57 "TimeSystem.vala" + i--; +#line 58 "TimeSystem.vala" + break; +#line 550 "TimeSystem.c" + } + } + } + } + result = timeline_seconds[i] * fps; + timeline_seconds = (g_free (timeline_seconds), NULL); +#line 62 "TimeSystem.vala" + return result; +#line 559 "TimeSystem.c" +} + + +#line 65 "TimeSystem.vala" +gint64 model_time_system_base_get_pixel_snap_time (ModelTimeSystemBase* self) { +#line 565 "TimeSystem.c" + gint64 result = 0LL; +#line 65 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0LL); +#line 569 "TimeSystem.c" + result = self->pixel_snap_time; +#line 66 "TimeSystem.vala" + return result; +#line 573 "TimeSystem.c" +} + + +#line 69 "TimeSystem.vala" +float model_time_system_base_get_pixel_percentage (ModelTimeSystemBase* self) { +#line 579 "TimeSystem.c" + float result = 0.0F; +#line 69 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0.0F); +#line 583 "TimeSystem.c" + result = self->pixel_percentage; +#line 70 "TimeSystem.vala" + return result; +#line 587 "TimeSystem.c" +} + + +#line 73 "TimeSystem.vala" +gint64 model_time_system_base_xpos_to_time (ModelTimeSystemBase* self, gint x) { +#line 593 "TimeSystem.c" + gint64 result = 0LL; +#line 73 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0LL); +#line 597 "TimeSystem.c" + result = model_time_system_base_xsize_to_time (self, x - MODEL_TIME_SYSTEM_BASE_BORDER); +#line 74 "TimeSystem.vala" + return result; +#line 601 "TimeSystem.c" +} + + +#line 77 "TimeSystem.vala" +gint64 model_time_system_base_xsize_to_time (ModelTimeSystemBase* self, gint size) { +#line 607 "TimeSystem.c" + gint64 result = 0LL; +#line 77 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0LL); +#line 611 "TimeSystem.c" + result = (gint64) (((float) (size * GST_SECOND)) / self->pixels_per_second); +#line 78 "TimeSystem.vala" + return result; +#line 615 "TimeSystem.c" +} + + +#line 81 "TimeSystem.vala" +gint model_time_system_base_time_to_xsize (ModelTimeSystemBase* self, gint64 time) { +#line 621 "TimeSystem.c" + gint result = 0; +#line 81 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0); +#line 625 "TimeSystem.c" + result = (gint) ((time * self->pixels_per_second) / GST_SECOND); +#line 82 "TimeSystem.vala" + return result; +#line 629 "TimeSystem.c" +} + + +#line 85 "TimeSystem.vala" +gint model_time_system_base_time_to_xpos (ModelTimeSystemBase* self, gint64 time) { +#line 635 "TimeSystem.c" + gint result = 0; + gint pos; +#line 85 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM_BASE (self), 0); +#line 86 "TimeSystem.vala" + pos = model_time_system_base_time_to_xsize (self, time) + MODEL_TIME_SYSTEM_BASE_BORDER; +#line 88 "TimeSystem.vala" + if (model_time_system_base_xpos_to_time (self, pos) != time) { +#line 89 "TimeSystem.vala" + pos++; +#line 646 "TimeSystem.c" + } + result = pos; +#line 90 "TimeSystem.vala" + return result; +#line 651 "TimeSystem.c" +} + + +#line 29 "TimeSystem.vala" +ModelTimeSystemBase* model_time_system_base_construct (GType object_type) { +#line 657 "TimeSystem.c" + ModelTimeSystemBase * self; +#line 29 "TimeSystem.vala" + self = (ModelTimeSystemBase*) g_object_new (object_type, NULL); +#line 661 "TimeSystem.c" + return self; +} + + +static void model_time_system_base_class_init (ModelTimeSystemBaseClass * klass) { + model_time_system_base_parent_class = g_type_class_peek_parent (klass); + MODEL_TIME_SYSTEM_BASE_CLASS (klass)->get_timeline_seconds = model_time_system_base_real_get_timeline_seconds; + MODEL_TIME_SYSTEM_BASE_CLASS (klass)->correct_sub_second_value = model_time_system_base_real_correct_sub_second_value; + G_OBJECT_CLASS (klass)->finalize = model_time_system_base_finalize; +} + + +static void model_time_system_base_instance_init (ModelTimeSystemBase * self) { + self->pixel_percentage = 0.0f; +} + + +static void model_time_system_base_finalize (GObject* obj) { + ModelTimeSystemBase * self; + self = MODEL_TIME_SYSTEM_BASE (obj); + G_OBJECT_CLASS (model_time_system_base_parent_class)->finalize (obj); +} + + +GType model_time_system_base_get_type (void) { + static volatile gsize model_time_system_base_type_id__volatile = 0; + if (g_once_init_enter (&model_time_system_base_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelTimeSystemBaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_time_system_base_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelTimeSystemBase), 0, (GInstanceInitFunc) model_time_system_base_instance_init, NULL }; + GType model_time_system_base_type_id; + model_time_system_base_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelTimeSystemBase", &g_define_type_info, G_TYPE_FLAG_ABSTRACT); + g_once_init_leave (&model_time_system_base_type_id__volatile, model_time_system_base_type_id); + } + return model_time_system_base_type_id__volatile; +} + + +#line 103 "TimeSystem.vala" +static gint model_timecode_time_system_real_correct_sub_second_value (ModelTimeSystemBase* base, float seconds, gint div, gint fps) { +#line 700 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint result = 0; + gint frames; + gint mod; + self = MODEL_TIMECODE_TIME_SYSTEM (base); +#line 104 "TimeSystem.vala" + frames = (gint) (fps * seconds); +#line 105 "TimeSystem.vala" + if (frames == 0) { +#line 710 "TimeSystem.c" + result = 1; +#line 106 "TimeSystem.vala" + return result; +#line 714 "TimeSystem.c" + } +#line 109 "TimeSystem.vala" + if (div == 0) { +#line 110 "TimeSystem.vala" + div = fps; +#line 720 "TimeSystem.c" + } +#line 113 "TimeSystem.vala" + mod = div % frames; +#line 114 "TimeSystem.vala" + while (TRUE) { +#line 114 "TimeSystem.vala" + if (!(mod != 0)) { +#line 114 "TimeSystem.vala" + break; +#line 730 "TimeSystem.c" + } +#line 115 "TimeSystem.vala" + mod = div % (frames = frames + 1); +#line 734 "TimeSystem.c" + } + result = frames; +#line 117 "TimeSystem.vala" + return result; +#line 739 "TimeSystem.c" +} + + +#line 120 "TimeSystem.vala" +static char* model_timecode_time_system_real_get_time_string (ModelTimeSystem* base, gint64 the_time) { +#line 745 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + char* result = NULL; + char* time; + gint frame; + char* _tmp0_; + self = MODEL_TIMECODE_TIME_SYSTEM (base); + time = NULL; +#line 123 "TimeSystem.vala" + frame = time_to_frame_with_rate (the_time, &self->frame_rate_fraction); +#line 124 "TimeSystem.vala" + time = (_tmp0_ = frame_to_string (frame, &self->frame_rate_fraction), _g_free0 (time), _tmp0_); +#line 757 "TimeSystem.c" + result = time; +#line 126 "TimeSystem.vala" + return result; +#line 761 "TimeSystem.c" +} + + +#line 129 "TimeSystem.vala" +static char* model_timecode_time_system_real_get_time_duration (ModelTimeSystem* base, gint64 the_time) { +#line 767 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + char* result = NULL; + self = MODEL_TIMECODE_TIME_SYSTEM (base); + result = model_time_system_get_time_string (MODEL_TIME_SYSTEM (self), the_time); +#line 131 "TimeSystem.vala" + return result; +#line 774 "TimeSystem.c" +} + + +#line 133 "TimeSystem.vala" +static void model_timecode_time_system_real_calculate_pixel_step (ModelTimeSystem* base, float inc, float pixel_min, float pixel_div) { +#line 780 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint pixels_per_large; + gint pixels_per_medium; + gint pixels_per_small; + gint fps; + self = MODEL_TIMECODE_TIME_SYSTEM (base); +#line 134 "TimeSystem.vala" + pixels_per_large = 300; +#line 135 "TimeSystem.vala" + pixels_per_medium = 50; +#line 136 "TimeSystem.vala" + pixels_per_small = 20; +#line 138 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage = MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage + inc; +#line 139 "TimeSystem.vala" + if (MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage < 0.0f) { +#line 140 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage = 0.0f; +#line 799 "TimeSystem.c" + } else { +#line 141 "TimeSystem.vala" + if (MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage > 1.0f) { +#line 142 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage = 1.0f; +#line 805 "TimeSystem.c" + } + } +#line 144 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second = pixel_min * powf (pixel_div, MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage); +#line 145 "TimeSystem.vala" + fps = fraction_nearest_int (&self->frame_rate_fraction); +#line 146 "TimeSystem.vala" + self->priv->large_pixel_frames = model_time_system_base_correct_seconds_value (MODEL_TIME_SYSTEM_BASE (self), pixels_per_large / MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second, 0, fps); +#line 147 "TimeSystem.vala" + self->priv->medium_pixel_frames = model_time_system_base_correct_seconds_value (MODEL_TIME_SYSTEM_BASE (self), pixels_per_medium / MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second, self->priv->large_pixel_frames, fps); +#line 149 "TimeSystem.vala" + self->priv->small_pixel_frames = model_time_system_base_correct_seconds_value (MODEL_TIME_SYSTEM_BASE (self), pixels_per_small / MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second, self->priv->medium_pixel_frames, fps); +#line 152 "TimeSystem.vala" + if (self->priv->small_pixel_frames == self->priv->medium_pixel_frames) { +#line 820 "TimeSystem.c" + gint i; +#line 153 "TimeSystem.vala" + i = self->priv->medium_pixel_frames; +#line 155 "TimeSystem.vala" + while (TRUE) { +#line 155 "TimeSystem.vala" + if (!((i = i - 1) > 0)) { +#line 155 "TimeSystem.vala" + break; +#line 830 "TimeSystem.c" + } +#line 156 "TimeSystem.vala" + if ((self->priv->medium_pixel_frames % i) == 0) { +#line 157 "TimeSystem.vala" + self->priv->small_pixel_frames = i; +#line 158 "TimeSystem.vala" + break; +#line 838 "TimeSystem.c" + } + } + } +#line 163 "TimeSystem.vala" + self->priv->pixels_per_frame = MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second / ((float) fps); +#line 164 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_snap_time = model_time_system_xsize_to_time (MODEL_TIME_SYSTEM (self), MODEL_TIME_SYSTEM_BASE_PIXEL_SNAP_INTERVAL); +#line 846 "TimeSystem.c" +} + + +#line 167 "TimeSystem.vala" +static gint model_timecode_time_system_real_frame_to_xsize (ModelTimeSystem* base, gint frame) { +#line 852 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint result = 0; + self = MODEL_TIMECODE_TIME_SYSTEM (base); + result = (gint) (frame * self->priv->pixels_per_frame); +#line 168 "TimeSystem.vala" + return result; +#line 859 "TimeSystem.c" +} + + +#line 171 "TimeSystem.vala" +static gint model_timecode_time_system_real_xsize_to_frame (ModelTimeSystem* base, gint xsize) { +#line 865 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint result = 0; + self = MODEL_TIMECODE_TIME_SYSTEM (base); + result = (gint) (xsize / self->priv->pixels_per_frame); +#line 172 "TimeSystem.vala" + return result; +#line 872 "TimeSystem.c" +} + + +#line 175 "TimeSystem.vala" +static gint model_timecode_time_system_real_get_start_token (ModelTimeSystem* base, gint xsize) { +#line 878 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint result = 0; + gint start_frame; + self = MODEL_TIMECODE_TIME_SYSTEM (base); +#line 176 "TimeSystem.vala" + start_frame = model_time_system_xsize_to_frame (MODEL_TIME_SYSTEM (self), xsize); +#line 885 "TimeSystem.c" + result = self->priv->large_pixel_frames * (start_frame / self->priv->large_pixel_frames); +#line 177 "TimeSystem.vala" + return result; +#line 889 "TimeSystem.c" +} + + +#line 180 "TimeSystem.vala" +static gint model_timecode_time_system_real_get_next_position (ModelTimeSystem* base, gint token) { +#line 895 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint result = 0; + self = MODEL_TIMECODE_TIME_SYSTEM (base); + result = token + self->priv->small_pixel_frames; +#line 181 "TimeSystem.vala" + return result; +#line 902 "TimeSystem.c" +} + + +#line 184 "TimeSystem.vala" +static char* model_timecode_time_system_real_get_display_string (ModelTimeSystem* base, gint frame) { +#line 908 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + char* result = NULL; + self = MODEL_TIMECODE_TIME_SYSTEM (base); +#line 185 "TimeSystem.vala" + if ((frame % self->priv->large_pixel_frames) == 0) { +#line 914 "TimeSystem.c" + TimeCode _tmp1_; + TimeCode _tmp0_ = {0}; + result = time_code_to_string ((_tmp1_ = (frame_to_time (frame, &self->frame_rate_fraction, &_tmp0_), _tmp0_), &_tmp1_)); +#line 186 "TimeSystem.vala" + return result; +#line 920 "TimeSystem.c" + } + result = NULL; +#line 188 "TimeSystem.vala" + return result; +#line 925 "TimeSystem.c" +} + + +#line 191 "TimeSystem.vala" +static gint model_timecode_time_system_real_get_pixel_height (ModelTimeSystem* base, gint frame) { +#line 931 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint result = 0; + self = MODEL_TIMECODE_TIME_SYSTEM (base); +#line 192 "TimeSystem.vala" + if ((frame % self->priv->medium_pixel_frames) == 0) { +#line 937 "TimeSystem.c" + gboolean _tmp0_ = FALSE; +#line 193 "TimeSystem.vala" + if (self->priv->medium_pixel_frames == self->priv->small_pixel_frames) { +#line 941 "TimeSystem.c" + gboolean _tmp1_ = FALSE; +#line 194 "TimeSystem.vala" + if (self->priv->medium_pixel_frames != self->priv->large_pixel_frames) { +#line 195 "TimeSystem.vala" + _tmp1_ = (frame % self->priv->large_pixel_frames) != 0; +#line 947 "TimeSystem.c" + } else { +#line 194 "TimeSystem.vala" + _tmp1_ = FALSE; +#line 951 "TimeSystem.c" + } +#line 194 "TimeSystem.vala" + _tmp0_ = _tmp1_; +#line 955 "TimeSystem.c" + } else { +#line 193 "TimeSystem.vala" + _tmp0_ = FALSE; +#line 959 "TimeSystem.c" + } +#line 193 "TimeSystem.vala" + if (_tmp0_) { +#line 963 "TimeSystem.c" + result = 2; +#line 196 "TimeSystem.vala" + return result; +#line 967 "TimeSystem.c" + } else { + result = 6; +#line 199 "TimeSystem.vala" + return result; +#line 972 "TimeSystem.c" + } + } else { + result = 2; +#line 202 "TimeSystem.vala" + return result; +#line 978 "TimeSystem.c" + } +} + + +#line 206 "TimeSystem.vala" +static gint* model_timecode_time_system_real_get_timeline_seconds (ModelTimeSystemBase* base, int* result_length1) { +#line 985 "TimeSystem.c" + ModelTimecodeTimeSystem * self; + gint* result = NULL; + gint* _tmp0_ = NULL; + gint* _tmp1_; + self = MODEL_TIMECODE_TIME_SYSTEM (base); + result = (_tmp1_ = (_tmp0_ = g_new0 (gint, 15), _tmp0_[0] = 1, _tmp0_[1] = 2, _tmp0_[2] = 5, _tmp0_[3] = 10, _tmp0_[4] = 15, _tmp0_[5] = 20, _tmp0_[6] = 30, _tmp0_[7] = 60, _tmp0_[8] = 120, _tmp0_[9] = 300, _tmp0_[10] = 600, _tmp0_[11] = 900, _tmp0_[12] = 1200, _tmp0_[13] = 1800, _tmp0_[14] = 3600, _tmp0_), *result_length1 = 15, _tmp1_); +#line 207 "TimeSystem.vala" + return result; +#line 994 "TimeSystem.c" +} + + +#line 94 "TimeSystem.vala" +ModelTimecodeTimeSystem* model_timecode_time_system_construct (GType object_type) { +#line 1000 "TimeSystem.c" + ModelTimecodeTimeSystem * self; +#line 94 "TimeSystem.vala" + self = (ModelTimecodeTimeSystem*) model_time_system_base_construct (object_type); +#line 1004 "TimeSystem.c" + return self; +} + + +#line 94 "TimeSystem.vala" +ModelTimecodeTimeSystem* model_timecode_time_system_new (void) { +#line 94 "TimeSystem.vala" + return model_timecode_time_system_construct (MODEL_TYPE_TIMECODE_TIME_SYSTEM); +#line 1013 "TimeSystem.c" +} + + +static void model_timecode_time_system_class_init (ModelTimecodeTimeSystemClass * klass) { + model_timecode_time_system_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelTimecodeTimeSystemPrivate)); + MODEL_TIME_SYSTEM_BASE_CLASS (klass)->correct_sub_second_value = model_timecode_time_system_real_correct_sub_second_value; + MODEL_TIME_SYSTEM_BASE_CLASS (klass)->get_timeline_seconds = model_timecode_time_system_real_get_timeline_seconds; + G_OBJECT_CLASS (klass)->finalize = model_timecode_time_system_finalize; +} + + +static void model_timecode_time_system_model_time_system_interface_init (ModelTimeSystemIface * iface) { + model_timecode_time_system_model_time_system_parent_iface = g_type_interface_peek_parent (iface); + iface->get_time_string = model_timecode_time_system_real_get_time_string; + iface->get_time_duration = model_timecode_time_system_real_get_time_duration; + iface->calculate_pixel_step = model_timecode_time_system_real_calculate_pixel_step; + iface->frame_to_xsize = model_timecode_time_system_real_frame_to_xsize; + iface->xsize_to_frame = model_timecode_time_system_real_xsize_to_frame; + iface->get_start_token = model_timecode_time_system_real_get_start_token; + iface->get_next_position = model_timecode_time_system_real_get_next_position; + iface->get_display_string = model_timecode_time_system_real_get_display_string; + iface->get_pixel_height = model_timecode_time_system_real_get_pixel_height; + iface->xpos_to_time = (gint64 (*)(ModelTimeSystem* ,gint)) model_time_system_base_xpos_to_time; + iface->xsize_to_time = (gint64 (*)(ModelTimeSystem* ,gint)) model_time_system_base_xsize_to_time; + iface->time_to_xpos = (gint (*)(ModelTimeSystem* ,gint64)) model_time_system_base_time_to_xpos; + iface->get_pixel_snap_time = (gint64 (*)(ModelTimeSystem*)) model_time_system_base_get_pixel_snap_time; + iface->time_to_xsize = (gint (*)(ModelTimeSystem* ,gint64)) model_time_system_base_time_to_xsize; + iface->get_pixel_percentage = (float (*)(ModelTimeSystem*)) model_time_system_base_get_pixel_percentage; +} + + +static void model_timecode_time_system_instance_init (ModelTimecodeTimeSystem * self) { + Fraction _tmp0_ = {0}; + self->priv = MODEL_TIMECODE_TIME_SYSTEM_GET_PRIVATE (self); + self->priv->small_pixel_frames = 0; + self->priv->medium_pixel_frames = 0; + self->priv->large_pixel_frames = 0; + self->frame_rate_fraction = (fraction_init (&_tmp0_, 30000, 1001), _tmp0_); +} + + +static void model_timecode_time_system_finalize (GObject* obj) { + ModelTimecodeTimeSystem * self; + self = MODEL_TIMECODE_TIME_SYSTEM (obj); + G_OBJECT_CLASS (model_timecode_time_system_parent_class)->finalize (obj); +} + + +GType model_timecode_time_system_get_type (void) { + static volatile gsize model_timecode_time_system_type_id__volatile = 0; + if (g_once_init_enter (&model_timecode_time_system_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelTimecodeTimeSystemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_timecode_time_system_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelTimecodeTimeSystem), 0, (GInstanceInitFunc) model_timecode_time_system_instance_init, NULL }; + static const GInterfaceInfo model_time_system_info = { (GInterfaceInitFunc) model_timecode_time_system_model_time_system_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType model_timecode_time_system_type_id; + model_timecode_time_system_type_id = g_type_register_static (MODEL_TYPE_TIME_SYSTEM_BASE, "ModelTimecodeTimeSystem", &g_define_type_info, 0); + g_type_add_interface_static (model_timecode_time_system_type_id, MODEL_TYPE_TIME_SYSTEM, &model_time_system_info); + g_once_init_leave (&model_timecode_time_system_type_id__volatile, model_timecode_time_system_type_id); + } + return model_timecode_time_system_type_id__volatile; +} + + +#line 212 "TimeSystem.vala" +void model_tempo_information_get_time_signature (ModelTempoInformation* self, Fraction* result) { +#line 212 "TimeSystem.vala" + MODEL_TEMPO_INFORMATION_GET_INTERFACE (self)->get_time_signature (self, result); +#line 1081 "TimeSystem.c" +} + + +#line 213 "TimeSystem.vala" +gint model_tempo_information_get_bpm (ModelTempoInformation* self) { +#line 213 "TimeSystem.vala" + return MODEL_TEMPO_INFORMATION_GET_INTERFACE (self)->get_bpm (self); +#line 1089 "TimeSystem.c" +} + + +static void model_tempo_information_base_init (ModelTempoInformationIface * iface) { + static gboolean initialized = FALSE; + if (!initialized) { + initialized = TRUE; + g_signal_new ("time_signature_changed", MODEL_TYPE_TEMPO_INFORMATION, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__BOXED, G_TYPE_NONE, 1, TYPE_FRACTION); + g_signal_new ("bpm_changed", MODEL_TYPE_TEMPO_INFORMATION, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); + } +} + + +GType model_tempo_information_get_type (void) { + static volatile gsize model_tempo_information_type_id__volatile = 0; + if (g_once_init_enter (&model_tempo_information_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelTempoInformationIface), (GBaseInitFunc) model_tempo_information_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; + GType model_tempo_information_type_id; + model_tempo_information_type_id = g_type_register_static (G_TYPE_INTERFACE, "ModelTempoInformation", &g_define_type_info, 0); + g_once_init_leave (&model_tempo_information_type_id__volatile, model_tempo_information_type_id); + } + return model_tempo_information_type_id__volatile; +} + + +#line 249 "TimeSystem.vala" +static void _model_bar_beat_time_system_on_bpm_changed_model_tempo_information_bpm_changed (ModelTempoInformation* _sender, gint bpm, gpointer self) { +#line 1117 "TimeSystem.c" + model_bar_beat_time_system_on_bpm_changed (self, bpm); +} + + +#line 243 "TimeSystem.vala" +static void _model_bar_beat_time_system_on_time_signature_changed_model_tempo_information_time_signature_changed (ModelTempoInformation* _sender, Fraction* time_signature, gpointer self) { +#line 1124 "TimeSystem.c" + model_bar_beat_time_system_on_time_signature_changed (self, time_signature); +} + + +#line 235 "TimeSystem.vala" +ModelBarBeatTimeSystem* model_bar_beat_time_system_construct (GType object_type, ModelTempoInformation* tempo_information) { +#line 1131 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + Fraction _tmp0_ = {0}; +#line 235 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_TEMPO_INFORMATION (tempo_information), NULL); +#line 235 "TimeSystem.vala" + self = (ModelBarBeatTimeSystem*) model_time_system_base_construct (object_type); +#line 236 "TimeSystem.vala" + self->priv->bpm = model_tempo_information_get_bpm (tempo_information); +#line 237 "TimeSystem.vala" + self->priv->time_signature = (model_tempo_information_get_time_signature (tempo_information, &_tmp0_), _tmp0_); +#line 238 "TimeSystem.vala" + g_signal_connect_object (tempo_information, "bpm-changed", (GCallback) _model_bar_beat_time_system_on_bpm_changed_model_tempo_information_bpm_changed, self, 0); +#line 239 "TimeSystem.vala" + g_signal_connect_object (tempo_information, "time-signature-changed", (GCallback) _model_bar_beat_time_system_on_time_signature_changed_model_tempo_information_time_signature_changed, self, 0); +#line 240 "TimeSystem.vala" + model_bar_beat_time_system_set_constants (self); +#line 1148 "TimeSystem.c" + return self; +} + + +#line 235 "TimeSystem.vala" +ModelBarBeatTimeSystem* model_bar_beat_time_system_new (ModelTempoInformation* tempo_information) { +#line 235 "TimeSystem.vala" + return model_bar_beat_time_system_construct (MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, tempo_information); +#line 1157 "TimeSystem.c" +} + + +#line 243 "TimeSystem.vala" +static void model_bar_beat_time_system_on_time_signature_changed (ModelBarBeatTimeSystem* self, Fraction* time_signature) { +#line 243 "TimeSystem.vala" + g_return_if_fail (MODEL_IS_BAR_BEAT_TIME_SYSTEM (self)); +#line 244 "TimeSystem.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_time_signature_changed"); +#line 245 "TimeSystem.vala" + self->priv->time_signature = *time_signature; +#line 246 "TimeSystem.vala" + model_bar_beat_time_system_set_constants (self); +#line 1171 "TimeSystem.c" +} + + +#line 249 "TimeSystem.vala" +static void model_bar_beat_time_system_on_bpm_changed (ModelBarBeatTimeSystem* self, gint bpm) { +#line 249 "TimeSystem.vala" + g_return_if_fail (MODEL_IS_BAR_BEAT_TIME_SYSTEM (self)); +#line 250 "TimeSystem.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_bpm_changed"); +#line 251 "TimeSystem.vala" + self->priv->bpm = bpm; +#line 252 "TimeSystem.vala" + model_bar_beat_time_system_set_constants (self); +#line 1185 "TimeSystem.c" +} + + +#line 255 "TimeSystem.vala" +static void model_bar_beat_time_system_set_constants (ModelBarBeatTimeSystem* self) { +#line 255 "TimeSystem.vala" + g_return_if_fail (MODEL_IS_BAR_BEAT_TIME_SYSTEM (self)); +#line 256 "TimeSystem.vala" + self->priv->bars_per_minute = self->priv->bpm / ((float) self->priv->time_signature.numerator); +#line 257 "TimeSystem.vala" + self->priv->bars_per_second = self->priv->bars_per_minute / 60.0f; +#line 259 "TimeSystem.vala" + self->priv->sixteenths_per_beat = 16 / self->priv->time_signature.denominator; +#line 260 "TimeSystem.vala" + self->priv->sixteenths_per_bar = self->priv->time_signature.numerator * self->priv->sixteenths_per_beat; +#line 261 "TimeSystem.vala" + g_signal_emit_by_name (MODEL_TIME_SYSTEM (self), "geometry-changed"); +#line 1203 "TimeSystem.c" +} + + +#line 264 "TimeSystem.vala" +static gint model_bar_beat_time_system_real_correct_sub_second_value (ModelTimeSystemBase* base, float bars, gint div, gint unused) { +#line 1209 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint result = 0; + gint sixteenths; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); +#line 265 "TimeSystem.vala" + sixteenths = (gint) (self->priv->sixteenths_per_bar * bars); +#line 267 "TimeSystem.vala" + if (sixteenths == 0) { +#line 1218 "TimeSystem.c" + result = 1; +#line 268 "TimeSystem.vala" + return result; +#line 1222 "TimeSystem.c" + } +#line 271 "TimeSystem.vala" + if (sixteenths > self->priv->sixteenths_per_beat) { +#line 1226 "TimeSystem.c" + result = self->priv->sixteenths_per_beat; +#line 272 "TimeSystem.vala" + return result; +#line 1230 "TimeSystem.c" + } +#line 275 "TimeSystem.vala" + if (sixteenths > 2) { +#line 1234 "TimeSystem.c" + result = 2; +#line 276 "TimeSystem.vala" + return result; +#line 1238 "TimeSystem.c" + } + result = 1; +#line 279 "TimeSystem.vala" + return result; +#line 1243 "TimeSystem.c" +} + + +#line 282 "TimeSystem.vala" +static char* model_bar_beat_time_system_beats_to_string (ModelBarBeatTimeSystem* self, gint total_sixteenths, gboolean maximum_resolution, gboolean zero_based) { +#line 1249 "TimeSystem.c" + char* result = NULL; + gint number_of_measures; + gint number_of_beats; + gint number_of_sixteenths; + float pixels_per_bar; + float pixels_per_large_gap; + gboolean _tmp0_ = FALSE; +#line 282 "TimeSystem.vala" + g_return_val_if_fail (MODEL_IS_BAR_BEAT_TIME_SYSTEM (self), NULL); +#line 284 "TimeSystem.vala" + number_of_measures = (total_sixteenths / self->priv->sixteenths_per_beat) / self->priv->time_signature.numerator; +#line 287 "TimeSystem.vala" + number_of_beats = (total_sixteenths / self->priv->sixteenths_per_beat) % self->priv->time_signature.numerator; +#line 288 "TimeSystem.vala" + number_of_sixteenths = total_sixteenths % self->priv->sixteenths_per_beat; +#line 289 "TimeSystem.vala" + if (!zero_based) { +#line 290 "TimeSystem.vala" + number_of_measures = number_of_measures + 1; +#line 291 "TimeSystem.vala" + number_of_beats = number_of_beats + 1; +#line 292 "TimeSystem.vala" + number_of_sixteenths = number_of_sixteenths + 1; +#line 1273 "TimeSystem.c" + } +#line 294 "TimeSystem.vala" + pixels_per_bar = MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second / self->priv->bars_per_second; +#line 295 "TimeSystem.vala" + pixels_per_large_gap = self->priv->large_pixel_sixteenth * self->priv->pixels_per_sixteenth; +#line 296 "TimeSystem.vala" + if (maximum_resolution) { +#line 296 "TimeSystem.vala" + _tmp0_ = TRUE; +#line 1283 "TimeSystem.c" + } else { + gboolean _tmp1_ = FALSE; +#line 297 "TimeSystem.vala" + if (pixels_per_large_gap < (self->priv->pixels_per_sixteenth * self->priv->sixteenths_per_beat)) { +#line 298 "TimeSystem.vala" + _tmp1_ = number_of_sixteenths > 1; +#line 1290 "TimeSystem.c" + } else { +#line 297 "TimeSystem.vala" + _tmp1_ = FALSE; +#line 1294 "TimeSystem.c" + } +#line 297 "TimeSystem.vala" + _tmp0_ = _tmp1_; +#line 1298 "TimeSystem.c" + } +#line 296 "TimeSystem.vala" + if (_tmp0_) { +#line 1302 "TimeSystem.c" + result = g_strdup_printf ("%d.%d.%d", number_of_measures, number_of_beats, number_of_sixteenths); +#line 299 "TimeSystem.vala" + return result; +#line 1306 "TimeSystem.c" + } else { + gboolean _tmp2_ = FALSE; +#line 300 "TimeSystem.vala" + if (pixels_per_large_gap < pixels_per_bar) { +#line 300 "TimeSystem.vala" + _tmp2_ = number_of_beats > 1; +#line 1313 "TimeSystem.c" + } else { +#line 300 "TimeSystem.vala" + _tmp2_ = FALSE; +#line 1317 "TimeSystem.c" + } +#line 300 "TimeSystem.vala" + if (_tmp2_) { +#line 1321 "TimeSystem.c" + result = g_strdup_printf ("%d.%d", number_of_measures, number_of_beats); +#line 301 "TimeSystem.vala" + return result; +#line 1325 "TimeSystem.c" + } else { + result = g_strdup_printf ("%d", number_of_measures); +#line 303 "TimeSystem.vala" + return result; +#line 1330 "TimeSystem.c" + } + } +} + + +#line 307 "TimeSystem.vala" +static char* model_bar_beat_time_system_real_get_time_string (ModelTimeSystem* base, gint64 the_time) { +#line 1338 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + char* result = NULL; + double beats_per_second; + double sixteenths_per_second; + double sixteenths_per_nanosecond; + gint total_beats; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); +#line 308 "TimeSystem.vala" + beats_per_second = self->priv->bpm / 60.0; +#line 309 "TimeSystem.vala" + sixteenths_per_second = self->priv->sixteenths_per_beat * beats_per_second; +#line 310 "TimeSystem.vala" + sixteenths_per_nanosecond = sixteenths_per_second / GST_SECOND; +#line 311 "TimeSystem.vala" + total_beats = (gint) (the_time * sixteenths_per_nanosecond); +#line 1354 "TimeSystem.c" + result = model_bar_beat_time_system_beats_to_string (self, total_beats, TRUE, FALSE); +#line 312 "TimeSystem.vala" + return result; +#line 1358 "TimeSystem.c" +} + + +#line 315 "TimeSystem.vala" +static char* model_bar_beat_time_system_real_get_time_duration (ModelTimeSystem* base, gint64 the_time) { +#line 1364 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + char* result = NULL; + double beats_per_second; + double sixteenths_per_second; + double sixteenths_per_nanosecond; + gint total_beats; + gboolean _tmp0_ = FALSE; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); +#line 316 "TimeSystem.vala" + beats_per_second = self->priv->bpm / 60.0; +#line 317 "TimeSystem.vala" + sixteenths_per_second = self->priv->sixteenths_per_beat * beats_per_second; +#line 318 "TimeSystem.vala" + sixteenths_per_nanosecond = sixteenths_per_second / GST_SECOND; +#line 319 "TimeSystem.vala" + total_beats = (gint) (the_time * sixteenths_per_nanosecond); +#line 320 "TimeSystem.vala" + if (total_beats == 0) { +#line 320 "TimeSystem.vala" + _tmp0_ = the_time > 0; +#line 1385 "TimeSystem.c" + } else { +#line 320 "TimeSystem.vala" + _tmp0_ = FALSE; +#line 1389 "TimeSystem.c" + } +#line 320 "TimeSystem.vala" + if (_tmp0_) { +#line 322 "TimeSystem.vala" + total_beats = 1; +#line 1395 "TimeSystem.c" + } + result = model_bar_beat_time_system_beats_to_string (self, total_beats, TRUE, TRUE); +#line 324 "TimeSystem.vala" + return result; +#line 1400 "TimeSystem.c" +} + + +#line 327 "TimeSystem.vala" +static void model_bar_beat_time_system_real_calculate_pixel_step (ModelTimeSystem* base, float inc, float pixel_min, float pixel_div) { +#line 1406 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint pixels_per_large; + gint pixels_per_medium; + gint pixels_per_small; + float pixels_per_bar; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); +#line 328 "TimeSystem.vala" + pixels_per_large = 80; +#line 329 "TimeSystem.vala" + pixels_per_medium = 40; +#line 330 "TimeSystem.vala" + pixels_per_small = 20; +#line 332 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage = MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage + inc; +#line 333 "TimeSystem.vala" + if (MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage < 0.0f) { +#line 334 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage = 0.0f; +#line 1425 "TimeSystem.c" + } else { +#line 335 "TimeSystem.vala" + if (MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage > 1.0f) { +#line 336 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage = 1.0f; +#line 1431 "TimeSystem.c" + } + } +#line 339 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second = pixel_min * powf (pixel_div, MODEL_TIME_SYSTEM_BASE (self)->pixel_percentage); +#line 340 "TimeSystem.vala" + pixels_per_bar = MODEL_TIME_SYSTEM_BASE (self)->pixels_per_second / self->priv->bars_per_second; +#line 341 "TimeSystem.vala" + self->priv->large_pixel_sixteenth = model_time_system_base_correct_seconds_value (MODEL_TIME_SYSTEM_BASE (self), pixels_per_large / pixels_per_bar, 0, self->priv->sixteenths_per_bar); +#line 344 "TimeSystem.vala" + self->priv->medium_pixel_sixteenth = model_time_system_base_correct_seconds_value (MODEL_TIME_SYSTEM_BASE (self), pixels_per_medium / pixels_per_bar, self->priv->large_pixel_sixteenth, self->priv->sixteenths_per_bar); +#line 346 "TimeSystem.vala" + self->priv->small_pixel_sixteenth = model_time_system_base_correct_seconds_value (MODEL_TIME_SYSTEM_BASE (self), pixels_per_small / pixels_per_bar, self->priv->medium_pixel_sixteenth, self->priv->sixteenths_per_bar); +#line 348 "TimeSystem.vala" + if (self->priv->small_pixel_sixteenth == self->priv->medium_pixel_sixteenth) { +#line 1446 "TimeSystem.c" + gint i; +#line 349 "TimeSystem.vala" + i = self->priv->medium_pixel_sixteenth; +#line 351 "TimeSystem.vala" + while (TRUE) { +#line 351 "TimeSystem.vala" + if (!((i = i - 1) > 0)) { +#line 351 "TimeSystem.vala" + break; +#line 1456 "TimeSystem.c" + } +#line 352 "TimeSystem.vala" + if ((self->priv->medium_pixel_sixteenth % i) == 0) { +#line 353 "TimeSystem.vala" + self->priv->small_pixel_sixteenth = i; +#line 354 "TimeSystem.vala" + break; +#line 1464 "TimeSystem.c" + } + } + } +#line 359 "TimeSystem.vala" + self->priv->pixels_per_sixteenth = pixels_per_bar / ((float) self->priv->sixteenths_per_bar); +#line 360 "TimeSystem.vala" + MODEL_TIME_SYSTEM_BASE (self)->pixel_snap_time = model_time_system_xsize_to_time (MODEL_TIME_SYSTEM (self), MODEL_TIME_SYSTEM_BASE_PIXEL_SNAP_INTERVAL); +#line 1472 "TimeSystem.c" +} + + +#line 363 "TimeSystem.vala" +static gint model_bar_beat_time_system_real_frame_to_xsize (ModelTimeSystem* base, gint frame) { +#line 1478 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint result = 0; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); + result = (gint) (frame * self->priv->pixels_per_sixteenth); +#line 364 "TimeSystem.vala" + return result; +#line 1485 "TimeSystem.c" +} + + +#line 367 "TimeSystem.vala" +static gint model_bar_beat_time_system_real_xsize_to_frame (ModelTimeSystem* base, gint xsize) { +#line 1491 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint result = 0; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); + result = (gint) (xsize / self->priv->pixels_per_sixteenth); +#line 368 "TimeSystem.vala" + return result; +#line 1498 "TimeSystem.c" +} + + +#line 371 "TimeSystem.vala" +static gint model_bar_beat_time_system_real_get_start_token (ModelTimeSystem* base, gint xsize) { +#line 1504 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint result = 0; + gint start_frame; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); +#line 372 "TimeSystem.vala" + start_frame = model_time_system_xsize_to_frame (MODEL_TIME_SYSTEM (self), xsize); +#line 1511 "TimeSystem.c" + result = self->priv->large_pixel_sixteenth * (start_frame / self->priv->large_pixel_sixteenth); +#line 373 "TimeSystem.vala" + return result; +#line 1515 "TimeSystem.c" +} + + +#line 376 "TimeSystem.vala" +static gint model_bar_beat_time_system_real_get_next_position (ModelTimeSystem* base, gint token) { +#line 1521 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint result = 0; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); + result = token + self->priv->small_pixel_sixteenth; +#line 377 "TimeSystem.vala" + return result; +#line 1528 "TimeSystem.c" +} + + +#line 380 "TimeSystem.vala" +static char* model_bar_beat_time_system_real_get_display_string (ModelTimeSystem* base, gint frame) { +#line 1534 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + char* result = NULL; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); +#line 381 "TimeSystem.vala" + if ((frame % self->priv->large_pixel_sixteenth) == 0) { +#line 1540 "TimeSystem.c" + result = model_bar_beat_time_system_beats_to_string (self, frame, FALSE, FALSE); +#line 382 "TimeSystem.vala" + return result; +#line 1544 "TimeSystem.c" + } + result = NULL; +#line 384 "TimeSystem.vala" + return result; +#line 1549 "TimeSystem.c" +} + + +#line 387 "TimeSystem.vala" +static gint model_bar_beat_time_system_real_get_pixel_height (ModelTimeSystem* base, gint frame) { +#line 1555 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint result = 0; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); +#line 388 "TimeSystem.vala" + if ((frame % self->priv->medium_pixel_sixteenth) == 0) { +#line 1561 "TimeSystem.c" + gboolean _tmp0_ = FALSE; +#line 389 "TimeSystem.vala" + if (self->priv->medium_pixel_sixteenth == self->priv->small_pixel_sixteenth) { +#line 1565 "TimeSystem.c" + gboolean _tmp1_ = FALSE; +#line 390 "TimeSystem.vala" + if (self->priv->medium_pixel_sixteenth != self->priv->large_pixel_sixteenth) { +#line 391 "TimeSystem.vala" + _tmp1_ = (frame % self->priv->large_pixel_sixteenth) != 0; +#line 1571 "TimeSystem.c" + } else { +#line 390 "TimeSystem.vala" + _tmp1_ = FALSE; +#line 1575 "TimeSystem.c" + } +#line 390 "TimeSystem.vala" + _tmp0_ = _tmp1_; +#line 1579 "TimeSystem.c" + } else { +#line 389 "TimeSystem.vala" + _tmp0_ = FALSE; +#line 1583 "TimeSystem.c" + } +#line 389 "TimeSystem.vala" + if (_tmp0_) { +#line 1587 "TimeSystem.c" + result = 2; +#line 392 "TimeSystem.vala" + return result; +#line 1591 "TimeSystem.c" + } else { + result = 6; +#line 395 "TimeSystem.vala" + return result; +#line 1596 "TimeSystem.c" + } + } else { + result = 2; +#line 398 "TimeSystem.vala" + return result; +#line 1602 "TimeSystem.c" + } +} + + +static gint* _vala_array_dup1 (gint* self, int length) { + return g_memdup (self, length * sizeof (gint)); +} + + +#line 402 "TimeSystem.vala" +static gint* model_bar_beat_time_system_real_get_timeline_seconds (ModelTimeSystemBase* base, int* result_length1) { +#line 1614 "TimeSystem.c" + ModelBarBeatTimeSystem * self; + gint* result = NULL; + gint* _tmp0_; + gint* _tmp1_; + self = MODEL_BAR_BEAT_TIME_SYSTEM (base); + result = (_tmp1_ = (_tmp0_ = self->priv->timeline_bars, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup1 (_tmp0_, self->priv->timeline_bars_length1)), *result_length1 = self->priv->timeline_bars_length1, _tmp1_); +#line 403 "TimeSystem.vala" + return result; +#line 1623 "TimeSystem.c" +} + + +static void model_bar_beat_time_system_class_init (ModelBarBeatTimeSystemClass * klass) { + model_bar_beat_time_system_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelBarBeatTimeSystemPrivate)); + MODEL_TIME_SYSTEM_BASE_CLASS (klass)->correct_sub_second_value = model_bar_beat_time_system_real_correct_sub_second_value; + MODEL_TIME_SYSTEM_BASE_CLASS (klass)->get_timeline_seconds = model_bar_beat_time_system_real_get_timeline_seconds; + G_OBJECT_CLASS (klass)->finalize = model_bar_beat_time_system_finalize; +} + + +static void model_bar_beat_time_system_model_time_system_interface_init (ModelTimeSystemIface * iface) { + model_bar_beat_time_system_model_time_system_parent_iface = g_type_interface_peek_parent (iface); + iface->get_time_string = model_bar_beat_time_system_real_get_time_string; + iface->get_time_duration = model_bar_beat_time_system_real_get_time_duration; + iface->calculate_pixel_step = model_bar_beat_time_system_real_calculate_pixel_step; + iface->frame_to_xsize = model_bar_beat_time_system_real_frame_to_xsize; + iface->xsize_to_frame = model_bar_beat_time_system_real_xsize_to_frame; + iface->get_start_token = model_bar_beat_time_system_real_get_start_token; + iface->get_next_position = model_bar_beat_time_system_real_get_next_position; + iface->get_display_string = model_bar_beat_time_system_real_get_display_string; + iface->get_pixel_height = model_bar_beat_time_system_real_get_pixel_height; + iface->xpos_to_time = (gint64 (*)(ModelTimeSystem* ,gint)) model_time_system_base_xpos_to_time; + iface->xsize_to_time = (gint64 (*)(ModelTimeSystem* ,gint)) model_time_system_base_xsize_to_time; + iface->time_to_xpos = (gint (*)(ModelTimeSystem* ,gint64)) model_time_system_base_time_to_xpos; + iface->get_pixel_snap_time = (gint64 (*)(ModelTimeSystem*)) model_time_system_base_get_pixel_snap_time; + iface->time_to_xsize = (gint (*)(ModelTimeSystem* ,gint64)) model_time_system_base_time_to_xsize; + iface->get_pixel_percentage = (float (*)(ModelTimeSystem*)) model_time_system_base_get_pixel_percentage; +} + + +static void model_bar_beat_time_system_instance_init (ModelBarBeatTimeSystem * self) { + gint* _tmp1_ = NULL; + self->priv = MODEL_BAR_BEAT_TIME_SYSTEM_GET_PRIVATE (self); + self->priv->small_pixel_sixteenth = 0; + self->priv->medium_pixel_sixteenth = 0; + self->priv->large_pixel_sixteenth = 0; + self->priv->timeline_bars = (_tmp1_ = g_new0 (gint, 15), _tmp1_[0] = 1, _tmp1_[1] = 2, _tmp1_[2] = 4, _tmp1_[3] = 8, _tmp1_[4] = 16, _tmp1_[5] = 24, _tmp1_[6] = 32, _tmp1_[7] = 64, _tmp1_[8] = 128, _tmp1_[9] = 256, _tmp1_[10] = 512, _tmp1_[11] = 768, _tmp1_[12] = 1024, _tmp1_[13] = 2048, _tmp1_[14] = 3192, _tmp1_); + self->priv->timeline_bars_length1 = 15; + self->priv->_timeline_bars_size_ = self->priv->timeline_bars_length1; +} + + +static void model_bar_beat_time_system_finalize (GObject* obj) { + ModelBarBeatTimeSystem * self; + self = MODEL_BAR_BEAT_TIME_SYSTEM (obj); + self->priv->timeline_bars = (g_free (self->priv->timeline_bars), NULL); + G_OBJECT_CLASS (model_bar_beat_time_system_parent_class)->finalize (obj); +} + + +GType model_bar_beat_time_system_get_type (void) { + static volatile gsize model_bar_beat_time_system_type_id__volatile = 0; + if (g_once_init_enter (&model_bar_beat_time_system_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelBarBeatTimeSystemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_bar_beat_time_system_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelBarBeatTimeSystem), 0, (GInstanceInitFunc) model_bar_beat_time_system_instance_init, NULL }; + static const GInterfaceInfo model_time_system_info = { (GInterfaceInitFunc) model_bar_beat_time_system_model_time_system_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType model_bar_beat_time_system_type_id; + model_bar_beat_time_system_type_id = g_type_register_static (MODEL_TYPE_TIME_SYSTEM_BASE, "ModelBarBeatTimeSystem", &g_define_type_info, 0); + g_type_add_interface_static (model_bar_beat_time_system_type_id, MODEL_TYPE_TIME_SYSTEM, &model_time_system_info); + g_once_init_leave (&model_bar_beat_time_system_type_id__volatile, model_bar_beat_time_system_type_id); + } + return model_bar_beat_time_system_type_id__volatile; +} + + + +static void g_cclosure_user_marshal_VOID__BOXED (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__BOXED) (gpointer data1, gpointer arg_1, gpointer data2); + register GMarshalFunc_VOID__BOXED callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 2); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__BOXED) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_boxed (param_values + 1), data2); +} + + + diff --git a/src/marina/marina/TimeSystem.o b/src/marina/marina/TimeSystem.o new file mode 100644 index 0000000000000000000000000000000000000000..6a04e49ba09f51334abf49ff5c46688ef66311c9 GIT binary patch literal 79668 zcmd?S3wTx4wKlxgUOUMq31ORr7!m6hB1Xt%2cn{4O&|dR2_z7ZTH;P1Aw)tFbAcGJ z4(_p@i;?g{Sc>j@);_Vk&- zyLzpryWjLx-u>o&;PwL-YU=E>N`dRW`^~+;?FBBr61X1V!gs&<5a3{GXW#g6XWvfH zeWA_0GeVtxcL1N<+bM7W@Fu{iJqn%<*fKW1*#!P3;H~iH-aM3FZI>sU3wSx;bn*f& z2VWX+r5>IP(89o--hSxBer=?GAwNAo^N-^_wmBT!({~v49Y)=>O-~PW-Gp|-MhAdD z0DOGU=3Wc-^1((=0rwPep-s>k_M&~d$`N}~>`U$K?DHFU^o7Bf0lw3>A3Aa1U$BcVO5a(X zx2JD)<(@u&-d(-X;m+Pb>DFWPrzk`DlVOw|_Zdd4(2RSfZ@jcKXV1oF1o!l1KzB3P z+3O2+_6FgrrAGI0`lAu-KC1cOIeYf4N?o~~hoM6}`>0gaR}X#aVFT)8L7(Zt?&I;s z);=v`pv(gBl5Z}?#XwpHXr(AmdI9KKMk>qXb@ry_ZR!id*Qy8TMDUaJ3PNu1{{g+i zuorFRwR6bR?qu{C?UEYqlJ-wS%wU@{hOvJo|XRs5*@D<58t|^+v%LjquJs!&oeSX@u`Z>?u9!Cmz1$*M3`B zdMp;W0N_!;Q_rZ5m);4+#+dSs-t73>sjk>_PjO6*5ANw3FMhlY ze!Q)hWuj4@wDdI%3)($8d*iNI*?n}=KdUFkR{(kz7<>A589$UdT|IvW-BM0b55~ka z=$GcvFFm;VnAjg<4Q)S8o>uDkiwCaOst(k%{$J43f}XUmKR8?JWql#&6!Pd)I)qM@ zS{dX{A7i}hK7J@q_wkbB^gGqZ_YK>}+NTWk@o4sO2z?xOoK-L`V_jSi|#6Jwc5JtJ|AV29ewZY*>Om3b$Qz0#D=`?qm}=HJu&yk292E( zg9iHEZjT)~UdxB6zxrRS{}uDF#DjtTc-T`veTzDH$L#5anSb=%p7~BXVt4WjC9?hq zjtiXfb*ph(S*H8cGj2m1w~Op?dykA;>1*_pcibX2#Tww9-SLNa-rTYORPZnFo|@u~8V=4s#yECl$Dvc<@cDga>8xXhvE;aw)BQt#c-D`CJ5ob};qzyO1M_C8s zH|0v7OP{E<1@*Ep))>PbKR{d@ML!U}F0t`+*fs!PWNgNI7=5MchrG82`fu5VZfvCQ zN?iPZOvlJ4=xCrnIrjYMPw_>xgE%kDK5vJ8+ne_E(Y`U^ZM~_LY7NK!lX7{b$GC_G{fD;$A`B_-_8K9FT^_T?6Z3Ady_f@gLnQh2-x3) zHDJ%3ee|7FgTAEZ=6H;!fpLlT(> z9NX9bx8-LHQ{H6Vl}LGR-P*sSpvQFhJ#}F$;~3KQep0#If3jTopDdU0PnJvnC(ES` zC`W(NdxW8E83I4&dA+vPcKk>Ce|)fi|9?__1J~03+xn6R)ThgTQojcW*ySHB7eBC^ zy)X8`H?1a&b^7V1;r%o^g!wDneKgS1)yMTT=P9nAxR&dz+|$>&X-{8tCFYs%t-Yb9 zt;e|M=6I6WQ>tQ*&=`AA&Y{_{XKtQaD-sxAx8rb*i`r{V1y*Fvl>Z!*%&u&6SXJ0(_Lw=+H(hNJUGUl122Y2?3L7el4HuXg# z?i%2U$F&vSdMwB|3^*BZJm7S|JO>&NI0(20a4O(5z?Fb~8C#Bp0A~P>zGmyOD8T7} zeKWQm3nOozVI0o|Z91-l#%7%3Z0<`&Vl4HxgMPs_d)p%RLK|r>o(*tMkQ}_X&pb!* zhOjqF#-7XwZxeY=AD|5PNrU8-DtiX>LM^n+1;6ib{~*j)BE@#q^9 zxW8b|(tSw&4*~mZ9^D4<>mmAsZSaf!+j`k%tt0g_hTzv{6JFnow*4*y9pm%vb#&ip z7`=?;pQJy0Q>#3i096A-mUewzU!?j^>`APlCvrSx|b1ZgE z4xEyC5N+ccePAEx@xk^vHucy+JXq_!I!MNjO@rim`$N|i461m~^4!m-chsJW8bYT~cvoLs$Gz`Fq2Ake z+~%}f%bAD$#rBTdPKEMz^>M6+;k&_c=L%mu#_K@+uJ!Q8V}Ii14-CPd>)|JF0A;lN zP}45Nf&1ZyINK||AAY{%XcGK93|#Q481&_tQ_7B-47V9(Wdj|Wt@p_*D zKa4^@n%K9<`rAqhv@^)I}`7!;fwb1E0{>}MFOx?gU+aTWRold-3d=S_yOqc}xSrev#{u%Q8HZNb}%W7x5>7uSdb5emW*`Owmr-4y>QoI<|9ujYmuu zI(!8EorIW_YN8JEa?bUkUALf&H-75%gm=tp+1zJ`unuP5>G3z7~PM zT#S#H`P)u)!RBwSIdCc!IRDj?PQ|R*dg|P`{FBk2z2wwSK8qMRZtN+>eAopyNUl4M z{rjsX{ND(c9YdZ3J&&^u)Ug~oG9J^<4P)u?Kb<}M0Qc8u6Z(k11$q2i^W1a!dLHZKrRp-K1i{*?l7d*H=>VrS|WGr_77}u{R+wp>ZX<`n=-1?Tb z1?PsICOw{)9*=3#;~6n?nDMOpm+OP`WIXS}I)i(?oqeHF^f~4}J)Y8nJNp>xQg9yo z_>H%niouy|?2Vo8#M$xuJ|n6(7cnx7`ykq1wS3-pFoUjwucRChU7qqk7*J)Dg?-<;VNh=+2p9yEV@I{b<%hrVQ;@jbWo`t!Pv2Y4<~i8BhMVCkJ$3*On6Y~0zm46)fTly9;P z#i)~INw<3Lf0HuEugjF+PBD9Ba<`M2Whe8swah*k(4NEM$Z*Kc^v`+@#0Pb;kpnbey<<(DwWkb#A+kBt&j6| zFu192bTI#zfjzPx*M9E5ah4wd91nO5;AFtukEa6We*AjC+>eIM4OK>_Mb@anSU(4xBKWA*E_e}__I?S*Inb(J@a_P4n5v=8T#@-TruSE z41jXDuh+5|i?pnv_V+`{y2>Mq`~9J04Yl__7jxo3y@ET`I+^DekK>%;pE(Oiv)A^V zJBB(7I6A~xz-yS-2I|83o@W8uK;wN!!`L;;Fy_ug9QcR!P2T>~u{S!T&Xrjg*Egr_ z7-%(NomDw>JmNkw4fpripNuywtLIhL0exgG$U3x4eGW#tRjJOvd>%j0`UG!;y|EW@ z_D=J-cPc+_8r>G3GvGaDp5H{5cANAKu@Uy6QJ|T5oyUlCbOHV&o~;1qJ&%EYN6mB0 zixZOKtc3Fu&M_0sAkGGSX+~V!r{k=EVOS}Km2g$u)p12Q5Axf1ESaLzrC~&m0k2`i zFe6W35@y&@W6ewAO`ae{8AQg7H7>!PB;GWOl87FC5zyHvmXHMTGe8=XWLgPvajc09 z!O>2&)6vp%{H9AwOb2Z|Ops*j7R4%(9RX1kF!o$qaEdJnOq6u4ElHSCCy93FQCp?h zxN|)fo$o4P7^qMiA}(%pTznj*U2vHQ_>?x1VO$8dfU*}ELRn}Qz^F^&Y23VM>UL3- z5(Slf;F;h7Vf=}1k)ouKSR>8lFpP`iaG)|N*AZbDmt>jO#_MW|lH7{YFEDeGmP9X$ z`;0XA(kLSb)lZH?mnTBVlw5%`6im%BU9mo>lH~!RXg1Vf+o(6FVW-+Sn$N8^$5t2q zK)$JQ<`QZ5G+UhbNiMO5ahZ!F@8tk(^AWtl1r1|5S&Nc#<7u=jZC&g-uCf_z)vmT} zD2gc?&Ty47jBDJ|hVf}yiP~#BUF!-nj6AO>w~hJU#=Gd5-p+H;v%FQ{(OOrg%Tvha zDbHa8XS+PA0dwL^cF|mRA{mO2ttvJrat`+lzL*ggg@Z_ z!bONDe!o8|6^dE^nG7iFelS^Y0geto!OQPXz-7+Gyu1N=L{B};%V->@MPH7+9kp%2 zBQh4&;zslptipod8_`$#Scl*Ll^9_Dh7DfyRS%OGCSS>8yu1*qMK72Pz8HTPe*-c8 zE0B#cXW?&bGX8*2Bp95qDvU-~3VK~Xw5EL%1>;O>Z6eBFO~Y9K2CKz%srF!xA9MHT zP%y^Nw#M_%zX2S*6BiQ=>qthFt=qCjAB1!CIJW z)MRSun`i`|M30S{LV|CiAEJMXs~A6Rb&fy&>N%h$eg!p~iBF-?zQm6Z(*228LK}g^ z2z)A-*z_qxuf&NV!{{**??tHIWF~gO;2R-^>Y=;tLXAmF(7CaV<`+;jX(2o!w#BT6 z^yI7YCl$ahEAe;wVGc6b?i;}V>eBR8%gbGR&2XD z7Ocs8@y8EfD$6~IaT2@J{5~25O^u{mAvyMD^V4J;1E)y?K+j5fF%^V^)?zdpj49iA zviOYkLn-G^8Hcj5hpguW45aL5dwQ(@5->jHcWlKEWmxzo22(PE0Doj%D1DWjas`G= z>`!dTsVRHmudzS1!Eq^9Aq2$!%z9TujZf(y^%oX`0@Mf@Njo4Uc7u6}`o0UD;sIO= z-jp>^H1?P^P8f}pzq69#)+7P_DeKsAuUpD_&?R3*Q)4%pm!V|xS+petfHq0#U^~0~ zHMW>t2okY(+n_(?9k9gS>%UE?fs}Viz0dz;0pnAC4gZhb<>we-vwiU0*a!Sagqoc4 zG@omG(59xQ81Ti|J^puuIvzf^7d??Q8a@;Iv@ZuDl4h`}2i0{9^-r@nPLpnAt<%)? zEOy^a>u=C2#&1E^C^H#G%eIBH7fw*Q4wDYfklf|_hhK%#ihk@c+$$ox4+#s&) zd%O&yJL1;8%F8$mxw!Q;yxanJi)&xc%g>?axSRjX%M_S9u45E5J-?M>d4t5p`1es^ zBPx@~Wg^gwzGEN2#K{nCCLTqI@g@EQ{pwF_LA`;*7ZGBDi5HD$p!pM|hZ18E3J`97 z3DhRjuuhgpfP>ITbnLgZoi<^z#Y|2ET@CNB>HdOAg+MejWX51*Hb(LhaEnGGO{9 zjt~BtGGC(YFx-Ogh5)^+pfq&L_o?Zt&@`dA2^EZa7zPO@6qmuC<5@CcXFLX$f6O^h zc6=sGn{b~X%pef~jDUn)3NeO=--9{fenI#~6Y&V*NWyMG1fqxtrUCIKRm4xkG}iKf zLRdunBp!%|6v9WuS?HedutJzbWTEj1dlW*fScveH@c1`4FHH1Huugcwjts%~&@%~N zI|qvSCdM1q575ellI36>^L#fI#OUqdK z!%k3vjz!QP?1vctH-wFPd)QPgRcy}-!>gJB!Ia`YAj~lxD{=`!7_A!PC+{dT1^RnL z5(JHP$M_8ZqonO}P@zmpIzI7^2wb-vO7H zXzoD?v^nK88kCr1gMpNE2uVz~!T6MC$voBugDF3N>m{bxU~)@X*P&A4`8JrAGKck!x54z3m1tt(1vZ$G@>z6W;)UiMRPUP@PWkvE zfESr10_LWiKy*%=Xt!v3%8P8^B{n!CB?+#Oc&YgXX<%N;9BP$m-XP5{NO=WOEiudd zw1BfyVyR@dxmYC6N$Ey_PMl`06mV|JHYz#8+$o|;Q;uTrBo>;FN!ev7CkW2A!R0Cc zLvW4_R;GMNaIOtjr~Hjzk(nW7SEoFU8WQK*I@hQCkV=-Aby9DW@u_O6^{p{K1RS6E zU78{I7<=Y`vWOA{q{Rvf1}lM0DqkYBTJ1WFCwPufyN8y|cLvXidcEVNK? zAExu9We*9I7F>t%ob(w5r3XL5`mR?{M({D}^4aeSXE@k80nle z)dAIT4~Mm5@Jq;(Rw*bsn8I?kHPZE|hE;-oNt*aBrT-mKyf|rMI_w-AjqsPWhEbZ* zSCOgyBavPZyoCy_{S>U}n>g37YS9@kmGF`66kHf&#(Ckdm}jL71N}qQ_1BnDRb^2?I$} zFGd#JMuXj?xQyT~ME;~^Tb^NkL~pn}48Ad)_>-J;`Bs*BoNjTOF7p$JOxkXj3GN~7 z3knJZZ^ue2X@`R1gPm02_Fsy&LG0P-GuM0(5))2ip=4TnXs1u_VRcvf+2l|EhSkX! zxJ!?L-?CXFx@F(8z1RpEL*0fEr_N!gQXVG$)pGsC3SK{W@pYN+}b< zDFSUccP#kEOoB0rljeq5M!Mqxr#oiT?nPIV>p8f@^rWJ{lk3MJpdZ%VL61t>qfPNH z{i<7=B8q7Aw{vWI0G0E=a~c;LllXOAms^(0E3N?fc>msSqH<6#@-}YieaGWSHo>W;=IZD z(vS2Nha`JQX@Xt(A&_GH9N_1fwCwvVD}NY&L81f1`2SlZuwD*w#USk`Dwco1bXH_> zT#hoYCY$`p#}$Yi1TlVgLX3YhP|6r|LSX~81lKq?f(_5{Cw*fVpv0F^$Vi+84>J=( zDC$c*0B^ApZ@_@@C(Z*gip>B1V={jeC5^-qC}Ad!hKu_WEp(@q*ooQ4pU5E-WrR8q z)y+q!I`$O&gWuaIebH+`fxxDlrABB12iMAIlRVQwnu2^R^q7zj1wi2SQWlQ!cfnAh zRTyEW={L!{40db*CLR+Sh~2ORvM9$;-jfgfyjEs2SaM zss9F;$u*hzEg#o=Cs;D;nu~z=rjIp7@z#Zrbsq+RxzC4_Rba?tgciUZ%8NUI?kDXe+J1la=t^4E8}ok4KR~iE_1E#FkqTC zq1ZHboKEBT72}i#o>ema@ zmF-}pc7F$;v?~+s#>4JYH-WGVg_QM*M7!OYItA^j$)I^8hM+mw5EutMqL}QRw?Te99^`8I`DO5MUjO zopAImq`o^TT-C_#QYfDabpccg<$DxrR0r&*eQ8|%A`sRkGQF99a7teyrAO0ME|Iw|Y(55g)?}%MO-{#%{vMQTM6giJp3E|* zfy$9uC$rY`&|_Ch&68Pk0YRx?&54dI#J_l1Q;FAziMffHqh$kSefG;|Y zhyyxjK;PZQgf}t&+u&Z1lV)H6Zax^zdsLHn>SaC@{U)@&cI8UL{Bkrk$owAL{IE#) z8H!~7z=dB0ED`-R)s_&%VBX<5T;7Z54%?5}pmON>4%kmaq;fEE=~R%EgNa*D0jL~I zT>H}mUH2{nIQ0nX_ydH<>cMKUXhD7G1Ed8Mw5A)YqnxZ|jY3I$L@6WEkOhm=C;Kq`d}^;77O zDD^ovhm=AasZiML#n`YeFgXmVO+40tyi0PB8ZAXPS{JZwJd;xkguB%OA#BFO zWvm;__rb_QDDR{yn3H^2@diD}Cf%f}`DT=b}KBTo^{yf}6)?RZ_ z+I-ra0a&fQLg2_n(rd43yVUjI$h@3h^(~RM8&Zs{aR_kcH%+znf~tD$WvaDT8Zbs^ z3F~;&G+B8Vi_U*X(eFdj1X+_lYI2Qv6u7Kk!Kci}#EMZC+=7;yi56Jn z_`Q`X5sKwbAel&wPT5qJ%>XK=8pG5|J&dyR0HWS%w8J`A%CcMtOSjd?pLEKe%d$K) z&EclmI+ta?rOIZ}Q`A`?%Pm9tB`9w?Wm8!8FD&~L*v(2|*;H_$-aT}du~IL~bs=4j zG%*BbnR&*tY!y(d>{yolJV2D~z+c=5B!=aVAblAr64GUpS(a#3Hkq7Ul%nhh^xz~Z zO9tGk!OadVRGhL&ESn9KvQ-kxmHvjwbmj#Na( zCZzpH{)@Dd=aBgiK&cKrhaLJifT-wWS}Q1P1D5MXx-1Arr)-dAD}e%Y11Ih=QV|(@ zkv<2?T8DWInZL&Jvd$jEihicb1~Io;2~rWur2=~v=?SN70?STD4P0X;&=zw6pwL)l25Z_zWK`uC>d|E#BQYLfV~1J)$8#rb%v$t8didh zvwsRuIcpf!18dCXiU0L=WyP%sZny0ITTn5V-as z>FCjGm)Z@E%#ED>x}q7d9%KbsK{U*~BU(j|5HYfI`(m_;9&?E)WyrZJ`nL$DQC2-L zM(9HbGq*;YROeBo??G79M7`JA8qK}d>%gf{+8Iq6A|lV1LKnh6&GpeH%hiL&2iMI9 zeFDb^2;}7*x=FH{X^%FbtTFK&Oep5;Xtflp2TPi;&lYmpEu5BTM_)|kX1V#4J6w>B2tuAs}8azx5B&@Y7Z5<8XjbhIzgS;0-4UC!NG1FNsN-8DpM|u?{u0&5LQ@4oJ zDDJ2wNVka8iGWqRdOcE)iquI@W8N{3*)<%1gIbNM21;k3%SY+EoEjRXhI*%lMyX+k zQ^Sj%8eX!c?m$$q)+nizmbnG5 z$b2=0O z;_yN7)v2Imy#QHwPK&(eVxwSH6pEfTS^YAQOOfg(>&3uXO4tC@)YI^|Wx%U__E~Y< z07g-vIPO{5dM#DE?6Y**FQSmzWuF!2RJ+AE<%1lq#_Vliu|6`*UqP%o>-dP(UBmkt z)<@KDPLEULN38MUX;RxqtPR3(*7y8M{d`F%Ed25;V2@AD?YobQ07jQqZ* z$?v;Oe&22K`<^C$sG6KBP2LLwp&mB32Wc(R!VKNy_u1s#K;^jAK1oob==*H)&jHS& zk@yS)C79LzOIrcYt-~KQxs*-r#C7g!Hn|H|uYs-TL0tR=7gHX`1%H>A*D&%g@JlG8 zsJWPkCnCKJg=Ag02@=dw|2=@!y6`Z#UZD{CL_Yv-mf8o7%&il^y~s}^EC9~PdJx@c zE|hx+QC1o;vMwz1t94;JwFvzf1~v=)CdGu{4^_y|$;8N!U1fov*LMJ?c9n$^t)nc2 zE3O51Vo4M>ujK^vvWz)O;8OGJC{cit%5pE$t}g?HCH4|Vz?V!iZAaoZd!xhn5*a@Q zbPmU+^%DD?dumkjZwTSm+cJ@{+yRK;UV2Ivm}Tq#HXFW;WxqwAd7GlX3Qz^7H8SLX z2slf^UcKCl^4+~`YB!8L4pNkBy-nB3Jpi0Kv3#5E^#>GFBUmbV51<-ZZ+qMPtxHBQ2x4u70zDf+LtQ=z~eh5y;sZ!T}BP)8H0Ic!7?P?tc)la)ehv zJ&B|pVLVE()c3%Vx#}WtPZ3AB3p_^F;|O8qCAK5LRcuGN)OLi2h>;D#WWU-V^Z;Xo z?oU9m3;iYqA4d8HgiXrU8-xq}+#pa96;wlhIWh^|3QlvZ-(-n&X!0RAA}FP{24jWm zBG6Pnq}csXY0NX@F+bUdG%Pp+=~^)6J!}B~yle%CdmZUU;EzLSj?Bo6G?nKng2S4DoEEHaoYa_1+gUkAXxH79*HUal*AZSHcSM>vK z0zYO|vZDL}gYh_Us;a&!RjFzJQH!+cpyi%M_o+I+X3=9N=R$5ClB)b0f&@PAEqIo7 zKvr_B`Xtg)2QvDIaGPm7napmy_;K>g`)ayuUzjKep z2N`^Km#a>=*9P;TLLPLr_KO8r{doAXANlkgZGrt%AsZ-lfU%z{lmJu~_`Jv1o5TV} zUODQro)(c5*MzhN1@3o5K24FkC{nf;PgCT6M`VLXWTS{wyNf1U{4cn2c~Znv^gg6t zqwrgf_$Mj;Z;tpUDgJzLDUGW<;#b%rs~ORr5Rnvj8tF=;Yo=-=JVBAwK&gIsf+Dv7 zR3ghgB9|zU1$!}AtZgPmbz@Q7jr=V~+%}5iQyS`M0bjQJyk8@@TD8)b ztduY6JOZ(t16A~>W%PK36)z2umB#-NpgMG~Jq$g@LSuF4F5onPO08!^Ej8K>N%du* zW%20G{11W6@@v;NRvYFI1Ts?jo`gK$#(N#|*jt8?IuF-^(nwBc6y^nBbERD-OWM{0;D!bH2!j2u*YT<>=ktl*;!fHz-8C2T$v4AWXs6^URx1G(ORvjYi;R|arMMw4mB%V`%#UxRn2t`Rk&SLx3*^S z%`L4pYqM6;K((!_n`^47vsSa=9^$&HdT`@psI|JfW);Xj@Un4@4Xf&E0i(ZbTW@Zv zX;DS>CAy`yx~jFRrKVL8YFp~-TJ$x!fQ|waDrnQ!Yin9ss%o{U+NP@Jsl$$xjg!Q>75dWCo|Ojr9)5#nV0d;%nc11y*;Y@?s(IO& zRxs;Qt1XLJc6QF>?Ck8xIoVcAmKB?oV>M@G7h9vUto2#Nms{;wh2d$J7UxVU&d$u4 z5{8V-%dI;%_|i;QOtv+Ka;(-YD=rJNvNL#n`BVtZ&MZc)nPC(IUjGe)xh3oJ?8~eN zZ-FGg&wBEfd4AJ+*_S2PS#mwkx&FOx%X|Qj-9o}kzIi3@TTjIN1`1GWX7>Ew?#Z0L z$J)K&;6T*gTMo_(XB5}IZ#A;n4zJ&`z60(p^C+;}A7}-lcSB$qphx`&0lc!|;d!fs zx=T^t+7JkV`hfpEP>(s(I~4VU4O>9$65_`jwoq`O?U_9*fc$s=Z&2d74O!OOgY)Kz z$StbS-#4($w+j736jH=9mT0qmBZ(hdtnQr+Tedt5iFbd_8pV1JTUo&V$HuHp=p&eX z{_4!^jBrLcXA1taI#z+@Ba5v#yMfo+q=t_+Y_WpxSsf1pb0Yq|T&p81YkT(moa`yn z=3DEjZ8P9HaChLsLty>Q#)IVCC7f>w=YVU?`TLCrv$81ZBR`cs zvLTBF?~2K?dNxRBf1dEmhPo!>%Z7CP=Xw3#hIIU+0=#6P33pjqUYLpeJEB;^b-NT9XoG9;G#XSkhndD27Nv=dk_6Tyfrf?BRjk& z(|1*JW*A!EvramrXVko{nHaIFtoSVpfPPA$?-?}@!2hh<@>{m-KSr_pe!MQL#%hti z|7&304}kgWI%&-50GaPzPw#p^aPU?Do$H12MqpmxVxg^KGk$M_e_6MRVxI|Y0qy7O z9}cvA5V+`(z|Y?gtPiXUTt7E##jV-{hF1bI93EP~DrbICcCEE`o>d%Jwu-}HUEta& zIcVVg`PoyZhPyMei^7>01#`ojQSMX>73ysN4Xz&u(7n&BXZ>3O2fqa1#r8le!A@!9 z-`3IOTcwGATSu$jHtL`?>R~W`QyHT>unNHI>$gk+aZiA@czu1AZ$c8l{ej=Gy+<$> zTLK|Uy)&@Niexc*_bd%vjnT>F++7TgH%NDRdvXkTU3BMdNj z;n)z(|JT)5biSbP`fjHH^syKT}b}c+FGyAvi2d-e7ABb6HJ%W+!v%W1_J}+8+ zTa@V*NA2Qh_lrsY3mT)YyQ1f9 z_06Qgf3Fa4paRQ!utRzCJ<;sJ|G637y#63{`;CyF?4TdK481JtNvZyKQ3p5gDay7+ zF`VAtAr(O-dj8iG^dl+x1Bt6Yi4xC8^QgmtDCPM-=n&6;+6KSgA)bFn6dmNF4(0jX zfp5rEhHmgpO7^9Vos)wB5V#0pz8)nb;1?bC2xy#VwW&b8DQeZ8S0UuR4r%j;emc>e z8@6!V{LN4AJ=Gy$>A(D}YcD7_PP=s4)=bdf^&iAr{HBRTc1?Yx6>FqOi!72NE3lGL zh}OnPdrMtM4Hpo@@CiKvMoJio503;oY{SSBC0HjP9~_3Kwx%`GRM!rbn`)X@)-<$Y z5%tNuEe%yowuZyVUD?>&j1^?0r3TBr>XwMC)!3fe$Vz)b7HMm#X^vo3*|NH-KC*OS zQ9&d!bK$bWg5m1NDziS~2yRrM0R7t7`m|E<^G*Hbiig9a*`$s-d=~`V)DTFLBx0ie;>) z*hqDVF3oLN!{b-XKSTUN9$bOvdbrEsp*Mz1T<=9Jv zDlcxiBvjp4(-LZEYz@_|ZK|(Xi*XRDT7hn_TG<*}ThqF_u{u;ajCT#^kl5eelFOF`WV7)3W$#MJLJ(khP4mSPy@E`(Zcof`lMtZL>Q4B16;pw!=ttzTHqdLV3Q& zaK{jI-4?#H@RZO;Zp%*W*7pkEV7r8X=a0|tcOf6p-hQ^@Q}l<0XXyHLyZQ9`CgB^} zE_|50a|n6{aQyM9>z&d^X$1)xQKfOT?hfk<{_Rn>Mc*2;EzmitUtjUb;O!_kK=--c zzT$(nj|$JwI`PTYq3F0DDL+1EO8+ZJ2v8f5t!aFel(E*P_0x@yiS86yKil{7BRmC&=MbB%j2?Cn-OPhfhp?5)Y3@KZ%D= zKn};F{mmEy8%ety`}MO8A8s7Zep&_}VjM|E_XsjVsGGlD@C>JGNH}m>3P%}^C(Y*J zbBA+rU63&JIMaN5HnDqXKJl**X#DZXzIx3sOEbO?F~IR5w~ z92Ywy)xl@g!ot(Pju3GC@u{=qe=d32x4 zlQ60tm?^3>y5G!$xy`PRkE^^sj4aK=2R`(8BO5H6Q2IMYC7+s4n@yE8UA=vlrQaJ zU=}2#N0r9XVuMy_u8;Gc@#EfK*Ac8?bRWM6Nq9Ep6GkXP* zmG78B5HpfJf(TX$s)AWH5(P2m;@T^Sto29`#EfK*Ac7|aRl)2u5(I^qbM@^NL{>j= z5X6jRPgjxpF;cX#=wAQgd;Pp78~$BWfprmqKXWgr>Q@b()gr2N6EY@LpsD=cQf_}# z8bG4KR0Xq#kkGVL=G-)Rn?}~BkRX#8$)2XU)H0X4RI8W{W~OMP z^j?3N+pt$4=rtu%vpx%uXjJ1;%U%cOM1MvqkS9u1Fe^Z!>dd*9@v2VNawN!PMzTkB zms;jh9o3%!Gt)rTHvz}b4nU?>y%iwQK)KYiJAmox&qxL2K~$rH*-J=tDCXQ=c~vLt z2_(p5MzY5?G#i6v)xE&c#t{wjoyZn^-(0qWJa>5&w7D+T~Q5Cm^=-50hE_) zs@*w<0TK-^ms<83Fcjq}%ZidkTm`dKB&x`qTUW1&WKBatX=WsQRICJ8jieo?6W2@{ z)?QNzTse|QhXQ~^1Lac7_zgJ<^)Rx^-GZuM_7D=3O=I4zt}~c(5A9W)#hyWeBxW=C zkd0B!7h~lOUU!mm8Oz8x9vnWSt5kFHS~tUGT|`#C*Jm2nGg~c}rOetDmf1#yWk&VD zJ6O_UN>bF%Xlfn`DB;(+!pkU}TA9XmhmrARWL)ygVgV6;T{1Ey={hYb4OCTTiCbm~ zEua{ksV&!GT;?(^a~YRuiPLRH*m|z!YS|fJf>KZEOUPbRm%2)}G(#*@!7LXE4wTBAhbqv-nS{t%j|B0Z z$R1LcUO`QQDkF8fy7W@{@eI>g>`%ELoqVzmP^M#RDsMs<8D85s^}SU z(c2Uj}%0)Sib5V}&FF?)* zBCCv_(F-7XmSL=UnV>3|Ek~kK%y~HFRf??DNFJqJl%rHDICcwH*`vswQkUBJl=-os zDwuJli|PW*dEVu%j;wrN%2S;ji3zGAh%8x3+!A2U6ESaTvZf+=N|S|ePICo~Y&sHM zjyccDyrubWayb(E_zs)w>27lG7itBw9wgd~ISFl$Gm0?hZx zwW|PG??8eA%t-bqKWKNR;70l9+SPgTY zTzab^>vSYk!;EB4H7>Qxr8?D+dASs*U{;C5YMArz(_0N$n~+cqGm<^kxYRP2>QqDK zol>BJ*={6O!<^@*-fGCY7YWrcBiU1pOD%J$PBmnHRti)wdjW~nFy|4hw;HncBB2^) zBzvlHsbwzJsfNscDNw;IfP`v-%z2XQt%j`0NT`Mx$)2Sz!CXOAFq@7=nYd%E7Gmbp}?>&ZM`3REx)A+Z|fJQVjCjTkWfvC`EI#(%}LfKBviwUWK#}$C7`?1GMCz~8dY|YOLcaQZrQ~y)tM()5num@ zip=&SQAOrF&i7j4FmNv*!C(9!k?e6Df-?kF!7LAnCS}euf3G02^4ke$D>ITkCMCF6 zP!-IcLV}bXv}#N!>b}$UqFJ2 z%=o!oPg`AT8L2GnF=+rG6Ut^FQ`Aze1i@UPRxq26L_0C(of5ASWGz5~AZ8?clyIqK zF4gf;GFMB13TCU3*jDDe+2XB+tgT3>hS{TX>6p}|mXXTBp0*M^AgBsv&mgfi%s-H8 zcg&IX2okDcMzW_hF15_1I;|n|87WY~>|-QW!<@H%ysaT?060{`jATzWF15_1I@OSQ zx)i8jHUo)9W1gq3L(KUezPCyiD@Q_=%=oDePn9mUjMQh4xP9g)Sm%ya*L?F|33a#C zZm~ryW|Pab8@c4gB)<+x7$sVeXTY!yqP<&oa`TG=U}IJ;m*vd(wL|Pqn6Z$j8B}1m zpemR>gaq59G3Q+}uRX|m015VBMzSZmy3{h4x>UEzr7m)*PW*JKi!~J$m+Qi>p9@PM zp<;~+0X!n8&yb>Yan2ON4t0r3U82htJJfQQ>QuH9)Wb+HYzaR>kStc{DoI72VP9)W zufq%{ltq?@+ZE6jqC&_QgnuvCK-PmRo|%c_-4_2V`B21ewg5 z)MGsymu&{5}IZnppq| zIt7`>tLs$eydCV-kHu1vAc+~to)PR)%QV#+6kPHmuNq3;VvQ<>%t}>7y;FswH*0Jc zY6Y{6NVFw$-j??2O4jX2o>uP#xL=`|9gxei9%M%pRx3eS%aLFnW|blu8!+U&v+b>h ztW8LsYFtzqDJ3AWC|)Y7U=~E8 zahUU7yH{(nhL8r7R;V&&EaB1GE#PQf431JIV>z;Fb*Z(^14s_k;4+pi1BT3=dRY;_ zOaNOmri&Vm2ORk05eq2&#fv7zu&`%=v_eR}kSmBn$**1wy_h$ea&* z3}h_@4s|jk*<(%$Qq(e+y2P-5WIiDUDwv%_f<~##`ON`uHDo=5gld=tLH1PRQp-qX zVUO>J0WzU%IWk3cT!-Ltp;j=fM529}^MMqv5@c;cf*@wya#_xA8IaSXkIPs_Mnzq! zo4pCBPAO2zOi>-9>;~#lMWtjW)Thgm`Lv)an05|m_CDVNSN!=;vy%EF$WA=oOY3TEv{Yz^~$ za_tThvUVb&8fGMWTH{j7T&mL=GVhlH70eDGu^Q&5<=U-=tcQ_M4KtEG)wt9$m+DkQ z<`1Mm1+z0qs3yexV|AU*oR1874aj1_G^vtVu3S0>bg5;ewj*&Jv=_M&=}dXR+l-sGQkGxpXRb zsb!?9!fvO#J{bBfq zd=2izKf>?63de7{4)H!1iQ4!^`a0-yaV9KX3dn9J$DRrvZsjeJ~rFq6>u>Y{oT z^2s43QSIuwmZtiunP}@uBoeC-D*q>4ae3{(~fr?8(Zq6osnVr@D5)y zUIc7hQ_~>dJRYf1&r6eBpABYp98li-^kaQ8n8$5{>rDKP@nB9zn!M3DB#YArwQT3k@#Su{(12) zc<`msSQ{fPN8;0f`sc;t^U2QdbzGlBI*k;HanObrAMe3;bt(vdQdmLut(7eCj7KY;5Vq{B#joJjw?_+Ae_fM<+Sk#dpvNR7N(>ln2k_uU4dXq@76mHyl2M z0hfl9j#R+GXa9!7^T3E-v^+yz%%nUtI>~GM_Y|hZ{YVFpP9W)@7ypt6&+`L*7%@JC z1tk*C5Det{7n-29rMbwtVbs4t@8Zvi6fZ<7T#7fGXDuo!FPfEKYzS8iU)jgk1)7aH zk@C-!7Di?l=g*1c&s zLu*a*s;ZSWcpJ8^)f2?Li-Z1?<_Ljq_?PV6LRzqV5kVp-LTkSl^6MHR_6GrsNXzQR z=GGN$tA@}_eNq9d&PZLgv8uiiOBcMKKZh@a&&D^Z>hX<**=_hZKKTs3*RO1)Ui&v9 zMGGVKjVsqgS`ECw+-z{6(FjJ)n4%4A+G5Np()Qs?%3hP(V&=f2a~9+mM+yqd^NV0v z5e$VRH4W89WX?kM4Xx&yRroSMTSKeCchRA3RV_ZdwHj}0XID43W%Dap*=uX6>#8!t zSvmMdSWENDZ2MDN%{47;^{tWmng)DhD`&XZluMiI)?uPXjZ67KEGo{=5Ui{zLbr+; zhUo$6_Q)K*r9Mj)T^A8!8iJE%(^l)7>#z=BquLrc+16Bt;5!CgW7xjo#H>F(!JZ!E z*Un^&FCff`l;$tWFNu^cDq5OfUTAdGG&jm;GpdJ>-+zHq+tet2Y(R4w)@|ybDckYT z{yyEZwyGXqzmRWW$l4TLKWmoyW|*<2zN)1K->kp~%=q01etb;c9fz@LHf?FuH8Tgk zX+KL!E6t`Fk=C_M;fPV&M&r#X)+gaI$r7YR*tH8`@?;8SykT6jlR)VDRSFuY$y@c4YcVWf;YVVa{(#Bpn zl_OVQj8hg76I`Ba$VWjiIGS!Y?9nodpU~jGN6h2tO&vO%byuzJsd^ADSQweRaN+#L z!mxG74^{^iw?8O@9;Shx<00n7Nc=}114g|21E`OI2JUv)~&j^ z0ADd2sX;P$hBe(fsN0HBGH1b((5#Sr;?bxTL+O||xcdkAYkgxwZAkv~i`;h1SJA12 zabr;EGMa1fO^pWo+d66@vQ30GtD^$tOtR{jonPL6St3!@({??6rMHKi5E|Onu7DXE zS7Ae^T6G1sq+RWb0%_QjKrWtim^D>Q>b;3X8wV zk^yc|Ez@f)yqNAM!%%O$wK0r!5t%t0MbvE3P}P973rv9}M{Q(9V`F_y6}zoDV)WbQ zyEeBEO5my(68+-*@UF;(MPyZTO^v~G3@n^n*Bdm{lvfXReju*qP6ixRwof(H)T}{# zP*b^{3&cPBf44`^6RzFpPy>b?zf{U^O1TRrHTkeUdjf(x3>8G`8ZhxTV(BE20)2uN za=(~~mGhE0Mr6R!XJ`{R4r?D^sSt#9gm?ogl8C{jAA-7yLr&k?_8lSM4rO1vQ-(it z8MG%T!uN3&mCM-bzbewp*IE51WZTnLH?}o%i6T8Dsw-zyjWMcgWJy|w7|T`JCpJb~ zs^3;XFA5izA`6OU&6hb$c0INpbqwhkNZ19;@dn!=Ex-e%CMfoazB?cqG_^F< ztaQVV-J6kyx|M6Nrb6^o5y4(Ub9PY+E%8ycb`~ckMTUA)Yx77ZQTr7vo^?%)_0>8e zsU9BEE$Zx5znbK3;umyBszrIDYyr4l;0K9yghUv1z9MC>h;7e8q#NYxjzhZvTv~ug zp~JYh%XGJ1hrMk6%;G|$sk&|LS}XuPE0e-Sixw`zdKuL@`!UQ42t0%1?3_jUrE?Kw z)s{!N^jg@~)(tpD>uPm+j`;xd_B!kWxoxy}AF~!Nz}9)mtn$dh1;w8k$#xRq26zeW zon!FtRAVhZ&WsINiLA(>g$h4vEzZ^0)CjgK`0R5-qv6ib+!aXtlP$SpRrIwzwvC`b)j^$tQAy+gQxNlI!{`{;paW{j?iMW=-4`5sFmQ-!bLL|E-w5;%M6-ov>0b{ zv^UOk^A{8p7cN?CL}v3#YrOqX&)tB%>TqI^gc-LLdM%-LW7Uz!x<;H-!=AQg^c&5? zkvIG|1BZ~wvd+d;ZTM7}>ldi)VWAr~;CN<`M-8V~zZtro}?-M}PI^7R{NfKC!0T7m3`|hNTAC|i zt!%8X=a(SWhu(|`zQb3YqcZG?2~AU3uF5WR#|@k98NK!v*BMX-K6qE({PIJvXLdn4;)XW_(gwL*z_ zqO{j*2aZU4b>Mt;Q`I$Sq^qiQuREiyfQN?*OA8l8>@DA7iBmXX!xS+-2+}ZlCi}dS*Ar*G2RgR=SS!y2%4mOMoScwYg-7{M8w zJ*pekR5AQh2wZ$%`D$;cBdgiGh{x4jZ3kJ<6)QtT?`&7v$Cf4Z>p|f`M>uz3rIyhx z_S$NMX4qrg)2Vubb%&_Euk>sORL{x~QVX*YY8dv=%#ba!ch^418vR{=z$xFrxT-wZ zbK~B28}T<8V zpPZ;wPOl@mT3(bC78ETh(P#7ay&GK{+;NauT>sIX)z90NAR}HIr5Bt9NxyMAtGF*>Go2F)ZXRdj zCX=&U(c9wul0w;=4h+n$GK2iW87``fJ#O6s+FNXgwRcuB9vnmC4kJFNi+|gN&&sHA z?i`ML4nK8}wzZvEykyZ#*%!+JEGtmMTTaA=(ZJaXDf-BhpLZYQD9h+woR8pLYoCt| z492vxj*gBe*vl6TLi_e>N&e#bIK!)R&+sBGyg#V|oQfCdCbi|~CV!Y^nyyLRc~i^7 zlKvg9_KN-7)ZJdMt*PQaXwza0u#AdK>bbDt12#W>Y~b;pdY+H=+jf@}E?%5Jr%)Yg z46`ii|C#4uZ)kYOi1vZv{ACfW0E-IbOUxq;Psc$A+{qa1ApJH_b4t{zn)f`1`kwrt zh^z-CCMWyr>iRAK7e&geM{qhRPR_O5ybc zJJ%&WH)p)PFC*9Emi9bvsMVR{;aqUEHQ+P+I6f;!Ly88k#0LeB{@bhw?%5WWRd-1_SaT58Jtxx8~2~}ix*z!87lokvm=wH8;+@83@MQ)GjOvZ zjxL8D-rfD6(V{KmgjL*fT~s)0$s!yH)zX!m-c}8RF@{iTNP~{h%TA0FpLU=TO7LtX zva+oiOZfV>wK!7ZP0ju{_*H3|ZBYNaByDRn&HJ2;=dPD(J?BA*0GHqY0wNlOV%yGW+txx%ktd^VC;xGbvYqQE% z>#OFP`m9zy){!Oqz^oN`_#vyhW<^_Vq-w>A=9+az7FiTVCK3f!ZbX>o1iCa)VU&!avJkJao z)qe#7pCTci<@pFGc`vqM3psy*bd~GB!0RZ1%$WWc+^`89P7n1luo_3 z;F|KLBJp<`^5ox9R-o{a-i5?m|CZl`hZ#NX)%D&125-H~QEv~3tTzFPd~ElZk-YLw zY%q+*NkG~^O?wKkz9#9quiync&qKVLwih&Sz2mQN?R*Ysy51gK>oT}Bo_NAALcFkl zn)VD}ue>zK3j)V>@EK7p@0YmNWpHWy4Dtdb+CNSEJz!qbU-|pxlaQ6BuKAZVrW1CK zOnz^n0z9AU{ItAxfzj6_eoRF?KTYGm&Iw;>(j@YE+}@Ev8)=^+Z_W$&M?bX?!1|K8 z$1RO#U&c$UFbtm?{UH*Y4p408mG{&e_y=e4N{#+$c^cNa7w5n1j z*FP#@B*L!(=GRm5Z2Bn3;dc~{*znbW`OtCLhSvh-XHYc%LxA~_mvWo_EMR`%rqzc3 z2AJQASZ2dv)XNW3hmdr82&JDxyGG42GBZtY z9ui`w6-_qpFH=mZb|Td(o>uK@*I=}vgePm3;h6~SwY6q#7!+ZUgxXCTT6$Iwu}Ku3 z@Atkx_nCW6XQsWLb6w4+&;R#-yI;>a_x=Ch$Af?8Q+}u1vst6%>8o@231G(|3>a-7?mm6%kvkxpTSg#|6T3}VaMyYhp(_d zyJFr!yO<}P&7=HayOzi2BiBDwJ}tMYy@m1&wGp-N{@cS>SpTS)KdJnF47Sg!uFv`H z;VaC)F6JAQ-_M<_RR-tptXl;0lDU#Rm-NnZo)h4k=aX<89sXXeRJ$!}vcg6fn?OT4_Mtv;5J)VDQ%-x@cn7jRfnhX)X+9Z~$ zzUX%}qW0}k-1$2tCqabU$B(#(#~1lSbnpt}ej-EUE?<$0a(w%I5x&CZTM={rr20yE zg)&6_v4^iP|GZvJ?&b6OJ$xnK2m)=F=$zP{JQkhQInjY*>u8zI9*HC6`TBq4gXBJU z+~?NFC&_*8EFgZ9e5L+>EdG1>cKu(o+=BZ5BF|N~qVjLchsygA|4cqpUWD(j z4`oZ`QGG|rH_CrR{3LlNy&oKdpD!8lDfc1YM)iLypAn09*STj=%#W8h$fNxFZ}QbHaX?~t@?7QQ z0}>3JM0r-sua+0Ye45}etO|SNe7hPZS)jr|pMf=rW|JvwpXPx`~|H%E`p4QT)H;U1R=& z+}kgTe=N_6`N1me(^C{bN}e0@^W=Fk|BXC9=6A~rVy^!tU+t2ge#4}8>RI#UcTbyM z?Gnj1k|42N@J%Ql@75&xU%N!|jfDJOvZhzNL~M4PlG`PEBwkg2qnBIXn&RKd{rO?G zVuxr89HaM2e;%2KpDp+2mpXi^+@D8Q;tS>ed@%=qUhdCBOYo27{`?umJ4Rm+6nB4e zQoL`9|0Koz2;%7F@;^`Uxhei|ia(d)uci3b6mN4-)LPiz15^A6xqlPDzxC(!cVdcv6mNTIlsnx24wC!xRh5#x{{3Ay zdbz$+Q@mX6&rgMlIsYtqnLJt_kI4PdE&tw_<8P#t|5)zNS3YMtzMpnXKjW$fKc?x; zGB}?7BvC&oD%yX~Pl=CB@#|82Zi+vg;=v%Flu0 zOw*h)_P190owl_!{f=&Vrn}ebI-14PE>p7{$<6DsX;$Z6RkpqY zG~tK=j^!G&FeMuKoo=W{YF~rFIjwBN=5IQ!WK5l$(@NInGl};xVK_Em=HD7rvybY+ zH5-j;iH57SSabU9(HU;9kpRK&5nH7$zSoWP=Bu>N@Keq{t#rgW9`e7}kdZ#cMa6{! zT8I=4^!$KyWs3T@SX*DuFi2abq{Z5b`?XM}aNwZyk>cXQmf9&SX|cAVmdXq)ZmDkr zG~zt{@(d_xG16jf{RipJJKLj3(>_ukZs5%^U{KmX;h;hN(*}x*2K0;em)ODQF#>&x z6--~MsDJ-{X{*zwjmFr=PZD8u3ii_ioL1;RMgCLlKYjhjOLkfi?eG5$@SlPHGsu66 z!XiPLqM%SwP^u^>Ruq)e_$}uQN)`o0i-NMnLD^!L4R_^2mN)H3nx>O=bVg(#PB=fg zDZJNl(-hiA$tWBgjeCu83O3@v*1FhiWKdJ9dv&OVe9fBQN1imj)1K5%qu-O0qx%#W z4$^TJ_9N{oO;d?>tmJO8*I6n}e(i51%^NN1-!B@km-Z}{wh|p#$;ndD*r0F*bMQnC zjp7+T;#55tX2cn1{Pgru<-t71@-#htQcU?YV(&Wl$ zJx>{XrKWc1JzrlzrcKan+*oc+c)!+_2AeAUP!iu5%>rX8Dm2SAd|plz7(Z5z0t(Ar zF-G%8nx!Y-#ez_Ic`(|lys~&)3)wUyd5l6lJz>JQ@^ND(RF+R4Gvz9OWr)g;E3Ujg zDHHVc39Yi0_K)P}*k-fpt_)}6Ul~r744$fY`PDNtkdxkr(+D(LKmI+X*}jyVgrFkK zk83`waIX_VQ;EH|aPZ+X+_>Q(lN>Y`uJW-{#$NOD33~RTw^T6Pwo>0$r%RHb>6o?8 z$GP)H3>%tel?3g0Z%ckNW`UbV>3QR~R&uYeZ_#RL@yk?{p~Wv}Q3m&}#cx0HOliLF z#1AUh)6(~@cr|-}Ay2I(Y^c>UOY&S0AN?774|iw6YFaxFBx_0kl$YeXb-pxPXCG&_ zR=!K8eXj_1li2R)ov>*SNuEU5Rpox>L$IL9lY<`%b@dg6+CwLeout_r&5qZ^((qq5k?A$$4QNfR`i=DPCWh}7|@p|V$&J26@dd%bZbJFopMm=)dh z(99MOmtkjXYMMv)mhUwoDLgr7I!|lyaKDMZFpxFvs%<(8Bo|RhSNSVzcp7P~@IKBk zdoTIEzGb+=9o~mbNXu8F zKB9l7uDj=$x_+K(>biHHsSCmRrmltiUSpQ7Df{|vmagTNn7XDqRCIqlcFFz865XF1 zQ~k*m-Hz|=xnKFF`c+`6Umh3be)(Q-R+g?On;MsJqN(u*Lrje$7;5U`ajB{M{KHLM zZ!R-+9ohE^vvPG0SImAz_fgDOb(5lZ9=qi77l=XsoUVS%HkH5H zRK7)c9o_&vmdWMUi!Q&>)Xn?NW`B(nF^^ZjI)wEVnr~^lnQOIO%yqg)AiADvF>8kI z;h6JvU(j*&!#`s0a@$OmOXwb9_S@Q@OqKVTCzme~U4Edc@_sn1%g;7de!jU%>(x}b z2GQkKiY~X>R5?E+*5&*|>@HVeYJVJJuGIE3Ro-KzT)s+l`D#<;YaCa3|4O>c?=qF& zW2cR|(DpTz&tt9Jp6}B;-x70y>T&#KjRi5)UVGg`%>JwDHUFmd zZK}NQr@MTqn01$qM^p8bnQCve=z8Xxs;ACWJq@Pn*=VXBkJ)lP+r+GeYS&afJ51H% z-&oFmPus`bsPlsPiuPmkRc&vxQR~gztb1^#j`JGP_122sU+c`9wVdYN+Hb||zpGxI z`?BBHb`hOFPjvo#vF8WcAME#NIYs9mWp2^-!sp{F@iq7!ywibU{t{E=hv1d?47?U! zif_byAKC47)j8Sab4+cqKjquQ#=x*O^++TTE@w zJ!Ye}i{2AlKGWQx^=H1O^(J~f7KmPtg{IbfiFvQ~8!`J|+J5GnI!~JGwLZ-?;g~s> zuaUd_Ql~5b3iC^yAIzN^d!+Xwr&pP8YWtdB>HJRmdeVI#)W=KCp&^HuDmUCzxykrU ze2%H*nup(Qex&-%T{?f5|I+bps(ky*(7T%QGW-&}!qj@3jQeK}?Q`(?cn!V`Ux}~B zx8VK(M3>)%C%T26VXFNs^J{Gf(o0D94;s4MD15T{uFfN*&mp~r^g7a)k-mm>4;^tm z8K&CHG_}5R@qBZ;+A-hJ_BEA%nyLKDOszlvWM6Q8(NGhw*G!mazN7sGmYFK=9{_au z2J;)8Kg@MHF0w+;haMB@{ij6C`Y-L@<_w)T%-`wwGw;)WXfD!zD7rrtrs|(zs{Li8 zH;}&0+^zktN0`6LRQ^S#(ldL8>A9xT{qShl>z`!va_%yB>HQ#E^l@V(f;KD@E74$W*;cP1Uo~{8r~rQ}uZ4rR&)vX4U9@G$*X5y{UR~ zMAze=F>^hmP1Q5aR6TX3>hYLN*RxE_`n}$dO!a4lsd_exK2Pj1b)LvOT-5oY(A4?B zV>Vs>MA66d5c6iOfAayYZ!!BjoyX1ZRj;Y@aRcdlaF6A5JsG0w>1v*?^=Lk*e`3!> zn?#PiR_%+f_e4|Yy9#_V?uTVNzR}e3?=iK!nMaBnb^bCnN#jJbZJR`;sSnlF&|^p4 zpBmBYqt^UytvB;>z0a5rY5kdFwf@Y9wVgz-_eQf_o5T)N>#u9BsP&g?YJVSSYCR4y z|E~SO+@a&Z)OxKD-Trvd>!Z@tdYx?6X?=>>`?X2TH?>{sOr2j>h%VP4y4+@`E8lkW zOZDRiVn>Y!F_m6oZqj~&Utp@f(dJIQPm`YbVVIt2>i8K7D^1ligLpOR4W=etY&JEQ zYmcdXosJS!e}O3dUDxZm$nD1);CB2mN zGW-&JwyAtoq|YaP5nhKkn##A8^c|#U^a|Vcca>nhm|D*Tc!{a=`Djzy)xWLee$FPo z%+z{sz*n0pzYgDQ{zJ!?>FwKF)bi$-`cj%_9-#frT(9%7seBct^7&_h-0o7iUqZu3 zJLo)MKCQV>P;XCx>vWuG+ctP^en9P>iMAcXam~(u0{KpXrEmls1;@Z~a4OWH9<=jo zcniE2{vPVk3i3SxpMtBP4#gn;H@Fr4FVrp_#5=SJsY4|2ZZH?lg15j0@K5kL_!3+T zH^FW2Agwd6pKdT4{s8ud$HBhv1b7Pc_i@*AE*t|V!RuiaTnHb8i{WzkJX{Mm!B5~f zuyebx-R|%x*cYA*{e9j2yBJP{*TE{d5Izi-!jd=|bA--Ev1;P!UI&U!{fxm?dU=3UXpMtC5yYK_}DfIOkx8Fq{l+5n%hp-5q2utC4umVnjv*BFmIgYNk z9=-_I!4KeeIOWhV{|tBo^mP~4a|`tK7yJG2A^0f#1AG!b4Sjvaj6jhI}>)3PfJX87eVFB@e#E0N#;1@uTS9g80;H{?W`7OND zR6D*7)OJN8@dwhE!{^{C_`0e3Hkc~+cih*9+UmXkbNoBAO4q6M0onO|oyhHWg_)+x zA5PrYjqJW|1X3VHPsJaZ*zTD;+6Qdrt14OTuAx@=JZ5jF}}=HKkDHMQ{`3> ze*<5KZ^A#sKgGX;?Xpx}{mL-aufy;hyq8(8`K0j2q@QC>Pb4nHeVxz!8V@VYdd>eb zRqrf(4*pwwzNz-_BfSoP41dzBPb6N1>q-C6RQvzLzckhU*YI1jUbngQ#ntV1HRav# zT>NNL?e`&l5Iz_$HC66>IDzzOrrN(AzZKpE>*33A9ef{dGu2UxD1Ht+pY+S|EAc7#bo@p*m-IXF-{BA9PncRy_4o_;YJ9D!{=N^t zB7UH*le*ktrk3L@&2azeJXyIspT69&ox#4GUDU$N%(a9 zH*f*G*IbcEJZNftJc0ZAvHdku_4>N8{S#CD_#F3jWcMR+c*ypq@*iL-|6zCz-U~n0 zT%q?Z(tVxTemZ`csd}!#XPRpFMtrWRcJF|9naY1Z@x}P#xUW;YKQEao_bPnDRJrx$ z(}~0f_{aEe*iqM;U9Jl}$W*x;Q~f@U^dfi?JO%#5RQ>0gDt9qH-qid5B>Z|)@Bg!L z&(U+c)o`Av^7jz0#TVm$GF9Kx_-a$-8{ryL=ejD+HxUcWKKM&)N;hw|j@+)8i z@t29eg|Ejy!2bvL^?sM%1@{o|kQ=slkg4^Ni64OCzkt7jzilf22KXNFkBD!_zr?@C_xpj$ zX?YGdRlXbSVXD7BBwm2`#Rr?pe=0nK_z2<`;+Ns$@vHIcO_jd^{)+gm#24TXz{R95 zGgYo0t{}dO_#5~}_#x^4G*#|X_yzIZ#5?>@aV@X!tC&4Zt(T+le7qPRgr9DZ{}axFRi@gx(^R>8@P|#E4<5zqO`Tt!#$UnL;Oot{y3YoEzsL3M zfM1(xC*!D)nPyvEe}H~wmGd7>yb$k)p9+0H$n}hdli+ox>iY%!rK$REA-({=7k>zU z1YeFng}(^jB>f$HtEqOj!9-rzAK!O!dRLffs{O->=i|rW1M!paVQ>`b7n<6Bmytfv zRQ*@Msigl3&L#a0c$ca6?FtVl!*lVY@j|>GehM5; z`bhjzQ~UEcd zxehethvG-zN8x?&zW88#C|+i&{!#D(;$w(c;@99a@n7QA`0e<8a4}pCpM#C2`uirn z3I5YmKR$(Dn98@C_k?v7{Uz3^l40q`_90$vQq!)d14odIW>YWLT~=iv+R z8hj~SPI?2r3V#!BB>jDSJN(L2ySw4{rrPavjHu;1#FQUqYJbZm{aCyZ|FNlj7vdGB z_MeIPba)5+9efTpn##Wx-(ad=@4@#?)&Ec8JMebLhUuM5_ZQDLRsKlW*Hr&cf@hej zZv?#5RQZYU=kV9?cDM{aYpTDi@J3VZt%2)I)&CyxkMV8zPJB1sp&-nEps9KefxS%i zyATdCRqv^Aq^W*iYO35AIF|SnQ{`_Y{U&%PTnKAS)$^#S`u~7GW42EuUclFwRf)tq z_$E{BegHo*RsJ*L-{9Zl8OMe7^)S_5o~iQru)tLLe#B44&%nG%!!&8EuV25%>RFY#J@G5$xq9)AH}jlXMZ{cgrT!MEezm|C9w`-IFkwcNc-?LWui z15NeoL^#A$xnabAieH3}GnIcLyo&gLn(9wA>GR+sSOXWE>c=uu?L39QWNLdi;u}nD z?@jn8_~-c7ruy+MY;$~AUpLs(R6D)l@uu?kg#%2rKZN+1co{whR+=g|8BQ}*?mFUg zNUws`#1|01AFst9$Nz{w3txrr!Y%MKQ|k6bNI${U zb~>5#GfmY$0*)eGvzLPUuOfX4yw+5Evxwh}&&BV?@5Afx$MAamX;bY!2VW%qHv9;F zPW(&wwW;>o7U`dsKf{zCjA!GycmW&)hni})6b?64{#@eaxPE6aTz-5iJ`3Io?}iVW zs`tO)qo(RzM*JE41^hL9ExrkU0(Y9K?;H4?srot=i(2l3O?h`b7e5-;6!jqAV0gNz z`i8-?OqD;6_-OoUIF0lh@Eh^l@H_C|!AIbq;A^JpUu&w}ciE*<8@uTq~I2aBy)!tcfq^a^35!Ww920j6wiqF93zHtb+cyCkZ#{zsHeiA+mKO4UYFUNm|PsV=% zziOj;wHz5brL@($&oMjcebGEypNma>N3Jl>)wor&v&L1M6E#lN)Mqy>dZO)AjZ-zd z>H3HHq^=8?s$Xxzf$Q)MybKTOS9}H@)GJ?v*O>AZcmuu>-;D3U6D*JC$GQDr+?~pM z-kZIY_;|b$ug2%$%kX-99ljplf$zfe)Q0QNH}$U+_q;dzc)Sv?!mIIGybf=`SK?dn zt$6!(VSAqU=K4L)&FvT9!MHhj8SeRPj!(nq<9Flr_zHX@z8Ozw-*b7-UvqnTcs@Q9 zFU7~>m3S5Id222ojEhr!OYt?tJ#WqN9r!Lhr$g9&uBo`^skuL;_;|b$_q;X7t8vd) zvoFCL@iq81d^_HCzc7EMsrCx-61)r_h0nxi<9;4=&>rsjYj!_F)Aen`x8q$qhVe{O z@qze>_$Bygd^YZRZq8qe*Ws)2MtmE-9rye;_ou7r<-<$x3-C*D&wF$JnRpFei#Oma z@n9UB@_Qbf>rd<-mTzy$gYj^R=ix(%m*V5`O1uiM#+Tqr@kV?Nz6}q?x2ZkPvvdDF Z&(7@+!H41%_;_5KCDB%YB6j6G^MA%W&hr2O literal 0 HcmV?d00001 diff --git a/src/marina/marina/TrackView.c b/src/marina/marina/TrackView.c new file mode 100644 index 0000000..ec56a4f --- /dev/null +++ b/src/marina/marina/TrackView.c @@ -0,0 +1,860 @@ +/* TrackView.c generated by valac, the Vala compiler + * generated from TrackView.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_TRACK_VIEW (track_view_get_type ()) +#define TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW, TrackView)) +#define IS_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW)) +#define TRACK_VIEW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRACK_VIEW, TrackViewIface)) + +typedef struct _TrackView TrackView; +typedef struct _TrackViewIface TrackViewIface; + +#define TYPE_CLIP_VIEW (clip_view_get_type ()) +#define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView)) +#define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass)) +#define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW)) +#define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW)) +#define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass)) + +typedef struct _ClipView ClipView; +typedef struct _ClipViewClass ClipViewClass; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define TYPE_TRACK_VIEW_CONCRETE (track_view_concrete_get_type ()) +#define TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcrete)) +#define TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass)) +#define IS_TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW_CONCRETE)) +#define IS_TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_VIEW_CONCRETE)) +#define TRACK_VIEW_CONCRETE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass)) + +typedef struct _TrackViewConcrete TrackViewConcrete; +typedef struct _TrackViewConcreteClass TrackViewConcreteClass; +typedef struct _TrackViewConcretePrivate TrackViewConcretePrivate; + +#define TYPE_TIME_LINE (time_line_get_type ()) +#define TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TIME_LINE, TimeLine)) +#define TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TIME_LINE, TimeLineClass)) +#define IS_TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TIME_LINE)) +#define IS_TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TIME_LINE)) +#define TIME_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TIME_LINE, TimeLineClass)) + +typedef struct _TimeLine TimeLine; +typedef struct _TimeLineClass TimeLineClass; + +#define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ()) +#define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate)) +#define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE)) +#define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface)) + +typedef struct _TransportDelegate TransportDelegate; +typedef struct _TransportDelegateIface TransportDelegateIface; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +typedef struct _TimeLinePrivate TimeLinePrivate; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; + +#define VIEW_TYPE_RULER (view_ruler_get_type ()) +#define VIEW_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_RULER, ViewRuler)) +#define VIEW_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_RULER, ViewRulerClass)) +#define VIEW_IS_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_RULER)) +#define VIEW_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_RULER)) +#define VIEW_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_RULER, ViewRulerClass)) + +typedef struct _ViewRuler ViewRuler; +typedef struct _ViewRulerClass ViewRulerClass; + +#define TYPE_CLIPBOARD (clipboard_get_type ()) +#define CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIPBOARD, Clipboard)) +#define CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIPBOARD, ClipboardClass)) +#define IS_CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIPBOARD)) +#define IS_CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIPBOARD)) +#define CLIPBOARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIPBOARD, ClipboardClass)) + +typedef struct _Clipboard Clipboard; +typedef struct _ClipboardClass ClipboardClass; +typedef struct _ClipViewPrivate ClipViewPrivate; +#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) + +struct _TrackViewIface { + GTypeInterface parent_iface; + void (*move_to_top) (TrackView* self, ClipView* clip_view); + void (*resize) (TrackView* self); + ModelTrack* (*get_track) (TrackView* self); + gint (*get_track_height) (TrackView* self); + GtkWidget* (*find_child) (TrackView* self, double x, double y); + void (*select_all) (TrackView* self); +}; + +struct _TrackViewConcrete { + GtkFixed parent_instance; + TrackViewConcretePrivate * priv; +}; + +struct _TrackViewConcreteClass { + GtkFixedClass parent_class; +}; + +struct _TransportDelegateIface { + GTypeInterface parent_iface; + gboolean (*is_playing) (TransportDelegate* self); + gboolean (*is_recording) (TransportDelegate* self); + gboolean (*is_stopped) (TransportDelegate* self); +}; + +struct _TrackViewConcretePrivate { + ModelTrack* track; + TimeLine* timeline; + TransportDelegate* transport_delegate; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +struct _TimeLine { + GtkEventBox parent_instance; + TimeLinePrivate * priv; + ModelProject* project; + ModelTimeSystem* provider; + ViewRuler* ruler; + GeeArrayList* tracks; + GeeArrayList* selected_clips; + Clipboard* clipboard; +}; + +struct _TimeLineClass { + GtkEventBoxClass parent_class; +}; + +struct _ClipView { + GtkDrawingArea parent_instance; + ClipViewPrivate * priv; + ModelClip* clip; + gint64 initial_time; + gboolean is_selected; + gint height; +}; + +struct _ClipViewClass { + GtkDrawingAreaClass parent_class; +}; + + +static gpointer track_view_concrete_parent_class = NULL; +static TrackViewIface* track_view_concrete_track_view_parent_iface = NULL; + +GType clip_view_get_type (void); +GType model_track_get_type (void); +GType track_view_get_type (void); +GType track_view_concrete_get_type (void); +GType time_line_get_type (void); +GType transport_delegate_get_type (void); +#define TRACK_VIEW_CONCRETE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcretePrivate)) +enum { + TRACK_VIEW_CONCRETE_DUMMY_PROPERTY +}; +#define TRACK_VIEW_CONCRETE_clip_height 64 +#define TIME_LINE_BORDER 4 +#define TRACK_VIEW_CONCRETE_TrackHeight (TRACK_VIEW_CONCRETE_clip_height + (TIME_LINE_BORDER * 2)) +GType model_clip_get_type (void); +static void track_view_concrete_on_clip_added (TrackViewConcrete* self, ModelTrack* t, ModelClip* clip, gboolean select); +static void _track_view_concrete_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self); +static void track_view_concrete_on_clip_removed (TrackViewConcrete* self, ModelClip* clip); +static void _track_view_concrete_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self); +TrackViewConcrete* track_view_concrete_new (TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline); +TrackViewConcrete* track_view_concrete_construct (GType object_type, TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline); +static void track_view_concrete_real_size_request (GtkWidget* base, GtkRequisition* requisition); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +static void track_view_concrete_set_clip_pos (TrackViewConcrete* self, ClipView* view); +static void track_view_concrete_on_clip_moved (TrackViewConcrete* self, ClipView* clip); +void model_track_delete_clip (ModelTrack* self, ModelClip* clip); +static void track_view_concrete_clear_drag (TrackViewConcrete* self); +static void track_view_concrete_on_clip_deleted (TrackViewConcrete* self, ModelClip* clip); +GType model_project_get_type (void); +GType model_time_system_get_type (void); +GType view_ruler_get_type (void); +gpointer clipboard_ref (gpointer instance); +void clipboard_unref (gpointer instance); +GParamSpec* param_spec_clipboard (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_clipboard (GValue* value, gpointer v_object); +void value_take_clipboard (GValue* value, gpointer v_object); +gpointer value_get_clipboard (const GValue* value); +GType clipboard_get_type (void); +ClipView* clip_view_new (TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height); +ClipView* clip_view_construct (GType object_type, TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height); +static void _track_view_concrete_on_clip_moved_clip_view_clip_moved (ClipView* _sender, ClipView* clip, gpointer self); +static void _track_view_concrete_on_clip_deleted_clip_view_clip_deleted (ClipView* _sender, ModelClip* clip, gpointer self); +static void track_view_concrete_on_move_begin (TrackViewConcrete* self, ClipView* clip_view, gboolean do_copy); +static void _track_view_concrete_on_move_begin_clip_view_move_begin (ClipView* _sender, ClipView* clip_view, gboolean copy, gpointer self); +static void track_view_concrete_on_trim_begin (TrackViewConcrete* self, ClipView* clip_view); +static void _track_view_concrete_on_trim_begin_clip_view_trim_begin (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self); +gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time); +gint64 model_clip_get_start (ModelClip* self); +static void track_view_concrete_real_move_to_top (TrackView* base, ClipView* clip_view); +void track_view_move_to_top (TrackView* self, ClipView* clip_view); +void clip_view_on_clip_moved (ClipView* self, ModelClip* clip); +static void track_view_concrete_real_resize (TrackView* base); +void time_line_deselect_all_clips (TimeLine* self); +static gboolean track_view_concrete_real_button_press_event (GtkWidget* base, GdkEventButton* e); +static ModelTrack* track_view_concrete_real_get_track (TrackView* base); +static gint track_view_concrete_real_get_track_height (TrackView* base); +static GtkWidget* track_view_concrete_real_find_child (TrackView* base, double x, double y); +void clip_view_select (ClipView* self); +static void track_view_concrete_real_select_all (TrackView* base); +static void track_view_concrete_finalize (GObject* obj); + + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 44 "TrackView.vala" +static void _track_view_concrete_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self) { +#line 307 "TrackView.c" + track_view_concrete_on_clip_added (self, _sender, clip, select); +} + + +#line 101 "TrackView.vala" +static void _track_view_concrete_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self) { +#line 314 "TrackView.c" + track_view_concrete_on_clip_removed (self, clip); +} + + +#line 17 "TrackView.vala" +TrackViewConcrete* track_view_concrete_construct (GType object_type, TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline) { +#line 321 "TrackView.c" + TrackViewConcrete * self; + ModelTrack* _tmp0_; + TimeLine* _tmp1_; + TransportDelegate* _tmp2_; +#line 17 "TrackView.vala" + g_return_val_if_fail (IS_TRANSPORT_DELEGATE (transport_delegate), NULL); +#line 17 "TrackView.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 17 "TrackView.vala" + g_return_val_if_fail (IS_TIME_LINE (timeline), NULL); +#line 332 "TrackView.c" + self = g_object_newv (object_type, 0, NULL); +#line 19 "TrackView.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 20 "TrackView.vala" + self->priv->timeline = (_tmp1_ = _g_object_ref0 (timeline), _g_object_unref0 (self->priv->timeline), _tmp1_); +#line 21 "TrackView.vala" + self->priv->transport_delegate = (_tmp2_ = _g_object_ref0 (transport_delegate), _g_object_unref0 (self->priv->transport_delegate), _tmp2_); +#line 23 "TrackView.vala" + g_signal_connect_object (track, "clip-added", (GCallback) _track_view_concrete_on_clip_added_model_track_clip_added, self, 0); +#line 24 "TrackView.vala" + g_signal_connect_object (track, "clip-removed", (GCallback) _track_view_concrete_on_clip_removed_model_track_clip_removed, self, 0); +#line 344 "TrackView.c" + return self; +} + + +#line 17 "TrackView.vala" +TrackViewConcrete* track_view_concrete_new (TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline) { +#line 17 "TrackView.vala" + return track_view_concrete_construct (TYPE_TRACK_VIEW_CONCRETE, transport_delegate, track, timeline); +#line 353 "TrackView.c" +} + + +#line 27 "TrackView.vala" +static void track_view_concrete_real_size_request (GtkWidget* base, GtkRequisition* requisition) { +#line 359 "TrackView.c" + TrackViewConcrete * self; + self = TRACK_VIEW_CONCRETE (base); +#line 28 "TrackView.vala" + GTK_WIDGET_CLASS (track_view_concrete_parent_class)->size_request (GTK_WIDGET (GTK_FIXED (self)), requisition); +#line 29 "TrackView.vala" + (*requisition).height = TRACK_VIEW_CONCRETE_TrackHeight; +#line 30 "TrackView.vala" + (*requisition).width = (*requisition).width + TIME_LINE_BORDER; +#line 368 "TrackView.c" +} + + +#line 33 "TrackView.vala" +static void track_view_concrete_on_clip_moved (TrackViewConcrete* self, ClipView* clip) { +#line 33 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 33 "TrackView.vala" + g_return_if_fail (IS_CLIP_VIEW (clip)); +#line 34 "TrackView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_moved"); +#line 35 "TrackView.vala" + track_view_concrete_set_clip_pos (self, clip); +#line 382 "TrackView.c" +} + + +#line 38 "TrackView.vala" +static void track_view_concrete_on_clip_deleted (TrackViewConcrete* self, ModelClip* clip) { +#line 38 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 38 "TrackView.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 39 "TrackView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_deleted"); +#line 40 "TrackView.vala" + model_track_delete_clip (self->priv->track, clip); +#line 41 "TrackView.vala" + track_view_concrete_clear_drag (self); +#line 398 "TrackView.c" +} + + +#line 33 "TrackView.vala" +static void _track_view_concrete_on_clip_moved_clip_view_clip_moved (ClipView* _sender, ClipView* clip, gpointer self) { +#line 404 "TrackView.c" + track_view_concrete_on_clip_moved (self, clip); +} + + +#line 38 "TrackView.vala" +static void _track_view_concrete_on_clip_deleted_clip_view_clip_deleted (ClipView* _sender, ModelClip* clip, gpointer self) { +#line 411 "TrackView.c" + track_view_concrete_on_clip_deleted (self, clip); +} + + +#line 82 "TrackView.vala" +static void _track_view_concrete_on_move_begin_clip_view_move_begin (ClipView* _sender, ClipView* clip_view, gboolean copy, gpointer self) { +#line 418 "TrackView.c" + track_view_concrete_on_move_begin (self, clip_view, copy); +} + + +#line 77 "TrackView.vala" +static void _track_view_concrete_on_trim_begin_clip_view_trim_begin (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self) { +#line 425 "TrackView.c" + track_view_concrete_on_trim_begin (self, clip_view); +} + + +#line 44 "TrackView.vala" +static void track_view_concrete_on_clip_added (TrackViewConcrete* self, ModelTrack* t, ModelClip* clip, gboolean select) { +#line 432 "TrackView.c" + ClipView* view; +#line 44 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 44 "TrackView.vala" + g_return_if_fail (MODEL_IS_TRACK (t)); +#line 44 "TrackView.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 45 "TrackView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_added"); +#line 46 "TrackView.vala" + view = g_object_ref_sink (clip_view_new (self->priv->transport_delegate, clip, self->priv->timeline->provider, TRACK_VIEW_CONCRETE_clip_height)); +#line 47 "TrackView.vala" + g_signal_connect_object (view, "clip-moved", (GCallback) _track_view_concrete_on_clip_moved_clip_view_clip_moved, self, 0); +#line 48 "TrackView.vala" + g_signal_connect_object (view, "clip-deleted", (GCallback) _track_view_concrete_on_clip_deleted_clip_view_clip_deleted, self, 0); +#line 49 "TrackView.vala" + g_signal_connect_object (view, "move-begin", (GCallback) _track_view_concrete_on_move_begin_clip_view_move_begin, self, 0); +#line 50 "TrackView.vala" + g_signal_connect_object (view, "trim-begin", (GCallback) _track_view_concrete_on_trim_begin_clip_view_trim_begin, self, 0); +#line 52 "TrackView.vala" + gtk_fixed_put (GTK_FIXED (self), GTK_WIDGET (view), model_time_system_time_to_xpos (self->priv->timeline->provider, model_clip_get_start (clip)), TIME_LINE_BORDER); +#line 53 "TrackView.vala" + gtk_widget_show (GTK_WIDGET (view)); +#line 55 "TrackView.vala" + g_signal_emit_by_name (self->priv->timeline, "track-changed"); +#line 56 "TrackView.vala" + g_signal_emit_by_name (TRACK_VIEW (self), "clip-view-added", view); +#line 57 "TrackView.vala" + if (select) { +#line 58 "TrackView.vala" + g_signal_emit_by_name (view, "selection-request", view, FALSE); +#line 464 "TrackView.c" + } + _g_object_unref0 (view); +} + + +#line 64 "TrackView.vala" +static void track_view_concrete_real_move_to_top (TrackView* base, ClipView* clip_view) { +#line 472 "TrackView.c" + TrackViewConcrete * self; + self = TRACK_VIEW_CONCRETE (base); +#line 64 "TrackView.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 70 "TrackView.vala" + gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (clip_view)); +#line 71 "TrackView.vala" + gtk_fixed_put (GTK_FIXED (self), GTK_WIDGET (clip_view), model_time_system_time_to_xpos (self->priv->timeline->provider, model_clip_get_start (clip_view->clip)), TIME_LINE_BORDER); +#line 74 "TrackView.vala" + gtk_widget_show (GTK_WIDGET (clip_view)); +#line 483 "TrackView.c" +} + + +#line 77 "TrackView.vala" +static void track_view_concrete_on_trim_begin (TrackViewConcrete* self, ClipView* clip_view) { +#line 77 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 77 "TrackView.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 78 "TrackView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_trim_begin"); +#line 79 "TrackView.vala" + track_view_move_to_top (TRACK_VIEW (self), clip_view); +#line 497 "TrackView.c" +} + + +#line 82 "TrackView.vala" +static void track_view_concrete_on_move_begin (TrackViewConcrete* self, ClipView* clip_view, gboolean do_copy) { +#line 82 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 82 "TrackView.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 83 "TrackView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_move_begin"); +#line 84 "TrackView.vala" + track_view_move_to_top (TRACK_VIEW (self), clip_view); +#line 511 "TrackView.c" +} + + +#line 87 "TrackView.vala" +static void track_view_concrete_set_clip_pos (TrackViewConcrete* self, ClipView* view) { +#line 87 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 87 "TrackView.vala" + g_return_if_fail (IS_CLIP_VIEW (view)); +#line 88 "TrackView.vala" + gtk_fixed_move (GTK_FIXED (self), GTK_WIDGET (view), model_time_system_time_to_xpos (self->priv->timeline->provider, model_clip_get_start (view->clip)), TIME_LINE_BORDER); +#line 89 "TrackView.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 525 "TrackView.c" +} + + +#line 92 "TrackView.vala" +static void track_view_concrete_real_resize (TrackView* base) { +#line 531 "TrackView.c" + TrackViewConcrete * self; + self = TRACK_VIEW_CONCRETE (base); + { + GList* w_collection; + GList* w_it; +#line 93 "TrackView.vala" + w_collection = gtk_container_get_children (GTK_CONTAINER (self)); +#line 539 "TrackView.c" + for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { + GtkWidget* w; +#line 93 "TrackView.vala" + w = _g_object_ref0 ((GtkWidget*) w_it->data); +#line 544 "TrackView.c" + { + GtkWidget* _tmp0_; + ClipView* view; +#line 94 "TrackView.vala" + view = _g_object_ref0 ((_tmp0_ = w, IS_CLIP_VIEW (_tmp0_) ? ((ClipView*) _tmp0_) : NULL)); +#line 95 "TrackView.vala" + if (view != NULL) { +#line 96 "TrackView.vala" + clip_view_on_clip_moved (view, view->clip); +#line 554 "TrackView.c" + } + _g_object_unref0 (w); + _g_object_unref0 (view); + } + } +#line 93 "TrackView.vala" + _g_list_free0 (w_collection); +#line 562 "TrackView.c" + } +} + + +#line 101 "TrackView.vala" +static void track_view_concrete_on_clip_removed (TrackViewConcrete* self, ModelClip* clip) { +#line 101 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 101 "TrackView.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 102 "TrackView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_removed"); +#line 575 "TrackView.c" + { + GList* w_collection; + GList* w_it; +#line 103 "TrackView.vala" + w_collection = gtk_container_get_children (GTK_CONTAINER (self)); +#line 581 "TrackView.c" + for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { + GtkWidget* w; +#line 103 "TrackView.vala" + w = _g_object_ref0 ((GtkWidget*) w_it->data); +#line 586 "TrackView.c" + { + GtkWidget* _tmp0_; + ClipView* view; +#line 104 "TrackView.vala" + view = _g_object_ref0 ((_tmp0_ = w, IS_CLIP_VIEW (_tmp0_) ? ((ClipView*) _tmp0_) : NULL)); +#line 105 "TrackView.vala" + if (view->clip == clip) { +#line 594 "TrackView.c" + guint _tmp1_; +#line 106 "TrackView.vala" + g_signal_parse_name ("clip-moved", TYPE_CLIP_VIEW, &_tmp1_, NULL, FALSE); +#line 106 "TrackView.vala" + g_signal_handlers_disconnect_matched (view, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _track_view_concrete_on_clip_moved_clip_view_clip_moved, self); +#line 107 "TrackView.vala" + gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (view)); +#line 108 "TrackView.vala" + g_signal_emit_by_name (self->priv->timeline, "track-changed"); +#line 604 "TrackView.c" + _g_object_unref0 (w); + _g_object_unref0 (view); + _g_list_free0 (w_collection); +#line 109 "TrackView.vala" + return; +#line 610 "TrackView.c" + } + _g_object_unref0 (w); + _g_object_unref0 (view); + } + } +#line 103 "TrackView.vala" + _g_list_free0 (w_collection); +#line 618 "TrackView.c" + } +} + + +#line 124 "TrackView.vala" +static gboolean track_view_concrete_real_button_press_event (GtkWidget* base, GdkEventButton* e) { +#line 625 "TrackView.c" + TrackViewConcrete * self; + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + gboolean _tmp1_ = FALSE; + gboolean _tmp2_ = FALSE; + self = TRACK_VIEW_CONCRETE (base); +#line 125 "TrackView.vala" + if ((*e).type != GDK_BUTTON_PRESS) { +#line 126 "TrackView.vala" + _tmp1_ = (*e).type != GDK_2BUTTON_PRESS; +#line 636 "TrackView.c" + } else { +#line 125 "TrackView.vala" + _tmp1_ = FALSE; +#line 640 "TrackView.c" + } +#line 125 "TrackView.vala" + if (_tmp1_) { +#line 127 "TrackView.vala" + _tmp0_ = (*e).type != GDK_3BUTTON_PRESS; +#line 646 "TrackView.c" + } else { +#line 125 "TrackView.vala" + _tmp0_ = FALSE; +#line 650 "TrackView.c" + } +#line 125 "TrackView.vala" + if (_tmp0_) { +#line 654 "TrackView.c" + result = FALSE; +#line 128 "TrackView.vala" + return result; +#line 658 "TrackView.c" + } +#line 130 "TrackView.vala" + if ((*e).button == 1) { +#line 130 "TrackView.vala" + _tmp2_ = TRUE; +#line 664 "TrackView.c" + } else { +#line 131 "TrackView.vala" + _tmp2_ = (*e).button == 3; +#line 668 "TrackView.c" + } +#line 130 "TrackView.vala" + if (_tmp2_) { +#line 150 "TrackView.vala" + time_line_deselect_all_clips (self->priv->timeline); +#line 674 "TrackView.c" + } + result = FALSE; +#line 155 "TrackView.vala" + return result; +#line 679 "TrackView.c" +} + + +#line 169 "TrackView.vala" +static void track_view_concrete_clear_drag (TrackViewConcrete* self) { +#line 169 "TrackView.vala" + g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self)); +#line 170 "TrackView.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL); +#line 171 "TrackView.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 691 "TrackView.c" +} + + +#line 174 "TrackView.vala" +static ModelTrack* track_view_concrete_real_get_track (TrackView* base) { +#line 697 "TrackView.c" + TrackViewConcrete * self; + ModelTrack* result = NULL; + self = TRACK_VIEW_CONCRETE (base); + result = _g_object_ref0 (self->priv->track); +#line 175 "TrackView.vala" + return result; +#line 704 "TrackView.c" +} + + +#line 178 "TrackView.vala" +static gint track_view_concrete_real_get_track_height (TrackView* base) { +#line 710 "TrackView.c" + TrackViewConcrete * self; + gint result = 0; + self = TRACK_VIEW_CONCRETE (base); + result = TRACK_VIEW_CONCRETE_TrackHeight; +#line 179 "TrackView.vala" + return result; +#line 717 "TrackView.c" +} + + +#line 182 "TrackView.vala" +static GtkWidget* track_view_concrete_real_find_child (TrackView* base, double x, double y) { +#line 723 "TrackView.c" + TrackViewConcrete * self; + GtkWidget* result = NULL; + self = TRACK_VIEW_CONCRETE (base); + { + GList* w_collection; + GList* w_it; +#line 183 "TrackView.vala" + w_collection = gtk_container_get_children (GTK_CONTAINER (self)); +#line 732 "TrackView.c" + for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { + GtkWidget* w; +#line 183 "TrackView.vala" + w = _g_object_ref0 ((GtkWidget*) w_it->data); +#line 737 "TrackView.c" + { + gboolean _tmp0_ = FALSE; +#line 184 "TrackView.vala" + if (w->allocation.x <= x) { +#line 184 "TrackView.vala" + _tmp0_ = x < (w->allocation.x + w->allocation.width); +#line 744 "TrackView.c" + } else { +#line 184 "TrackView.vala" + _tmp0_ = FALSE; +#line 748 "TrackView.c" + } +#line 184 "TrackView.vala" + if (_tmp0_) { +#line 752 "TrackView.c" + result = w; + _g_list_free0 (w_collection); +#line 185 "TrackView.vala" + return result; +#line 757 "TrackView.c" + } + _g_object_unref0 (w); + } + } +#line 183 "TrackView.vala" + _g_list_free0 (w_collection); +#line 764 "TrackView.c" + } + result = NULL; +#line 188 "TrackView.vala" + return result; +#line 769 "TrackView.c" +} + + +#line 191 "TrackView.vala" +static void track_view_concrete_real_select_all (TrackView* base) { +#line 775 "TrackView.c" + TrackViewConcrete * self; + self = TRACK_VIEW_CONCRETE (base); + { + GList* child_collection; + GList* child_it; +#line 192 "TrackView.vala" + child_collection = gtk_container_get_children (GTK_CONTAINER (self)); +#line 783 "TrackView.c" + for (child_it = child_collection; child_it != NULL; child_it = child_it->next) { + GtkWidget* child; +#line 192 "TrackView.vala" + child = _g_object_ref0 ((GtkWidget*) child_it->data); +#line 788 "TrackView.c" + { + GtkWidget* _tmp0_; + ClipView* clip_view; +#line 193 "TrackView.vala" + clip_view = _g_object_ref0 ((_tmp0_ = child, IS_CLIP_VIEW (_tmp0_) ? ((ClipView*) _tmp0_) : NULL)); +#line 194 "TrackView.vala" + if (clip_view != NULL) { +#line 195 "TrackView.vala" + clip_view_select (clip_view); +#line 798 "TrackView.c" + } + _g_object_unref0 (child); + _g_object_unref0 (clip_view); + } + } +#line 192 "TrackView.vala" + _g_list_free0 (child_collection); +#line 806 "TrackView.c" + } +} + + +static void track_view_concrete_class_init (TrackViewConcreteClass * klass) { + track_view_concrete_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (TrackViewConcretePrivate)); + GTK_WIDGET_CLASS (klass)->size_request = track_view_concrete_real_size_request; + GTK_WIDGET_CLASS (klass)->button_press_event = track_view_concrete_real_button_press_event; + G_OBJECT_CLASS (klass)->finalize = track_view_concrete_finalize; +} + + +static void track_view_concrete_track_view_interface_init (TrackViewIface * iface) { + track_view_concrete_track_view_parent_iface = g_type_interface_peek_parent (iface); + iface->move_to_top = track_view_concrete_real_move_to_top; + iface->resize = track_view_concrete_real_resize; + iface->get_track = track_view_concrete_real_get_track; + iface->get_track_height = track_view_concrete_real_get_track_height; + iface->find_child = track_view_concrete_real_find_child; + iface->select_all = track_view_concrete_real_select_all; +} + + +static void track_view_concrete_instance_init (TrackViewConcrete * self) { + self->priv = TRACK_VIEW_CONCRETE_GET_PRIVATE (self); +} + + +static void track_view_concrete_finalize (GObject* obj) { + TrackViewConcrete * self; + self = TRACK_VIEW_CONCRETE (obj); + _g_object_unref0 (self->priv->track); + _g_object_unref0 (self->priv->timeline); + _g_object_unref0 (self->priv->transport_delegate); + G_OBJECT_CLASS (track_view_concrete_parent_class)->finalize (obj); +} + + +GType track_view_concrete_get_type (void) { + static volatile gsize track_view_concrete_type_id__volatile = 0; + if (g_once_init_enter (&track_view_concrete_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (TrackViewConcreteClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) track_view_concrete_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackViewConcrete), 0, (GInstanceInitFunc) track_view_concrete_instance_init, NULL }; + static const GInterfaceInfo track_view_info = { (GInterfaceInitFunc) track_view_concrete_track_view_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType track_view_concrete_type_id; + track_view_concrete_type_id = g_type_register_static (GTK_TYPE_FIXED, "TrackViewConcrete", &g_define_type_info, 0); + g_type_add_interface_static (track_view_concrete_type_id, TYPE_TRACK_VIEW, &track_view_info); + g_once_init_leave (&track_view_concrete_type_id__volatile, track_view_concrete_type_id); + } + return track_view_concrete_type_id__volatile; +} + + + + diff --git a/src/marina/marina/TrackView.o b/src/marina/marina/TrackView.o new file mode 100644 index 0000000000000000000000000000000000000000..8b41084153e65494f1e9503d0126605464ed6f2b GIT binary patch literal 74412 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 s--C7h1;~E?)$*;#e@6EEug>o?x0s&s+bcY)?D +#include + + +#define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ()) +#define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate)) +#define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE)) +#define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface)) + +typedef struct _TransportDelegate TransportDelegate; +typedef struct _TransportDelegateIface TransportDelegateIface; + +struct _TransportDelegateIface { + GTypeInterface parent_iface; + gboolean (*is_playing) (TransportDelegate* self); + gboolean (*is_recording) (TransportDelegate* self); + gboolean (*is_stopped) (TransportDelegate* self); +}; + + + +GType transport_delegate_get_type (void); +gboolean transport_delegate_is_playing (TransportDelegate* self); +gboolean transport_delegate_is_recording (TransportDelegate* self); +gboolean transport_delegate_is_stopped (TransportDelegate* self); + + + +#line 8 "TransportDelegate.vala" +gboolean transport_delegate_is_playing (TransportDelegate* self) { +#line 8 "TransportDelegate.vala" + return TRANSPORT_DELEGATE_GET_INTERFACE (self)->is_playing (self); +#line 43 "TransportDelegate.c" +} + + +#line 9 "TransportDelegate.vala" +gboolean transport_delegate_is_recording (TransportDelegate* self) { +#line 9 "TransportDelegate.vala" + return TRANSPORT_DELEGATE_GET_INTERFACE (self)->is_recording (self); +#line 51 "TransportDelegate.c" +} + + +#line 10 "TransportDelegate.vala" +gboolean transport_delegate_is_stopped (TransportDelegate* self) { +#line 10 "TransportDelegate.vala" + return TRANSPORT_DELEGATE_GET_INTERFACE (self)->is_stopped (self); +#line 59 "TransportDelegate.c" +} + + +static void transport_delegate_base_init (TransportDelegateIface * iface) { + static gboolean initialized = FALSE; + if (!initialized) { + initialized = TRUE; + } +} + + +GType transport_delegate_get_type (void) { + static volatile gsize transport_delegate_type_id__volatile = 0; + if (g_once_init_enter (&transport_delegate_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (TransportDelegateIface), (GBaseInitFunc) transport_delegate_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; + GType transport_delegate_type_id; + transport_delegate_type_id = g_type_register_static (G_TYPE_INTERFACE, "TransportDelegate", &g_define_type_info, 0); + g_type_interface_add_prerequisite (transport_delegate_type_id, G_TYPE_OBJECT); + g_once_init_leave (&transport_delegate_type_id__volatile, transport_delegate_type_id); + } + return transport_delegate_type_id__volatile; +} + + + + diff --git a/src/marina/marina/TransportDelegate.o b/src/marina/marina/TransportDelegate.o new file mode 100644 index 0000000000000000000000000000000000000000..e40ba4086c29b736df177a817d2dfcc9ab749bbc GIT binary patch literal 9180 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 +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; +typedef struct _ModelUndoManagerPrivate ModelUndoManagerPrivate; + +#define MODEL_TYPE_COMMAND (model_command_get_type ()) +#define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand)) +#define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass)) +#define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND)) +#define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND)) +#define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass)) + +typedef struct _ModelCommand ModelCommand; +typedef struct _ModelCommandClass ModelCommandClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define MODEL_TYPE_TRANSACTION_COMMAND (model_transaction_command_get_type ()) +#define MODEL_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommand)) +#define MODEL_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass)) +#define MODEL_IS_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRANSACTION_COMMAND)) +#define MODEL_IS_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRANSACTION_COMMAND)) +#define MODEL_TRANSACTION_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass)) + +typedef struct _ModelTransactionCommand ModelTransactionCommand; +typedef struct _ModelTransactionCommandClass ModelTransactionCommandClass; +#define _model_command_unref0(var) ((var == NULL) ? NULL : (var = (model_command_unref (var), NULL))) +typedef struct _ModelParamSpecUndoManager ModelParamSpecUndoManager; + +struct _ModelUndoManager { + GTypeInstance parent_instance; + volatile int ref_count; + ModelUndoManagerPrivate * priv; +}; + +struct _ModelUndoManagerClass { + GTypeClass parent_class; + void (*finalize) (ModelUndoManager *self); +}; + +struct _ModelUndoManagerPrivate { + gint saved_index; + gboolean _in_undo; + GeeArrayList* command_list; +}; + +struct _ModelParamSpecUndoManager { + GParamSpec parent_instance; +}; + + +static gpointer model_undo_manager_parent_class = NULL; + +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +gpointer model_command_ref (gpointer instance); +void model_command_unref (gpointer instance); +GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_command (GValue* value, gpointer v_object); +void model_value_take_command (GValue* value, gpointer v_object); +gpointer model_value_get_command (const GValue* value); +GType model_command_get_type (void); +#define MODEL_UNDO_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerPrivate)) +enum { + MODEL_UNDO_MANAGER_DUMMY_PROPERTY +}; +ModelUndoManager* model_undo_manager_new (void); +ModelUndoManager* model_undo_manager_construct (GType object_type); +void model_undo_manager_reset (ModelUndoManager* self); +void model_undo_manager_mark_clean (ModelUndoManager* self); +ModelTransactionCommand* model_transaction_command_new (gboolean open, const char* transaction_description); +ModelTransactionCommand* model_transaction_command_construct (GType object_type, gboolean open, const char* transaction_description); +GType model_transaction_command_get_type (void); +void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description); +void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description); +gboolean model_undo_manager_get_in_undo (ModelUndoManager* self); +void model_command_apply (ModelCommand* self); +static ModelCommand* model_undo_manager_get_current_command (ModelUndoManager* self); +gboolean model_command_merge (ModelCommand* self, ModelCommand* command); +gboolean model_undo_manager_get_can_undo (ModelUndoManager* self); +void model_undo_manager_do_command (ModelUndoManager* self, ModelCommand* the_command); +static void model_undo_manager_set_in_undo (ModelUndoManager* self, gboolean value); +gboolean model_transaction_command_in_transaction (ModelTransactionCommand* self); +void model_command_undo (ModelCommand* self); +gboolean model_undo_manager_get_is_dirty (ModelUndoManager* self); +void model_undo_manager_undo (ModelUndoManager* self); +char* model_command_description (ModelCommand* self); +char* model_undo_manager_get_undo_title (ModelUndoManager* self); +static void model_undo_manager_finalize (ModelUndoManager* obj); + + + +#line 19 "UndoManager.vala" +ModelUndoManager* model_undo_manager_construct (GType object_type) { +#line 123 "UndoManager.c" + ModelUndoManager* self; + self = (ModelUndoManager*) g_type_create_instance (object_type); + return self; +} + + +#line 19 "UndoManager.vala" +ModelUndoManager* model_undo_manager_new (void) { +#line 19 "UndoManager.vala" + return model_undo_manager_construct (MODEL_TYPE_UNDO_MANAGER); +#line 134 "UndoManager.c" +} + + +#line 22 "UndoManager.vala" +void model_undo_manager_reset (ModelUndoManager* self) { +#line 22 "UndoManager.vala" + g_return_if_fail (MODEL_IS_UNDO_MANAGER (self)); +#line 23 "UndoManager.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->priv->command_list)); +#line 24 "UndoManager.vala" + self->priv->saved_index = 0; +#line 25 "UndoManager.vala" + g_signal_emit_by_name (self, "undo-changed", FALSE); +#line 148 "UndoManager.c" +} + + +#line 28 "UndoManager.vala" +void model_undo_manager_mark_clean (ModelUndoManager* self) { +#line 28 "UndoManager.vala" + g_return_if_fail (MODEL_IS_UNDO_MANAGER (self)); +#line 29 "UndoManager.vala" + self->priv->saved_index = gee_collection_get_size (GEE_COLLECTION (self->priv->command_list)); +#line 30 "UndoManager.vala" + g_signal_emit_by_name (self, "dirty-changed", FALSE); +#line 160 "UndoManager.c" +} + + +#line 33 "UndoManager.vala" +void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description) { +#line 166 "UndoManager.c" + ModelTransactionCommand* command; +#line 33 "UndoManager.vala" + g_return_if_fail (MODEL_IS_UNDO_MANAGER (self)); +#line 33 "UndoManager.vala" + g_return_if_fail (description != NULL); +#line 34 "UndoManager.vala" + command = model_transaction_command_new (FALSE, description); +#line 35 "UndoManager.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->command_list), MODEL_COMMAND (command)); +#line 36 "UndoManager.vala" + g_signal_emit_by_name (self, "undo-changed", TRUE); +#line 178 "UndoManager.c" + _model_command_unref0 (command); +} + + +#line 39 "UndoManager.vala" +void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description) { +#line 185 "UndoManager.c" + ModelTransactionCommand* command; +#line 39 "UndoManager.vala" + g_return_if_fail (MODEL_IS_UNDO_MANAGER (self)); +#line 39 "UndoManager.vala" + g_return_if_fail (description != NULL); +#line 40 "UndoManager.vala" + command = model_transaction_command_new (TRUE, description); +#line 41 "UndoManager.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->command_list), MODEL_COMMAND (command)); +#line 42 "UndoManager.vala" + g_signal_emit_by_name (self, "undo-changed", TRUE); +#line 197 "UndoManager.c" + _model_command_unref0 (command); +} + + +#line 45 "UndoManager.vala" +void model_undo_manager_do_command (ModelUndoManager* self, ModelCommand* the_command) { +#line 45 "UndoManager.vala" + g_return_if_fail (MODEL_IS_UNDO_MANAGER (self)); +#line 45 "UndoManager.vala" + g_return_if_fail (MODEL_IS_COMMAND (the_command)); +#line 46 "UndoManager.vala" + if (!model_undo_manager_get_in_undo (self)) { +#line 210 "UndoManager.c" + ModelCommand* current_command; + gboolean _tmp0_ = FALSE; +#line 47 "UndoManager.vala" + model_command_apply (the_command); +#line 48 "UndoManager.vala" + current_command = model_undo_manager_get_current_command (self); +#line 49 "UndoManager.vala" + if (current_command == NULL) { +#line 49 "UndoManager.vala" + _tmp0_ = TRUE; +#line 221 "UndoManager.c" + } else { +#line 49 "UndoManager.vala" + _tmp0_ = !model_command_merge (current_command, the_command); +#line 225 "UndoManager.c" + } +#line 49 "UndoManager.vala" + if (_tmp0_) { +#line 50 "UndoManager.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->command_list), the_command); +#line 231 "UndoManager.c" + } +#line 52 "UndoManager.vala" + g_signal_emit_by_name (self, "dirty-changed", TRUE); +#line 53 "UndoManager.vala" + g_signal_emit_by_name (self, "undo-changed", model_undo_manager_get_can_undo (self)); +#line 237 "UndoManager.c" + _model_command_unref0 (current_command); + } +} + + +#line 57 "UndoManager.vala" +static ModelCommand* model_undo_manager_get_current_command (ModelUndoManager* self) { +#line 245 "UndoManager.c" + ModelCommand* result = NULL; + gint index; +#line 57 "UndoManager.vala" + g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), NULL); +#line 58 "UndoManager.vala" + index = gee_collection_get_size (GEE_COLLECTION (self->priv->command_list)) - 1; +#line 59 "UndoManager.vala" + if (index >= 0) { +#line 254 "UndoManager.c" + result = (ModelCommand*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->command_list), index); +#line 60 "UndoManager.vala" + return result; +#line 258 "UndoManager.c" + } else { + result = NULL; +#line 62 "UndoManager.vala" + return result; +#line 263 "UndoManager.c" + } +} + + +static gpointer _model_command_ref0 (gpointer self) { + return self ? model_command_ref (self) : NULL; +} + + +#line 66 "UndoManager.vala" +void model_undo_manager_undo (ModelUndoManager* self) { +#line 275 "UndoManager.c" + gint in_transaction; +#line 66 "UndoManager.vala" + g_return_if_fail (MODEL_IS_UNDO_MANAGER (self)); +#line 67 "UndoManager.vala" + g_assert (model_undo_manager_get_in_undo (self) == FALSE); +#line 68 "UndoManager.vala" + model_undo_manager_set_in_undo (self, TRUE); +#line 69 "UndoManager.vala" + in_transaction = 0; +#line 285 "UndoManager.c" + { + gboolean _tmp0_; +#line 70 "UndoManager.vala" + _tmp0_ = TRUE; +#line 70 "UndoManager.vala" + while (TRUE) { +#line 292 "UndoManager.c" + ModelCommand* the_command; +#line 70 "UndoManager.vala" + if (!_tmp0_) { +#line 87 "UndoManager.vala" + if (!(in_transaction > 0)) { +#line 87 "UndoManager.vala" + break; +#line 300 "UndoManager.c" + } + } +#line 70 "UndoManager.vala" + _tmp0_ = FALSE; +#line 71 "UndoManager.vala" + the_command = model_undo_manager_get_current_command (self); +#line 72 "UndoManager.vala" + if (the_command != NULL) { +#line 309 "UndoManager.c" + ModelCommand* _tmp1_; + ModelTransactionCommand* transaction_command; +#line 73 "UndoManager.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->command_list), the_command); +#line 74 "UndoManager.vala" + transaction_command = _model_command_ref0 ((_tmp1_ = the_command, MODEL_IS_TRANSACTION_COMMAND (_tmp1_) ? ((ModelTransactionCommand*) _tmp1_) : NULL)); +#line 75 "UndoManager.vala" + if (transaction_command != NULL) { +#line 76 "UndoManager.vala" + if (model_transaction_command_in_transaction (transaction_command)) { +#line 77 "UndoManager.vala" + in_transaction++; +#line 322 "UndoManager.c" + } else { +#line 79 "UndoManager.vala" + in_transaction--; +#line 326 "UndoManager.c" + } + } else { +#line 82 "UndoManager.vala" + model_command_undo (the_command); +#line 331 "UndoManager.c" + } + _model_command_unref0 (transaction_command); + } else { + _model_command_unref0 (the_command); +#line 85 "UndoManager.vala" + break; +#line 338 "UndoManager.c" + } + _model_command_unref0 (the_command); + } + } +#line 88 "UndoManager.vala" + g_signal_emit_by_name (self, "dirty-changed", model_undo_manager_get_is_dirty (self)); +#line 89 "UndoManager.vala" + g_signal_emit_by_name (self, "undo-changed", model_undo_manager_get_can_undo (self)); +#line 90 "UndoManager.vala" + model_undo_manager_set_in_undo (self, FALSE); +#line 349 "UndoManager.c" +} + + +#line 93 "UndoManager.vala" +char* model_undo_manager_get_undo_title (ModelUndoManager* self) { +#line 355 "UndoManager.c" + char* result = NULL; + ModelCommand* the_command; +#line 93 "UndoManager.vala" + g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), NULL); +#line 94 "UndoManager.vala" + the_command = model_undo_manager_get_current_command (self); +#line 95 "UndoManager.vala" + if (the_command != NULL) { +#line 364 "UndoManager.c" + result = model_command_description (the_command); + _model_command_unref0 (the_command); +#line 96 "UndoManager.vala" + return result; +#line 369 "UndoManager.c" + } else { + result = g_strdup (""); + _model_command_unref0 (the_command); +#line 98 "UndoManager.vala" + return result; +#line 375 "UndoManager.c" + } + _model_command_unref0 (the_command); +} + + +gboolean model_undo_manager_get_is_dirty (ModelUndoManager* self) { + gboolean result; + g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), FALSE); + result = self->priv->saved_index != gee_collection_get_size (GEE_COLLECTION (self->priv->command_list)); +#line 12 "UndoManager.vala" + return result; +#line 387 "UndoManager.c" +} + + +gboolean model_undo_manager_get_can_undo (ModelUndoManager* self) { + gboolean result; + g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), FALSE); + result = gee_collection_get_size (GEE_COLLECTION (self->priv->command_list)) > 0; +#line 13 "UndoManager.vala" + return result; +#line 397 "UndoManager.c" +} + + +gboolean model_undo_manager_get_in_undo (ModelUndoManager* self) { + gboolean result; + g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), FALSE); + result = self->priv->_in_undo; +#line 14 "UndoManager.vala" + return result; +#line 407 "UndoManager.c" +} + + +static void model_undo_manager_set_in_undo (ModelUndoManager* self, gboolean value) { + g_return_if_fail (MODEL_IS_UNDO_MANAGER (self)); +#line 14 "UndoManager.vala" + self->priv->_in_undo = value; +#line 415 "UndoManager.c" +} + + +static void model_value_undo_manager_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_undo_manager_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_undo_manager_unref (value->data[0].v_pointer); + } +} + + +static void model_value_undo_manager_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_undo_manager_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_undo_manager_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_undo_manager_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelUndoManager* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_undo_manager_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_undo_manager_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelUndoManager** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_undo_manager_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecUndoManager* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_UNDO_MANAGER), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_undo_manager (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_UNDO_MANAGER), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_undo_manager (GValue* value, gpointer v_object) { + ModelUndoManager* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_UNDO_MANAGER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_UNDO_MANAGER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_undo_manager_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_undo_manager_unref (old); + } +} + + +void model_value_take_undo_manager (GValue* value, gpointer v_object) { + ModelUndoManager* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_UNDO_MANAGER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_UNDO_MANAGER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_undo_manager_unref (old); + } +} + + +static void model_undo_manager_class_init (ModelUndoManagerClass * klass) { + model_undo_manager_parent_class = g_type_class_peek_parent (klass); + MODEL_UNDO_MANAGER_CLASS (klass)->finalize = model_undo_manager_finalize; + g_type_class_add_private (klass, sizeof (ModelUndoManagerPrivate)); + g_signal_new ("undo_changed", MODEL_TYPE_UNDO_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + g_signal_new ("dirty_changed", MODEL_TYPE_UNDO_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); +} + + +static void model_undo_manager_instance_init (ModelUndoManager * self) { + self->priv = MODEL_UNDO_MANAGER_GET_PRIVATE (self); + self->priv->saved_index = 0; + self->priv->_in_undo = FALSE; + self->priv->command_list = gee_array_list_new (MODEL_TYPE_COMMAND, (GBoxedCopyFunc) model_command_ref, model_command_unref, NULL); + self->ref_count = 1; +} + + +static void model_undo_manager_finalize (ModelUndoManager* obj) { + ModelUndoManager * self; + self = MODEL_UNDO_MANAGER (obj); + _g_object_unref0 (self->priv->command_list); +} + + +GType model_undo_manager_get_type (void) { + static volatile gsize model_undo_manager_type_id__volatile = 0; + if (g_once_init_enter (&model_undo_manager_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_undo_manager_init, model_value_undo_manager_free_value, model_value_undo_manager_copy_value, model_value_undo_manager_peek_pointer, "p", model_value_undo_manager_collect_value, "p", model_value_undo_manager_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelUndoManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_undo_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelUndoManager), 0, (GInstanceInitFunc) model_undo_manager_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_undo_manager_type_id; + model_undo_manager_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelUndoManager", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_undo_manager_type_id__volatile, model_undo_manager_type_id); + } + return model_undo_manager_type_id__volatile; +} + + +gpointer model_undo_manager_ref (gpointer instance) { + ModelUndoManager* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_undo_manager_unref (gpointer instance) { + ModelUndoManager* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_UNDO_MANAGER_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + + + diff --git a/src/marina/marina/UndoManager.o b/src/marina/marina/UndoManager.o new file mode 100644 index 0000000000000000000000000000000000000000..f64dd91cbd0b9ad2cd4e123f99455776f627d9cc GIT binary patch literal 40084 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 a(%e6!ezMQdX++R??4msQa4}8d{{H|g5SRe~ literal 0 HcmV?d00001 diff --git a/src/marina/marina/clip.c b/src/marina/marina/clip.c new file mode 100644 index 0000000..155620d --- /dev/null +++ b/src/marina/marina/clip.c @@ -0,0 +1,2749 @@ +/* clip.c generated by valac, the Vala compiler + * generated from clip.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define MODEL_TYPE_GAP (model_gap_get_type ()) +#define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap)) +#define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass)) +#define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP)) +#define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP)) +#define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass)) + +typedef struct _ModelGap ModelGap; +typedef struct _ModelGapClass ModelGapClass; +typedef struct _ModelGapPrivate ModelGapPrivate; +typedef struct _ModelParamSpecGap ModelParamSpecGap; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _gst_caps_unref0(var) ((var == NULL) ? NULL : (var = (gst_caps_unref (var), NULL))) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +#define _gst_structure_free0(var) ((var == NULL) ? NULL : (var = (gst_structure_free (var), NULL))) + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define MODEL_TYPE_FETCHER (model_fetcher_get_type ()) +#define MODEL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER, ModelFetcher)) +#define MODEL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER, ModelFetcherClass)) +#define MODEL_IS_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER)) +#define MODEL_IS_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER)) +#define MODEL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER, ModelFetcherClass)) + +typedef struct _ModelFetcher ModelFetcher; +typedef struct _ModelFetcherClass ModelFetcherClass; +typedef struct _ModelFetcherPrivate ModelFetcherPrivate; +#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +#define MODEL_TYPE_CLIP_FETCHER (model_clip_fetcher_get_type ()) +#define MODEL_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcher)) +#define MODEL_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) +#define MODEL_IS_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_IS_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_CLIP_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) + +typedef struct _ModelClipFetcher ModelClipFetcher; +typedef struct _ModelClipFetcherClass ModelClipFetcherClass; +typedef struct _ModelClipFetcherPrivate ModelClipFetcherPrivate; + +#define MODEL_TYPE_THUMBNAIL_FETCHER (model_thumbnail_fetcher_get_type ()) +#define MODEL_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcher)) +#define MODEL_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass)) +#define MODEL_IS_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_THUMBNAIL_FETCHER)) +#define MODEL_IS_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_THUMBNAIL_FETCHER)) +#define MODEL_THUMBNAIL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass)) + +typedef struct _ModelThumbnailFetcher ModelThumbnailFetcher; +typedef struct _ModelThumbnailFetcherClass ModelThumbnailFetcherClass; +typedef struct _ModelThumbnailFetcherPrivate ModelThumbnailFetcherPrivate; + +#define TYPE_THUMBNAIL_SINK (thumbnail_sink_get_type ()) +#define THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSink)) +#define THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass)) +#define IS_THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_SINK)) +#define IS_THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_SINK)) +#define THUMBNAIL_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass)) + +typedef struct _ThumbnailSink ThumbnailSink; +typedef struct _ThumbnailSinkClass ThumbnailSinkClass; + +#define TYPE_SINGLE_DECODE_BIN (single_decode_bin_get_type ()) +#define SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBin)) +#define SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) +#define IS_SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SINGLE_DECODE_BIN)) +#define IS_SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SINGLE_DECODE_BIN)) +#define SINGLE_DECODE_BIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) + +typedef struct _SingleDecodeBin SingleDecodeBin; +typedef struct _SingleDecodeBinClass SingleDecodeBinClass; + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_FETCHER_COMPLETION (model_fetcher_completion_get_type ()) +#define MODEL_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletion)) +#define MODEL_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass)) +#define MODEL_IS_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER_COMPLETION)) +#define MODEL_IS_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER_COMPLETION)) +#define MODEL_FETCHER_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass)) + +typedef struct _ModelFetcherCompletion ModelFetcherCompletion; +typedef struct _ModelFetcherCompletionClass ModelFetcherCompletionClass; +typedef struct _ModelFetcherCompletionPrivate ModelFetcherCompletionPrivate; +typedef struct _ModelParamSpecFetcherCompletion ModelParamSpecFetcherCompletion; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelGap { + GTypeInstance parent_instance; + volatile int ref_count; + ModelGapPrivate * priv; + gint64 start; + gint64 end; +}; + +struct _ModelGapClass { + GTypeClass parent_class; + void (*finalize) (ModelGap *self); +}; + +struct _ModelParamSpecGap { + GParamSpec parent_instance; +}; + +struct _ModelClipFile { + GObject parent_instance; + ModelClipFilePrivate * priv; + char* filename; + GstCaps* video_caps; + GstCaps* audio_caps; + GdkPixbuf* thumbnail; +}; + +struct _ModelClipFileClass { + GObjectClass parent_class; +}; + +struct _ModelClipFilePrivate { + gint64 _length; + gboolean online; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelFetcher { + GObject parent_instance; + ModelFetcherPrivate * priv; + GstElement* filesrc; + GstElement* decodebin; + GstPipeline* pipeline; + ModelClipFile* clipfile; + char* error_string; +}; + +struct _ModelFetcherClass { + GObjectClass parent_class; + void (*on_pad_added) (ModelFetcher* self, GstPad* pad); + void (*on_state_change) (ModelFetcher* self, GstBus* bus, GstMessage* message); +}; + +struct _ModelClipFetcher { + ModelFetcher parent_instance; + ModelClipFetcherPrivate * priv; +}; + +struct _ModelClipFetcherClass { + ModelFetcherClass parent_class; +}; + +struct _ModelThumbnailFetcher { + ModelFetcher parent_instance; + ModelThumbnailFetcherPrivate * priv; +}; + +struct _ModelThumbnailFetcherClass { + ModelFetcherClass parent_class; +}; + +struct _ModelThumbnailFetcherPrivate { + ThumbnailSink* thumbnail_sink; + GstElement* colorspace; + gint64 seek_position; + gboolean done_seek; + gboolean have_thumbnail; +}; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +struct _ModelClipPrivate { + gint64 _start; + gint64 _media_start; + gint64 _duration; + gboolean connected; +}; + +struct _ModelFetcherCompletion { + GTypeInstance parent_instance; + volatile int ref_count; + ModelFetcherCompletionPrivate * priv; +}; + +struct _ModelFetcherCompletionClass { + GTypeClass parent_class; + void (*finalize) (ModelFetcherCompletion *self); + void (*complete) (ModelFetcherCompletion* self, ModelFetcher* fetcher); +}; + +struct _ModelParamSpecFetcherCompletion { + GParamSpec parent_instance; +}; + + +static gpointer model_gap_parent_class = NULL; +static gpointer model_clip_file_parent_class = NULL; +static gpointer model_fetcher_parent_class = NULL; +static gpointer model_clip_fetcher_parent_class = NULL; +static gpointer model_thumbnail_fetcher_parent_class = NULL; +static gpointer model_clip_parent_class = NULL; +static gpointer model_fetcher_completion_parent_class = NULL; + +GType model_media_type_get_type (void); +gpointer model_gap_ref (gpointer instance); +void model_gap_unref (gpointer instance); +GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_gap (GValue* value, gpointer v_object); +void model_value_take_gap (GValue* value, gpointer v_object); +gpointer model_value_get_gap (const GValue* value); +GType model_gap_get_type (void); +enum { + MODEL_GAP_DUMMY_PROPERTY +}; +ModelGap* model_gap_new (gint64 start, gint64 end); +ModelGap* model_gap_construct (GType object_type, gint64 start, gint64 end); +gboolean model_gap_is_empty (ModelGap* self); +ModelGap* model_gap_intersect (ModelGap* self, ModelGap* g); +static void model_gap_finalize (ModelGap* obj); +GType model_clip_file_get_type (void); +#define MODEL_CLIP_FILE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_FILE, ModelClipFilePrivate)) +enum { + MODEL_CLIP_FILE_DUMMY_PROPERTY, + MODEL_CLIP_FILE_LENGTH +}; +void model_clip_file_set_length (ModelClipFile* self, gint64 value); +ModelClipFile* model_clip_file_new (const char* filename, gint64 length); +ModelClipFile* model_clip_file_construct (GType object_type, const char* filename, gint64 length); +gboolean model_clip_file_is_online (ModelClipFile* self); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +void model_clip_file_set_online (ModelClipFile* self, gboolean o); +void model_clip_file_set_thumbnail (ModelClipFile* self, GdkPixbuf* b); +gboolean model_clip_file_has_caps_structure (ModelClipFile* self, ModelMediaType m); +gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t); +static gboolean model_clip_file_get_caps_structure (ModelClipFile* self, ModelMediaType m, GstStructure** s); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +gboolean model_clip_file_get_frame_rate (ModelClipFile* self, Fraction* rate); +gboolean model_clip_file_get_dimensions (ModelClipFile* self, gint* w, gint* h); +gboolean model_clip_file_get_sample_rate (ModelClipFile* self, gint* rate); +gboolean model_clip_file_get_video_format (ModelClipFile* self, guint32* fourcc); +gboolean model_clip_file_get_num_channels (ModelClipFile* self, gint* channels); +gboolean model_clip_file_get_num_channels_string (ModelClipFile* self, char** s); +gint64 model_clip_file_get_length (ModelClipFile* self); +static void model_clip_file_finalize (GObject* obj); +static void model_clip_file_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); +static void model_clip_file_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); +GType model_fetcher_get_type (void); +enum { + MODEL_FETCHER_DUMMY_PROPERTY +}; +void model_fetcher_on_pad_added (ModelFetcher* self, GstPad* pad); +static void model_fetcher_real_on_pad_added (ModelFetcher* self, GstPad* pad); +void model_fetcher_on_state_change (ModelFetcher* self, GstBus* bus, GstMessage* message); +static void model_fetcher_real_on_state_change (ModelFetcher* self, GstBus* bus, GstMessage* message); +void model_fetcher_do_error (ModelFetcher* self, const char* _error_); +void model_fetcher_on_warning (ModelFetcher* self, GstBus* bus, GstMessage* message); +void model_fetcher_on_error (ModelFetcher* self, GstBus* bus, GstMessage* message); +ModelFetcher* model_fetcher_construct (GType object_type); +static void model_fetcher_finalize (GObject* obj); +GType model_clip_fetcher_get_type (void); +enum { + MODEL_CLIP_FETCHER_DUMMY_PROPERTY +}; +static void _model_clip_file_set_online_model_clip_fetcher_clipfile_online (ModelClipFetcher* _sender, gboolean online, gpointer self); +GstElement* make_element (const char* name, GError** error); +static void _model_fetcher_on_pad_added_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self); +static void _model_fetcher_on_state_change_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void _model_fetcher_on_error_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void _model_fetcher_on_warning_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +ModelClipFetcher* model_clip_fetcher_new (const char* filename, GError** error); +ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename, GError** error); +char* model_clip_fetcher_get_filename (ModelClipFetcher* self); +static void model_clip_fetcher_real_on_pad_added (ModelFetcher* base, GstPad* pad); +static GstPad* model_clip_fetcher_get_pad (ModelClipFetcher* self, const char* prefix); +static void model_clip_fetcher_real_on_state_change (ModelFetcher* base, GstBus* bus, GstMessage* message); +GType model_thumbnail_fetcher_get_type (void); +GType thumbnail_sink_get_type (void); +#define MODEL_THUMBNAIL_FETCHER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherPrivate)) +enum { + MODEL_THUMBNAIL_FETCHER_DUMMY_PROPERTY +}; +SingleDecodeBin* single_decode_bin_new (GstCaps* caps, const char* name, const char* uri, GError** error); +SingleDecodeBin* single_decode_bin_construct (GType object_type, GstCaps* caps, const char* name, const char* uri, GError** error); +GType single_decode_bin_get_type (void); +ThumbnailSink* thumbnail_sink_new (void); +ThumbnailSink* thumbnail_sink_construct (GType object_type); +static void model_thumbnail_fetcher_on_have_thumbnail (ModelThumbnailFetcher* self, GdkPixbuf* buf); +static void _model_thumbnail_fetcher_on_have_thumbnail_thumbnail_sink_have_thumbnail (ThumbnailSink* _sender, GdkPixbuf* b, gpointer self); +ModelThumbnailFetcher* model_thumbnail_fetcher_new (ModelClipFile* f, gint64 time, GError** error); +ModelThumbnailFetcher* model_thumbnail_fetcher_construct (GType object_type, ModelClipFile* f, gint64 time, GError** error); +static void model_thumbnail_fetcher_real_on_pad_added (ModelFetcher* base, GstPad* pad); +static void model_thumbnail_fetcher_real_on_state_change (ModelFetcher* base, GstBus* bus, GstMessage* message); +static void model_thumbnail_fetcher_finalize (GObject* obj); +GType model_clip_get_type (void); +#define MODEL_CLIP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP, ModelClipPrivate)) +enum { + MODEL_CLIP_DUMMY_PROPERTY, + MODEL_CLIP_START, + MODEL_CLIP_MEDIA_START, + MODEL_CLIP_DURATION, + MODEL_CLIP_END +}; +void model_clip_set_media_start_duration (ModelClip* self, gint64 media_start, gint64 duration); +void model_clip_set_start (ModelClip* self, gint64 value); +static void model_clip_on_clipfile_updated (ModelClip* self, ModelClipFile* f); +static void _model_clip_on_clipfile_updated_model_clip_file_updated (ModelClipFile* _sender, gpointer self); +ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +void model_clip_gnonlin_connect (ModelClip* self); +void model_clip_gnonlin_disconnect (ModelClip* self); +gint64 model_clip_get_media_start (ModelClip* self); +gint64 model_clip_get_duration (ModelClip* self); +gint64 model_clip_get_start (ModelClip* self); +gboolean model_clip_overlap_pos (ModelClip* self, gint64 start, gint64 length); +gboolean time_in_range (gint64 time, gint64 center, gint64 delta); +gint64 model_clip_get_end (ModelClip* self); +gint64 model_clip_snap (ModelClip* self, ModelClip* other, gint64 pad); +gboolean model_clip_snap_coord (ModelClip* self, gint64* s, gint64 span); +ModelClip* model_clip_copy (ModelClip* self); +gboolean model_clip_is_trimmed (ModelClip* self); +void model_clip_set_duration (ModelClip* self, gint64 value); +void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge); +void model_clip_save (ModelClip* self, FILE* f, gint id); +static void model_clip_finalize (GObject* obj); +static void model_clip_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); +static void model_clip_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); +gpointer model_fetcher_completion_ref (gpointer instance); +void model_fetcher_completion_unref (gpointer instance); +GParamSpec* model_param_spec_fetcher_completion (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_fetcher_completion (GValue* value, gpointer v_object); +void model_value_take_fetcher_completion (GValue* value, gpointer v_object); +gpointer model_value_get_fetcher_completion (const GValue* value); +GType model_fetcher_completion_get_type (void); +enum { + MODEL_FETCHER_COMPLETION_DUMMY_PROPERTY +}; +ModelFetcherCompletion* model_fetcher_completion_new (void); +ModelFetcherCompletion* model_fetcher_completion_construct (GType object_type); +void model_fetcher_completion_complete (ModelFetcherCompletion* self, ModelFetcher* fetcher); +static void model_fetcher_completion_real_complete (ModelFetcherCompletion* self, ModelFetcher* fetcher); +static void model_fetcher_completion_finalize (ModelFetcherCompletion* obj); + + +static void g_cclosure_user_marshal_VOID__INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); + +GType model_media_type_get_type (void) { + static volatile gsize model_media_type_type_id__volatile = 0; + if (g_once_init_enter (&model_media_type_type_id__volatile)) { + static const GEnumValue values[] = {{MODEL_MEDIA_TYPE_AUDIO, "MODEL_MEDIA_TYPE_AUDIO", "audio"}, {MODEL_MEDIA_TYPE_VIDEO, "MODEL_MEDIA_TYPE_VIDEO", "video"}, {0, NULL, NULL}}; + GType model_media_type_type_id; + model_media_type_type_id = g_enum_register_static ("ModelMediaType", values); + g_once_init_leave (&model_media_type_type_id__volatile, model_media_type_type_id); + } + return model_media_type_type_id__volatile; +} + + +#line 20 "clip.vala" +ModelGap* model_gap_construct (GType object_type, gint64 start, gint64 end) { +#line 447 "clip.c" + ModelGap* self; + self = (ModelGap*) g_type_create_instance (object_type); +#line 21 "clip.vala" + self->start = start; +#line 22 "clip.vala" + self->end = end; +#line 454 "clip.c" + return self; +} + + +#line 20 "clip.vala" +ModelGap* model_gap_new (gint64 start, gint64 end) { +#line 20 "clip.vala" + return model_gap_construct (MODEL_TYPE_GAP, start, end); +#line 463 "clip.c" +} + + +#line 25 "clip.vala" +gboolean model_gap_is_empty (ModelGap* self) { +#line 469 "clip.c" + gboolean result = FALSE; +#line 25 "clip.vala" + g_return_val_if_fail (MODEL_IS_GAP (self), FALSE); +#line 473 "clip.c" + result = self->start >= self->end; +#line 26 "clip.vala" + return result; +#line 477 "clip.c" +} + + +#line 29 "clip.vala" +ModelGap* model_gap_intersect (ModelGap* self, ModelGap* g) { +#line 483 "clip.c" + ModelGap* result = NULL; +#line 29 "clip.vala" + g_return_val_if_fail (MODEL_IS_GAP (self), NULL); +#line 29 "clip.vala" + g_return_val_if_fail (MODEL_IS_GAP (g), NULL); +#line 489 "clip.c" + result = model_gap_new (MAX (self->start, g->start), MIN (self->end, g->end)); +#line 30 "clip.vala" + return result; +#line 493 "clip.c" +} + + +static void model_value_gap_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_gap_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_gap_unref (value->data[0].v_pointer); + } +} + + +static void model_value_gap_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_gap_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_gap_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_gap_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelGap* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_gap_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_gap_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelGap** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_gap_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecGap* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_GAP), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_gap (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_GAP), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_gap (GValue* value, gpointer v_object) { + ModelGap* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_GAP)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_GAP)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_gap_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_gap_unref (old); + } +} + + +void model_value_take_gap (GValue* value, gpointer v_object) { + ModelGap* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_GAP)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_GAP)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_gap_unref (old); + } +} + + +static void model_gap_class_init (ModelGapClass * klass) { + model_gap_parent_class = g_type_class_peek_parent (klass); + MODEL_GAP_CLASS (klass)->finalize = model_gap_finalize; +} + + +static void model_gap_instance_init (ModelGap * self) { + self->ref_count = 1; +} + + +static void model_gap_finalize (ModelGap* obj) { + ModelGap * self; + self = MODEL_GAP (obj); +} + + +GType model_gap_get_type (void) { + static volatile gsize model_gap_type_id__volatile = 0; + if (g_once_init_enter (&model_gap_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_gap_init, model_value_gap_free_value, model_value_gap_copy_value, model_value_gap_peek_pointer, "p", model_value_gap_collect_value, "p", model_value_gap_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelGapClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_gap_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelGap), 0, (GInstanceInitFunc) model_gap_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_gap_type_id; + model_gap_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelGap", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_gap_type_id__volatile, model_gap_type_id); + } + return model_gap_type_id__volatile; +} + + +gpointer model_gap_ref (gpointer instance) { + ModelGap* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_gap_unref (gpointer instance) { + ModelGap* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_GAP_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +#line 58 "clip.vala" +ModelClipFile* model_clip_file_construct (GType object_type, const char* filename, gint64 length) { +#line 658 "clip.c" + ModelClipFile * self; + char* _tmp0_; +#line 58 "clip.vala" + g_return_val_if_fail (filename != NULL, NULL); +#line 58 "clip.vala" + self = (ModelClipFile*) g_object_new (object_type, NULL); +#line 59 "clip.vala" + self->filename = (_tmp0_ = g_strdup (filename), _g_free0 (self->filename), _tmp0_); +#line 60 "clip.vala" + model_clip_file_set_length (self, length); +#line 61 "clip.vala" + self->priv->online = FALSE; +#line 671 "clip.c" + return self; +} + + +#line 58 "clip.vala" +ModelClipFile* model_clip_file_new (const char* filename, gint64 length) { +#line 58 "clip.vala" + return model_clip_file_construct (MODEL_TYPE_CLIP_FILE, filename, length); +#line 680 "clip.c" +} + + +#line 64 "clip.vala" +gboolean model_clip_file_is_online (ModelClipFile* self) { +#line 686 "clip.c" + gboolean result = FALSE; +#line 64 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 690 "clip.c" + result = self->priv->online; +#line 65 "clip.vala" + return result; +#line 694 "clip.c" +} + + +#line 68 "clip.vala" +void model_clip_file_set_online (ModelClipFile* self, gboolean o) { +#line 68 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (self)); +#line 69 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "set_online"); +#line 70 "clip.vala" + self->priv->online = o; +#line 71 "clip.vala" + g_signal_emit_by_name (self, "updated"); +#line 708 "clip.c" +} + + +#line 74 "clip.vala" +void model_clip_file_set_thumbnail (ModelClipFile* self, GdkPixbuf* b) { +#line 714 "clip.c" + GdkPixbuf* _tmp0_; +#line 74 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (self)); +#line 74 "clip.vala" + g_return_if_fail (GDK_IS_PIXBUF (b)); +#line 79 "clip.vala" + self->thumbnail = (_tmp0_ = gdk_pixbuf_scale_simple (b, 64, 44, GDK_INTERP_BILINEAR), _g_object_unref0 (self->thumbnail), _tmp0_); +#line 722 "clip.c" +} + + +#line 82 "clip.vala" +gboolean model_clip_file_has_caps_structure (ModelClipFile* self, ModelMediaType m) { +#line 728 "clip.c" + gboolean result = FALSE; +#line 82 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 83 "clip.vala" + if (m == MODEL_MEDIA_TYPE_AUDIO) { +#line 734 "clip.c" + gboolean _tmp0_ = FALSE; +#line 84 "clip.vala" + if (self->audio_caps == NULL) { +#line 84 "clip.vala" + _tmp0_ = TRUE; +#line 740 "clip.c" + } else { +#line 84 "clip.vala" + _tmp0_ = gst_caps_get_size (self->audio_caps) < 1; +#line 744 "clip.c" + } +#line 84 "clip.vala" + if (_tmp0_) { +#line 748 "clip.c" + result = FALSE; +#line 85 "clip.vala" + return result; +#line 752 "clip.c" + } + } else { +#line 86 "clip.vala" + if (m == MODEL_MEDIA_TYPE_VIDEO) { +#line 757 "clip.c" + gboolean _tmp1_ = FALSE; +#line 87 "clip.vala" + if (self->video_caps == NULL) { +#line 87 "clip.vala" + _tmp1_ = TRUE; +#line 763 "clip.c" + } else { +#line 87 "clip.vala" + _tmp1_ = gst_caps_get_size (self->video_caps) < 1; +#line 767 "clip.c" + } +#line 87 "clip.vala" + if (_tmp1_) { +#line 771 "clip.c" + result = FALSE; +#line 88 "clip.vala" + return result; +#line 775 "clip.c" + } + } + } + result = TRUE; +#line 90 "clip.vala" + return result; +#line 782 "clip.c" +} + + +#line 93 "clip.vala" +gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t) { +#line 788 "clip.c" + gboolean result = FALSE; +#line 93 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 94 "clip.vala" + if (t == MODEL_MEDIA_TYPE_VIDEO) { +#line 794 "clip.c" + result = self->video_caps != NULL; +#line 95 "clip.vala" + return result; +#line 798 "clip.c" + } + result = self->audio_caps != NULL; +#line 96 "clip.vala" + return result; +#line 803 "clip.c" +} + + +static gpointer _gst_structure_copy0 (gpointer self) { + return self ? gst_structure_copy (self) : NULL; +} + + +#line 99 "clip.vala" +static gboolean model_clip_file_get_caps_structure (ModelClipFile* self, ModelMediaType m, GstStructure** s) { +#line 814 "clip.c" + gboolean result = FALSE; +#line 99 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 818 "clip.c" + if (s != NULL) { + *s = NULL; + } +#line 100 "clip.vala" + if (!model_clip_file_has_caps_structure (self, m)) { +#line 824 "clip.c" + result = FALSE; +#line 101 "clip.vala" + return result; +#line 828 "clip.c" + } +#line 102 "clip.vala" + if (m == MODEL_MEDIA_TYPE_AUDIO) { +#line 832 "clip.c" + GstStructure* _tmp0_; +#line 103 "clip.vala" + *s = (_tmp0_ = _gst_structure_copy0 (gst_caps_get_structure (self->audio_caps, (guint) 0)), _gst_structure_free0 (*s), _tmp0_); +#line 836 "clip.c" + } else { +#line 104 "clip.vala" + if (m == MODEL_MEDIA_TYPE_VIDEO) { +#line 840 "clip.c" + GstStructure* _tmp1_; +#line 105 "clip.vala" + *s = (_tmp1_ = _gst_structure_copy0 (gst_caps_get_structure (self->video_caps, (guint) 0)), _gst_structure_free0 (*s), _tmp1_); +#line 844 "clip.c" + } + } + result = TRUE; +#line 107 "clip.vala" + return result; +#line 850 "clip.c" +} + + +#line 110 "clip.vala" +gboolean model_clip_file_get_frame_rate (ModelClipFile* self, Fraction* rate) { +#line 856 "clip.c" + gboolean result = FALSE; + GstStructure* structure; + GstStructure* _tmp2_; + gboolean _tmp1_; + GstStructure* _tmp0_ = NULL; +#line 110 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 864 "clip.c" + structure = NULL; +#line 112 "clip.vala" + if (!(_tmp1_ = model_clip_file_get_caps_structure (self, MODEL_MEDIA_TYPE_VIDEO, &_tmp0_), structure = (_tmp2_ = _tmp0_, _gst_structure_free0 (structure), _tmp2_), _tmp1_)) { +#line 868 "clip.c" + result = FALSE; + _gst_structure_free0 (structure); +#line 113 "clip.vala" + return result; +#line 873 "clip.c" + } + result = gst_structure_get_fraction (structure, "framerate", &(*rate).numerator, &(*rate).denominator); + _gst_structure_free0 (structure); +#line 114 "clip.vala" + return result; +#line 879 "clip.c" +} + + +#line 117 "clip.vala" +gboolean model_clip_file_get_dimensions (ModelClipFile* self, gint* w, gint* h) { +#line 885 "clip.c" + gboolean result = FALSE; + GstStructure* s; + GstStructure* _tmp2_; + gboolean _tmp1_; + GstStructure* _tmp0_ = NULL; + gboolean _tmp3_ = FALSE; +#line 117 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 894 "clip.c" + s = NULL; +#line 120 "clip.vala" + if (!(_tmp1_ = model_clip_file_get_caps_structure (self, MODEL_MEDIA_TYPE_VIDEO, &_tmp0_), s = (_tmp2_ = _tmp0_, _gst_structure_free0 (s), _tmp2_), _tmp1_)) { +#line 898 "clip.c" + result = FALSE; + _gst_structure_free0 (s); +#line 121 "clip.vala" + return result; +#line 903 "clip.c" + } +#line 123 "clip.vala" + if (gst_structure_get_int (s, "width", w)) { +#line 123 "clip.vala" + _tmp3_ = gst_structure_get_int (s, "height", h); +#line 909 "clip.c" + } else { +#line 123 "clip.vala" + _tmp3_ = FALSE; +#line 913 "clip.c" + } + result = _tmp3_; + _gst_structure_free0 (s); +#line 123 "clip.vala" + return result; +#line 919 "clip.c" +} + + +#line 126 "clip.vala" +gboolean model_clip_file_get_sample_rate (ModelClipFile* self, gint* rate) { +#line 925 "clip.c" + gboolean result = FALSE; + GstStructure* s; + GstStructure* _tmp2_; + gboolean _tmp1_; + GstStructure* _tmp0_ = NULL; +#line 126 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 933 "clip.c" + s = NULL; +#line 128 "clip.vala" + if (!(_tmp1_ = model_clip_file_get_caps_structure (self, MODEL_MEDIA_TYPE_AUDIO, &_tmp0_), s = (_tmp2_ = _tmp0_, _gst_structure_free0 (s), _tmp2_), _tmp1_)) { +#line 937 "clip.c" + result = FALSE; + _gst_structure_free0 (s); +#line 129 "clip.vala" + return result; +#line 942 "clip.c" + } + result = gst_structure_get_int (s, "rate", rate); + _gst_structure_free0 (s); +#line 131 "clip.vala" + return result; +#line 948 "clip.c" +} + + +#line 134 "clip.vala" +gboolean model_clip_file_get_video_format (ModelClipFile* self, guint32* fourcc) { +#line 954 "clip.c" + gboolean result = FALSE; + GstStructure* s; + GstStructure* _tmp2_; + gboolean _tmp1_; + GstStructure* _tmp0_ = NULL; +#line 134 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 962 "clip.c" + s = NULL; +#line 137 "clip.vala" + if (!(_tmp1_ = model_clip_file_get_caps_structure (self, MODEL_MEDIA_TYPE_VIDEO, &_tmp0_), s = (_tmp2_ = _tmp0_, _gst_structure_free0 (s), _tmp2_), _tmp1_)) { +#line 966 "clip.c" + result = FALSE; + _gst_structure_free0 (s); +#line 138 "clip.vala" + return result; +#line 971 "clip.c" + } + result = gst_structure_get_fourcc (s, "format", fourcc); + _gst_structure_free0 (s); +#line 140 "clip.vala" + return result; +#line 977 "clip.c" +} + + +#line 143 "clip.vala" +gboolean model_clip_file_get_num_channels (ModelClipFile* self, gint* channels) { +#line 983 "clip.c" + gboolean result = FALSE; + GstStructure* s; + GstStructure* _tmp2_; + gboolean _tmp1_; + GstStructure* _tmp0_ = NULL; +#line 143 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 991 "clip.c" + s = NULL; +#line 145 "clip.vala" + if (!(_tmp1_ = model_clip_file_get_caps_structure (self, MODEL_MEDIA_TYPE_AUDIO, &_tmp0_), s = (_tmp2_ = _tmp0_, _gst_structure_free0 (s), _tmp2_), _tmp1_)) { +#line 995 "clip.c" + result = FALSE; + _gst_structure_free0 (s); +#line 146 "clip.vala" + return result; +#line 1000 "clip.c" + } + result = gst_structure_get_int (s, "channels", channels); + _gst_structure_free0 (s); +#line 149 "clip.vala" + return result; +#line 1006 "clip.c" +} + + +#line 152 "clip.vala" +gboolean model_clip_file_get_num_channels_string (ModelClipFile* self, char** s) { +#line 1012 "clip.c" + gboolean result = FALSE; + gint i = 0; +#line 152 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), FALSE); +#line 1017 "clip.c" + if (s != NULL) { + *s = NULL; + } +#line 154 "clip.vala" + if (!model_clip_file_get_num_channels (self, &i)) { +#line 1023 "clip.c" + result = FALSE; +#line 155 "clip.vala" + return result; +#line 1027 "clip.c" + } +#line 157 "clip.vala" + if (i == 1) { +#line 1031 "clip.c" + char* _tmp0_; +#line 158 "clip.vala" + *s = (_tmp0_ = g_strdup ("Mono"), _g_free0 (*s), _tmp0_); +#line 1035 "clip.c" + } else { +#line 159 "clip.vala" + if (i == 2) { +#line 1039 "clip.c" + char* _tmp1_; +#line 160 "clip.vala" + *s = (_tmp1_ = g_strdup ("Stereo"), _g_free0 (*s), _tmp1_); +#line 1043 "clip.c" + } else { +#line 161 "clip.vala" + if ((i % 2) == 0) { +#line 1047 "clip.c" + char* _tmp2_; +#line 162 "clip.vala" + *s = (_tmp2_ = g_strdup_printf ("Surround %d.1", i - 1), _g_free0 (*s), _tmp2_); +#line 1051 "clip.c" + } else { + char* _tmp3_; +#line 164 "clip.vala" + *s = (_tmp3_ = g_strdup_printf ("%d", i), _g_free0 (*s), _tmp3_); +#line 1056 "clip.c" + } + } + } + result = TRUE; +#line 165 "clip.vala" + return result; +#line 1063 "clip.c" +} + + +gint64 model_clip_file_get_length (ModelClipFile* self) { + gint64 result; + g_return_val_if_fail (MODEL_IS_CLIP_FILE (self), 0LL); +#line 39 "clip.vala" + if (!self->priv->online) { +#line 40 "clip.vala" + g_warning ("clip.vala:40: retrieving length while clip offline"); +#line 1074 "clip.c" + } + result = self->priv->_length; +#line 42 "clip.vala" + return result; +#line 1079 "clip.c" +} + + +void model_clip_file_set_length (ModelClipFile* self, gint64 value) { + g_return_if_fail (MODEL_IS_CLIP_FILE (self)); +#line 46 "clip.vala" + self->priv->_length = value; +#line 1087 "clip.c" + g_object_notify ((GObject *) self, "length"); +} + + +static void model_clip_file_class_init (ModelClipFileClass * klass) { + model_clip_file_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelClipFilePrivate)); + G_OBJECT_CLASS (klass)->get_property = model_clip_file_get_property; + G_OBJECT_CLASS (klass)->set_property = model_clip_file_set_property; + G_OBJECT_CLASS (klass)->finalize = model_clip_file_finalize; + g_object_class_install_property (G_OBJECT_CLASS (klass), MODEL_CLIP_FILE_LENGTH, g_param_spec_int64 ("length", "length", "length", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); + g_signal_new ("updated", MODEL_TYPE_CLIP_FILE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); +} + + +static void model_clip_file_instance_init (ModelClipFile * self) { + self->priv = MODEL_CLIP_FILE_GET_PRIVATE (self); + self->thumbnail = NULL; +} + + +static void model_clip_file_finalize (GObject* obj) { + ModelClipFile * self; + self = MODEL_CLIP_FILE (obj); + _g_free0 (self->filename); + _gst_caps_unref0 (self->video_caps); + _gst_caps_unref0 (self->audio_caps); + _g_object_unref0 (self->thumbnail); + G_OBJECT_CLASS (model_clip_file_parent_class)->finalize (obj); +} + + +GType model_clip_file_get_type (void) { + static volatile gsize model_clip_file_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_file_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipFile), 0, (GInstanceInitFunc) model_clip_file_instance_init, NULL }; + GType model_clip_file_type_id; + model_clip_file_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelClipFile", &g_define_type_info, 0); + g_once_init_leave (&model_clip_file_type_id__volatile, model_clip_file_type_id); + } + return model_clip_file_type_id__volatile; +} + + +static void model_clip_file_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { + ModelClipFile * self; + self = MODEL_CLIP_FILE (object); + switch (property_id) { + case MODEL_CLIP_FILE_LENGTH: + g_value_set_int64 (value, model_clip_file_get_length (self)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void model_clip_file_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { + ModelClipFile * self; + self = MODEL_CLIP_FILE (object); + switch (property_id) { + case MODEL_CLIP_FILE_LENGTH: + model_clip_file_set_length (self, g_value_get_int64 (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +#line 177 "clip.vala" +static void model_fetcher_real_on_pad_added (ModelFetcher* self, GstPad* pad) { +#line 1162 "clip.c" + g_return_if_fail (MODEL_IS_FETCHER (self)); + g_critical ("Type `%s' does not implement abstract method `model_fetcher_on_pad_added'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 177 "clip.vala" +void model_fetcher_on_pad_added (ModelFetcher* self, GstPad* pad) { +#line 177 "clip.vala" + MODEL_FETCHER_GET_CLASS (self)->on_pad_added (self, pad); +#line 1173 "clip.c" +} + + +#line 178 "clip.vala" +static void model_fetcher_real_on_state_change (ModelFetcher* self, GstBus* bus, GstMessage* message) { +#line 1179 "clip.c" + g_return_if_fail (MODEL_IS_FETCHER (self)); + g_critical ("Type `%s' does not implement abstract method `model_fetcher_on_state_change'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 178 "clip.vala" +void model_fetcher_on_state_change (ModelFetcher* self, GstBus* bus, GstMessage* message) { +#line 178 "clip.vala" + MODEL_FETCHER_GET_CLASS (self)->on_state_change (self, bus, message); +#line 1190 "clip.c" +} + + +#line 182 "clip.vala" +void model_fetcher_do_error (ModelFetcher* self, const char* _error_) { +#line 1196 "clip.c" + char* _tmp0_; +#line 182 "clip.vala" + g_return_if_fail (MODEL_IS_FETCHER (self)); +#line 182 "clip.vala" + g_return_if_fail (_error_ != NULL); +#line 183 "clip.vala" + self->error_string = (_tmp0_ = g_strdup (_error_), _g_free0 (self->error_string), _tmp0_); +#line 184 "clip.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_NULL); +#line 1206 "clip.c" +} + + +#line 187 "clip.vala" +void model_fetcher_on_warning (ModelFetcher* self, GstBus* bus, GstMessage* message) { +#line 1212 "clip.c" + GError* _error_; + char* text; + char* _tmp3_; + char* _tmp2_ = NULL; + GError* _tmp1_; + GError* _tmp0_ = NULL; +#line 187 "clip.vala" + g_return_if_fail (MODEL_IS_FETCHER (self)); +#line 187 "clip.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 187 "clip.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 188 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_warning"); +#line 1227 "clip.c" + _error_ = NULL; + text = NULL; +#line 191 "clip.vala" + (gst_message_parse_warning (message, &_tmp0_, &_tmp2_), _error_ = (_tmp1_ = _tmp0_, _g_error_free0 (_error_), _tmp1_)); +#line 191 "clip.vala" + text = (_tmp3_ = _tmp2_, _g_free0 (text), _tmp3_); +#line 192 "clip.vala" + g_warning ("clip.vala:192: %s", text); +#line 1236 "clip.c" + _g_error_free0 (_error_); + _g_free0 (text); +} + + +#line 195 "clip.vala" +void model_fetcher_on_error (ModelFetcher* self, GstBus* bus, GstMessage* message) { +#line 1244 "clip.c" + GError* _error_; + char* text; + char* _tmp3_; + char* _tmp2_ = NULL; + GError* _tmp1_; + GError* _tmp0_ = NULL; +#line 195 "clip.vala" + g_return_if_fail (MODEL_IS_FETCHER (self)); +#line 195 "clip.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 195 "clip.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 196 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error"); +#line 1259 "clip.c" + _error_ = NULL; + text = NULL; +#line 199 "clip.vala" + (gst_message_parse_error (message, &_tmp0_, &_tmp2_), _error_ = (_tmp1_ = _tmp0_, _g_error_free0 (_error_), _tmp1_)); +#line 199 "clip.vala" + text = (_tmp3_ = _tmp2_, _g_free0 (text), _tmp3_); +#line 200 "clip.vala" + model_fetcher_do_error (self, text); +#line 1268 "clip.c" + _g_error_free0 (_error_); + _g_free0 (text); +} + + +#line 169 "clip.vala" +ModelFetcher* model_fetcher_construct (GType object_type) { +#line 1276 "clip.c" + ModelFetcher * self; +#line 169 "clip.vala" + self = (ModelFetcher*) g_object_new (object_type, NULL); +#line 1280 "clip.c" + return self; +} + + +static void model_fetcher_class_init (ModelFetcherClass * klass) { + model_fetcher_parent_class = g_type_class_peek_parent (klass); + MODEL_FETCHER_CLASS (klass)->on_pad_added = model_fetcher_real_on_pad_added; + MODEL_FETCHER_CLASS (klass)->on_state_change = model_fetcher_real_on_state_change; + G_OBJECT_CLASS (klass)->finalize = model_fetcher_finalize; + g_signal_new ("ready", MODEL_TYPE_FETCHER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_FETCHER); +} + + +static void model_fetcher_instance_init (ModelFetcher * self) { +} + + +static void model_fetcher_finalize (GObject* obj) { + ModelFetcher * self; + self = MODEL_FETCHER (obj); + _gst_object_unref0 (self->filesrc); + _gst_object_unref0 (self->decodebin); + _gst_object_unref0 (self->pipeline); + _g_object_unref0 (self->clipfile); + _g_free0 (self->error_string); + G_OBJECT_CLASS (model_fetcher_parent_class)->finalize (obj); +} + + +GType model_fetcher_get_type (void) { + static volatile gsize model_fetcher_type_id__volatile = 0; + if (g_once_init_enter (&model_fetcher_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelFetcherClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_fetcher_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelFetcher), 0, (GInstanceInitFunc) model_fetcher_instance_init, NULL }; + GType model_fetcher_type_id; + model_fetcher_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelFetcher", &g_define_type_info, G_TYPE_FLAG_ABSTRACT); + g_once_init_leave (&model_fetcher_type_id__volatile, model_fetcher_type_id); + } + return model_fetcher_type_id__volatile; +} + + +#line 68 "clip.vala" +static void _model_clip_file_set_online_model_clip_fetcher_clipfile_online (ModelClipFetcher* _sender, gboolean online, gpointer self) { +#line 1324 "clip.c" + model_clip_file_set_online (self, online); +} + + +static gpointer _gst_object_ref0 (gpointer self) { + return self ? gst_object_ref (self) : NULL; +} + + +#line 177 "clip.vala" +static void _model_fetcher_on_pad_added_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self) { +#line 1336 "clip.c" + model_fetcher_on_pad_added (self, pad); +} + + +#line 178 "clip.vala" +static void _model_fetcher_on_state_change_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 1343 "clip.c" + model_fetcher_on_state_change (self, _sender, message); +} + + +#line 195 "clip.vala" +static void _model_fetcher_on_error_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 1350 "clip.c" + model_fetcher_on_error (self, _sender, message); +} + + +#line 187 "clip.vala" +static void _model_fetcher_on_warning_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 1357 "clip.c" + model_fetcher_on_warning (self, _sender, message); +} + + +#line 207 "clip.vala" +ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename, GError** error) { +#line 1364 "clip.c" + GError * _inner_error_; + ModelClipFetcher * self; + ModelClipFile* _tmp1_; + ModelClipFile* *_tmp0_; + GstElement* _tmp2_; + GstElement* _tmp4_; + GstElement* *_tmp3_; + GstElement* _tmp5_; + GstElement* _tmp7_; + GstElement* *_tmp6_; + GstPipeline* _tmp9_; + GstPipeline* *_tmp8_; + GstBus* bus; + char* _tmp11_; + char* *_tmp10_; +#line 207 "clip.vala" + g_return_val_if_fail (filename != NULL, NULL); +#line 1382 "clip.c" + _inner_error_ = NULL; +#line 207 "clip.vala" + self = (ModelClipFetcher*) model_fetcher_construct (object_type); +#line 208 "clip.vala" + _tmp0_ = &MODEL_FETCHER (self)->clipfile; +#line 208 "clip.vala" + (*_tmp0_) = (_tmp1_ = model_clip_file_new (filename, 0), _g_object_unref0 ((*_tmp0_)), _tmp1_); +#line 210 "clip.vala" + g_signal_connect_object (self, "clipfile-online", (GCallback) _model_clip_file_set_online_model_clip_fetcher_clipfile_online, MODEL_FETCHER (self)->clipfile, 0); +#line 212 "clip.vala" + _tmp2_ = make_element ("filesrc", &_inner_error_); +#line 1394 "clip.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 212 "clip.vala" + _tmp3_ = &MODEL_FETCHER (self)->filesrc; +#line 212 "clip.vala" + (*_tmp3_) = (_tmp4_ = _tmp2_, _gst_object_unref0 ((*_tmp3_)), _tmp4_); +#line 213 "clip.vala" + g_object_set (G_OBJECT (MODEL_FETCHER (self)->filesrc), "location", filename, NULL); +#line 215 "clip.vala" + _tmp5_ = make_element ("decodebin", &_inner_error_); +#line 1408 "clip.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 215 "clip.vala" + _tmp6_ = &MODEL_FETCHER (self)->decodebin; +#line 215 "clip.vala" + (*_tmp6_) = (_tmp7_ = GST_ELEMENT (GST_BIN (_tmp5_)), _gst_object_unref0 ((*_tmp6_)), _tmp7_); +#line 216 "clip.vala" + _tmp8_ = &MODEL_FETCHER (self)->pipeline; +#line 216 "clip.vala" + (*_tmp8_) = (_tmp9_ = (GstPipeline*) gst_pipeline_new ("pipeline"), _gst_object_unref0 ((*_tmp8_)), _tmp9_); +#line 217 "clip.vala" + gst_pipeline_set_auto_flush_bus (MODEL_FETCHER (self)->pipeline, FALSE); +#line 218 "clip.vala" + if (MODEL_FETCHER (self)->pipeline == NULL) { +#line 219 "clip.vala" + g_error ("clip.vala:219: can't construct pipeline"); +#line 1428 "clip.c" + } +#line 220 "clip.vala" + gst_bin_add_many (GST_BIN (MODEL_FETCHER (self)->pipeline), _gst_object_ref0 (MODEL_FETCHER (self)->filesrc), _gst_object_ref0 (MODEL_FETCHER (self)->decodebin), NULL); +#line 222 "clip.vala" + if (!gst_element_link (MODEL_FETCHER (self)->filesrc, MODEL_FETCHER (self)->decodebin)) { +#line 223 "clip.vala" + g_error ("clip.vala:223: can't link filesrc"); +#line 1436 "clip.c" + } +#line 224 "clip.vala" + g_signal_connect_object (MODEL_FETCHER (self)->decodebin, "pad-added", (GCallback) _model_fetcher_on_pad_added_gst_element_pad_added, MODEL_FETCHER (self), 0); +#line 226 "clip.vala" + bus = gst_pipeline_get_bus (MODEL_FETCHER (self)->pipeline); +#line 228 "clip.vala" + gst_bus_add_signal_watch (bus); +#line 229 "clip.vala" + g_signal_connect_object (bus, "message::state-changed", (GCallback) _model_fetcher_on_state_change_gst_bus_message, MODEL_FETCHER (self), 0); +#line 230 "clip.vala" + g_signal_connect_object (bus, "message::error", (GCallback) _model_fetcher_on_error_gst_bus_message, MODEL_FETCHER (self), 0); +#line 231 "clip.vala" + g_signal_connect_object (bus, "message::warning", (GCallback) _model_fetcher_on_warning_gst_bus_message, MODEL_FETCHER (self), 0); +#line 233 "clip.vala" + _tmp10_ = &MODEL_FETCHER (self)->error_string; +#line 233 "clip.vala" + (*_tmp10_) = (_tmp11_ = NULL, _g_free0 ((*_tmp10_)), _tmp11_); +#line 234 "clip.vala" + gst_element_set_state (GST_ELEMENT (MODEL_FETCHER (self)->pipeline), GST_STATE_PLAYING); +#line 1456 "clip.c" + _gst_object_unref0 (bus); + return self; +} + + +#line 207 "clip.vala" +ModelClipFetcher* model_clip_fetcher_new (const char* filename, GError** error) { +#line 207 "clip.vala" + return model_clip_fetcher_construct (MODEL_TYPE_CLIP_FETCHER, filename, error); +#line 1466 "clip.c" +} + + +#line 237 "clip.vala" +char* model_clip_fetcher_get_filename (ModelClipFetcher* self) { +#line 1472 "clip.c" + char* result = NULL; +#line 237 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FETCHER (self), NULL); +#line 1476 "clip.c" + result = g_strdup (MODEL_FETCHER (self)->clipfile->filename); +#line 237 "clip.vala" + return result; +#line 1480 "clip.c" +} + + +#line 239 "clip.vala" +static void model_clip_fetcher_real_on_pad_added (ModelFetcher* base, GstPad* pad) { +#line 1486 "clip.c" + ModelClipFetcher * self; + GError * _inner_error_; + GstPad* fake_pad; + GstElement* fake_sink; + self = MODEL_CLIP_FETCHER (base); +#line 239 "clip.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 1494 "clip.c" + _inner_error_ = NULL; +#line 240 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pad_added"); +#line 1498 "clip.c" + fake_pad = NULL; + fake_sink = NULL; + { + char* _tmp2_; + GstCaps* _tmp1_; + GstCaps* _tmp0_ = NULL; + gboolean _tmp3_; +#line 244 "clip.vala" + if ((_tmp3_ = g_str_has_prefix (_tmp2_ = gst_caps_to_string (_tmp1_ = (g_object_get (pad, "caps", &_tmp0_, NULL), _tmp0_)), "video"), _g_free0 (_tmp2_), _gst_caps_unref0 (_tmp1_), _tmp3_)) { +#line 1508 "clip.c" + GstElement* _tmp4_; + GstElement* _tmp5_; + GstPad* _tmp6_; +#line 245 "clip.vala" + _tmp4_ = make_element ("fakesink", &_inner_error_); +#line 1514 "clip.c" + if (_inner_error_ != NULL) { + goto __catch4_g_error; + } +#line 245 "clip.vala" + fake_sink = (_tmp5_ = _tmp4_, _gst_object_unref0 (fake_sink), _tmp5_); +#line 246 "clip.vala" + gst_bin_add (GST_BIN (MODEL_FETCHER (self)->pipeline), _gst_object_ref0 (fake_sink)); +#line 247 "clip.vala" + fake_pad = (_tmp6_ = gst_element_get_static_pad (fake_sink, "sink"), _gst_object_unref0 (fake_pad), _tmp6_); +#line 249 "clip.vala" + if (!gst_element_sync_state_with_parent (fake_sink)) { +#line 250 "clip.vala" + g_error ("clip.vala:250: could not sync state with parent"); +#line 1528 "clip.c" + } + } else { + GstElement* _tmp7_; + GstElement* _tmp8_; + GstPad* _tmp9_; +#line 253 "clip.vala" + _tmp7_ = make_element ("fakesink", &_inner_error_); +#line 1536 "clip.c" + if (_inner_error_ != NULL) { + goto __catch4_g_error; + } +#line 253 "clip.vala" + fake_sink = (_tmp8_ = _tmp7_, _gst_object_unref0 (fake_sink), _tmp8_); +#line 254 "clip.vala" + gst_bin_add (GST_BIN (MODEL_FETCHER (self)->pipeline), _gst_object_ref0 (fake_sink)); +#line 255 "clip.vala" + fake_pad = (_tmp9_ = gst_element_get_static_pad (fake_sink, "sink"), _gst_object_unref0 (fake_pad), _tmp9_); +#line 257 "clip.vala" + if (!gst_element_sync_state_with_parent (fake_sink)) { +#line 258 "clip.vala" + g_error ("clip.vala:258: could not sync state with parent"); +#line 1550 "clip.c" + } + } +#line 261 "clip.vala" + gst_pad_link (pad, fake_pad); +#line 1555 "clip.c" + } + goto __finally4; + __catch4_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally4: + if (_inner_error_ != NULL) { + _gst_object_unref0 (fake_pad); + _gst_object_unref0 (fake_sink); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _gst_object_unref0 (fake_pad); + _gst_object_unref0 (fake_sink); +} + + +#line 267 "clip.vala" +static GstPad* model_clip_fetcher_get_pad (ModelClipFetcher* self, const char* prefix) { +#line 1582 "clip.c" + GstPad* result = NULL; +#line 267 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FETCHER (self), NULL); +#line 267 "clip.vala" + g_return_val_if_fail (prefix != NULL, NULL); +#line 1588 "clip.c" + { + GList* pad_collection; + GList* pad_it; +#line 268 "clip.vala" + pad_collection = MODEL_FETCHER (self)->decodebin->pads; +#line 1594 "clip.c" + for (pad_it = pad_collection; pad_it != NULL; pad_it = pad_it->next) { + GstPad* pad; +#line 268 "clip.vala" + pad = _gst_object_ref0 ((GstPad*) pad_it->data); +#line 1599 "clip.c" + { + GstCaps* _tmp1_; + GstCaps* _tmp0_ = NULL; + char* _tmp2_; + char* caps; +#line 269 "clip.vala" + caps = (_tmp2_ = gst_caps_to_string (_tmp1_ = (g_object_get (pad, "caps", &_tmp0_, NULL), _tmp0_)), _gst_caps_unref0 (_tmp1_), _tmp2_); +#line 270 "clip.vala" + if (g_str_has_prefix (caps, prefix)) { +#line 1609 "clip.c" + result = pad; + _g_free0 (caps); +#line 271 "clip.vala" + return result; +#line 1614 "clip.c" + } + _gst_object_unref0 (pad); + _g_free0 (caps); + } + } + } + result = NULL; +#line 274 "clip.vala" + return result; +#line 1624 "clip.c" +} + + +#line 277 "clip.vala" +static void model_clip_fetcher_real_on_state_change (ModelFetcher* base, GstBus* bus, GstMessage* message) { +#line 1630 "clip.c" + ModelClipFetcher * self; + GstState old_state = 0; + GstState new_state = 0; + GstState pending = 0; + self = MODEL_CLIP_FETCHER (base); +#line 277 "clip.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 277 "clip.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 278 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_state_change"); +#line 279 "clip.vala" + if (message->src != GST_OBJECT (MODEL_FETCHER (self)->pipeline)) { +#line 280 "clip.vala" + return; +#line 1646 "clip.c" + } +#line 286 "clip.vala" + gst_message_parse_state_changed (message, &old_state, &new_state, &pending); +#line 287 "clip.vala" + if (new_state == old_state) { +#line 288 "clip.vala" + return; +#line 1654 "clip.c" + } +#line 290 "clip.vala" + if (new_state == GST_STATE_PLAYING) { +#line 1658 "clip.c" + GstPad* pad; + GstPad* _tmp3_; + GstFormat format; + gint64 length = 0LL; + gboolean _tmp7_ = FALSE; +#line 291 "clip.vala" + pad = model_clip_fetcher_get_pad (self, "video"); +#line 292 "clip.vala" + if (pad != NULL) { +#line 1668 "clip.c" + GstCaps* _tmp2_; + GstCaps* *_tmp1_; + GstCaps* _tmp0_ = NULL; +#line 293 "clip.vala" + _tmp1_ = &MODEL_FETCHER (self)->clipfile->video_caps; +#line 293 "clip.vala" + (*_tmp1_) = (_tmp2_ = (g_object_get (pad, "caps", &_tmp0_, NULL), _tmp0_), _gst_caps_unref0 ((*_tmp1_)), _tmp2_); +#line 1676 "clip.c" + } +#line 296 "clip.vala" + pad = (_tmp3_ = model_clip_fetcher_get_pad (self, "audio"), _gst_object_unref0 (pad), _tmp3_); +#line 297 "clip.vala" + if (pad != NULL) { +#line 1682 "clip.c" + GstCaps* _tmp6_; + GstCaps* *_tmp5_; + GstCaps* _tmp4_ = NULL; +#line 298 "clip.vala" + _tmp5_ = &MODEL_FETCHER (self)->clipfile->audio_caps; +#line 298 "clip.vala" + (*_tmp5_) = (_tmp6_ = (g_object_get (pad, "caps", &_tmp4_, NULL), _tmp4_), _gst_caps_unref0 ((*_tmp5_)), _tmp6_); +#line 1690 "clip.c" + } +#line 301 "clip.vala" + format = GST_FORMAT_TIME; +#line 303 "clip.vala" + if (!gst_element_query_duration (GST_ELEMENT (MODEL_FETCHER (self)->pipeline), &format, &length)) { +#line 303 "clip.vala" + _tmp7_ = TRUE; +#line 1698 "clip.c" + } else { +#line 304 "clip.vala" + _tmp7_ = format != GST_FORMAT_TIME; +#line 1702 "clip.c" + } +#line 303 "clip.vala" + if (_tmp7_) { +#line 305 "clip.vala" + model_fetcher_do_error (MODEL_FETCHER (self), "Can't fetch length"); +#line 1708 "clip.c" + _gst_object_unref0 (pad); +#line 306 "clip.vala" + return; +#line 1712 "clip.c" + } +#line 308 "clip.vala" + model_clip_file_set_length (MODEL_FETCHER (self)->clipfile, length); +#line 310 "clip.vala" + g_signal_emit_by_name (self, "clipfile-online", TRUE); +#line 311 "clip.vala" + gst_element_set_state (GST_ELEMENT (MODEL_FETCHER (self)->pipeline), GST_STATE_NULL); +#line 1720 "clip.c" + _gst_object_unref0 (pad); + } else { +#line 312 "clip.vala" + if (new_state == GST_STATE_NULL) { +#line 313 "clip.vala" + g_signal_emit_by_name (MODEL_FETCHER (self), "ready", MODEL_FETCHER (self)); +#line 1727 "clip.c" + } + } +} + + +static void model_clip_fetcher_class_init (ModelClipFetcherClass * klass) { + model_clip_fetcher_parent_class = g_type_class_peek_parent (klass); + MODEL_FETCHER_CLASS (klass)->on_pad_added = model_clip_fetcher_real_on_pad_added; + MODEL_FETCHER_CLASS (klass)->on_state_change = model_clip_fetcher_real_on_state_change; + g_signal_new ("clipfile_online", MODEL_TYPE_CLIP_FETCHER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); +} + + +static void model_clip_fetcher_instance_init (ModelClipFetcher * self) { +} + + +GType model_clip_fetcher_get_type (void) { + static volatile gsize model_clip_fetcher_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_fetcher_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipFetcherClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_fetcher_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipFetcher), 0, (GInstanceInitFunc) model_clip_fetcher_instance_init, NULL }; + GType model_clip_fetcher_type_id; + model_clip_fetcher_type_id = g_type_register_static (MODEL_TYPE_FETCHER, "ModelClipFetcher", &g_define_type_info, 0); + g_once_init_leave (&model_clip_fetcher_type_id__volatile, model_clip_fetcher_type_id); + } + return model_clip_fetcher_type_id__volatile; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 359 "clip.vala" +static void _model_thumbnail_fetcher_on_have_thumbnail_thumbnail_sink_have_thumbnail (ThumbnailSink* _sender, GdkPixbuf* b, gpointer self) { +#line 1764 "clip.c" + model_thumbnail_fetcher_on_have_thumbnail (self, b); +} + + +#line 325 "clip.vala" +ModelThumbnailFetcher* model_thumbnail_fetcher_construct (GType object_type, ModelClipFile* f, gint64 time, GError** error) { +#line 1771 "clip.c" + GError * _inner_error_; + ModelThumbnailFetcher * self; + ModelClipFile* _tmp1_; + ModelClipFile* *_tmp0_; + GstCaps* _tmp2_; + SingleDecodeBin* _tmp3_; + SingleDecodeBin* single_bin; + GstPipeline* _tmp5_; + GstPipeline* *_tmp4_; + ThumbnailSink* _tmp6_; + GstElement* _tmp7_; + GstElement* _tmp8_; + GstBus* bus; +#line 325 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (f), NULL); +#line 1787 "clip.c" + _inner_error_ = NULL; +#line 325 "clip.vala" + self = (ModelThumbnailFetcher*) model_fetcher_construct (object_type); +#line 326 "clip.vala" + _tmp0_ = &MODEL_FETCHER (self)->clipfile; +#line 326 "clip.vala" + (*_tmp0_) = (_tmp1_ = _g_object_ref0 (f), _g_object_unref0 ((*_tmp0_)), _tmp1_); +#line 327 "clip.vala" + self->priv->seek_position = time; +#line 329 "clip.vala" + single_bin = (_tmp3_ = single_decode_bin_new (_tmp2_ = gst_caps_from_string ("video/x-raw-rgb; video/x-raw-yuv"), "singledecoder", f->filename, &_inner_error_), _gst_caps_unref0 (_tmp2_), _tmp3_); +#line 1799 "clip.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 333 "clip.vala" + _tmp4_ = &MODEL_FETCHER (self)->pipeline; +#line 333 "clip.vala" + (*_tmp4_) = (_tmp5_ = (GstPipeline*) gst_pipeline_new ("pipeline"), _gst_object_unref0 ((*_tmp4_)), _tmp5_); +#line 334 "clip.vala" + gst_pipeline_set_auto_flush_bus (MODEL_FETCHER (self)->pipeline, FALSE); +#line 336 "clip.vala" + self->priv->thumbnail_sink = (_tmp6_ = thumbnail_sink_new (), _gst_object_unref0 (self->priv->thumbnail_sink), _tmp6_); +#line 337 "clip.vala" + g_signal_connect_object (self->priv->thumbnail_sink, "have-thumbnail", (GCallback) _model_thumbnail_fetcher_on_have_thumbnail_thumbnail_sink_have_thumbnail, self, 0); +#line 339 "clip.vala" + _tmp7_ = make_element ("ffmpegcolorspace", &_inner_error_); +#line 1817 "clip.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (single_bin); + g_object_unref (self); + return NULL; + } +#line 339 "clip.vala" + self->priv->colorspace = (_tmp8_ = _tmp7_, _gst_object_unref0 (self->priv->colorspace), _tmp8_); +#line 341 "clip.vala" + gst_bin_add_many (GST_BIN (MODEL_FETCHER (self)->pipeline), _gst_object_ref0 (GST_ELEMENT (single_bin)), _gst_object_ref0 (GST_ELEMENT (self->priv->thumbnail_sink)), _gst_object_ref0 (self->priv->colorspace), NULL); +#line 343 "clip.vala" + g_signal_connect_object (GST_ELEMENT (single_bin), "pad-added", (GCallback) _model_fetcher_on_pad_added_gst_element_pad_added, MODEL_FETCHER (self), 0); +#line 345 "clip.vala" + gst_element_link (self->priv->colorspace, GST_ELEMENT (self->priv->thumbnail_sink)); +#line 347 "clip.vala" + bus = gst_pipeline_get_bus (MODEL_FETCHER (self)->pipeline); +#line 349 "clip.vala" + gst_bus_add_signal_watch (bus); +#line 350 "clip.vala" + g_signal_connect_object (bus, "message::state-changed", (GCallback) _model_fetcher_on_state_change_gst_bus_message, MODEL_FETCHER (self), 0); +#line 351 "clip.vala" + g_signal_connect_object (bus, "message::error", (GCallback) _model_fetcher_on_error_gst_bus_message, MODEL_FETCHER (self), 0); +#line 352 "clip.vala" + g_signal_connect_object (bus, "message::warning", (GCallback) _model_fetcher_on_warning_gst_bus_message, MODEL_FETCHER (self), 0); +#line 354 "clip.vala" + self->priv->have_thumbnail = FALSE; +#line 355 "clip.vala" + self->priv->done_seek = FALSE; +#line 356 "clip.vala" + gst_element_set_state (GST_ELEMENT (MODEL_FETCHER (self)->pipeline), GST_STATE_PAUSED); +#line 1848 "clip.c" + _gst_object_unref0 (single_bin); + _gst_object_unref0 (bus); + return self; +} + + +#line 325 "clip.vala" +ModelThumbnailFetcher* model_thumbnail_fetcher_new (ModelClipFile* f, gint64 time, GError** error) { +#line 325 "clip.vala" + return model_thumbnail_fetcher_construct (MODEL_TYPE_THUMBNAIL_FETCHER, f, time, error); +#line 1859 "clip.c" +} + + +#line 359 "clip.vala" +static void model_thumbnail_fetcher_on_have_thumbnail (ModelThumbnailFetcher* self, GdkPixbuf* buf) { +#line 359 "clip.vala" + g_return_if_fail (MODEL_IS_THUMBNAIL_FETCHER (self)); +#line 359 "clip.vala" + g_return_if_fail (GDK_IS_PIXBUF (buf)); +#line 360 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_have_thumbnail"); +#line 361 "clip.vala" + if (self->priv->done_seek) { +#line 362 "clip.vala" + self->priv->have_thumbnail = TRUE; +#line 363 "clip.vala" + model_clip_file_set_thumbnail (MODEL_FETCHER (self)->clipfile, buf); +#line 1877 "clip.c" + } +} + + +#line 367 "clip.vala" +static void model_thumbnail_fetcher_real_on_pad_added (ModelFetcher* base, GstPad* pad) { +#line 1884 "clip.c" + ModelThumbnailFetcher * self; + GstCaps* c; + char* _tmp0_; + gboolean _tmp1_; + self = MODEL_THUMBNAIL_FETCHER (base); +#line 367 "clip.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 368 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pad_added"); +#line 369 "clip.vala" + c = gst_pad_get_caps (pad); +#line 371 "clip.vala" + if ((_tmp1_ = g_str_has_prefix (_tmp0_ = gst_caps_to_string (c), "video"), _g_free0 (_tmp0_), _tmp1_)) { +#line 1898 "clip.c" + GstPad* _tmp2_; +#line 372 "clip.vala" + gst_pad_link (pad, _tmp2_ = gst_element_get_static_pad (self->priv->colorspace, "sink")); +#line 1902 "clip.c" + _gst_object_unref0 (_tmp2_); + } + _gst_caps_unref0 (c); +} + + +#line 376 "clip.vala" +static void model_thumbnail_fetcher_real_on_state_change (ModelFetcher* base, GstBus* bus, GstMessage* message) { +#line 1911 "clip.c" + ModelThumbnailFetcher * self; + GstState new_state = 0; + GstState old_state = 0; + GstState pending_state = 0; + gboolean _tmp0_ = FALSE; + self = MODEL_THUMBNAIL_FETCHER (base); +#line 376 "clip.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 376 "clip.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 377 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_state_change"); +#line 378 "clip.vala" + if (message->src != GST_OBJECT (MODEL_FETCHER (self)->pipeline)) { +#line 379 "clip.vala" + return; +#line 1928 "clip.c" + } +#line 385 "clip.vala" + gst_message_parse_state_changed (message, &old_state, &new_state, &pending_state); +#line 386 "clip.vala" + if (new_state == old_state) { +#line 387 "clip.vala" + _tmp0_ = new_state != GST_STATE_PAUSED; +#line 1936 "clip.c" + } else { +#line 386 "clip.vala" + _tmp0_ = FALSE; +#line 1940 "clip.c" + } +#line 386 "clip.vala" + if (_tmp0_) { +#line 388 "clip.vala" + return; +#line 1946 "clip.c" + } +#line 390 "clip.vala" + if (new_state == GST_STATE_PAUSED) { +#line 391 "clip.vala" + if (!self->priv->done_seek) { +#line 392 "clip.vala" + self->priv->done_seek = TRUE; +#line 393 "clip.vala" + gst_element_seek_simple (GST_ELEMENT (MODEL_FETCHER (self)->pipeline), GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, self->priv->seek_position); +#line 1956 "clip.c" + } else { +#line 395 "clip.vala" + if (self->priv->have_thumbnail) { +#line 396 "clip.vala" + gst_element_set_state (GST_ELEMENT (MODEL_FETCHER (self)->pipeline), GST_STATE_NULL); +#line 1962 "clip.c" + } + } + } else { +#line 398 "clip.vala" + if (new_state == GST_STATE_NULL) { +#line 399 "clip.vala" + g_signal_emit_by_name (MODEL_FETCHER (self), "ready", MODEL_FETCHER (self)); +#line 1970 "clip.c" + } + } +} + + +static void model_thumbnail_fetcher_class_init (ModelThumbnailFetcherClass * klass) { + model_thumbnail_fetcher_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelThumbnailFetcherPrivate)); + MODEL_FETCHER_CLASS (klass)->on_pad_added = model_thumbnail_fetcher_real_on_pad_added; + MODEL_FETCHER_CLASS (klass)->on_state_change = model_thumbnail_fetcher_real_on_state_change; + G_OBJECT_CLASS (klass)->finalize = model_thumbnail_fetcher_finalize; +} + + +static void model_thumbnail_fetcher_instance_init (ModelThumbnailFetcher * self) { + self->priv = MODEL_THUMBNAIL_FETCHER_GET_PRIVATE (self); +} + + +static void model_thumbnail_fetcher_finalize (GObject* obj) { + ModelThumbnailFetcher * self; + self = MODEL_THUMBNAIL_FETCHER (obj); + _gst_object_unref0 (self->priv->thumbnail_sink); + _gst_object_unref0 (self->priv->colorspace); + G_OBJECT_CLASS (model_thumbnail_fetcher_parent_class)->finalize (obj); +} + + +GType model_thumbnail_fetcher_get_type (void) { + static volatile gsize model_thumbnail_fetcher_type_id__volatile = 0; + if (g_once_init_enter (&model_thumbnail_fetcher_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelThumbnailFetcherClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_thumbnail_fetcher_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelThumbnailFetcher), 0, (GInstanceInitFunc) model_thumbnail_fetcher_instance_init, NULL }; + GType model_thumbnail_fetcher_type_id; + model_thumbnail_fetcher_type_id = g_type_register_static (MODEL_TYPE_FETCHER, "ModelThumbnailFetcher", &g_define_type_info, 0); + g_once_init_leave (&model_thumbnail_fetcher_type_id__volatile, model_thumbnail_fetcher_type_id); + } + return model_thumbnail_fetcher_type_id__volatile; +} + + +#line 488 "clip.vala" +static void _model_clip_on_clipfile_updated_model_clip_file_updated (ModelClipFile* _sender, gpointer self) { +#line 2013 "clip.c" + model_clip_on_clipfile_updated (self, _sender); +} + + +#line 473 "clip.vala" +ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording) { +#line 2020 "clip.c" + ModelClip * self; + ModelClipFile* _tmp0_; + char* _tmp1_; +#line 473 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (clipfile), NULL); +#line 473 "clip.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 473 "clip.vala" + self = (ModelClip*) g_object_new (object_type, NULL); +#line 475 "clip.vala" + self->is_recording = is_recording; +#line 476 "clip.vala" + self->clipfile = (_tmp0_ = _g_object_ref0 (clipfile), _g_object_unref0 (self->clipfile), _tmp0_); +#line 477 "clip.vala" + self->type = t; +#line 478 "clip.vala" + self->name = (_tmp1_ = g_strdup (name), _g_free0 (self->name), _tmp1_); +#line 479 "clip.vala" + self->priv->connected = model_clip_file_is_online (clipfile); +#line 480 "clip.vala" + model_clip_set_media_start_duration (self, media_start, duration); +#line 481 "clip.vala" + model_clip_set_start (self, start); +#line 482 "clip.vala" + g_signal_connect_object (clipfile, "updated", (GCallback) _model_clip_on_clipfile_updated_model_clip_file_updated, self, 0); +#line 2046 "clip.c" + return self; +} + + +#line 473 "clip.vala" +ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording) { +#line 473 "clip.vala" + return model_clip_construct (MODEL_TYPE_CLIP, clipfile, t, name, start, media_start, duration, is_recording); +#line 2055 "clip.c" +} + + +#line 485 "clip.vala" +void model_clip_gnonlin_connect (ModelClip* self) { +#line 485 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 485 "clip.vala" + self->priv->connected = TRUE; +#line 2065 "clip.c" +} + + +#line 486 "clip.vala" +void model_clip_gnonlin_disconnect (ModelClip* self) { +#line 486 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 486 "clip.vala" + self->priv->connected = FALSE; +#line 2075 "clip.c" +} + + +#line 488 "clip.vala" +static void model_clip_on_clipfile_updated (ModelClip* self, ModelClipFile* f) { +#line 488 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 488 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 489 "clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clipfile_updated"); +#line 490 "clip.vala" + if (model_clip_file_is_online (f)) { +#line 491 "clip.vala" + if (!self->priv->connected) { +#line 492 "clip.vala" + self->priv->connected = TRUE; +#line 496 "clip.vala" + model_clip_set_media_start_duration (self, model_clip_get_media_start (self), model_clip_get_duration (self)); +#line 498 "clip.vala" + model_clip_set_start (self, model_clip_get_start (self)); +#line 2097 "clip.c" + } + } else { +#line 501 "clip.vala" + if (self->priv->connected) { +#line 502 "clip.vala" + self->priv->connected = FALSE; +#line 2104 "clip.c" + } + } +#line 505 "clip.vala" + g_signal_emit_by_name (self, "updated", self); +#line 2109 "clip.c" +} + + +#line 508 "clip.vala" +gboolean model_clip_overlap_pos (ModelClip* self, gint64 start, gint64 length) { +#line 2115 "clip.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; +#line 508 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP (self), FALSE); +#line 509 "clip.vala" + if (start < (model_clip_get_start (self) + model_clip_get_duration (self))) { +#line 510 "clip.vala" + _tmp0_ = model_clip_get_start (self) < (start + length); +#line 2124 "clip.c" + } else { +#line 509 "clip.vala" + _tmp0_ = FALSE; +#line 2128 "clip.c" + } + result = _tmp0_; +#line 509 "clip.vala" + return result; +#line 2133 "clip.c" +} + + +#line 513 "clip.vala" +gint64 model_clip_snap (ModelClip* self, ModelClip* other, gint64 pad) { +#line 2139 "clip.c" + gint64 result = 0LL; +#line 513 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP (self), 0LL); +#line 513 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP (other), 0LL); +#line 514 "clip.vala" + if (time_in_range (model_clip_get_start (self), model_clip_get_start (other), pad)) { +#line 2147 "clip.c" + result = model_clip_get_start (other); +#line 515 "clip.vala" + return result; +#line 2151 "clip.c" + } else { +#line 516 "clip.vala" + if (time_in_range (model_clip_get_start (self), model_clip_get_end (other), pad)) { +#line 2155 "clip.c" + result = model_clip_get_end (other); +#line 517 "clip.vala" + return result; +#line 2159 "clip.c" + } else { +#line 518 "clip.vala" + if (time_in_range (model_clip_get_end (self), model_clip_get_start (other), pad)) { +#line 2163 "clip.c" + result = model_clip_get_start (other) - model_clip_get_duration (self); +#line 519 "clip.vala" + return result; +#line 2167 "clip.c" + } else { +#line 520 "clip.vala" + if (time_in_range (model_clip_get_end (self), model_clip_get_end (other), pad)) { +#line 2171 "clip.c" + result = model_clip_get_end (other) - model_clip_get_duration (self); +#line 521 "clip.vala" + return result; +#line 2175 "clip.c" + } + } + } + } + result = model_clip_get_start (self); +#line 523 "clip.vala" + return result; +#line 2183 "clip.c" +} + + +#line 526 "clip.vala" +gboolean model_clip_snap_coord (ModelClip* self, gint64* s, gint64 span) { +#line 2189 "clip.c" + gboolean result = FALSE; +#line 526 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP (self), FALSE); +#line 527 "clip.vala" + if (time_in_range (*s, model_clip_get_start (self), span)) { +#line 528 "clip.vala" + *s = model_clip_get_start (self); +#line 2197 "clip.c" + result = TRUE; +#line 529 "clip.vala" + return result; +#line 2201 "clip.c" + } else { +#line 530 "clip.vala" + if (time_in_range (*s, model_clip_get_end (self), span)) { +#line 531 "clip.vala" + *s = model_clip_get_end (self); +#line 2207 "clip.c" + result = TRUE; +#line 532 "clip.vala" + return result; +#line 2211 "clip.c" + } + } + result = FALSE; +#line 534 "clip.vala" + return result; +#line 2217 "clip.c" +} + + +#line 537 "clip.vala" +ModelClip* model_clip_copy (ModelClip* self) { +#line 2223 "clip.c" + ModelClip* result = NULL; +#line 537 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP (self), NULL); +#line 2227 "clip.c" + result = model_clip_new (self->clipfile, self->type, self->name, model_clip_get_start (self), model_clip_get_media_start (self), model_clip_get_duration (self), FALSE); +#line 538 "clip.vala" + return result; +#line 2231 "clip.c" +} + + +#line 541 "clip.vala" +gboolean model_clip_is_trimmed (ModelClip* self) { +#line 2237 "clip.c" + gboolean result = FALSE; +#line 541 "clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP (self), FALSE); +#line 542 "clip.vala" + if (!model_clip_file_is_online (self->clipfile)) { +#line 2243 "clip.c" + result = FALSE; +#line 543 "clip.vala" + return result; +#line 2247 "clip.c" + } + result = model_clip_get_duration (self) != model_clip_file_get_length (self->clipfile); +#line 544 "clip.vala" + return result; +#line 2252 "clip.c" +} + + +#line 547 "clip.vala" +void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge) { +#line 547 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 548 "clip.vala" + switch (edge) { +#line 2262 "clip.c" + case GDK_WINDOW_EDGE_WEST: + { +#line 550 "clip.vala" + if ((model_clip_get_media_start (self) + delta) < 0) { +#line 551 "clip.vala" + delta = -model_clip_get_media_start (self); +#line 2269 "clip.c" + } +#line 554 "clip.vala" + if ((model_clip_get_duration (self) - delta) < 0) { +#line 555 "clip.vala" + delta = model_clip_get_duration (self); +#line 2275 "clip.c" + } +#line 558 "clip.vala" + model_clip_set_start (self, model_clip_get_start (self) + delta); +#line 559 "clip.vala" + model_clip_set_media_start_duration (self, model_clip_get_media_start (self) + delta, model_clip_get_duration (self) - delta); +#line 560 "clip.vala" + break; +#line 2283 "clip.c" + } + case GDK_WINDOW_EDGE_EAST: + { +#line 562 "clip.vala" + model_clip_set_duration (self, model_clip_get_duration (self) + delta); +#line 563 "clip.vala" + break; +#line 2291 "clip.c" + } + } +} + + +#line 567 "clip.vala" +void model_clip_set_media_start_duration (ModelClip* self, gint64 media_start, gint64 duration) { +#line 2299 "clip.c" + gboolean _tmp0_ = FALSE; +#line 567 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 568 "clip.vala" + if (media_start < 0) { +#line 569 "clip.vala" + media_start = (gint64) 0; +#line 2307 "clip.c" + } +#line 572 "clip.vala" + if (duration < 0) { +#line 573 "clip.vala" + duration = (gint64) 0; +#line 2313 "clip.c" + } +#line 576 "clip.vala" + if (model_clip_file_is_online (self->clipfile)) { +#line 576 "clip.vala" + _tmp0_ = (media_start + duration) > model_clip_file_get_length (self->clipfile); +#line 2319 "clip.c" + } else { +#line 576 "clip.vala" + _tmp0_ = FALSE; +#line 2323 "clip.c" + } +#line 576 "clip.vala" + if (_tmp0_) { +#line 578 "clip.vala" + media_start = model_clip_file_get_length (self->clipfile) - duration; +#line 2329 "clip.c" + } +#line 581 "clip.vala" + self->priv->_media_start = media_start; +#line 582 "clip.vala" + self->priv->_duration = duration; +#line 584 "clip.vala" + if (self->priv->connected) { +#line 585 "clip.vala" + g_signal_emit_by_name (self, "media-start-changed", self->priv->_media_start); +#line 586 "clip.vala" + g_signal_emit_by_name (self, "duration-changed", self->priv->_duration); +#line 2341 "clip.c" + } +#line 589 "clip.vala" + g_signal_emit_by_name (self, "moved", self); +#line 2345 "clip.c" +} + + +#line 592 "clip.vala" +void model_clip_save (ModelClip* self, FILE* f, gint id) { +#line 592 "clip.vala" + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 592 "clip.vala" + g_return_if_fail (f != NULL); +#line 593 "clip.vala" + fprintf (f, " \n", id, self->name, model_clip_get_start (self), model_clip_get_media_start (self), model_clip_get_duration (self)); +#line 2357 "clip.c" +} + + +gint64 model_clip_get_start (ModelClip* self) { + gint64 result; + g_return_val_if_fail (MODEL_IS_CLIP (self), 0LL); + result = self->priv->_start; +#line 414 "clip.vala" + return result; +#line 2367 "clip.c" +} + + +void model_clip_set_start (ModelClip* self, gint64 value) { + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 418 "clip.vala" + self->priv->_start = value; +#line 419 "clip.vala" + if (self->priv->connected) { +#line 420 "clip.vala" + g_signal_emit_by_name (self, "start-changed", self->priv->_start); +#line 2379 "clip.c" + } +#line 422 "clip.vala" + g_signal_emit_by_name (self, "moved", self); +#line 2383 "clip.c" + g_object_notify ((GObject *) self, "start"); +} + + +gint64 model_clip_get_media_start (ModelClip* self) { + gint64 result; + g_return_val_if_fail (MODEL_IS_CLIP (self), 0LL); + result = self->priv->_media_start; +#line 429 "clip.vala" + return result; +#line 2394 "clip.c" +} + + +gint64 model_clip_get_duration (ModelClip* self) { + gint64 result; + g_return_val_if_fail (MODEL_IS_CLIP (self), 0LL); + result = self->priv->_duration; +#line 436 "clip.vala" + return result; +#line 2404 "clip.c" +} + + +void model_clip_set_duration (ModelClip* self, gint64 value) { + g_return_if_fail (MODEL_IS_CLIP (self)); +#line 440 "clip.vala" + if (value < 0) { +#line 442 "clip.vala" + value = (gint64) 0; +#line 2414 "clip.c" + } +#line 445 "clip.vala" + if (!self->is_recording) { +#line 446 "clip.vala" + if ((value + self->priv->_media_start) > model_clip_file_get_length (self->clipfile)) { +#line 448 "clip.vala" + value = model_clip_file_get_length (self->clipfile) - model_clip_get_media_start (self); +#line 2422 "clip.c" + } + } +#line 452 "clip.vala" + self->priv->_duration = value; +#line 453 "clip.vala" + if (self->priv->connected) { +#line 454 "clip.vala" + g_signal_emit_by_name (self, "duration-changed", self->priv->_duration); +#line 2431 "clip.c" + } +#line 456 "clip.vala" + g_signal_emit_by_name (self, "moved", self); +#line 2435 "clip.c" + g_object_notify ((GObject *) self, "duration"); +} + + +gint64 model_clip_get_end (ModelClip* self) { + gint64 result; + g_return_val_if_fail (MODEL_IS_CLIP (self), 0LL); + result = model_clip_get_start (self) + model_clip_get_duration (self); +#line 463 "clip.vala" + return result; +#line 2446 "clip.c" +} + + +static void model_clip_class_init (ModelClipClass * klass) { + model_clip_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelClipPrivate)); + G_OBJECT_CLASS (klass)->get_property = model_clip_get_property; + G_OBJECT_CLASS (klass)->set_property = model_clip_set_property; + G_OBJECT_CLASS (klass)->finalize = model_clip_finalize; + g_object_class_install_property (G_OBJECT_CLASS (klass), MODEL_CLIP_START, g_param_spec_int64 ("start", "start", "start", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), MODEL_CLIP_MEDIA_START, g_param_spec_int64 ("media-start", "media-start", "media-start", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), MODEL_CLIP_DURATION, g_param_spec_int64 ("duration", "duration", "duration", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), MODEL_CLIP_END, g_param_spec_int64 ("end", "end", "end", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); + g_signal_new ("moved", MODEL_TYPE_CLIP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP); + g_signal_new ("updated", MODEL_TYPE_CLIP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP); + g_signal_new ("media_start_changed", MODEL_TYPE_CLIP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); + g_signal_new ("duration_changed", MODEL_TYPE_CLIP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); + g_signal_new ("start_changed", MODEL_TYPE_CLIP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); + g_signal_new ("removed", MODEL_TYPE_CLIP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP); +} + + +static void model_clip_instance_init (ModelClip * self) { + self->priv = MODEL_CLIP_GET_PRIVATE (self); +} + + +static void model_clip_finalize (GObject* obj) { + ModelClip * self; + self = MODEL_CLIP (obj); + _g_object_unref0 (self->clipfile); + _g_free0 (self->name); + G_OBJECT_CLASS (model_clip_parent_class)->finalize (obj); +} + + +GType model_clip_get_type (void) { + static volatile gsize model_clip_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClip), 0, (GInstanceInitFunc) model_clip_instance_init, NULL }; + GType model_clip_type_id; + model_clip_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelClip", &g_define_type_info, 0); + g_once_init_leave (&model_clip_type_id__volatile, model_clip_type_id); + } + return model_clip_type_id__volatile; +} + + +static void model_clip_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { + ModelClip * self; + self = MODEL_CLIP (object); + switch (property_id) { + case MODEL_CLIP_START: + g_value_set_int64 (value, model_clip_get_start (self)); + break; + case MODEL_CLIP_MEDIA_START: + g_value_set_int64 (value, model_clip_get_media_start (self)); + break; + case MODEL_CLIP_DURATION: + g_value_set_int64 (value, model_clip_get_duration (self)); + break; + case MODEL_CLIP_END: + g_value_set_int64 (value, model_clip_get_end (self)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void model_clip_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { + ModelClip * self; + self = MODEL_CLIP (object); + switch (property_id) { + case MODEL_CLIP_START: + model_clip_set_start (self, g_value_get_int64 (value)); + break; + case MODEL_CLIP_DURATION: + model_clip_set_duration (self, g_value_get_int64 (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +#line 601 "clip.vala" +ModelFetcherCompletion* model_fetcher_completion_construct (GType object_type) { +#line 2537 "clip.c" + ModelFetcherCompletion* self; + self = (ModelFetcherCompletion*) g_type_create_instance (object_type); + return self; +} + + +#line 601 "clip.vala" +ModelFetcherCompletion* model_fetcher_completion_new (void) { +#line 601 "clip.vala" + return model_fetcher_completion_construct (MODEL_TYPE_FETCHER_COMPLETION); +#line 2548 "clip.c" +} + + +#line 604 "clip.vala" +static void model_fetcher_completion_real_complete (ModelFetcherCompletion* self, ModelFetcher* fetcher) { +#line 604 "clip.vala" + g_return_if_fail (MODEL_IS_FETCHER_COMPLETION (self)); +#line 604 "clip.vala" + g_return_if_fail (MODEL_IS_FETCHER (fetcher)); +#line 2558 "clip.c" +} + + +#line 604 "clip.vala" +void model_fetcher_completion_complete (ModelFetcherCompletion* self, ModelFetcher* fetcher) { +#line 604 "clip.vala" + MODEL_FETCHER_COMPLETION_GET_CLASS (self)->complete (self, fetcher); +#line 2566 "clip.c" +} + + +static void model_value_fetcher_completion_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_fetcher_completion_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_fetcher_completion_unref (value->data[0].v_pointer); + } +} + + +static void model_value_fetcher_completion_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_fetcher_completion_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_fetcher_completion_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_fetcher_completion_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelFetcherCompletion* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_fetcher_completion_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_fetcher_completion_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelFetcherCompletion** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_fetcher_completion_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_fetcher_completion (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecFetcherCompletion* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_FETCHER_COMPLETION), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_fetcher_completion (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_FETCHER_COMPLETION), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_fetcher_completion (GValue* value, gpointer v_object) { + ModelFetcherCompletion* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_FETCHER_COMPLETION)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_FETCHER_COMPLETION)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_fetcher_completion_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_fetcher_completion_unref (old); + } +} + + +void model_value_take_fetcher_completion (GValue* value, gpointer v_object) { + ModelFetcherCompletion* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_FETCHER_COMPLETION)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_FETCHER_COMPLETION)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_fetcher_completion_unref (old); + } +} + + +static void model_fetcher_completion_class_init (ModelFetcherCompletionClass * klass) { + model_fetcher_completion_parent_class = g_type_class_peek_parent (klass); + MODEL_FETCHER_COMPLETION_CLASS (klass)->finalize = model_fetcher_completion_finalize; + MODEL_FETCHER_COMPLETION_CLASS (klass)->complete = model_fetcher_completion_real_complete; +} + + +static void model_fetcher_completion_instance_init (ModelFetcherCompletion * self) { + self->ref_count = 1; +} + + +static void model_fetcher_completion_finalize (ModelFetcherCompletion* obj) { + ModelFetcherCompletion * self; + self = MODEL_FETCHER_COMPLETION (obj); +} + + +GType model_fetcher_completion_get_type (void) { + static volatile gsize model_fetcher_completion_type_id__volatile = 0; + if (g_once_init_enter (&model_fetcher_completion_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_fetcher_completion_init, model_value_fetcher_completion_free_value, model_value_fetcher_completion_copy_value, model_value_fetcher_completion_peek_pointer, "p", model_value_fetcher_completion_collect_value, "p", model_value_fetcher_completion_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelFetcherCompletionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_fetcher_completion_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelFetcherCompletion), 0, (GInstanceInitFunc) model_fetcher_completion_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_fetcher_completion_type_id; + model_fetcher_completion_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelFetcherCompletion", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_fetcher_completion_type_id__volatile, model_fetcher_completion_type_id); + } + return model_fetcher_completion_type_id__volatile; +} + + +gpointer model_fetcher_completion_ref (gpointer instance) { + ModelFetcherCompletion* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_fetcher_completion_unref (gpointer instance) { + ModelFetcherCompletion* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_FETCHER_COMPLETION_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + + +static void g_cclosure_user_marshal_VOID__INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__INT64) (gpointer data1, gint64 arg_1, gpointer data2); + register GMarshalFunc_VOID__INT64 callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 2); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__INT64) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_int64 (param_values + 1), data2); +} + + + diff --git a/src/marina/marina/clip.o b/src/marina/marina/clip.o new file mode 100644 index 0000000000000000000000000000000000000000..ab17fb14a6d327b149835c08515bc27ca9f8c812 GIT binary patch literal 168520 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 literal 0 HcmV?d00001 diff --git a/src/marina/marina/command.c b/src/marina/marina/command.c new file mode 100644 index 0000000..39837b2 --- /dev/null +++ b/src/marina/marina/command.c @@ -0,0 +1,2462 @@ +/* command.c generated by valac, the Vala compiler + * generated from command.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_COMMAND (model_command_get_type ()) +#define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand)) +#define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass)) +#define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND)) +#define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND)) +#define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass)) + +typedef struct _ModelCommand ModelCommand; +typedef struct _ModelCommandClass ModelCommandClass; +typedef struct _ModelCommandPrivate ModelCommandPrivate; +typedef struct _ModelParamSpecCommand ModelParamSpecCommand; + +#define MODEL_TYPE_PARAMETER (model_parameter_get_type ()) + +#define MODEL_TYPE_PARAMETER_COMMAND (model_parameter_command_get_type ()) +#define MODEL_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommand)) +#define MODEL_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass)) +#define MODEL_IS_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PARAMETER_COMMAND)) +#define MODEL_IS_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PARAMETER_COMMAND)) +#define MODEL_PARAMETER_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass)) + +typedef struct _ModelParameterCommand ModelParameterCommand; +typedef struct _ModelParameterCommandClass ModelParameterCommandClass; +typedef struct _ModelParameterCommandPrivate ModelParameterCommandPrivate; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ()) +#define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack)) +#define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) +#define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) + +typedef struct _ModelAudioTrack ModelAudioTrack; +typedef struct _ModelAudioTrackClass ModelAudioTrackClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _model_command_unref0(var) ((var == NULL) ? NULL : (var = (model_command_unref (var), NULL))) + +#define MODEL_TYPE_CLIP_COMMAND (model_clip_command_get_type ()) +#define MODEL_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommand)) +#define MODEL_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass)) +#define MODEL_IS_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_COMMAND)) +#define MODEL_IS_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_COMMAND)) +#define MODEL_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass)) + +typedef struct _ModelClipCommand ModelClipCommand; +typedef struct _ModelClipCommandClass ModelClipCommandClass; +typedef struct _ModelClipCommandPrivate ModelClipCommandPrivate; + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; + +#define MODEL_CLIP_COMMAND_TYPE_ACTION (model_clip_command_action_get_type ()) + +#define MODEL_TYPE_CLIP_ADD_COMMAND (model_clip_add_command_get_type ()) +#define MODEL_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommand)) +#define MODEL_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass)) +#define MODEL_IS_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_ADD_COMMAND)) +#define MODEL_IS_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_ADD_COMMAND)) +#define MODEL_CLIP_ADD_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass)) + +typedef struct _ModelClipAddCommand ModelClipAddCommand; +typedef struct _ModelClipAddCommandClass ModelClipAddCommandClass; +typedef struct _ModelClipAddCommandPrivate ModelClipAddCommandPrivate; + +#define MODEL_TYPE_CLIP_SPLIT_COMMAND (model_clip_split_command_get_type ()) +#define MODEL_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommand)) +#define MODEL_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass)) +#define MODEL_IS_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND)) +#define MODEL_IS_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND)) +#define MODEL_CLIP_SPLIT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass)) + +typedef struct _ModelClipSplitCommand ModelClipSplitCommand; +typedef struct _ModelClipSplitCommandClass ModelClipSplitCommandClass; +typedef struct _ModelClipSplitCommandPrivate ModelClipSplitCommandPrivate; + +#define MODEL_CLIP_SPLIT_COMMAND_TYPE_ACTION (model_clip_split_command_action_get_type ()) + +#define MODEL_TYPE_CLIP_FILE_DELETE_COMMAND (model_clip_file_delete_command_get_type ()) +#define MODEL_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommand)) +#define MODEL_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass)) +#define MODEL_IS_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND)) +#define MODEL_IS_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND)) +#define MODEL_CLIP_FILE_DELETE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass)) + +typedef struct _ModelClipFileDeleteCommand ModelClipFileDeleteCommand; +typedef struct _ModelClipFileDeleteCommandClass ModelClipFileDeleteCommandClass; +typedef struct _ModelClipFileDeleteCommandPrivate ModelClipFileDeleteCommandPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +#define MODEL_TYPE_CLIP_TRIM_COMMAND (model_clip_trim_command_get_type ()) +#define MODEL_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommand)) +#define MODEL_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass)) +#define MODEL_IS_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND)) +#define MODEL_IS_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND)) +#define MODEL_CLIP_TRIM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass)) + +typedef struct _ModelClipTrimCommand ModelClipTrimCommand; +typedef struct _ModelClipTrimCommandClass ModelClipTrimCommandClass; +typedef struct _ModelClipTrimCommandPrivate ModelClipTrimCommandPrivate; + +#define MODEL_TYPE_CLIP_REVERT_COMMAND (model_clip_revert_command_get_type ()) +#define MODEL_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommand)) +#define MODEL_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass)) +#define MODEL_IS_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND)) +#define MODEL_IS_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND)) +#define MODEL_CLIP_REVERT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass)) + +typedef struct _ModelClipRevertCommand ModelClipRevertCommand; +typedef struct _ModelClipRevertCommandClass ModelClipRevertCommandClass; +typedef struct _ModelClipRevertCommandPrivate ModelClipRevertCommandPrivate; + +#define MODEL_TYPE_TIME_SIGNATURE_COMMAND (model_time_signature_command_get_type ()) +#define MODEL_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommand)) +#define MODEL_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass)) +#define MODEL_IS_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND)) +#define MODEL_IS_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND)) +#define MODEL_TIME_SIGNATURE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass)) + +typedef struct _ModelTimeSignatureCommand ModelTimeSignatureCommand; +typedef struct _ModelTimeSignatureCommandClass ModelTimeSignatureCommandClass; +typedef struct _ModelTimeSignatureCommandPrivate ModelTimeSignatureCommandPrivate; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define MODEL_TYPE_BPM_COMMAND (model_bpm_command_get_type ()) +#define MODEL_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommand)) +#define MODEL_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass)) +#define MODEL_IS_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_BPM_COMMAND)) +#define MODEL_IS_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_BPM_COMMAND)) +#define MODEL_BPM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass)) + +typedef struct _ModelBpmCommand ModelBpmCommand; +typedef struct _ModelBpmCommandClass ModelBpmCommandClass; +typedef struct _ModelBpmCommandPrivate ModelBpmCommandPrivate; + +#define MODEL_TYPE_ADD_CLIP_COMMAND (model_add_clip_command_get_type ()) +#define MODEL_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommand)) +#define MODEL_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass)) +#define MODEL_IS_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_ADD_CLIP_COMMAND)) +#define MODEL_IS_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_ADD_CLIP_COMMAND)) +#define MODEL_ADD_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass)) + +typedef struct _ModelAddClipCommand ModelAddClipCommand; +typedef struct _ModelAddClipCommandClass ModelAddClipCommandClass; +typedef struct _ModelAddClipCommandPrivate ModelAddClipCommandPrivate; + +#define MODEL_TYPE_TRANSACTION_COMMAND (model_transaction_command_get_type ()) +#define MODEL_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommand)) +#define MODEL_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass)) +#define MODEL_IS_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRANSACTION_COMMAND)) +#define MODEL_IS_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRANSACTION_COMMAND)) +#define MODEL_TRANSACTION_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass)) + +typedef struct _ModelTransactionCommand ModelTransactionCommand; +typedef struct _ModelTransactionCommandClass ModelTransactionCommandClass; +typedef struct _ModelTransactionCommandPrivate ModelTransactionCommandPrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) + +struct _ModelCommand { + GTypeInstance parent_instance; + volatile int ref_count; + ModelCommandPrivate * priv; +}; + +struct _ModelCommandClass { + GTypeClass parent_class; + void (*finalize) (ModelCommand *self); + void (*apply) (ModelCommand* self); + void (*undo) (ModelCommand* self); + gboolean (*merge) (ModelCommand* self, ModelCommand* command); + char* (*description) (ModelCommand* self); +}; + +struct _ModelParamSpecCommand { + GParamSpec parent_instance; +}; + +typedef enum { + MODEL_PARAMETER_PAN, + MODEL_PARAMETER_VOLUME +} ModelParameter; + +struct _ModelParameterCommand { + ModelCommand parent_instance; + ModelParameterCommandPrivate * priv; +}; + +struct _ModelParameterCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelParameterCommandPrivate { + ModelAudioTrack* target; + ModelParameter parameter; + double delta; +}; + +struct _ModelClipCommand { + ModelCommand parent_instance; + ModelClipCommandPrivate * priv; +}; + +struct _ModelClipCommandClass { + ModelCommandClass parent_class; +}; + +typedef enum { + MODEL_CLIP_COMMAND_ACTION_APPEND, + MODEL_CLIP_COMMAND_ACTION_DELETE +} ModelClipCommandAction; + +struct _ModelClipCommandPrivate { + ModelTrack* track; + ModelClip* clip; + gint64 time; + ModelClipCommandAction action; + gint index; + gboolean select; +}; + +struct _ModelClipAddCommand { + ModelCommand parent_instance; + ModelClipAddCommandPrivate * priv; +}; + +struct _ModelClipAddCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipAddCommandPrivate { + ModelTrack* track; + ModelClip* clip; + gint64 delta; +}; + +struct _ModelClipSplitCommand { + ModelCommand parent_instance; + ModelClipSplitCommandPrivate * priv; +}; + +struct _ModelClipSplitCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipSplitCommandPrivate { + ModelTrack* track; + gint64 time; + gboolean do_split; +}; + +typedef enum { + MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT, + MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN +} ModelClipSplitCommandAction; + +struct _ModelClipFileDeleteCommand { + ModelCommand parent_instance; + ModelClipFileDeleteCommandPrivate * priv; +}; + +struct _ModelClipFileDeleteCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipFileDeleteCommandPrivate { + ModelClipFile* clipfile; + ModelProject* project; +}; + +struct _ModelClipTrimCommand { + ModelCommand parent_instance; + ModelClipTrimCommandPrivate * priv; +}; + +struct _ModelClipTrimCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipTrimCommandPrivate { + ModelTrack* track; + ModelClip* clip; + gint64 delta; + GdkWindowEdge edge; +}; + +struct _ModelClipRevertCommand { + ModelCommand parent_instance; + ModelClipRevertCommandPrivate * priv; +}; + +struct _ModelClipRevertCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipRevertCommandPrivate { + ModelTrack* track; + ModelClip* clip; + gint64 left_delta; + gint64 right_delta; +}; + +struct _ModelTimeSignatureCommand { + ModelCommand parent_instance; + ModelTimeSignatureCommandPrivate * priv; +}; + +struct _ModelTimeSignatureCommandClass { + ModelCommandClass parent_class; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTimeSignatureCommandPrivate { + Fraction new_time_signature; + Fraction old_time_signature; + ModelProject* project; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _ModelBpmCommand { + ModelCommand parent_instance; + ModelBpmCommandPrivate * priv; +}; + +struct _ModelBpmCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelBpmCommandPrivate { + gint delta; + ModelProject* project; +}; + +struct _ModelAddClipCommand { + ModelCommand parent_instance; + ModelAddClipCommandPrivate * priv; +}; + +struct _ModelAddClipCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelAddClipCommandPrivate { + ModelClipFile* clip_file; + ModelProject* project; +}; + +struct _ModelTransactionCommand { + ModelCommand parent_instance; + ModelTransactionCommandPrivate * priv; +}; + +struct _ModelTransactionCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelTransactionCommandPrivate { + gboolean open; + char* transaction_description; +}; + + +static gpointer model_command_parent_class = NULL; +static gpointer model_parameter_command_parent_class = NULL; +static gpointer model_clip_command_parent_class = NULL; +static gpointer model_clip_add_command_parent_class = NULL; +static gpointer model_clip_split_command_parent_class = NULL; +static gpointer model_clip_file_delete_command_parent_class = NULL; +static gpointer model_clip_trim_command_parent_class = NULL; +static gpointer model_clip_revert_command_parent_class = NULL; +static gpointer model_time_signature_command_parent_class = NULL; +static gpointer model_bpm_command_parent_class = NULL; +static gpointer model_add_clip_command_parent_class = NULL; +static gpointer model_transaction_command_parent_class = NULL; + +gpointer model_command_ref (gpointer instance); +void model_command_unref (gpointer instance); +GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_command (GValue* value, gpointer v_object); +void model_value_take_command (GValue* value, gpointer v_object); +gpointer model_value_get_command (const GValue* value); +GType model_command_get_type (void); +enum { + MODEL_COMMAND_DUMMY_PROPERTY +}; +void model_command_apply (ModelCommand* self); +static void model_command_real_apply (ModelCommand* self); +void model_command_undo (ModelCommand* self); +static void model_command_real_undo (ModelCommand* self); +gboolean model_command_merge (ModelCommand* self, ModelCommand* command); +static gboolean model_command_real_merge (ModelCommand* self, ModelCommand* command); +char* model_command_description (ModelCommand* self); +static char* model_command_real_description (ModelCommand* self); +ModelCommand* model_command_construct (GType object_type); +static void model_command_finalize (ModelCommand* obj); +GType model_parameter_get_type (void); +GType model_parameter_command_get_type (void); +GType model_track_get_type (void); +GType model_audio_track_get_type (void); +#define MODEL_PARAMETER_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandPrivate)) +enum { + MODEL_PARAMETER_COMMAND_DUMMY_PROPERTY +}; +ModelParameterCommand* model_parameter_command_new (ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value); +ModelParameterCommand* model_parameter_command_construct (GType object_type, ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value); +void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value); +double model_audio_track_get_pan (ModelAudioTrack* self); +void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume); +double model_audio_track_get_volume (ModelAudioTrack* self); +static void model_parameter_command_change_parameter (ModelParameterCommand* self, double amount); +static void model_parameter_command_real_apply (ModelCommand* base); +static void model_parameter_command_real_undo (ModelCommand* base); +static gboolean model_parameter_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_parameter_command_real_description (ModelCommand* base); +static void model_parameter_command_finalize (ModelCommand* obj); +GType model_clip_command_get_type (void); +GType model_clip_get_type (void); +GType model_clip_command_action_get_type (void); +#define MODEL_CLIP_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandPrivate)) +enum { + MODEL_CLIP_COMMAND_DUMMY_PROPERTY +}; +gint model_track_get_clip_index (ModelTrack* self, ModelClip* c); +ModelClipCommand* model_clip_command_new (ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select); +ModelClipCommand* model_clip_command_construct (GType object_type, ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select); +void _model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select); +void _model_track_delete_clip (ModelTrack* self, ModelClip* clip); +static void model_clip_command_real_apply (ModelCommand* base); +void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select); +static void model_clip_command_real_undo (ModelCommand* base); +static gboolean model_clip_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_clip_command_real_description (ModelCommand* base); +static void model_clip_command_finalize (ModelCommand* obj); +GType model_clip_add_command_get_type (void); +#define MODEL_CLIP_ADD_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandPrivate)) +enum { + MODEL_CLIP_ADD_COMMAND_DUMMY_PROPERTY +}; +ModelClipAddCommand* model_clip_add_command_new (ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start); +ModelClipAddCommand* model_clip_add_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start); +void _model_track_move (ModelTrack* self, ModelClip* c, gint64 pos); +gint64 model_clip_get_start (ModelClip* self); +static void model_clip_add_command_real_apply (ModelCommand* base); +void model_track_remove_clip_from_array (ModelTrack* self, ModelClip* pos); +static void model_clip_add_command_real_undo (ModelCommand* base); +static gboolean model_clip_add_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_clip_add_command_real_description (ModelCommand* base); +static void model_clip_add_command_finalize (ModelCommand* obj); +GType model_clip_split_command_get_type (void); +#define MODEL_CLIP_SPLIT_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandPrivate)) +enum { + MODEL_CLIP_SPLIT_COMMAND_DUMMY_PROPERTY +}; +GType model_clip_split_command_action_get_type (void); +ModelClipSplitCommand* model_clip_split_command_new (ModelClipSplitCommandAction action, ModelTrack* track, gint64 time); +ModelClipSplitCommand* model_clip_split_command_construct (GType object_type, ModelClipSplitCommandAction action, ModelTrack* track, gint64 time); +void _model_track_split_at (ModelTrack* self, gint64 position); +void _model_track_join (ModelTrack* self, gint64 position); +static void model_clip_split_command_real_apply (ModelCommand* base); +static void model_clip_split_command_real_undo (ModelCommand* base); +static gboolean model_clip_split_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_clip_split_command_real_description (ModelCommand* base); +static void model_clip_split_command_finalize (ModelCommand* obj); +GType model_clip_file_delete_command_get_type (void); +GType model_clip_file_get_type (void); +GType model_project_get_type (void); +#define MODEL_CLIP_FILE_DELETE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandPrivate)) +enum { + MODEL_CLIP_FILE_DELETE_COMMAND_DUMMY_PROPERTY +}; +ModelClipFileDeleteCommand* model_clip_file_delete_command_new (ModelProject* p, ModelClipFile* cf); +ModelClipFileDeleteCommand* model_clip_file_delete_command_construct (GType object_type, ModelProject* p, ModelClipFile* cf); +void _model_project_remove_clipfile (ModelProject* self, ModelClipFile* cf); +static void model_clip_file_delete_command_real_apply (ModelCommand* base); +void _model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile, GError** error); +static void model_clip_file_delete_command_real_undo (ModelCommand* base); +static gboolean model_clip_file_delete_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_clip_file_delete_command_real_description (ModelCommand* base); +static void model_clip_file_delete_command_finalize (ModelCommand* obj); +GType model_clip_trim_command_get_type (void); +#define MODEL_CLIP_TRIM_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandPrivate)) +enum { + MODEL_CLIP_TRIM_COMMAND_DUMMY_PROPERTY +}; +ModelClipTrimCommand* model_clip_trim_command_new (ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +ModelClipTrimCommand* model_clip_trim_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +void _model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +static void model_clip_trim_command_real_apply (ModelCommand* base); +static void model_clip_trim_command_real_undo (ModelCommand* base); +static gboolean model_clip_trim_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_clip_trim_command_real_description (ModelCommand* base); +static void model_clip_trim_command_finalize (ModelCommand* obj); +GType model_clip_revert_command_get_type (void); +#define MODEL_CLIP_REVERT_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandPrivate)) +enum { + MODEL_CLIP_REVERT_COMMAND_DUMMY_PROPERTY +}; +ModelClipRevertCommand* model_clip_revert_command_new (ModelTrack* track, ModelClip* clip); +ModelClipRevertCommand* model_clip_revert_command_construct (GType object_type, ModelTrack* track, ModelClip* clip); +gint64 model_clip_get_end (ModelClip* self); +gint64 model_clip_get_media_start (ModelClip* self); +void _model_track_revert_to_original (ModelTrack* self, ModelClip* c); +static void model_clip_revert_command_real_apply (ModelCommand* base); +static void model_clip_revert_command_real_undo (ModelCommand* base); +static gboolean model_clip_revert_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_clip_revert_command_real_description (ModelCommand* base); +static void model_clip_revert_command_finalize (ModelCommand* obj); +GType model_time_signature_command_get_type (void); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +#define MODEL_TIME_SIGNATURE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandPrivate)) +enum { + MODEL_TIME_SIGNATURE_COMMAND_DUMMY_PROPERTY +}; +GType model_tempo_information_get_type (void); +void model_tempo_information_get_time_signature (ModelTempoInformation* self, Fraction* result); +ModelTimeSignatureCommand* model_time_signature_command_new (ModelProject* project, Fraction* new_time_signature); +ModelTimeSignatureCommand* model_time_signature_command_construct (GType object_type, ModelProject* project, Fraction* new_time_signature); +void _model_project_set_time_signature (ModelProject* self, Fraction* time_signature); +static void model_time_signature_command_real_apply (ModelCommand* base); +static void model_time_signature_command_real_undo (ModelCommand* base); +static gboolean model_time_signature_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_time_signature_command_real_description (ModelCommand* base); +static void model_time_signature_command_finalize (ModelCommand* obj); +GType model_bpm_command_get_type (void); +#define MODEL_BPM_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandPrivate)) +enum { + MODEL_BPM_COMMAND_DUMMY_PROPERTY +}; +gint model_tempo_information_get_bpm (ModelTempoInformation* self); +ModelBpmCommand* model_bpm_command_new (ModelProject* project, gint new_bpm); +ModelBpmCommand* model_bpm_command_construct (GType object_type, ModelProject* project, gint new_bpm); +void _model_project_set_bpm (ModelProject* self, gint bpm); +static void model_bpm_command_real_apply (ModelCommand* base); +static void model_bpm_command_real_undo (ModelCommand* base); +static gboolean model_bpm_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_bpm_command_real_description (ModelCommand* base); +static void model_bpm_command_finalize (ModelCommand* obj); +GType model_add_clip_command_get_type (void); +#define MODEL_ADD_CLIP_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandPrivate)) +enum { + MODEL_ADD_CLIP_COMMAND_DUMMY_PROPERTY +}; +ModelAddClipCommand* model_add_clip_command_new (ModelProject* project, ModelClipFile* clip_file); +ModelAddClipCommand* model_add_clip_command_construct (GType object_type, ModelProject* project, ModelClipFile* clip_file); +static void model_add_clip_command_real_apply (ModelCommand* base); +static void model_add_clip_command_real_undo (ModelCommand* base); +static gboolean model_add_clip_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_add_clip_command_real_description (ModelCommand* base); +static void model_add_clip_command_finalize (ModelCommand* obj); +GType model_transaction_command_get_type (void); +#define MODEL_TRANSACTION_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandPrivate)) +enum { + MODEL_TRANSACTION_COMMAND_DUMMY_PROPERTY +}; +ModelTransactionCommand* model_transaction_command_new (gboolean open, const char* transaction_description); +ModelTransactionCommand* model_transaction_command_construct (GType object_type, gboolean open, const char* transaction_description); +gboolean model_transaction_command_in_transaction (ModelTransactionCommand* self); +static void model_transaction_command_real_apply (ModelCommand* base); +static void model_transaction_command_real_undo (ModelCommand* base); +static gboolean model_transaction_command_real_merge (ModelCommand* base, ModelCommand* command); +static char* model_transaction_command_real_description (ModelCommand* base); +static void model_transaction_command_finalize (ModelCommand* obj); + + + +#line 9 "command.vala" +static void model_command_real_apply (ModelCommand* self) { +#line 644 "command.c" + g_return_if_fail (MODEL_IS_COMMAND (self)); + g_critical ("Type `%s' does not implement abstract method `model_command_apply'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 9 "command.vala" +void model_command_apply (ModelCommand* self) { +#line 9 "command.vala" + MODEL_COMMAND_GET_CLASS (self)->apply (self); +#line 655 "command.c" +} + + +#line 10 "command.vala" +static void model_command_real_undo (ModelCommand* self) { +#line 661 "command.c" + g_return_if_fail (MODEL_IS_COMMAND (self)); + g_critical ("Type `%s' does not implement abstract method `model_command_undo'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 10 "command.vala" +void model_command_undo (ModelCommand* self) { +#line 10 "command.vala" + MODEL_COMMAND_GET_CLASS (self)->undo (self); +#line 672 "command.c" +} + + +#line 11 "command.vala" +static gboolean model_command_real_merge (ModelCommand* self, ModelCommand* command) { +#line 678 "command.c" + g_return_val_if_fail (MODEL_IS_COMMAND (self), FALSE); + g_critical ("Type `%s' does not implement abstract method `model_command_merge'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return FALSE; +} + + +#line 11 "command.vala" +gboolean model_command_merge (ModelCommand* self, ModelCommand* command) { +#line 11 "command.vala" + return MODEL_COMMAND_GET_CLASS (self)->merge (self, command); +#line 689 "command.c" +} + + +#line 12 "command.vala" +static char* model_command_real_description (ModelCommand* self) { +#line 695 "command.c" + g_return_val_if_fail (MODEL_IS_COMMAND (self), NULL); + g_critical ("Type `%s' does not implement abstract method `model_command_description'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return NULL; +} + + +#line 12 "command.vala" +char* model_command_description (ModelCommand* self) { +#line 12 "command.vala" + return MODEL_COMMAND_GET_CLASS (self)->description (self); +#line 706 "command.c" +} + + +#line 8 "command.vala" +ModelCommand* model_command_construct (GType object_type) { +#line 712 "command.c" + ModelCommand* self; + self = (ModelCommand*) g_type_create_instance (object_type); + return self; +} + + +static void model_value_command_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_command_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_command_unref (value->data[0].v_pointer); + } +} + + +static void model_value_command_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_command_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_command_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_command_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelCommand* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_command_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_command_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelCommand** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_command_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecCommand* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_COMMAND), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_command (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_COMMAND), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_command (GValue* value, gpointer v_object) { + ModelCommand* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_COMMAND)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_COMMAND)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_command_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_command_unref (old); + } +} + + +void model_value_take_command (GValue* value, gpointer v_object) { + ModelCommand* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_COMMAND)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_COMMAND)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_command_unref (old); + } +} + + +static void model_command_class_init (ModelCommandClass * klass) { + model_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_command_finalize; + MODEL_COMMAND_CLASS (klass)->apply = model_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_command_real_description; +} + + +static void model_command_instance_init (ModelCommand * self) { + self->ref_count = 1; +} + + +static void model_command_finalize (ModelCommand* obj) { + ModelCommand * self; + self = MODEL_COMMAND (obj); +} + + +GType model_command_get_type (void) { + static volatile gsize model_command_type_id__volatile = 0; + if (g_once_init_enter (&model_command_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_command_init, model_value_command_free_value, model_value_command_copy_value, model_value_command_peek_pointer, "p", model_value_command_collect_value, "p", model_value_command_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelCommand), 0, (GInstanceInitFunc) model_command_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_command_type_id; + model_command_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelCommand", &g_define_type_info, &g_define_type_fundamental_info, G_TYPE_FLAG_ABSTRACT); + g_once_init_leave (&model_command_type_id__volatile, model_command_type_id); + } + return model_command_type_id__volatile; +} + + +gpointer model_command_ref (gpointer instance) { + ModelCommand* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_command_unref (gpointer instance) { + ModelCommand* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_COMMAND_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +GType model_parameter_get_type (void) { + static volatile gsize model_parameter_type_id__volatile = 0; + if (g_once_init_enter (&model_parameter_type_id__volatile)) { + static const GEnumValue values[] = {{MODEL_PARAMETER_PAN, "MODEL_PARAMETER_PAN", "pan"}, {MODEL_PARAMETER_VOLUME, "MODEL_PARAMETER_VOLUME", "volume"}, {0, NULL, NULL}}; + GType model_parameter_type_id; + model_parameter_type_id = g_enum_register_static ("ModelParameter", values); + g_once_init_leave (&model_parameter_type_id__volatile, model_parameter_type_id); + } + return model_parameter_type_id__volatile; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 22 "command.vala" +ModelParameterCommand* model_parameter_command_construct (GType object_type, ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value) { +#line 901 "command.c" + ModelParameterCommand* self; + ModelAudioTrack* _tmp0_; +#line 22 "command.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (target), NULL); +#line 22 "command.vala" + self = (ModelParameterCommand*) model_command_construct (object_type); +#line 24 "command.vala" + self->priv->target = (_tmp0_ = _g_object_ref0 (target), _g_object_unref0 (self->priv->target), _tmp0_); +#line 25 "command.vala" + self->priv->parameter = parameter; +#line 26 "command.vala" + self->priv->delta = new_value - old_value; +#line 914 "command.c" + return self; +} + + +#line 22 "command.vala" +ModelParameterCommand* model_parameter_command_new (ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value) { +#line 22 "command.vala" + return model_parameter_command_construct (MODEL_TYPE_PARAMETER_COMMAND, target, parameter, new_value, old_value); +#line 923 "command.c" +} + + +#line 29 "command.vala" +static void model_parameter_command_change_parameter (ModelParameterCommand* self, double amount) { +#line 29 "command.vala" + g_return_if_fail (MODEL_IS_PARAMETER_COMMAND (self)); +#line 30 "command.vala" + switch (self->priv->parameter) { +#line 933 "command.c" + case MODEL_PARAMETER_PAN: + { +#line 32 "command.vala" + _model_audio_track_set_pan (self->priv->target, model_audio_track_get_pan (self->priv->target) + amount); +#line 33 "command.vala" + break; +#line 940 "command.c" + } + case MODEL_PARAMETER_VOLUME: + { +#line 35 "command.vala" + _model_audio_track_set_volume (self->priv->target, model_audio_track_get_volume (self->priv->target) + amount); +#line 36 "command.vala" + break; +#line 948 "command.c" + } + } +} + + +#line 40 "command.vala" +static void model_parameter_command_real_apply (ModelCommand* base) { +#line 956 "command.c" + ModelParameterCommand * self; + self = MODEL_PARAMETER_COMMAND (base); +#line 41 "command.vala" + model_parameter_command_change_parameter (self, self->priv->delta); +#line 961 "command.c" +} + + +#line 44 "command.vala" +static void model_parameter_command_real_undo (ModelCommand* base) { +#line 967 "command.c" + ModelParameterCommand * self; + self = MODEL_PARAMETER_COMMAND (base); +#line 45 "command.vala" + model_parameter_command_change_parameter (self, -self->priv->delta); +#line 972 "command.c" +} + + +static gpointer _model_command_ref0 (gpointer self) { + return self ? model_command_ref (self) : NULL; +} + + +#line 48 "command.vala" +static gboolean model_parameter_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 983 "command.c" + ModelParameterCommand * self; + gboolean result = FALSE; + ModelCommand* _tmp0_; + ModelParameterCommand* parameter_command; + gboolean _tmp1_ = FALSE; + self = MODEL_PARAMETER_COMMAND (base); +#line 48 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 49 "command.vala" + parameter_command = _model_command_ref0 ((_tmp0_ = command, MODEL_IS_PARAMETER_COMMAND (_tmp0_) ? ((ModelParameterCommand*) _tmp0_) : NULL)); +#line 50 "command.vala" + if (parameter_command != NULL) { +#line 50 "command.vala" + _tmp1_ = parameter_command->priv->parameter == self->priv->parameter; +#line 998 "command.c" + } else { +#line 50 "command.vala" + _tmp1_ = FALSE; +#line 1002 "command.c" + } +#line 50 "command.vala" + if (_tmp1_) { +#line 51 "command.vala" + self->priv->delta = self->priv->delta + parameter_command->priv->delta; +#line 1008 "command.c" + result = TRUE; + _model_command_unref0 (parameter_command); +#line 52 "command.vala" + return result; +#line 1013 "command.c" + } + result = FALSE; + _model_command_unref0 (parameter_command); +#line 54 "command.vala" + return result; +#line 1019 "command.c" +} + + +#line 57 "command.vala" +static char* model_parameter_command_real_description (ModelCommand* base) { +#line 1025 "command.c" + ModelParameterCommand * self; + char* result = NULL; + self = MODEL_PARAMETER_COMMAND (base); +#line 58 "command.vala" + switch (self->priv->parameter) { +#line 1031 "command.c" + case MODEL_PARAMETER_PAN: + { + result = g_strdup ("Adjust Pan"); +#line 60 "command.vala" + return result; +#line 1037 "command.c" + } + case MODEL_PARAMETER_VOLUME: + { + result = g_strdup ("Adjust Level"); +#line 62 "command.vala" + return result; +#line 1044 "command.c" + } + default: + { +#line 64 "command.vala" + g_assert (FALSE); +#line 1050 "command.c" + result = g_strdup (""); +#line 65 "command.vala" + return result; +#line 1054 "command.c" + } + } +} + + +static void model_parameter_command_class_init (ModelParameterCommandClass * klass) { + model_parameter_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_parameter_command_finalize; + g_type_class_add_private (klass, sizeof (ModelParameterCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_parameter_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_parameter_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_parameter_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_parameter_command_real_description; +} + + +static void model_parameter_command_instance_init (ModelParameterCommand * self) { + self->priv = MODEL_PARAMETER_COMMAND_GET_PRIVATE (self); +} + + +static void model_parameter_command_finalize (ModelCommand* obj) { + ModelParameterCommand * self; + self = MODEL_PARAMETER_COMMAND (obj); + _g_object_unref0 (self->priv->target); + MODEL_COMMAND_CLASS (model_parameter_command_parent_class)->finalize (obj); +} + + +GType model_parameter_command_get_type (void) { + static volatile gsize model_parameter_command_type_id__volatile = 0; + if (g_once_init_enter (&model_parameter_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelParameterCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_parameter_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelParameterCommand), 0, (GInstanceInitFunc) model_parameter_command_instance_init, NULL }; + GType model_parameter_command_type_id; + model_parameter_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelParameterCommand", &g_define_type_info, 0); + g_once_init_leave (&model_parameter_command_type_id__volatile, model_parameter_command_type_id); + } + return model_parameter_command_type_id__volatile; +} + + +GType model_clip_command_action_get_type (void) { + static volatile gsize model_clip_command_action_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_command_action_type_id__volatile)) { + static const GEnumValue values[] = {{MODEL_CLIP_COMMAND_ACTION_APPEND, "MODEL_CLIP_COMMAND_ACTION_APPEND", "append"}, {MODEL_CLIP_COMMAND_ACTION_DELETE, "MODEL_CLIP_COMMAND_ACTION_DELETE", "delete"}, {0, NULL, NULL}}; + GType model_clip_command_action_type_id; + model_clip_command_action_type_id = g_enum_register_static ("ModelClipCommandAction", values); + g_once_init_leave (&model_clip_command_action_type_id__volatile, model_clip_command_action_type_id); + } + return model_clip_command_action_type_id__volatile; +} + + +#line 79 "command.vala" +ModelClipCommand* model_clip_command_construct (GType object_type, ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select) { +#line 1110 "command.c" + ModelClipCommand* self; + ModelTrack* _tmp0_; + ModelClip* _tmp1_; +#line 79 "command.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 79 "command.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 79 "command.vala" + self = (ModelClipCommand*) model_command_construct (object_type); +#line 80 "command.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 81 "command.vala" + self->priv->clip = (_tmp1_ = _g_object_ref0 (clip), _g_object_unref0 (self->priv->clip), _tmp1_); +#line 82 "command.vala" + self->priv->time = time; +#line 83 "command.vala" + self->priv->action = action; +#line 84 "command.vala" + self->priv->select = select; +#line 85 "command.vala" + self->priv->index = model_track_get_clip_index (track, clip); +#line 1132 "command.c" + return self; +} + + +#line 79 "command.vala" +ModelClipCommand* model_clip_command_new (ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select) { +#line 79 "command.vala" + return model_clip_command_construct (MODEL_TYPE_CLIP_COMMAND, action, track, clip, time, select); +#line 1141 "command.c" +} + + +#line 88 "command.vala" +static void model_clip_command_real_apply (ModelCommand* base) { +#line 1147 "command.c" + ModelClipCommand * self; + self = MODEL_CLIP_COMMAND (base); +#line 89 "command.vala" + switch (self->priv->action) { +#line 1152 "command.c" + case MODEL_CLIP_COMMAND_ACTION_APPEND: + { +#line 91 "command.vala" + _model_track_append_at_time (self->priv->track, self->priv->clip, self->priv->time, self->priv->select); +#line 92 "command.vala" + break; +#line 1159 "command.c" + } + case MODEL_CLIP_COMMAND_ACTION_DELETE: + { +#line 94 "command.vala" + _model_track_delete_clip (self->priv->track, self->priv->clip); +#line 95 "command.vala" + break; +#line 1167 "command.c" + } + default: + { +#line 97 "command.vala" + g_assert (FALSE); +#line 98 "command.vala" + break; +#line 1175 "command.c" + } + } +} + + +#line 102 "command.vala" +static void model_clip_command_real_undo (ModelCommand* base) { +#line 1183 "command.c" + ModelClipCommand * self; + self = MODEL_CLIP_COMMAND (base); +#line 103 "command.vala" + switch (self->priv->action) { +#line 1188 "command.c" + case MODEL_CLIP_COMMAND_ACTION_APPEND: + { +#line 105 "command.vala" + _model_track_delete_clip (self->priv->track, self->priv->clip); +#line 106 "command.vala" + break; +#line 1195 "command.c" + } + case MODEL_CLIP_COMMAND_ACTION_DELETE: + { +#line 108 "command.vala" + model_track_add (self->priv->track, self->priv->clip, self->priv->time, FALSE); +#line 109 "command.vala" + break; +#line 1203 "command.c" + } + default: + { +#line 111 "command.vala" + g_assert (FALSE); +#line 112 "command.vala" + break; +#line 1211 "command.c" + } + } +} + + +#line 116 "command.vala" +static gboolean model_clip_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 1219 "command.c" + ModelClipCommand * self; + gboolean result = FALSE; + self = MODEL_CLIP_COMMAND (base); +#line 116 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 1225 "command.c" + result = FALSE; +#line 117 "command.vala" + return result; +#line 1229 "command.c" +} + + +#line 120 "command.vala" +static char* model_clip_command_real_description (ModelCommand* base) { +#line 1235 "command.c" + ModelClipCommand * self; + char* result = NULL; + self = MODEL_CLIP_COMMAND (base); +#line 121 "command.vala" + switch (self->priv->action) { +#line 1241 "command.c" + case MODEL_CLIP_COMMAND_ACTION_APPEND: + { + result = g_strdup ("Create Clip"); +#line 123 "command.vala" + return result; +#line 1247 "command.c" + } + case MODEL_CLIP_COMMAND_ACTION_DELETE: + { + result = g_strdup ("Delete Clip"); +#line 125 "command.vala" + return result; +#line 1254 "command.c" + } + default: + { +#line 127 "command.vala" + g_assert (FALSE); +#line 1260 "command.c" + result = g_strdup (""); +#line 128 "command.vala" + return result; +#line 1264 "command.c" + } + } +} + + +static void model_clip_command_class_init (ModelClipCommandClass * klass) { + model_clip_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_clip_command_finalize; + g_type_class_add_private (klass, sizeof (ModelClipCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_clip_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_clip_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_clip_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_clip_command_real_description; +} + + +static void model_clip_command_instance_init (ModelClipCommand * self) { + self->priv = MODEL_CLIP_COMMAND_GET_PRIVATE (self); +} + + +static void model_clip_command_finalize (ModelCommand* obj) { + ModelClipCommand * self; + self = MODEL_CLIP_COMMAND (obj); + _g_object_unref0 (self->priv->track); + _g_object_unref0 (self->priv->clip); + MODEL_COMMAND_CLASS (model_clip_command_parent_class)->finalize (obj); +} + + +GType model_clip_command_get_type (void) { + static volatile gsize model_clip_command_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipCommand), 0, (GInstanceInitFunc) model_clip_command_instance_init, NULL }; + GType model_clip_command_type_id; + model_clip_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelClipCommand", &g_define_type_info, 0); + g_once_init_leave (&model_clip_command_type_id__volatile, model_clip_command_type_id); + } + return model_clip_command_type_id__volatile; +} + + +#line 138 "command.vala" +ModelClipAddCommand* model_clip_add_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start) { +#line 1309 "command.c" + ModelClipAddCommand* self; + ModelTrack* _tmp0_; + ModelClip* _tmp1_; +#line 138 "command.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 138 "command.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 138 "command.vala" + self = (ModelClipAddCommand*) model_command_construct (object_type); +#line 140 "command.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 141 "command.vala" + self->priv->clip = (_tmp1_ = _g_object_ref0 (clip), _g_object_unref0 (self->priv->clip), _tmp1_); +#line 142 "command.vala" + self->priv->delta = new_start - original_time; +#line 1325 "command.c" + return self; +} + + +#line 138 "command.vala" +ModelClipAddCommand* model_clip_add_command_new (ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start) { +#line 138 "command.vala" + return model_clip_add_command_construct (MODEL_TYPE_CLIP_ADD_COMMAND, track, clip, original_time, new_start); +#line 1334 "command.c" +} + + +#line 145 "command.vala" +static void model_clip_add_command_real_apply (ModelCommand* base) { +#line 1340 "command.c" + ModelClipAddCommand * self; + self = MODEL_CLIP_ADD_COMMAND (base); +#line 146 "command.vala" + _model_track_move (self->priv->track, self->priv->clip, model_clip_get_start (self->priv->clip)); +#line 1345 "command.c" +} + + +#line 149 "command.vala" +static void model_clip_add_command_real_undo (ModelCommand* base) { +#line 1351 "command.c" + ModelClipAddCommand * self; + self = MODEL_CLIP_ADD_COMMAND (base); +#line 150 "command.vala" + model_track_remove_clip_from_array (self->priv->track, self->priv->clip); +#line 151 "command.vala" + _model_track_move (self->priv->track, self->priv->clip, model_clip_get_start (self->priv->clip) - self->priv->delta); +#line 1358 "command.c" +} + + +#line 154 "command.vala" +static gboolean model_clip_add_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 1364 "command.c" + ModelClipAddCommand * self; + gboolean result = FALSE; + self = MODEL_CLIP_ADD_COMMAND (base); +#line 154 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 1370 "command.c" + result = FALSE; +#line 155 "command.vala" + return result; +#line 1374 "command.c" +} + + +#line 158 "command.vala" +static char* model_clip_add_command_real_description (ModelCommand* base) { +#line 1380 "command.c" + ModelClipAddCommand * self; + char* result = NULL; + self = MODEL_CLIP_ADD_COMMAND (base); + result = g_strdup ("Move Clip"); +#line 159 "command.vala" + return result; +#line 1387 "command.c" +} + + +static void model_clip_add_command_class_init (ModelClipAddCommandClass * klass) { + model_clip_add_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_clip_add_command_finalize; + g_type_class_add_private (klass, sizeof (ModelClipAddCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_clip_add_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_clip_add_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_clip_add_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_clip_add_command_real_description; +} + + +static void model_clip_add_command_instance_init (ModelClipAddCommand * self) { + self->priv = MODEL_CLIP_ADD_COMMAND_GET_PRIVATE (self); +} + + +static void model_clip_add_command_finalize (ModelCommand* obj) { + ModelClipAddCommand * self; + self = MODEL_CLIP_ADD_COMMAND (obj); + _g_object_unref0 (self->priv->track); + _g_object_unref0 (self->priv->clip); + MODEL_COMMAND_CLASS (model_clip_add_command_parent_class)->finalize (obj); +} + + +GType model_clip_add_command_get_type (void) { + static volatile gsize model_clip_add_command_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_add_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipAddCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_add_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipAddCommand), 0, (GInstanceInitFunc) model_clip_add_command_instance_init, NULL }; + GType model_clip_add_command_type_id; + model_clip_add_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelClipAddCommand", &g_define_type_info, 0); + g_once_init_leave (&model_clip_add_command_type_id__volatile, model_clip_add_command_type_id); + } + return model_clip_add_command_type_id__volatile; +} + + +GType model_clip_split_command_action_get_type (void) { + static volatile gsize model_clip_split_command_action_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_split_command_action_type_id__volatile)) { + static const GEnumValue values[] = {{MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT, "MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT", "split"}, {MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN, "MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN", "join"}, {0, NULL, NULL}}; + GType model_clip_split_command_action_type_id; + model_clip_split_command_action_type_id = g_enum_register_static ("ModelClipSplitCommandAction", values); + g_once_init_leave (&model_clip_split_command_action_type_id__volatile, model_clip_split_command_action_type_id); + } + return model_clip_split_command_action_type_id__volatile; +} + + +#line 170 "command.vala" +ModelClipSplitCommand* model_clip_split_command_construct (GType object_type, ModelClipSplitCommandAction action, ModelTrack* track, gint64 time) { +#line 1442 "command.c" + ModelClipSplitCommand* self; + ModelTrack* _tmp0_; +#line 170 "command.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 170 "command.vala" + self = (ModelClipSplitCommand*) model_command_construct (object_type); +#line 171 "command.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 172 "command.vala" + self->priv->time = time; +#line 173 "command.vala" + self->priv->do_split = action == MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT; +#line 1455 "command.c" + return self; +} + + +#line 170 "command.vala" +ModelClipSplitCommand* model_clip_split_command_new (ModelClipSplitCommandAction action, ModelTrack* track, gint64 time) { +#line 170 "command.vala" + return model_clip_split_command_construct (MODEL_TYPE_CLIP_SPLIT_COMMAND, action, track, time); +#line 1464 "command.c" +} + + +#line 176 "command.vala" +static void model_clip_split_command_real_apply (ModelCommand* base) { +#line 1470 "command.c" + ModelClipSplitCommand * self; + self = MODEL_CLIP_SPLIT_COMMAND (base); +#line 177 "command.vala" + if (self->priv->do_split) { +#line 178 "command.vala" + _model_track_split_at (self->priv->track, self->priv->time); +#line 1477 "command.c" + } else { +#line 180 "command.vala" + _model_track_join (self->priv->track, self->priv->time); +#line 1481 "command.c" + } +} + + +#line 184 "command.vala" +static void model_clip_split_command_real_undo (ModelCommand* base) { +#line 1488 "command.c" + ModelClipSplitCommand * self; + self = MODEL_CLIP_SPLIT_COMMAND (base); +#line 185 "command.vala" + if (self->priv->do_split) { +#line 186 "command.vala" + _model_track_join (self->priv->track, self->priv->time); +#line 1495 "command.c" + } else { +#line 188 "command.vala" + _model_track_split_at (self->priv->track, self->priv->time); +#line 1499 "command.c" + } +} + + +#line 192 "command.vala" +static gboolean model_clip_split_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 1506 "command.c" + ModelClipSplitCommand * self; + gboolean result = FALSE; + self = MODEL_CLIP_SPLIT_COMMAND (base); +#line 192 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 1512 "command.c" + result = FALSE; +#line 193 "command.vala" + return result; +#line 1516 "command.c" +} + + +#line 196 "command.vala" +static char* model_clip_split_command_real_description (ModelCommand* base) { +#line 1522 "command.c" + ModelClipSplitCommand * self; + char* result = NULL; + self = MODEL_CLIP_SPLIT_COMMAND (base); +#line 197 "command.vala" + if (self->priv->do_split) { +#line 1528 "command.c" + result = g_strdup ("Split Clip"); +#line 198 "command.vala" + return result; +#line 1532 "command.c" + } else { + result = g_strdup ("Join Clip"); +#line 200 "command.vala" + return result; +#line 1537 "command.c" + } +} + + +static void model_clip_split_command_class_init (ModelClipSplitCommandClass * klass) { + model_clip_split_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_clip_split_command_finalize; + g_type_class_add_private (klass, sizeof (ModelClipSplitCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_clip_split_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_clip_split_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_clip_split_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_clip_split_command_real_description; +} + + +static void model_clip_split_command_instance_init (ModelClipSplitCommand * self) { + self->priv = MODEL_CLIP_SPLIT_COMMAND_GET_PRIVATE (self); +} + + +static void model_clip_split_command_finalize (ModelCommand* obj) { + ModelClipSplitCommand * self; + self = MODEL_CLIP_SPLIT_COMMAND (obj); + _g_object_unref0 (self->priv->track); + MODEL_COMMAND_CLASS (model_clip_split_command_parent_class)->finalize (obj); +} + + +GType model_clip_split_command_get_type (void) { + static volatile gsize model_clip_split_command_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_split_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipSplitCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_split_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipSplitCommand), 0, (GInstanceInitFunc) model_clip_split_command_instance_init, NULL }; + GType model_clip_split_command_type_id; + model_clip_split_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelClipSplitCommand", &g_define_type_info, 0); + g_once_init_leave (&model_clip_split_command_type_id__volatile, model_clip_split_command_type_id); + } + return model_clip_split_command_type_id__volatile; +} + + +#line 209 "command.vala" +ModelClipFileDeleteCommand* model_clip_file_delete_command_construct (GType object_type, ModelProject* p, ModelClipFile* cf) { +#line 1580 "command.c" + ModelClipFileDeleteCommand* self; + ModelClipFile* _tmp0_; + ModelProject* _tmp1_; +#line 209 "command.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (p), NULL); +#line 209 "command.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (cf), NULL); +#line 209 "command.vala" + self = (ModelClipFileDeleteCommand*) model_command_construct (object_type); +#line 210 "command.vala" + self->priv->clipfile = (_tmp0_ = _g_object_ref0 (cf), _g_object_unref0 (self->priv->clipfile), _tmp0_); +#line 211 "command.vala" + self->priv->project = (_tmp1_ = _g_object_ref0 (p), _g_object_unref0 (self->priv->project), _tmp1_); +#line 1594 "command.c" + return self; +} + + +#line 209 "command.vala" +ModelClipFileDeleteCommand* model_clip_file_delete_command_new (ModelProject* p, ModelClipFile* cf) { +#line 209 "command.vala" + return model_clip_file_delete_command_construct (MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, p, cf); +#line 1603 "command.c" +} + + +#line 214 "command.vala" +static void model_clip_file_delete_command_real_apply (ModelCommand* base) { +#line 1609 "command.c" + ModelClipFileDeleteCommand * self; + self = MODEL_CLIP_FILE_DELETE_COMMAND (base); +#line 215 "command.vala" + _model_project_remove_clipfile (self->priv->project, self->priv->clipfile); +#line 1614 "command.c" +} + + +#line 218 "command.vala" +static void model_clip_file_delete_command_real_undo (ModelCommand* base) { +#line 1620 "command.c" + ModelClipFileDeleteCommand * self; + GError * _inner_error_; + self = MODEL_CLIP_FILE_DELETE_COMMAND (base); + _inner_error_ = NULL; + { +#line 220 "command.vala" + _model_project_add_clipfile (self->priv->project, self->priv->clipfile, &_inner_error_); +#line 1628 "command.c" + if (_inner_error_ != NULL) { + goto __catch5_g_error; + } + } + goto __finally5; + __catch5_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 222 "command.vala" + g_signal_emit_by_name (self->priv->project, "error-occurred", "Could not add clipfile.", e->message); +#line 1642 "command.c" + _g_error_free0 (e); + } + } + __finally5: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +#line 226 "command.vala" +static gboolean model_clip_file_delete_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 1657 "command.c" + ModelClipFileDeleteCommand * self; + gboolean result = FALSE; + self = MODEL_CLIP_FILE_DELETE_COMMAND (base); +#line 226 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 1663 "command.c" + result = FALSE; +#line 227 "command.vala" + return result; +#line 1667 "command.c" +} + + +#line 230 "command.vala" +static char* model_clip_file_delete_command_real_description (ModelCommand* base) { +#line 1673 "command.c" + ModelClipFileDeleteCommand * self; + char* result = NULL; + self = MODEL_CLIP_FILE_DELETE_COMMAND (base); + result = g_strdup ("Delete from Library"); +#line 231 "command.vala" + return result; +#line 1680 "command.c" +} + + +static void model_clip_file_delete_command_class_init (ModelClipFileDeleteCommandClass * klass) { + model_clip_file_delete_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_clip_file_delete_command_finalize; + g_type_class_add_private (klass, sizeof (ModelClipFileDeleteCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_clip_file_delete_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_clip_file_delete_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_clip_file_delete_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_clip_file_delete_command_real_description; +} + + +static void model_clip_file_delete_command_instance_init (ModelClipFileDeleteCommand * self) { + self->priv = MODEL_CLIP_FILE_DELETE_COMMAND_GET_PRIVATE (self); +} + + +static void model_clip_file_delete_command_finalize (ModelCommand* obj) { + ModelClipFileDeleteCommand * self; + self = MODEL_CLIP_FILE_DELETE_COMMAND (obj); + _g_object_unref0 (self->priv->clipfile); + _g_object_unref0 (self->priv->project); + MODEL_COMMAND_CLASS (model_clip_file_delete_command_parent_class)->finalize (obj); +} + + +GType model_clip_file_delete_command_get_type (void) { + static volatile gsize model_clip_file_delete_command_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_file_delete_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipFileDeleteCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_file_delete_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipFileDeleteCommand), 0, (GInstanceInitFunc) model_clip_file_delete_command_instance_init, NULL }; + GType model_clip_file_delete_command_type_id; + model_clip_file_delete_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelClipFileDeleteCommand", &g_define_type_info, 0); + g_once_init_leave (&model_clip_file_delete_command_type_id__volatile, model_clip_file_delete_command_type_id); + } + return model_clip_file_delete_command_type_id__volatile; +} + + +#line 241 "command.vala" +ModelClipTrimCommand* model_clip_trim_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge) { +#line 1723 "command.c" + ModelClipTrimCommand* self; + ModelTrack* _tmp0_; + ModelClip* _tmp1_; +#line 241 "command.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 241 "command.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 241 "command.vala" + self = (ModelClipTrimCommand*) model_command_construct (object_type); +#line 242 "command.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 243 "command.vala" + self->priv->clip = (_tmp1_ = _g_object_ref0 (clip), _g_object_unref0 (self->priv->clip), _tmp1_); +#line 244 "command.vala" + self->priv->delta = delta; +#line 245 "command.vala" + self->priv->edge = edge; +#line 1741 "command.c" + return self; +} + + +#line 241 "command.vala" +ModelClipTrimCommand* model_clip_trim_command_new (ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge) { +#line 241 "command.vala" + return model_clip_trim_command_construct (MODEL_TYPE_CLIP_TRIM_COMMAND, track, clip, delta, edge); +#line 1750 "command.c" +} + + +#line 248 "command.vala" +static void model_clip_trim_command_real_apply (ModelCommand* base) { +#line 1756 "command.c" + ModelClipTrimCommand * self; + self = MODEL_CLIP_TRIM_COMMAND (base); +#line 249 "command.vala" + _model_track_trim (self->priv->track, self->priv->clip, self->priv->delta, self->priv->edge); +#line 1761 "command.c" +} + + +#line 252 "command.vala" +static void model_clip_trim_command_real_undo (ModelCommand* base) { +#line 1767 "command.c" + ModelClipTrimCommand * self; + self = MODEL_CLIP_TRIM_COMMAND (base); +#line 253 "command.vala" + _model_track_trim (self->priv->track, self->priv->clip, -self->priv->delta, self->priv->edge); +#line 1772 "command.c" +} + + +#line 256 "command.vala" +static gboolean model_clip_trim_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 1778 "command.c" + ModelClipTrimCommand * self; + gboolean result = FALSE; + self = MODEL_CLIP_TRIM_COMMAND (base); +#line 256 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 1784 "command.c" + result = FALSE; +#line 257 "command.vala" + return result; +#line 1788 "command.c" +} + + +#line 260 "command.vala" +static char* model_clip_trim_command_real_description (ModelCommand* base) { +#line 1794 "command.c" + ModelClipTrimCommand * self; + char* result = NULL; + self = MODEL_CLIP_TRIM_COMMAND (base); + result = g_strdup ("Trim To Playhead"); +#line 261 "command.vala" + return result; +#line 1801 "command.c" +} + + +static void model_clip_trim_command_class_init (ModelClipTrimCommandClass * klass) { + model_clip_trim_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_clip_trim_command_finalize; + g_type_class_add_private (klass, sizeof (ModelClipTrimCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_clip_trim_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_clip_trim_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_clip_trim_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_clip_trim_command_real_description; +} + + +static void model_clip_trim_command_instance_init (ModelClipTrimCommand * self) { + self->priv = MODEL_CLIP_TRIM_COMMAND_GET_PRIVATE (self); +} + + +static void model_clip_trim_command_finalize (ModelCommand* obj) { + ModelClipTrimCommand * self; + self = MODEL_CLIP_TRIM_COMMAND (obj); + _g_object_unref0 (self->priv->track); + _g_object_unref0 (self->priv->clip); + MODEL_COMMAND_CLASS (model_clip_trim_command_parent_class)->finalize (obj); +} + + +GType model_clip_trim_command_get_type (void) { + static volatile gsize model_clip_trim_command_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_trim_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipTrimCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_trim_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipTrimCommand), 0, (GInstanceInitFunc) model_clip_trim_command_instance_init, NULL }; + GType model_clip_trim_command_type_id; + model_clip_trim_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelClipTrimCommand", &g_define_type_info, 0); + g_once_init_leave (&model_clip_trim_command_type_id__volatile, model_clip_trim_command_type_id); + } + return model_clip_trim_command_type_id__volatile; +} + + +#line 271 "command.vala" +ModelClipRevertCommand* model_clip_revert_command_construct (GType object_type, ModelTrack* track, ModelClip* clip) { +#line 1844 "command.c" + ModelClipRevertCommand* self; + ModelTrack* _tmp0_; + ModelClip* _tmp1_; +#line 271 "command.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 271 "command.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 271 "command.vala" + self = (ModelClipRevertCommand*) model_command_construct (object_type); +#line 272 "command.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 273 "command.vala" + self->priv->clip = (_tmp1_ = _g_object_ref0 (clip), _g_object_unref0 (self->priv->clip), _tmp1_); +#line 1858 "command.c" + return self; +} + + +#line 271 "command.vala" +ModelClipRevertCommand* model_clip_revert_command_new (ModelTrack* track, ModelClip* clip) { +#line 271 "command.vala" + return model_clip_revert_command_construct (MODEL_TYPE_CLIP_REVERT_COMMAND, track, clip); +#line 1867 "command.c" +} + + +#line 276 "command.vala" +static void model_clip_revert_command_real_apply (ModelCommand* base) { +#line 1873 "command.c" + ModelClipRevertCommand * self; + self = MODEL_CLIP_REVERT_COMMAND (base); +#line 277 "command.vala" + self->priv->right_delta = model_clip_get_end (self->priv->clip); +#line 278 "command.vala" + self->priv->left_delta = model_clip_get_media_start (self->priv->clip); +#line 279 "command.vala" + _model_track_revert_to_original (self->priv->track, self->priv->clip); +#line 280 "command.vala" + self->priv->left_delta = self->priv->left_delta - model_clip_get_media_start (self->priv->clip); +#line 281 "command.vala" + self->priv->right_delta = (model_clip_get_end (self->priv->clip) - self->priv->right_delta) - self->priv->left_delta; +#line 1886 "command.c" +} + + +#line 284 "command.vala" +static void model_clip_revert_command_real_undo (ModelCommand* base) { +#line 1892 "command.c" + ModelClipRevertCommand * self; + self = MODEL_CLIP_REVERT_COMMAND (base); +#line 285 "command.vala" + _model_track_trim (self->priv->track, self->priv->clip, -self->priv->left_delta, GDK_WINDOW_EDGE_WEST); +#line 286 "command.vala" + _model_track_trim (self->priv->track, self->priv->clip, -self->priv->right_delta, GDK_WINDOW_EDGE_EAST); +#line 1899 "command.c" +} + + +#line 289 "command.vala" +static gboolean model_clip_revert_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 1905 "command.c" + ModelClipRevertCommand * self; + gboolean result = FALSE; + self = MODEL_CLIP_REVERT_COMMAND (base); +#line 289 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 1911 "command.c" + result = FALSE; +#line 290 "command.vala" + return result; +#line 1915 "command.c" +} + + +#line 293 "command.vala" +static char* model_clip_revert_command_real_description (ModelCommand* base) { +#line 1921 "command.c" + ModelClipRevertCommand * self; + char* result = NULL; + self = MODEL_CLIP_REVERT_COMMAND (base); + result = g_strdup ("Revert To Original"); +#line 294 "command.vala" + return result; +#line 1928 "command.c" +} + + +static void model_clip_revert_command_class_init (ModelClipRevertCommandClass * klass) { + model_clip_revert_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_clip_revert_command_finalize; + g_type_class_add_private (klass, sizeof (ModelClipRevertCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_clip_revert_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_clip_revert_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_clip_revert_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_clip_revert_command_real_description; +} + + +static void model_clip_revert_command_instance_init (ModelClipRevertCommand * self) { + self->priv = MODEL_CLIP_REVERT_COMMAND_GET_PRIVATE (self); +} + + +static void model_clip_revert_command_finalize (ModelCommand* obj) { + ModelClipRevertCommand * self; + self = MODEL_CLIP_REVERT_COMMAND (obj); + _g_object_unref0 (self->priv->track); + _g_object_unref0 (self->priv->clip); + MODEL_COMMAND_CLASS (model_clip_revert_command_parent_class)->finalize (obj); +} + + +GType model_clip_revert_command_get_type (void) { + static volatile gsize model_clip_revert_command_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_revert_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipRevertCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_revert_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipRevertCommand), 0, (GInstanceInitFunc) model_clip_revert_command_instance_init, NULL }; + GType model_clip_revert_command_type_id; + model_clip_revert_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelClipRevertCommand", &g_define_type_info, 0); + g_once_init_leave (&model_clip_revert_command_type_id__volatile, model_clip_revert_command_type_id); + } + return model_clip_revert_command_type_id__volatile; +} + + +#line 303 "command.vala" +ModelTimeSignatureCommand* model_time_signature_command_construct (GType object_type, ModelProject* project, Fraction* new_time_signature) { +#line 1971 "command.c" + ModelTimeSignatureCommand* self; + ModelProject* _tmp0_; + Fraction _tmp1_ = {0}; +#line 303 "command.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 303 "command.vala" + self = (ModelTimeSignatureCommand*) model_command_construct (object_type); +#line 304 "command.vala" + self->priv->project = (_tmp0_ = _g_object_ref0 (project), _g_object_unref0 (self->priv->project), _tmp0_); +#line 305 "command.vala" + self->priv->new_time_signature = *new_time_signature; +#line 306 "command.vala" + self->priv->old_time_signature = (model_tempo_information_get_time_signature (MODEL_TEMPO_INFORMATION (project), &_tmp1_), _tmp1_); +#line 1985 "command.c" + return self; +} + + +#line 303 "command.vala" +ModelTimeSignatureCommand* model_time_signature_command_new (ModelProject* project, Fraction* new_time_signature) { +#line 303 "command.vala" + return model_time_signature_command_construct (MODEL_TYPE_TIME_SIGNATURE_COMMAND, project, new_time_signature); +#line 1994 "command.c" +} + + +#line 309 "command.vala" +static void model_time_signature_command_real_apply (ModelCommand* base) { +#line 2000 "command.c" + ModelTimeSignatureCommand * self; + self = MODEL_TIME_SIGNATURE_COMMAND (base); +#line 310 "command.vala" + _model_project_set_time_signature (self->priv->project, &self->priv->new_time_signature); +#line 2005 "command.c" +} + + +#line 313 "command.vala" +static void model_time_signature_command_real_undo (ModelCommand* base) { +#line 2011 "command.c" + ModelTimeSignatureCommand * self; + self = MODEL_TIME_SIGNATURE_COMMAND (base); +#line 314 "command.vala" + _model_project_set_time_signature (self->priv->project, &self->priv->old_time_signature); +#line 2016 "command.c" +} + + +#line 317 "command.vala" +static gboolean model_time_signature_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 2022 "command.c" + ModelTimeSignatureCommand * self; + gboolean result = FALSE; + self = MODEL_TIME_SIGNATURE_COMMAND (base); +#line 317 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 2028 "command.c" + result = FALSE; +#line 318 "command.vala" + return result; +#line 2032 "command.c" +} + + +#line 321 "command.vala" +static char* model_time_signature_command_real_description (ModelCommand* base) { +#line 2038 "command.c" + ModelTimeSignatureCommand * self; + char* result = NULL; + self = MODEL_TIME_SIGNATURE_COMMAND (base); + result = g_strdup ("Set Time Signature"); +#line 322 "command.vala" + return result; +#line 2045 "command.c" +} + + +static void model_time_signature_command_class_init (ModelTimeSignatureCommandClass * klass) { + model_time_signature_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_time_signature_command_finalize; + g_type_class_add_private (klass, sizeof (ModelTimeSignatureCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_time_signature_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_time_signature_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_time_signature_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_time_signature_command_real_description; +} + + +static void model_time_signature_command_instance_init (ModelTimeSignatureCommand * self) { + self->priv = MODEL_TIME_SIGNATURE_COMMAND_GET_PRIVATE (self); +} + + +static void model_time_signature_command_finalize (ModelCommand* obj) { + ModelTimeSignatureCommand * self; + self = MODEL_TIME_SIGNATURE_COMMAND (obj); + _g_object_unref0 (self->priv->project); + MODEL_COMMAND_CLASS (model_time_signature_command_parent_class)->finalize (obj); +} + + +GType model_time_signature_command_get_type (void) { + static volatile gsize model_time_signature_command_type_id__volatile = 0; + if (g_once_init_enter (&model_time_signature_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelTimeSignatureCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_time_signature_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelTimeSignatureCommand), 0, (GInstanceInitFunc) model_time_signature_command_instance_init, NULL }; + GType model_time_signature_command_type_id; + model_time_signature_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelTimeSignatureCommand", &g_define_type_info, 0); + g_once_init_leave (&model_time_signature_command_type_id__volatile, model_time_signature_command_type_id); + } + return model_time_signature_command_type_id__volatile; +} + + +#line 330 "command.vala" +ModelBpmCommand* model_bpm_command_construct (GType object_type, ModelProject* project, gint new_bpm) { +#line 2087 "command.c" + ModelBpmCommand* self; + ModelProject* _tmp0_; +#line 330 "command.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 330 "command.vala" + self = (ModelBpmCommand*) model_command_construct (object_type); +#line 331 "command.vala" + self->priv->delta = new_bpm - model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (project)); +#line 332 "command.vala" + self->priv->project = (_tmp0_ = _g_object_ref0 (project), _g_object_unref0 (self->priv->project), _tmp0_); +#line 2098 "command.c" + return self; +} + + +#line 330 "command.vala" +ModelBpmCommand* model_bpm_command_new (ModelProject* project, gint new_bpm) { +#line 330 "command.vala" + return model_bpm_command_construct (MODEL_TYPE_BPM_COMMAND, project, new_bpm); +#line 2107 "command.c" +} + + +#line 335 "command.vala" +static void model_bpm_command_real_apply (ModelCommand* base) { +#line 2113 "command.c" + ModelBpmCommand * self; + self = MODEL_BPM_COMMAND (base); +#line 336 "command.vala" + _model_project_set_bpm (self->priv->project, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (self->priv->project)) + self->priv->delta); +#line 2118 "command.c" +} + + +#line 339 "command.vala" +static void model_bpm_command_real_undo (ModelCommand* base) { +#line 2124 "command.c" + ModelBpmCommand * self; + self = MODEL_BPM_COMMAND (base); +#line 340 "command.vala" + _model_project_set_bpm (self->priv->project, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (self->priv->project)) - self->priv->delta); +#line 2129 "command.c" +} + + +#line 343 "command.vala" +static gboolean model_bpm_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 2135 "command.c" + ModelBpmCommand * self; + gboolean result = FALSE; + self = MODEL_BPM_COMMAND (base); +#line 343 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 2141 "command.c" + result = FALSE; +#line 344 "command.vala" + return result; +#line 2145 "command.c" +} + + +#line 347 "command.vala" +static char* model_bpm_command_real_description (ModelCommand* base) { +#line 2151 "command.c" + ModelBpmCommand * self; + char* result = NULL; + self = MODEL_BPM_COMMAND (base); + result = g_strdup ("Set Tempo"); +#line 348 "command.vala" + return result; +#line 2158 "command.c" +} + + +static void model_bpm_command_class_init (ModelBpmCommandClass * klass) { + model_bpm_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_bpm_command_finalize; + g_type_class_add_private (klass, sizeof (ModelBpmCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_bpm_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_bpm_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_bpm_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_bpm_command_real_description; +} + + +static void model_bpm_command_instance_init (ModelBpmCommand * self) { + self->priv = MODEL_BPM_COMMAND_GET_PRIVATE (self); +} + + +static void model_bpm_command_finalize (ModelCommand* obj) { + ModelBpmCommand * self; + self = MODEL_BPM_COMMAND (obj); + _g_object_unref0 (self->priv->project); + MODEL_COMMAND_CLASS (model_bpm_command_parent_class)->finalize (obj); +} + + +GType model_bpm_command_get_type (void) { + static volatile gsize model_bpm_command_type_id__volatile = 0; + if (g_once_init_enter (&model_bpm_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelBpmCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_bpm_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelBpmCommand), 0, (GInstanceInitFunc) model_bpm_command_instance_init, NULL }; + GType model_bpm_command_type_id; + model_bpm_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelBpmCommand", &g_define_type_info, 0); + g_once_init_leave (&model_bpm_command_type_id__volatile, model_bpm_command_type_id); + } + return model_bpm_command_type_id__volatile; +} + + +#line 356 "command.vala" +ModelAddClipCommand* model_add_clip_command_construct (GType object_type, ModelProject* project, ModelClipFile* clip_file) { +#line 2200 "command.c" + ModelAddClipCommand* self; + ModelProject* _tmp0_; + ModelClipFile* _tmp1_; +#line 356 "command.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 356 "command.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (clip_file), NULL); +#line 356 "command.vala" + self = (ModelAddClipCommand*) model_command_construct (object_type); +#line 357 "command.vala" + self->priv->project = (_tmp0_ = _g_object_ref0 (project), _g_object_unref0 (self->priv->project), _tmp0_); +#line 358 "command.vala" + self->priv->clip_file = (_tmp1_ = _g_object_ref0 (clip_file), _g_object_unref0 (self->priv->clip_file), _tmp1_); +#line 2214 "command.c" + return self; +} + + +#line 356 "command.vala" +ModelAddClipCommand* model_add_clip_command_new (ModelProject* project, ModelClipFile* clip_file) { +#line 356 "command.vala" + return model_add_clip_command_construct (MODEL_TYPE_ADD_CLIP_COMMAND, project, clip_file); +#line 2223 "command.c" +} + + +#line 361 "command.vala" +static void model_add_clip_command_real_apply (ModelCommand* base) { +#line 2229 "command.c" + ModelAddClipCommand * self; + GError * _inner_error_; + self = MODEL_ADD_CLIP_COMMAND (base); + _inner_error_ = NULL; + { +#line 363 "command.vala" + _model_project_add_clipfile (self->priv->project, self->priv->clip_file, &_inner_error_); +#line 2237 "command.c" + if (_inner_error_ != NULL) { + goto __catch6_g_error; + } + } + goto __finally6; + __catch6_g_error: + { + GError * _error_; + _error_ = _inner_error_; + _inner_error_ = NULL; + { +#line 365 "command.vala" + g_signal_emit_by_name (self->priv->project, "error-occurred", "Error importing", "An error occurred importing this file."); +#line 2251 "command.c" + _g_error_free0 (_error_); + } + } + __finally6: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +#line 369 "command.vala" +static void model_add_clip_command_real_undo (ModelCommand* base) { +#line 2266 "command.c" + ModelAddClipCommand * self; + self = MODEL_ADD_CLIP_COMMAND (base); +#line 370 "command.vala" + _model_project_remove_clipfile (self->priv->project, self->priv->clip_file); +#line 2271 "command.c" +} + + +#line 373 "command.vala" +static gboolean model_add_clip_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 2277 "command.c" + ModelAddClipCommand * self; + gboolean result = FALSE; + self = MODEL_ADD_CLIP_COMMAND (base); +#line 373 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 2283 "command.c" + result = FALSE; +#line 374 "command.vala" + return result; +#line 2287 "command.c" +} + + +#line 377 "command.vala" +static char* model_add_clip_command_real_description (ModelCommand* base) { +#line 2293 "command.c" + ModelAddClipCommand * self; + char* result = NULL; + self = MODEL_ADD_CLIP_COMMAND (base); + result = g_strdup ("Add Clip To Library"); +#line 378 "command.vala" + return result; +#line 2300 "command.c" +} + + +static void model_add_clip_command_class_init (ModelAddClipCommandClass * klass) { + model_add_clip_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_add_clip_command_finalize; + g_type_class_add_private (klass, sizeof (ModelAddClipCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_add_clip_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_add_clip_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_add_clip_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_add_clip_command_real_description; +} + + +static void model_add_clip_command_instance_init (ModelAddClipCommand * self) { + self->priv = MODEL_ADD_CLIP_COMMAND_GET_PRIVATE (self); +} + + +static void model_add_clip_command_finalize (ModelCommand* obj) { + ModelAddClipCommand * self; + self = MODEL_ADD_CLIP_COMMAND (obj); + _g_object_unref0 (self->priv->clip_file); + _g_object_unref0 (self->priv->project); + MODEL_COMMAND_CLASS (model_add_clip_command_parent_class)->finalize (obj); +} + + +GType model_add_clip_command_get_type (void) { + static volatile gsize model_add_clip_command_type_id__volatile = 0; + if (g_once_init_enter (&model_add_clip_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelAddClipCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_add_clip_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelAddClipCommand), 0, (GInstanceInitFunc) model_add_clip_command_instance_init, NULL }; + GType model_add_clip_command_type_id; + model_add_clip_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelAddClipCommand", &g_define_type_info, 0); + g_once_init_leave (&model_add_clip_command_type_id__volatile, model_add_clip_command_type_id); + } + return model_add_clip_command_type_id__volatile; +} + + +#line 386 "command.vala" +ModelTransactionCommand* model_transaction_command_construct (GType object_type, gboolean open, const char* transaction_description) { +#line 2343 "command.c" + ModelTransactionCommand* self; + char* _tmp0_; +#line 386 "command.vala" + g_return_val_if_fail (transaction_description != NULL, NULL); +#line 386 "command.vala" + self = (ModelTransactionCommand*) model_command_construct (object_type); +#line 387 "command.vala" + self->priv->open = open; +#line 388 "command.vala" + self->priv->transaction_description = (_tmp0_ = g_strdup (transaction_description), _g_free0 (self->priv->transaction_description), _tmp0_); +#line 2354 "command.c" + return self; +} + + +#line 386 "command.vala" +ModelTransactionCommand* model_transaction_command_new (gboolean open, const char* transaction_description) { +#line 386 "command.vala" + return model_transaction_command_construct (MODEL_TYPE_TRANSACTION_COMMAND, open, transaction_description); +#line 2363 "command.c" +} + + +#line 391 "command.vala" +gboolean model_transaction_command_in_transaction (ModelTransactionCommand* self) { +#line 2369 "command.c" + gboolean result = FALSE; +#line 391 "command.vala" + g_return_val_if_fail (MODEL_IS_TRANSACTION_COMMAND (self), FALSE); +#line 2373 "command.c" + result = self->priv->open; +#line 392 "command.vala" + return result; +#line 2377 "command.c" +} + + +#line 395 "command.vala" +static void model_transaction_command_real_apply (ModelCommand* base) { +#line 2383 "command.c" + ModelTransactionCommand * self; + self = MODEL_TRANSACTION_COMMAND (base); +} + + +#line 398 "command.vala" +static void model_transaction_command_real_undo (ModelCommand* base) { +#line 2391 "command.c" + ModelTransactionCommand * self; + self = MODEL_TRANSACTION_COMMAND (base); +} + + +#line 401 "command.vala" +static gboolean model_transaction_command_real_merge (ModelCommand* base, ModelCommand* command) { +#line 2399 "command.c" + ModelTransactionCommand * self; + gboolean result = FALSE; + self = MODEL_TRANSACTION_COMMAND (base); +#line 401 "command.vala" + g_return_val_if_fail (MODEL_IS_COMMAND (command), FALSE); +#line 2405 "command.c" + result = FALSE; +#line 402 "command.vala" + return result; +#line 2409 "command.c" +} + + +#line 405 "command.vala" +static char* model_transaction_command_real_description (ModelCommand* base) { +#line 2415 "command.c" + ModelTransactionCommand * self; + char* result = NULL; + self = MODEL_TRANSACTION_COMMAND (base); + result = g_strdup (self->priv->transaction_description); +#line 406 "command.vala" + return result; +#line 2422 "command.c" +} + + +static void model_transaction_command_class_init (ModelTransactionCommandClass * klass) { + model_transaction_command_parent_class = g_type_class_peek_parent (klass); + MODEL_COMMAND_CLASS (klass)->finalize = model_transaction_command_finalize; + g_type_class_add_private (klass, sizeof (ModelTransactionCommandPrivate)); + MODEL_COMMAND_CLASS (klass)->apply = model_transaction_command_real_apply; + MODEL_COMMAND_CLASS (klass)->undo = model_transaction_command_real_undo; + MODEL_COMMAND_CLASS (klass)->merge = model_transaction_command_real_merge; + MODEL_COMMAND_CLASS (klass)->description = model_transaction_command_real_description; +} + + +static void model_transaction_command_instance_init (ModelTransactionCommand * self) { + self->priv = MODEL_TRANSACTION_COMMAND_GET_PRIVATE (self); +} + + +static void model_transaction_command_finalize (ModelCommand* obj) { + ModelTransactionCommand * self; + self = MODEL_TRANSACTION_COMMAND (obj); + _g_free0 (self->priv->transaction_description); + MODEL_COMMAND_CLASS (model_transaction_command_parent_class)->finalize (obj); +} + + +GType model_transaction_command_get_type (void) { + static volatile gsize model_transaction_command_type_id__volatile = 0; + if (g_once_init_enter (&model_transaction_command_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelTransactionCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_transaction_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelTransactionCommand), 0, (GInstanceInitFunc) model_transaction_command_instance_init, NULL }; + GType model_transaction_command_type_id; + model_transaction_command_type_id = g_type_register_static (MODEL_TYPE_COMMAND, "ModelTransactionCommand", &g_define_type_info, 0); + g_once_init_leave (&model_transaction_command_type_id__volatile, model_transaction_command_type_id); + } + return model_transaction_command_type_id__volatile; +} + + + + diff --git a/src/marina/marina/command.o b/src/marina/marina/command.o new file mode 100644 index 0000000000000000000000000000000000000000..e4baa652c5539085a01d402a1c32ae4db574c70b GIT binary patch literal 128556 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 literal 0 HcmV?d00001 diff --git a/src/marina/marina/import.c b/src/marina/marina/import.c new file mode 100644 index 0000000..3798054 --- /dev/null +++ b/src/marina/marina/import.c @@ -0,0 +1,1919 @@ +/* import.c generated by valac, the Vala compiler + * generated from import.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_MULTI_FILE_PROGRESS_INTERFACE (multi_file_progress_interface_get_type ()) +#define MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterface)) +#define IS_MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE)) +#define MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterfaceIface)) + +typedef struct _MultiFileProgressInterface MultiFileProgressInterface; +typedef struct _MultiFileProgressInterfaceIface MultiFileProgressInterfaceIface; + +#define MODEL_TYPE_CLIP_IMPORTER (model_clip_importer_get_type ()) +#define MODEL_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporter)) +#define MODEL_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass)) +#define MODEL_IS_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_IMPORTER)) +#define MODEL_IS_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_IMPORTER)) +#define MODEL_CLIP_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass)) + +typedef struct _ModelClipImporter ModelClipImporter; +typedef struct _ModelClipImporterClass ModelClipImporterClass; +typedef struct _ModelClipImporterPrivate ModelClipImporterPrivate; + +#define MODEL_CLIP_IMPORTER_TYPE_IMPORT_STATE (model_clip_importer_import_state_get_type ()) + +#define MODEL_TYPE_FETCHER (model_fetcher_get_type ()) +#define MODEL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER, ModelFetcher)) +#define MODEL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER, ModelFetcherClass)) +#define MODEL_IS_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER)) +#define MODEL_IS_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER)) +#define MODEL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER, ModelFetcherClass)) + +typedef struct _ModelFetcher ModelFetcher; +typedef struct _ModelFetcherClass ModelFetcherClass; + +#define MODEL_TYPE_CLIP_FETCHER (model_clip_fetcher_get_type ()) +#define MODEL_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcher)) +#define MODEL_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) +#define MODEL_IS_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_IS_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_CLIP_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) + +typedef struct _ModelClipFetcher ModelClipFetcher; +typedef struct _ModelClipFetcherClass ModelClipFetcherClass; +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL))) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +typedef struct _ModelFetcherPrivate ModelFetcherPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define TYPE_SINGLE_DECODE_BIN (single_decode_bin_get_type ()) +#define SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBin)) +#define SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) +#define IS_SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SINGLE_DECODE_BIN)) +#define IS_SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SINGLE_DECODE_BIN)) +#define SINGLE_DECODE_BIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) + +typedef struct _SingleDecodeBin SingleDecodeBin; +typedef struct _SingleDecodeBinClass SingleDecodeBinClass; +#define _gst_caps_unref0(var) ((var == NULL) ? NULL : (var = (gst_caps_unref (var), NULL))) + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; +typedef struct _ModelLibraryImporterPrivate ModelLibraryImporterPrivate; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define MODEL_TYPE_TIMELINE_IMPORTER (model_timeline_importer_get_type ()) +#define MODEL_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporter)) +#define MODEL_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass)) +#define MODEL_IS_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIMELINE_IMPORTER)) +#define MODEL_IS_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIMELINE_IMPORTER)) +#define MODEL_TIMELINE_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass)) + +typedef struct _ModelTimelineImporter ModelTimelineImporter; +typedef struct _ModelTimelineImporterClass ModelTimelineImporterClass; +typedef struct _ModelTimelineImporterPrivate ModelTimelineImporterPrivate; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define MODEL_TYPE_VIDEO_TRACK (model_video_track_get_type ()) +#define MODEL_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrack)) +#define MODEL_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) +#define MODEL_IS_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_IS_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) + +typedef struct _ModelVideoTrack ModelVideoTrack; +typedef struct _ModelVideoTrackClass ModelVideoTrackClass; + +#define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ()) +#define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack)) +#define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) +#define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) + +typedef struct _ModelAudioTrack ModelAudioTrack; +typedef struct _ModelAudioTrackClass ModelAudioTrackClass; + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +struct _MultiFileProgressInterfaceIface { + GTypeInterface parent_iface; + void (*cancel) (MultiFileProgressInterface* self); + void (*complete) (MultiFileProgressInterface* self); +}; + +struct _ModelClipImporter { + GObject parent_instance; + ModelClipImporterPrivate * priv; +}; + +struct _ModelClipImporterClass { + GObjectClass parent_class; +}; + +typedef enum { + MODEL_CLIP_IMPORTER_IMPORT_STATE_FETCHING, + MODEL_CLIP_IMPORTER_IMPORT_STATE_IMPORTING, + MODEL_CLIP_IMPORTER_IMPORT_STATE_CANCELLED +} ModelClipImporterImportState; + +struct _ModelClipImporterPrivate { + char* import_directory; + ModelClipImporterImportState import_state; + gboolean import_done; + gboolean all_done; + ModelClipFetcher* our_fetcher; + GstPad* video_pad; + GstPad* audio_pad; + GstPipeline* pipeline; + GstElement* filesink; + GstElement* video_convert; + GstElement* audio_convert; + GstElement* mux; + GstBin* video_decoder; + GstBin* audio_decoder; + gint current_file_importing; + gint64 current_time; + gint64 total_time; + gint64 previous_time; + GeeArrayList* filenames; + GeeArrayList* queued_fetchers; + GeeArrayList* queued_filenames; + GeeArrayList* no_import_formats; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _ModelFetcher { + GObject parent_instance; + ModelFetcherPrivate * priv; + GstElement* filesrc; + GstElement* decodebin; + GstPipeline* pipeline; + ModelClipFile* clipfile; + char* error_string; +}; + +struct _ModelFetcherClass { + GObjectClass parent_class; + void (*on_pad_added) (ModelFetcher* self, GstPad* pad); + void (*on_state_change) (ModelFetcher* self, GstBus* bus, GstMessage* message); +}; + +struct _ModelClipFile { + GObject parent_instance; + ModelClipFilePrivate * priv; + char* filename; + GstCaps* video_caps; + GstCaps* audio_caps; + GdkPixbuf* thumbnail; +}; + +struct _ModelClipFileClass { + GObjectClass parent_class; +}; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelLibraryImporter { + GObject parent_instance; + ModelLibraryImporterPrivate * priv; + ModelProject* project; + ModelClipImporter* importer; +}; + +struct _ModelLibraryImporterClass { + GObjectClass parent_class; + void (*append_existing_clipfile) (ModelLibraryImporter* self, ModelClipFile* f); + void (*on_clip_complete) (ModelLibraryImporter* self, ModelClipFile* f); +}; + +struct _ModelTimelineImporter { + ModelLibraryImporter parent_instance; + ModelTimelineImporterPrivate * priv; +}; + +struct _ModelTimelineImporterClass { + ModelLibraryImporterClass parent_class; +}; + +struct _ModelTimelineImporterPrivate { + ModelTrack* track; + gint64 time_to_add; + gboolean both_tracks; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + + +static gpointer model_clip_importer_parent_class = NULL; +static MultiFileProgressInterfaceIface* model_clip_importer_multi_file_progress_interface_parent_iface = NULL; +static gpointer model_library_importer_parent_class = NULL; +static gpointer model_timeline_importer_parent_class = NULL; + +GType multi_file_progress_interface_get_type (void); +GType model_clip_importer_get_type (void); +static GType model_clip_importer_import_state_get_type (void) G_GNUC_UNUSED; +GType model_fetcher_get_type (void); +GType model_clip_fetcher_get_type (void); +#define MODEL_CLIP_IMPORTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterPrivate)) +enum { + MODEL_CLIP_IMPORTER_DUMMY_PROPERTY +}; +ModelClipImporter* model_clip_importer_new (void); +ModelClipImporter* model_clip_importer_construct (GType object_type); +void model_clip_importer_add_filename (ModelClipImporter* self, const char* filename); +static gboolean model_clip_importer_on_timer_callback (ModelClipImporter* self); +static gboolean _model_clip_importer_on_timer_callback_gsource_func (gpointer self); +static void model_clip_importer_start_import (ModelClipImporter* self); +static void model_clip_importer_real_cancel (MultiFileProgressInterface* base); +static void model_clip_importer_process_curr_file (ModelClipImporter* self, GError** error); +void model_clip_importer_start (ModelClipImporter* self, GError** error); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +ModelClipFetcher* model_clip_fetcher_new (const char* filename, GError** error); +ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename, GError** error); +static void model_clip_importer_on_fetcher_ready (ModelClipImporter* self, ModelFetcher* f); +static void _model_clip_importer_on_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self); +static void model_clip_importer_do_import (ModelClipImporter* self, ModelClipFetcher* f, GError** error); +static void model_clip_importer_real_complete (MultiFileProgressInterface* base); +char* append_extension (const char* path, const char* extension); +GType model_clip_file_get_type (void); +gint64 model_clip_file_get_length (ModelClipFile* self); +static void model_clip_importer_do_import_complete (ModelClipImporter* self, GError** error); +static gboolean model_clip_importer_need_to_import (ModelClipImporter* self, ModelFetcher* f); +gboolean md5_checksum_on_file (const char* filename, char** checksum); +char* isolate_filename (const char* path); +gboolean get_file_md5_checksum (const char* filename, char** checksum); +void save_file_md5_checksum (const char* filename, const char* checksum); +static void model_clip_importer_on_state_changed (ModelClipImporter* self, GstBus* b, GstMessage* m); +static void _model_clip_importer_on_state_changed_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void model_clip_importer_on_eos (ModelClipImporter* self); +static void _model_clip_importer_on_eos_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void model_clip_importer_on_error (ModelClipImporter* self, GstBus* bus, GstMessage* message); +static void _model_clip_importer_on_error_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void model_clip_importer_on_warning (ModelClipImporter* self, GstBus* bus, GstMessage* message); +static void _model_clip_importer_on_warning_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +GstElement* make_element (const char* name, GError** error); +GType model_media_type_get_type (void); +gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t); +SingleDecodeBin* single_decode_bin_new (GstCaps* caps, const char* name, const char* uri, GError** error); +SingleDecodeBin* single_decode_bin_construct (GType object_type, GstCaps* caps, const char* name, const char* uri, GError** error); +GType single_decode_bin_get_type (void); +static void model_clip_importer_on_pad_added (ModelClipImporter* self, GstPad* p); +static void _model_clip_importer_on_pad_added_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self); +static void model_clip_importer_finalize (GObject* obj); +GType model_library_importer_get_type (void); +GType model_project_get_type (void); +enum { + MODEL_LIBRARY_IMPORTER_DUMMY_PROPERTY +}; +void model_library_importer_on_clip_complete (ModelLibraryImporter* self, ModelClipFile* f); +static void _model_library_importer_on_clip_complete_model_clip_importer_clip_complete (ModelClipImporter* _sender, ModelClipFile* f, gpointer self); +static void model_library_importer_on_error_occurred (ModelLibraryImporter* self, const char* _error_); +static void _model_library_importer_on_error_occurred_model_clip_importer_error_occurred (ModelClipImporter* _sender, const char* _error_, gpointer self); +static void model_library_importer_on_importer_started (ModelLibraryImporter* self, ModelClipImporter* i, gint num); +static void _model_library_importer_on_importer_started_model_clip_importer_importing_started (ModelClipImporter* _sender, gint num_clips, gpointer self); +ModelLibraryImporter* model_library_importer_new (ModelProject* p); +ModelLibraryImporter* model_library_importer_construct (GType object_type, ModelProject* p); +void model_library_importer_append_existing_clipfile (ModelLibraryImporter* self, ModelClipFile* f); +static void model_library_importer_real_append_existing_clipfile (ModelLibraryImporter* self, ModelClipFile* f); +ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename); +void model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile); +static void model_library_importer_real_on_clip_complete (ModelLibraryImporter* self, ModelClipFile* f); +void model_library_importer_add_file (ModelLibraryImporter* self, const char* filename, GError** error); +void model_library_importer_start (ModelLibraryImporter* self, GError** error); +static void model_library_importer_finalize (GObject* obj); +GType model_timeline_importer_get_type (void); +GType model_track_get_type (void); +#define MODEL_TIMELINE_IMPORTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterPrivate)) +enum { + MODEL_TIMELINE_IMPORTER_DUMMY_PROPERTY +}; +ModelTimelineImporter* model_timeline_importer_new (ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks); +ModelTimelineImporter* model_timeline_importer_construct (GType object_type, ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks); +GType model_video_track_get_type (void); +GType model_audio_track_get_type (void); +ModelAudioTrack* model_project_find_audio_track (ModelProject* self); +ModelVideoTrack* model_project_find_video_track (ModelProject* self); +void model_project_add (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, gint64 time); +static void model_timeline_importer_add_to_both (ModelTimelineImporter* self, ModelClipFile* clip_file); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType model_tempo_information_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType view_media_engine_get_type (void); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description); +void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description); +static void model_timeline_importer_real_append_existing_clipfile (ModelLibraryImporter* base, ModelClipFile* f); +static void model_timeline_importer_real_on_clip_complete (ModelLibraryImporter* base, ModelClipFile* f); +static void model_timeline_importer_finalize (GObject* obj); +static int _vala_strcmp0 (const char * str1, const char * str2); + + +static void g_cclosure_user_marshal_VOID__OBJECT_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); + +static GType model_clip_importer_import_state_get_type (void) { + static volatile gsize model_clip_importer_import_state_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_importer_import_state_type_id__volatile)) { + static const GEnumValue values[] = {{MODEL_CLIP_IMPORTER_IMPORT_STATE_FETCHING, "MODEL_CLIP_IMPORTER_IMPORT_STATE_FETCHING", "fetching"}, {MODEL_CLIP_IMPORTER_IMPORT_STATE_IMPORTING, "MODEL_CLIP_IMPORTER_IMPORT_STATE_IMPORTING", "importing"}, {MODEL_CLIP_IMPORTER_IMPORT_STATE_CANCELLED, "MODEL_CLIP_IMPORTER_IMPORT_STATE_CANCELLED", "cancelled"}, {0, NULL, NULL}}; + GType model_clip_importer_import_state_type_id; + model_clip_importer_import_state_type_id = g_enum_register_static ("ModelClipImporterImportState", values); + g_once_init_leave (&model_clip_importer_import_state_type_id__volatile, model_clip_importer_import_state_type_id); + } + return model_clip_importer_import_state_type_id__volatile; +} + + +#line 52 "import.vala" +ModelClipImporter* model_clip_importer_construct (GType object_type) { +#line 516 "import.c" + ModelClipImporter * self; + char* _tmp0_; + char* _tmp1_; +#line 52 "import.vala" + self = (ModelClipImporter*) g_object_new (object_type, NULL); +#line 53 "import.vala" + self->priv->import_directory = (_tmp0_ = g_strdup (g_get_home_dir ()), _g_free0 (self->priv->import_directory), _tmp0_); +#line 54 "import.vala" + self->priv->import_directory = (_tmp1_ = g_strconcat (self->priv->import_directory, "/.lombard_fillmore_import/", NULL), _g_free0 (self->priv->import_directory), _tmp1_); +#line 56 "import.vala" + g_mkdir (self->priv->import_directory, 0777); +#line 58 "import.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->no_import_formats), "YUY2"); +#line 59 "import.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->no_import_formats), "Y41B"); +#line 61 "import.vala" + self->priv->import_state = MODEL_CLIP_IMPORTER_IMPORT_STATE_FETCHING; +#line 534 "import.c" + return self; +} + + +#line 52 "import.vala" +ModelClipImporter* model_clip_importer_new (void) { +#line 52 "import.vala" + return model_clip_importer_construct (MODEL_TYPE_CLIP_IMPORTER); +#line 543 "import.c" +} + + +#line 64 "import.vala" +void model_clip_importer_add_filename (ModelClipImporter* self, const char* filename) { +#line 64 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 64 "import.vala" + g_return_if_fail (filename != NULL); +#line 65 "import.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->filenames), filename); +#line 555 "import.c" +} + + +#line 68 "import.vala" +static gboolean model_clip_importer_on_timer_callback (ModelClipImporter* self) { +#line 561 "import.c" + gboolean result = FALSE; + gint64 time = 0LL; + GstFormat format; + gboolean _tmp0_ = FALSE; +#line 68 "import.vala" + g_return_val_if_fail (MODEL_IS_CLIP_IMPORTER (self), FALSE); +#line 70 "import.vala" + format = GST_FORMAT_TIME; +#line 72 "import.vala" + if (self->priv->all_done) { +#line 572 "import.c" + result = FALSE; +#line 73 "import.vala" + return result; +#line 576 "import.c" + } +#line 75 "import.vala" + if (gst_element_query_position (GST_ELEMENT (self->priv->pipeline), &format, &time)) { +#line 76 "import.vala" + _tmp0_ = format == GST_FORMAT_TIME; +#line 582 "import.c" + } else { +#line 75 "import.vala" + _tmp0_ = FALSE; +#line 586 "import.c" + } +#line 75 "import.vala" + if (_tmp0_) { +#line 77 "import.vala" + if (time > self->priv->previous_time) { +#line 78 "import.vala" + self->priv->current_time = self->priv->current_time + (time - self->priv->previous_time); +#line 594 "import.c" + } +#line 79 "import.vala" + self->priv->previous_time = time; +#line 80 "import.vala" + if (self->priv->current_time >= self->priv->total_time) { +#line 81 "import.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "fraction-updated", 1.0); +#line 602 "import.c" + result = FALSE; +#line 82 "import.vala" + return result; +#line 606 "import.c" + } else { +#line 84 "import.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "fraction-updated", self->priv->current_time / ((double) self->priv->total_time)); +#line 610 "import.c" + } + } + result = TRUE; +#line 86 "import.vala" + return result; +#line 616 "import.c" +} + + +#line 68 "import.vala" +static gboolean _model_clip_importer_on_timer_callback_gsource_func (gpointer self) { +#line 622 "import.c" + gboolean result; + result = model_clip_importer_on_timer_callback (self); + return result; +} + + +#line 89 "import.vala" +static void model_clip_importer_start_import (ModelClipImporter* self) { +#line 89 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 90 "import.vala" + self->priv->import_state = MODEL_CLIP_IMPORTER_IMPORT_STATE_IMPORTING; +#line 91 "import.vala" + self->priv->current_file_importing = 0; +#line 92 "import.vala" + g_signal_emit_by_name (self, "importing-started", gee_collection_get_size (GEE_COLLECTION (self->priv->queued_fetchers))); +#line 93 "import.vala" + g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 50, _model_clip_importer_on_timer_callback_gsource_func, g_object_ref (self), g_object_unref); +#line 641 "import.c" +} + + +#line 96 "import.vala" +static void model_clip_importer_real_cancel (MultiFileProgressInterface* base) { +#line 647 "import.c" + ModelClipImporter * self; + self = MODEL_CLIP_IMPORTER (base); +#line 97 "import.vala" + self->priv->all_done = TRUE; +#line 98 "import.vala" + self->priv->import_state = MODEL_CLIP_IMPORTER_IMPORT_STATE_CANCELLED; +#line 99 "import.vala" + if (self->priv->pipeline != NULL) { +#line 100 "import.vala" + gst_element_set_state (GST_ELEMENT (self->priv->pipeline), GST_STATE_NULL); +#line 658 "import.c" + } +} + + +#line 104 "import.vala" +void model_clip_importer_start (ModelClipImporter* self, GError** error) { +#line 665 "import.c" + GError * _inner_error_; +#line 104 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 669 "import.c" + _inner_error_ = NULL; +#line 105 "import.vala" + model_clip_importer_process_curr_file (self, &_inner_error_); +#line 673 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +} + + +#line 173 "import.vala" +static void _model_clip_importer_on_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self) { +#line 683 "import.c" + model_clip_importer_on_fetcher_ready (self, fetcher); +} + + +#line 108 "import.vala" +static void model_clip_importer_process_curr_file (ModelClipImporter* self, GError** error) { +#line 690 "import.c" + GError * _inner_error_; +#line 108 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 694 "import.c" + _inner_error_ = NULL; +#line 109 "import.vala" + if (self->priv->import_state == MODEL_CLIP_IMPORTER_IMPORT_STATE_FETCHING) { +#line 110 "import.vala" + if (self->priv->current_file_importing == gee_collection_get_size (GEE_COLLECTION (self->priv->filenames))) { +#line 111 "import.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->priv->queued_fetchers)) == 0) { +#line 112 "import.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "done"); +#line 704 "import.c" + } else { +#line 114 "import.vala" + model_clip_importer_start_import (self); +#line 708 "import.c" + } + } else { + char* _tmp1_; + char* _tmp0_; + char* _tmp2_; + ModelClipFetcher* _tmp3_; + ModelClipFetcher* _tmp4_; + ModelClipFetcher* _tmp5_; +#line 116 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_IMPORT, LOGGING_LEVEL_VERBOSE, _tmp1_ = g_strdup_printf ("fetching %s", _tmp0_ = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->filenames), self->priv->current_file_importing))); +#line 719 "import.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +#line 118 "import.vala" + _tmp4_ = (_tmp3_ = model_clip_fetcher_new (_tmp2_ = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->filenames), self->priv->current_file_importing), &_inner_error_), _g_free0 (_tmp2_), _tmp3_); +#line 724 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 118 "import.vala" + self->priv->our_fetcher = (_tmp5_ = _tmp4_, _g_object_unref0 (self->priv->our_fetcher), _tmp5_); +#line 119 "import.vala" + g_signal_connect_object (MODEL_FETCHER (self->priv->our_fetcher), "ready", (GCallback) _model_clip_importer_on_fetcher_ready_model_fetcher_ready, self, 0); +#line 733 "import.c" + } + } +#line 123 "import.vala" + if (self->priv->import_state == MODEL_CLIP_IMPORTER_IMPORT_STATE_IMPORTING) { +#line 124 "import.vala" + if (self->priv->current_file_importing == gee_collection_get_size (GEE_COLLECTION (self->priv->queued_fetchers))) { +#line 125 "import.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "fraction-updated", 1.0); +#line 126 "import.vala" + self->priv->all_done = TRUE; +#line 744 "import.c" + } else { + ModelClipFetcher* _tmp6_; +#line 128 "import.vala" + model_clip_importer_do_import (self, _tmp6_ = (ModelClipFetcher*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->queued_fetchers), self->priv->current_file_importing), &_inner_error_); +#line 749 "import.c" + _g_object_unref0 (_tmp6_); + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } + } + } +} + + +#line 133 "import.vala" +static void model_clip_importer_real_complete (MultiFileProgressInterface* base) { +#line 762 "import.c" + ModelClipImporter * self; + self = MODEL_CLIP_IMPORTER (base); +#line 134 "import.vala" + self->priv->all_done = TRUE; +#line 767 "import.c" +} + + +#line 137 "import.vala" +static void model_clip_importer_do_import_complete (ModelClipImporter* self, GError** error) { +#line 773 "import.c" + GError * _inner_error_; +#line 137 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 777 "import.c" + _inner_error_ = NULL; +#line 138 "import.vala" + if (self->priv->import_state == MODEL_CLIP_IMPORTER_IMPORT_STATE_IMPORTING) { +#line 781 "import.c" + char* _tmp2_; + char* *_tmp1_; + char* _tmp0_; +#line 139 "import.vala" + _tmp1_ = &MODEL_FETCHER (self->priv->our_fetcher)->clipfile->filename; +#line 139 "import.vala" + (*_tmp1_) = (_tmp2_ = append_extension (_tmp0_ = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->queued_filenames), self->priv->current_file_importing), "mov"), _g_free0 ((*_tmp1_)), _tmp2_); +#line 789 "import.c" + _g_free0 (_tmp0_); +#line 141 "import.vala" + g_signal_emit_by_name (self, "clip-complete", MODEL_FETCHER (self->priv->our_fetcher)->clipfile); +#line 793 "import.c" + } else { +#line 143 "import.vala" + self->priv->total_time = self->priv->total_time + model_clip_file_get_length (MODEL_FETCHER (self->priv->our_fetcher)->clipfile); +#line 797 "import.c" + } +#line 145 "import.vala" + self->priv->current_file_importing++; +#line 147 "import.vala" + if (self->priv->current_file_importing <= gee_collection_get_size (GEE_COLLECTION (self->priv->filenames))) { +#line 148 "import.vala" + model_clip_importer_process_curr_file (self, &_inner_error_); +#line 805 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } + } else { + char* _tmp3_; +#line 150 "import.vala" + g_warning ("import.vala:150: %s", _tmp3_ = g_strdup_printf ("do_import_complete: current_file_importing out of bounds! %d %d", self->priv->current_file_importing, gee_collection_get_size (GEE_COLLECTION (self->priv->filenames)))); +#line 814 "import.c" + _g_free0 (_tmp3_); + } +} + + +#line 154 "import.vala" +static gboolean model_clip_importer_need_to_import (ModelClipImporter* self, ModelFetcher* f) { +#line 822 "import.c" + gboolean result = FALSE; +#line 154 "import.vala" + g_return_val_if_fail (MODEL_IS_CLIP_IMPORTER (self), FALSE); +#line 154 "import.vala" + g_return_val_if_fail (MODEL_IS_FETCHER (f), FALSE); +#line 828 "import.c" + result = FALSE; +#line 156 "import.vala" + return result; +#line 832 "import.c" +} + + +#line 173 "import.vala" +static void model_clip_importer_on_fetcher_ready (ModelClipImporter* self, ModelFetcher* f) { +#line 838 "import.c" + GError * _inner_error_; +#line 173 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 173 "import.vala" + g_return_if_fail (MODEL_IS_FETCHER (f)); +#line 844 "import.c" + _inner_error_ = NULL; +#line 174 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_fetcher_ready"); +#line 848 "import.c" + { +#line 176 "import.vala" + if (f->error_string != NULL) { +#line 177 "import.vala" + g_signal_emit_by_name (self, "error-occurred", f->error_string); +#line 178 "import.vala" + model_clip_importer_do_import_complete (self, &_inner_error_); +#line 856 "import.c" + if (_inner_error_ != NULL) { + goto __catch7_g_error; + } +#line 179 "import.vala" + return; +#line 862 "import.c" + } +#line 182 "import.vala" + if (model_clip_importer_need_to_import (self, f)) { +#line 866 "import.c" + char* checksum; + char* _tmp2_; + gboolean _tmp1_; + char* _tmp0_ = NULL; + checksum = NULL; +#line 184 "import.vala" + if ((_tmp1_ = md5_checksum_on_file (f->clipfile->filename, &_tmp0_), checksum = (_tmp2_ = _tmp0_, _g_free0 (checksum), _tmp2_), _tmp1_)) { +#line 874 "import.c" + char* _tmp3_; + char* _tmp4_; + char* base_filename; + gint index; + char* new_filename; +#line 185 "import.vala" + base_filename = (_tmp4_ = g_strconcat (self->priv->import_directory, _tmp3_ = isolate_filename (f->clipfile->filename), NULL), _g_free0 (_tmp3_), _tmp4_); +#line 187 "import.vala" + index = 0; +#line 188 "import.vala" + new_filename = g_strdup (base_filename); +#line 189 "import.vala" + while (TRUE) { +#line 888 "import.c" + char* existing_checksum; + char* _tmp7_; + gboolean _tmp6_; + char* _tmp5_ = NULL; + existing_checksum = NULL; +#line 191 "import.vala" + if ((_tmp6_ = get_file_md5_checksum (new_filename, &_tmp5_), existing_checksum = (_tmp7_ = _tmp5_, _g_free0 (existing_checksum), _tmp7_), _tmp6_)) { +#line 896 "import.c" + char* _tmp10_; + char* _tmp9_; +#line 192 "import.vala" + if (_vala_strcmp0 (checksum, existing_checksum) == 0) { +#line 901 "import.c" + char* _tmp8_; +#line 194 "import.vala" + gee_abstract_list_set (GEE_ABSTRACT_LIST (self->priv->filenames), self->priv->current_file_importing, _tmp8_ = append_extension (new_filename, "mov")); +#line 905 "import.c" + _g_free0 (_tmp8_); +#line 196 "import.vala" + self->priv->current_file_importing--; +#line 197 "import.vala" + self->priv->total_time = self->priv->total_time - model_clip_file_get_length (f->clipfile); +#line 911 "import.c" + _g_free0 (existing_checksum); +#line 198 "import.vala" + break; +#line 915 "import.c" + } +#line 200 "import.vala" + index++; +#line 201 "import.vala" + new_filename = (_tmp10_ = g_strconcat (base_filename, _tmp9_ = g_strdup_printf ("%i", index), NULL), _g_free0 (new_filename), _tmp10_); +#line 921 "import.c" + _g_free0 (_tmp9_); + } else { + ModelFetcher* _tmp11_; +#line 204 "import.vala" + save_file_md5_checksum (new_filename, checksum); +#line 205 "import.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->queued_filenames), new_filename); +#line 206 "import.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->queued_fetchers), (_tmp11_ = f, MODEL_IS_CLIP_FETCHER (_tmp11_) ? ((ModelClipFetcher*) _tmp11_) : NULL)); +#line 931 "import.c" + _g_free0 (existing_checksum); +#line 207 "import.vala" + break; +#line 935 "import.c" + } + _g_free0 (existing_checksum); + } + _g_free0 (base_filename); + _g_free0 (new_filename); + } else { +#line 211 "import.vala" + g_error ("import.vala:211: Cannot get md5 checksum for file %s!", f->clipfile->filename); +#line 944 "import.c" + } + _g_free0 (checksum); + } else { +#line 213 "import.vala" + g_signal_emit_by_name (self, "clip-complete", f->clipfile); +#line 950 "import.c" + } +#line 215 "import.vala" + model_clip_importer_do_import_complete (self, &_inner_error_); +#line 954 "import.c" + if (_inner_error_ != NULL) { + goto __catch7_g_error; + } + } + goto __finally7; + __catch7_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 217 "import.vala" + g_signal_emit_by_name (self, "error-occurred", e->message); +#line 968 "import.c" + _g_error_free0 (e); + } + } + __finally7: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 325 "import.vala" +static void _model_clip_importer_on_state_changed_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 988 "import.c" + model_clip_importer_on_state_changed (self, _sender, message); +} + + +#line 369 "import.vala" +static void _model_clip_importer_on_eos_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 995 "import.c" + model_clip_importer_on_eos (self); +} + + +#line 308 "import.vala" +static void _model_clip_importer_on_error_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 1002 "import.c" + model_clip_importer_on_error (self, _sender, message); +} + + +#line 317 "import.vala" +static void _model_clip_importer_on_warning_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 1009 "import.c" + model_clip_importer_on_warning (self, _sender, message); +} + + +static gpointer _gst_object_ref0 (gpointer self) { + return self ? gst_object_ref (self) : NULL; +} + + +#line 285 "import.vala" +static void _model_clip_importer_on_pad_added_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self) { +#line 1021 "import.c" + model_clip_importer_on_pad_added (self, pad); +} + + +#line 221 "import.vala" +static void model_clip_importer_do_import (ModelClipImporter* self, ModelClipFetcher* f, GError** error) { +#line 1028 "import.c" + GError * _inner_error_; + ModelClipFetcher* _tmp0_; + GstPipeline* _tmp1_; + GstBus* bus; + GstElement* _tmp2_; + GstElement* _tmp3_; + GstElement* _tmp4_; + GstElement* _tmp5_; + char* _tmp7_; + char* _tmp6_; + char* _tmp21_; + char* _tmp20_; +#line 221 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 221 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_FETCHER (f)); +#line 1045 "import.c" + _inner_error_ = NULL; +#line 222 "import.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "file-updated", MODEL_FETCHER (f)->clipfile->filename, self->priv->current_file_importing); +#line 223 "import.vala" + self->priv->previous_time = (gint64) 0; +#line 225 "import.vala" + self->priv->our_fetcher = (_tmp0_ = _g_object_ref0 (f), _g_object_unref0 (self->priv->our_fetcher), _tmp0_); +#line 226 "import.vala" + self->priv->import_done = FALSE; +#line 227 "import.vala" + self->priv->pipeline = (_tmp1_ = (GstPipeline*) gst_pipeline_new ("pipeline"), _gst_object_unref0 (self->priv->pipeline), _tmp1_); +#line 228 "import.vala" + gst_pipeline_set_auto_flush_bus (self->priv->pipeline, FALSE); +#line 230 "import.vala" + bus = gst_pipeline_get_bus (self->priv->pipeline); +#line 231 "import.vala" + gst_bus_add_signal_watch (bus); +#line 233 "import.vala" + g_signal_connect_object (bus, "message::state-changed", (GCallback) _model_clip_importer_on_state_changed_gst_bus_message, self, 0); +#line 234 "import.vala" + g_signal_connect_object (bus, "message::eos", (GCallback) _model_clip_importer_on_eos_gst_bus_message, self, 0); +#line 235 "import.vala" + g_signal_connect_object (bus, "message::error", (GCallback) _model_clip_importer_on_error_gst_bus_message, self, 0); +#line 236 "import.vala" + g_signal_connect_object (bus, "message::warning", (GCallback) _model_clip_importer_on_warning_gst_bus_message, self, 0); +#line 238 "import.vala" + _tmp2_ = make_element ("qtmux", &_inner_error_); +#line 1073 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (bus); + return; + } +#line 238 "import.vala" + self->priv->mux = (_tmp3_ = _tmp2_, _gst_object_unref0 (self->priv->mux), _tmp3_); +#line 240 "import.vala" + _tmp4_ = make_element ("filesink", &_inner_error_); +#line 1083 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (bus); + return; + } +#line 240 "import.vala" + self->priv->filesink = (_tmp5_ = _tmp4_, _gst_object_unref0 (self->priv->filesink), _tmp5_); +#line 241 "import.vala" + g_object_set (G_OBJECT (self->priv->filesink), "location", _tmp7_ = append_extension (_tmp6_ = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->queued_filenames), self->priv->current_file_importing), "mov"), NULL); +#line 1093 "import.c" + _g_free0 (_tmp7_); + _g_free0 (_tmp6_); +#line 243 "import.vala" + gst_bin_add_many (GST_BIN (self->priv->pipeline), _gst_object_ref0 (self->priv->mux), _gst_object_ref0 (self->priv->filesink), NULL); +#line 245 "import.vala" + if (model_clip_file_is_of_type (MODEL_FETCHER (f)->clipfile, MODEL_MEDIA_TYPE_VIDEO)) { +#line 1100 "import.c" + GstElement* _tmp8_; + GstElement* _tmp9_; + GstCaps* _tmp10_; + SingleDecodeBin* _tmp11_; + SingleDecodeBin* _tmp12_; + GstBin* _tmp13_; +#line 246 "import.vala" + _tmp8_ = make_element ("ffmpegcolorspace", &_inner_error_); +#line 1109 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (bus); + return; + } +#line 246 "import.vala" + self->priv->video_convert = (_tmp9_ = _tmp8_, _gst_object_unref0 (self->priv->video_convert), _tmp9_); +#line 247 "import.vala" + gst_bin_add (GST_BIN (self->priv->pipeline), _gst_object_ref0 (self->priv->video_convert)); +#line 249 "import.vala" + _tmp12_ = (_tmp11_ = single_decode_bin_new (_tmp10_ = gst_caps_from_string ("video/x-raw-yuv"), "videodecodebin", MODEL_FETCHER (f)->clipfile->filename, &_inner_error_), _gst_caps_unref0 (_tmp10_), _tmp11_); +#line 1121 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (bus); + return; + } +#line 249 "import.vala" + self->priv->video_decoder = (_tmp13_ = GST_BIN (_tmp12_), _gst_object_unref0 (self->priv->video_decoder), _tmp13_); +#line 253 "import.vala" + g_signal_connect_object (GST_ELEMENT (self->priv->video_decoder), "pad-added", (GCallback) _model_clip_importer_on_pad_added_gst_element_pad_added, self, 0); +#line 255 "import.vala" + gst_bin_add (GST_BIN (self->priv->pipeline), _gst_object_ref0 (GST_ELEMENT (self->priv->video_decoder))); +#line 257 "import.vala" + if (!gst_element_link (self->priv->video_convert, self->priv->mux)) { +#line 258 "import.vala" + g_error ("import.vala:258: do_import: Cannot link video converter to mux!"); +#line 1137 "import.c" + } + } +#line 260 "import.vala" + if (model_clip_file_is_of_type (MODEL_FETCHER (f)->clipfile, MODEL_MEDIA_TYPE_AUDIO)) { +#line 1142 "import.c" + GstElement* _tmp14_; + GstElement* _tmp15_; + GstCaps* _tmp16_; + SingleDecodeBin* _tmp17_; + SingleDecodeBin* _tmp18_; + GstBin* _tmp19_; +#line 261 "import.vala" + _tmp14_ = make_element ("audioconvert", &_inner_error_); +#line 1151 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (bus); + return; + } +#line 261 "import.vala" + self->priv->audio_convert = (_tmp15_ = _tmp14_, _gst_object_unref0 (self->priv->audio_convert), _tmp15_); +#line 262 "import.vala" + gst_bin_add (GST_BIN (self->priv->pipeline), _gst_object_ref0 (self->priv->audio_convert)); +#line 266 "import.vala" + _tmp18_ = (_tmp17_ = single_decode_bin_new (_tmp16_ = gst_caps_from_string ("audio/x-raw-int"), "audiodecodebin", MODEL_FETCHER (f)->clipfile->filename, &_inner_error_), _gst_caps_unref0 (_tmp16_), _tmp17_); +#line 1163 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (bus); + return; + } +#line 266 "import.vala" + self->priv->audio_decoder = (_tmp19_ = GST_BIN (_tmp18_), _gst_object_unref0 (self->priv->audio_decoder), _tmp19_); +#line 269 "import.vala" + g_signal_connect_object (GST_ELEMENT (self->priv->audio_decoder), "pad-added", (GCallback) _model_clip_importer_on_pad_added_gst_element_pad_added, self, 0); +#line 271 "import.vala" + gst_bin_add (GST_BIN (self->priv->pipeline), _gst_object_ref0 (GST_ELEMENT (self->priv->audio_decoder))); +#line 273 "import.vala" + if (!gst_element_link (self->priv->audio_convert, self->priv->mux)) { +#line 274 "import.vala" + g_error ("import.vala:274: do_import: Cannot link audio convert to mux!"); +#line 1179 "import.c" + } + } +#line 277 "import.vala" + if (!gst_element_link (self->priv->mux, self->priv->filesink)) { +#line 278 "import.vala" + g_error ("import.vala:278: do_import: Cannot link mux to filesink!"); +#line 1186 "import.c" + } +#line 280 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_IMPORT, LOGGING_LEVEL_VERBOSE, _tmp21_ = g_strdup_printf ("Starting import to %s...", _tmp20_ = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->queued_filenames), self->priv->current_file_importing))); +#line 1190 "import.c" + _g_free0 (_tmp21_); + _g_free0 (_tmp20_); +#line 282 "import.vala" + gst_element_set_state (GST_ELEMENT (self->priv->pipeline), GST_STATE_PLAYING); +#line 1195 "import.c" + _gst_object_unref0 (bus); +} + + +#line 285 "import.vala" +static void model_clip_importer_on_pad_added (ModelClipImporter* self, GstPad* p) { +#line 1202 "import.c" + GstCaps* _tmp1_; + GstCaps* _tmp0_ = NULL; + char* _tmp2_; + char* str; + GstPad* sink; +#line 285 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 285 "import.vala" + g_return_if_fail (GST_IS_PAD (p)); +#line 286 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pad_added"); +#line 288 "import.vala" + str = (_tmp2_ = gst_caps_to_string (_tmp1_ = (g_object_get (p, "caps", &_tmp0_, NULL), _tmp0_)), _gst_caps_unref0 (_tmp1_), _tmp2_); +#line 289 "import.vala" + sink = NULL; +#line 291 "import.vala" + if (g_str_has_prefix (str, "video")) { +#line 1220 "import.c" + GstPad* _tmp3_; + GstPad* _tmp6_; + GstCaps* _tmp5_; + GstCaps* _tmp4_ = NULL; +#line 292 "import.vala" + self->priv->video_pad = (_tmp3_ = _gst_object_ref0 (p), _gst_object_unref0 (self->priv->video_pad), _tmp3_); +#line 293 "import.vala" + sink = (_tmp6_ = gst_element_get_compatible_pad (self->priv->video_convert, p, _tmp5_ = (g_object_get (p, "caps", &_tmp4_, NULL), _tmp4_)), _gst_object_unref0 (sink), _tmp6_); +#line 1229 "import.c" + _gst_caps_unref0 (_tmp5_); + } else { +#line 294 "import.vala" + if (g_str_has_prefix (str, "audio")) { +#line 1234 "import.c" + GstPad* _tmp7_; + GstPad* _tmp10_; + GstCaps* _tmp9_; + GstCaps* _tmp8_ = NULL; +#line 295 "import.vala" + self->priv->audio_pad = (_tmp7_ = _gst_object_ref0 (p), _gst_object_unref0 (self->priv->audio_pad), _tmp7_); +#line 296 "import.vala" + sink = (_tmp10_ = gst_element_get_compatible_pad (self->priv->audio_convert, p, _tmp9_ = (g_object_get (p, "caps", &_tmp8_, NULL), _tmp8_)), _gst_object_unref0 (sink), _tmp10_); +#line 1243 "import.c" + _gst_caps_unref0 (_tmp9_); + } else { + char* _tmp11_; +#line 299 "import.vala" + g_warning ("import.vala:299: %s", _tmp11_ = g_strdup_printf ("Unrecognized prefix %s", str)); +#line 1249 "import.c" + _g_free0 (_tmp11_); + _g_free0 (str); + _gst_object_unref0 (sink); +#line 300 "import.vala" + return; +#line 1255 "import.c" + } + } +#line 303 "import.vala" + if (gst_pad_link (p, sink) != GST_PAD_LINK_OK) { +#line 304 "import.vala" + g_error ("import.vala:304: Cannot link pad in importer!"); +#line 1262 "import.c" + } + _g_free0 (str); + _gst_object_unref0 (sink); +} + + +#line 308 "import.vala" +static void model_clip_importer_on_error (ModelClipImporter* self, GstBus* bus, GstMessage* message) { +#line 1271 "import.c" + GError* e; + char* text; + char* _tmp3_; + char* _tmp2_ = NULL; + GError* _tmp1_; + GError* _tmp0_ = NULL; +#line 308 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 308 "import.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 308 "import.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 309 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error"); +#line 1286 "import.c" + e = NULL; + text = NULL; +#line 312 "import.vala" + (gst_message_parse_error (message, &_tmp0_, &_tmp2_), e = (_tmp1_ = _tmp0_, _g_error_free0 (e), _tmp1_)); +#line 312 "import.vala" + text = (_tmp3_ = _tmp2_, _g_free0 (text), _tmp3_); +#line 313 "import.vala" + g_warning ("import.vala:313: %s\n", text); +#line 314 "import.vala" + g_signal_emit_by_name (self, "error-occurred", text); +#line 1297 "import.c" + _g_error_free0 (e); + _g_free0 (text); +} + + +#line 317 "import.vala" +static void model_clip_importer_on_warning (ModelClipImporter* self, GstBus* bus, GstMessage* message) { +#line 1305 "import.c" + GError* e; + char* text; + char* _tmp3_; + char* _tmp2_ = NULL; + GError* _tmp1_; + GError* _tmp0_ = NULL; +#line 317 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 317 "import.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 317 "import.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 318 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_warning"); +#line 1320 "import.c" + e = NULL; + text = NULL; +#line 321 "import.vala" + (gst_message_parse_warning (message, &_tmp0_, &_tmp2_), e = (_tmp1_ = _tmp0_, _g_error_free0 (e), _tmp1_)); +#line 321 "import.vala" + text = (_tmp3_ = _tmp2_, _g_free0 (text), _tmp3_); +#line 322 "import.vala" + g_warning ("import.vala:322: %s", text); +#line 1329 "import.c" + _g_error_free0 (e); + _g_free0 (text); +} + + +#line 325 "import.vala" +static void model_clip_importer_on_state_changed (ModelClipImporter* self, GstBus* b, GstMessage* m) { +#line 1337 "import.c" + GError * _inner_error_; + GstState old_state = 0; + GstState new_state = 0; + GstState pending = 0; + char* _tmp0_; +#line 325 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 325 "import.vala" + g_return_if_fail (GST_IS_BUS (b)); +#line 325 "import.vala" + g_return_if_fail (GST_IS_MESSAGE (m)); +#line 1349 "import.c" + _inner_error_ = NULL; +#line 326 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_state_changed"); +#line 327 "import.vala" + if (m->src != GST_OBJECT (self->priv->pipeline)) { +#line 328 "import.vala" + return; +#line 1357 "import.c" + } +#line 334 "import.vala" + gst_message_parse_state_changed (m, &old_state, &new_state, &pending); +#line 336 "import.vala" + if (old_state == new_state) { +#line 337 "import.vala" + return; +#line 1365 "import.c" + } +#line 339 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_IMPORT, LOGGING_LEVEL_VERBOSE, _tmp0_ = g_strdup_printf ("Import State in %s", gst_element_state_get_name (new_state))); +#line 1369 "import.c" + _g_free0 (_tmp0_); +#line 341 "import.vala" + if (new_state == GST_STATE_PAUSED) { +#line 342 "import.vala" + if (!self->priv->import_done) { +#line 1375 "import.c" + char* _tmp7_; +#line 343 "import.vala" + if (self->priv->video_pad != NULL) { +#line 1379 "import.c" + GstCaps* _tmp3_; + GstCaps* *_tmp2_; + GstCaps* _tmp1_ = NULL; +#line 344 "import.vala" + _tmp2_ = &MODEL_FETCHER (self->priv->our_fetcher)->clipfile->video_caps; +#line 344 "import.vala" + (*_tmp2_) = (_tmp3_ = (g_object_get (self->priv->video_pad, "caps", &_tmp1_, NULL), _tmp1_), _gst_caps_unref0 ((*_tmp2_)), _tmp3_); +#line 1387 "import.c" + } +#line 346 "import.vala" + if (self->priv->audio_pad != NULL) { +#line 1391 "import.c" + GstCaps* _tmp6_; + GstCaps* *_tmp5_; + GstCaps* _tmp4_ = NULL; +#line 347 "import.vala" + _tmp5_ = &MODEL_FETCHER (self->priv->our_fetcher)->clipfile->audio_caps; +#line 347 "import.vala" + (*_tmp5_) = (_tmp6_ = (g_object_get (self->priv->audio_pad, "caps", &_tmp4_, NULL), _tmp4_), _gst_caps_unref0 ((*_tmp5_)), _tmp6_); +#line 1399 "import.c" + } +#line 349 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_IMPORT, LOGGING_LEVEL_VERBOSE, _tmp7_ = g_strdup_printf ("Got clipfile info for: %s", MODEL_FETCHER (self->priv->our_fetcher)->clipfile->filename)); +#line 1403 "import.c" + _g_free0 (_tmp7_); + } + } else { +#line 352 "import.vala" + if (new_state == GST_STATE_NULL) { +#line 353 "import.vala" + if (self->priv->import_state == MODEL_CLIP_IMPORTER_IMPORT_STATE_CANCELLED) { +#line 1411 "import.c" + char* _tmp9_; + char* _tmp8_; + char* _tmp11_; + char* _tmp10_; +#line 354 "import.vala" + g_remove (_tmp9_ = append_extension (_tmp8_ = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->queued_filenames), self->priv->current_file_importing), "mov")); +#line 1418 "import.c" + _g_free0 (_tmp9_); + _g_free0 (_tmp8_); +#line 356 "import.vala" + g_remove (_tmp11_ = append_extension (_tmp10_ = (char*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->queued_filenames), self->priv->current_file_importing), "md5")); +#line 1423 "import.c" + _g_free0 (_tmp11_); + _g_free0 (_tmp10_); + } else { +#line 359 "import.vala" + if (self->priv->import_done) { +#line 1429 "import.c" + { +#line 361 "import.vala" + model_clip_importer_do_import_complete (self, &_inner_error_); +#line 1433 "import.c" + if (_inner_error_ != NULL) { + goto __catch8_g_error; + } + } + goto __finally8; + __catch8_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 363 "import.vala" + g_signal_emit_by_name (self, "error-occurred", e->message); +#line 1447 "import.c" + _g_error_free0 (e); + } + } + __finally8: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + } + } + } +} + + +#line 369 "import.vala" +static void model_clip_importer_on_eos (ModelClipImporter* self) { +#line 369 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (self)); +#line 370 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_eos"); +#line 371 "import.vala" + self->priv->import_done = TRUE; +#line 372 "import.vala" + gst_element_set_state (GST_ELEMENT (self->priv->pipeline), GST_STATE_NULL); +#line 1474 "import.c" +} + + +static void model_clip_importer_class_init (ModelClipImporterClass * klass) { + model_clip_importer_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelClipImporterPrivate)); + G_OBJECT_CLASS (klass)->finalize = model_clip_importer_finalize; + g_signal_new ("clip_complete", MODEL_TYPE_CLIP_IMPORTER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP_FILE); + g_signal_new ("importing_started", MODEL_TYPE_CLIP_IMPORTER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); + g_signal_new ("error_occurred", MODEL_TYPE_CLIP_IMPORTER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); +} + + +static void model_clip_importer_multi_file_progress_interface_interface_init (MultiFileProgressInterfaceIface * iface) { + model_clip_importer_multi_file_progress_interface_parent_iface = g_type_interface_peek_parent (iface); + iface->cancel = model_clip_importer_real_cancel; + iface->complete = model_clip_importer_real_complete; +} + + +static void model_clip_importer_instance_init (ModelClipImporter * self) { + self->priv = MODEL_CLIP_IMPORTER_GET_PRIVATE (self); + self->priv->pipeline = NULL; + self->priv->current_file_importing = 0; + self->priv->filenames = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL); + self->priv->queued_fetchers = gee_array_list_new (MODEL_TYPE_CLIP_FETCHER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); + self->priv->queued_filenames = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL); + self->priv->no_import_formats = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL); +} + + +static void model_clip_importer_finalize (GObject* obj) { + ModelClipImporter * self; + self = MODEL_CLIP_IMPORTER (obj); + _g_free0 (self->priv->import_directory); + _g_object_unref0 (self->priv->our_fetcher); + _gst_object_unref0 (self->priv->video_pad); + _gst_object_unref0 (self->priv->audio_pad); + _gst_object_unref0 (self->priv->pipeline); + _gst_object_unref0 (self->priv->filesink); + _gst_object_unref0 (self->priv->video_convert); + _gst_object_unref0 (self->priv->audio_convert); + _gst_object_unref0 (self->priv->mux); + _gst_object_unref0 (self->priv->video_decoder); + _gst_object_unref0 (self->priv->audio_decoder); + _g_object_unref0 (self->priv->filenames); + _g_object_unref0 (self->priv->queued_fetchers); + _g_object_unref0 (self->priv->queued_filenames); + _g_object_unref0 (self->priv->no_import_formats); + G_OBJECT_CLASS (model_clip_importer_parent_class)->finalize (obj); +} + + +GType model_clip_importer_get_type (void) { + static volatile gsize model_clip_importer_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_importer_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelClipImporterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_importer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipImporter), 0, (GInstanceInitFunc) model_clip_importer_instance_init, NULL }; + static const GInterfaceInfo multi_file_progress_interface_info = { (GInterfaceInitFunc) model_clip_importer_multi_file_progress_interface_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType model_clip_importer_type_id; + model_clip_importer_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelClipImporter", &g_define_type_info, 0); + g_type_add_interface_static (model_clip_importer_type_id, TYPE_MULTI_FILE_PROGRESS_INTERFACE, &multi_file_progress_interface_info); + g_once_init_leave (&model_clip_importer_type_id__volatile, model_clip_importer_type_id); + } + return model_clip_importer_type_id__volatile; +} + + +#line 406 "import.vala" +static void _model_library_importer_on_clip_complete_model_clip_importer_clip_complete (ModelClipImporter* _sender, ModelClipFile* f, gpointer self) { +#line 1544 "import.c" + model_library_importer_on_clip_complete (self, f); +} + + +#line 396 "import.vala" +static void _model_library_importer_on_error_occurred_model_clip_importer_error_occurred (ModelClipImporter* _sender, const char* _error_, gpointer self) { +#line 1551 "import.c" + model_library_importer_on_error_occurred (self, _error_); +} + + +#line 391 "import.vala" +static void _model_library_importer_on_importer_started_model_clip_importer_importing_started (ModelClipImporter* _sender, gint num_clips, gpointer self) { +#line 1558 "import.c" + model_library_importer_on_importer_started (self, _sender, num_clips); +} + + +#line 382 "import.vala" +ModelLibraryImporter* model_library_importer_construct (GType object_type, ModelProject* p) { +#line 1565 "import.c" + ModelLibraryImporter * self; + ModelProject* _tmp0_; + ModelClipImporter* _tmp1_; +#line 382 "import.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (p), NULL); +#line 382 "import.vala" + self = (ModelLibraryImporter*) g_object_new (object_type, NULL); +#line 383 "import.vala" + self->project = (_tmp0_ = _g_object_ref0 (p), _g_object_unref0 (self->project), _tmp0_); +#line 385 "import.vala" + self->importer = (_tmp1_ = model_clip_importer_new (), _g_object_unref0 (self->importer), _tmp1_); +#line 386 "import.vala" + g_signal_connect_object (self->importer, "clip-complete", (GCallback) _model_library_importer_on_clip_complete_model_clip_importer_clip_complete, self, 0); +#line 387 "import.vala" + g_signal_connect_object (self->importer, "error-occurred", (GCallback) _model_library_importer_on_error_occurred_model_clip_importer_error_occurred, self, 0); +#line 388 "import.vala" + g_signal_connect_object (self->importer, "importing-started", (GCallback) _model_library_importer_on_importer_started_model_clip_importer_importing_started, self, 0); +#line 1583 "import.c" + return self; +} + + +#line 382 "import.vala" +ModelLibraryImporter* model_library_importer_new (ModelProject* p) { +#line 382 "import.vala" + return model_library_importer_construct (MODEL_TYPE_LIBRARY_IMPORTER, p); +#line 1592 "import.c" +} + + +#line 391 "import.vala" +static void model_library_importer_on_importer_started (ModelLibraryImporter* self, ModelClipImporter* i, gint num) { +#line 391 "import.vala" + g_return_if_fail (MODEL_IS_LIBRARY_IMPORTER (self)); +#line 391 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_IMPORTER (i)); +#line 392 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_importer_started"); +#line 393 "import.vala" + g_signal_emit_by_name (self, "started", i, num); +#line 1606 "import.c" +} + + +#line 396 "import.vala" +static void model_library_importer_on_error_occurred (ModelLibraryImporter* self, const char* _error_) { +#line 396 "import.vala" + g_return_if_fail (MODEL_IS_LIBRARY_IMPORTER (self)); +#line 396 "import.vala" + g_return_if_fail (_error_ != NULL); +#line 397 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error_occurred"); +#line 398 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_DEVELOPER_WARNINGS, LOGGING_LEVEL_INFO, _error_); +#line 399 "import.vala" + g_signal_emit_by_name (self->project, "error-occurred", "Error importing", "An error occurred importing this file."); +#line 1622 "import.c" +} + + +#line 402 "import.vala" +static void model_library_importer_real_append_existing_clipfile (ModelLibraryImporter* self, ModelClipFile* f) { +#line 402 "import.vala" + g_return_if_fail (MODEL_IS_LIBRARY_IMPORTER (self)); +#line 402 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 1632 "import.c" +} + + +#line 402 "import.vala" +void model_library_importer_append_existing_clipfile (ModelLibraryImporter* self, ModelClipFile* f) { +#line 402 "import.vala" + MODEL_LIBRARY_IMPORTER_GET_CLASS (self)->append_existing_clipfile (self, f); +#line 1640 "import.c" +} + + +#line 406 "import.vala" +static void model_library_importer_real_on_clip_complete (ModelLibraryImporter* self, ModelClipFile* f) { +#line 1646 "import.c" + ModelClipFile* cf; +#line 406 "import.vala" + g_return_if_fail (MODEL_IS_LIBRARY_IMPORTER (self)); +#line 406 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 407 "import.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_complete"); +#line 408 "import.vala" + cf = model_project_find_clipfile (self->project, f->filename); +#line 409 "import.vala" + if (cf == NULL) { +#line 410 "import.vala" + model_project_add_clipfile (self->project, f); +#line 1660 "import.c" + } + _g_object_unref0 (cf); +} + + +#line 406 "import.vala" +void model_library_importer_on_clip_complete (ModelLibraryImporter* self, ModelClipFile* f) { +#line 406 "import.vala" + MODEL_LIBRARY_IMPORTER_GET_CLASS (self)->on_clip_complete (self, f); +#line 1670 "import.c" +} + + +#line 414 "import.vala" +void model_library_importer_add_file (ModelLibraryImporter* self, const char* filename, GError** error) { +#line 1676 "import.c" + ModelClipFile* cf; +#line 414 "import.vala" + g_return_if_fail (MODEL_IS_LIBRARY_IMPORTER (self)); +#line 414 "import.vala" + g_return_if_fail (filename != NULL); +#line 415 "import.vala" + cf = model_project_find_clipfile (self->project, filename); +#line 417 "import.vala" + if (cf != NULL) { +#line 418 "import.vala" + model_library_importer_append_existing_clipfile (self, cf); +#line 1688 "import.c" + } else { +#line 420 "import.vala" + model_clip_importer_add_filename (self->importer, filename); +#line 1692 "import.c" + } + _g_object_unref0 (cf); +} + + +#line 423 "import.vala" +void model_library_importer_start (ModelLibraryImporter* self, GError** error) { +#line 1700 "import.c" + GError * _inner_error_; +#line 423 "import.vala" + g_return_if_fail (MODEL_IS_LIBRARY_IMPORTER (self)); +#line 1704 "import.c" + _inner_error_ = NULL; +#line 424 "import.vala" + model_clip_importer_start (self->importer, &_inner_error_); +#line 1708 "import.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +} + + +static void model_library_importer_class_init (ModelLibraryImporterClass * klass) { + model_library_importer_parent_class = g_type_class_peek_parent (klass); + MODEL_LIBRARY_IMPORTER_CLASS (klass)->append_existing_clipfile = model_library_importer_real_append_existing_clipfile; + MODEL_LIBRARY_IMPORTER_CLASS (klass)->on_clip_complete = model_library_importer_real_on_clip_complete; + G_OBJECT_CLASS (klass)->finalize = model_library_importer_finalize; + g_signal_new ("started", MODEL_TYPE_LIBRARY_IMPORTER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_INT, G_TYPE_NONE, 2, MODEL_TYPE_CLIP_IMPORTER, G_TYPE_INT); +} + + +static void model_library_importer_instance_init (ModelLibraryImporter * self) { +} + + +static void model_library_importer_finalize (GObject* obj) { + ModelLibraryImporter * self; + self = MODEL_LIBRARY_IMPORTER (obj); + _g_object_unref0 (self->project); + _g_object_unref0 (self->importer); + G_OBJECT_CLASS (model_library_importer_parent_class)->finalize (obj); +} + + +GType model_library_importer_get_type (void) { + static volatile gsize model_library_importer_type_id__volatile = 0; + if (g_once_init_enter (&model_library_importer_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelLibraryImporterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_library_importer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelLibraryImporter), 0, (GInstanceInitFunc) model_library_importer_instance_init, NULL }; + GType model_library_importer_type_id; + model_library_importer_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelLibraryImporter", &g_define_type_info, 0); + g_once_init_leave (&model_library_importer_type_id__volatile, model_library_importer_type_id); + } + return model_library_importer_type_id__volatile; +} + + +#line 433 "import.vala" +ModelTimelineImporter* model_timeline_importer_construct (GType object_type, ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks) { +#line 1752 "import.c" + ModelTimelineImporter * self; + ModelTrack* _tmp0_; +#line 433 "import.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 433 "import.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (p), NULL); +#line 434 "import.vala" + self = (ModelTimelineImporter*) model_library_importer_construct (object_type, p); +#line 435 "import.vala" + self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_); +#line 436 "import.vala" + self->priv->time_to_add = time_to_add; +#line 437 "import.vala" + self->priv->both_tracks = both_tracks; +#line 1767 "import.c" + return self; +} + + +#line 433 "import.vala" +ModelTimelineImporter* model_timeline_importer_new (ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks) { +#line 433 "import.vala" + return model_timeline_importer_construct (MODEL_TYPE_TIMELINE_IMPORTER, track, p, time_to_add, both_tracks); +#line 1776 "import.c" +} + + +#line 440 "import.vala" +static void model_timeline_importer_add_to_both (ModelTimelineImporter* self, ModelClipFile* clip_file) { +#line 440 "import.vala" + g_return_if_fail (MODEL_IS_TIMELINE_IMPORTER (self)); +#line 440 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (clip_file)); +#line 441 "import.vala" + if (self->priv->both_tracks) { +#line 1788 "import.c" + ModelTrack* other_track; + other_track = NULL; +#line 443 "import.vala" + if (MODEL_IS_VIDEO_TRACK (self->priv->track)) { +#line 1793 "import.c" + ModelTrack* _tmp0_; +#line 444 "import.vala" + other_track = (_tmp0_ = MODEL_TRACK (model_project_find_audio_track (MODEL_LIBRARY_IMPORTER (self)->project)), _g_object_unref0 (other_track), _tmp0_); +#line 1797 "import.c" + } else { + ModelTrack* _tmp1_; +#line 446 "import.vala" + other_track = (_tmp1_ = MODEL_TRACK (model_project_find_video_track (MODEL_LIBRARY_IMPORTER (self)->project)), _g_object_unref0 (other_track), _tmp1_); +#line 1802 "import.c" + } +#line 448 "import.vala" + if (other_track != NULL) { +#line 449 "import.vala" + model_project_add (MODEL_LIBRARY_IMPORTER (self)->project, other_track, clip_file, self->priv->time_to_add); +#line 1808 "import.c" + } + _g_object_unref0 (other_track); + } +} + + +#line 454 "import.vala" +static void model_timeline_importer_real_append_existing_clipfile (ModelLibraryImporter* base, ModelClipFile* f) { +#line 1817 "import.c" + ModelTimelineImporter * self; + self = MODEL_TIMELINE_IMPORTER (base); +#line 454 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 455 "import.vala" + model_undo_manager_start_transaction (MODEL_LIBRARY_IMPORTER (self)->project->undo_manager, "Create Clip"); +#line 456 "import.vala" + model_project_add (MODEL_LIBRARY_IMPORTER (self)->project, self->priv->track, f, self->priv->time_to_add); +#line 457 "import.vala" + model_timeline_importer_add_to_both (self, f); +#line 458 "import.vala" + model_undo_manager_end_transaction (MODEL_LIBRARY_IMPORTER (self)->project->undo_manager, "Create Clip"); +#line 1830 "import.c" +} + + +#line 461 "import.vala" +static void model_timeline_importer_real_on_clip_complete (ModelLibraryImporter* base, ModelClipFile* f) { +#line 1836 "import.c" + ModelTimelineImporter * self; + self = MODEL_TIMELINE_IMPORTER (base); +#line 461 "import.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 462 "import.vala" + model_undo_manager_start_transaction (MODEL_LIBRARY_IMPORTER (self)->project->undo_manager, "Create Clip"); +#line 463 "import.vala" + MODEL_LIBRARY_IMPORTER_CLASS (model_timeline_importer_parent_class)->on_clip_complete (MODEL_LIBRARY_IMPORTER (self), f); +#line 464 "import.vala" + model_project_add (MODEL_LIBRARY_IMPORTER (self)->project, self->priv->track, f, self->priv->time_to_add); +#line 465 "import.vala" + model_timeline_importer_add_to_both (self, f); +#line 466 "import.vala" + model_undo_manager_end_transaction (MODEL_LIBRARY_IMPORTER (self)->project->undo_manager, "Create Clip"); +#line 1851 "import.c" +} + + +static void model_timeline_importer_class_init (ModelTimelineImporterClass * klass) { + model_timeline_importer_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelTimelineImporterPrivate)); + MODEL_LIBRARY_IMPORTER_CLASS (klass)->append_existing_clipfile = model_timeline_importer_real_append_existing_clipfile; + MODEL_LIBRARY_IMPORTER_CLASS (klass)->on_clip_complete = model_timeline_importer_real_on_clip_complete; + G_OBJECT_CLASS (klass)->finalize = model_timeline_importer_finalize; +} + + +static void model_timeline_importer_instance_init (ModelTimelineImporter * self) { + self->priv = MODEL_TIMELINE_IMPORTER_GET_PRIVATE (self); +} + + +static void model_timeline_importer_finalize (GObject* obj) { + ModelTimelineImporter * self; + self = MODEL_TIMELINE_IMPORTER (obj); + _g_object_unref0 (self->priv->track); + G_OBJECT_CLASS (model_timeline_importer_parent_class)->finalize (obj); +} + + +GType model_timeline_importer_get_type (void) { + static volatile gsize model_timeline_importer_type_id__volatile = 0; + if (g_once_init_enter (&model_timeline_importer_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelTimelineImporterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_timeline_importer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelTimelineImporter), 0, (GInstanceInitFunc) model_timeline_importer_instance_init, NULL }; + GType model_timeline_importer_type_id; + model_timeline_importer_type_id = g_type_register_static (MODEL_TYPE_LIBRARY_IMPORTER, "ModelTimelineImporter", &g_define_type_info, 0); + g_once_init_leave (&model_timeline_importer_type_id__volatile, model_timeline_importer_type_id); + } + return model_timeline_importer_type_id__volatile; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + +static void g_cclosure_user_marshal_VOID__OBJECT_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__OBJECT_INT) (gpointer data1, gpointer arg_1, gint arg_2, gpointer data2); + register GMarshalFunc_VOID__OBJECT_INT callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__OBJECT_INT) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_object (param_values + 1), g_value_get_int (param_values + 2), data2); +} + + + diff --git a/src/marina/marina/import.o b/src/marina/marina/import.o new file mode 100644 index 0000000000000000000000000000000000000000..1909cb447dc0091615353fe70943e039992d8648 GIT binary patch literal 108596 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 z clipfiles; + public Fraction default_framerate; + public Model.LibraryImporter importer; + public Gee.ArrayList inactive_tracks; + public bool library_visible; + public int library_width; + public Model.ProjectLoader loader; + public View.MediaEngine media_engine; + protected string project_file; + public bool snap_to_clip; + public Gee.ArrayList tracks; + public Model.UndoManager undo_manager; + public const string FILLMORE_FILE_EXTENSION; + public const string FILLMORE_FILE_FILTER; + public const string LOMBARD_FILE_EXTENSION; + public const string LOMBARD_FILE_FILTER; + public const string[] authors; + public Project (string? filename, bool include_video) throws GLib.Error; + public void _add_clipfile (Model.ClipFile clipfile) throws GLib.Error; + public void _remove_clipfile (Model.ClipFile cf); + public void _set_bpm (int bpm); + public void _set_time_signature (Fraction time_signature); + public void add (Model.Track track, Model.ClipFile clipfile, int64 time); + public void add_clipfile (Model.ClipFile clipfile); + public void add_inactive_track (Model.Track track); + public virtual void add_track (Model.Track track); + public void append (Model.Track track, Model.ClipFile clipfile); + public bool can_delete_gap (Model.Gap gap); + public bool can_export (); + public bool can_trim (out bool left); + public void clear (); + public bool clipfile_on_track (string filename); + public void close (); + public void create_clip_fetcher (Model.FetcherCompletion fetcher_completion, string filename) throws GLib.Error; + public void create_clip_importer (Model.Track? track, bool timeline_add, int64 time_to_add, bool both_tracks, Gtk.Window? progress_window_parent, int number); + public void delete_gap (Model.Gap gap); + protected virtual void do_append (Model.Track track, Model.ClipFile clipfile, string name, int64 insert_time); + public void do_command (Model.Command the_command); + public Model.AudioTrack? find_audio_track (); + public Model.ClipFile? find_clipfile (string filename); + public Model.VideoTrack? find_video_track (); + public abstract string get_app_name (); + public string get_audio_path (); + public abstract TimeCode get_clip_time (Model.ClipFile f); + public Model.ClipFile? get_clipfile (int index); + public int get_clipfile_index (Model.ClipFile find); + public string get_file_display_name (); + public int get_file_version (); + public int64 get_length (); + public string get_license (); + public virtual string? get_project_file (); + public string get_version (); + public void go_end (); + public void go_next (); + public void go_previous (); + public void go_start (); + public virtual void insert_track (int index, Model.Track track); + public bool is_duplicate_track_name (Model.Track? track, string new_name); + public bool is_project_extension (string filename); + public virtual void load (string? fname); + public void on_clip_removed (Model.Track t, Model.Clip clip); + public void on_error_occurred (string major_error, string? minor_error); + public void on_importer_clip_complete (Model.ClipFetcher fetcher); + public void on_load_started (string filename); + public void on_playstate_changed (); + public bool playhead_on_clip (); + public bool playhead_on_contiguous_clip (); + public void print_graph (Gst.Bin bin, string file_name); + public void remove_clipfile (string filename); + public void remove_track (Model.Track track); + public void remove_track_at (int index); + public void reseek (); + public virtual void save (string? filename); + public void save_library (GLib.FileStream f); + public void set_bpm (int bpm); + public void set_default_framerate (Fraction rate); + public void set_name (string? filename); + public void set_time_signature (Fraction time_signature); + public int64 snap_clip (Model.Clip c, int64 span); + public void snap_coord (out int64 coord, int64 span); + public void split_at_playhead (); + public Model.Track? track_from_clip (Model.Clip clip); + public int64 transport_get_position (); + public void transport_go (int64 position); + public bool transport_is_playing (); + public bool transport_is_recording (); + public void trim_to_playhead (); + public void undo (); + public signal void cleared (); + public signal void clipfile_added (Model.ClipFile c); + public signal void clipfile_removed (Model.ClipFile clip_file); + public signal void closed (); + public signal void error_occurred (string major_message, string? minor_message); + public virtual signal void load_complete (); + public signal void load_error (string error); + public signal void name_changed (string? project_file); + public signal void playstate_changed (PlayState playstate); + public signal void track_added (Model.Track track); + public signal void track_removed (Model.Track track); + } + [CCode (cheader_filename = "marina.h")] + public class ProjectLoader : GLib.Object { + public ProjectLoader (Model.LoaderHandler loader_handler, string? file_name); + public void load (); + public signal void load_complete (); + public signal void load_error (string error); + public signal void load_started (string filename); + } + [CCode (cheader_filename = "marina.h")] + public class ThumbnailFetcher : Model.Fetcher { + public ThumbnailFetcher (Model.ClipFile f, int64 time) throws GLib.Error; + protected override void on_pad_added (Gst.Pad pad); + protected override void on_state_change (Gst.Bus bus, Gst.Message message); + } + [CCode (cheader_filename = "marina.h")] + public class TimeSignatureCommand : Model.Command { + public TimeSignatureCommand (Model.Project project, Fraction new_time_signature); + public override void apply (); + public override string description (); + public override bool merge (Model.Command command); + public override void undo (); + } + [CCode (cheader_filename = "marina.h")] + public abstract class TimeSystemBase : GLib.Object { + public float pixel_percentage; + public int64 pixel_snap_time; + public float pixels_per_second; + public const int PIXEL_SNAP_INTERVAL; + public TimeSystemBase (); + protected int correct_seconds_value (float seconds, int div, int fps); + public float get_pixel_percentage (); + public int64 get_pixel_snap_time (); + public int time_to_xpos (int64 time); + public int time_to_xsize (int64 time); + public int64 xpos_to_time (int x); + public int64 xsize_to_time (int size); + } + [CCode (cheader_filename = "marina.h")] + public class TimecodeTimeSystem : Model.TimeSystem, Model.TimeSystemBase { + public Fraction frame_rate_fraction; + public TimecodeTimeSystem (); + } + [CCode (cheader_filename = "marina.h")] + public class TimelineImporter : Model.LibraryImporter { + public TimelineImporter (Model.Track track, Model.Project p, int64 time_to_add, bool both_tracks); + protected override void append_existing_clipfile (Model.ClipFile f); + protected override void on_clip_complete (Model.ClipFile f); + } + [CCode (cheader_filename = "marina.h")] + public abstract class Track : GLib.Object { + public Gee.ArrayList clips; + public string display_name; + protected weak Model.Project project; + public Track (Model.Project project, string display_name); + public void _append_at_time (Model.Clip c, int64 time, bool select); + public void _delete_clip (Model.Clip clip); + public void _join (int64 position); + public void _move (Model.Clip c, int64 pos); + public void _revert_to_original (Model.Clip c); + public void _split_at (int64 position); + public void _trim (Model.Clip clip, int64 delta, Gdk.WindowEdge edge); + public void add (Model.Clip c, int64 pos, bool select); + public void append_at_time (Model.Clip c, int64 time, bool select); + public bool are_contiguous_clips (int64 position); + protected abstract bool check (Model.Clip clip); + public bool clip_is_near (Model.Clip clip, int64 range, out int64 adjustment); + public bool contains_clipfile (Model.ClipFile f); + public void delete_all_clips (); + public void delete_clip (Model.Clip clip); + public void delete_gap (Model.Gap g); + public void do_clip_paste (Model.Clip clip, int64 position); + public void find_containing_gap (int64 time, out Model.Gap g); + public Model.Gap find_first_gap (int64 start); + public Model.Clip? find_nearest_clip_edge (int64 time, out bool after); + public Model.Clip? find_overlapping_clip (int64 start, int64 length); + public Model.Clip? get_clip (int i); + public Model.Clip? get_clip_by_position (int64 pos); + public int get_clip_index (Model.Clip c); + public string get_display_name (); + public bool get_is_selected (); + public int64 get_length (); + public int64 get_time_from_pos (Model.Clip clip, bool after); + public void hide (); + public void join (int64 position); + public abstract Model.MediaType media_type (); + public void move (Model.Clip c, int64 pos, int64 original_time); + protected abstract string name (); + public int64 next_edit (int64 pos); + public virtual void on_clip_updated (Model.Clip clip); + public int64 previous_edit (int64 pos); + public void remove_clip_from_array (Model.Clip pos); + public void revert_to_original (Model.Clip clip); + public void save (GLib.FileStream f); + public void set_display_name (string new_display_name); + public void set_selected (bool is_selected); + public int64 snap_clip (Model.Clip c, int64 span); + public bool snap_coord (out int64 coord, int64 span); + public void split_at (int64 position); + public void trim (Model.Clip clip, int64 delta, Gdk.WindowEdge edge); + public virtual void write_attributes (GLib.FileStream f); + public signal void clip_added (Model.Clip clip, bool select); + public signal void clip_removed (Model.Clip clip); + public signal void error_occurred (string major_error, string? minor_error); + public signal void track_hidden (Model.Track track); + public signal void track_removed (Model.Track track); + public signal void track_renamed (Model.Track track); + public signal void track_selection_changed (Model.Track track); + } + [CCode (cheader_filename = "marina.h")] + public class TransactionCommand : Model.Command { + public TransactionCommand (bool open, string transaction_description); + public override void apply (); + public override string description (); + public bool in_transaction (); + public override bool merge (Model.Command command); + public override void undo (); + } + [CCode (ref_function = "model_undo_manager_ref", unref_function = "model_undo_manager_unref", cheader_filename = "marina.h")] + public class UndoManager { + public UndoManager (); + public void do_command (Model.Command the_command); + public void end_transaction (string description); + public string get_undo_title (); + public void mark_clean (); + public void reset (); + public void start_transaction (string description); + public void undo (); + public bool can_undo { get; } + public bool in_undo { get; set; } + public bool is_dirty { get; } + public signal void dirty_changed (bool is_dirty); + public signal void undo_changed (bool can_undo); + } + [CCode (cheader_filename = "marina.h")] + public class VideoTrack : Model.Track { + public VideoTrack (Model.Project project); + protected override bool check (Model.Clip clip); + public int get_current_frame (int64 time); + public bool get_framerate (out Fraction rate); + public override Model.MediaType media_type (); + protected override string name (); + public int64 next_frame (int64 position); + public int64 previous_frame (int64 position); + } + [CCode (ref_function = "model_xml_element_ref", unref_function = "model_xml_element_unref", cheader_filename = "marina.h")] + public class XmlElement { + public string[] attribute_names; + public string[] attribute_values; + public XmlElement (string name, string[] attribute_names, string[] attribute_values, Model.XmlElement? parent); + public void add_child (Model.XmlElement child_element); + public Gee.ArrayList children { get; } + public string name { get; set; } + public Model.XmlElement? parent { get; set; } + } + [CCode (ref_function = "model_xml_tree_loader_ref", unref_function = "model_xml_tree_loader_unref", cheader_filename = "marina.h")] + public class XmlTreeLoader { + public Model.XmlElement root; + public XmlTreeLoader (string document); + } + [CCode (cheader_filename = "marina.h")] + public interface TempoInformation { + public abstract int get_bpm (); + public abstract Fraction get_time_signature (); + public signal void bpm_changed (int bpm); + public signal void time_signature_changed (Fraction time_signature); + } + [CCode (cheader_filename = "marina.h")] + public interface TimeSystem : GLib.Object { + public abstract void calculate_pixel_step (float inc, float pixel_min, float pixel_div); + public abstract int frame_to_xsize (int frame); + public abstract string? get_display_string (int token); + public abstract int get_next_position (int token); + public abstract int get_pixel_height (int token); + public abstract float get_pixel_percentage (); + public abstract int64 get_pixel_snap_time (); + public abstract int get_start_token (int xsize); + public abstract string get_time_duration (int64 time); + public abstract string get_time_string (int64 time); + public abstract int time_to_xpos (int64 time); + public abstract int time_to_xsize (int64 time); + public abstract int64 xpos_to_time (int x); + public abstract int xsize_to_frame (int xsize); + public abstract int64 xsize_to_time (int x); + public signal void geometry_changed (); + } + [CCode (cprefix = "MODEL_MEDIA_TYPE_", cheader_filename = "marina.h")] + public enum MediaType { + AUDIO, + VIDEO + } + [CCode (cprefix = "MODEL_PARAMETER_", cheader_filename = "marina.h")] + public enum Parameter { + PAN, + VOLUME + } +} +[CCode (cprefix = "DialogUtils", lower_case_cprefix = "dialog_utils_")] +namespace DialogUtils { + [CCode (type_id = "DIALOG_UTILS_TYPE_FILTER_DESCRIPTION_STRUCT", cheader_filename = "marina.h")] + public struct filter_description_struct { + public string name; + public string extension; + } + [CCode (cheader_filename = "marina.h")] + public static Gtk.ResponseType add_cancel (string message); + [CCode (cheader_filename = "marina.h")] + public static bool confirm_replace (Gtk.Window? parent, string filename); + [CCode (cheader_filename = "marina.h")] + public static Gtk.ResponseType delete_cancel (string message); + [CCode (cheader_filename = "marina.h")] + public static Gtk.ResponseType delete_keep (string message); + [CCode (cheader_filename = "marina.h")] + public static void error (string major_message, string? minor_message); + [CCode (cheader_filename = "marina.h")] + public static bool open (Gtk.Window parent, DialogUtils.filter_description_struct[] filter_descriptions, bool allow_multiple, bool allow_all, out GLib.SList filenames); + [CCode (cheader_filename = "marina.h")] + public static bool save (Gtk.Window parent, string title, bool create_directory, DialogUtils.filter_description_struct[] filter_descriptions, ref string filename); + [CCode (cheader_filename = "marina.h")] + public static Gtk.ResponseType save_close_cancel (Gtk.Window? parent, string? title, string message); + [CCode (cheader_filename = "marina.h")] + public static void show_clip_properties (Gtk.Window parent, ClipView? selected_clip, Model.ClipFile? clip_file, Fraction? frames_per_second); + [CCode (cheader_filename = "marina.h")] + public static void warning (string major_message, string? minor_message); +} +[CCode (cprefix = "Logging", lower_case_cprefix = "logging_")] +namespace Logging { + [CCode (cprefix = "LOGGING_FACILITY_", cheader_filename = "marina.h")] + public enum Facility { + SIGNAL_HANDLERS, + DEVELOPER_WARNINGS, + GRAPH, + LOADING, + IMPORT, + SINGLEDECODEBIN + } + [CCode (cprefix = "LOGGING_LEVEL_", cheader_filename = "marina.h")] + public enum Level { + CRITICAL, + HIGH, + MEDIUM, + LOW, + INFO, + VERBOSE + } + [CCode (cheader_filename = "marina.h")] + public static void emit (GLib.Object object, Logging.Facility facility, Logging.Level level, string message); + [CCode (cheader_filename = "marina.h")] + public static void set_logging_level (Logging.Level new_level); +} +[CCode (cprefix = "PLAY_STATE_", cheader_filename = "marina.h")] +public enum PlayState { + STOPPED, + PRE_PLAY, + PLAYING, + PRE_RECORD_NULL, + PRE_RECORD, + RECORDING, + POST_RECORD, + PRE_EXPORT, + EXPORTING, + CANCEL_EXPORT, + LOADING, + CLOSING, + CLOSED +} +[CCode (cprefix = "GDK_", has_type_id = false, cheader_filename = "gdk/gdkkeysyms.h")] +public enum KeySyms { + Control_L, + Control_R, + Down, + equal, + Escape, + KP_Add, + KP_Enter, + KP_Subtract, + Left, + minus, + plus, + Return, + Right, + Shift_L, + Shift_R, + underscore, + Up +} +[CCode (cprefix = "MEDIA_ERROR_", cheader_filename = "marina.h")] +public errordomain MediaError { + MISSING_PLUGIN, +} +[CCode (ref_function = "app_dirs_ref", unref_function = "app_dirs_unref", cheader_filename = "marina.h")] +public class AppDirs { + public AppDirs (); + public static GLib.File get_exec_dir (); + public static GLib.File get_resources_dir (); + public static void init (string arg0, string program_name); + public static void terminate (); +} +[CCode (ref_function = "class_factory_ref", unref_function = "class_factory_unref", cheader_filename = "marina.h")] +public class ClassFactory { + public ClassFactory (); + public static ClassFactory get_class_factory (); + public virtual TrackView get_track_view (Model.Track track, TimeLine timeline); + public static void set_class_factory (ClassFactory class_factory); + public static void set_transport_delegate (TransportDelegate transport_delegate); +} +[CCode (cheader_filename = "marina.h")] +public class ClipLibraryView : Gtk.EventBox { + public static Gtk.Menu context_menu; + public ClipLibraryView (Model.Project p, Model.TimeSystem time_provider, string? drag_message, Gdk.DragAction actions); + public void delete_selection (); + public override void drag_data_received (Gdk.DragContext context, int x, int y, Gtk.SelectionData selection_data, uint drag_info, uint time); + public Gee.ArrayList get_selected_files (); + public bool has_selection (); + public void on_clipfile_removed (Model.ClipFile f); + public void select_all (); + public void unselect_all (); + public signal void selection_changed (bool selected); +} +[CCode (cheader_filename = "marina.h")] +public class MultiFileProgress : Gtk.Window { + public MultiFileProgress (Gtk.Window parent, int num_files, string dialog_title, MultiFileProgressInterface provider); +} +[CCode (ref_function = "track_clip_pair_ref", unref_function = "track_clip_pair_unref", cheader_filename = "marina.h")] +public class TrackClipPair { + public Model.Clip clip; + public Model.Track track; + public TrackClipPair (Model.Track track, Model.Clip clip); +} +[CCode (ref_function = "clipboard_ref", unref_function = "clipboard_unref", cheader_filename = "marina.h")] +public class Clipboard { + public Gee.ArrayList clips; + public Clipboard (); + public void paste (Model.Track selected_track, int64 time); + public void select (Gee.ArrayList selected_clips); +} +[CCode (cheader_filename = "marina.h")] +public class TimeLine : Gtk.EventBox { + public Clipboard clipboard; + public Model.Project project; + public weak Model.TimeSystem provider; + public View.Ruler ruler; + public Gee.ArrayList selected_clips; + public Gee.ArrayList tracks; + public const int BAR_HEIGHT; + public const int BORDER; + public const int RULER_HEIGHT; + public TimeLine (Model.Project p, Model.TimeSystem provider, Gdk.DragAction actions); + public override bool button_press_event (Gdk.EventButton event); + public override bool button_release_event (Gdk.EventButton event); + public void delete_selection (); + public void deselect_all_clips (); + public void do_clip_move (ClipView clip_view, int64 delta); + public void do_copy (); + public void do_cut (); + public void do_paste (int64 pos); + public override void drag_data_received (Gdk.DragContext context, int x, int y, Gtk.SelectionData selection_data, uint drag_info, uint time); + public override bool expose_event (Gdk.EventExpose event); + public Gtk.Widget? find_child (double x, double y); + public bool gap_selected (); + public bool is_clip_selected (); + public override bool motion_notify_event (Gdk.EventMotion event); + public void on_clip_view_added (ClipView clip_view); + public void on_ruler_position_changed (int x); + public void paste (); + public void select_all (); + public void update_pos (int event_x); + public void zoom (float inc); + public void zoom_to_project (double width); + public signal void selection_changed (bool selected); + public signal void track_changed (); + public signal void trackview_added (TrackView trackview); + public signal void trackview_removed (TrackView trackview); +} +[CCode (cheader_filename = "marina.h")] +public class GapView : Gtk.DrawingArea { + public Model.Gap gap; + public GapView (int64 start, int64 length, int width, int height); + public override bool expose_event (Gdk.EventExpose e); + public void remove (); + public void unselect (); + public signal void removed (GapView gap_view); + public signal void unselected (GapView gap_view); +} +[CCode (cheader_filename = "marina.h")] +public class ClipView : Gtk.DrawingArea { + public Model.Clip clip; + public static Gtk.Menu context_menu; + public int height; + public int64 initial_time; + public bool is_selected; + public const int SNAP_DELTA; + public ClipView (TransportDelegate transport_delegate, Model.Clip clip, Model.TimeSystem time_provider, int height); + public void adjust_size (int height); + public override bool button_press_event (Gdk.EventButton event); + public override bool button_release_event (Gdk.EventButton event); + public void delete_clip (); + public void draw (); + public override bool expose_event (Gdk.EventExpose event); + public override bool motion_notify_event (Gdk.EventMotion event); + public void on_clip_moved (Model.Clip clip); + public void select (); + public void snap (int64 amount); + public signal void clip_deleted (Model.Clip clip); + public signal void clip_moved (ClipView clip); + public signal void move_begin (ClipView clip_view, bool copy); + public signal void move_commit (ClipView clip_view, int64 delta); + public signal void move_request (ClipView clip_view, int64 delta); + public signal void selection_request (ClipView clip_view, bool extend_selection); + public signal void trim_begin (ClipView clip_view, Gdk.WindowEdge edge); + public signal void trim_commit (ClipView clip_view, Gdk.WindowEdge edge); +} +[CCode (cheader_filename = "marina.h")] +public interface TrackView : Gtk.Widget { + public abstract Gtk.Widget? find_child (double x, double y); + public abstract Model.Track get_track (); + public abstract int get_track_height (); + public abstract void move_to_top (ClipView clip_view); + public abstract void resize (); + public abstract void select_all (); + public signal void clip_view_added (ClipView clip_view); +} +[CCode (cheader_filename = "marina.h")] +public interface MultiFileProgressInterface : GLib.Object { + public abstract void cancel (); + public abstract void complete (); + public signal void done (); + public signal void file_updated (string filename, int index); + public signal void fraction_updated (double d); +} +[CCode (cheader_filename = "marina.h")] +public interface TransportDelegate : GLib.Object { + public abstract bool is_playing (); + public abstract bool is_recording (); + public abstract bool is_stopped (); +} +[CCode (type_id = "TYPE_FRACTION", cheader_filename = "marina.h")] +public struct Fraction { + public int numerator; + public int denominator; + public Fraction (int numerator, int denominator); + public bool equal (Fraction f); + public Fraction.from_string (string s); + public int nearest_int (); + public string to_string (); +} +[CCode (type_id = "TYPE_TIME_CODE", cheader_filename = "marina.h")] +public struct TimeCode { + public int hour; + public int minute; + public int second; + public int frame; + public bool drop_code; + public void get_from_length (int64 length); + public string to_string (); +} +[CCode (cheader_filename = "marina.h")] +public const int CHANNELS_PER_TRACK_PLAYBACK; +[CCode (cheader_filename = "marina.h")] +public const int CHANNELS_PER_TRACK_RECORD; +[CCode (cheader_filename = "marina.h")] +public const Gtk.TargetEntry[] drag_target_entries; +[CCode (cheader_filename = "marina.h")] +public static bool debug_enabled; +[CCode (cheader_filename = "marina.h")] +public static Gdk.ModifierType GDK_SHIFT_ALT_CONTROL_MASK; +[CCode (cheader_filename = "marina.h")] +public static float float_abs (float f); +[CCode (cheader_filename = "marina.h")] +public static bool float_within (double f, double epsilon); +[CCode (cheader_filename = "marina.h")] +public static int sign (int x); +[CCode (cheader_filename = "marina.h")] +public static string[] copy_array (string[] source); +[CCode (cheader_filename = "marina.h")] +public static void print_debug (string text); +[CCode (cheader_filename = "marina.h")] +public static bool time_in_range (int64 time, int64 center, int64 delta); +[CCode (cheader_filename = "marina.h")] +public static string isolate_filename (string path); +[CCode (cheader_filename = "marina.h")] +public static string get_file_extension (string path); +[CCode (cheader_filename = "marina.h")] +public static string append_extension (string path, string extension); +[CCode (cheader_filename = "marina.h")] +public static bool version_at_least (string v, string w); +[CCode (cheader_filename = "marina.h")] +public static bool get_file_md5_checksum (string filename, out string checksum); +[CCode (cheader_filename = "marina.h")] +public static void save_file_md5_checksum (string filename, string checksum); +[CCode (cheader_filename = "marina.h")] +public static bool md5_checksum_on_file (string filename, out string checksum); +[CCode (cheader_filename = "marina.h")] +public static Gdk.Color parse_color (string color); +[CCode (cheader_filename = "marina.h")] +public static Gtk.Widget get_widget (Gtk.UIManager manager, string name); +[CCode (cheader_filename = "marina.h")] +public static void draw_rounded_rectangle (Gdk.Window window, Gdk.Color color, bool filled, int x0, int y0, int width, int height); +[CCode (cheader_filename = "marina.h")] +public static void draw_right_rounded_rectangle (Gdk.Window window, Gdk.Color color, bool filled, int x0, int y0, int width, int height); +[CCode (cheader_filename = "marina.h")] +public static void draw_left_rounded_rectangle (Gdk.Window window, Gdk.Color color, bool filled, int x0, int y0, int width, int height); +[CCode (cheader_filename = "marina.h")] +public static void draw_square_rectangle (Gdk.Window window, Gdk.Color color, bool filled, int x, int y, int width, int height); +[CCode (cheader_filename = "marina.h")] +public static bool is_drop_frame_rate (Fraction r); +[CCode (cheader_filename = "marina.h")] +public static int64 frame_to_time_with_rate (int frame, Fraction rate); +[CCode (cheader_filename = "marina.h")] +public static int time_to_frame_with_rate (int64 time, Fraction rate); +[CCode (cheader_filename = "marina.h")] +public static TimeCode frame_to_time (int frame, Fraction rate); +[CCode (cheader_filename = "marina.h")] +public static string frame_to_string (int frame, Fraction rate); +[CCode (cheader_filename = "marina.h")] +public static string time_to_HHMMSS (int64 time); +[CCode (cheader_filename = "marina.h")] +public static string time_to_string (int64 time); +[CCode (cheader_filename = "marina.h")] +public static Gst.Element make_element_with_name (string element_name, string? display_name) throws GLib.Error; +[CCode (cheader_filename = "marina.h")] +public static Gst.Element make_element (string name) throws GLib.Error; diff --git a/src/marina/marina/project.c b/src/marina/marina/project.c new file mode 100644 index 0000000..80312c7 --- /dev/null +++ b/src/marina/marina/project.c @@ -0,0 +1,5147 @@ +/* project.c generated by valac, the Vala compiler + * generated from project.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_LOADER_HANDLER (model_loader_handler_get_type ()) +#define MODEL_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandler)) +#define MODEL_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) +#define MODEL_IS_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_IS_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) + +typedef struct _ModelLoaderHandler ModelLoaderHandler; +typedef struct _ModelLoaderHandlerClass ModelLoaderHandlerClass; +typedef struct _ModelLoaderHandlerPrivate ModelLoaderHandlerPrivate; + +#define MODEL_TYPE_MEDIA_LOADER_HANDLER (model_media_loader_handler_get_type ()) +#define MODEL_MEDIA_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandler)) +#define MODEL_MEDIA_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerClass)) +#define MODEL_IS_MEDIA_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER)) +#define MODEL_IS_MEDIA_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_MEDIA_LOADER_HANDLER)) +#define MODEL_MEDIA_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerClass)) + +typedef struct _ModelMediaLoaderHandler ModelMediaLoaderHandler; +typedef struct _ModelMediaLoaderHandlerClass ModelMediaLoaderHandlerClass; +typedef struct _ModelMediaLoaderHandlerPrivate ModelMediaLoaderHandlerPrivate; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define MODEL_TYPE_FETCHER (model_fetcher_get_type ()) +#define MODEL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER, ModelFetcher)) +#define MODEL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER, ModelFetcherClass)) +#define MODEL_IS_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER)) +#define MODEL_IS_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER)) +#define MODEL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER, ModelFetcherClass)) + +typedef struct _ModelFetcher ModelFetcher; +typedef struct _ModelFetcherClass ModelFetcherClass; + +#define MODEL_TYPE_CLIP_FETCHER (model_clip_fetcher_get_type ()) +#define MODEL_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcher)) +#define MODEL_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) +#define MODEL_IS_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_IS_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_CLIP_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) + +typedef struct _ModelClipFetcher ModelClipFetcher; +typedef struct _ModelClipFetcherClass ModelClipFetcherClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ()) +#define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack)) +#define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) +#define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) + +typedef struct _ModelAudioTrack ModelAudioTrack; +typedef struct _ModelAudioTrackClass ModelAudioTrackClass; + +#define MODEL_TYPE_VIDEO_TRACK (model_video_track_get_type ()) +#define MODEL_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrack)) +#define MODEL_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) +#define MODEL_IS_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_IS_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) + +typedef struct _ModelVideoTrack ModelVideoTrack; +typedef struct _ModelVideoTrackClass ModelVideoTrackClass; +typedef struct _ModelFetcherPrivate ModelFetcherPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; + +#define MODEL_TYPE_THUMBNAIL_FETCHER (model_thumbnail_fetcher_get_type ()) +#define MODEL_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcher)) +#define MODEL_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass)) +#define MODEL_IS_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_THUMBNAIL_FETCHER)) +#define MODEL_IS_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_THUMBNAIL_FETCHER)) +#define MODEL_THUMBNAIL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass)) + +typedef struct _ModelThumbnailFetcher ModelThumbnailFetcher; +typedef struct _ModelThumbnailFetcherClass ModelThumbnailFetcherClass; + +#define MODEL_TYPE_FETCHER_COMPLETION (model_fetcher_completion_get_type ()) +#define MODEL_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletion)) +#define MODEL_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass)) +#define MODEL_IS_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER_COMPLETION)) +#define MODEL_IS_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER_COMPLETION)) +#define MODEL_FETCHER_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass)) + +typedef struct _ModelFetcherCompletion ModelFetcherCompletion; +typedef struct _ModelFetcherCompletionClass ModelFetcherCompletionClass; +#define _model_fetcher_completion_unref0(var) ((var == NULL) ? NULL : (var = (model_fetcher_completion_unref (var), NULL))) +#define _model_undo_manager_unref0(var) ((var == NULL) ? NULL : (var = (model_undo_manager_unref (var), NULL))) + +#define TYPE_PLAY_STATE (play_state_get_type ()) +typedef struct _ModelTrackPrivate ModelTrackPrivate; + +#define MODEL_TYPE_GAP (model_gap_get_type ()) +#define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap)) +#define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass)) +#define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP)) +#define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP)) +#define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass)) + +typedef struct _ModelGap ModelGap; +typedef struct _ModelGapClass ModelGapClass; +typedef struct _ModelGapPrivate ModelGapPrivate; +#define _model_gap_unref0(var) ((var == NULL) ? NULL : (var = (model_gap_unref (var), NULL))) + +#define TYPE_MULTI_FILE_PROGRESS_INTERFACE (multi_file_progress_interface_get_type ()) +#define MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterface)) +#define IS_MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE)) +#define MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterfaceIface)) + +typedef struct _MultiFileProgressInterface MultiFileProgressInterface; +typedef struct _MultiFileProgressInterfaceIface MultiFileProgressInterfaceIface; +typedef struct _ViewMediaEnginePrivate ViewMediaEnginePrivate; + +#define MODEL_TYPE_COMMAND (model_command_get_type ()) +#define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand)) +#define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass)) +#define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND)) +#define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND)) +#define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass)) + +typedef struct _ModelCommand ModelCommand; +typedef struct _ModelCommandClass ModelCommandClass; + +#define MODEL_TYPE_ADD_CLIP_COMMAND (model_add_clip_command_get_type ()) +#define MODEL_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommand)) +#define MODEL_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass)) +#define MODEL_IS_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_ADD_CLIP_COMMAND)) +#define MODEL_IS_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_ADD_CLIP_COMMAND)) +#define MODEL_ADD_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass)) + +typedef struct _ModelAddClipCommand ModelAddClipCommand; +typedef struct _ModelAddClipCommandClass ModelAddClipCommandClass; +#define _model_command_unref0(var) ((var == NULL) ? NULL : (var = (model_command_unref (var), NULL))) +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_CLIP_FILE_DELETE_COMMAND (model_clip_file_delete_command_get_type ()) +#define MODEL_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommand)) +#define MODEL_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass)) +#define MODEL_IS_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND)) +#define MODEL_IS_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND)) +#define MODEL_CLIP_FILE_DELETE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass)) + +typedef struct _ModelClipFileDeleteCommand ModelClipFileDeleteCommand; +typedef struct _ModelClipFileDeleteCommandClass ModelClipFileDeleteCommandClass; +#define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL))) + +#define MODEL_TYPE_TIMELINE_IMPORTER (model_timeline_importer_get_type ()) +#define MODEL_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporter)) +#define MODEL_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass)) +#define MODEL_IS_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIMELINE_IMPORTER)) +#define MODEL_IS_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIMELINE_IMPORTER)) +#define MODEL_TIMELINE_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass)) + +typedef struct _ModelTimelineImporter ModelTimelineImporter; +typedef struct _ModelTimelineImporterClass ModelTimelineImporterClass; +typedef struct _ModelLibraryImporterPrivate ModelLibraryImporterPrivate; + +#define MODEL_TYPE_CLIP_IMPORTER (model_clip_importer_get_type ()) +#define MODEL_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporter)) +#define MODEL_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass)) +#define MODEL_IS_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_IMPORTER)) +#define MODEL_IS_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_IMPORTER)) +#define MODEL_CLIP_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass)) + +typedef struct _ModelClipImporter ModelClipImporter; +typedef struct _ModelClipImporterClass ModelClipImporterClass; + +#define TYPE_MULTI_FILE_PROGRESS (multi_file_progress_get_type ()) +#define MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgress)) +#define MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass)) +#define IS_MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS)) +#define IS_MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTI_FILE_PROGRESS)) +#define MULTI_FILE_PROGRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass)) + +typedef struct _MultiFileProgress MultiFileProgress; +typedef struct _MultiFileProgressClass MultiFileProgressClass; + +#define MODEL_TYPE_TIME_SIGNATURE_COMMAND (model_time_signature_command_get_type ()) +#define MODEL_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommand)) +#define MODEL_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass)) +#define MODEL_IS_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND)) +#define MODEL_IS_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND)) +#define MODEL_TIME_SIGNATURE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass)) + +typedef struct _ModelTimeSignatureCommand ModelTimeSignatureCommand; +typedef struct _ModelTimeSignatureCommandClass ModelTimeSignatureCommandClass; + +#define MODEL_TYPE_BPM_COMMAND (model_bpm_command_get_type ()) +#define MODEL_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommand)) +#define MODEL_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass)) +#define MODEL_IS_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_BPM_COMMAND)) +#define MODEL_IS_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_BPM_COMMAND)) +#define MODEL_BPM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass)) + +typedef struct _ModelBpmCommand ModelBpmCommand; +typedef struct _ModelBpmCommandClass ModelBpmCommandClass; + +struct _ModelLoaderHandler { + GObject parent_instance; + ModelLoaderHandlerPrivate * priv; +}; + +struct _ModelLoaderHandlerClass { + GObjectClass parent_class; + gboolean (*commit_library) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_marina) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_track) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clip) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clipfile) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_time_signature_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_tempo_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_click) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_library_preference) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + void (*leave_library) (ModelLoaderHandler* self); + void (*leave_marina) (ModelLoaderHandler* self); + void (*leave_track) (ModelLoaderHandler* self); + void (*leave_clip) (ModelLoaderHandler* self); + void (*leave_clipfile) (ModelLoaderHandler* self); +}; + +struct _ModelMediaLoaderHandler { + ModelLoaderHandler parent_instance; + ModelMediaLoaderHandlerPrivate * priv; + ModelProject* the_project; + ModelTrack* current_track; +}; + +struct _ModelMediaLoaderHandlerClass { + ModelLoaderHandlerClass parent_class; +}; + +struct _ModelMediaLoaderHandlerPrivate { + GeeArrayList* clipfetchers; + gint num_clipfiles_complete; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelFetcher { + GObject parent_instance; + ModelFetcherPrivate * priv; + GstElement* filesrc; + GstElement* decodebin; + GstPipeline* pipeline; + ModelClipFile* clipfile; + char* error_string; +}; + +struct _ModelFetcherClass { + GObjectClass parent_class; + void (*on_pad_added) (ModelFetcher* self, GstPad* pad); + void (*on_state_change) (ModelFetcher* self, GstBus* bus, GstMessage* message); +}; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _ModelClipFile { + GObject parent_instance; + ModelClipFilePrivate * priv; + char* filename; + GstCaps* video_caps; + GstCaps* audio_caps; + GdkPixbuf* thumbnail; +}; + +struct _ModelClipFileClass { + GObjectClass parent_class; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + +struct _ModelProjectPrivate { + GeeHashSet* pending; + GeeArrayList* pending_thumbs; + ModelFetcherCompletion* fetcher_completion; + gint tempo; + Fraction time_signature; +}; + +typedef enum { + PLAY_STATE_STOPPED, + PLAY_STATE_PRE_PLAY, + PLAY_STATE_PLAYING, + PLAY_STATE_PRE_RECORD_NULL, + PLAY_STATE_PRE_RECORD, + PLAY_STATE_RECORDING, + PLAY_STATE_POST_RECORD, + PLAY_STATE_PRE_EXPORT, + PLAY_STATE_EXPORTING, + PLAY_STATE_CANCEL_EXPORT, + PLAY_STATE_LOADING, + PLAY_STATE_CLOSING, + PLAY_STATE_CLOSED +} PlayState; + +struct _ModelTrack { + GObject parent_instance; + ModelTrackPrivate * priv; + ModelProject* project; + GeeArrayList* clips; + char* display_name; +}; + +struct _ModelTrackClass { + GObjectClass parent_class; + char* (*name) (ModelTrack* self); + ModelMediaType (*media_type) (ModelTrack* self); + gboolean (*check) (ModelTrack* self, ModelClip* clip); + void (*on_clip_updated) (ModelTrack* self, ModelClip* clip); + void (*write_attributes) (ModelTrack* self, FILE* f); +}; + +struct _ModelGap { + GTypeInstance parent_instance; + volatile int ref_count; + ModelGapPrivate * priv; + gint64 start; + gint64 end; +}; + +struct _ModelGapClass { + GTypeClass parent_class; + void (*finalize) (ModelGap *self); +}; + +struct _MultiFileProgressInterfaceIface { + GTypeInterface parent_iface; + void (*cancel) (MultiFileProgressInterface* self); + void (*complete) (MultiFileProgressInterface* self); +}; + +struct _ViewMediaEngine { + GObject parent_instance; + ViewMediaEnginePrivate * priv; + GstPipeline* pipeline; + GstBin* record_bin; + GstElement* converter; + GstElement* adder; + GstState gst_state; + PlayState play_state; + gint64 position; + gboolean playing; + ModelAudioTrack* record_track; + ModelClip* record_region; +}; + +struct _ViewMediaEngineClass { + GObjectClass parent_class; + void (*do_null_state_export) (ViewMediaEngine* self, gint64 length); + void (*pause) (ViewMediaEngine* self); +}; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +struct _ModelLibraryImporter { + GObject parent_instance; + ModelLibraryImporterPrivate * priv; + ModelProject* project; + ModelClipImporter* importer; +}; + +struct _ModelLibraryImporterClass { + GObjectClass parent_class; + void (*append_existing_clipfile) (ModelLibraryImporter* self, ModelClipFile* f); + void (*on_clip_complete) (ModelLibraryImporter* self, ModelClipFile* f); +}; + + +static gpointer model_media_loader_handler_parent_class = NULL; +extern Fraction model_project_INVALID_FRAME_RATE; +Fraction model_project_INVALID_FRAME_RATE = {0}; +static gpointer model_project_parent_class = NULL; +static ModelTempoInformationIface* model_project_model_tempo_information_parent_iface = NULL; + +GType model_loader_handler_get_type (void); +GType model_media_loader_handler_get_type (void); +GType model_project_get_type (void); +GType model_track_get_type (void); +GType model_fetcher_get_type (void); +GType model_clip_fetcher_get_type (void); +#define MODEL_MEDIA_LOADER_HANDLER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerPrivate)) +enum { + MODEL_MEDIA_LOADER_HANDLER_DUMMY_PROPERTY +}; +ModelLoaderHandler* model_loader_handler_new (void); +ModelLoaderHandler* model_loader_handler_construct (GType object_type); +ModelMediaLoaderHandler* model_media_loader_handler_new (ModelProject* the_project); +ModelMediaLoaderHandler* model_media_loader_handler_construct (GType object_type, ModelProject* the_project); +gint model_project_get_file_version (ModelProject* self); +static gboolean model_media_loader_handler_real_commit_marina (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +void model_project_set_default_framerate (ModelProject* self, Fraction* rate); +void fraction_init (Fraction *self, gint numerator, gint denominator); +static gboolean model_media_loader_handler_real_commit_library (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +ModelAudioTrack* model_audio_track_new (ModelProject* project, const char* display_name); +ModelAudioTrack* model_audio_track_construct (GType object_type, ModelProject* project, const char* display_name); +GType model_audio_track_get_type (void); +void model_project_add_track (ModelProject* self, ModelTrack* track); +void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value); +void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume); +void model_audio_track_set_default_num_channels (ModelAudioTrack* self, gint num); +ModelVideoTrack* model_video_track_new (ModelProject* project); +ModelVideoTrack* model_video_track_construct (GType object_type, ModelProject* project); +GType model_video_track_get_type (void); +gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_media_loader_handler_real_commit_track (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static void model_media_loader_handler_real_leave_track (ModelLoaderHandler* base); +GType model_clip_file_get_type (void); +GType model_media_type_get_type (void); +ModelMediaType model_track_media_type (ModelTrack* self); +ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +GType model_clip_get_type (void); +void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select); +static gboolean model_media_loader_handler_real_commit_clip (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +void model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile); +static void model_media_loader_handler_fetcher_ready (ModelMediaLoaderHandler* self, ModelFetcher* f); +ModelClipFetcher* model_clip_fetcher_new (const char* filename, GError** error); +ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename, GError** error); +static void _model_media_loader_handler_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self); +static gboolean model_media_loader_handler_real_commit_clipfile (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +void _model_project_set_bpm (ModelProject* self, gint bpm); +static gboolean model_media_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +void _model_project_set_time_signature (ModelProject* self, Fraction* time_signature); +void fraction_init_from_string (Fraction *self, const char* s); +static gboolean model_media_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +GType model_tempo_information_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType view_media_engine_get_type (void); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +GType model_library_importer_get_type (void); +static gboolean model_media_loader_handler_real_commit_click (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_media_loader_handler_real_commit_library_preference (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static void model_media_loader_handler_real_leave_library (ModelLoaderHandler* base); +static void model_media_loader_handler_finalize (GObject* obj); +GType model_thumbnail_fetcher_get_type (void); +gpointer model_fetcher_completion_ref (gpointer instance); +void model_fetcher_completion_unref (gpointer instance); +GParamSpec* model_param_spec_fetcher_completion (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_fetcher_completion (GValue* value, gpointer v_object); +void model_value_take_fetcher_completion (GValue* value, gpointer v_object); +gpointer model_value_get_fetcher_completion (const GValue* value); +GType model_fetcher_completion_get_type (void); +#define MODEL_PROJECT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT, ModelProjectPrivate)) +enum { + MODEL_PROJECT_DUMMY_PROPERTY +}; +#define MODEL_PROJECT_FILLMORE_FILE_EXTENSION "fill" +#define MODEL_PROJECT_FILLMORE_FILE_FILTER "*." MODEL_PROJECT_FILLMORE_FILE_EXTENSION +#define MODEL_PROJECT_LOMBARD_FILE_EXTENSION "lom" +#define MODEL_PROJECT_LOMBARD_FILE_FILTER "*." MODEL_PROJECT_LOMBARD_FILE_EXTENSION +#define MODEL_PROJECT_license "\n" \ +"%s is free software; you can redistribute it and/or modify it under th" \ +"e \n" \ +"terms of the GNU Lesser General Public License as published by the Fre" \ +"e \n" \ +"Software Foundation; either version 2.1 of the License, or (at your op" \ +"tion) \n" \ +"any later version.\n" \ +"\n" \ +"%s is distributed in the hope that it will be useful, but WITHOUT \n" \ +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " \ +"FITNESS\n" \ +"FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License f" \ +"or \n" \ +"more details.\n" \ +"\n" \ +"You should have received a copy of the GNU Lesser General Public Licen" \ +"se \n" \ +"along with %s; if not, write to the Free Software Foundation, Inc., \n" \ +"51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n" +void model_project_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result); +static void model_project_real_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result); +ModelUndoManager* model_undo_manager_new (void); +ModelUndoManager* model_undo_manager_construct (GType object_type); +ViewMediaEngine* view_media_engine_new (ModelProject* project, gboolean include_video, GError** error); +ViewMediaEngine* view_media_engine_construct (GType object_type, ModelProject* project, gboolean include_video, GError** error); +void view_media_engine_on_track_added (ViewMediaEngine* self, ModelTrack* track); +static void _view_media_engine_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self); +void model_project_on_playstate_changed (ModelProject* self); +static void _model_project_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self); +void model_project_on_error_occurred (ModelProject* self, const char* major_error, const char* minor_error); +static void _model_project_on_error_occurred_view_media_engine_error_occurred (ViewMediaEngine* _sender, const char* major_message, const char* minor_message, gpointer self); +ModelProject* model_project_construct (GType object_type, const char* filename, gboolean include_video, GError** error); +GType play_state_get_type (void); +PlayState view_media_engine_get_play_state (ViewMediaEngine* self); +static void model_project_ClearTrackMeters (ModelProject* self); +char* model_project_get_project_file (ModelProject* self); +static char* model_project_real_get_project_file (ModelProject* self); +ModelClipFile* model_project_get_clipfile (ModelProject* self, gint index); +gint model_project_get_clipfile_index (ModelProject* self, ModelClipFile* find); +ModelTrack* model_project_track_from_clip (ModelProject* self, ModelClip* clip); +void model_project_print_graph (ModelProject* self, GstBin* bin, const char* file_name); +gint64 model_track_get_length (ModelTrack* self); +gint64 model_project_get_length (ModelProject* self); +gint64 model_track_snap_clip (ModelTrack* self, ModelClip* c, gint64 span); +gint64 model_clip_get_start (ModelClip* self); +gint64 model_project_snap_clip (ModelProject* self, ModelClip* c, gint64 span); +gboolean model_track_snap_coord (ModelTrack* self, gint64* coord, gint64 span); +void model_project_snap_coord (ModelProject* self, gint64* coord, gint64 span); +gpointer model_gap_ref (gpointer instance); +void model_gap_unref (gpointer instance); +GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_gap (GValue* value, gpointer v_object); +void model_value_take_gap (GValue* value, gpointer v_object); +gpointer model_value_get_gap (const GValue* value); +GType model_gap_get_type (void); +ModelGap* model_gap_intersect (ModelGap* self, ModelGap* g); +ModelGap* model_track_find_first_gap (ModelTrack* self, gint64 start); +static ModelGap* model_project_get_gap_intersection (ModelProject* self, ModelGap* gap); +gboolean model_gap_is_empty (ModelGap* self); +gboolean model_project_can_delete_gap (ModelProject* self, ModelGap* gap); +void model_track_delete_gap (ModelTrack* self, ModelGap* g); +void model_project_delete_gap (ModelProject* self, ModelGap* gap); +gint64 model_clip_file_get_length (ModelClipFile* self); +void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select); +void model_project_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); +static void model_project_real_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); +char* isolate_filename (const char* path); +void model_project_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile); +void model_project_add (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, gint64 time); +void model_project_reseek (ModelProject* self); +void model_project_on_clip_removed (ModelProject* self, ModelTrack* t, ModelClip* clip); +void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description); +ModelClip* model_track_get_clip_by_position (ModelTrack* self, gint64 pos); +gint64 model_project_transport_get_position (ModelProject* self); +void model_track_split_at (ModelTrack* self, gint64 position); +void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description); +void model_project_split_at_playhead (ModelProject* self); +gint64 model_clip_get_end (ModelClip* self); +gint64 model_clip_get_duration (ModelClip* self); +gboolean model_project_can_trim (ModelProject* self, gboolean* left); +void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +void model_project_transport_go (ModelProject* self, gint64 position); +void model_project_trim_to_playhead (ModelProject* self); +void view_media_engine_go (ViewMediaEngine* self, gint64 pos); +GType multi_file_progress_interface_get_type (void); +gboolean model_project_transport_is_playing (ModelProject* self); +gboolean model_project_transport_is_recording (ModelProject* self); +gboolean model_project_playhead_on_clip (ModelProject* self); +gboolean model_track_are_contiguous_clips (ModelTrack* self, gint64 position); +gboolean model_project_playhead_on_contiguous_clip (ModelProject* self); +char* model_track_get_display_name (ModelTrack* self); +gboolean model_project_is_duplicate_track_name (ModelProject* self, ModelTrack* track, const char* new_name); +static void _model_project_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self); +static void _model_project_on_error_occurred_model_track_error_occurred (ModelTrack* _sender, const char* major_error, const char* minor_error, gpointer self); +static void model_project_real_add_track (ModelProject* self, ModelTrack* track); +void model_project_insert_track (ModelProject* self, gint index, ModelTrack* track); +static void model_project_real_insert_track (ModelProject* self, gint index, ModelTrack* track); +void model_track_hide (ModelTrack* self); +void model_project_add_inactive_track (ModelProject* self, ModelTrack* track); +void model_project_remove_track (ModelProject* self, ModelTrack* track); +void model_project_remove_track_at (ModelProject* self, gint index); +ModelAddClipCommand* model_add_clip_command_new (ModelProject* project, ModelClipFile* clip_file); +ModelAddClipCommand* model_add_clip_command_construct (GType object_type, ModelProject* project, ModelClipFile* clip_file); +gpointer model_command_ref (gpointer instance); +void model_command_unref (gpointer instance); +GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_command (GValue* value, gpointer v_object); +void model_value_take_command (GValue* value, gpointer v_object); +gpointer model_value_get_command (const GValue* value); +GType model_command_get_type (void); +GType model_add_clip_command_get_type (void); +void model_project_do_command (ModelProject* self, ModelCommand* the_command); +gboolean model_clip_file_is_online (ModelClipFile* self); +gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t); +ModelThumbnailFetcher* model_thumbnail_fetcher_new (ModelClipFile* f, gint64 time, GError** error); +ModelThumbnailFetcher* model_thumbnail_fetcher_construct (GType object_type, ModelClipFile* f, gint64 time, GError** error); +static void model_project_on_thumbnail_ready (ModelProject* self, ModelFetcher* f); +static void _model_project_on_thumbnail_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self); +void _model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile, GError** error); +ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename); +gboolean model_project_clipfile_on_track (ModelProject* self, const char* filename); +void model_track_delete_clip (ModelTrack* self, ModelClip* clip); +static void model_project_delete_clipfile_from_tracks (ModelProject* self, ModelClipFile* cf); +void _model_project_remove_clipfile (ModelProject* self, ModelClipFile* cf); +ModelClipFileDeleteCommand* model_clip_file_delete_command_new (ModelProject* p, ModelClipFile* cf); +ModelClipFileDeleteCommand* model_clip_file_delete_command_construct (GType object_type, ModelProject* p, ModelClipFile* cf); +GType model_clip_file_delete_command_get_type (void); +void model_project_remove_clipfile (ModelProject* self, const char* filename); +void model_project_go_start (ModelProject* self); +void model_project_go_end (ModelProject* self); +gint64 model_track_previous_edit (ModelTrack* self, gint64 pos); +void model_project_go_previous (ModelProject* self); +gint64 model_track_next_edit (ModelTrack* self, gint64 pos); +void model_project_go_next (ModelProject* self); +void model_project_set_name (ModelProject* self, const char* filename); +char* model_project_get_app_name (ModelProject* self); +char* model_project_get_file_display_name (ModelProject* self); +void view_media_engine_set_gst_state (ViewMediaEngine* self, GstState state); +void model_track_delete_all_clips (ModelTrack* self); +void model_project_clear (ModelProject* self); +gboolean model_project_can_export (ModelProject* self); +void model_project_on_load_started (ModelProject* self, const char* filename); +static void model_project_on_load_error (ModelProject* self, const char* _error_); +void model_undo_manager_reset (ModelUndoManager* self); +static void model_project_on_load_complete (ModelProject* self); +ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name); +ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name); +static void _model_project_on_load_started_model_project_loader_load_started (ModelProjectLoader* _sender, const char* filename, gpointer self); +static void _model_project_on_load_error_model_project_loader_load_error (ModelProjectLoader* _sender, const char* _error_, gpointer self); +static void _model_project_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self); +void view_media_engine_on_load_complete (ViewMediaEngine* self); +static void _view_media_engine_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self); +void view_media_engine_set_play_state (ViewMediaEngine* self, PlayState play_state); +void model_project_loader_load (ModelProjectLoader* self); +void model_project_load (ModelProject* self, const char* fname); +static void model_project_real_load (ModelProject* self, const char* fname); +gboolean model_video_track_get_framerate (ModelVideoTrack* self, Fraction* rate); +gboolean fraction_equal (Fraction *self, Fraction* f); +void model_project_save_library (ModelProject* self, FILE* f); +void model_track_save (ModelTrack* self, FILE* f); +char* fraction_to_string (Fraction *self); +void model_undo_manager_mark_clean (ModelUndoManager* self); +void model_project_save (ModelProject* self, const char* filename); +static void model_project_real_save (ModelProject* self, const char* filename); +void view_media_engine_close (ViewMediaEngine* self); +void model_project_close (ModelProject* self); +void model_fetcher_completion_complete (ModelFetcherCompletion* self, ModelFetcher* fetcher); +void model_project_on_importer_clip_complete (ModelProject* self, ModelClipFetcher* fetcher); +static void model_project_on_fetcher_ready (ModelProject* self, ModelFetcher* fetcher); +static void _model_project_on_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self); +void model_project_create_clip_fetcher (ModelProject* self, ModelFetcherCompletion* fetcher_completion, const char* filename, GError** error); +char* get_file_extension (const char* path); +gboolean model_project_is_project_extension (ModelProject* self, const char* filename); +void model_undo_manager_do_command (ModelUndoManager* self, ModelCommand* the_command); +void model_undo_manager_undo (ModelUndoManager* self); +void model_project_undo (ModelProject* self); +ModelTimelineImporter* model_timeline_importer_new (ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks); +ModelTimelineImporter* model_timeline_importer_construct (GType object_type, ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks); +GType model_timeline_importer_get_type (void); +ModelLibraryImporter* model_library_importer_new (ModelProject* p); +ModelLibraryImporter* model_library_importer_construct (GType object_type, ModelProject* p); +GType model_clip_importer_get_type (void); +MultiFileProgress* multi_file_progress_new (GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider); +MultiFileProgress* multi_file_progress_construct (GType object_type, GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider); +GType multi_file_progress_get_type (void); +void model_project_create_clip_importer (ModelProject* self, ModelTrack* track, gboolean timeline_add, gint64 time_to_add, gboolean both_tracks, GtkWindow* progress_window_parent, gint number); +char* model_project_get_version (ModelProject* self); +static char* model_project_real_get_app_name (ModelProject* self); +char* model_project_get_license (ModelProject* self); +ModelTimeSignatureCommand* model_time_signature_command_new (ModelProject* project, Fraction* new_time_signature); +ModelTimeSignatureCommand* model_time_signature_command_construct (GType object_type, ModelProject* project, Fraction* new_time_signature); +GType model_time_signature_command_get_type (void); +void model_project_set_time_signature (ModelProject* self, Fraction* time_signature); +static void model_project_real_get_time_signature (ModelTempoInformation* base, Fraction* result); +ModelBpmCommand* model_bpm_command_new (ModelProject* project, gint new_bpm); +ModelBpmCommand* model_bpm_command_construct (GType object_type, ModelProject* project, gint new_bpm); +GType model_bpm_command_get_type (void); +void model_project_set_bpm (ModelProject* self, gint bpm); +static gint model_project_real_get_bpm (ModelTempoInformation* base); +static char* model_project_get_path (ModelProject* self); +char* model_project_get_audio_path (ModelProject* self); +ModelVideoTrack* model_project_find_video_track (ModelProject* self); +ModelAudioTrack* model_project_find_audio_track (ModelProject* self); +void model_project_load_complete (ModelProject* self); +static void model_project_real_load_complete (ModelProject* self); +static void model_project_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); +static int _vala_strcmp0 (const char * str1, const char * str2); + +const char* MODEL_PROJECT_authors[5] = {"Robert Powell ", "Adam Dingle ", "Andrew O'Mahony ", "Dru Moore ", NULL}; + +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); + +#line 19 "project.vala" +ModelMediaLoaderHandler* model_media_loader_handler_construct (GType object_type, ModelProject* the_project) { +#line 871 "project.c" + ModelMediaLoaderHandler * self; + ModelTrack* _tmp0_; +#line 19 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (the_project), NULL); +#line 19 "project.vala" + self = (ModelMediaLoaderHandler*) model_loader_handler_construct (object_type); +#line 20 "project.vala" + self->the_project = the_project; +#line 21 "project.vala" + self->current_track = (_tmp0_ = NULL, _g_object_unref0 (self->current_track), _tmp0_); +#line 882 "project.c" + return self; +} + + +#line 19 "project.vala" +ModelMediaLoaderHandler* model_media_loader_handler_new (ModelProject* the_project) { +#line 19 "project.vala" + return model_media_loader_handler_construct (MODEL_TYPE_MEDIA_LOADER_HANDLER, the_project); +#line 891 "project.c" +} + + +#line 24 "project.vala" +static gboolean model_media_loader_handler_real_commit_marina (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 897 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + gint number_of_attributes; + gboolean _tmp0_ = FALSE; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 25 "project.vala" + number_of_attributes = attr_names_length1; +#line 26 "project.vala" + if (number_of_attributes != 1) { +#line 26 "project.vala" + _tmp0_ = TRUE; +#line 909 "project.c" + } else { +#line 27 "project.vala" + _tmp0_ = _vala_strcmp0 (attr_names[0], "version") != 0; +#line 913 "project.c" + } +#line 26 "project.vala" + if (_tmp0_) { +#line 28 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing version information"); +#line 919 "project.c" + result = FALSE; +#line 29 "project.vala" + return result; +#line 923 "project.c" + } +#line 32 "project.vala" + if (model_project_get_file_version (self->the_project) < atoi (attr_values[0])) { +#line 927 "project.c" + char* _tmp1_; +#line 33 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp1_ = g_strdup_printf ("Version mismatch! (File Version: %d, App Version: %d)", model_project_get_file_version (self->the_project), atoi (attr_values[0]))); +#line 931 "project.c" + _g_free0 (_tmp1_); + result = FALSE; +#line 35 "project.vala" + return result; +#line 936 "project.c" + } +#line 38 "project.vala" + self->priv->num_clipfiles_complete = 0; +#line 940 "project.c" + result = TRUE; +#line 39 "project.vala" + return result; +#line 944 "project.c" +} + + +#line 42 "project.vala" +static gboolean model_media_loader_handler_real_commit_library (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 950 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + char** _tmp1_; + gint _arr_size_; + gint arr_length1; + char** _tmp0_; + char** arr; + Fraction _tmp3_; + Fraction _tmp2_ = {0}; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 44 "project.vala" + if (attr_names_length1 != 1) { +#line 963 "project.c" + result = TRUE; +#line 45 "project.vala" + return result; +#line 967 "project.c" + } +#line 47 "project.vala" + if (_vala_strcmp0 (attr_names[0], "framerate") != 0) { +#line 48 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing framerate tag"); +#line 973 "project.c" + result = FALSE; +#line 49 "project.vala" + return result; +#line 977 "project.c" + } + arr = (_tmp1_ = _tmp0_ = g_strsplit (attr_values[0], "/", 0), arr_length1 = _vala_array_length (_tmp0_), _arr_size_ = arr_length1, _tmp1_); +#line 53 "project.vala" + if (arr_length1 != 2) { +#line 54 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid framerate attribute"); +#line 984 "project.c" + result = FALSE; + arr = (_vala_array_free (arr, arr_length1, (GDestroyNotify) g_free), NULL); +#line 55 "project.vala" + return result; +#line 989 "project.c" + } +#line 58 "project.vala" + model_project_set_default_framerate (self->the_project, (_tmp3_ = (fraction_init (&_tmp2_, atoi (arr[0]), atoi (arr[1])), _tmp2_), &_tmp3_)); +#line 993 "project.c" + result = TRUE; + arr = (_vala_array_free (arr, arr_length1, (GDestroyNotify) g_free), NULL); +#line 59 "project.vala" + return result; +#line 998 "project.c" +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 62 "project.vala" +static gboolean model_media_loader_handler_real_commit_track (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 1009 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + gint number_of_attributes; + char* name; + char* type; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 63 "project.vala" + g_assert (self->current_track == NULL); +#line 65 "project.vala" + number_of_attributes = attr_names_length1; +#line 66 "project.vala" + name = NULL; +#line 67 "project.vala" + type = NULL; +#line 1024 "project.c" + { + gint i; +#line 68 "project.vala" + i = 0; +#line 1029 "project.c" + { + gboolean _tmp0_; +#line 68 "project.vala" + _tmp0_ = TRUE; +#line 68 "project.vala" + while (TRUE) { +#line 1036 "project.c" + GQuark _tmp4_; + const char* _tmp3_; + static GQuark _tmp4__label0 = 0; + static GQuark _tmp4__label1 = 0; +#line 68 "project.vala" + if (!_tmp0_) { +#line 68 "project.vala" + i = i + 1; +#line 1045 "project.c" + } +#line 68 "project.vala" + _tmp0_ = FALSE; +#line 68 "project.vala" + if (!(i < number_of_attributes)) { +#line 68 "project.vala" + break; +#line 1053 "project.c" + } + _tmp3_ = attr_names[i]; + _tmp4_ = (NULL == _tmp3_) ? 0 : g_quark_from_string (_tmp3_); + if (_tmp4_ == ((0 != _tmp4__label0) ? _tmp4__label0 : (_tmp4__label0 = g_quark_from_static_string ("type")))) + switch (0) { + default: + { + char* _tmp1_; +#line 71 "project.vala" + type = (_tmp1_ = g_strdup (attr_values[i]), _g_free0 (type), _tmp1_); +#line 72 "project.vala" + break; +#line 1066 "project.c" + } + } else if (_tmp4_ == ((0 != _tmp4__label1) ? _tmp4__label1 : (_tmp4__label1 = g_quark_from_static_string ("name")))) + switch (0) { + default: + { + char* _tmp2_; +#line 74 "project.vala" + name = (_tmp2_ = g_strdup (attr_values[i]), _g_free0 (name), _tmp2_); +#line 75 "project.vala" + break; +#line 1077 "project.c" + } + } else + switch (0) { + default: + { +#line 77 "project.vala" + break; +#line 1085 "project.c" + } + } + } + } + } +#line 81 "project.vala" + if (name == NULL) { +#line 82 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing track name"); +#line 1095 "project.c" + result = FALSE; + _g_free0 (name); + _g_free0 (type); +#line 83 "project.vala" + return result; +#line 1101 "project.c" + } +#line 86 "project.vala" + if (type == NULL) { +#line 87 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing track type"); +#line 1107 "project.c" + result = FALSE; + _g_free0 (name); + _g_free0 (type); +#line 88 "project.vala" + return result; +#line 1113 "project.c" + } +#line 91 "project.vala" + if (_vala_strcmp0 (type, "audio") == 0) { +#line 1117 "project.c" + ModelAudioTrack* audio_track; + ModelTrack* _tmp5_; +#line 92 "project.vala" + audio_track = model_audio_track_new (self->the_project, name); +#line 93 "project.vala" + self->current_track = (_tmp5_ = _g_object_ref0 (MODEL_TRACK (audio_track)), _g_object_unref0 (self->current_track), _tmp5_); +#line 94 "project.vala" + model_project_add_track (self->the_project, self->current_track); +#line 1126 "project.c" + { + gint i; +#line 96 "project.vala" + i = 0; +#line 1131 "project.c" + { + gboolean _tmp6_; +#line 96 "project.vala" + _tmp6_ = TRUE; +#line 96 "project.vala" + while (TRUE) { +#line 1138 "project.c" + GQuark _tmp8_; + const char* _tmp7_; + static GQuark _tmp8__label0 = 0; + static GQuark _tmp8__label1 = 0; + static GQuark _tmp8__label2 = 0; +#line 96 "project.vala" + if (!_tmp6_) { +#line 96 "project.vala" + i = i + 1; +#line 1148 "project.c" + } +#line 96 "project.vala" + _tmp6_ = FALSE; +#line 96 "project.vala" + if (!(i < number_of_attributes)) { +#line 96 "project.vala" + break; +#line 1156 "project.c" + } + _tmp7_ = attr_names[i]; + _tmp8_ = (NULL == _tmp7_) ? 0 : g_quark_from_string (_tmp7_); + if (_tmp8_ == ((0 != _tmp8__label0) ? _tmp8__label0 : (_tmp8__label0 = g_quark_from_static_string ("panorama")))) + switch (0) { + default: + { +#line 99 "project.vala" + _model_audio_track_set_pan (audio_track, g_ascii_strtod (attr_values[i], NULL)); +#line 100 "project.vala" + break; +#line 1168 "project.c" + } + } else if (_tmp8_ == ((0 != _tmp8__label1) ? _tmp8__label1 : (_tmp8__label1 = g_quark_from_static_string ("volume")))) + switch (0) { + default: + { +#line 102 "project.vala" + _model_audio_track_set_volume (audio_track, g_ascii_strtod (attr_values[i], NULL)); +#line 103 "project.vala" + break; +#line 1178 "project.c" + } + } else if (_tmp8_ == ((0 != _tmp8__label2) ? _tmp8__label2 : (_tmp8__label2 = g_quark_from_static_string ("channels")))) + switch (0) { + default: + { +#line 105 "project.vala" + model_audio_track_set_default_num_channels (audio_track, atoi (attr_values[i])); +#line 106 "project.vala" + break; +#line 1188 "project.c" + } + } else + switch (0) { + default: + { +#line 108 "project.vala" + break; +#line 1196 "project.c" + } + } + } + } + } + result = TRUE; + _g_object_unref0 (audio_track); + _g_free0 (name); + _g_free0 (type); +#line 111 "project.vala" + return result; +#line 1208 "project.c" + } else { +#line 112 "project.vala" + if (_vala_strcmp0 (type, "video") == 0) { +#line 1212 "project.c" + ModelTrack* _tmp9_; +#line 113 "project.vala" + self->current_track = (_tmp9_ = MODEL_TRACK (model_video_track_new (self->the_project)), _g_object_unref0 (self->current_track), _tmp9_); +#line 114 "project.vala" + model_project_add_track (self->the_project, self->current_track); +#line 1218 "project.c" + } + } + result = MODEL_LOADER_HANDLER_CLASS (model_media_loader_handler_parent_class)->commit_track (MODEL_LOADER_HANDLER (self), attr_names, attr_names_length1, attr_values, attr_values_length1); + _g_free0 (name); + _g_free0 (type); +#line 117 "project.vala" + return result; +#line 1226 "project.c" +} + + +#line 120 "project.vala" +static void model_media_loader_handler_real_leave_track (ModelLoaderHandler* base) { +#line 1232 "project.c" + ModelMediaLoaderHandler * self; + ModelTrack* _tmp0_; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 121 "project.vala" + g_assert (self->current_track != NULL); +#line 122 "project.vala" + self->current_track = (_tmp0_ = NULL, _g_object_unref0 (self->current_track), _tmp0_); +#line 1240 "project.c" +} + + +#line 125 "project.vala" +static gboolean model_media_loader_handler_real_commit_clip (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 1246 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + gint number_of_attributes; + gint id; + char* clip_name; + gint64 start; + gint64 media_start; + gint64 duration; + ModelClipFetcher* _tmp6_; + ModelClip* _tmp7_; + ModelClip* clip; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 126 "project.vala" + g_assert (self->current_track != NULL); +#line 128 "project.vala" + number_of_attributes = attr_names_length1; +#line 129 "project.vala" + id = -1; +#line 130 "project.vala" + clip_name = NULL; +#line 131 "project.vala" + start = (gint64) (-1); +#line 132 "project.vala" + media_start = (gint64) (-1); +#line 133 "project.vala" + duration = (gint64) (-1); +#line 1273 "project.c" + { + gint i; +#line 134 "project.vala" + i = 0; +#line 1278 "project.c" + { + gboolean _tmp0_; +#line 134 "project.vala" + _tmp0_ = TRUE; +#line 134 "project.vala" + while (TRUE) { +#line 1285 "project.c" + GQuark _tmp4_; + const char* _tmp3_; + static GQuark _tmp4__label0 = 0; + static GQuark _tmp4__label1 = 0; + static GQuark _tmp4__label2 = 0; + static GQuark _tmp4__label3 = 0; + static GQuark _tmp4__label4 = 0; +#line 134 "project.vala" + if (!_tmp0_) { +#line 134 "project.vala" + i++; +#line 1297 "project.c" + } +#line 134 "project.vala" + _tmp0_ = FALSE; +#line 134 "project.vala" + if (!(i < number_of_attributes)) { +#line 134 "project.vala" + break; +#line 1305 "project.c" + } + _tmp3_ = attr_names[i]; + _tmp4_ = (NULL == _tmp3_) ? 0 : g_quark_from_string (_tmp3_); + if (_tmp4_ == ((0 != _tmp4__label0) ? _tmp4__label0 : (_tmp4__label0 = g_quark_from_static_string ("id")))) + switch (0) { + default: + { +#line 137 "project.vala" + id = atoi (attr_values[i]); +#line 138 "project.vala" + break; +#line 1317 "project.c" + } + } else if (_tmp4_ == ((0 != _tmp4__label1) ? _tmp4__label1 : (_tmp4__label1 = g_quark_from_static_string ("name")))) + switch (0) { + default: + { + char* _tmp1_; +#line 140 "project.vala" + clip_name = (_tmp1_ = g_strdup (attr_values[i]), _g_free0 (clip_name), _tmp1_); +#line 141 "project.vala" + break; +#line 1328 "project.c" + } + } else if (_tmp4_ == ((0 != _tmp4__label2) ? _tmp4__label2 : (_tmp4__label2 = g_quark_from_static_string ("start")))) + switch (0) { + default: + { +#line 143 "project.vala" + start = g_ascii_strtoll (attr_values[i], NULL, 0); +#line 144 "project.vala" + break; +#line 1338 "project.c" + } + } else if (_tmp4_ == ((0 != _tmp4__label3) ? _tmp4__label3 : (_tmp4__label3 = g_quark_from_static_string ("media-start")))) + switch (0) { + default: + { +#line 146 "project.vala" + media_start = g_ascii_strtoll (attr_values[i], NULL, 0); +#line 147 "project.vala" + break; +#line 1348 "project.c" + } + } else if (_tmp4_ == ((0 != _tmp4__label4) ? _tmp4__label4 : (_tmp4__label4 = g_quark_from_static_string ("duration")))) + switch (0) { + default: + { +#line 149 "project.vala" + duration = g_ascii_strtoll (attr_values[i], NULL, 0); +#line 150 "project.vala" + break; +#line 1358 "project.c" + } + } else + switch (0) { + default: + { + char* _tmp2_; +#line 153 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp2_ = g_strdup_printf ("Unknown attribute %s", attr_names[i])); +#line 1367 "project.c" + _g_free0 (_tmp2_); + result = FALSE; + _g_free0 (clip_name); +#line 154 "project.vala" + return result; +#line 1373 "project.c" + } + } + } + } + } +#line 158 "project.vala" + if (id == (-1)) { +#line 159 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing clip id"); +#line 1383 "project.c" + result = FALSE; + _g_free0 (clip_name); +#line 160 "project.vala" + return result; +#line 1388 "project.c" + } +#line 163 "project.vala" + if (clip_name == NULL) { +#line 164 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing clip_name"); +#line 1394 "project.c" + result = FALSE; + _g_free0 (clip_name); +#line 165 "project.vala" + return result; +#line 1399 "project.c" + } +#line 168 "project.vala" + if (start == (-1)) { +#line 169 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing start time"); +#line 1405 "project.c" + result = FALSE; + _g_free0 (clip_name); +#line 170 "project.vala" + return result; +#line 1410 "project.c" + } +#line 173 "project.vala" + if (media_start == (-1)) { +#line 174 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing media_start"); +#line 1416 "project.c" + result = FALSE; + _g_free0 (clip_name); +#line 175 "project.vala" + return result; +#line 1421 "project.c" + } +#line 178 "project.vala" + if (duration == (-1)) { +#line 179 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing duration"); +#line 1427 "project.c" + result = FALSE; + _g_free0 (clip_name); +#line 180 "project.vala" + return result; +#line 1432 "project.c" + } +#line 183 "project.vala" + if (id >= gee_collection_get_size (GEE_COLLECTION (self->priv->clipfetchers))) { +#line 1436 "project.c" + char* _tmp5_; +#line 184 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp5_ = g_strdup_printf ("clip file id %s was not loaded", clip_name)); +#line 1440 "project.c" + _g_free0 (_tmp5_); + result = FALSE; + _g_free0 (clip_name); +#line 185 "project.vala" + return result; +#line 1446 "project.c" + } +#line 188 "project.vala" + clip = (_tmp7_ = model_clip_new (MODEL_FETCHER (_tmp6_ = (ModelClipFetcher*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->clipfetchers), id))->clipfile, model_track_media_type (self->current_track), clip_name, start, media_start, duration, FALSE), _g_object_unref0 (_tmp6_), _tmp7_); +#line 190 "project.vala" + model_track_add (self->current_track, clip, start, FALSE); +#line 1452 "project.c" + result = TRUE; + _g_free0 (clip_name); + _g_object_unref0 (clip); +#line 191 "project.vala" + return result; +#line 1458 "project.c" +} + + +#line 194 "project.vala" +static void model_media_loader_handler_fetcher_ready (ModelMediaLoaderHandler* self, ModelFetcher* f) { +#line 194 "project.vala" + g_return_if_fail (MODEL_IS_MEDIA_LOADER_HANDLER (self)); +#line 194 "project.vala" + g_return_if_fail (MODEL_IS_FETCHER (f)); +#line 195 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "fetcher_ready"); +#line 196 "project.vala" + if (f->error_string != NULL) { +#line 1472 "project.c" + char* _tmp0_; +#line 197 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp0_ = g_strdup_printf ("Could not load %s.", f->clipfile->filename)); +#line 1476 "project.c" + _g_free0 (_tmp0_); +#line 198 "project.vala" + g_warning ("project.vala:198: Could not load %s: %s", f->clipfile->filename, f->error_string); +#line 1480 "project.c" + } +#line 200 "project.vala" + model_project_add_clipfile (self->the_project, f->clipfile); +#line 201 "project.vala" + self->priv->num_clipfiles_complete++; +#line 202 "project.vala" + if (self->priv->num_clipfiles_complete == gee_collection_get_size (GEE_COLLECTION (self->priv->clipfetchers))) { +#line 203 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "complete"); +#line 1490 "project.c" + } +} + + +#line 194 "project.vala" +static void _model_media_loader_handler_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self) { +#line 1497 "project.c" + model_media_loader_handler_fetcher_ready (self, fetcher); +} + + +#line 207 "project.vala" +static gboolean model_media_loader_handler_real_commit_clipfile (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 1504 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + GError * _inner_error_; + char* filename; + gint id; + self = MODEL_MEDIA_LOADER_HANDLER (base); + _inner_error_ = NULL; +#line 208 "project.vala" + filename = NULL; +#line 209 "project.vala" + id = -1; +#line 1516 "project.c" + { + gint i; +#line 211 "project.vala" + i = 0; +#line 1521 "project.c" + { + gboolean _tmp0_; +#line 211 "project.vala" + _tmp0_ = TRUE; +#line 211 "project.vala" + while (TRUE) { +#line 211 "project.vala" + if (!_tmp0_) { +#line 211 "project.vala" + i++; +#line 1532 "project.c" + } +#line 211 "project.vala" + _tmp0_ = FALSE; +#line 211 "project.vala" + if (!(i < attr_names_length1)) { +#line 211 "project.vala" + break; +#line 1540 "project.c" + } +#line 212 "project.vala" + if (_vala_strcmp0 (attr_names[i], "filename") == 0) { +#line 1544 "project.c" + char* _tmp1_; +#line 213 "project.vala" + filename = (_tmp1_ = g_strdup (attr_values[i]), _g_free0 (filename), _tmp1_); +#line 1548 "project.c" + } else { +#line 214 "project.vala" + if (_vala_strcmp0 (attr_names[i], "id") == 0) { +#line 215 "project.vala" + id = atoi (attr_values[i]); +#line 1554 "project.c" + } + } + } + } + } +#line 219 "project.vala" + if (filename == NULL) { +#line 220 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid clipfile filename"); +#line 1564 "project.c" + result = FALSE; + _g_free0 (filename); +#line 221 "project.vala" + return result; +#line 1569 "project.c" + } +#line 224 "project.vala" + if (id < 0) { +#line 225 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid clipfile id"); +#line 1575 "project.c" + result = FALSE; + _g_free0 (filename); +#line 226 "project.vala" + return result; +#line 1580 "project.c" + } + { + ModelClipFetcher* fetcher; +#line 230 "project.vala" + fetcher = model_clip_fetcher_new (filename, &_inner_error_); +#line 1586 "project.c" + if (_inner_error_ != NULL) { + goto __catch14_g_error; + } +#line 231 "project.vala" + g_signal_connect_object (MODEL_FETCHER (fetcher), "ready", (GCallback) _model_media_loader_handler_fetcher_ready_model_fetcher_ready, self, 0); +#line 232 "project.vala" + gee_abstract_list_insert (GEE_ABSTRACT_LIST (self->priv->clipfetchers), id, fetcher); +#line 1594 "project.c" + _g_object_unref0 (fetcher); + } + goto __finally14; + __catch14_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 234 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", e->message); +#line 1606 "project.c" + result = FALSE; + _g_error_free0 (e); + _g_free0 (filename); +#line 235 "project.vala" + return result; +#line 1612 "project.c" + } + } + __finally14: + if (_inner_error_ != NULL) { + _g_free0 (filename); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + result = TRUE; + _g_free0 (filename); +#line 237 "project.vala" + return result; +#line 1626 "project.c" +} + + +#line 240 "project.vala" +static gboolean model_media_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 1632 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 241 "project.vala" + if (_vala_strcmp0 (attr_names[0], "tempo") != 0) { +#line 242 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid attribute on tempo entry"); +#line 1640 "project.c" + result = FALSE; +#line 243 "project.vala" + return result; +#line 1644 "project.c" + } +#line 246 "project.vala" + _model_project_set_bpm (self->the_project, atoi (attr_values[0])); +#line 1648 "project.c" + result = TRUE; +#line 247 "project.vala" + return result; +#line 1652 "project.c" +} + + +#line 250 "project.vala" +static gboolean model_media_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 1658 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + Fraction _tmp1_; + Fraction _tmp0_ = {0}; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 251 "project.vala" + if (_vala_strcmp0 (attr_names[0], "signature") != 0) { +#line 252 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid attribute on time signature"); +#line 1668 "project.c" + result = FALSE; +#line 253 "project.vala" + return result; +#line 1672 "project.c" + } +#line 256 "project.vala" + _model_project_set_time_signature (self->the_project, (_tmp1_ = (fraction_init_from_string (&_tmp0_, attr_values[0]), _tmp0_), &_tmp1_)); +#line 1676 "project.c" + result = TRUE; +#line 257 "project.vala" + return result; +#line 1680 "project.c" +} + + +#line 260 "project.vala" +static gboolean model_media_loader_handler_real_commit_click (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 1686 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + self = MODEL_MEDIA_LOADER_HANDLER (base); + { + gint i; +#line 261 "project.vala" + i = 0; +#line 1694 "project.c" + { + gboolean _tmp0_; +#line 261 "project.vala" + _tmp0_ = TRUE; +#line 261 "project.vala" + while (TRUE) { +#line 1701 "project.c" + GQuark _tmp3_; + const char* _tmp2_; + static GQuark _tmp3__label0 = 0; + static GQuark _tmp3__label1 = 0; + static GQuark _tmp3__label2 = 0; +#line 261 "project.vala" + if (!_tmp0_) { +#line 261 "project.vala" + i = i + 1; +#line 1711 "project.c" + } +#line 261 "project.vala" + _tmp0_ = FALSE; +#line 261 "project.vala" + if (!(i < attr_names_length1)) { +#line 261 "project.vala" + break; +#line 1719 "project.c" + } + _tmp2_ = attr_names[i]; + _tmp3_ = (NULL == _tmp2_) ? 0 : g_quark_from_string (_tmp2_); + if (_tmp3_ == ((0 != _tmp3__label0) ? _tmp3__label0 : (_tmp3__label0 = g_quark_from_static_string ("on_play")))) + switch (0) { + default: + { +#line 264 "project.vala" + self->the_project->click_during_play = _vala_strcmp0 (attr_values[i], "true") == 0; +#line 265 "project.vala" + break; +#line 1731 "project.c" + } + } else if (_tmp3_ == ((0 != _tmp3__label1) ? _tmp3__label1 : (_tmp3__label1 = g_quark_from_static_string ("on_record")))) + switch (0) { + default: + { +#line 267 "project.vala" + self->the_project->click_during_record = _vala_strcmp0 (attr_values[i], "true") == 0; +#line 268 "project.vala" + break; +#line 1741 "project.c" + } + } else if (_tmp3_ == ((0 != _tmp3__label2) ? _tmp3__label2 : (_tmp3__label2 = g_quark_from_static_string ("volume")))) + switch (0) { + default: + { +#line 270 "project.vala" + self->the_project->click_volume = g_ascii_strtod (attr_values[i], NULL); +#line 271 "project.vala" + break; +#line 1751 "project.c" + } + } else + switch (0) { + default: + { + char* _tmp1_; +#line 273 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp1_ = g_strdup_printf ("unknown attribute for click '%s'", attr_names[i])); +#line 1760 "project.c" + _g_free0 (_tmp1_); + result = FALSE; +#line 274 "project.vala" + return result; +#line 1765 "project.c" + } + } + } + } + } + result = TRUE; +#line 277 "project.vala" + return result; +#line 1774 "project.c" +} + + +#line 280 "project.vala" +static gboolean model_media_loader_handler_real_commit_library_preference (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 1780 "project.c" + ModelMediaLoaderHandler * self; + gboolean result = FALSE; + self = MODEL_MEDIA_LOADER_HANDLER (base); + { + gint i; +#line 281 "project.vala" + i = 0; +#line 1788 "project.c" + { + gboolean _tmp0_; +#line 281 "project.vala" + _tmp0_ = TRUE; +#line 281 "project.vala" + while (TRUE) { +#line 1795 "project.c" + GQuark _tmp3_; + const char* _tmp2_; + static GQuark _tmp3__label0 = 0; + static GQuark _tmp3__label1 = 0; +#line 281 "project.vala" + if (!_tmp0_) { +#line 281 "project.vala" + i = i + 1; +#line 1804 "project.c" + } +#line 281 "project.vala" + _tmp0_ = FALSE; +#line 281 "project.vala" + if (!(i < attr_names_length1)) { +#line 281 "project.vala" + break; +#line 1812 "project.c" + } + _tmp2_ = attr_names[i]; + _tmp3_ = (NULL == _tmp2_) ? 0 : g_quark_from_string (_tmp2_); + if (_tmp3_ == ((0 != _tmp3__label0) ? _tmp3__label0 : (_tmp3__label0 = g_quark_from_static_string ("width")))) + switch (0) { + default: + { +#line 284 "project.vala" + self->the_project->library_width = atoi (attr_values[i]); +#line 285 "project.vala" + break; +#line 1824 "project.c" + } + } else if (_tmp3_ == ((0 != _tmp3__label1) ? _tmp3__label1 : (_tmp3__label1 = g_quark_from_static_string ("visible")))) + switch (0) { + default: + { +#line 287 "project.vala" + self->the_project->library_visible = _vala_strcmp0 (attr_values[i], "true") == 0; +#line 288 "project.vala" + break; +#line 1834 "project.c" + } + } else + switch (0) { + default: + { + char* _tmp1_; +#line 290 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp1_ = g_strdup_printf ("unknown attribute for library '%s'", attr_names[i])); +#line 1843 "project.c" + _g_free0 (_tmp1_); + result = FALSE; +#line 291 "project.vala" + return result; +#line 1848 "project.c" + } + } + } + } + } + result = TRUE; +#line 294 "project.vala" + return result; +#line 1857 "project.c" +} + + +#line 297 "project.vala" +static void model_media_loader_handler_real_leave_library (ModelLoaderHandler* base) { +#line 1863 "project.c" + ModelMediaLoaderHandler * self; + self = MODEL_MEDIA_LOADER_HANDLER (base); +#line 298 "project.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->priv->clipfetchers)) == 0) { +#line 299 "project.vala" + g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "complete"); +#line 1870 "project.c" + } +} + + +static void model_media_loader_handler_class_init (ModelMediaLoaderHandlerClass * klass) { + model_media_loader_handler_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelMediaLoaderHandlerPrivate)); + MODEL_LOADER_HANDLER_CLASS (klass)->commit_marina = model_media_loader_handler_real_commit_marina; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_library = model_media_loader_handler_real_commit_library; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_track = model_media_loader_handler_real_commit_track; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_track = model_media_loader_handler_real_leave_track; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_clip = model_media_loader_handler_real_commit_clip; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_clipfile = model_media_loader_handler_real_commit_clipfile; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_tempo_entry = model_media_loader_handler_real_commit_tempo_entry; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_time_signature_entry = model_media_loader_handler_real_commit_time_signature_entry; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_click = model_media_loader_handler_real_commit_click; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_library_preference = model_media_loader_handler_real_commit_library_preference; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_library = model_media_loader_handler_real_leave_library; + G_OBJECT_CLASS (klass)->finalize = model_media_loader_handler_finalize; +} + + +static void model_media_loader_handler_instance_init (ModelMediaLoaderHandler * self) { + self->priv = MODEL_MEDIA_LOADER_HANDLER_GET_PRIVATE (self); + self->priv->clipfetchers = gee_array_list_new (MODEL_TYPE_CLIP_FETCHER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); +} + + +static void model_media_loader_handler_finalize (GObject* obj) { + ModelMediaLoaderHandler * self; + self = MODEL_MEDIA_LOADER_HANDLER (obj); + _g_object_unref0 (self->current_track); + _g_object_unref0 (self->priv->clipfetchers); + G_OBJECT_CLASS (model_media_loader_handler_parent_class)->finalize (obj); +} + + +GType model_media_loader_handler_get_type (void) { + static volatile gsize model_media_loader_handler_type_id__volatile = 0; + if (g_once_init_enter (&model_media_loader_handler_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelMediaLoaderHandlerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_media_loader_handler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelMediaLoaderHandler), 0, (GInstanceInitFunc) model_media_loader_handler_instance_init, NULL }; + GType model_media_loader_handler_type_id; + model_media_loader_handler_type_id = g_type_register_static (MODEL_TYPE_LOADER_HANDLER, "ModelMediaLoaderHandler", &g_define_type_info, 0); + g_once_init_leave (&model_media_loader_handler_type_id__volatile, model_media_loader_handler_type_id); + } + return model_media_loader_handler_type_id__volatile; +} + + +#line 383 "project.vala" +static void model_project_real_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result) { +#line 1922 "project.c" + g_return_if_fail (MODEL_IS_PROJECT (self)); + g_critical ("Type `%s' does not implement abstract method `model_project_get_clip_time'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 383 "project.vala" +void model_project_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result) { +#line 383 "project.vala" + MODEL_PROJECT_GET_CLASS (self)->get_clip_time (self, f, result); +#line 1933 "project.c" +} + + +#line 1145 "MediaEngine.vala" +static void _view_media_engine_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self) { +#line 1939 "project.c" + view_media_engine_on_track_added (self, track); +} + + +#line 397 "project.vala" +static void _model_project_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self) { +#line 1946 "project.c" + model_project_on_playstate_changed (self); +} + + +#line 924 "project.vala" +static void _model_project_on_error_occurred_view_media_engine_error_occurred (ViewMediaEngine* _sender, const char* major_message, const char* minor_message, gpointer self) { +#line 1953 "project.c" + model_project_on_error_occurred (self, major_message, minor_message); +} + + +#line 385 "project.vala" +ModelProject* model_project_construct (GType object_type, const char* filename, gboolean include_video, GError** error) { +#line 1960 "project.c" + GError * _inner_error_; + ModelProject * self; + ModelUndoManager* _tmp0_; + char* _tmp1_; + ViewMediaEngine* _tmp2_; + ViewMediaEngine* _tmp3_; + _inner_error_ = NULL; +#line 385 "project.vala" + self = (ModelProject*) g_object_new (object_type, NULL); +#line 386 "project.vala" + self->undo_manager = (_tmp0_ = model_undo_manager_new (), _model_undo_manager_unref0 (self->undo_manager), _tmp0_); +#line 387 "project.vala" + self->project_file = (_tmp1_ = g_strdup (filename), _g_free0 (self->project_file), _tmp1_); +#line 389 "project.vala" + _tmp2_ = view_media_engine_new (self, include_video, &_inner_error_); +#line 1976 "project.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 389 "project.vala" + self->media_engine = (_tmp3_ = _tmp2_, _g_object_unref0 (self->media_engine), _tmp3_); +#line 390 "project.vala" + g_signal_connect_object (self, "track-added", (GCallback) _view_media_engine_on_track_added_model_project_track_added, self->media_engine, 0); +#line 391 "project.vala" + g_signal_connect_object (self->media_engine, "playstate-changed", (GCallback) _model_project_on_playstate_changed_view_media_engine_playstate_changed, self, 0); +#line 392 "project.vala" + g_signal_connect_object (self->media_engine, "error-occurred", (GCallback) _model_project_on_error_occurred_view_media_engine_error_occurred, self, 0); +#line 394 "project.vala" + model_project_set_default_framerate (self, &model_project_INVALID_FRAME_RATE); +#line 1992 "project.c" + return self; +} + + +#line 397 "project.vala" +void model_project_on_playstate_changed (ModelProject* self) { +#line 397 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 398 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_playstate_changed"); +#line 399 "project.vala" + switch (view_media_engine_get_play_state (self->media_engine)) { +#line 2005 "project.c" + case PLAY_STATE_STOPPED: + { +#line 401 "project.vala" + model_project_ClearTrackMeters (self); +#line 402 "project.vala" + break; +#line 2012 "project.c" + } + case PLAY_STATE_CLOSED: + { +#line 404 "project.vala" + g_signal_emit_by_name (self, "closed"); +#line 405 "project.vala" + break; +#line 2020 "project.c" + } + } +#line 407 "project.vala" + g_signal_emit_by_name (self, "playstate-changed", view_media_engine_get_play_state (self->media_engine)); +#line 2025 "project.c" +} + + +#line 410 "project.vala" +static char* model_project_real_get_project_file (ModelProject* self) { +#line 2031 "project.c" + char* result = NULL; +#line 410 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 2035 "project.c" + result = g_strdup (self->project_file); +#line 411 "project.vala" + return result; +#line 2039 "project.c" +} + + +#line 410 "project.vala" +char* model_project_get_project_file (ModelProject* self) { +#line 410 "project.vala" + return MODEL_PROJECT_GET_CLASS (self)->get_project_file (self); +#line 2047 "project.c" +} + + +#line 414 "project.vala" +ModelClipFile* model_project_get_clipfile (ModelProject* self, gint index) { +#line 2053 "project.c" + ModelClipFile* result = NULL; + gboolean _tmp0_ = FALSE; +#line 414 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 415 "project.vala" + if (index < 0) { +#line 415 "project.vala" + _tmp0_ = TRUE; +#line 2062 "project.c" + } else { +#line 416 "project.vala" + _tmp0_ = index >= gee_collection_get_size (GEE_COLLECTION (self->clipfiles)); +#line 2066 "project.c" + } +#line 415 "project.vala" + if (_tmp0_) { +#line 2070 "project.c" + result = NULL; +#line 417 "project.vala" + return result; +#line 2074 "project.c" + } + result = (ModelClipFile*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clipfiles), index); +#line 418 "project.vala" + return result; +#line 2079 "project.c" +} + + +#line 421 "project.vala" +gint model_project_get_clipfile_index (ModelProject* self, ModelClipFile* find) { +#line 2085 "project.c" + gint result = 0; + gint i; +#line 421 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), 0); +#line 421 "project.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (find), 0); +#line 422 "project.vala" + i = 0; +#line 2094 "project.c" + { + GeeIterator* _f_it; + _f_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clipfiles)); +#line 423 "project.vala" + while (TRUE) { +#line 2100 "project.c" + ModelClipFile* f; +#line 423 "project.vala" + if (!gee_iterator_next (_f_it)) { +#line 423 "project.vala" + break; +#line 2106 "project.c" + } +#line 423 "project.vala" + f = (ModelClipFile*) gee_iterator_get (_f_it); +#line 424 "project.vala" + if (f == find) { +#line 2112 "project.c" + result = i; + _g_object_unref0 (f); + _g_object_unref0 (_f_it); +#line 425 "project.vala" + return result; +#line 2118 "project.c" + } +#line 426 "project.vala" + i++; +#line 2122 "project.c" + _g_object_unref0 (f); + } + _g_object_unref0 (_f_it); + } + result = -1; +#line 428 "project.vala" + return result; +#line 2130 "project.c" +} + + +#line 431 "project.vala" +ModelTrack* model_project_track_from_clip (ModelProject* self, ModelClip* clip) { +#line 2136 "project.c" + ModelTrack* result = NULL; +#line 431 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 431 "project.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 2142 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 432 "project.vala" + while (TRUE) { +#line 2148 "project.c" + ModelTrack* track; +#line 432 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 432 "project.vala" + break; +#line 2154 "project.c" + } +#line 432 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 2158 "project.c" + { + GeeIterator* _match_it; + _match_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (track->clips)); +#line 433 "project.vala" + while (TRUE) { +#line 2164 "project.c" + ModelClip* match; +#line 433 "project.vala" + if (!gee_iterator_next (_match_it)) { +#line 433 "project.vala" + break; +#line 2170 "project.c" + } +#line 433 "project.vala" + match = (ModelClip*) gee_iterator_get (_match_it); +#line 434 "project.vala" + if (match == clip) { +#line 2176 "project.c" + result = track; + _g_object_unref0 (match); + _g_object_unref0 (_match_it); + _g_object_unref0 (_track_it); +#line 435 "project.vala" + return result; +#line 2183 "project.c" + } + _g_object_unref0 (match); + } + _g_object_unref0 (_match_it); + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = NULL; +#line 439 "project.vala" + return result; +#line 2196 "project.c" +} + + +#line 442 "project.vala" +void model_project_print_graph (ModelProject* self, GstBin* bin, const char* file_name) { +#line 442 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 442 "project.vala" + g_return_if_fail (GST_IS_BIN (bin)); +#line 442 "project.vala" + g_return_if_fail (file_name != NULL); +#line 443 "project.vala" + GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (bin, GST_DEBUG_GRAPH_SHOW_ALL, file_name); +#line 2210 "project.c" +} + + +#line 446 "project.vala" +gint64 model_project_get_length (ModelProject* self) { +#line 2216 "project.c" + gint64 result = 0LL; + gint64 max; +#line 446 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), 0LL); +#line 447 "project.vala" + max = (gint64) 0; +#line 2223 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 448 "project.vala" + while (TRUE) { +#line 2229 "project.c" + ModelTrack* track; +#line 448 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 448 "project.vala" + break; +#line 2235 "project.c" + } +#line 448 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 449 "project.vala" + max = MAX (max, model_track_get_length (track)); +#line 2241 "project.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = max; +#line 451 "project.vala" + return result; +#line 2249 "project.c" +} + + +#line 454 "project.vala" +gint64 model_project_snap_clip (ModelProject* self, ModelClip* c, gint64 span) { +#line 2255 "project.c" + gint64 result = 0LL; +#line 454 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), 0LL); +#line 454 "project.vala" + g_return_val_if_fail (MODEL_IS_CLIP (c), 0LL); +#line 2261 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 455 "project.vala" + while (TRUE) { +#line 2267 "project.c" + ModelTrack* track; + gint64 new_start; +#line 455 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 455 "project.vala" + break; +#line 2274 "project.c" + } +#line 455 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 456 "project.vala" + new_start = model_track_snap_clip (track, c, span); +#line 457 "project.vala" + if (new_start != model_clip_get_start (c)) { +#line 2282 "project.c" + result = new_start; + _g_object_unref0 (track); + _g_object_unref0 (_track_it); +#line 458 "project.vala" + return result; +#line 2288 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = model_clip_get_start (c); +#line 461 "project.vala" + return result; +#line 2297 "project.c" +} + + +#line 464 "project.vala" +void model_project_snap_coord (ModelProject* self, gint64* coord, gint64 span) { +#line 464 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 2305 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 465 "project.vala" + while (TRUE) { +#line 2311 "project.c" + ModelTrack* track; +#line 465 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 465 "project.vala" + break; +#line 2317 "project.c" + } +#line 465 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 466 "project.vala" + if (model_track_snap_coord (track, coord, span)) { +#line 2323 "project.c" + _g_object_unref0 (track); +#line 467 "project.vala" + break; +#line 2327 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +} + + +static gpointer _model_gap_ref0 (gpointer self) { + return self ? model_gap_ref (self) : NULL; +} + + +#line 472 "project.vala" +static ModelGap* model_project_get_gap_intersection (ModelProject* self, ModelGap* gap) { +#line 2343 "project.c" + ModelGap* result = NULL; + ModelGap* intersection; +#line 472 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 472 "project.vala" + g_return_val_if_fail (MODEL_IS_GAP (gap), NULL); +#line 473 "project.vala" + intersection = _model_gap_ref0 (gap); +#line 2352 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 475 "project.vala" + while (TRUE) { +#line 2358 "project.c" + ModelTrack* track; + ModelGap* _tmp1_; + ModelGap* _tmp0_; +#line 475 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 475 "project.vala" + break; +#line 2366 "project.c" + } +#line 475 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 476 "project.vala" + intersection = (_tmp1_ = model_gap_intersect (intersection, _tmp0_ = model_track_find_first_gap (track, intersection->start)), _model_gap_unref0 (intersection), _tmp1_); +#line 2372 "project.c" + _model_gap_unref0 (_tmp0_); + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = intersection; +#line 479 "project.vala" + return result; +#line 2381 "project.c" +} + + +#line 482 "project.vala" +gboolean model_project_can_delete_gap (ModelProject* self, ModelGap* gap) { +#line 2387 "project.c" + gboolean result = FALSE; + ModelGap* intersection; +#line 482 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 482 "project.vala" + g_return_val_if_fail (MODEL_IS_GAP (gap), FALSE); +#line 483 "project.vala" + intersection = model_project_get_gap_intersection (self, gap); +#line 2396 "project.c" + result = !model_gap_is_empty (intersection); + _model_gap_unref0 (intersection); +#line 484 "project.vala" + return result; +#line 2401 "project.c" +} + + +#line 487 "project.vala" +void model_project_delete_gap (ModelProject* self, ModelGap* gap) { +#line 2407 "project.c" + ModelGap* intersection; +#line 487 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 487 "project.vala" + g_return_if_fail (MODEL_IS_GAP (gap)); +#line 488 "project.vala" + intersection = model_project_get_gap_intersection (self, gap); +#line 489 "project.vala" + g_assert (!model_gap_is_empty (intersection)); +#line 2417 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 491 "project.vala" + while (TRUE) { +#line 2423 "project.c" + ModelTrack* track; +#line 491 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 491 "project.vala" + break; +#line 2429 "project.c" + } +#line 491 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 492 "project.vala" + model_track_delete_gap (track, intersection); +#line 2435 "project.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + _model_gap_unref0 (intersection); +} + + +#line 496 "project.vala" +static void model_project_real_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time) { +#line 2446 "project.c" + ModelClip* clip; +#line 496 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 496 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 496 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile)); +#line 496 "project.vala" + g_return_if_fail (name != NULL); +#line 498 "project.vala" + switch (model_track_media_type (track)) { +#line 2458 "project.c" + case MODEL_MEDIA_TYPE_AUDIO: + { +#line 500 "project.vala" + if (clipfile->audio_caps == NULL) { +#line 501 "project.vala" + return; +#line 2465 "project.c" + } +#line 503 "project.vala" + break; +#line 2469 "project.c" + } + case MODEL_MEDIA_TYPE_VIDEO: + { +#line 505 "project.vala" + if (clipfile->video_caps == NULL) { +#line 506 "project.vala" + return; +#line 2477 "project.c" + } +#line 508 "project.vala" + break; +#line 2481 "project.c" + } + } +#line 511 "project.vala" + clip = model_clip_new (clipfile, model_track_media_type (track), name, (gint64) 0, (gint64) 0, model_clip_file_get_length (clipfile), FALSE); +#line 512 "project.vala" + model_track_append_at_time (track, clip, insert_time, TRUE); +#line 2488 "project.c" + _g_object_unref0 (clip); +} + + +#line 496 "project.vala" +void model_project_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time) { +#line 496 "project.vala" + MODEL_PROJECT_GET_CLASS (self)->do_append (self, track, clipfile, name, insert_time); +#line 2497 "project.c" +} + + +#line 515 "project.vala" +void model_project_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile) { +#line 2503 "project.c" + char* name; + gint64 insert_time; +#line 515 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 515 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 515 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile)); +#line 516 "project.vala" + name = isolate_filename (clipfile->filename); +#line 517 "project.vala" + insert_time = (gint64) 0; +#line 2516 "project.c" + { + GeeIterator* _temp_track_it; + _temp_track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 519 "project.vala" + while (TRUE) { +#line 2522 "project.c" + ModelTrack* temp_track; +#line 519 "project.vala" + if (!gee_iterator_next (_temp_track_it)) { +#line 519 "project.vala" + break; +#line 2528 "project.c" + } +#line 519 "project.vala" + temp_track = (ModelTrack*) gee_iterator_get (_temp_track_it); +#line 520 "project.vala" + insert_time = MAX (insert_time, model_track_get_length (temp_track)); +#line 2534 "project.c" + _g_object_unref0 (temp_track); + } + _g_object_unref0 (_temp_track_it); + } +#line 522 "project.vala" + model_project_do_append (self, track, clipfile, name, insert_time); +#line 2541 "project.c" + _g_free0 (name); +} + + +#line 525 "project.vala" +void model_project_add (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, gint64 time) { +#line 2548 "project.c" + char* name; +#line 525 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 525 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 525 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile)); +#line 526 "project.vala" + name = isolate_filename (clipfile->filename); +#line 527 "project.vala" + model_project_do_append (self, track, clipfile, name, time); +#line 2560 "project.c" + _g_free0 (name); +} + + +#line 530 "project.vala" +void model_project_on_clip_removed (ModelProject* self, ModelTrack* t, ModelClip* clip) { +#line 530 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 530 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (t)); +#line 530 "project.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 531 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_removed"); +#line 532 "project.vala" + model_project_reseek (self); +#line 2577 "project.c" +} + + +#line 535 "project.vala" +void model_project_split_at_playhead (ModelProject* self) { +#line 2583 "project.c" + char* description; +#line 535 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 536 "project.vala" + description = g_strdup ("Split At Playhead"); +#line 537 "project.vala" + model_undo_manager_start_transaction (self->undo_manager, description); +#line 2591 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 538 "project.vala" + while (TRUE) { +#line 2597 "project.c" + ModelTrack* track; + ModelClip* _tmp0_; + gboolean _tmp1_; +#line 538 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 538 "project.vala" + break; +#line 2605 "project.c" + } +#line 538 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 539 "project.vala" + if ((_tmp1_ = (_tmp0_ = model_track_get_clip_by_position (track, model_project_transport_get_position (self))) != NULL, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 540 "project.vala" + model_track_split_at (track, model_project_transport_get_position (self)); +#line 2613 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 543 "project.vala" + model_undo_manager_end_transaction (self->undo_manager, description); +#line 2621 "project.c" + _g_free0 (description); +} + + +#line 546 "project.vala" +gboolean model_project_can_trim (ModelProject* self, gboolean* left) { +#line 2628 "project.c" + gboolean result = FALSE; + ModelClip* first_clip; + gint64 start; + gint64 end; + gboolean start_same; + gboolean end_same; + gboolean _tmp4_ = FALSE; + gboolean _tmp5_ = FALSE; +#line 546 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 547 "project.vala" + first_clip = NULL; +#line 553 "project.vala" + start = (gint64) 0; +#line 554 "project.vala" + end = (gint64) 0; +#line 555 "project.vala" + start_same = TRUE; +#line 556 "project.vala" + end_same = TRUE; +#line 2649 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 557 "project.vala" + while (TRUE) { +#line 2655 "project.c" + ModelTrack* track; + ModelClip* clip; + gboolean _tmp0_ = FALSE; +#line 557 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 557 "project.vala" + break; +#line 2663 "project.c" + } +#line 557 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 558 "project.vala" + clip = model_track_get_clip_by_position (track, model_project_transport_get_position (self)); +#line 559 "project.vala" + if (first_clip != NULL) { +#line 559 "project.vala" + _tmp0_ = clip != NULL; +#line 2673 "project.c" + } else { +#line 559 "project.vala" + _tmp0_ = FALSE; +#line 2677 "project.c" + } +#line 559 "project.vala" + if (_tmp0_) { +#line 2681 "project.c" + gboolean _tmp1_ = FALSE; + gboolean _tmp2_ = FALSE; +#line 560 "project.vala" + if (start_same) { +#line 560 "project.vala" + _tmp1_ = start == model_clip_get_start (clip); +#line 2688 "project.c" + } else { +#line 560 "project.vala" + _tmp1_ = FALSE; +#line 2692 "project.c" + } +#line 560 "project.vala" + start_same = _tmp1_; +#line 561 "project.vala" + if (end_same) { +#line 561 "project.vala" + _tmp2_ = end == model_clip_get_end (clip); +#line 2700 "project.c" + } else { +#line 561 "project.vala" + _tmp2_ = FALSE; +#line 2704 "project.c" + } +#line 561 "project.vala" + end_same = _tmp2_; +#line 2708 "project.c" + } else { +#line 562 "project.vala" + if (clip != NULL) { +#line 2712 "project.c" + ModelClip* _tmp3_; +#line 563 "project.vala" + first_clip = (_tmp3_ = _g_object_ref0 (clip), _g_object_unref0 (first_clip), _tmp3_); +#line 564 "project.vala" + start = model_clip_get_start (first_clip); +#line 565 "project.vala" + end = model_clip_get_end (first_clip); +#line 2720 "project.c" + } + } + _g_object_unref0 (track); + _g_object_unref0 (clip); + } + _g_object_unref0 (_track_it); + } +#line 569 "project.vala" + if (first_clip == NULL) { +#line 2730 "project.c" + result = FALSE; + _g_object_unref0 (first_clip); +#line 570 "project.vala" + return result; +#line 2735 "project.c" + } +#line 573 "project.vala" + if (start_same) { +#line 573 "project.vala" + _tmp4_ = !end_same; +#line 2741 "project.c" + } else { +#line 573 "project.vala" + _tmp4_ = FALSE; +#line 2745 "project.c" + } +#line 573 "project.vala" + if (_tmp4_) { +#line 574 "project.vala" + *left = TRUE; +#line 2751 "project.c" + result = TRUE; + _g_object_unref0 (first_clip); +#line 575 "project.vala" + return result; +#line 2756 "project.c" + } +#line 578 "project.vala" + if (!start_same) { +#line 578 "project.vala" + _tmp5_ = end_same; +#line 2762 "project.c" + } else { +#line 578 "project.vala" + _tmp5_ = FALSE; +#line 2766 "project.c" + } +#line 578 "project.vala" + if (_tmp5_) { +#line 579 "project.vala" + *left = FALSE; +#line 2772 "project.c" + result = TRUE; + _g_object_unref0 (first_clip); +#line 580 "project.vala" + return result; +#line 2777 "project.c" + } +#line 584 "project.vala" + *left = (model_project_transport_get_position (self) - model_clip_get_start (first_clip)) < (model_clip_get_duration (first_clip) / 2); +#line 2781 "project.c" + result = TRUE; + _g_object_unref0 (first_clip); +#line 585 "project.vala" + return result; +#line 2786 "project.c" +} + + +#line 588 "project.vala" +void model_project_trim_to_playhead (ModelProject* self) { +#line 2792 "project.c" + gboolean left = FALSE; + char* description; + ModelClip* first_clip; + gboolean _tmp1_ = FALSE; +#line 588 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 590 "project.vala" + if (!model_project_can_trim (self, &left)) { +#line 591 "project.vala" + return; +#line 2803 "project.c" + } +#line 593 "project.vala" + description = g_strdup ("Trim To Playhead"); +#line 594 "project.vala" + first_clip = NULL; +#line 595 "project.vala" + model_undo_manager_start_transaction (self->undo_manager, description); +#line 2811 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 596 "project.vala" + while (TRUE) { +#line 2817 "project.c" + ModelTrack* track; + ModelClip* clip; +#line 596 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 596 "project.vala" + break; +#line 2824 "project.c" + } +#line 596 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 597 "project.vala" + clip = model_track_get_clip_by_position (track, model_project_transport_get_position (self)); +#line 598 "project.vala" + if (clip != NULL) { +#line 2832 "project.c" + gint64 delta = 0LL; + GdkWindowEdge _tmp0_ = 0; +#line 600 "project.vala" + if (left) { +#line 601 "project.vala" + delta = model_project_transport_get_position (self) - model_clip_get_start (clip); +#line 2839 "project.c" + } else { +#line 603 "project.vala" + delta = model_project_transport_get_position (self) - model_clip_get_end (clip); +#line 2843 "project.c" + } +#line 605 "project.vala" + if (left) { +#line 605 "project.vala" + _tmp0_ = GDK_WINDOW_EDGE_WEST; +#line 2849 "project.c" + } else { +#line 605 "project.vala" + _tmp0_ = GDK_WINDOW_EDGE_EAST; +#line 2853 "project.c" + } +#line 605 "project.vala" + model_track_trim (track, clip, delta, _tmp0_); +#line 2857 "project.c" + } + _g_object_unref0 (track); + _g_object_unref0 (clip); + } + _g_object_unref0 (_track_it); + } +#line 608 "project.vala" + model_undo_manager_end_transaction (self->undo_manager, description); +#line 610 "project.vala" + if (left) { +#line 610 "project.vala" + _tmp1_ = first_clip != NULL; +#line 2870 "project.c" + } else { +#line 610 "project.vala" + _tmp1_ = FALSE; +#line 2874 "project.c" + } +#line 610 "project.vala" + if (_tmp1_) { +#line 611 "project.vala" + model_project_transport_go (self, model_clip_get_start (first_clip)); +#line 2880 "project.c" + } + _g_free0 (description); + _g_object_unref0 (first_clip); +} + + +#line 615 "project.vala" +void model_project_transport_go (ModelProject* self, gint64 position) { +#line 615 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 616 "project.vala" + view_media_engine_go (self->media_engine, position); +#line 2893 "project.c" +} + + +#line 619 "project.vala" +gboolean model_project_transport_is_playing (ModelProject* self) { +#line 2899 "project.c" + gboolean result = FALSE; +#line 619 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 2903 "project.c" + result = self->media_engine->playing; +#line 620 "project.vala" + return result; +#line 2907 "project.c" +} + + +#line 623 "project.vala" +gboolean model_project_transport_is_recording (ModelProject* self) { +#line 2913 "project.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; +#line 623 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 624 "project.vala" + if (view_media_engine_get_play_state (self->media_engine) == PLAY_STATE_PRE_RECORD) { +#line 624 "project.vala" + _tmp0_ = TRUE; +#line 2922 "project.c" + } else { +#line 625 "project.vala" + _tmp0_ = view_media_engine_get_play_state (self->media_engine) == PLAY_STATE_RECORDING; +#line 2926 "project.c" + } + result = _tmp0_; +#line 624 "project.vala" + return result; +#line 2931 "project.c" +} + + +#line 628 "project.vala" +gboolean model_project_playhead_on_clip (ModelProject* self) { +#line 2937 "project.c" + gboolean result = FALSE; +#line 628 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 2941 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 629 "project.vala" + while (TRUE) { +#line 2947 "project.c" + ModelTrack* track; + ModelClip* _tmp0_; + gboolean _tmp1_; +#line 629 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 629 "project.vala" + break; +#line 2955 "project.c" + } +#line 629 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 630 "project.vala" + if ((_tmp1_ = (_tmp0_ = model_track_get_clip_by_position (track, model_project_transport_get_position (self))) != NULL, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 2961 "project.c" + result = TRUE; + _g_object_unref0 (track); + _g_object_unref0 (_track_it); +#line 631 "project.vala" + return result; +#line 2967 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = FALSE; +#line 634 "project.vala" + return result; +#line 2976 "project.c" +} + + +#line 637 "project.vala" +gboolean model_project_playhead_on_contiguous_clip (ModelProject* self) { +#line 2982 "project.c" + gboolean result = FALSE; +#line 637 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 2986 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 638 "project.vala" + while (TRUE) { +#line 2992 "project.c" + ModelTrack* track; +#line 638 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 638 "project.vala" + break; +#line 2998 "project.c" + } +#line 638 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 639 "project.vala" + if (model_track_are_contiguous_clips (track, model_project_transport_get_position (self))) { +#line 3004 "project.c" + result = TRUE; + _g_object_unref0 (track); + _g_object_unref0 (_track_it); +#line 640 "project.vala" + return result; +#line 3010 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = FALSE; +#line 643 "project.vala" + return result; +#line 3019 "project.c" +} + + +#line 646 "project.vala" +gboolean model_project_is_duplicate_track_name (ModelProject* self, ModelTrack* track, const char* new_name) { +#line 3025 "project.c" + gboolean result = FALSE; +#line 646 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 646 "project.vala" + g_return_val_if_fail ((track == NULL) || MODEL_IS_TRACK (track), FALSE); +#line 646 "project.vala" + g_return_val_if_fail (new_name != NULL, FALSE); +#line 647 "project.vala" + g_assert (_vala_strcmp0 (new_name, "") != 0); +#line 3035 "project.c" + { + GeeIterator* _this_track_it; + _this_track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 648 "project.vala" + while (TRUE) { +#line 3041 "project.c" + ModelTrack* this_track; +#line 648 "project.vala" + if (!gee_iterator_next (_this_track_it)) { +#line 648 "project.vala" + break; +#line 3047 "project.c" + } +#line 648 "project.vala" + this_track = (ModelTrack*) gee_iterator_get (_this_track_it); +#line 649 "project.vala" + if (track != this_track) { +#line 3053 "project.c" + char* _tmp0_; + gboolean _tmp1_; +#line 650 "project.vala" + if ((_tmp1_ = _vala_strcmp0 (_tmp0_ = model_track_get_display_name (this_track), new_name) == 0, _g_free0 (_tmp0_), _tmp1_)) { +#line 3058 "project.c" + result = TRUE; + _g_object_unref0 (this_track); + _g_object_unref0 (_this_track_it); +#line 651 "project.vala" + return result; +#line 3064 "project.c" + } + } + _g_object_unref0 (this_track); + } + _g_object_unref0 (_this_track_it); + } + { + GeeIterator* _this_track_it; + _this_track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks)); +#line 656 "project.vala" + while (TRUE) { +#line 3076 "project.c" + ModelTrack* this_track; +#line 656 "project.vala" + if (!gee_iterator_next (_this_track_it)) { +#line 656 "project.vala" + break; +#line 3082 "project.c" + } +#line 656 "project.vala" + this_track = (ModelTrack*) gee_iterator_get (_this_track_it); +#line 657 "project.vala" + if (track != this_track) { +#line 3088 "project.c" + char* _tmp2_; + gboolean _tmp3_; +#line 658 "project.vala" + if ((_tmp3_ = _vala_strcmp0 (_tmp2_ = model_track_get_display_name (this_track), new_name) == 0, _g_free0 (_tmp2_), _tmp3_)) { +#line 3093 "project.c" + result = TRUE; + _g_object_unref0 (this_track); + _g_object_unref0 (_this_track_it); +#line 659 "project.vala" + return result; +#line 3099 "project.c" + } + } + _g_object_unref0 (this_track); + } + _g_object_unref0 (_this_track_it); + } + result = FALSE; +#line 663 "project.vala" + return result; +#line 3109 "project.c" +} + + +#line 530 "project.vala" +static void _model_project_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self) { +#line 3115 "project.c" + model_project_on_clip_removed (self, _sender, clip); +} + + +#line 924 "project.vala" +static void _model_project_on_error_occurred_model_track_error_occurred (ModelTrack* _sender, const char* major_error, const char* minor_error, gpointer self) { +#line 3122 "project.c" + model_project_on_error_occurred (self, major_error, minor_error); +} + + +#line 666 "project.vala" +static void model_project_real_add_track (ModelProject* self, ModelTrack* track) { +#line 666 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 666 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 667 "project.vala" + g_signal_connect_object (track, "clip-removed", (GCallback) _model_project_on_clip_removed_model_track_clip_removed, self, 0); +#line 668 "project.vala" + g_signal_connect_object (track, "error-occurred", (GCallback) _model_project_on_error_occurred_model_track_error_occurred, self, 0); +#line 669 "project.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->tracks), track); +#line 670 "project.vala" + g_signal_emit_by_name (self, "track-added", track); +#line 3141 "project.c" +} + + +#line 666 "project.vala" +void model_project_add_track (ModelProject* self, ModelTrack* track) { +#line 666 "project.vala" + MODEL_PROJECT_GET_CLASS (self)->add_track (self, track); +#line 3149 "project.c" +} + + +#line 672 "project.vala" +static void model_project_real_insert_track (ModelProject* self, gint index, ModelTrack* track) { +#line 672 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 672 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 673 "project.vala" + if (0 > index) { +#line 673 "project.vala" + index = 0; +#line 3163 "project.c" + } +#line 674 "project.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->tracks)) <= index) { +#line 675 "project.vala" + model_project_add_track (self, track); +#line 3169 "project.c" + } else { +#line 678 "project.vala" + g_signal_connect_object (track, "clip-removed", (GCallback) _model_project_on_clip_removed_model_track_clip_removed, self, 0); +#line 679 "project.vala" + g_signal_connect_object (track, "error-occurred", (GCallback) _model_project_on_error_occurred_model_track_error_occurred, self, 0); +#line 680 "project.vala" + gee_abstract_list_insert (GEE_ABSTRACT_LIST (self->tracks), index, track); +#line 681 "project.vala" + g_signal_emit_by_name (self, "track-added", track); +#line 3179 "project.c" + } +} + + +#line 672 "project.vala" +void model_project_insert_track (ModelProject* self, gint index, ModelTrack* track) { +#line 672 "project.vala" + MODEL_PROJECT_GET_CLASS (self)->insert_track (self, index, track); +#line 3188 "project.c" +} + + +#line 685 "project.vala" +void model_project_add_inactive_track (ModelProject* self, ModelTrack* track) { +#line 685 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 685 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 686 "project.vala" + model_track_hide (track); +#line 687 "project.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->inactive_tracks), track); +#line 3202 "project.c" +} + + +#line 690 "project.vala" +void model_project_remove_track (ModelProject* self, ModelTrack* track) { +#line 690 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 690 "project.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 691 "project.vala" + gst_element_set_state (GST_ELEMENT (self->media_engine->pipeline), GST_STATE_NULL); +#line 692 "project.vala" + g_signal_emit_by_name (track, "track-removed", track); +#line 693 "project.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->tracks), track); +#line 694 "project.vala" + g_signal_emit_by_name (self, "track-removed", track); +#line 3220 "project.c" +} + + +#line 697 "project.vala" +void model_project_remove_track_at (ModelProject* self, gint index) { +#line 3226 "project.c" + ModelTrack* _tmp0_; +#line 697 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 698 "project.vala" + model_project_remove_track (self, _tmp0_ = (ModelTrack*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->tracks), index)); +#line 3232 "project.c" + _g_object_unref0 (_tmp0_); +} + + +#line 701 "project.vala" +void model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile) { +#line 3239 "project.c" + ModelCommand* command; +#line 701 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 701 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile)); +#line 702 "project.vala" + command = MODEL_COMMAND (model_add_clip_command_new (self, clipfile)); +#line 703 "project.vala" + model_project_do_command (self, command); +#line 3249 "project.c" + _model_command_unref0 (command); +} + + +#line 717 "project.vala" +static void _model_project_on_thumbnail_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self) { +#line 3256 "project.c" + model_project_on_thumbnail_ready (self, fetcher); +} + + +#line 706 "project.vala" +void _model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile, GError** error) { +#line 3263 "project.c" + GError * _inner_error_; + gboolean _tmp0_ = FALSE; +#line 706 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 706 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile)); +#line 3270 "project.c" + _inner_error_ = NULL; +#line 707 "project.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->clipfiles), clipfile); +#line 708 "project.vala" + if (model_clip_file_is_online (clipfile)) { +#line 708 "project.vala" + _tmp0_ = model_clip_file_is_of_type (clipfile, MODEL_MEDIA_TYPE_VIDEO); +#line 3278 "project.c" + } else { +#line 708 "project.vala" + _tmp0_ = FALSE; +#line 3282 "project.c" + } +#line 708 "project.vala" + if (_tmp0_) { +#line 3286 "project.c" + ModelThumbnailFetcher* fetcher; +#line 709 "project.vala" + fetcher = model_thumbnail_fetcher_new (clipfile, (gint64) 0, &_inner_error_); +#line 3290 "project.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 710 "project.vala" + g_signal_connect_object (MODEL_FETCHER (fetcher), "ready", (GCallback) _model_project_on_thumbnail_ready_model_fetcher_ready, self, 0); +#line 711 "project.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->pending_thumbs), fetcher); +#line 3299 "project.c" + _g_object_unref0 (fetcher); + } else { +#line 713 "project.vala" + g_signal_emit_by_name (self, "clipfile-added", clipfile); +#line 3304 "project.c" + } +} + + +#line 717 "project.vala" +static void model_project_on_thumbnail_ready (ModelProject* self, ModelFetcher* f) { +#line 3311 "project.c" + ModelFetcher* _tmp0_; +#line 717 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 717 "project.vala" + g_return_if_fail (MODEL_IS_FETCHER (f)); +#line 718 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_thumbnail_ready"); +#line 719 "project.vala" + g_signal_emit_by_name (self, "clipfile-added", f->clipfile); +#line 720 "project.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->pending_thumbs), (_tmp0_ = f, MODEL_IS_THUMBNAIL_FETCHER (_tmp0_) ? ((ModelThumbnailFetcher*) _tmp0_) : NULL)); +#line 3323 "project.c" +} + + +#line 723 "project.vala" +gboolean model_project_clipfile_on_track (ModelProject* self, const char* filename) { +#line 3329 "project.c" + gboolean result = FALSE; + ModelClipFile* cf; +#line 723 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 723 "project.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 724 "project.vala" + cf = model_project_find_clipfile (self, filename); +#line 3338 "project.c" + { + GeeIterator* _t_it; + _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 726 "project.vala" + while (TRUE) { +#line 3344 "project.c" + ModelTrack* t; +#line 726 "project.vala" + if (!gee_iterator_next (_t_it)) { +#line 726 "project.vala" + break; +#line 3350 "project.c" + } +#line 726 "project.vala" + t = (ModelTrack*) gee_iterator_get (_t_it); +#line 3354 "project.c" + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (t->clips)); +#line 727 "project.vala" + while (TRUE) { +#line 3360 "project.c" + ModelClip* c; +#line 727 "project.vala" + if (!gee_iterator_next (_c_it)) { +#line 727 "project.vala" + break; +#line 3366 "project.c" + } +#line 727 "project.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 728 "project.vala" + if (c->clipfile == cf) { +#line 3372 "project.c" + result = TRUE; + _g_object_unref0 (c); + _g_object_unref0 (_c_it); + _g_object_unref0 (t); + _g_object_unref0 (_t_it); + _g_object_unref0 (cf); +#line 729 "project.vala" + return result; +#line 3381 "project.c" + } + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } + _g_object_unref0 (t); + } + _g_object_unref0 (_t_it); + } + { + GeeIterator* _t_it; + _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks)); +#line 733 "project.vala" + while (TRUE) { +#line 3396 "project.c" + ModelTrack* t; +#line 733 "project.vala" + if (!gee_iterator_next (_t_it)) { +#line 733 "project.vala" + break; +#line 3402 "project.c" + } +#line 733 "project.vala" + t = (ModelTrack*) gee_iterator_get (_t_it); +#line 3406 "project.c" + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (t->clips)); +#line 734 "project.vala" + while (TRUE) { +#line 3412 "project.c" + ModelClip* c; +#line 734 "project.vala" + if (!gee_iterator_next (_c_it)) { +#line 734 "project.vala" + break; +#line 3418 "project.c" + } +#line 734 "project.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 735 "project.vala" + if (c->clipfile == cf) { +#line 3424 "project.c" + result = TRUE; + _g_object_unref0 (c); + _g_object_unref0 (_c_it); + _g_object_unref0 (t); + _g_object_unref0 (_t_it); + _g_object_unref0 (cf); +#line 736 "project.vala" + return result; +#line 3433 "project.c" + } + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } + _g_object_unref0 (t); + } + _g_object_unref0 (_t_it); + } + result = FALSE; + _g_object_unref0 (cf); +#line 740 "project.vala" + return result; +#line 3447 "project.c" +} + + +#line 743 "project.vala" +static void model_project_delete_clipfile_from_tracks (ModelProject* self, ModelClipFile* cf) { +#line 743 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 743 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (cf)); +#line 3457 "project.c" + { + GeeIterator* _t_it; + _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 744 "project.vala" + while (TRUE) { +#line 3463 "project.c" + ModelTrack* t; +#line 744 "project.vala" + if (!gee_iterator_next (_t_it)) { +#line 744 "project.vala" + break; +#line 3469 "project.c" + } +#line 744 "project.vala" + t = (ModelTrack*) gee_iterator_get (_t_it); +#line 3473 "project.c" + { + gint i; +#line 745 "project.vala" + i = 0; +#line 3478 "project.c" + { + gboolean _tmp0_; +#line 745 "project.vala" + _tmp0_ = TRUE; +#line 745 "project.vala" + while (TRUE) { +#line 3485 "project.c" + ModelClip* _tmp1_; + gboolean _tmp2_; +#line 745 "project.vala" + if (!_tmp0_) { +#line 745 "project.vala" + i++; +#line 3492 "project.c" + } +#line 745 "project.vala" + _tmp0_ = FALSE; +#line 745 "project.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (t->clips)))) { +#line 745 "project.vala" + break; +#line 3500 "project.c" + } +#line 746 "project.vala" + if ((_tmp2_ = (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i))->clipfile == cf, _g_object_unref0 (_tmp1_), _tmp2_)) { +#line 3504 "project.c" + ModelClip* _tmp3_; +#line 747 "project.vala" + model_track_delete_clip (t, _tmp3_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i)); +#line 3508 "project.c" + _g_object_unref0 (_tmp3_); +#line 748 "project.vala" + i--; +#line 3512 "project.c" + } + } + } + } + _g_object_unref0 (t); + } + _g_object_unref0 (_t_it); + } + { + GeeIterator* _t_it; + _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks)); +#line 753 "project.vala" + while (TRUE) { +#line 3526 "project.c" + ModelTrack* t; +#line 753 "project.vala" + if (!gee_iterator_next (_t_it)) { +#line 753 "project.vala" + break; +#line 3532 "project.c" + } +#line 753 "project.vala" + t = (ModelTrack*) gee_iterator_get (_t_it); +#line 3536 "project.c" + { + gint i; +#line 754 "project.vala" + i = 0; +#line 3541 "project.c" + { + gboolean _tmp4_; +#line 754 "project.vala" + _tmp4_ = TRUE; +#line 754 "project.vala" + while (TRUE) { +#line 3548 "project.c" + ModelClip* _tmp5_; + gboolean _tmp6_; +#line 754 "project.vala" + if (!_tmp4_) { +#line 754 "project.vala" + i++; +#line 3555 "project.c" + } +#line 754 "project.vala" + _tmp4_ = FALSE; +#line 754 "project.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (t->clips)))) { +#line 754 "project.vala" + break; +#line 3563 "project.c" + } +#line 755 "project.vala" + if ((_tmp6_ = (_tmp5_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i))->clipfile == cf, _g_object_unref0 (_tmp5_), _tmp6_)) { +#line 3567 "project.c" + ModelClip* _tmp7_; +#line 756 "project.vala" + model_track_delete_clip (t, _tmp7_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i)); +#line 3571 "project.c" + _g_object_unref0 (_tmp7_); +#line 757 "project.vala" + i--; +#line 3575 "project.c" + } + } + } + } + _g_object_unref0 (t); + } + _g_object_unref0 (_t_it); + } +} + + +#line 763 "project.vala" +void _model_project_remove_clipfile (ModelProject* self, ModelClipFile* cf) { +#line 763 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 763 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (cf)); +#line 764 "project.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->clipfiles), cf); +#line 765 "project.vala" + g_signal_emit_by_name (self, "clipfile-removed", cf); +#line 3597 "project.c" +} + + +#line 768 "project.vala" +void model_project_remove_clipfile (ModelProject* self, const char* filename) { +#line 3603 "project.c" + ModelClipFile* cf; +#line 768 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 768 "project.vala" + g_return_if_fail (filename != NULL); +#line 769 "project.vala" + cf = model_project_find_clipfile (self, filename); +#line 770 "project.vala" + if (cf != NULL) { +#line 3613 "project.c" + char* description; + ModelCommand* clipfile_delete; +#line 771 "project.vala" + description = g_strdup ("Delete From Library"); +#line 772 "project.vala" + model_undo_manager_start_transaction (self->undo_manager, description); +#line 774 "project.vala" + model_project_delete_clipfile_from_tracks (self, cf); +#line 776 "project.vala" + clipfile_delete = MODEL_COMMAND (model_clip_file_delete_command_new (self, cf)); +#line 777 "project.vala" + model_project_do_command (self, clipfile_delete); +#line 779 "project.vala" + model_undo_manager_end_transaction (self->undo_manager, description); +#line 3628 "project.c" + _g_free0 (description); + _model_command_unref0 (clipfile_delete); + } + _g_object_unref0 (cf); +} + + +#line 783 "project.vala" +ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename) { +#line 3638 "project.c" + ModelClipFile* result = NULL; +#line 783 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 783 "project.vala" + g_return_val_if_fail (filename != NULL, NULL); +#line 3644 "project.c" + { + GeeIterator* _cf_it; + _cf_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clipfiles)); +#line 784 "project.vala" + while (TRUE) { +#line 3650 "project.c" + ModelClipFile* cf; +#line 784 "project.vala" + if (!gee_iterator_next (_cf_it)) { +#line 784 "project.vala" + break; +#line 3656 "project.c" + } +#line 784 "project.vala" + cf = (ModelClipFile*) gee_iterator_get (_cf_it); +#line 785 "project.vala" + if (_vala_strcmp0 (cf->filename, filename) == 0) { +#line 3662 "project.c" + result = cf; + _g_object_unref0 (_cf_it); +#line 786 "project.vala" + return result; +#line 3667 "project.c" + } + _g_object_unref0 (cf); + } + _g_object_unref0 (_cf_it); + } + result = NULL; +#line 787 "project.vala" + return result; +#line 3676 "project.c" +} + + +#line 790 "project.vala" +void model_project_reseek (ModelProject* self) { +#line 790 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 790 "project.vala" + model_project_transport_go (self, model_project_transport_get_position (self)); +#line 3686 "project.c" +} + + +#line 792 "project.vala" +void model_project_go_start (ModelProject* self) { +#line 792 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 792 "project.vala" + model_project_transport_go (self, (gint64) 0); +#line 3696 "project.c" +} + + +#line 794 "project.vala" +void model_project_go_end (ModelProject* self) { +#line 794 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 794 "project.vala" + model_project_transport_go (self, model_project_get_length (self)); +#line 3706 "project.c" +} + + +#line 796 "project.vala" +void model_project_go_previous (ModelProject* self) { +#line 3712 "project.c" + gint64 start_pos; + gint64 new_position; +#line 796 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 797 "project.vala" + start_pos = model_project_transport_get_position (self); +#line 801 "project.vala" + if (model_project_transport_is_playing (self)) { +#line 802 "project.vala" + start_pos = start_pos - ((gint64) (1 * GST_SECOND)); +#line 3723 "project.c" + } +#line 804 "project.vala" + new_position = (gint64) 0; +#line 3727 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 805 "project.vala" + while (TRUE) { +#line 3733 "project.c" + ModelTrack* track; +#line 805 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 805 "project.vala" + break; +#line 3739 "project.c" + } +#line 805 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 806 "project.vala" + new_position = MAX (new_position, model_track_previous_edit (track, start_pos)); +#line 3745 "project.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 808 "project.vala" + model_project_transport_go (self, new_position); +#line 3752 "project.c" +} + + +#line 812 "project.vala" +void model_project_go_next (ModelProject* self) { +#line 3758 "project.c" + gint64 start_pos; + gint64 new_position; +#line 812 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 813 "project.vala" + start_pos = model_project_transport_get_position (self); +#line 814 "project.vala" + new_position = model_project_get_length (self); +#line 3767 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 815 "project.vala" + while (TRUE) { +#line 3773 "project.c" + ModelTrack* track; +#line 815 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 815 "project.vala" + break; +#line 3779 "project.c" + } +#line 815 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 816 "project.vala" + if (model_track_get_length (track) > start_pos) { +#line 817 "project.vala" + new_position = MIN (new_position, model_track_next_edit (track, start_pos)); +#line 3787 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 820 "project.vala" + model_project_transport_go (self, new_position); +#line 3795 "project.c" +} + + +#line 823 "project.vala" +gint64 model_project_transport_get_position (ModelProject* self) { +#line 3801 "project.c" + gint64 result = 0LL; +#line 823 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), 0LL); +#line 3805 "project.c" + result = self->media_engine->position; +#line 824 "project.vala" + return result; +#line 3809 "project.c" +} + + +#line 827 "project.vala" +void model_project_set_name (ModelProject* self, const char* filename) { +#line 827 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 828 "project.vala" + if (filename != NULL) { +#line 3819 "project.c" + char* _tmp0_; +#line 829 "project.vala" + self->project_file = (_tmp0_ = g_strdup (filename), _g_free0 (self->project_file), _tmp0_); +#line 3823 "project.c" + } +#line 831 "project.vala" + g_signal_emit_by_name (self, "name-changed", filename); +#line 3827 "project.c" +} + + +#line 834 "project.vala" +void model_project_set_default_framerate (ModelProject* self, Fraction* rate) { +#line 834 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 835 "project.vala" + self->default_framerate = *rate; +#line 3837 "project.c" +} + + +#line 1077 "glib-2.0.vapi" +static char* string_substring (const char* self, glong offset, glong len) { +#line 3843 "project.c" + char* result = NULL; + glong string_length; + const char* start; +#line 1077 "glib-2.0.vapi" + g_return_val_if_fail (self != NULL, NULL); +#line 1078 "glib-2.0.vapi" + string_length = g_utf8_strlen (self, -1); +#line 1079 "glib-2.0.vapi" + if (offset < 0) { +#line 1080 "glib-2.0.vapi" + offset = string_length + offset; +#line 1081 "glib-2.0.vapi" + g_return_val_if_fail (offset >= 0, NULL); +#line 3857 "project.c" + } else { +#line 1083 "glib-2.0.vapi" + g_return_val_if_fail (offset <= string_length, NULL); +#line 3861 "project.c" + } +#line 1085 "glib-2.0.vapi" + if (len < 0) { +#line 1086 "glib-2.0.vapi" + len = string_length - offset; +#line 3867 "project.c" + } +#line 1088 "glib-2.0.vapi" + g_return_val_if_fail ((offset + len) <= string_length, NULL); +#line 1089 "glib-2.0.vapi" + start = g_utf8_offset_to_pointer (self, offset); +#line 3873 "project.c" + result = g_strndup (start, ((gchar*) g_utf8_offset_to_pointer (start, len)) - ((gchar*) start)); +#line 1090 "glib-2.0.vapi" + return result; +#line 3877 "project.c" +} + + +static glong string_get_length (const char* self) { + glong result; + g_return_val_if_fail (self != NULL, 0L); + result = g_utf8_strlen (self, -1); +#line 1158 "glib-2.0.vapi" + return result; +#line 3887 "project.c" +} + + +#line 838 "project.vala" +char* model_project_get_file_display_name (ModelProject* self) { +#line 3893 "project.c" + char* result = NULL; + char* filename; +#line 838 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 839 "project.vala" + filename = model_project_get_project_file (self); +#line 840 "project.vala" + if (filename == NULL) { +#line 3902 "project.c" + char* _tmp0_; + char* _tmp1_; + result = (_tmp1_ = g_strdup_printf ("Unsaved Project - %s", _tmp0_ = model_project_get_app_name (self)), _g_free0 (_tmp0_), _tmp1_); + _g_free0 (filename); +#line 841 "project.vala" + return result; +#line 3909 "project.c" + } else { + char* dir; + char* name; + char* home_path; + char* _tmp5_; + char* _tmp6_; +#line 844 "project.vala" + dir = g_path_get_dirname (filename); +#line 845 "project.vala" + name = g_path_get_basename (filename); +#line 846 "project.vala" + home_path = g_strdup (g_get_home_dir ()); +#line 848 "project.vala" + if (_vala_strcmp0 (dir, ".") == 0) { +#line 3924 "project.c" + char* _tmp2_; +#line 849 "project.vala" + dir = (_tmp2_ = g_get_current_dir (), _g_free0 (dir), _tmp2_); +#line 3928 "project.c" + } +#line 851 "project.vala" + if (g_str_has_prefix (dir, home_path)) { +#line 3932 "project.c" + char* _tmp4_; + char* _tmp3_; +#line 852 "project.vala" + dir = (_tmp4_ = g_strconcat ("~", _tmp3_ = string_substring (dir, string_get_length (home_path), -1), NULL), _g_free0 (dir), _tmp4_); +#line 3937 "project.c" + _g_free0 (_tmp3_); + } + result = (_tmp6_ = g_strdup_printf ("%s (%s) - %s", name, dir, _tmp5_ = model_project_get_app_name (self)), _g_free0 (_tmp5_), _tmp6_); + _g_free0 (dir); + _g_free0 (name); + _g_free0 (home_path); + _g_free0 (filename); +#line 853 "project.vala" + return result; +#line 3947 "project.c" + _g_free0 (dir); + _g_free0 (name); + _g_free0 (home_path); + } + _g_free0 (filename); +} + + +#line 857 "project.vala" +void model_project_clear (ModelProject* self) { +#line 857 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 858 "project.vala" + view_media_engine_set_gst_state (self->media_engine, GST_STATE_NULL); +#line 3962 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 860 "project.vala" + while (TRUE) { +#line 3968 "project.c" + ModelTrack* track; +#line 860 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 860 "project.vala" + break; +#line 3974 "project.c" + } +#line 860 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 861 "project.vala" + model_track_delete_all_clips (track); +#line 862 "project.vala" + g_signal_emit_by_name (track, "track-removed", track); +#line 863 "project.vala" + g_signal_emit_by_name (self, "track-removed", track); +#line 3984 "project.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 866 "project.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 868 "project.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->clipfiles)); +#line 869 "project.vala" + model_project_set_name (self, NULL); +#line 870 "project.vala" + g_signal_emit_by_name (self, "cleared"); +#line 3997 "project.c" +} + + +#line 873 "project.vala" +gboolean model_project_can_export (ModelProject* self) { +#line 4003 "project.c" + gboolean result = FALSE; +#line 873 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 874 "project.vala" + if (view_media_engine_get_play_state (self->media_engine) != PLAY_STATE_STOPPED) { +#line 4009 "project.c" + result = FALSE; +#line 875 "project.vala" + return result; +#line 4013 "project.c" + } + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 877 "project.vala" + while (TRUE) { +#line 4020 "project.c" + ModelTrack* track; +#line 877 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 877 "project.vala" + break; +#line 4026 "project.c" + } +#line 877 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 878 "project.vala" + if (model_track_get_length (track) > 0) { +#line 4032 "project.c" + result = TRUE; + _g_object_unref0 (track); + _g_object_unref0 (_track_it); +#line 879 "project.vala" + return result; +#line 4038 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = FALSE; +#line 882 "project.vala" + return result; +#line 4047 "project.c" +} + + +#line 885 "project.vala" +void model_project_on_load_started (ModelProject* self, const char* filename) { +#line 4053 "project.c" + char* _tmp0_; +#line 885 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 885 "project.vala" + g_return_if_fail (filename != NULL); +#line 886 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_started"); +#line 887 "project.vala" + self->project_file = (_tmp0_ = g_strdup (filename), _g_free0 (self->project_file), _tmp0_); +#line 4063 "project.c" +} + + +#line 890 "project.vala" +static void model_project_on_load_error (ModelProject* self, const char* _error_) { +#line 890 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 890 "project.vala" + g_return_if_fail (_error_ != NULL); +#line 891 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_error"); +#line 892 "project.vala" + g_signal_emit_by_name (self, "load-error", _error_); +#line 4077 "project.c" +} + + +#line 895 "project.vala" +static void model_project_on_load_complete (ModelProject* self) { +#line 895 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 896 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_complete"); +#line 897 "project.vala" + model_undo_manager_reset (self->undo_manager); +#line 898 "project.vala" + model_project_set_name (self, self->project_file); +#line 899 "project.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 4093 "project.c" +} + + +#line 885 "project.vala" +static void _model_project_on_load_started_model_project_loader_load_started (ModelProjectLoader* _sender, const char* filename, gpointer self) { +#line 4099 "project.c" + model_project_on_load_started (self, filename); +} + + +#line 890 "project.vala" +static void _model_project_on_load_error_model_project_loader_load_error (ModelProjectLoader* _sender, const char* _error_, gpointer self) { +#line 4106 "project.c" + model_project_on_load_error (self, _error_); +} + + +#line 895 "project.vala" +static void _model_project_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self) { +#line 4113 "project.c" + model_project_on_load_complete (self); +} + + +#line 1041 "MediaEngine.vala" +static void _view_media_engine_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self) { +#line 4120 "project.c" + view_media_engine_on_load_complete (self); +} + + +#line 905 "project.vala" +static void model_project_real_load (ModelProject* self, const char* fname) { +#line 4127 "project.c" + ModelProjectLoader* _tmp1_; + ModelMediaLoaderHandler* _tmp0_; +#line 905 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 906 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_INFO, "loading project"); +#line 907 "project.vala" + model_project_clear (self); +#line 908 "project.vala" + model_project_set_name (self, NULL); +#line 909 "project.vala" + if (fname == NULL) { +#line 910 "project.vala" + return; +#line 4142 "project.c" + } +#line 913 "project.vala" + self->loader = (_tmp1_ = model_project_loader_new (MODEL_LOADER_HANDLER (_tmp0_ = model_media_loader_handler_new (self)), fname), _g_object_unref0 (self->loader), _tmp1_); +#line 4146 "project.c" + _g_object_unref0 (_tmp0_); +#line 915 "project.vala" + g_signal_connect_object (self->loader, "load-started", (GCallback) _model_project_on_load_started_model_project_loader_load_started, self, 0); +#line 916 "project.vala" + g_signal_connect_object (self->loader, "load-error", (GCallback) _model_project_on_load_error_model_project_loader_load_error, self, 0); +#line 917 "project.vala" + g_signal_connect_object (self->loader, "load-complete", (GCallback) _model_project_on_load_complete_model_project_loader_load_complete, self, 0); +#line 918 "project.vala" + g_signal_connect_object (self->loader, "load-complete", (GCallback) _view_media_engine_on_load_complete_model_project_loader_load_complete, self->media_engine, 0); +#line 919 "project.vala" + view_media_engine_set_play_state (self->media_engine, PLAY_STATE_LOADING); +#line 920 "project.vala" + gst_element_set_state (GST_ELEMENT (self->media_engine->pipeline), GST_STATE_NULL); +#line 921 "project.vala" + model_project_loader_load (self->loader); +#line 4162 "project.c" +} + + +#line 905 "project.vala" +void model_project_load (ModelProject* self, const char* fname) { +#line 905 "project.vala" + MODEL_PROJECT_GET_CLASS (self)->load (self, fname); +#line 4170 "project.c" +} + + +#line 924 "project.vala" +void model_project_on_error_occurred (ModelProject* self, const char* major_error, const char* minor_error) { +#line 924 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 924 "project.vala" + g_return_if_fail (major_error != NULL); +#line 925 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error_occurred"); +#line 926 "project.vala" + g_signal_emit_by_name (self, "error-occurred", major_error, minor_error); +#line 4184 "project.c" +} + + +#line 929 "project.vala" +gint model_project_get_file_version (ModelProject* self) { +#line 4190 "project.c" + gint result = 0; +#line 929 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), 0); +#line 4194 "project.c" + result = 4; +#line 930 "project.vala" + return result; +#line 4198 "project.c" +} + + +#line 933 "project.vala" +void model_project_save_library (ModelProject* self, FILE* f) { +#line 4204 "project.c" + Fraction r; +#line 933 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 933 "project.vala" + g_return_if_fail (f != NULL); +#line 934 "project.vala" + fprintf (f, " default_framerate; +#line 4214 "project.c" + { + GeeIterator* _t_it; + _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 938 "project.vala" + while (TRUE) { +#line 4220 "project.c" + ModelTrack* t; +#line 938 "project.vala" + if (!gee_iterator_next (_t_it)) { +#line 938 "project.vala" + break; +#line 4226 "project.c" + } +#line 938 "project.vala" + t = (ModelTrack*) gee_iterator_get (_t_it); +#line 939 "project.vala" + if (model_track_media_type (t) == MODEL_MEDIA_TYPE_VIDEO) { +#line 4232 "project.c" + ModelTrack* _tmp0_; + ModelVideoTrack* video_track; +#line 940 "project.vala" + video_track = _g_object_ref0 ((_tmp0_ = t, MODEL_IS_VIDEO_TRACK (_tmp0_) ? ((ModelVideoTrack*) _tmp0_) : NULL)); +#line 941 "project.vala" + if (model_video_track_get_framerate (video_track, &r)) { +#line 4239 "project.c" + _g_object_unref0 (video_track); + _g_object_unref0 (t); +#line 942 "project.vala" + break; +#line 4244 "project.c" + } + _g_object_unref0 (video_track); + } + _g_object_unref0 (t); + } + _g_object_unref0 (_t_it); + } +#line 945 "project.vala" + if (!fraction_equal (&r, &model_project_INVALID_FRAME_RATE)) { +#line 946 "project.vala" + fprintf (f, " framerate=\"%d/%d\"", r.numerator, r.denominator); +#line 4256 "project.c" + } +#line 948 "project.vala" + fprintf (f, ">\n"); +#line 4260 "project.c" + { + gint i; +#line 950 "project.vala" + i = 0; +#line 4265 "project.c" + { + gboolean _tmp1_; +#line 950 "project.vala" + _tmp1_ = TRUE; +#line 950 "project.vala" + while (TRUE) { +#line 4272 "project.c" + ModelClipFile* _tmp2_; +#line 950 "project.vala" + if (!_tmp1_) { +#line 950 "project.vala" + i++; +#line 4278 "project.c" + } +#line 950 "project.vala" + _tmp1_ = FALSE; +#line 950 "project.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clipfiles)))) { +#line 950 "project.vala" + break; +#line 4286 "project.c" + } +#line 951 "project.vala" + fprintf (f, " \n", (_tmp2_ = (ModelClipFile*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clipfiles), i))->filename, i); +#line 4290 "project.c" + _g_object_unref0 (_tmp2_); + } + } + } +#line 954 "project.vala" + fprintf (f, " \n"); +#line 4297 "project.c" +} + + +#line 957 "project.vala" +static void model_project_real_save (ModelProject* self, const char* filename) { +#line 4303 "project.c" + FILE* f; + const char* _tmp1_; + const char* _tmp2_; + const char* _tmp3_; + char* _tmp4_; +#line 957 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 958 "project.vala" + if (filename != NULL) { +#line 959 "project.vala" + model_project_set_name (self, filename); +#line 4315 "project.c" + } +#line 962 "project.vala" + f = fopen (self->project_file, "w"); +#line 963 "project.vala" + if (f == NULL) { +#line 4321 "project.c" + char* _tmp0_; +#line 964 "project.vala" + g_signal_emit_by_name (self, "error-occurred", "Could not save project", _tmp0_ = g_strdup_printf ("%s: %s", self->project_file, g_strerror (errno))); +#line 4325 "project.c" + _g_free0 (_tmp0_); + _fclose0 (f); +#line 966 "project.vala" + return; +#line 4330 "project.c" + } +#line 968 "project.vala" + fprintf (f, "\n", model_project_get_file_version (self)); +#line 970 "project.vala" + model_project_save_library (self, f); +#line 972 "project.vala" + fprintf (f, " \n"); +#line 4338 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 973 "project.vala" + while (TRUE) { +#line 4344 "project.c" + ModelTrack* track; +#line 973 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 973 "project.vala" + break; +#line 4350 "project.c" + } +#line 973 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 974 "project.vala" + model_track_save (track, f); +#line 4356 "project.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks)); +#line 977 "project.vala" + while (TRUE) { +#line 4366 "project.c" + ModelTrack* track; +#line 977 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 977 "project.vala" + break; +#line 4372 "project.c" + } +#line 977 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 978 "project.vala" + model_track_save (track, f); +#line 4378 "project.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 980 "project.vala" + fprintf (f, " \n"); +#line 981 "project.vala" + fprintf (f, " \n"); +#line 4387 "project.c" + _tmp1_ = NULL; +#line 983 "project.vala" + if (self->click_during_play) { +#line 983 "project.vala" + _tmp1_ = "true"; +#line 4393 "project.c" + } else { +#line 983 "project.vala" + _tmp1_ = "false"; +#line 4397 "project.c" + } + _tmp2_ = NULL; +#line 984 "project.vala" + if (self->click_during_record) { +#line 984 "project.vala" + _tmp2_ = "true"; +#line 4404 "project.c" + } else { +#line 984 "project.vala" + _tmp2_ = "false"; +#line 4408 "project.c" + } +#line 982 "project.vala" + fprintf (f, " \n", _tmp1_, _tmp2_, self->click_volume); +#line 4412 "project.c" + _tmp3_ = NULL; +#line 987 "project.vala" + if (self->library_visible) { +#line 987 "project.vala" + _tmp3_ = "true"; +#line 4418 "project.c" + } else { +#line 987 "project.vala" + _tmp3_ = "false"; +#line 4422 "project.c" + } +#line 986 "project.vala" + fprintf (f, " \n", self->library_width, _tmp3_); +#line 988 "project.vala" + fprintf (f, " \n"); +#line 989 "project.vala" + fprintf (f, " \n"); +#line 990 "project.vala" + fprintf (f, " \n"); +#line 991 "project.vala" + fprintf (f, " \n", self->priv->tempo); +#line 992 "project.vala" + fprintf (f, " \n"); +#line 993 "project.vala" + fprintf (f, " \n"); +#line 994 "project.vala" + fprintf (f, " \n", _tmp4_ = fraction_to_string (&self->priv->time_signature)); +#line 4440 "project.c" + _g_free0 (_tmp4_); +#line 995 "project.vala" + fprintf (f, " \n"); +#line 996 "project.vala" + fprintf (f, " \n"); +#line 998 "project.vala" + fprintf (f, "\n"); +#line 999 "project.vala" + fflush (f); +#line 1002 "project.vala" + model_undo_manager_mark_clean (self->undo_manager); +#line 4452 "project.c" + _fclose0 (f); +} + + +#line 957 "project.vala" +void model_project_save (ModelProject* self, const char* filename) { +#line 957 "project.vala" + MODEL_PROJECT_GET_CLASS (self)->save (self, filename); +#line 4461 "project.c" +} + + +#line 1005 "project.vala" +void model_project_close (ModelProject* self) { +#line 1005 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1006 "project.vala" + view_media_engine_close (self->media_engine); +#line 4471 "project.c" +} + + +#line 1009 "project.vala" +void model_project_on_importer_clip_complete (ModelProject* self, ModelClipFetcher* fetcher) { +#line 1009 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1009 "project.vala" + g_return_if_fail (MODEL_IS_CLIP_FETCHER (fetcher)); +#line 1010 "project.vala" + if (MODEL_FETCHER (fetcher)->error_string != NULL) { +#line 1011 "project.vala" + g_signal_emit_by_name (self, "error-occurred", "Error importing clip", MODEL_FETCHER (fetcher)->error_string); +#line 4485 "project.c" + } else { +#line 1013 "project.vala" + model_fetcher_completion_complete (self->priv->fetcher_completion, MODEL_FETCHER (fetcher)); +#line 4489 "project.c" + } +} + + +static gpointer _model_fetcher_completion_ref0 (gpointer self) { + return self ? model_fetcher_completion_ref (self) : NULL; +} + + +#line 1026 "project.vala" +static void _model_project_on_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self) { +#line 4501 "project.c" + model_project_on_fetcher_ready (self, fetcher); +} + + +#line 1017 "project.vala" +void model_project_create_clip_fetcher (ModelProject* self, ModelFetcherCompletion* fetcher_completion, const char* filename, GError** error) { +#line 4508 "project.c" + GError * _inner_error_; + ModelClipFetcher* fetcher; + ModelFetcherCompletion* _tmp0_; +#line 1017 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1017 "project.vala" + g_return_if_fail (MODEL_IS_FETCHER_COMPLETION (fetcher_completion)); +#line 1017 "project.vala" + g_return_if_fail (filename != NULL); +#line 4518 "project.c" + _inner_error_ = NULL; +#line 1019 "project.vala" + fetcher = model_clip_fetcher_new (filename, &_inner_error_); +#line 4522 "project.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 1020 "project.vala" + self->priv->fetcher_completion = (_tmp0_ = _model_fetcher_completion_ref0 (fetcher_completion), _model_fetcher_completion_unref0 (self->priv->fetcher_completion), _tmp0_); +#line 1021 "project.vala" + g_signal_connect_object (MODEL_FETCHER (fetcher), "ready", (GCallback) _model_project_on_fetcher_ready_model_fetcher_ready, self, 0); +#line 1022 "project.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->pending), fetcher); +#line 4533 "project.c" + _g_object_unref0 (fetcher); +} + + +#line 1026 "project.vala" +static void model_project_on_fetcher_ready (ModelProject* self, ModelFetcher* fetcher) { +#line 4540 "project.c" + ModelFetcher* _tmp0_; +#line 1026 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1026 "project.vala" + g_return_if_fail (MODEL_IS_FETCHER (fetcher)); +#line 1027 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_fetcher_ready"); +#line 1028 "project.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->pending), (_tmp0_ = fetcher, MODEL_IS_CLIP_FETCHER (_tmp0_) ? ((ModelClipFetcher*) _tmp0_) : NULL)); +#line 1029 "project.vala" + if (fetcher->error_string != NULL) { +#line 1030 "project.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_DEVELOPER_WARNINGS, LOGGING_LEVEL_INFO, fetcher->error_string); +#line 1031 "project.vala" + g_signal_emit_by_name (self, "error-occurred", "Error retrieving clip", fetcher->error_string); +#line 4556 "project.c" + } else { +#line 1033 "project.vala" + if (model_project_get_clipfile_index (self, fetcher->clipfile) == (-1)) { +#line 1034 "project.vala" + model_project_add_clipfile (self, fetcher->clipfile); +#line 4562 "project.c" + } +#line 1036 "project.vala" + model_fetcher_completion_complete (self->priv->fetcher_completion, fetcher); +#line 4566 "project.c" + } +} + + +#line 1040 "project.vala" +gboolean model_project_is_project_extension (ModelProject* self, const char* filename) { +#line 4573 "project.c" + gboolean result = FALSE; + char* extension; + gboolean _tmp0_ = FALSE; +#line 1040 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE); +#line 1040 "project.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 1041 "project.vala" + extension = get_file_extension (filename); +#line 1042 "project.vala" + if (_vala_strcmp0 (extension, MODEL_PROJECT_LOMBARD_FILE_EXTENSION) == 0) { +#line 1042 "project.vala" + _tmp0_ = TRUE; +#line 4587 "project.c" + } else { +#line 1042 "project.vala" + _tmp0_ = _vala_strcmp0 (extension, MODEL_PROJECT_FILLMORE_FILE_EXTENSION) == 0; +#line 4591 "project.c" + } + result = _tmp0_; + _g_free0 (extension); +#line 1042 "project.vala" + return result; +#line 4597 "project.c" +} + + +#line 1045 "project.vala" +void model_project_do_command (ModelProject* self, ModelCommand* the_command) { +#line 1045 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1045 "project.vala" + g_return_if_fail (MODEL_IS_COMMAND (the_command)); +#line 1046 "project.vala" + model_undo_manager_do_command (self->undo_manager, the_command); +#line 4609 "project.c" +} + + +#line 1049 "project.vala" +void model_project_undo (ModelProject* self) { +#line 1049 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1050 "project.vala" + model_undo_manager_undo (self->undo_manager); +#line 4619 "project.c" +} + + +#line 1053 "project.vala" +static void model_project_ClearTrackMeters (ModelProject* self) { +#line 1053 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 4627 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 1054 "project.vala" + while (TRUE) { +#line 4633 "project.c" + ModelTrack* track; + ModelTrack* _tmp0_; + ModelAudioTrack* audio_track; +#line 1054 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 1054 "project.vala" + break; +#line 4641 "project.c" + } +#line 1054 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 1055 "project.vala" + audio_track = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL)); +#line 1056 "project.vala" + if (audio_track != NULL) { +#line 1057 "project.vala" + g_signal_emit_by_name (audio_track, "level-changed", (double) (-100), (double) (-100)); +#line 4651 "project.c" + } + _g_object_unref0 (track); + _g_object_unref0 (audio_track); + } + _g_object_unref0 (_track_it); + } +} + + +#line 1062 "project.vala" +void model_project_create_clip_importer (ModelProject* self, ModelTrack* track, gboolean timeline_add, gint64 time_to_add, gboolean both_tracks, GtkWindow* progress_window_parent, gint number) { +#line 1062 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1062 "project.vala" + g_return_if_fail ((track == NULL) || MODEL_IS_TRACK (track)); +#line 1062 "project.vala" + g_return_if_fail ((progress_window_parent == NULL) || GTK_IS_WINDOW (progress_window_parent)); +#line 1064 "project.vala" + if (timeline_add) { +#line 4671 "project.c" + ModelLibraryImporter* _tmp0_; +#line 1065 "project.vala" + g_assert (track != NULL); +#line 1066 "project.vala" + self->importer = (_tmp0_ = MODEL_LIBRARY_IMPORTER (model_timeline_importer_new (track, self, time_to_add, both_tracks)), _g_object_unref0 (self->importer), _tmp0_); +#line 4677 "project.c" + } else { + ModelLibraryImporter* _tmp1_; +#line 1068 "project.vala" + self->importer = (_tmp1_ = model_library_importer_new (self), _g_object_unref0 (self->importer), _tmp1_); +#line 4682 "project.c" + } +#line 1070 "project.vala" + if (progress_window_parent != NULL) { +#line 4686 "project.c" + MultiFileProgress* _tmp2_; +#line 1071 "project.vala" + _tmp2_ = g_object_ref_sink (multi_file_progress_new (progress_window_parent, number, "Import", MULTI_FILE_PROGRESS_INTERFACE (self->importer->importer))); +#line 4690 "project.c" + _g_object_unref0 (_tmp2_); + } +} + + +#line 1077 "project.vala" +char* model_project_get_version (ModelProject* self) { +#line 4698 "project.c" + char* result = NULL; +#line 1077 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 4702 "project.c" + result = g_strdup (_VERSION); +#line 1078 "project.vala" + return result; +#line 4706 "project.c" +} + + +#line 1081 "project.vala" +static char* model_project_real_get_app_name (ModelProject* self) { +#line 4712 "project.c" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); + g_critical ("Type `%s' does not implement abstract method `model_project_get_app_name'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return NULL; +} + + +#line 1081 "project.vala" +char* model_project_get_app_name (ModelProject* self) { +#line 1081 "project.vala" + return MODEL_PROJECT_GET_CLASS (self)->get_app_name (self); +#line 4723 "project.c" +} + + +#line 1083 "project.vala" +char* model_project_get_license (ModelProject* self) { +#line 4729 "project.c" + char* result = NULL; + char* _tmp2_; + char* _tmp1_; + char* _tmp0_; + char* _tmp3_; +#line 1083 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 4737 "project.c" + result = (_tmp3_ = g_strdup_printf (MODEL_PROJECT_license, _tmp0_ = model_project_get_app_name (self), _tmp1_ = model_project_get_app_name (self), _tmp2_ = model_project_get_app_name (self)), _g_free0 (_tmp2_), _g_free0 (_tmp1_), _g_free0 (_tmp0_), _tmp3_); +#line 1084 "project.vala" + return result; +#line 4741 "project.c" +} + + +#line 1087 "project.vala" +void model_project_set_time_signature (ModelProject* self, Fraction* time_signature) { +#line 4747 "project.c" + ModelTimeSignatureCommand* command; +#line 1087 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1088 "project.vala" + command = model_time_signature_command_new (self, time_signature); +#line 1089 "project.vala" + model_undo_manager_do_command (self->undo_manager, MODEL_COMMAND (command)); +#line 4755 "project.c" + _model_command_unref0 (command); +} + + +#line 1092 "project.vala" +void _model_project_set_time_signature (ModelProject* self, Fraction* time_signature) { +#line 1092 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1093 "project.vala" + self->priv->time_signature = *time_signature; +#line 1094 "project.vala" + g_signal_emit_by_name (MODEL_TEMPO_INFORMATION (self), "time-signature-changed", time_signature); +#line 4768 "project.c" +} + + +#line 1097 "project.vala" +static void model_project_real_get_time_signature (ModelTempoInformation* base, Fraction* result) { +#line 4774 "project.c" + ModelProject * self; + self = MODEL_PROJECT (base); + *result = self->priv->time_signature; +#line 1098 "project.vala" + return; +#line 4780 "project.c" +} + + +#line 1101 "project.vala" +void model_project_set_bpm (ModelProject* self, gint bpm) { +#line 4786 "project.c" + ModelBpmCommand* command; +#line 1101 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1102 "project.vala" + command = model_bpm_command_new (self, bpm); +#line 1103 "project.vala" + model_undo_manager_do_command (self->undo_manager, MODEL_COMMAND (command)); +#line 4794 "project.c" + _model_command_unref0 (command); +} + + +#line 1106 "project.vala" +void _model_project_set_bpm (ModelProject* self, gint bpm) { +#line 1106 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 1107 "project.vala" + self->priv->tempo = bpm; +#line 1108 "project.vala" + g_signal_emit_by_name (MODEL_TEMPO_INFORMATION (self), "bpm-changed", bpm); +#line 4807 "project.c" +} + + +#line 1111 "project.vala" +static gint model_project_real_get_bpm (ModelTempoInformation* base) { +#line 4813 "project.c" + ModelProject * self; + gint result = 0; + self = MODEL_PROJECT (base); + result = self->priv->tempo; +#line 1112 "project.vala" + return result; +#line 4820 "project.c" +} + + +#line 1115 "project.vala" +char* model_project_get_audio_path (ModelProject* self) { +#line 4826 "project.c" + char* result = NULL; + char* path; + char* _tmp0_; +#line 1115 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 1116 "project.vala" + path = model_project_get_path (self); +#line 4834 "project.c" + _tmp0_ = NULL; +#line 1117 "project.vala" + if (path == NULL) { +#line 4838 "project.c" + char* _tmp1_; +#line 1117 "project.vala" + _tmp0_ = (_tmp1_ = NULL, _g_free0 (_tmp0_), _tmp1_); +#line 4842 "project.c" + } else { + char* _tmp2_; +#line 1117 "project.vala" + _tmp0_ = (_tmp2_ = g_build_filename (path, "audio files", NULL), _g_free0 (_tmp0_), _tmp2_); +#line 4847 "project.c" + } + result = _tmp0_; + _g_free0 (path); +#line 1117 "project.vala" + return result; +#line 4853 "project.c" +} + + +#line 1120 "project.vala" +static char* model_project_get_path (ModelProject* self) { +#line 4859 "project.c" + char* result = NULL; + char* _tmp0_; +#line 1120 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 4864 "project.c" + _tmp0_ = NULL; +#line 1121 "project.vala" + if (self->project_file == NULL) { +#line 4868 "project.c" + char* _tmp1_; +#line 1121 "project.vala" + _tmp0_ = (_tmp1_ = NULL, _g_free0 (_tmp0_), _tmp1_); +#line 4872 "project.c" + } else { + char* _tmp2_; +#line 1121 "project.vala" + _tmp0_ = (_tmp2_ = g_path_get_dirname (self->project_file), _g_free0 (_tmp0_), _tmp2_); +#line 4877 "project.c" + } + result = _tmp0_; +#line 1121 "project.vala" + return result; +#line 4882 "project.c" +} + + +#line 1124 "project.vala" +ModelVideoTrack* model_project_find_video_track (ModelProject* self) { +#line 4888 "project.c" + ModelVideoTrack* result = NULL; +#line 1124 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 4892 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 1125 "project.vala" + while (TRUE) { +#line 4898 "project.c" + ModelTrack* track; +#line 1125 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 1125 "project.vala" + break; +#line 4904 "project.c" + } +#line 1125 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 1126 "project.vala" + if (MODEL_IS_VIDEO_TRACK (track)) { +#line 4910 "project.c" + ModelTrack* _tmp0_; + result = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_VIDEO_TRACK (_tmp0_) ? ((ModelVideoTrack*) _tmp0_) : NULL)); + _g_object_unref0 (track); + _g_object_unref0 (_track_it); +#line 1127 "project.vala" + return result; +#line 4917 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = NULL; +#line 1130 "project.vala" + return result; +#line 4926 "project.c" +} + + +#line 1133 "project.vala" +ModelAudioTrack* model_project_find_audio_track (ModelProject* self) { +#line 4932 "project.c" + ModelAudioTrack* result = NULL; +#line 1133 "project.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL); +#line 4936 "project.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 1134 "project.vala" + while (TRUE) { +#line 4942 "project.c" + ModelTrack* track; +#line 1134 "project.vala" + if (!gee_iterator_next (_track_it)) { +#line 1134 "project.vala" + break; +#line 4948 "project.c" + } +#line 1134 "project.vala" + track = (ModelTrack*) gee_iterator_get (_track_it); +#line 1135 "project.vala" + if (MODEL_IS_AUDIO_TRACK (track)) { +#line 4954 "project.c" + ModelTrack* _tmp0_; + result = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL)); + _g_object_unref0 (track); + _g_object_unref0 (_track_it); +#line 1136 "project.vala" + return result; +#line 4961 "project.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = NULL; +#line 1139 "project.vala" + return result; +#line 4970 "project.c" +} + + +#line 370 "project.vala" +static void model_project_real_load_complete (ModelProject* self) { +#line 370 "project.vala" + g_return_if_fail (MODEL_IS_PROJECT (self)); +#line 4978 "project.c" +} + + +static void model_project_class_init (ModelProjectClass * klass) { + Fraction _tmp1_ = {0}; + model_project_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelProjectPrivate)); + MODEL_PROJECT_CLASS (klass)->get_clip_time = model_project_real_get_clip_time; + MODEL_PROJECT_CLASS (klass)->get_project_file = model_project_real_get_project_file; + MODEL_PROJECT_CLASS (klass)->do_append = model_project_real_do_append; + MODEL_PROJECT_CLASS (klass)->add_track = model_project_real_add_track; + MODEL_PROJECT_CLASS (klass)->insert_track = model_project_real_insert_track; + MODEL_PROJECT_CLASS (klass)->load = model_project_real_load; + MODEL_PROJECT_CLASS (klass)->save = model_project_real_save; + MODEL_PROJECT_CLASS (klass)->get_app_name = model_project_real_get_app_name; + MODEL_PROJECT_CLASS (klass)->load_complete = model_project_real_load_complete; + G_OBJECT_CLASS (klass)->finalize = model_project_finalize; + g_signal_new ("playstate_changed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__ENUM, G_TYPE_NONE, 1, TYPE_PLAY_STATE); + g_signal_new ("name_changed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + g_signal_new ("load_error", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + g_signal_new ("load_complete", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ModelProjectClass, load_complete), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("closed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("track_added", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK); + g_signal_new ("track_removed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK); + g_signal_new ("error_occurred", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); + g_signal_new ("clipfile_added", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP_FILE); + g_signal_new ("clipfile_removed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP_FILE); + g_signal_new ("cleared", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + model_project_INVALID_FRAME_RATE = (fraction_init (&_tmp1_, -1, 1), _tmp1_); +} + + +static void model_project_model_tempo_information_interface_init (ModelTempoInformationIface * iface) { + model_project_model_tempo_information_parent_iface = g_type_interface_peek_parent (iface); + iface->get_time_signature = model_project_real_get_time_signature; + iface->get_bpm = model_project_real_get_bpm; +} + + +static void model_project_instance_init (ModelProject * self) { + Fraction _tmp0_ = {0}; + self->priv = MODEL_PROJECT_GET_PRIVATE (self); + self->tracks = gee_array_list_new (MODEL_TYPE_TRACK, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); + self->inactive_tracks = gee_array_list_new (MODEL_TYPE_TRACK, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); + self->priv->pending = gee_hash_set_new (MODEL_TYPE_CLIP_FETCHER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL); + self->priv->pending_thumbs = gee_array_list_new (MODEL_TYPE_THUMBNAIL_FETCHER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); + self->clipfiles = gee_array_list_new (MODEL_TYPE_CLIP_FILE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); + self->priv->tempo = 120; + self->priv->time_signature = (fraction_init (&_tmp0_, 4, 4), _tmp0_); + self->click_during_play = FALSE; + self->click_during_record = TRUE; + self->click_volume = 0.8; + self->library_visible = TRUE; + self->library_width = 600; +} + + +static void model_project_finalize (GObject* obj) { + ModelProject * self; + self = MODEL_PROJECT (obj); + _g_object_unref0 (self->tracks); + _g_object_unref0 (self->inactive_tracks); + _g_object_unref0 (self->priv->pending); + _g_object_unref0 (self->priv->pending_thumbs); + _g_object_unref0 (self->clipfiles); + _g_object_unref0 (self->media_engine); + _g_free0 (self->project_file); + _g_object_unref0 (self->loader); + _model_fetcher_completion_unref0 (self->priv->fetcher_completion); + _model_undo_manager_unref0 (self->undo_manager); + _g_object_unref0 (self->importer); + G_OBJECT_CLASS (model_project_parent_class)->finalize (obj); +} + + +GType model_project_get_type (void) { + static volatile gsize model_project_type_id__volatile = 0; + if (g_once_init_enter (&model_project_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelProjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProject), 0, (GInstanceInitFunc) model_project_instance_init, NULL }; + static const GInterfaceInfo model_tempo_information_info = { (GInterfaceInitFunc) model_project_model_tempo_information_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType model_project_type_id; + model_project_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProject", &g_define_type_info, G_TYPE_FLAG_ABSTRACT); + g_type_add_interface_static (model_project_type_id, MODEL_TYPE_TEMPO_INFORMATION, &model_tempo_information_info); + g_once_init_leave (&model_project_type_id__volatile, model_project_type_id); + } + return model_project_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + +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) { + typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2); + register GMarshalFunc_VOID__STRING_STRING callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2); +} + + + diff --git a/src/marina/marina/project.o b/src/marina/marina/project.o new file mode 100644 index 0000000000000000000000000000000000000000..80fddf2c667a10bda79383bfa59bfb2056b16ec6 GIT binary patch literal 231068 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 =!WqK=(Q#!8d}hR8pqmW#1a zC5S7<9?P-)9V*M5YKbVEVYPSfV|oXA6Wu_EGza@2EndSYcVs5}R%D1UjKPI!P+2o1 zgTOF`O47Yr3zeh9#DG+nmz;*BYKD20Y9z12-7To@n2$V<$h7f5|5X5~F?1m~(%orl zVW!(CS2yrBdK6T{ZX7(*Dv~MA6ppEJQFR;uXFS8G&eU-58iG>`YXTmOFgAlqF<09g zmOd^d#uU!>&FekiYZ!H2V+=To_J&;-pz`<{!0bCd(^rdTLZ&07Z~~he#)+ycOD4K# z0g6~}Fa)xe_I;FQ@r+Q-L;EJG=NDv7)SyF;_r??xiM}usFnyDGV8^)y^foVKf?DH ztUt{c2N{NcC{L{|;jhM9;g-i6oq~!0gyN41%P86mghy*sEp@EB)TB zxFcnL2SoeFZjmLuo~lDhb2UmP%jS>Z4ORcPAEDB_FUK&#{%ya*v+pGk>%VIXgy|_a zd^clo|Glj6l>3cd#r_@mAX~%Vbj~8f&(E|qateXgfA>f}VjeR5_tfxl55kiFTeWyJ za);n|IevQcSAQd5^#WH{;(Z6pZ#@foj3>7sIkm6h5z6_^aFqNK^3541W!DZ*&x!t7R$4!UjLb{1X3ROB z#F%Br<8cOwF;QdWoMwA4fmmhu-N)Pj!Q{*xAxp;KcY!zozY9(LLYpbFq*0fsVsk%e z%^h+!O1;O2!G7+Lb$Iqs6uDK8;}M!Fy7c_ZjogvH!Kj{c%P?mYp|bLJ_GyuQD%sFC zpI5T#o_6<%>OT1vWtDG{7IPGs=slzfRGCkMi$M5yL^Tyc2?WA@ky!c`K-+?cc0dNlh`!Me8S-IkV3<^oubx@YoTPU`|_ANN+w*q3S zBn?yM-=@Ii#?wvA%b><%TBH$_!5)vfmFV&<8i=&oUjvl3Q?B55HC$$t&|YMtf9t|R zbhRwQ7$6PouP~InAw___zrY>zK;DpPc$P}b8%}A^z50THyb-LR)aFb9RHYz4kmaD< zOd{LKAF>dSd1fKRW9|&YC5Bvv0`CtYMSpO}W;{#8!A^*SBUnLe$hXeLQ@%y@lv+jO z+X01s2=fu4sR(19&19w|0je&LD}atQg2{(B~(*HY1p+GEF! z0ayL!5a-q6HsUdcU@QO+0kDau;AY_}{)8kOFQQQd%L8;OInXEV19Dh@UrqF8h|+D>&{8<`7IHp7OBKzvNiJ*NOe4 zcPHc;0MH9}S}YK!XMCrX~AX_QjOr?@eXbP|0}8XN4$4>*6g#U`hZe z6Z^^$sA#dK$bN?X9wH=3w;vb^aFcbN1OxUHqX2HUR9Fex&jWA4 zR_i`lTV&r(6>W2Bi|xOS2e`v}QP!5i=GK6u{;eF~ArIqk{|AWfQT4nAIxMI#8H@Wr zgAiR%t)4HVv?iOs0qOY`&RP+#|AOCz@)x;9G3}-Q2Q{dhp*mdv;T6o2&t+D@CMn#| zE;w2+Gz!1N=u-u<22ieu|9C9qFBG2$RQVR?^a8Pf!jM7hXk2%ef8;FI>V1lCv1IWZ_aa z&nW@6!eu-8co<=!@amuOF~qiCy$<8$oIV(j%Qx_G1`>|KYyQ9n2SH=uwI9nz%r1r3 zNm1th0t3##U^3_1$wX9=(^KX=UF%C*&fqJUJA_Kcfm6Sk4OrdQlme z<@*zirSE=HfH33RhQEDZQjsIzyOz+)3JUsu2(Rh;3)Qd4Hv@jt_m>JP_6fwrzOOPw zddf?Eg8g2j?BH%bfmyom>k6uXTJA(`E@g2BXwzBCde~{d>1UzD`{Xb%+;93s_f$sSrz27;587|?+#huIfezJ*%8C&k)7A zUk8|Pt-|jDu?fFrqEW~v6jPk}*4?u5IabOR83&PWM)Xd4@>|N~`d^@>w?Cv`)bDz- z<9l`>iXSC1@aap!wEI1#hzc4d)MCCx)s$NOmqp>|p&t~}ZvTK7;t5TFn5V`W)> z!<>Q;RQ$*qVrZR=bzt!$b?_4VVNBk|#|wr(P;KvqLW@rjPHJF(2qucBh`*vG)M596 zj}|wGqyz)@a|EZ0Ya|%7=dtk&@stFM>?Sy5@o5fNY=37Yz*(Yi9#NIr)Kc+mQ6<5! z{Y&yU&uLs?H^H}x7mDL#EwZw~5LNM`WZ(253KTzn8V2!BL?H1OKhE*(%fl$XNYHD^ z$E|Q3Ouf`0tsvjJ9*qjbR{SoMzo-ut1K9-)sFHl^KG}>cxSFXjtC~G88@#F;AkGrq z9|_al3ngBHK*lhXZ?SEG$OkJflmt=7vGc8e$QBfZYT-~c00q+BC*wi7yU#FlqF}aU z21@e23p){c!=P7T&V?1(Rf|yUy&v&6Xjk2WXS)_n?5hQNqg4J38@9hH1m;3dIsEB8 z3~Z0uN@S-FCz|<~7VXm?AewFHQ)Hk1t2CMi#C$xb(d-hvB$}XM_JXC^Guw!!ku;gV zgJSH~zYt9xG+AV~hOk~!)STk!gr>oBj7GDBXr8V_%e)JjrOo#J$uxTn0*J`Z9mc|c4x30B!3Ax4($5>2o#PkF>1f(fzYd*V9a@s!ut%P?1# zJm`RR_5(!qkONMzAB8QI>=q*sj6CJBf#)t;VwC(q`~`0ADX+IzLX;&x5@q<~DQ~bV z5b8^QEOtvW;`X^1q2y6XS)`?Lyxtqw;`win_o*)PtLL@q}-Eg4SkLQhs<=+GFDBSJ6s1&yJ} z(5@Mph}jR|m-ctSVtddifW;12YX5_% zYzGY6XCc;=4sgHCR{{_=a=}-rpU=KyiC>{|3cg-9VsqCA8Pw6Qvi+<5H`S*?Y#&crK80* ziTM=!dI-C;T09`Z2J&Z=P7r$}s<>T02H;78n;f3tsg;T9(o#WGVelmJT({-@|Z2KjIqKdjn?9 z%FvIdLe)NcXlSn!W_PI`&pYlgeF>y^V7fvn=91c9X)5S>YNKmqj)}(q{b#Jf3(RA722eW%X=i&IMfd z{x3M-dvK-QW$)+Vj|@{~nJ~2jGAa9xP>fgFzrtKocE2ELj7#5ym6tu>fOYn-fwydz z1IFwJIqvryu)+TOAb<}#VBCHl!L{rmCqB%xhha)A+wBCvg?3#Hz#lq|6LuxEUG}he zQu4akUJnl``-v08F17DNuo4sYcmzVz8`l!TRH5SZ&z{ zHsHM1Kqcmg=g_u1T=tAO1%(xyuFLkSXX>czSuq3U&^zUwOHpz#XC;ttu|OsaOLVEn zFi%1J2oL%?O1x#TmZI>WU*OrdEf2-hoShD7mEqIWZk^@(7o;DaxgAobbwprO;WO9? zIfJy7@NAvd=3Cs2EVTv>{{!kn35*54egnP+R=t4|lcqiJs!#FgU4qi^z^hKj{47Tw z_zgWe{bk^7ZrdEViTF7Bhw#{eTi8jDK5*L$N zX0bunDsF3hzncVTh4Pv@-@nQMeN90VeALyTW(z)tnNvz>(8}{95A}vQ5DSJuB_5c3 z9zLxUnN0%fE+0^c0&ftRO{{#tCOrF&gMpQQG8=02U$CYm0-sT?F8HY(AIHWm3#v@!l5LbsnrNw0Xa5{&}ejS_Jjtb zW3v@{lZF1!9blq47^%W{9H8rp6~w>V_m zjDDwL`e|lIuk3)HzXs#Y?Aiok@nD52P;$Ltt_*|8>nO&-R(Y=E&b}AR_wwFO=77gw zd5*Xn)DEF5mIuTIc&?ylmFEc>6=X4J(&JJV;2$XkMirqy(h&@EGeX6nli1xH3p*b) z=a+cQx8B6>euABtCl$(HAM=S;gZgtIv3$!9y7DdVtma#^NMtQ@nP!E!M`(oJfT~5P z*JKKPG6=zGgoR0|WMMAa3=Wp;mFbS%$lUHZCtWk_CIq08eNLqFgT0bxL^C=__DX&x zYVj=DD|u0|hhqjAy;PkE+O5l;_53wu35fYNI$Ds zPCqltA4cT43FcN2y#&>HCu4#{L?vg~-DCfUA?m?H*P+0BaJ*q096a;`JQtmN(dEYA zli7l7Z-B)Oo~nj#6+Rx>44%foYL@R4zWtK`PFLV7ikiWve+DdO`J0NG!7~*#Z-biQ zh%AGL{R7o`#~=cL8V;CmJ%c!G;>_L{GOiySAg>f67ya*rSqwePs$_|cVTJigEi#O7 zlm*)$Y4jh3XY+NCI_#u49=#7k?!jRv-HPX;<;JkRDux1Q zJ{$5HUacVPGBjb%8+Ok7#J3jKTsrKWiSQ&J*P+8t(fQHek)01eRZ$f1J%DkCPa7NN zSV7-k2%R=wLPfsw5V?lORs1bB%#r9g?7UNf(R&}fD=_T5mBh|qIHG#9>|^+DgW-;- z(cEtu4`{5zy^h5N6eL%OoA8h8c&>hh6wF$NB`z&iY{&zHzK0i;<`6u}J&KnFRyM zeZa@VsgbkvSj%B{BhP378c%tV?>f*ivQgC)`>u%qnysKx-@ie}$hk^iVP7G1S;dAzi9SGjdR#TEg2*Vr(2CHiqqTSH1PlfNF z&}ns}0{3`){UDd>*$Vv7CS+@;!y1Se;Pdy_RnYLR$4X3fzOn z&{_4l3fyn`9z@nseVzhSmhYso02e9nL(8`o%BwzKf$O|Jp7T{-pup{3-#pTM;hEG; z`EIYThTviaKJ4|GbpS6OAgS8p^<7W)FK0+F%lCU_B&%*x;45Ak8mq5lXf(@T^ZFVP z6{@egNP=&AeXqkhs+TBfyzPbV0bV^qVorH|MJT9V&Mj%P{P$kpldQdl>k+g3px4(( zny*#0@57)zo&Y#{IgDWFk1)266?j-k1=mbh z;@IVp3a*)Pm)l9kM{(}?pIKu zTn&zWO$n#Sw-7!t_P4wN<0&up<-nfCw%sJ5Qr`gttg#*3P@$-HAyAHeZxTd{twtYr zGsgaDoUE%ea%uXsEE%mV6}@OY8omPEsB#C+x9G>%g#q>X7ByIE)r>t04MMY!7KzYE z#1&7-#>8iZZUj+CK1z`C)f|5U+T@aW>P%y2M-uJ8=G}fR^iFZ#WI*;8>&OMQXYH9N#Mh*MR**0*Q@M)4g%lCv3E@Y7MV)c*6qh5yI%xy zYL8c9Z1BwlrM2S~G~KrjPFp)cL2=&&h+?%TD5%kQEzs6ZRDzr5yBPCCZA?K6eZMXO zH0dOW-BX_M{S4&RPG+|4DPQEfcnY8?O8kp`n?P4>{Y+VRsqaRxQhTyeepC1nj(3VO zAsqcRg`b*)f(BKP$AX)Xh}2G11vm?A3NK+nTonXZ@BlQ8jB0+8%{Q}kF#-4`Z zy<;rIw{c@>Z@wQwF5`};pV0IWvy5>Ql+jEG-wcV2JCOreK^*h!6aEAp#NBS z<%uYmEDLz_8w(!<&T&&z3#dC5&V@0Lt5*e3cMKPOkV4drd4q(kg~c}1jWJ+szKdWN zb+vQ{5;6rgSy!hB!A8jIWahZuXqOj(W`(&2l-5?4qQKh=fjd}RP1}~ix^}w`)=@ti z-NgXNIX~aphvD)qj+Srrk-z2YQJA<{8(vIYPYnRBX!v$K%TuRleWx?9=t<%;CM3)t z=CjwpyV&bjIk>?T9k?E*Zhs#Vj7}9iWd$Ghq;i0#iqVLL+#KJH*(W;90UPXI$cm!V z9dNqs!RXN$4j8v1P)hVP2W+&zItbwD4mi(#9eF}D?tlyJVn`@D(*YCqKM2lpz(w{* z*k$w#F-elK*xoo1V50+GYHx`P&DG9FKqF)hb;twUkjjrfIaf&1%Xiv@uc&3;k!6N&c z(0=qRafSr3VjD<7ReegFua2d3tBR3RE9ssqs2|`o%yVIX(UIk-^8Ow2@JC0U#%9l< zOY{OUUt%-t@d*6U3!VK}1mp)`Jki?u>~#>m=0$7I#~(%T4>~LShXPl%F;>9-Cq?+M zgEMH`2(Qr}Ibe|;M0}0@*a3^}^O4jDu$Wzk1OOx9M| z`zWYK1#VKKF*dwuSdWS660EZC;JA+qKQMCt`&Sgy6VAqSo&5r4v*?o!IKiHl1MsJU zs~7m1T}10^b!r>z_h=MPIdYh8PoNl{c534|jzzENxF(3gd#K1T7DvYwj?^;8=23t+ z4SOPDK=gTWxg@XN-by6<#3~6k*v%Bn&&2%_oNj+YQ+h!>CBe9z4||EeD1Ix!Mms?% z?H3TI6?A)G40+xwOBv@+aOaged zwiCmQ5m%!JV#<44hP@#ZQLvy81>P#u`J)R?#IrqoAc`+>6l>TkNcW`~d%ppyi=H=? zXa>UsgjvJ(mn~qyBM}ySyATCeT*88<&{&xN1Vz#1D^TDaffnKD@^(Bc>E6+q^)2FW zlKg=E49)FMhy0-ZEGG8oRxulYun%E(&=$5iV6lA(f^l@axDFE(Tm-2RjdRrp9Pyu6 z;)SEDW}`%nSmAL(x{4x$J@+~Kl=2(mQSuAQ-R#kLi=!LMAW_?(QeG7S$%$b<)EnSy zjwxF9%`mj+>!Lu``t5&n#9uiY4cMoGqv#t>Ou$8oX!s z)kN>-`ElO+xzzIyVkmg{Viq(>^S_r7`pN51;9ZG%t2p}P-ZZykI&*uRXP3jR3@+6k zHKher9Ix^GK-Lx+<_tVU_x+rM_~jsf#OxORWr_t4!8C>WHfPp1|IC6%;E=*Rc@PTP zJeWPa&p}w>XxjojE1`cXZxqx1czrASFTrc%xU-~O^Y`q2@ zabyPSJ)spaXfw1F)LWrDFe`XL2?Jn(2*6qk<*x!fq4)w6V=GUR`3X?;lTOQcBb%Y_ zSUl%jj8*v-BLP^3QRQ1_%im4-T_6^-J#Dp+(X)^sS}-)_TeASDTPU2@Wh;~}#dCq2 z+EqU$YpOF}Rw$%}q1DZ@6=(cRD-`dR#hm$7F;~Zh#DKczWgXK1RY!CvZkNTJ@MSSd z{)v)&>-$n=uY(H+^ew@V5E>=Le+Q@+q34nIdqO{iY2XqMlwgG}Mo{#ImcWI4p*BpR zy+ZfF*8QQI5%zOJ_o8oZC^#>_6&VM)%LVdnPFT{DA zEWc7da~jUKZkNyBmcM_3-<9HzP^j;8A>`X2hktLy*T|w;>MTnf5#E8eqmV z4cZtkxHBoP7Z4Jn4}alb6lv^;XQ5P7P;szgqv`@e)F9%cF~SbZS}JoUU}K~hM3>qs zHeQxK)Nx?y{Y9{Yxt}#+38Q;bUen`ca)l}>Q9Y(m`5`HBlPQQM ziJzBIe0v(zO(y014|d%MM$nM_1UzUsTnx=Y$rGkvw>|jbn^-TWyFMYio{F*&OpDNv zUC(6Kk>cI{D2ZB9DeU?RewtAAuXOjQ#gVtM`RMlxV9)QG@?|Hsd>=m#5^)`VXb-65 zQ5WyR7?C^C&-1rJ!B)+n{3DcpBwG%Y6}+Q72&9ZS7CJ^lUUiKTE`u=w=2HDE!Uv!r zz`Vq|0`RC;6=Hd)cB?U>4=fec1h=BP|BlIk|6a(U#_$fa=cB@J;rY1p&NDn87ZxK4 zs(ui{_WVP3c?4amAI`x00oPms$9^mc(RcyjA5JZRp+K;+>{Un^s$U!z4S4N(tby6V z^J1Y8XQJV--@(BEvB9uA;T3phuo)IBlFwn3*B*C~;dx0;9+23-NckIug3@{oKmUzE zUIV5P64M(J6FyMO7$LE}A+c2wmKfhCB*v=%k2@Bf_|NlZVO>3*>+1Nc3csRB;N6Fx z<7WaAjc63HDBoGV1czLQAzOgr->4lSCddjtKZY`J$@O&PYQSb6OR(*B{QMeqCxX`z z*I;~9a5-tg3#CZ_rU3c_HX<`70pV?hg1z3y&v2A3X3v+&`E7-Kp3Ro|)>mOpM$B!o$i=#aU&w~P5cs93Bj&hCU6Vj zau|h*Z&%46{4~m94X8g86;dVWF&OZq#rQR`6!RVm_(G9roP74#O9>qZK3+$^m!j6w5LpfAP7EE(YzqO9uNrpwrn-L3^3TZitoXsFnlWl6S@ zD6E!j&9cbW7W^p2W?5wH$AA@Mvn&^5m!KaQi=(#@IfaZ(wFIfLp!EMnA70#2Oih(c z;j28Id3379gsT#;V)8!8Bp92=$X{;>qIeiTC!i=GPW4K;dx6yh8VAA6q3}EXBZ!% z<6qNcjhAGVf%IyrrfUkg5N;s+UJrQ8?Ss(%YZ8tf z#PA2wER9zz8Q@#7G+wf_1HBYW<0VT!0IXOV?`CPPVre~D8hs%+&~qfYslnv%8}$1s z@;4=DHAng|$H$5>;036Vg7qvekQP&iLg@%7a5(}X+KY{Tk_Nyod-=YiVJB%ADXI!V z#8@R(63~jDap;&A(?pDwVm%jSN~{Z{SeB8fc^Lm+nkZnAL@iH?W~>y=IO|Ki65b*B5}JU zu`irjk+|JW;wL+R+iP0rZA3l@D+)LorTSfJ!Bx1ZGU1QfN0}*+K%yRvmKDaUd%I3sge8)@0&wE=hOMvnqjtBl5E*g$Sk7cGHEv0bK zk5T;q>5;NoCS_BOh@leiWzx(h0Ujgc*z5U>d$Br?>~CE_bm6^bIv_?nLG1l{J;&$f_yM?o%t1De+gtP0HYdrts1w~ zHtt$6ZV@=uxNF5Yo(HON*E)^ctH#ZuaRc3tV+MAQG~86DED~y=(pBRul}3t6p8%)U zjTGOzF&+5vD3vQ5jH=Q|RcWiO(nwK>&ycE0BQ;h5t4bqHl}7VMOMj$3lqDVdc}I4r z#_db0>~bo5)t{h;dkF^4TJY+?St1IKz1>!1iF2?laSWCvj={3T>5tzvL29TWFQbZ| z?$;*hig?Tb@`L_Vn9n^q+UC%>7e;80Es>${7~mB8jF0KDlBaXTxUqmS3ihH}QZ~xT zhfzw+L+Q_8Pc28`Z4{CgqQJkw?xpAf_XtC-s3~O|(hp#Hg3U`TjSyq`h^?*x?{vHw zHOB+?pM&(ZVAS3ip}i3SH)`~c5JyykQ+s2CIHLiu_QnXOLtapy@093&(+{n1X-;kU zBAP#-&V%DEjr7v|0C3Jr^D~6yJV7tbyI@@V`$L&)P*F8(^7Mu3$-GWg4Vye%rQ*S< z8a8>jN{t1q8aByUFyu@}l@%@IBu3ymVmOjhR#^*KOIpd2>(jMOFfi0OBGz673*`(0 z`OYYpYZK}$oM2h2XBck*=RCtW3D{o+t)jrF)~!?Pcwwg+trP1yp@-GFbz)s_z-rw( z)4I`{(eM$Zk`}TON#Gf|Q(k%tdB18UPb|DoEet`3Aj}qFm37bc$h87Z^ka>`9Tg)c zT4v6b^OmQ9(=fZP9XANgfc;Id=to<%xoReV?4@eW6*IpCrl@3@fI$>UOjb0DM z_aj{arJb@8N!X3#lvmn9-lEp>D64%>mup^2c_i>>1x|SzTgc;J4c1RQevbyi1Pz1_ z;CJ^%x9mCT@|SzzVj30yln%Gae6vw5Oz{>v*Pse6(HrG7FrDK}t~mO7xd$x;d@YV& z`U&(fAb&&%9%+Xdb;L$>Do5bylS6EN>F&o9H?*LY%H(E|z3$>b&=C_cQNWxAe zr#ufvhf`iRz`^qTeyH#mWDPqv1W^#@{SFJtXs{*E0^!;smuI+_=biTfWv)Nd8ew;+ z!S&Y_=NSXQJbIX4{`I} z9o6H2JdTR}CRRl1?UVavT}U}9Hx{6?@PCr}obD$iuOdGQrnoetzjY*n@+zZ61p z6_Bz8_uMG2b&(cPrXx}?P}LDPc2!3tucTnvu~&+cSUi>OIh$7q2#??1q)^P;+v))iyJ-vkvl!)T4T0(IUtTdxAq zYZN$DuL99)3Sf0!f#tkrRGA8)>by(EdG%mRK0#UHyx!uYJ#3Y)H@Xbm>bzKWUVk9f zd2tTs#fkGS!AMf)#aYhtgI%3hBue_hqDmHtlBHG^cTte@Zc^u+q4PS0Oo_$OXIyW1 zaF$;1yW3}4`^H(~Ha*|^POk7(-}6!)dyoe3SQJ(JLYR5+HA}RCvbgw~C7P(KW|>-y z{Wt3k^C6rVY?03Y-c}!cy$V^gKsnq9#snSHc|bVAqmhn;by?e%|ImGj#AQn_{Z&%+Rz^co77h>yYa6G&H*_eGJ({X>?Y0`3{G`UH*t<1usWxk>73Df(J+5PbQJ_UWhIhu9LXuKw1vDyt>lS` z!_>qKnuvSBLuu%bn6%uJLfkYmvJYl9RQ<{}bdng#*R1Hd>?Apt{TA@Baj58dx(j(P z!L;lzfsG&7%1%SLbfzl0R2BV~D7qUno4X&*m7!$&D-n`Dmuv1cOVNI!=v3fzJK8UV$4pg( zpJFKW6Y-A`9n5Qy9&&GRU%;jUf47`8-~hK zG^R_&a7gl>0Cokj5}^Imd@q(Z4XA!%ej)0s`TfNFdcbPF>IcCwm^%uP4z!S!I2_1K zB&R&S@zW{qaBF##wH~P-T;Kg;%6EBgD*|Y(Q>eM})A!6M%JHdA~EaFMSa8!@6Ph^L)^mtJrkH5`Z5HeLi4+ z2|N-G!Rn?6b<;}QO%dXzHQ-b?MTnbz4_Ny+!s(`1b<=xj3udHY`EYkK8Z|P;Z4@e!qZ^>nO1~}Eox8$-s7qA-nmUXt0fGVdTXIP03Mz-rfBku!S z;z}s&9fbO|E>A=U&USwUI+^#)hJ{ChH(Ge#CGX4NJ&rUK&k6WC@Isq^{wnaM!d8_% zM)>3UL&$0nC^tpqP9kcnEq99W%_Z^>kd&Ei%anCyk$Sloy*zR!+V$MsS)QzL&qr%= zN(hWRT`LEgtFS%X4Z$z{(&~V3C9FONZV(^W1S22UWF760Zzaqo5T1I8 z(5Ik-76Bf%Ya|+8-;>0uZV1wGfakd;V62nbGjBT(NdkFWU(mN%Y}xCYfW z(f0Gk(-1qM6u4W!s`KiACQw3+QS>z)mjd5F_rKZz_Z^wva{Z3+< z-4cT_0zSs;FQ)%rW@#B4X(7OW%&PEeuNZrvyQYO?+or!-wgn*XlZ^-wFVsZf{61*E#a81BH7UV1=?gLG1zUwL#H2TD6~1uZ6bV-qcpwEY&%7Ec zY&6_#{s_wdWu-jJ%Ns?7z6fNVxotF7V%8tau&#D_$|B5%iu{>SBz>0Uq>ZXwiLKp6 z(Jl|w)Il3XyIR2NppDkfWGSk=4LQ27E{Ncwy$Ni|O(1Y#T@=9u`xT%P4?&Yf&{rp{ zl|mS{2c6=%BZB8fUs+7&!KfXzS@h_Duu?rXiyl6}s>fzi4-DVosI(U83V4Di!W-oo zg^6HIv`Bi*{$vDqGB#45SJ@iDwV@c?_>*oAZIW(3FLPDoNC0>`lkOgc@=aiDnr*pU zpU&I}oG#V+bmmKdd93@-2zJ3Yfb>eDIf6T@ZX9oN?eK=c!wAcxFmDQ+Mfl-gz&US4 za2s3+*uM=?{)C1jy2ZwbRmb z{{d^_ZV*F2)WfxN(oF-O}z6ElI*9EGj-+ zV0pGuJbN2(s$!npe0!9z^xABJp9Acl0F73mqK0CndUlqrW~F#`KR8v*O7ZMbz^Z1Y z)3bcu6EkcX)x7G#ZU8O~al3z2Xzh3|l?%tQU)jxFDi?g_-sV!d*n?Q?Z7!7yJ#FGr z^CEBTBnTQJXYY|+7_Cjo$9+ zXC7}OdOyQOlKXDAoBmxt1~)e$uD;0f@!b*@BZ2eR!(Gi(PA>NE)~;S{`|xh*>KWiv zAKoo@Wq3`a2HtIU^>}t*%4luOeXqM1Z6*8xxX}}UoQ2c_n53P+BwCoH*8ruyjeq_C zc}X9kz)cL=PCbM2ejt+%0ZMX1ztj%+=X;=1d!Wz{b710DNNq++?FY;hU{Z&oFdK!W z(J1gw2F;*G>Do1+K*ZmLRi2KaQ??@A1@@=u7}@dNEkAI54mjQ6-7ObVuK~tzdy7>| z4Y8P2&--1j_dr@)Y_XThx)+AYOJn!ZP8?2s0sHZFEmr~<)z76mZTf)JS)f#=%^BcS zKbOk1Sq51BTxukb3vPMTf@bu;7Pm|=Z)TTRro12_GMaN~4<90OllNxSECzgSd0xHC^Mt^^2JFv- zN?lP=O?yE@sKhqy1qq=)v!;xX7bJxK23Sqg-}*w%QdAiWIcnNgxjA_nY{_dWOUBEe zyfiB*5vpk4uF<|dL$e0DZ|?}RW*Baovt}&rA%HQg)G}#?^v*8e{97UMf9$4i7BBt_ zgyd$ssioq(=&e*);Uwuv*e_q=FLdvAvJ9(dKn8QOb*)x;TQ?@2fw*Ph^QBG<@; zh$&D1PHz5~!<`LP^?JR3C$7(WcV<8*6331OQ9SG!*a^L7+W)Z%>m$Nu;PfHXe74ga zHpdhO422Ci3s<5{VH5cg9J8#A81f9+kOwb=Iw8{F5dO^06Do>~-EB3FO49h)H*HL! zi8*3p^qE=L*t0gquRLP^`>JvRRUYiVqYn&EHROjQ?6Q@qh-Wx%|6HrvQl;B=1E-OA zm8i;JG7RGpp663-C4>3-B)q{o*2AM3rwdL=%1xIvE6t{#djg4^Y&O@1`4Kt~Z(l*&T1S58yB^2f$X9|CfOLR|4|iFy%{s9x%m71iYv6rT5=A3FZBu=vNN; zGGtb$mw9^b->JPU{rI#1q$ei;sgs&Z#=&V;lzH1FAF~ zU>kN7mTS*t9eG=EA>a`l(JUL2`D*}r5{jA3WxubR|8DF1f{RQX8lRW-?ahW3N@;<5DRO_UVVZRaVFEk)bvgIDIB;kBqlG!g5%<$HT+gC4lv?_Qm!*tbG`;#{Ta1 zviIK#Wu9Sg$_eg)_H5uaFyTotP`(32<7JO-w~qm-@v=uo@KLa8yzG%t{9nL2Z|+jn$ZeIcHcXh=jpsnmKH9QJPRdkmaegvFq z_%1R08^EgQF3a$JP$UG3q(BKZTxBJaa01CG&xbvXQ{FJZ!SclL95wt94ZrH^?y%T{ z>z1L_)&%U4>y`m>e(4DboYn5^EN8VZ+NyYDi8g0rkK>ZVt~@jakq?JlQG@Q2ox9q`H?8Wyp2F)0%cFcA z`Ssv7z$uJ@O{Ngf{hbpk0gubaKRBz6N3SN`jPmGNlW~5Cvi_+gAASn_B z*XZLA(H;zE$?!555-m*X8-UJ$GxdEGx{L+=-zZ?DucY`@C?_|el==`#BSB8xh(aa# z{wRE49q9f6uzQQgO6G^>2wQOi6mqoIpw9ckT;{1Jn7NN8m^IHFmbTE zM=zMTLQex|;->5H&?_qLsI$ymA!cp?PR(2)X8xV;>UCl5TCk zXvg!oQ6LN%<^$uGVm5s0kAi_u+LC`1$%Wucj;G}!HAK#)mJyjrq?`aow5P;JC{gw} zon=u6$s?38Ny;}T(7+MduofqQO&4T zGmf!oF{4(@xC5MOMy;5!9v>Axj{y5;LB$oQsNRp!t!q6!CMw3r*42%z zgsK=LTh~ays$z__bzO}r&q0oQf15nikOa2mt&}A}w5ub>;O#(~LG-+u#0QgL(sjt( zz3_`Bn6r5Xj;O%6ZlPsTFEOb`Y+g$`4bT}>3%UO1?!h-(qn4UVKs@@4(^`l zC79#?B_0?DTj`3rEW$~{G87nV#_xu>bJ z1j+_g;k>Hg@j-FlQ6U>R|8%tWYg>gVRiVmOAxc!J2B)eJB`Vxz zs}SW>VV$ZF>6MNxkA@1}4L6&gbt8_8Q0W&KBf6dFE-Ji36;`6PE+D8Ex~mFJwhG-v zg>P&Xx{C_oSk%=E-JL4juPX4XmzZZmhC+qjIzdr|;lF}wQE|^AOO4(#ihl*%pesfQ z^9=)VZ2(v&tdwx>>3>W3_AVGg4D2y5ob&V#T+MXw0lxCLbw5SXL#J~mOis!5I8?s zY;{eBbWJ&M!`L;RW75u_3Cnfzzr(rUehYYrbj^RHHJ#NzSHKZAnC8p) z$`Dr$#saLa%n(=l0jn!BELYA#l{X$diEmThU}87}fAg)bPF3Lkzz}41WupYWO8$_-BCC@Jmd?N3TM|@o4x@ zkfp}^#Q09r(Ak?n^ns`j=qs@_83c`;eva63N;p~iID>Vb@8}q-r?EU z0zp97Qp?0HV&WFyVsK-qi|$m;3^vo^s0z zoG9u@0UQg`W4BuDPsu%vxvVZ7@RXY!umP~nmeb|#!Y;u62+Vdzp@&A`Q+iLMKagth zQ*uw^JUBH1pOSkTov;Vc4tdJFEjBtEimXB!0VSNW5=p2>a>`3UeW$$iR`UFQsBj-- zX*B1`J(60mCC>suBe_7Vc$mm~B9{%v(5)2CH;7zIBDoc zc|d-qEhoTsSYG{Gq0+Pl%R?Q^@lHJ@Tsuhk4*;inr-Ow5D8TCN4p#V&D#Y!7q>U|P zC6X`;$tka}g}nOK@+fOF($_8Jk+8OfyhmEdd$yH4@$gag@O$dvNBhGuhR03s&Ma}c z-bbZ}mRlY+#KYbjEe{*w;eLe0!-jY`1+d<8cvW0Fn=pT6=Goi!W_Y{-u>UZ;xeZ;X zL1>sWjO}7WT>KS&1aEZ z`@pH4bVz2M4*{za4q3C#W+-+9X-f-Pi6k^5IpukO6)Z0raIn1bj7Z8mhva_8{db6+ z@CV>h!0H-JY!lpYIb5Lg(hza`4WK61Q+wHBTrF;Y07%`4jS#!}83x@=BnbQ_Me1C% ztr4x^typb=80hYG3815HHyyrpE>5DsSa-YS^rPbRez}&@kBZZ$09Gd#i|~5D{?*WE z4^-9YJ*rOLWIOq&IQbE9s*{h3lb;2wPC05hIb#kUL_+EUC7iMnNvJ|nC#$^oTgW@n zTHYE|S&I~7%lo(J<{I4uYy?a$07V^KEe`H63)`5TAi6+QCod2uj{w1R;x2V!44pXG zeSLp8@nd}t8lAYW4AWq)ov4?EOek_jdm}fcmV{t4Wl~c!lY&q5ir4o?lwvd%bLLVe`tjbGkAup$u zJehT$Q8)1AP>7|6xG`;ZyJ`N3avUX~(v&+a7c`3t{s`Qlqi$g&?Onoe_Y?SLNI3`C ze*)HZ1W`?HR+GIwEft%^vuU#5hbp5XM|;;Jy;}yhNb^?NJ1Hs_O8l1(n8)ht>pQaLWMgZOI>$B_Bp-+=(g5&-M?f{)n)oIR&>t^DAFH_ENUSu zk%TA^)MYB~_7?KiwUQ?TVu_l(o+b}=Pw5EFZ*_}lG&!Uiy9HDnvkGQSj1VG!=luzA zdRzHcG4m|pp0Eg&IWI&O0hYUsx4L<^aVX$1^3#w_VZ7Vuxp}(2lJJSJNmzs3({$>8 zGK`-J$ON-q|NcSV8Zbt#&o_thMN{q@^jLa}K(2Vcpwn207uG@1C?q^!;JSm#^11;8 zO23E7aO?o)ivI{<-V6fF#r#>ou5|b7*aW$|y05xhCGCf_S3x11A*RcZv`+z*!B0H6 zlfT8K^TwZmmlT zxd1ce2QKEXz@?wIJ&Yzpjcx3wP9YBuWN-Nr&~8nbgbUT3S%W9Y?ZWO4$oFSZh5vhP~DW+zaG|2G2l>YfMBE5Vc|YQc85b`BKXHVQvIX zs1Xm0EB<}9F(=GTF-MSILDg>|PG3PeCycM4JPDlk_uMdgiLapCe=X`2gt=MAUkjs3 zaISWb*)t%J?;7A-@sZ)EF#xYb0oSug(}A5qPI+PD05{*6y$m>gm*IG+i5C>R!*G#u zpIb(oaTECU1;xLSfX#BnJva(tqjU|V*s}Qu4T#zCYfE&Lh~5X>pkKlYF!O!Ju2R5% z#{2=8-FX?|g7!8&32^MIKAVmU9o6hi8``83>ep>JOlE@B?}q~)K$~fJQ2bmQK7`_) zo?HT?#?kk}nY*)72;;ky+}G=|RY(}8nVTqR8(0bR0o zag&*r(0R4>I7CN#@2$2R7$Oe*2sm|Mh&Zs@9Ls?r;=o~q#eqtn3RoSeblZUsI2`z( zxMdz#{VsIMMzl!>u2Tozkj#&UsslHu1Nn7Ob>PM}P6s~Th7SBS1SQvlMV!LRLON;6H zHrK@_nCY52=SnE3Z|s@B|h78$nU<1Qk3+P!tsEcK}sE zq1p=0awwQ53iiOJE1QwInr=E92+U1@FBq6pFJs{UQyfZN_bx&xL&`(bk2 z;U}Stn8yL9mEr*XNGJ!g=jP05abu7twTZeJM;kqRpgg(F8I=9Iq1qfM&fkZ8A>5y$ za`IuIHEvHyi=(ICgpq|b61=)9dL=m3cdkp}k%Ix>MFGB`?{GU0q~#Ez5A?*g;SZiV zR=^{P)GZqck4<~Vw4q%%h1`P)-@V7}9=8TR&6P(d_Ru3Zpm6VzM@GJcEM3+1(63id zk`-+a-;RUj3+J4BxKq%TY!97>TaUdV?Eh<>;i#h?*)2ZSi^B5{L%mSra9fC-!LL?B zSH{DpTM!els_XseW;r|*ZD#|OArHR@SVvHe;tt?GfFl@1e07lLozR3oqCD<#{NujC zKMS~jK!>Ck0Vmf3O8q-ZkE2fN0TkXvA?YI&utW1LM$aO7(0bBo;1VrN>W_eoO4JF5 ztnMfzbwdFXS5xAZD31XWe^Xy*hjtfBl+&8S%WxO~()ABQXPGt@Gs;&2rBS|^QT{$b ziSotl4L+ZxQ7+WzDl5u`iYV9R_=6Dksd4kRCAutqC=cBff_q3ACV9_cc}2#xjOdS~ z_z+0LoRrtl_s=Zyz+nEY2%_!U@^cLS|K@uR4mdP zP)_h00soS-%?U8N?`VX`z^L(FcHvPoy6RRO+ahfPyAHmA8iR=;4cONq>0_bSDHe|R z`ylIcuxJ+V8rQHr`Y>7#HQI-xyF0|d%rMb5)WGWD8WT;7*TkUg8Z&^Hwk9T? zm=VN;o0#Fmj3cI7p1)QFGOhy)nnn#!*iyGKj3vZ;(aaOnium#;%vqIEQzn+B9d z>u5&n8iEq7qbc@jf-)xywHct!$wIZ)kdv~-)<``iw@beQr$*{&gA=YEf1WWo7yqIL zFu%Cy`C8x+fc**VowXWHZV9J!pp!F!R{Ps%IF$gQ;nY5a;Z#du5>6fDDf(w9Y$=%D zgfNYaJ~AL&iRV_}0^)WnGU5~qBmJAe{=h?!BR}oQ3E@wB-k@B$ZTc&5ytkIY4Mr{t z#iC$8q7DJ2&xe<(f+v6&_Au6OPqiqR0xlg$HKO2bz&A49k3p4?mFS~ViT4!Q`kA;3 zuN0WaGEm_$q-Uw_cZf~TPEl_uq-qSjt}#$x2XaSI1HXv}hXyh}O9;<}8h&DaIT%7} zO-u?gCB)R3mzYdG{lsC1mS)8bit4-LP7mNE~;Ep z_gxJm2TC9^2wiu%T#Zoox!+oWIFNz(8c-UD0~v@%2}&RiWFSV=S%E0jSb!RcLbU_& zIY%J=SpqQwoEiq(49XocE(xkVuR-~)7v=3zt^=Q5>+TS~M!-Y!s`0ylodW9)b(dlO zHdZfvUogQ5<2kCDVcZ!c&zr^#uq|N-aETT&DG87{(|Iq4L#|m#9(&W@AGizkx@^QI zNQD4%$wio5Q~!mY!sU;w>hSZZRk&7$C9kcwd>ut!p8`sK9Yvo+%(r|UMPJ7fltC}l z41nruq1wK_)#2*~@pT*{y$8@BfkaLzk2^<(41 zfSn6Qls;6VA7_aN&iQec$$(YK%Om{5@fu{p@*tQmf~)wQfc@v7;DZpPM@@I=LnskG zaLVrN4tWUWVQ}hE(;e~<$_~JK)O3e9(H!ExZ-SDc#u`rZ;r%eX@(e;g7u?4cO>G6q zi9nDsuIODBk}HHD2f3o(L|Oh3cJAAR(%%(*oD}~4Nhti`qEIe#MYlm&ko?V_AbY!_ zqb($VN-D^nuIP9R$rn@#(&vgEXCZkTQ;?UsqJL>2dE_O?9E()klw>LsAoI?VkRx5udr+1-yu&BR&aUW#WTytv?_g;XG9Mxla(7qs zSyE`U*rUSf;eaFf$f9r$a7Fh)Sw!%0OhNW_MJJ*xhN}o^i_Qr+gU`kbceE?InA}uF zTct!*PY5(Yb&`_pBtG&c61usfpI{ZyQIvnpGK)X!5}pWG^y}mi(@Bp0lK+TvZBICi z7V00ng2nFr0f<16b%iUs2g)tHKEWb)aYZNCWNIt@s@{-#qO9mC|40vtyX7B-OSEVx z1o=mNBhC;Oi3a&c2vS1=dpE*&%)~@Y!K39ZAm+DPKEsrsm~3L&yTDV|6PRl~{2~qB z*$>Rj<(NdH@3|iqyWKPYj2R*N*9zoJ?gU=Hhl>CPAb4Hja+v&x>5dRr&h24fsWJKk zWwN;T_QImz+6CDj_jesTK&pIY3vuj@tE;JwE3L>ct1BpsD=sUYJ$PtrycAqck}Iwz zzdElrzhri0eO!KJc~xmyVRcPhe$CMM_!0Al4Q9>!p|MvD&Z{mT5r<>%xY*b@;Npt& z^W%UUTv1t3IJm5|qON{$aYbEW-t5x2;ju$whgfZEYf{5f!qh5A4~WKw%c+?|X?)tI zFu%41wXksTkl6SZ$eP;f!o2dr>cR1`Ltt%9%SyF#)eQx62UnHW&#o&9uAiS*T3s28 zs>-VyI3k%t?D)s-|Oc79$Npa7gtU{Ya0Y2LVs;?jyj zo1wV21lAP9mf$yEE~^Vcttw@Wn%V+56h!Q}P%bDeLK%@GJyuy!R9Xxekx^W`u&S`e z6oP$6-a@lHuP(28u30XuuCA=svc-;#7DUz5nj8grwRts#7F6S)%&RM`D>S)S8AXhc zVwfptmdgukYVwM0EvoXW^U6)O{IbfLx@xOZO=)pOUYSYKZa0BKvS0+DPYcTm%L^;0 z3Wgj^FReroUVuBSBDn0@U;j z#-@dMjC+(x@J zqb}BH7i<3;UyK?tz^5DMiel4He{ei72kpNNgVQ&J7{=Cx-o4QI_NZ6@-xkMeInMaD zjZ}(@8x$9Z$}vNXD;q;XjNjf!>p$%iD`j$j+9%B}f7PcU9l(7zl5nI?+GOt)8;qh; zY4I@`%XaMWCLP?dBb}xcAKb9vw2@m>6jvN$w2d_u#Ktf4CT$oTw*&ugh?_VuzA0u% z#=s#laq)4+qyu6~d<@FnVPKk3n-(yHW_Ulve_OowdS~F@I#2Je-a7AVNLRp>pWNsf z?M{p3pYds^C&o?v&-IFZ6to{^r==C8#d_<~y_eCMBz@2;ZP^OY*5=15ZJ9|+OQTV* z^zzn%x;@_$?*{m{UIzd@o8QQ)PxXog@J2rQT9l#N<-0)qTmE*{1uRdfsDt?p0Jeyr z7iTxxCOhDT0_-?0SfeO3Ror*x*R@I2|Yn|BG^HphC#)1apPfI)rZrTCLT^&5b>CkVgPwfEsyAB*_?^hR1 z8U$!#2a0&7ntidp!>M8bpHy!Lu%*KR3^{=Rs6JpS_D*|I?DsWP?EUssY-LRYBVbv3 za(-XK=30~)0ib=pP(8_-mx`FjW*;~R==7!D)u7)!n{`iLN;#`$vw^dhayGeR_5qZ? zzjV7XFU|WJMv&2=0Y#;ldTm#Mud2Xi6}VLdHjBWgMBrN@aI*+}_W}Yzp+N7##ou`A z-bAZwF7=K=Lto8q__II_08Y$qFrHnqovuYU-fARx`iP&sbr`JR`ds4qzWhd`+6p8k zyeWjuAQXE?6(QU`nUU$~o<7|%yixDbUgC!RGARD17yI&1ei|ai=Y7hk^7M0yYITKR zZNA()s_WqNA*FHJK^tckL2dkbx1>*`tPi89>4pOK>8H``riTmY-4CNF7I@>w#ooPU zbUfAFyBXLwOHW~b0@F*~84$ZlS>dJb?2esMex*CR7&Wn30yh{b-qkW< zwt%uNlC}5FW$kT|to^sSjHXv2Whe;#6~XVAdw|V-AQc`F!bg#f%TeQ@x$OSOx}7rS z#KtX4UuJZSHL7Ec8yZ)D`0!jRa9YIOEwxUIxO-IGUESFJnK^9#o^FlHOKt;rc+LUi zagTR1y$<}AXp9Y@-xjC*A(~pgT_6*gl;5z*oEiR6KxKA`7he*>{m~rkUlufaukhA^ z_Gf`#E@(6wZowGVz&NDp?@NU_OhMIfOwyiR6HOn0KbkTMWq2ofhuZaEqRS)+4+M7)$Sdwa>ekl#4LIDrWs! z$`VFckE8*RKa669recczEb5ezM-T2Qmf7&FsD@=P0{p#fNZyHJk3U{a%ioKl1HaDq z`pjAHbO+Ju*VSGhgJ5Y#@#By4$h@p0nZKLIv2vFZ&drN8)*9PwEq*7m4;LTUIUz1? z8TkGvYVDK8o|DF!iyL-N*laY zKz-c}6K|+-?;M$b|GL=IU+35@#p#$#jeL4;eK+nz+{UMK4xB#iy#biFx`_ui&ms9h zw+2oZPubKvx(oGeDXFWvvkUH;)8M^=G5tvQqIAwYZFuNe8|=7n=;7H?WcO7^k{22v#Au|LQRvfeGZaC%$X(!7t7f z&w0d{-v|%%Gag-x$kvMKCyW{3mF-AER|q-Kg`@Tl)gu)h;p_lvCtCx*Wjl&V9#o<#ue}rDD#inBU15eP60>l&bGa)y;xG zAmZ0|iRF;oPZ``b);(D_w}Jyy)7PDV7+!aFM|>s$mo zWld$n9HSiv(F2`5Lpd5=t{`=HX9iMpMOu0~7WG@uMd)tI_>F9#zm#3GmQPm{8S@#W z4MO@sNDZAi1+S{y&dypdgd;+*%kc30M@nMiL4Q)14^|vFxMRqm_+oD#;9l=66XX-3 z%{!gx%x9$hQD+A8U9z?PMz*$VE7FXeORybr^wi1-w*PG<=39<{brE#jkxFXQ7(ro2 z#R-iO6!vaqk++h4?#b+Wy1+AvTl|M)S8-Iv<3o`WUCZXm79Yevn)~7AYR2F04ivt- zno+U410&=w)!VsGJ|O$#C#u=%I~`yDn@jG}e(8qMnzE(~{y8Rx1@Ne_ya$3&NPofK+U$IySN<0*W|$=Ez^yEz@-OY?y_0VxyXbX)Vgj*fH*BU&E45E?KvV}uc3+02=D7P zu^T4F?Kph~m>1hO7*$2ZIBIxtAxuO}x8b?NXA3C{W$qDvtkR3nzsbhxgEoxI-wDG9 zV8)I?%7@#WGM0LIB=M=V^;@*XG6nq>I~=S0XnQ%5_)rMz+NVwOUSZ5TpeGWi4;om{ zu>;+38glpOHQWYK`Xk}rAX}x6OwQTZ(cJ#xewZy+~ zmWltN-F73Kq#v+-xG8P8aZ>{lxz4v^z%7^B-?yV-%d9f{s*Uk{tt|T)jVKQ%ePZlw zgN$%Wg)YV{O1-s~@p^B2*$uu?gMkNdjp%h;q^%KMz7W0cGs~3lC(+9Y=Pa_jwh>q5 zKt6*x6n!TZpB0t%S!Jq(s{p7pe#nv``35eRu@}R6)Ady2RZ-)mcB1f00{pX`=(MgD zTPCnBleWJXam(7pa<_C|faNA3h>62(jY>OFn}+MY-g0bnDx5C6r;Y}k60iQcj`dEO zWh{Mdj1O>D0j|fFGyr(lMaMn9gwgne)c#j(Bda_R&c6GPhLq$7!xvKeiQzHq1}+ z_AX8zoPN+)zzzD^aE^~-*o^I1f@2k6j(b^sjT{3V_p*ELU(iqi!UJuw7eX{*sYJ(X z-#5>1G-Uc%)0TaId_H}9e_ML(bE~Z3_-wuO?sK;=9{=WM8_(SmYedD)<)1gllM;!l zU$xzi1IJsa(`T}tZfwg5{{ty+ZcF?@DL*6S{qwgQm(z@6ZBJzw5%ksBx-^>mc3W}Q z_W9Uoo+>_DY?Ph)2Izk(`Yxbv@?3*2jCqWA<=E@-1$5uLV(;%4V5!5H^itj<3(|~n z-o5197Dlc2V$;SlJ@Z<9!(0IGg`q1X5Fe`NT>5TULman5xB!9GgNBSBl0RgS(E+CJ z*x=nFJDexH4Roappua9)rHx*z(t8UyOfXP@ebbw^A>H`q7Ph>he!J0+*6#Oi_w?zS zKG_&g4d0f*_a`q5Ze#ojTV-6s-EzQ?&B6C!ULOa``uYZh2{!$+XvjBV?4Ucukh5W@ z$Z&Q6_UxXk#UpFN8n}`CTRVZco7n|N-NEaDQ&B?(!4k=6O4C;(N!m*dK=>@4`b>LVR}lK z-dLO_c&hcrVm9BP+MlTR`q<8~Hmu$;RA+h+~mkDE6p#gsA)};w#krJRh3(Tn~xW$J0JH{ODiibD7OfATyt%P;C3r3a^=ok zZe@OcU3GO~K?~WSi`Bw(5n4@cUUe;MwzP@vz)i!vy0Y5bBHWKF#BJb~x|2stx`^z6 zw}bVrt)%+H6#CN6eDmYOG53mQz5qe%hfk|v-L!h0~n%t_g zyoIF|#Vzd=83mQ>9=_^`;vj?5R*)e@G=fNCwL2=a6D z>Tt)>vMAVIq0cWZD7*+=!c3}H<<*w7mM`8GO0Zm*kFF}uyO90%uxMcq@vVkM3m)87 zM9_%)a!bqE;e~iSGq~+K+!JhxV{hr*@Z7@sS_~_Rj^KLY3#(&V$h6S87yuWF8>e1H zg?PGwYPFmXste02=d1G4oh{m+=#skf*%f)EWt?CN7Pj`cDMD3fUEgwvI>;U@!FF=W zYZ*&5c~A_uv#ax}(P}Wi#3C75;l&)$B{vTbIkuo%p?M)&gT_&HA#PO{$Vh4_13uv> z!<52aFTtY`oLGYO8(UVGSDnqlJPGq~bxlipejX;Zdd5m?e^N)hpc)T8w5H`#E^hbZ zVTxjzR%}KSS5r4zOReitu8i-3(i$3Yp?SJhIJB?}>kaG)Och1dmE{_IFtKH9an7=W zw1u1?QVSaVYlf>8alyW2T|7&YUt5a!Fr%)ee=)WS>Z-6>v5zzwbP8|L7X46yu;v)z zo%+(^y2`p5(Hiyyw;RNZxw0ia5I@DO#(HsOZUqK;E1AGoRTs`LMWYv@U3jjp%$4P= zW&72IHHC$9A*O}ij5P!d*8E_5h|8^o0;UgI(h(%3SkSR_Sq#DT=`y$hoy0NMdTmv= zON5ZGm0sw_*0`TopYS#b^gBlr9w55FTxrH8UpmoBE`9J*^qL9?&#%OgZ(Ubuv>@32 zDhxub?bUfz9H>ew=Mzk_9l_QOQ$qnBBx7J zMT9$z!S)8+M!UlM*7!uL*qrL{gp zU0h|g51m|Ew2%mFJ_@USwIzkVaEzYv8ee6RK;tJ*^JUISm-OmOl?<<4L3~=SXSUGt&sLhDys@nfDo9rptP*aH@nb> zOQoW^vKSwH;JaaB_Jk?ZvVGynlV|vDNS-=1d2;rQkzlPYsRX%jexVA&#-ywicEOw2 zsn;%~u9L=19XkR1$=6QIn3z3->ZVT2o;>cl>%vo~O!X!EGLxrfPaHcfBYCPXbK2C* zDc6mQ_4%%YN9f+4cW4m=hL__ZIA1{_9t*?MX5ry8(2q4xt*pRTf-#Ez%rC^!R^ZF? zQE}q}>U5DDKrA4(RzSJ^IjxoM#EAdQWMT~D!vdkkhSNaMn3v1Z8k4}~c6@7W!m|)fRl^3ET3VgG47P7X$+?`k#k5@t#o?XR* zt(XJz=2TYep!HpmbUH&6UI%=9Xn-GX2!VeiBl%~ z`dcfr*|(gvSl8+YXCK>g9Q~1xc^>i9>PpJ4Z>}G9T~h}%EbVCA1OjOsA5`Yh!u10# z1bmc3eeC+$wi;qzNb23UAg*sgZ~PVx1KNkbQI?X@_Z$V_ zsp;)2Eg*02IOQ9~$KiRQM$m=d)wufBT!TpnzkQa8jZ*6|~;2bXhKp!x#PYdQtzSC-X@ zDP={L4FQi}3N5HD5tV#+s<;$S5o;~6R`iH#sR(M9<56i*N_40#ME|Icgh5BRR$~n% zUS(69P~rm20tX*C*fMPy_8uXimMJIb2#*y}C(crgB|e5vyy={lTP9Z-*2gl(L}%}- z9Jpx}?8^dQrf$D{gQchO(>C-6cQuYMb5#}<;Sj|)ItgElG|Quse0q&)UFP;T34?r? zhX?pt(QkoVY=Qdstr=jql_FQ7SgI<^v0c$a0@!4YRBKqfbgWbtVuOV1tiWKg$4X$V z=@|(|Tt(pmxj1&(!C2!4G!GYF)%oRB@xJ~RTa2%F?*ZiHdX!+4@)$AM~(s9M3xK%Y0zt$0q}g3m#yv(B)Jvl4^1hW7yF2cU~@C zKput3i9n0RZ~S%HoJX&nh^Y@xs|UAf?_W9Ro5Pv1xgVdz%byJFvJ0yx=*5rAu^hT& zSfNdGOu6bR=2lcLsPN_0TH9CdkIb3GcO^CwcAPR^b^Nlv3|_qd?t=Bp}%>a%>MCEr;;9^3}!L+LKv+ zFpnl&a)mosp@KRbtIHKTei7fQ&$voppI2H_V+~I%EkK_-hpEILXveEmw*fj_Kk9M)h(EW>y{KdR4z4Ix zGXGef(9wI3`z}vP`*tBVjrf){pIL`SZ6f*!SgIqO2-KD+-58f3G(Sm{Q52uGE&svL3P)I zmMOI0y0)I6HwnF!p3`ZM4>bO*3c>4)MTa0gMGy8F|Bi=Zk10HTsOO!=9U&`2Z*Q|A z>^AT6wq`$Cy#2%QN+ZZj>3DHo%l=jPff^6;TH0^X`Rg)`n_wG#R0@CnLEnTtCD_NJ zktL%UJi~?O!ZJeeL$a+Gk>LZLf6s#FJ>);t4nMZ|nD7L*W9cy*XK<^2g1#H{r5B+4 zfa9M(LSyejI#}Z*rgQ6fv1tAa(0n2paSGZIlrJRP;z{UoaUQFUUR_(aZ`F?nZRO9j z!LLm{dl4SXk7XDTFAL9w{md`UXgk65KB&XLZJ;+vEcaq8uQYBCSrK|$o8@6<9Q%X| z^U)=U!+GT zr(pXnosW_JGwtx@7eB|-{|d}MKO?6e*S?2Em)3KOrO)(V;2jq~!xIT-UW~``b2AE~ ze!|a|f7)Xoyj0o?_Ky|At3Zzj-MPm30P}ArXc0eS^FB;i2^Zn9bPX8@9YohwbF)OD z#kV{LV_szabnH}Nf9kzRn?BJT9|*war~YSnPQdV#pWzuk6l>Z=cq|_;9cIO8u#e#y z`3u2>d|2$i_!?pP;K*9y)_x%hHza+ouB0QG<{1W=` zpV8lnCw?3pQx^1+JyXygfnWZ(!@u)>ya)9n{rtgP$>UT||zh zKfeLk{4=)t*dYG+;kn@#k>?W*{V<*GfiA8WKaaKs{1=KrOD}$}Y`L^`@z}R``5`b} z6E4ncjX8c{OWO_}a~7SSzxt{D2fs~qq576C{AkqvpYf-~%dZ%n_!%25zxJ7h{m0Mv zo?pZ%xd@Ln&JNGU%k<#;j0=o2e!}JOMe196@Vg|n7vZt&;+Hi-e#QsZnB)f?){DFg zk4dXteuH4!McTD^_YPqb(8@m21dh3}`wD&JV%{vvu={^0AqX9~{+ z;!|e2!1W#9u6?n2kZ;}IiN3qgxUqb|ms787%@cGj!}mvDfJf#kOAg-^J+rl(ARd3M zbzRbWtXsD8b9q@*k~bUc9`NG4R{!uVzq&?A+}!E7z6{n8&v9+Nh#i)W ze8KIZ|7E=L#iu$(E*uw@OukMu0oQ~7o9jEiJ5u|jJ=c)sMhn02WsgTfep;5*F5kze z*UA_7p~cJh_KlLby!hH>&5L}`8q1Dr(4aM%uUFH#taU7~Z@oxvR}QoGNFLW>FLO>y z9@otyaF71WxQBna{`Uy4!Z412Q10|!CVk#Upi(1=v- zyWFlUQn{3%2&DW4s8dOuB~-h&NagzEc3sD8sT8M~RmC8pJ+6C00%UBx^e+k|%5=MK zuuxoI6*b*LQRXV)%3-z!33f&?-!J8W!^ql%1ml>I>~`7OEVZdwq;3-G^~`olF^kz= z#WHJFEHjm4D;|(Em6DWd+d%M;)Xib`9ugFeV9ujNXUCBB2oe-#MzTX;f~y3T!)y%_ zLxnld9i4*6x*EyRtwgOAl--xC)g-7KW{)9JGv>#o9B?IBHzPqHGm_nMk}BOo@Pwdp zn0Z4)kdHY}GM$=50q%nYyLbUfvcp7zs|A(AYz>lhE^;1sIt7t+JrXoxMzSMt2%ZpB z4zn{z5Y&e`&qAGo$l4ySFM}XvBs(-B7$c}0X7NZA#GD7EPC;ayfCNFz)_7UWw&IrD ztC2AKGFu~+7e_GX8s!v3*7ZmbWYyjbuvt)c@3B@05(F~i0>|EC&Ldc-K(a<4K_D}d z9hwo05mXMdcqBTVd9#!QVL(}-aty^zohGm;(61gKd7s_m2sV9wCGRmf_!XgOsRKypBGfH5l@n3=(hY;&8Sa+vKz zViz*!5x7%ZvhGEKOlC14Biv^pBc~(sX96S|jEj&lp=hbbdP=oj7GL9?M0%^%z5|0sTWzBksL}yfF%+MsCZ;d4(dKIdj*x<9+@)Qop%^i zKA?=%pHzxM-GD@UCZZlGLd{_|0g2JaoHsw5Dw1_35(F_L*)diE)T{v29xDOr)Bx3v ztCbM9N+mZT+oVOyi;Dn~1MLPFv(^AZW?;`C^NKc^RvjuAFQ^=52}m%@%bfRZoMw@A zI1&UoYmX9CR%?{KVPZw)vNv*+ogx);m}MZbS?0VY^yMM`DLF=lwaS;$-cEL=TvM zM8yayt2Jt>g`%M0!j;1;0g29G&ii}LHpn^w32iVV*)c=|)T{v2c1|sr>$R@catT19 zAud48S_;haU`95yQ&2g~b|X3VFsns^wh_#Ev(u?9S(hR?S`479RDu>x_Bsj4bbKdE7DofTwNT|(> zWM`M#)T{v2zGMv4of@FpF&okyGe43;uX7MbG*AI*Rs=AS!HlB-`h!vN0EtH305xj@ zFqy%OG-0Ngk;7~j662jYZ(%!)Cu=PdWHKY!VSIp^6`)>k^-mKjJf?Lm)Ea<9LtKEG zwHcVL!HkChz88$z2assg4N$X=0CPT=kxK3sMRSU2xn0Cj4BdP8gKb);rXBh#2wNpWhRy=l%mYe2=BiizF^c&fJ8$^fSR=*7=9+$ zA=!ntL!^DXC(nR`XmZ)qtoA5IDK-M0?jzo|>(IR!g34i*iNqjd&c`yGJxJDBND$9# zzZA1mz*T?*KdeN?FVs0)5~!2KIuz;H)%XFjJ|!YkF`3Izq$pq?L&ijl%)j>_CPh%w z3Xmz|G&cLPVlBp1U|cOa+I5!#BpTuZ)U36@tPf^<8Q|Vv6h9$JH0lPZSMsM_E2tc1`;gen%=uuAvzN(w2nlvFBiYfP2>_WK9TEc28;m-KibR7eK+TE(CNh|j z(lZ2=!z>dCdPOilCgs4v30bEjIa&^&>^(pLWpCU{P-&G^%vy`ANsE?ejsZL_s2pY| zkmwoad|b%s8M2;7f(Fd^y)1a<2(l1xI-JxD6w!$E^EUPR31BJ{Mtf!H4{D4s+9BEt zAkk#WLHkSZ1owG%6$?0SX-BQqoLe%q~N=NsG+3 zN->ieKfDDKS>3djnOE$|WTryxfb9cRyi%DBmtq#}uTrel0gE7Uy$H_?FlN?*sXmyo z7EDWpaVj&dlNDgJJDi%VlDav}RwJ=Xne*u`XP1(7JrcaljNdSVk;{FUb&wogS_P13 zbm@AVdi^mJ+e4&dO4|z&`&6RK{M!kTXfzU_X6*;&yJJDP}S&Q7p4s z#WGWcrcogp=Gf3s(s>b{-5%5lQYV{PrW7-o%~EW@p6thf*`y52RH)shF9X%ARA&37 zm__>|r1d}ygEFcmV`e0nqJkMC!Q>Ohsm!!aR)Ep&Qfd+-b#s`-Be6@F^I<$^my&f9 z61>eU0%Y`Ke`G0IoP~^)9KG8F#>ccyA5h4Q>NAm%8AX@*cMMEQo#wZx(=2MBZZ_M} zy0-gDP`6AQ*^6wS7OlE70g?la1sJoa)TUs@od8)MjLcL_)_xQZDb|um8yAWCIn0(K z(Pzy0aH7*^WL=E}naoIbcqc&33Q+AiY$q!0*1A^9TLBUcaRF-9USReGGoAr>E*NzT zAknBBpk}$CQHW?|cg6o>?){^)+RppV!@bJ2Y|FWdjcXDsj%>>gjxkqU#6{O8wRDj{ z*aF^HdL@K|{7Ogy$p}f7UbrI0wVWymNwAA+(vp;wp{vAUWoV+fWQI&hM@?x$9L8l@ zR?2Fbgh`kb&mt*FNkbYYna_7WXP>jrk=}c6y7EW&(xYd8pXb>>&p!Lt+2_2<9!7NO2H>F{E(ioFfg0v5aMss)Z$Ikz`8ga|pSA1i2l@#072DWv9EzhCMDc;E9 ztrNFQCCd+~w~<$ptru4jsD`!TakBM3sz!o0K~#wstp!SqDAg7>AZaz}C~U^O=V8}k zDY1`31Y3sPF|Utw0HXtD=tbQ?i3yNui~l{5pCOjB*~k}x5)*lMF!_ zE;~#{rnexH5vxT_S?gde<~;*bpr8iQFhzw~@3j40uyOOIVUoV21C1<5XA~yFdm1KV z6%uCYB<))fTbO=DY=%jU%AaXVsW!Ra^}&-l7t?U{W7O zIlARUgJQQK)ugyiuZJ}$)B6x9imm^UyrpxntLD80Q=p(G(=bJaF>O-9MFO05VGCzr zii*guz(ja&!W1jsM=%SXl(!zyTGRUC)Bq(WK&mY^AlYEjTd;fP^L9&N#!q+7D9;5E<^q-ohkvwe@I3#5e>SH}4FrV%}E5 zw7GN&T`)y~?F`IfN-m3%Q(B~>PON#%L zi$A$FC9+D}r+itGN#0Uzf2vI~lxj=TUbdL;!0wt??4I)$#A;l%l*H<+hQw6Tpke6( zopPc)S7T5bf;RTiHDToxsqz-zlR9j57N!?!|z*P(DQ@#Y0nCMb% zaT&?=tl>l8qpav2P-4QS+Ts%=dSe@@PehqK=|qEK3y_K@u2+}B;>q+3lnZU5qL@Mi zB~Ak*i|KJJD$c4PHt)Q}%djgZ_4#^CbWbd?)Ue>S575YhtfYoTo!+g@Msp3LWiynf zE~{NaBMYKQ4U0FB+%&0APX&AI!VZc(fmBQ4dU-3XC7IT4a&d}D9klUOTTHb{kJLhd zRtxJ>UavSzlxmA@NIJ5Hlfap*Xb31V#Y?rtc_fQjLuInnWpq$%8>Hfi>%FtEc@P?&Ufcc5o4P3Zne=;(D(xEWb?8Lc}R1bl{qpcPiCUsE%skSJiOU|&g?W0VrAX>|5*s^(j;zNqYiTVd%7GuBH-e{%!f!0Jl z`l0FtXV~MlcN1;z$wb@hwY4uZeT6vGeG0A8#_P4$(cEy_f|z-G#4I-@z0?~PK&Exbh*M1Jpa7}1m}>X=S}b5(vamBS5z%;U zD{xy@v;inFR;jkwfkaUut-wy2*GHoqU3a2Eu^W)eBCeN@!?MWqHbg{XQU{&<08kWU zu>sg*q83T@_JvoS`%MkgBB z2J0~I8Q1}r#{r+m)UZD_>`x7o7M~jKOAYs>hDpo1Ln3!wdP#G-36z*@r`lqPoD8_! zB!;TM3r;jBb_t^DYsK}Jd06!_y$A)hBhh6iD*ECn)Dktu& zZ9^TjzOL#T{7=On4%2w^N463TZ~cc?gJ&pD%BRBB8jqL>wuPCUkUHH z)Aor?I&VSjj!DJtnN-Yjk@ThtKIF8e8Q79}#g?77Aa={7QS1~&)UIp}iq$}>HgUbB zA6^HU);rUJShw?*9>D6c3~KN`B8mNZxH{A#kK?4HfyA!=t2O(+TBB%`=yQ=_Z?_G* zHYlj@W}w7~Qf;vdNg-=E30!cZKCwm9irqA+*lm-FDc^LhJ}W^ltC(iYQ0%<(mc%Za zRP2gL#jcuE%pxtNktVl+in{@#`o)?ds=rZOA3q4IU#8n26**Q1^P=;JmYlXP2&2dLs$hey$lhjnAE{;;n@x%g3w-tiSSsJDnv3?(8Em|2;BLm*j`D0W0y=_Bm%NXTNs5Ti<=W4qdc3+|!_xXp=5(u|u|8MA0gElD&kJFcuom9%Q4kiz&wkU07r%PttE;>Vq6z5@Q&D%s! z3!c=@Bf`jn&Ok;7T;$0ZeG~01h@@MHxYb3T6m}VnEYPNg#XCqIm{hUNxEPZ#HAGQs z(TJJ1C}z3XpXMUDr`pI^m&;>u95(5^NsOlnJJh9I3@Gefr%jsjd9({o+h2>u66sG3 zllw!4C!JwmYS@<=Ce88*hBeNxaE%zRyYz}TVYi(($=G@fRco2bE4Cr&FsW}xqrma3 zXaFcNVN-2!2FZNZP$joQ4XEV0!a=7tlW6->ZBpb^+m~vSa^58D9V=%IvDUemi)&#G z&YP4|E$W;T4T_zIXvz)Z`UFnclx2DaqF7>52Zy9mZBg2XpOiMqPpa)n!zS0c8RJEW z)P^p=FU9^F@HiJkzP`Pl$d!iWB1z{SN#D0T`T)0q5|iyzTYQM*QPyxB(KSFA`ml9C zi4mpRViS^KrHo52RW?z6SK#55#)fR6exs^410(_bkJp@Wj*i>7rAGy1ZectwkdX zqDc*l<3ur&jpi=7x@UP_kNpM(4@XFD(+nuc2Mjd zq`DK=XQ9Hnlj$RfIK?JWGeVq#$ubz8Qp2JQO`Ei#28qLWM_aI8zB(9HIWlDTx3qMonT^nSHQ zewn$=53moC-wYYTW)vb;pQjQ~VnnI7IEiE?Yp5(NInkil6-d3WxIWz%W?rV(A>tI1 zI#{yQ(|^oB&qV`Yt=a$88u=>@Qy8%PX9Km9cETYKCH}Jnko7ha_1+qAEiwcHVglVwX%RcG;w2mQ=rzQq2)e zOob2fFWBNlgJP|aF21h7Lz)-_-7F{BJvkY{`C%9OO}5!&@bXY9bowt zW&YybB3^~l1ydN=gcq-ZejWaX%0;6o?cC-%s+V%?;|wGk^h zZ$V7?Kw=UCaea3) z%!Eu!5OIo09b{qwxM*6Ri3(6+0;JmFX(VT|hKlNz6Ag;phLj0$ecUt5giP;2#3?3q zkcm2Ay%Qx}W(1U&0I9aP4oO4SP*IIK(V*Bkq`O93Ukwd2A=8r(af(SDEaX#d(Q66Z z=4<7`0Y)l_!0QJY86dpfFcIEcu>0nH1bb}WIucpy5-K#oEX|~pH_3*@^eM$+TI$E# z{a8yjI=otbufLJ%y8}IoL36i~*!O#NFhPHqh92;0V&|4IcM1Jvh@yGXd7#9IQf=`H zl51JRN5Gq|vi2!ztBZZA3o9c1pg9@db%uSZVP9&<*q$1;I>Uak4(Bb1T{o$MA8>Wv zFE-@71+mK}6##&)Z3h4X#f^vL^HJo zylE(VJIJ&IaW%!(mE|1}TkpIDu?HprxEn}2*Sp; zL=0CfFJk5`id}c9?!T9$N=ImJ0qvrN@uCV)Vv3Y%i>HyC$r|1PK6Ii_i9Ir{*m;-U zr^GHgZ$Zp*@u@Ty$xW)5D$a19*t~@ivoQP8FiERdn7fvw*rE&5FLug;i&^mgGqD9k+nYSp`YZZWqJYnO{T>4mSLkp=0dhQ*smZkaTS-4o!`tmsZ6D%KEd zZ8qj+U`tk1pNNXv@G3i`E7sw>Y&w`z@gF+Tpx9%GimMgZ*RsQklj$Rfh{Ph)K?f-9 z6Q?bTnUY^p7uMshZ5cnPRt({=}7mhFC(+%lNl@~PoI8LGHUyH#Qfvo8&k zv}A?3;?gVKgFQB{*c0b1h&8&HN@DAsw;*PDDy4Z!ZXU&S--17d)mfM{PX*;^(xhVZ z<~<2JWnO0 zOvCh~F(x&4g8&LdOMD8eap@&h(2S_XX_Lm%1eBNyo@$HRkhEnD$AObs(E*^ugiW=@ z3X=J(;RWEutmrIIV#21{;$rtLtaHt-Z)Zz(6U-j-PJcXhmt$G+uUBwLp(hhB6JC^4B%wZ$bQ zSF(n8f%meaTR@2kn`(;>kUY#9t|fo#APjxFwLpmxrP^X6lBTR-0XXVJePZLL6k}%0FdLEIYBJyR} zb@SebiGmC(8Z%77UO;rwC6ZjJv$8T#sx4kdvXnKv1H79R-2_TZqN%p{5Xqygq2S}J zXf2st?=rkkY=h-pOl77M7dvB8F)K;Z6)DW5)AotYIB!AB43i0$3{8~WPZABe041?e z=PihtVbY`NYCUz@L9ysF?vk$)*RNHCmt3Z6ky9077oE4%gq19VOP(4QWq8dQ_N9hN z#?PXWm@%*o)@9ytn8lb})HVz|Tr|l=Z2?M5Zc=Tr8%ZH+I1fCT6-@#qCTyxLE+RRd zHB{CugMDcRlk7i4`zRYg`M%Hf{G9gw%O&#h7xKEq+EbNMT zeV>ztDJqPj4CcOyLg9%rqqE%dnf~ z^%+kMi!xL^!H6d9eaNriO$*5HHWN1=5@)8L{?3SI}4m>i|rViS@LS;ID9$%*>J z223la?9f+oWO^Jh|M0kDYc<>mTIwTfvDqom;&MTb)1GNDvW89p2%x`9eWc}O;#5*M5r|ULD&uWMIQT< zwh?`s%TiMB%|MB%_f%W#LeiZztN`b;qH&C zM|dA+wGE`*=+ZCv08gz3fDTVpkxF*(9!?DGG}z(_0Y5^l?kH>_kPe z=Fdu-x7uT;Yg=xsN86piase`ho+G46ru6hOI3obxuISHE- z^Z=qEr!Dw=6@U_xSgI|KBbm$^DjRp4Xi)4CqymWRC!xXuw1K;z;G-cj8FHdQu~A5& z#r0!RVQ87^XQ#=LnAE{ID)_*O2E`siib!0)C>2H|)5j1IiAf#I*9AMAXi%&RQbgkV z*{LuhnHC@-5}R?}lCMGcBUMf`colXHBBCbo$>Z6GWO^GSBC)z-@|K2Ri{`xxdtlx$ zdJ9t&Q`>oIMJY31yZGm>&Lgk+Lh^Ph)jrGcivLtt6Uz4`ndqRY+j#u8m6c)iZZB_ zRNLdVVWp(%-awsX{US+;bhU}s;!d`>oJJF!n zNr*~m6mL6`trVG_hscCjggWT?Q*BY&I;ZXPnMk!gD@DBupwxm6^D!b3iETh*+9cP4 z9WKD2SQq4O6u5r-EWDI59e{{PY~Fd3#+Yi0(kgIxKLRamlIt`;ZyI2qFVhkMuDCb~ zcVQyZ^;*UL*og+kow;@{V^53swSpNIds_FNJGO|n2FC!~mzcObrCWeAHA!b=(w;-;6 zgSdWOkG$9TIAwYt3R+JpDoUde!5EZklcrk#c?tj##{t-oc~8U6n74%}T3s|rt=FJY zIKrgCiw#H`P3kk)1?wgDw3Y^p7mkSO_}Bv*mUPSkT9b|b4*!7jU84T>#6x=Y0M zyMkdY$@B(9++y3lAaCg!?4EfCeu#2INKe5on0Fn~v_eQHVTv`lchX3Uiqy29^5sso zJzo24^tmOHGneXnrEghK-1`T<=<~5Z&By*UAN$jMB<-(67=@#7DuxK}`J@a7KCEr`4|P=-b;hY!6rDOxGGLW!2Rtz1dJsw;clMc1b)X(UCuX@$LNUgg!oBtyP$lg2cT z$h1AFHfhwUw%2RPS<<=R{Sj^hh}7nPlzk!yZma7YBvwjFLVh3YCc$c)X{iG?WL~e0fC|k*$p;SBObTaOR|rKN z%sjf#mR#6^*a7qUn48HWivQ1!a>1=lzR#Y&LcoVb1*fGh-5ksQC6|5 z&YN7DR9lqxw$l!5`*CgpDA*TE4SQsG-f5GnPqn?$Di6WL_`CwRmAmft2_EE*uP_;%E)UPlj7^P3|8|9LcyzQ}nH?TE61{C}KI)07xv|+wtR7gQ zo}3;YjlQ}<7*$yrzLge#LQT9Wm^=LvsEyM?%>SP=u6+f zs!A18o|`y4HC#D1JLW#Fkqxi7CnrY6C{Fb1$5%`F_}J{+#Pn43?QN@RRjp-j^0O;U zrl-ndv$NB)<>`@;W3#hkqwc-^Y!7I(++%yo&2MH8(TOB~yuKrspOqD%6Rt>V^|@<(bLh6BAR1qaXT2-b}Hm z>ACVxOpT7sN8jqs8y!MX9zHfYF&#IQ5AIpjNHBdhccADJDauI(D`U2SXCI`t7G#O8ky?+-TU%puAY2tMt{6Q?^R`*irtXMnN?+z3Nw0WtTHlAK7W&r zJ9od#jvbvoZsl=3!m+`8M6rdXGw|uWnk@Kwuv($&XC}vJj~^@NZAT`jxvl=i3c0!g z?z)4s!?P!%3kUPT!W@)`E7A6myhYghqW`)=oi=tZ!0gz_^z5iw@u$b~@lY5waqc`_ zksHUM9z;4%0MC<9X%Cn2)`4}?l_p;xcZ8lO*Obw4zCb%Sa&1))oBWiK< z*bLpIs>vBye*gKgyrs%AK1OFo&5le@RVEG}n?5$@@)!Nk@z=DbGl_;@&6}i`^6+%@ zc!m1#ba{$9EBXz#>9PewGc!AOe1hbopFXjQR%70G|KKVL*AGV*R;Xsj=Ela3MDJ&R zC7YC*M`d>6X!L9BiDXq0mn&o?u9xWd*=Wd`aQ!Ff;OLaS&9Adq&f2IpHO^ae7>$Yx zc?-KLhi0dbT4i5kiJFarD;+(@>M$p@!M~ZweOAFdgPXd1cz7l{#xy^xREYzFlT7}z z26I!xGc*8hyr_@)?`le2@1JHuoYl?DPE0XI%?{6uM_*!knbp#y<|?ztMk>*dF;g<# z(Xr8qVK;(~&6c@^MwmP;Z zpe|@0@-CE*2J&@pi=sxT2`WL}h4QvQejWc!=$2&P?yXq>2l9u~#qK;d`kmv;kbc$p zB6JDzF4W&#Mc?*3<$(&&0@MX{L*9k@nN{@q31R)_@Lfp1AAB2r2l6h|KSiF`4-jSu z8in+8yxxWKg+Q)fmz{ws&>6_PYVz*4Q}56Kq@Q8+E|gaSdB-~_KU9G9BcDBb_CJZzV=_l~KI}peh1G#?cu7gg-|2o|${!{97VyEA|(@)#w<+qXD zh3-N1-|ej_YaoA$-@6hv`k}W`NI%$i02+e43-ybu=%2{;J@jFaemBj#P~I5GWuqTQ z({GdM_rUbKW}}dI`gt_{mRdEvxA%G1VhUuXlBlLF=Ga$h#J7 zTA?S``DhU&Zc0Y` zL*DstZ&ZGow9i84ApM4wccJ`BAfJ3c*B6?H^s`Uih4Qn3e0>vVPoNe^zp~_AC@%!^ z2lyXB`mLY3@1@+SQHjS~L@CEmUR znSRPd@@2@ob>GK)0&0TvqZ{6Z^0q)ej(-x;Ph2cQ{`Wq7xC`hmLYJVYkazlNivw|( z<_)xG{EEXnufKpyKVVT!zl?q@`m6A3P&GUKQbx@x@mxf98Crt$s}0_T@|%HtaU*j= z=nSMEI`A%(Uk>D_Uceq&Y^Gg8C1?`TcmB6Q`i%cWNIy<+1@cb#EOhP-%4;?eCsYsV z+xy;y@(qE!>qX`uPzln|H3o7|8YU;(4g` ze{Fqs1_xYF@AlA)PGG>-wajU z-aUx1*L%4>rKxXz>eHP1=B5AWXQ;1TMXyhP>Pw>DDSpLOPaKNNJINnGdHH#4E<%?e zecIByP<}m-KgO>wRO-u-2R`AgiFYS$Vimc*>8Ou(UPY&`FfKt?V!Lzj4P9JcXf4zP zJ-{}CUx(j}RPKh=2`6mbppRm~^ZJcV?P?m-c>4tjvi6X+Ur8#)JFg!IwTMQ9$`K8_5bE3WU2avwncm~=4>C2D$pkpKa9Q-mg1T8@N z=3^J6k2luA^`Xk!kaxmYpsR0C{*W{tLr)-mX3@J)zBZ6Q#{X2f$hZl47s?v~c|#BN z3f+hF)j#j_k-ZDh(^xM36Ue&*_!ppR`m4mX3|)uxu{-ZV`Mp3c8-3Bvf6mU^*CU%* zMg9=kW9SK_@4tB$%GU;R+2|v0{tIv3UY~cnu!_97pK$})2I(Vd-i7jkK)#Is26Pj0 z-vx^Ugz^W0{n~x>E0F&NR|EcAkasQkmjk_*cMPzX1r;ED!pgf)J{icD@E_Pu-9nck z@AQSL?p5U1kX?svK>FsBccJ`#ATRJFZ~!_0>GMq9h4T48ei#3J=mDfJDR~#lYXbQ^ z{sm|e(no&03*{FAxoplIVBSASeL~*plQySTk?TV~`o@huY!liSK8+kY0O{K;-i7k{ zKzytP7o{D!ZL$p1p4Vrs55G_i~;dMf1=}NH0x$7s}5Ca=rFE59$4Gz2WR#{by+ZPy?j*biE7Zt%3ad5w0tA z3(~8m-i7jq(#7rpHjkjkkY2p>E|k{?a@pwpN&mv7x7XX2=VJLCxOa6^v|nf)q!$dm z3*{|=TrU#pWxWM9gIb{bP!qHs^6vHYSFybX-G%N2;i}1>V6*OX%=w_lkau@a(wF@m+7zVY@ZRaI zg$K|>sP^+-N?xnTFJZF;U4b43_791(d4aL#i`fb>1R$e{y--o9R&3*l%EUavm+cAJi&?1^7NrY9C3>dyAuyH)102* z;Mbw)5uLgjpWvHD*%J$ylT$izqJvT8V^hcG#ztR^cFt9{Pfl~-(;ZHlnvRZ+&CLxT z9*cJNmdd+3dwbh=c9wffody22_mrY?d2W*qKSl1$OnFY{H_HW%QBCjQ@K49s+{o<2 zj5}yJGdw%S!H$v1;kmhpGjTJV9z9VW8Rnc?w6o)r<(|&&&i3BU^6vKDPrgQ$Ijf|j zhUJ~bV`In0qTM+v8fSE zD@XQCj8et9`r=$jd3#s;o}HZ?uXPrMTu!=^jGPDJxDS`XPS9kppdGEz>6tiZT<}A~ zWKG9d%HuSEzeXDF{3aj8;e?kR{yI9$0i59%;!}$oMJN3(Gr4kEkI;Iy^VW0o?N8kvUg|!!vV4#j%*m!DEL=gX=n7nK*PJ z(#h8H)G>F&b$T{BULKu3c93??xuD}wW$Y+to!yCKOP*u1W3yd$<|mq`7$ZlfXt7+0 zxk|4)D5O)rme&%2r*};qnw~v6?3!eG=k{sNfT{KE?tP`aV^>da$y!u*7_YUf>@`^R zT<0No^tOC_V(itj9ZKR<;KbBea%!{85v;M%-0?j-xaBmFKUkSR;>Yo?_(&%wz=lUp z#8G5q5r>PZ(TPJ9DvgWwQVX>(Hr6#fH{MHwRNJJum0>c()!VuEpiYn@vGY`gVU86? zseOU!=1Rm>x1H9OTw@n|?iMA3mGNUo4^9nFOj;J>kUQd&sH)`tUA=wn-Re0?ySA5i z_O$Ph=n`fp#%L0#yY?44d+h!vAMFRp7{?NocXd9m^!1k8d-w0z9yCaf%??ja{2;kJ zG&y{DE^;RUk8>1^E-gNhnZ0c8l&-sL`iCcvjg^MgvXZlt?qqd&*7XV!(u_t9l_#h> zb+Tphk?jeBF0pUVC->~#wz54UUhx9%66DCTpA=8CFNlFgaJ{px^lL90L#|aOAqoR~fUWUyZD=JG$F< zGT3eJ>*?LKcMlatGoLtXs|Ar6FMMuU?XnNqzJNq+}(F9Y7G8elt?e0m-Hq!&^_zzR9 z3<47jc4cl`bt2Yvaf4VNqONw@bt}=_q-$}SNo1=vxn*gE7Bk3}U6Hw4&P{?`O>!}NIeR`a zvilg)2b~zPEdC5A%bgN4XyELd3PT>Ty^%v&eP>E4q_CdpWV% z*|WF1+jYnLcJ1ldyRY2Y!HkcYS&4pEGcPW+nuKoTxQoq=XS5;Rh)kEb2EK`{91~aA z)#e7tx!1i?@nzK@ zWD}C0xw<_12;&x0@?)>>Ft`R9&{a#vG`yBe46bF@_i$jjue03#N^hyBeS0bFm3Fk3 z=zh~V>~N(r>tnEM&__qMdw7Zk!K~%0UGMgk+=Q&G+McOsZjp}O-4k;Rn?dSHx)x!a zUq9O*?RIsnHb2YWJ#KbOm1bIl514ryO}Dvwn<|;VWbP;*W@ow3&arLoq&?I{9|yJf z?qRFlm0Gtc)#f`|cZX-Q<8FZXy|JAvbkvLQu_>(OFhAYg<>u(4$BrJQ#cGCPi-*j> z>iT)+G%RA=+cB=c52}+UIBBDRF9hR9vcz)DC7r@$)*$VB_UGDd_>xUd#W-L+dQR?o z5jTYUclEM$VlTVsLeYb0vEWu=%3{>dqUX*+vCsZ)t>3nXv&(Ry+0$9<>-4jp z6`fM=-o8>7v)<1hn}}a#%jPD@t?I=Vf4bEtrjEFKy)r)L-_6PubCpB=Wp$0E(*E*} zzCGJZ4BX{1odv7b?d4ZkwMLB1ZYkj=dc7y6Mta6(CQn4X;lph2aCCHHRHI!se{_^g z@OXE}zdyCJmtJ%1XlY!1SI#)o%cO5KXU~s~n;;Y>=C!aosG-Of1xFdV%kl6$ zrH*XUEyhd|PZ@JpiK!$vmRt9lfg1{K95|6KwpdJSIxsmhJ#&J2kCs==oX1&dMB%%C z40YBW*jQ(kvFd1b$QBKLAwjRu>-IYQrU$Q%%~jldT7&1+jobj#zq^-+N|#FUZ&k_UAWm@XQ|z0cUna;zZ;2YE3TdRDebGaurHSn z4)ac1`r51px`~nUQ8$1G^O^14O#M6DSfs&#<%1?}J>0&`x>$DX?9_XqkxlZmEhCs8 z9OqR{*DGk?-K2jnGVe;3>sp;;!>)XrD7z*}rrGKEUuf@BPPr4gWoK-apH`1ejw$7= zO@&l3u2R|0p@GlN*?XYT@EkAEuER@XExL?~T;cYDS@E>SdLQ z3Kwg)@29*t8)tfVD)!{%S{Eue#KnVyhD;wL3gxo-_^Z~E{lbBq00>hwtC#t#|+P}I}T~zYGk6K$s^Gm^ zUIsg=%X{zyvpU}D()2%>X=~JXGmXrUv!`=knVVqyC*2Y@sg!InGix?YcU)CYkW_Xx zl-c9UMG?F)<~QqD+NE1jy4T$WRPSzk-f7{8!teYL} z=2bf00Mjb8XT&-)woYGkTc_!b*wfkGv0u5R_tr$yde0Hw31ozae6-JRBA-H4l+{Mh6+TY>R?R@NGb#zk|Fm&G=*-V}|pUCS^vI!6DaZh&h^ zgVW+peW6A+wrNPl+I>bi`C3P zF*-bZWaTg$yr!59@9wa)GToJoRKwco$&IUf_VzH>uxd%}Fxw>V-n%c;>|g2Iv7@s` zE7_Gh(Zp=~&+$H;d+ps_-{kh#S?=Ana}V2OOwQB(G2V`K%dX@@3Cy=`$GtLFKEX{n z!DgeMm6SU9@yMOpnVw*);zZw+t`K{j%%;+9eA?S?xBBkujb1%!qmJ!ia%;PHwB1-o zhfg=k9vCmFvidv7NavR@K3~Z+LE8iD_R`u{Ok;h)diwUnd#!Qk*BS%Tsc1NOYmjzZ z_*zmEi+h+59dcU=WgcCS_T-68EnLlbvX?D4k1yPfqDHBY1{`PaKwE9P>aX;bN_+RT z*kmB?5MF>(2Epnk>@oYELKE&!`sk4GedSPE3tV z9vkJG6lz?V3%;+tXOG%t(!_Knw)5C!PhTP4$=co7v8&ydYyG=AI`{JYr!q`c&(4jr z-IUFtAttOd(@YbSZS}a{E>F1i4mFu@Mr`#+|Wj-`9Hpv2iWe=a*wqEr@X3HJF2Cg*Y^facBtD`flM)a+L z@6~{dIL>g;ztre&)M12!`_=}Oiv{`diEAxt0wg3xGU1i(Ks1OlF3^4 z-u4c)SC%?)zvdo~1Z~L@pJUB&Bq$IiWKyeT7@a;$H=o<#P8LrGr`cgUia|GZ#=n2%Wh#A_v!BYOzsOSu8akH zMs2%m?lHvd^s)R_qW_r1&h0#e*W*$;Irbdmoo%;!?Iv7qkj-8>g1U=F4>ZSDf~*wV z| zH@7)fPS+4JbCU;cz{hKTyU_7ch-~SDFw2a;NV!@^#|JXF4>i4ypU?Oa$`;OU zcVTbGX6r@fDm>0+p~0niv8*|?yUMdX#-IVkdkEPi{4HtI(-+jKy)Zg^>;>(Azu<0^ zk2G)Gw6XaG_OM@wr`J~7+gVQe_MeT@HBohpu10kGDMK%nBPNh~ZXDd+O(X12xRZPh~0u6}(F!_|$tBiCD{lMfy@bnV^y$zIzdZ#5RVBLR)cRt7>+Tg*Y}j@6mi873>~_Q@iNj>(N!?_7 z&-VO&slU@**ORSJYj^3lS5y-%t-DoId31uaFWMX&bNARPccNPXaA2gPyR)a4 z#kyOi>I*%3$fX?^`=;4s`PE_fr6>A8cP&>LV%&nm7gyEhIwe@gErXrH8TQTH zKCI>(e%CjAhQ;=ZHGSn<->gczHx9?d2OHRP;hwRhRem>+;gt=fAnWl%Vm9z659-T# zuA*I5f>|k>$?@=6cDpgI|4J9S{;o}TSmKJ0x8>=}Y@@?g^QyPru3bA=+Uf9=?H_3O zH=NVCofv(RM)Ue8+o`G7OShrt*uM79gySuPb?PUvhH8^3|W7 zu1K4u8zTTi~%-k`ZKS|rn>rYACI>@HBx_4U3JQVmWcWT^!&G6}{ zWG~l_XmC5wJhhg|<~7~*vzxj^7uM@PVaVX=)~vZ9QTrIl&8>FB{cuE^bUWR(h`WdF z-2OYbJ$(bCs+eh{JCWIZ%RNE$1ezlIeIjj|YG*O2cTPjGsMg{U^hCDl;<9P%=Xw=4KnrfOTXiEcMFgi?%7`o(Z@c(?1PK_Ny2m z4)KvUj`rCUUTd;3Mk)@U@PJLDtaezGpw2y6iguy=<{dWibWk(CW-Df92C!S*_R7hl zMYHOiY1wx3WSUccZNQ^2_OR5)yVkG!t7GC2{bf4QQS0KtaEap()~mYxZJWZl?BrJn zu37rKqB(;$*`dbKv8icNb`9aPI=#x{zZK_W()~!=;CIQ+`F(}ivBUA+znXEn1;8EA z65o)Pv`3p_WS zXCti6h9(ckv~J_%HWyR}u#(O!K5pi^=I-P~?ao(tNU$S3Kj=sO_*rqT9(Y>L^Jz}d z+R5|sVdnhWbDLGClD)#}PxbV|%?jOPkGOK^`DnVBD68rxxs3+RQ)*BFBulL$?9<3459JqwR#RaOfswTAwv z%3aEE;ZL60xIsepSy$IfCHsyCCwSVxetUWL@WEuQw~w=%?XU3EDd;RT#})KPm9#&R z9LNb);qjKKjh1Q0V8`Xly?xua^V$K^`_BYzLKi4LP0Yz14#c{{aGIcW#?LAJNbfeG z{Yee_Ej!^A&xzO_9Ob4KqiYnSPZVo0wk0z-_KqbFg_H4nk2~?>oo(4;GU7{V%S7G3_DDlB;<7uC?0U#tV@y6m8dOfa zy0YpCZ}pBozEzn%UaH>N*i%%yIJS7Dch#eXSuG9YkzZ$U*Z_~agLvx6d`iy=eP^s2 zgsGN3)oHclo=?ONGRMcqq(uh+T`4V-4or}w-6v8b-;x68uFOQq?VW-H>2)lOe>{8}P%f0L1 zHnIG=)D3hDdU`S#GnU%!)rNROZer?qeDcj+;y7%l#NzD~JsWnnSki~NyE)q*x?Ve( zfp+pHifh5?v`*WD9CWpFW%l%9yL)ZM4*PPl1cUKu-Wo~|Oy?h(_@_-=XN_!Z5BlSi zhuxm0%V5FA;BI?nrTHU|k@^3k?crDlwfYtG-Kl!U_yJ3}ryaj*^I111tukZhva{_m zH^;8Dx>Igx&HLS2+;!B}aoh1|o?g2guQ)?#{i)jk(HD)~0GPg%;2TSB9hTXy%jtA= z=s3k}lhQI|&#<{&TsC&=7O`rJ-)pf8l#9!!418eul*Rghe z;%+|fBzNr0T@|;L>$k~r>EzZJvDWn#Hi-DeN9M^&QgviW??qVNtM@_KAun3>^)eeA z-CXC@aZZ18{DT)^+$Z;$DZ5J~d1X`H%{Kak?lGFOYfQ;# zmmC;HLJttXES5Z74K_$h?fKf&la$OC@ejvCJxdGbi>?V&>6Ui7({lw*7~6GB-s4aO z@^sdA%i=!eHR?2(G_ls88+S{Q$oFK)(|}#O-6GyL#xlD;HgWIR)l=FZ9X>eC^C5O^ zT*fuESh-OV+@nE9e1h!bWS4efr@ z@l^lHoa+=cE!D#&TmIU|}=_Cl{aGtQe=93OVCOX}7L7qb4?h*gqXbFgSUHe<_< zU^-}F?p3(!P!%P_Lz8s%E#`C1`^|WD~!sEx|=f~Kdnc^1gR^Gv$y$yMOf^D_v=EU&}Y8n?9$HHFT-EZ{&@jG*>y?Cp4 zW#{3}FKEi*#u@$62i=ZMn=<<*ZrZ@Tu6Ic68CHBE$UTkC%muaA$uOL5U&JSD-IhRf z#NKvImkjCH8?=KmL%DxLIJ~v&z&kIG#jmAC@iyV=_bS6LSBf>pF81%;8(<{shh|qR zzTMd+c%xmpTUEuYm$G$lerwKlT9WNGomA=8ODH6q9H66Zcd#Sqp2NOI!Yhxr#dESq z?~k~r7 z><}RxJlnS}nU%84}aq&6BM8WQy%>U4H<;zunX`7Qf)62aNGp;hv*uUeIN4 zsQQR)qs{I4YOhPR#WwF2+lA9T5%(I|>T-AcicS9H#xL_m1(VfHE#<@U)XNr>_Efb@ zrOh6USiC6)>y-SaMzF%mrs$_o$=kj0iBrEXV?A$~dna=oLr+1r+xim=D%tgEl17|o zoYH#I9a0FoPOYTlJ$08iKQ8DzIU}l`23gkhDB5kI+75~pE{$@<7~i3{-1q9)O+0z& z^)dNQ^uKF#i(iwCi_JQbEb^+Pnr-+3QMQJ2ZPr~+I)n5#rg*CBUU}?g5<9{B6>*EQ zPL!pgc5zlt+LGGO#ZTAle-4R{9AqZXhHMiuJl96kwR1JTZ?e~i;x+c3_T3!1T{&kA z?k@K^f%uip_#6x?rdJtH)zc?CMC@|utRwGdxQDxC&Uou4u!D*5eNf(MFHxvZxA|DS zUt+IFXA7kD=veytgKoj`Z4b>&ym#)l$FUkL%BwAX z{VuF6ZtSd}rMv3jksTJohac`-K==%UZJJ&Ns?jCL{XKGmDKqhs!Lpf*L* z;WW9v@i~#hcG}?Db4~NnZnDi7WzPp zpM}ev4B`@&t=xwp*@t#~tT1st-DV^{jFgJ+n_d~{UJ3lN`@~oI;@Ur!&zz6rZv(?} zTz~Vk(LKKGrE;had^vjX`!IN;f6%ffy4fI~Ij`FT4CA}_cb;|SQhX|(kMGm?73LX8 zZnU^2y8IUN>%TA3XYk9;*Gv6@;P)y6yF>WHbT5;x?jNQ5*4R$ze-R4f8zsKA$h`CE zejY&>-)-V+M5g%O2KjP)1;66cZ7VlVd`AiPnFIM`?L4APUoc zOuA>@Wa%nepYAW=SG?X`|NNThK3^R3&g+&Dc)xU){&Y?BZ-WH9?i#v494-DxdfncE z&Zm1DzYl{q`oX_i6E(^cJFmM14&ysbe9FJ-@12m3@AvWhFnFV%CcgEJ@|p9xKL*O* z9Ls<0d!C8rJ7N&)q<8%&qQzcAkcjq#y)PTyRi$M*S!-DZEwcwWVhJ^xVO`# z^len?FJSipuMF%Y3R61ynP;MfP435AqW7Uty{Mj4cVT=_|Isti&u&B*yC7;Way*pR zM1TBOq4L=zwZyA+`nD9{dp7A6O{^B8dncM)LZGhU8Pe1Beh8h7 z@h*5J$>f@-8@vE6#d^gjY;H|7i03x=3Z(cHzK~SRn&|J!@F)0MW~|qJpX0 zE$sUgP2t~$-8}-GLN5F=SYNbjrKrMV;75F!?+({O_$R?_;HB7JzapkD`rV9i4R-oM zVQp-`34W!*mm9HD_#@ypFny{vp`c zw~If}EB>|gS3dkd#eO|_G_HTy3wyon*GcHyn&{WD@1oIM04x9h34EQ#v>4;J5>MNA zruDrZJn$~!kMrLNzDfskA;x3UpXQpz`19cVFCl{~{-1=O`F87{g?|}*n*8|drK|~? zv-)@(VCSX2L;Z4qrPuWd^%pgOIA_=AN`O@#3*^U~>6Jf^rEhvZ#frZrz|t=TSo-Av zOW&dn#yN|>Ex^*RRcGehn&`Kwj}73keF}U1+qw2_fxZMTf$w9W`c!<4Ne67{wFX%F zS`9GH(Y^@Z01nd=_IlZ04zS91HNeszP+;d6>xgd>d>yR($X?i-<*z{ll5?hS4zNov zz%IQ2OW#8KGq)ysCzGao2f0QFe0pl1UN8G|>r$-vt_9e|NBcGxU!MR=->k`}bEfYK zu=H2d`8sEM-9H{nzfGO8b8+|pOMfT8%HM+kOMg<6Walh=`b%GNeZDuVUmswFAAes~ zuV1_}XW_fvpJJsy5MYI`RpmNo>8}m2^w$Hd@V5di{lgEs!2GlDb>Ev}=@$aLo9lTR z+>G2`PhoSG-z(~DowN9E23YYu{!pxr)2sQu6iZ*(kYeR`F~HK7l5u}c^aJGQ-0mo9 zW8CohnF;i=AAKQ>@9$wh51x&hmdpg>%mGuU|CsSn)Ob$!(nfmH(oSU=wmjf*Q zf$z`i#{(?=N!E4d)H@9E_`=Ze=@+*pQ3%4v-(nd^H}<8dsD3V^-B@vEd3jW z6gz!@UHrXS{iOg)f2)+$-wm+zb^TfWx&TXmA;3!ia)708N*2~uzUBZ+e||szoHKp; z3j$WYmQQ8%Z2?yJMza{Xl@F?;20_Z+jE>7x;Y8{|KA2^d3y4Sm`|p zu;M#+B&%Nvu=Lj^v-+C>mj3?Hto~7er9VBL)t?Wr^k-+X`bz-hglo`ac89|K1pXN3E?LH3gOa!(iQh z?~8FKSjm4^jLYCl_#0z<0(=9%*MAj!AFL^$;`^uI8m>iSjDG{%1a64&{|#;fzbD3j z0UiQ3#rU0XX1)XV`FjDZzQV`93w#ayf!KZod>`Bxu6daqxR%{r>|#4fgr@EAUdF|IW8?e}a8}HiI7rcsF?MvuXN=!7X54o-cyC!QUCD z_m9Bi;J+2)Uj{FLeSZE8_#*iIvHn}&8{l`u_*oi^*8g7r-D*HJX?<@6H-H;s`yzN7 z_w}L+y$M>h;A+V4CdDi-;!9M(lz?Z>3{_Wr!VBdZQ!S}%a{(Keu z6s#qx%J&uUTJAaD9{*?X2C&!vYj8)P|6T9_uuuQb!6(6uaeVK1p8FH*>*pijYXRN~ zz61{6%mV*x%2;2_6shzYksn`}Xz!fzN||`QKGf zdjWqS&hIAhJ@AKO{7G;f_tb_MkAYhQ`~~nR_#?6Yr@&{yK0U;VdzRgVe}+DFZ;gI6 z#@3$R>h?cE{cod}j%LaAd296N;AZ^ZKDAYU|F&Fs8cX1wjh>I*u7;er=c9Llb#Iz` zK576fZjav!ZuOAx9|U&=_`~2*fSbXi0p0?h4Dd(6^8x-i_*8&9z~=(|3Gk%=7r@s7 z+z-AU-~-^h0X_(R5a4kz6&btdqbcwu`bTrmM-}kn0RJHPX@D2N^);#ekARy3d>Y&m z;J**<2=F;@DZoDiR{!eLzX+}b_~*fk0bT;14e_*{TDf-eWS1$;fg9|fzw_UX5Q9|U*@IHLdb z`fhN2fP28{{`K?G0JtmAe;Qm0@F;jFz@GtE0z3nr5AbpDg#e!fF9rCAz*ho%3VbcV zUk2X}@LBM~0RJ@jNq{eaYirZ;ehu6Z;LG5q0Dm2<@x#~8Rq$wl{{{F=fUkou2KXD` zr2yXoF9-Oy!5Tk&{CB|*1N?j78v1jue*kU@@E?J<1^6*oj|3Gmy&mjb*Fd^y1H0bdJn6Zl4ezYol?oaCn&Tod4zz-t4%4ZJ?UuYk7&xC>kg z@E-6?fJ@-T0DlU6D!{|w^tt=<(KvWH&`*PJ2lzPnetu11HK;M z4}k9kcmudLnI=3RZ3eFm@JGQ-0d5Dk2Dl466yUw!QvvP=r_ZmRj|Rb)1N|sCeV+Av zbOgK{=x4z<1AGE}Kfnv%#{vFPa4mCCe?7hoZV2#Cf|~<;9^4V&e*zv2@Xv$O=WEYL zzXU!N=&yp$2l#&nF9rD5!B+$Pe}JzC_%`@ffd3=-PJn+8d_Tb70zVD#BQVplq`ZFy zZV2#Sg45@J&qv?J#JVle*Ma8){0{J`0PpfqJ6;ogmnPc26#KTDZu-{>jQiQydl6} z0Bb(&0mhp+JMof0=JO0b zfqT}i>Qlk9Zj}^bt=dxetgE>YYt@swXWc3)#P5#2CyqjO{&ueD$H4M?{3)>NOLZ#! zEO;Q$|2TLiz&{H<72vDj3jzKu@YMkS0oXgWi~o|t&nY9Zlm2^hcuNj%%i+Epp333V zIeamPe1#k`H$x^Jp1=jeaHKpwT-<7_tn(EQV?33!{~TE7A@0Zep8{)6sC!KD|0-DL8?MCob}sxM%AP*f z+rM2KC$Uq0zb}Vh$>C4s@Ua~Jat{Au4*wQd=NA@9OZokyoc`OiQ4~Anr!j|L$l*_b zb)MlQYkI|ZB&R=}!#|V5zX;ZOg$r@`Z|3yh0_(hj*Vk&JD|X7?`@uS|P>92~<@CKd zJPOwNg?ofmem|enpUvT~gLR(aT5NwKr~jQC{u8jyH+cJZG!ig&%5O^}^9}Ud*ppWJ z`@r5wf27eP8<&4Hhkq`IznQ~-ki$=M_#M=hcS>&qSm!Ag@GCzb&*}H&@TbAou&-ZZ z_Fv5D&w_QHqBYhpfpvajAujJNu+B?7jP-v4_D=a(%eC=N_`^B;{W<)p9R4g==PPRC z_|N3@zX;ZOiH=zRjhy~>bNEleIzQ1J+kZE0!8_&e<6xbi@b^=1PJaZf^Aq=;vHJRv zoc>EWd_IT2p2PoJ4*!Q7zL&#)oWnJ=J@1tNx90GNa=1B%+jF=Ztn(dLiA(M0Ghm(P zxEbRg2J8HW@9%#;7yh@vI=|5p*Uuk;mp-1>_nSW8b8Gj*d%#cIXt(k8*b3Hp431~J z^go%iKa#_za`TA2Xpz&;jKB`p2NGrIv-M3WBECf z)1S%Vf0o0)ox^_w)_IZ#as9l7d)GT%|E3)Ncn<#nSm#X|;_%0F`mcc9d6HQF^_>1+ zNnfDPi|hAWIsJ3=6*^DS5{GXFd#C&r!8%W}E!NNE^j`t%Jjq#Xb^R{q^#2m9^CWs^ zDgD3C>HiR{^CW)!deet|>ek-g3)XoOAOA~WogXe-BvaN5*6Qww%5It{I^}iuF@q zofoOZcp+#16|l~W=$WnZ^R=A*S916_a`^Xh_`l}xb04P5|S^HR< z!ynG!_8dM4UN@W04}LVK{~B25OHPrD>f;+Z{qN-PpXcyfKa$Pgcja(P4!7rUZw?RV z@Mm-Qi#hxcbNK5yd@G0lB8R_&vD-Uc{|4~3)3)cJ`uJE*pPsd}>v1fn|9dfBOI+U( zy^YC%eIS9Kc5dS5oU^~J^w;@%Q4=2t;-x_UD~#?%%-48@(|sYrUY&gnEBAI{{K1#_ zP3kvj?LSfT2F>l;46kP#zR>x4wsEfYUU>Xo<*Ki;h9&gxkiSv;@XLsAFgw{-Ipg16 zc!Ocd-iZGJ*VipeT>s%W9bPXPtKBzn;rJLr{6o*jSNm~o_eCZDb(J^r0T#=ce}C4{ z>%Q=v4V1h_o2}q#Z`7`Q*)}OtHs0);&RN}xTgaCn$&4D5{nTMLWMbe$=(Xk5@|u2o zc$Em!kCU#V%)G3>ie49KwG`baT2`^w%hj*-3UlV7ukzgj`!K-ti2DYV|3H>~nkuV$ z{je(=-Rs8Sa%WcAvPqHs2w1Mc`cE$KRxrQk;WO^9TNpgHSSA0Ny2-^K#^CRnRibb$ zDgJy{9D`L}sE7vu-fOlmz-Eg|N&LrAX@6CIwLX_S!X)2Y=UWzUJk*LWgRku_T?AKvcT+ru|_ zSN=}v#w{fB?p_Et7%@^w57_Gd#U;5Ds}KubM-J=tK?wI z*5)d8u;t~KtA%-)eW_Ki>6Wc8SE++7TQ^s!(Je1+trDhXYqi$fvZd->vSn+PytQoI zRHZyEEnBNx(-tmWm6C4RR3)7)G{q`mHn;F)+tu!cEi}^AH7%RBRH?Vkn>JUex6LoV zTrEst5&V7 znpz4WHJS=xGz>!s!(zJUHVk2y+b|3v3?XzALiBsT&v~u3)c1EkzF*JYpU?UHJLg>2 zb#~Rx>Ct0{d#C%3-j%y|-_g0#y;sT(X3)K7j~(o{?mc((soA~9j@Hw&d(WPc=Ifj8 z+qs>dE^m71r5s*)ZtrKf3Dbg2dT+OF_ujpe)P29;Kgs@6cmJn{|D*c=W%cvm{d)O7 z$N4|0{!efJM<=`g8?@0u_n(7S$w4!nAT9|S>h0ct4w~vEuRnJW+Uhj+pM$pDgSL8u zb4k!v7eD@U&{pg7pM$nNg0}h)Q%R3-vO(J(LE9cdTO9z`25t2+@}GmYDM8zmpsn7@ zRIY>Q{|0UKq2NCUZFQ>n&p}(AxcYO?psn68{O6#p-U$5XplxuF`soGZlAvwRpl#2f zZLgqhub{0i!?aDWplz?9ZLeTlT?V>5XsZht|2b%@k3{`hmqGq-&{l6I{&UdwxS*}x z`dkvU)rYwM9JJMkjQ*S&wACe+{~WZ{hl2kcwAIC*{~WYU4ch9IS4ntY^bT6-0(HKPS(3gKrm*qu4#f4v`gD$>DjH9G+;&;hE;oQjZs&YsulsmK>gK$>Hgi z9G-8<;R%-X1aCtz}T1}2B6U~+g4CWj|sa(EUdho@n3cpmyX)#HU{VsdyYCWq%@a(FT( zhi7AQcseGB=VNksLM8`iWcXv09wrvt5OBLcjkUTdaORAM>oBZS6q``aD zaohY{x}7n%JGbrh*1fmi!SzU!Esv%-rf2t5z2sV!B?o1C*WPwJ|5VVTEZELJF}5h{ z?zVnkS6TCOW|CCaQ-```ncM2}vQ?Se_VnjSi?%(2GF|DlC`$>-!a27bBlxUqv7N`z zMQ6~q`7te?ONw44?ytGb+okv_yhWMklA_m7>*M2Z1a|bDn(Lasmf6nNX*>ERZAV|C z{U6_-`74`kCbpe#&02k7*79q8ee#7jBlH&fuEuxDoTx8XbZ{a?ln1m zYH$n9Q?dr0tjCWJ956u702&=U)|{W&%@`cx(!a*ak=C5WlGrVI6dMq^3N~an!gp>@{QG&N2oR5l(Xe@{&^4? zP7hz2qFYIGcWh5YbC{+(8wYI;?fKk>dQ9Wc9iw}^EzYOC3zog zye19YtPLN*vEzF8 zvE$l-C!eM}HnT^XU;U?^IrO9~J;!Rm*}4hrXgyg)4_It@W^XyLx{;>-%B}U;+59+- zEo&P;Ws;r}ck$@pp^@9!`2YM12Ok&xt&MJj?^l;z?0WpSkN4Dq3C(i~`qeX8trA-TXCn>#n?8{`v5(e{K`3 zCM<4s_Ur!CdU3bjUT1pqO@GzcnQ~mVH zY2jn%-Om`F5E8z4T6NXBDtx=wjapl@*=DftJ!=OW=nZCvtJ7)bSC8M$!yOR5#KUWb zpx3at^=puacDJZ%@p2Bo?#|EG?auXZo$dVqI?GMo&_AsUFb8i)rl4NxIR#m)_!hY#v%y0(!p=o`cBF4b!#*wmN_R(Wtq%=J$)R zEB(DO+kFdZUAUcIn|sis)3!WWv-z1}k%B9fZPUUpL>@=6_1Pqzd+;LJS`^N$dDGxj zZGI_j(_?e-*1OKPZrk$M@X1RL&7Z?9E*-Y+#o*_i@a-Uc9!7ACbgECEmOo~qk9P3B zzT>X`d5N;6^KCxDcurUILU#Bj5pK85@@X8rp9N1486Q6HZR<Vy^h?E;Ufcdn zw+{1`6E0XZ`=oih?d+;;wrD<7;jPvGdAS;vw>~tj9;7s3)^xqi`IhP7hmM}0rh8Mj z`ZNeGzqA)46ZrfNyW931E4V{-aQE^F)AaVt4h!G$gP#(%jG+gIzs-WC$(|TAmKgJEP^n@e|luFW=|GmV@59YU}5+ zUNGS!@ch~J&)w=iwq6%*Gk}ij|L-q&{fs=lu%}ILo?N(_+-<8*zvdO~u)=$2`gSJh zGtOsV%d;*VBYfo8Xg$?8*b91!-3~t3!>(KJAkQOs%V_mj^%kE*e()6^Mcy`dn(p7O zPp9x$>0#b}9||5|IWc&pG(Q(B++=3KgjAmy+68J5r0_vYdNOnKk4j-rQ*|{N{z;cU zIvut-0^7c{!$q_@zk-WBe|Aru!83Wnjl%aH|2V*oYW@h@dJWR5A76+3vzJ!8+FfpY zvF#trwmAv6j;xb!+SK3{^4reIH4|EWrZqnke#^gb*gDVVlV>|)H5dIKAFkeHo16KE zvkBLhtEU-mv)45_9Tr{m`)xYhs>MY}Sm2YQ)wvV)**sOhZv2cpf2#O_M|z<1w3&Kl z*4BT@7Ivc__P4EXetg?@yV|zBrxEOL{dlwG^1Jm^G*I(3`n2u5z$P|-0ymGRNAOJ5 z2Pyl6<*Q({o}<@X+G1Nj;bD^2)@u9a!X32nBYs*>QiBF3@;1f(nPYtOl}7WRTb|1q zb`dP!`=MnATMG3U(C|%mn~ncDg?~JjBWw}w09S4^w;4J^bR8SMe+JJpY}uf>cAG{% z9dr!!o;+pR)~D}onQe=Uyyn%0;|CAI^=8}jr;|G}Ne`g(nYx3EWu6lsPR{=r$NQ?q zKs@7yjv3Am)tfMBy54wIO;xLZ$kU>%<@Y7cv*tZ#o5nNrQ)_-f^Fu$vq5iRDa~D3$ zJFJ{BRSVJ6+@?35NMUFHC~od7tk}B$T5i6zw0Y~`@?iAD>0|P9gKHu^Uu4_8*1YMK zhs@|*oD1ZwZ(Ob3U|syr58&;W>NE*wsN=ik8O_`MhI;Gx;Q`*}i@|NHx7){-6Jnwt zhoZ}s;B4c{W}7m9XXlT$;G0eVpJ_HO$y6%wqA_+x$)cd8h)+8 zm!RRWTQ8^dU6Zc|xJGW(Yn~op7hGI#*+Jx%KeBqSa+Tb&*cTJ|x)9qz)kS^)V)KW= zw(Xj~Itd>3sqbB5+r$x!?_escm!h3Ax3}G6Bb~{Keu2Z@-SbiQKkLSRb{j??O&PKRdwd94w>yC6r-SzZfvm z>fS}!c5mG?!s_>KeXqW#{;_|a)$iHnTipYo!0LC|XIuUL>l~}!#hz>RJI;kxzsFiE zJN1YS?n%`tB{sNspT}S0dX3*?6ZHF3_K@)Rv^w>QjU?*#wK^Ra8yRG^Gkw4MPQ7Cz zx%PM+FWVV}oI_Ee2edE0hjZf`ZebaDo{fIORAMqWntJ&L^F8!2B+c@yPrccp);{Rxx9+MS z2D$xQtJnQv>Pzie+TT|F)=2m3djdtL#zbnZ`meL#X{Z>Q|PWGp+j1vFbnH zs(!9j|D{&_`(8ipf4PiK)9*uC^D7q^G(8XJj6->b(t)#^ha!|MGc z3kPF?)p)))kH;&N(R}S!tML|Fjpuvwcs$=@$K&~4I-Q2-bIA_X`gHFF_v3ryxSvEB zy)Y)y&8nXytA2dX9QRXT)sOFy(`lI2Yt`P*&~W=o8J!*zsj_NcZPmU`y1j39ZiRvi);t!{`}b#)h|{0evZ+Z zF_8qT{<~Q9?`KIxXT(HOWv3C^zv%lTdfXDLaVxFH^?d_9?rN)XH(HJ7&pw+VJ#H5n zou&S*E)Kd`??zF(ckDX|*I_mA^9l~((=#`=1~Y8>AJ$NCu{9?$n% zi(V2FiMJZ3gVi|xERJ5RdB{#9bskxbS75zAt@`n^LEKM;bo)xH_I0k;_M5D>@1W0g z&nLlZKB-pwVX##{eujwq$(GSe^*&+MU#?YubENw#x9YFPYP}8C`_+!t=b#;>{cF{K z2VFzBe?N1?{U^xi96dA4>KR^%R^xQD8Yf+PoP4WsO0Cx^gLTSaomSg7xL(`G=^Dk` z$6LMcr;)Sl7_HB0zS(xH_M<&KHnPO3|7tr<>%b&-4(6im_T)qEFucORr9pzT*Xe7t!n#=R+ zg5B%{jcYZ(bURVU(`tVCR`XkeCDQXOm7Z6b)x3OvAkS;L)x65B=2c;RK3T1&%4(i< z((~M8HP1v{0|xs+2Kzw<`@yQ+NY`uoCDzB&YF)MD2CL6g-_X|ezLxAXN&6Ku>|}jD z*bDT2V)OKRv%21?v|8snY^!Tf=S1|gV?3`E>3OAE%`44nJ?VB{OeDizsrgFJcd^xc ze19F!Zxy-0YQHyG?f12Isy+|wG@XaKKTRiH>_@HUmta*s%xYeFl+VFZ%FD@qmW}6I zB|YD2tNGU0`8waF=NG4YzIc8etX|hiR{i@~H*TLU-9E#r{b1LtU6ED0QaeQZ&+2oe z-m1Nyh2!?CWmLcPzs9PcCaZonO81kf`^vbVRIB}wVYNRpt@g)Yt99pC?T*Hp9 z+^mnA)%bDxnZ)yKZws_8>v65d9cH!NY;uX!JeOH*UvIVjdg^@xY`5!RRo_{9o(a

|!;~RM%^sxmN89$R*bOlWVD8V=vPAZuLIi_E0%X<5=a+m}b>Ji#!;!F;{v%dD8RA zx0+9Zy(%WMSbAR7R`aU07i)i!+a9KTiQbQ_#z{v%%gFs^N%uR*s^7u(>X=BLbick& zi~Fsxb2N@s|Fu@fr@^ZKCVN?|c9_&SeioAZZ!g_{yjA~+u2;XqtoqHfSLk?I^;>Aw z?-Hwi%dGmXw(8fNnwVseV(e-oJ*C^X!%Cmt14#sUJIE>##oG z>l|qpYX4cyW3F`nh0^^NS@pZz^^0`< zZ`Iy6)^q!)y;ke7Ixk0B^;1Y*PWH2;+;5ePE{=&*TlHUK)&DAct*-N}u7}o0j}zZj zYMex?*L8~3{!F!cU1wOmo^!1BXP%v=_jPi)^>HV!CHvV`p3g?nCtQc zt9f@Lr(p&T#$23>MONb$Ta8;{HSRL2aVo9mS7WtZoz-^rR@<$nex21kHdwWb?-u4L zcEfbcwVJP=`Q`mOTYA6FvD&Y5t@i6O>HXSZ2kLs+-k{g{(P2)qH)_AzoAkP{>US}g z*<$TatM6;-?9F=Lw_3+WtLvw@W2Dv>Z&mJ}#eLnBXtk~^tA2f749|C%^n6EJ%{SX# zuj^xbg|3h7b$Va3T1TPuIx4N!QDX<_^-11jHGbP;rN)o9OZ7f#b={V3HU3ESv&}q@ zTp3-WajfQ(Z#AC+dxPGurN^zd8n@PJ{Ts+_law`HXRGUV{iZ=MUYgZ>GN~VA_5D+U zRX;^m^IK*$uS#+~xlww4t7Y^?y*}+tdN!}sJl9&ybDb^L`%bd@(LD9=b z$bL3#r(5-YYBk?ddz-F@t@cl))qHEHueF+ABlR1t=IQTHte@rP`E`-eoAo(iHLq?~ z^V08F1lNI?(({^aweCXOPoGcZYODQOYc;P%aueAP$@Tm?TaBw<6$#9=YB$)bUA8UN z@syrdp7eEhzP&}q(`tURt>!n!E{%ySk)B_T)%@!1oqE5w8gHX?f19M+`zEk%-&wj{ zmQ}j~Tc+2I)qX6o-p^LA^W}D$UPspN2UgePjaILZHPmk;x9zF&yY>39>Q}!O6a3ti zVbyPzy+`Y`_iB8re&*OQI=`&8TWrVbI9v5oXSJ?ItLvw@UQ+Y#Y?tZ$v3|XhbI1j_ z#A>`stA6~*pF<8WX9vcj!9XYCkqw?Z?&jHl5$LM4zY9 z`?cF~QuE5R`nh+Qy-&y24%a%Z=22wt(shT``j%Vm|4OU%S6S``^{TJ@vfd!3dF_^`ju*v0BELAu!oHGlh%UN=_9Z?Sz?pI^3I z`_B&6@w0l})m!!NXD9kNua?m}b-e7|dOx!F#6;HGd-Z-~m+AV>-lyv&`+$DFvCDOQ z?SuNu6XG^!wv1&iZ^=e;k)xO4RJ`L92GgzXU0Pw0BU>ihO0`=man?Pfh=!D_uFwo=#8veOE!*J|GDt;Ua}ORcw?RsU&L>&UcP zN0!w(hFQ%g*J>U4_6faitma*cHCSu4eG_@T^t?An&u^pE{Mw(S?KGb>tNCPEjh}5b zevZ}n`BweSwHm+3YWy;+w3wO%p#-C$X>Nr}> zV~N!~imm2RX4QX%)jVqKzxDoLbsX2=I;;6?u-ZPpUznp-{dTeHH_=wwL8Oz9+?2>pZtzbv&%z5A*CX`kci%Scr?U!fKv1_8ILT%2!+UyU{+Y{n9@)$v&s^ z05ffk#KR`Xg$c{#4O8b5A8Xg3^;+0y$jM@Ijxzpt{@y8gA=fB9DX zufRSX6PayS>ixq$rJpNom0o}LKl*zV>HS=1y`SxMdLOacpY2bPFKWG3+of1-mu?4W z9^?Y6^JA{n`B7-6>O8bMkIJmhy9%rK(`u{jYV26;XRG(q)s#2cd-OhSbw2uL`)=3X zs$INQy9BHHM5}Sq$(dI38Em!vFsu3GSZ!BeHJ?JOewSEnS8UbqGOPJiP+nyCC$_7e95(!>HWiMyv0`M zMTzz2j#c||>v`FiwI8jvUt_i1I;-tASZ&w#G^y>PR@6`?5lbovwFWM zwSFDqYWtdAe^x)|`e6(H`Jug4e~EUS_N&!6>6B+$jWf(@z1cE&{Yd{jmTR@HJgar( z+j)BZ1nTDvtDj?+NUyKPYJGK9>)S|fe};0MjoM<&pn$>kcrq%ifQ$Eu6)8~#=`%)pm(?iso-iHGk^!t;Q|1YQMy4+)~PyS&dt1U)SqhdYv^g`mBD= zu+QoHE350eI;-PQZ?*mgTchhy>GgLWBsKp;dy>{i&awa1`>fUYv#sVe*Xp>JS)WH( zD?N`o8H{H=p4H!bY>*zW%UM$6rCNXO0C{kmfLB%?z4JdskQamuU4<; zjaKJhTj`C`(mr@D##61>s?QdJ15*O z(W-o;)%T)v$VDBIioYGu~EeomT5h zv|3*`tM#Q?%{$X-eS@s7JM(R$#>M4U>#VTazK+~z-_`N7nxCJQ?)fE3&##-+{4%8H zS70^2LaX@|+gu$ttNGPf&9B~Seygp5?MFzp?`GBB&v1A9RO$9;36^t!u8;x{B>5TBp@@W|h@-W{uT)>#WZg z>+{8G{_CvPyU}X?ZAVM3w~JLyv6^p={X+A$nqMIwXPzobuF=4SE<#y%B4 zwcQ4*?b_x@?eBQ2@^0i59BjQm$+NKt%c-v=H%PC$QF^_rt=7B7YMqhs>QC!SvRYr7 z)qc+<>$e$$>&!B8h5c5q3)@BgS{>(&R`cpSAv6s$q{q*c9zV-!{6SXNJA>^!UGGZI zW0}=FDy-(Qn!MHy(Cc7gSl`8J9;sIQHN$GZW?Jpn!B+b($7;XkS$+N#Vu{s$F0ba~ zX*K_Bt8ojh#x2Kc>G5i$$6IAJUai%5Yo+^-PLb*_(P}@WSnY>YtNoB+wI2ps?T1|Z ztKL7X_Cpc%%gC#&=FvcIlAgy}>3OWPnn(Mo+D_xAS+B?HeW`$4Xf>ZDR`V&gnopV4 zd@8KwQ)4&kI9Yvet+krhMogHdtodYEm1kMC&n4$uwOcGb&n43HEVi0wiG5u^pG(iT z$!fmq?H_u-$PaUt)i`;$7>lL*Es^fG)Yj?e0PEv#-_Xx*vePD=XZA1kZ~N-FUnuoC z*xnwa>kIq0&TFgn z=fn(ooc5zl)_G@Bb-ZjJ9WUwjgJd*L=b_c_Wel@#>iY-TDYi{yj@5ax#A^I> zU#0t5Bi+w>m#bY|flSvtY(KpY?8$l^NN=Ai{reAT_FtNh>(wsXYP@_qMn4ad=i0G4 zpRCqXLisYQ?+41I`>l}CdVP+&T>Uj!^;a-cwrLY7v2kr8HFl>qk@e)rMat^8z18+z z>|o8$s{ahD^JI|pID@6vJIw0uqej}d^zRMq+xqtg_8sjTIJ?VaP zt@bID@+^XMNtK-pN2kCs0?zc%sKh*oGRln=(M|z*TMBAy~1gn0ttzOT0R{NvQ zs=v5P<&AoMTaDYzYWp;+aWkxbDJ#pW-AJqLa;>(TW3^o&^-Ju{`n;jO%IbZh*5>H_ znesJuyj~Ah=Xu;5ss7__yEc(bJ5=YB-L*|*r1iMg<64hv)vg%Jr1#4*8C|Wmjeh5a-pQfYtGbIPo~C#<%g>F0L4MxTTB6J75~@5lJdq~32jTdgmXJkn}D`BvA{ zbFJpNnDS*-=VP_id{HduYn*8Xy-*K^dWzs^>#=R~XiQYcTi>Sv_Y``jEX zlwNm{jDD`~dF>ba`M_%3#kNW3vDNFp)are)%zmlQ1FL_}vPycrjaKt0yF%{PCQ@(p zI^1COI_xl4>in5)HSa>J?Tf7Dz1-?}S5jVW@6r0L_Fp~atL-FRzg;OW(7LV8hZNhs zO(e}~e`QggZ8d&@)%iS^`eMo}tmeClyoS7i95+w(+Mn@O^G&pVzp&b`nO5Ts!aS?( zXIpK**lN3C>dUAvr@oHdNZv?}n;*81TJ_h3oJ!6h53}k&+xon=MS4G%KE9>W?_XtB z=k+rCwa#<9R_D3>M(4TxR_D3>PT%)god?zS2c75ke>&dwM_r%U^|~Ig>-70xzt{Jx zR_95h)pg=(`<4Ekf%JK@$!fnu3#E?RV5|8Klb-KL>Gs)H?Q^W!7fQD;v1;G`Dyj1; z$?EuKSsmYzR{LSO-Mvku!s_RnYO8jQR^x88hwHdqE!9tfRX@d6pCild9y%|qwy(45 zw*l8$Z68@6HEw&W`c$jqm0|UHo<$yJHU1o{?FzBfs-G&Wack|KdOcCT$?A2}wn)b7 zeZ{K(&Q|>;SsnjWtA5jQu-!}VgI4R$wc38J)p|;;*1ycEze?(Bt@^9C>aP*oU!$z! z6fb?8I!K>aQTwyLC$Yck-+S2K^zS{a&a*`OyZ*h0)#qfA-Kg(Ttj@1g`-?u`?1q>~ zy4CT|usZ&k_9y+^Dt-KmtkzLy_tyDjHUG8?!}88n^G~xX&!l`L<%L%JvkWWjDf+yz z=j-!PdVOnU^bdVL+D$rtt>(MI{-x_q*-`svlk=bYcQ1?7Ui0f_HNQ0L@yR2t=2d9* z@1jbr=22y}-72eg_0+GWev{SvO^3x&?K@kInN?cw@AcQ&ee^zVHP6VkQrow+9oj@XTb)m-IMV9# zyAaE;8f)#ox-PM|>bk_LzqR%@eZJfMbe>-)^?B7gSoABl?y0o%H+H_Mlij+bwioJiuzX2jU@imq_Gj z>W{~hZ~&fzBXBh4p?*vW#?xg&pibXFO)KzrEW?L!CBA_5_!ItxZDYcIx?&Rc#uM>0 z9D-v||3o90$1I$OcjALsiTbO(V0(QP5U5MwKwU}&>MbBpFYQ3R6$I+7BXCbV1czWY z=HWG1jAf|5N)GyIK>dgu!5^I1>x;CcGCP#iwxBxUm0y@en)~ zPr$SBd>n^U@e=g!^ZUGf7+2uG@fmy(U&S}^J^UD(@JIX;+vzpnarVb!um|?V({UJ1 zz?pa@F2I|x3@fl2U&TiB{R2FY4H%;rXz;qk1My$j8+~5^Z+9+Ez?oQxH{m_F0-wh> z@I(9tH)318_B~DqJOq=lFP@3#V;)|L3(@x?6Kg2I_ zJ^qP1w+px13p?YH*d2%BNF0l~I2C>00grnL&cy|IJ>G`*;R<{X-@uRX8~hD-+BFh+=RRB9&XnW zyJBz5z=3!kPR4$Fgze8n-v_|sj==GFA^N@mu3v(;gwt>)&cOwEBi@ORU^TvuAL2LY`xJOSyX+mh zA0CdrAA#%p;n_F_^YIG24(~wUufXk}#@FxzT#LWq&ijPh?~7fq2cC>)<8U00Gw@1$ z0pGw6@N4`9+jI!W-3t%Kqp=ST#W6SqFU4zcDc+AOuo_>%xA7DF9yj4`x?uMH>xf-3 z6;HvTI35ddKHi9TV+B5k|HV)62i$W%#>Zo^5Bfd_p5GO?2yev)@JW0T*WlOq6aIzm z_7D5r9}mYKcoL4qDR?n1z?<=2T!GKw8~71^gB!6;G@M5}?0^Y)45r~}I2>o;)p#fR zz6joL525de;Jgy6@dd2KH}O6E7@P1r{0V=@82!NI{@dYRcmN)PT`?Jt$9|ZFL(unM zaKHI@Gd_eBxDua1-=D$l_URaU03M8oV>e94fmnbG@J757%kgP^4L`uO_#5urDV)c? z*adsw$#@oy!92ViufcoqaeN-@@l*T}|G@V8S=#$$e>@Po;<0!<4#2Z;CeFtj@eX_t zU&43rbNn8E$6fRTy63Ym9)`)7j;G_fI38!M$?@FA?gl~|20pzllJe%{3Q@MH9SDqQ~^{)E3{Y(iMy9{0lpJPH@$5?qQ8VFj+l zYJ34}@xR!BAK?$U0sp|rA>sUX#`d@m9)w-7C-%d$@qC<&H{#v+9R3$S#&!57?s{lA zp93%vkHY~t1aoi(&chq93?IX1@eN#!-{BwF?yztkQ9KfRVSn`fGJO1Va2n3Rg;;|3 zVk(mj6pz3ZJQ)Y!D9po4un2F(hwy2v!;kR?+>G%@ zhVwWCyJJ5bjN|blT!1C`ApQqm$JO{PZp2*@!*Tb+!!ZRja3G$ClW-Om;jQ=(K8x881KS|@jv(~HsaU#EAI5Ka6TRIFzk*e;UFB1 zQ}Hsq7EAC>d=Q^R-{-^U=R5d0{)B&FyQ9MG4!|y$gne-!j=%{x6ASSsya!jH@Au*P zyosOS_qYjn>lSX;5xZh4o`OSh0$zxh;bOcUAHt`w7T?FO@E43bI-ExbJQ$C{}zJP#*e9!|&0a6Vp##aM>-|VUx3%)z4#zLhEL+t_&mOa@8ie#1%87+;-Njmaee<1@5f_MkCP4Z z@tBSSFbmJdVK@qNa57$q|3Tm1#N+w?CbkKG!ar7wwS@Mfy-&e)+_x)5n zj_;>po2=INJ@p&Of05fB7uN4-)qa1gcAfBG>JzE&LDr+0gYESI?x6on@;T%YYpM%OMaDHPhM@+-uHX4P1Ju+{YLWNV1D0w;w{zCXXlQlV_5B-xzOy6}cGiqI?+$z|jU ztg>oXjWyQmrM`ju0r^M#&8pp>xY?>*+cc^1_OZ%QtNnHe#gd^b`bcS4xkS*@#sReRr` z#~w%d$yW2uB>TQS9(OPfv)X#rnVk4vrkxgGDa+HN`ZPmrs~FOqAm z*6|kQACo^Pe{a>#Ul@O)vewthY8{7?kFgrRJNB|_*O&U!$OFkE$fL=V$t?|G0TeU&xuIBaXxZZE5K`u;@DhggmGFUot7 z`;Z4)Z8woT-D;eR$yZs8a}8c=wf!yB-%Y-syn?*aYTV~2f1O-U{>ZAI@9=NR+oh{q z|)jKXzEkRCy+DAXIPCtl=89UiR9^4{mjFgDKE1c{{ix2R^vZ`|F&vZ zL;dUIdh$o)HRSKe>#gSVJLNl_6y{y6*14}$zlUQg<^8PYb1L~PtN9GU;a2U&Qa^<} zoqQR29{F1GjpRGX_mUsB>i;o(g8FLeUm@3#-zTpoe@$LT{*C+>dAF0*zt+1yCSp&_ z#wj@4YWi7zT2w*`|v@laUZAt8S)F{H^}cjNPRN(Y2=g0S>&^<`X5301o8#si>$`G8gHe1nbmq9B0p|5{!09h zRl66d|1bF+@+agk$Ul&OwwjOczvXqcJtfS$Tji)#zlqp~`V8s^Sqt!Y}$YoaTm*H}&?N?Cm`*t}$Pp%`sWi{^)DgTQ69r;(Qb~|T=9$+=jfp~<~ z`nr>QVIRr|ShXLDlPE8+n*XKb1y=no!t1Ttl~8{#c{%wBa+THmpQro{^4sK(t@`;M zBd02BzPnkCzZdxc>viEFR_*>peNXc7OvBav~-PD(pSCFg8&y(xOAL6H0`(-Wl8_2(t<4zCz?|?^I zjeiuTSj{V)?E99v{#42bTg@*AXIYImm-Q|0iy?+P>`>QtQ~qD*JamoDU->T8*1b`3dBc z$!A!#J0J6@znJ<$%CDjPI?8XQ{7%Xrp!^AP75Po8{y(SuYs!D3Joe16em|>uA7Zs` z-@nZ{#cJKD==-_3zy8z@A`c;FlgC@Fdn)CZkgp&wwCd+Je1!Uy)IU%8%ap%P`FoUq zM0peC>&d^6+Yb!;KiFy>U98q~EaiRi9Lh&ot$Q+g4i;fC-iMFl$M_>|!d(W1{q12j zZbz&Acn}_Hwf>{1??vuI9zZ^wJd}JMc>?(YtMwI7ekFM!`4;l+ zIf>kdoNhIrQz;)p9zh;&)$dI7{rTMgO;+gCRl7cvpJX+De>{`=^KgRI@t8rr z)N1=HaK6<%7gN8KTxvDmeUz^tuOvTj)$T29qWnjz@qQu43{}>6J7GJkc6(c`<3RGE zasv4%auT@@`7|78HUDAM z=a46n3#|Gt#HG}iQU5UI6;|`A#1|-k#rk+z&F_86eLqKUzXpG{+RpcN^me-pmm0Ud zRe4A9!DQd}(c2wMx$pnz?M|WmY^(j|`#^fT$v7K*KS+;Xh(%W8-9UXQ`EGJKc?G$e z{5-ji{1$mN`7^TbE9w6KNB+xdzB`YQn%~}5d4KYuR@-;S{#Nrn70gQRj{q;Ke9jo!)$B(S~Yoh)~^559zJk@Ld?XCKYk`E*&TD4Eb z)2;d+h{LSf<&bl63gxq{+85#Nl;3YP?{e~gupU3dAMk*Y;W$U&S$Gj%Y1Q8X^7U5p zya|_D&7+L^hshP>r^z+s*U1f5{WRh_tNryW`44P=e%Sy1R@-;Nu6Q)|vYJO}BkKGJ+4mE5 zKehOg)i|HxTC4eQAp3rzuK$bjwxh%LQ9R0O`(E~MJ;sCF->TiIc!t%uL#ZD_o?tb< zX_Q||o=aY2)$VqDl=7#n#;YOMT8&qS^;YdZpuUOx6UJq$UgPd=HU9(12a&s4weO8t z)DNLPoAU9L&mhmXn#UZx(yIS!vBaw1JE*@K@27qR_0Qvb)PIQUDE}Y%7yQF&oSnyn zKbJg`Jdr#TFQNP@@lgK^E>E!-a^Es395#-V2$yWVd zg4a@BVl|&T$>sPAzJ|YG?D%kAdtgUA63@ipR{ds^bFJ2yhxu0XxtRJw@-3{ctM(nO#yO0fNbW`Mi@txZ`_II)C?A2jR>x_E z)p{=`Uuo6uD!j&O+#9LCgM1J95ppHD#;W})tfl@f>V02c_xBlj9r=G&>-vN8ohOEQ zH>-K>XVvZq>`nd2)Sp55*;eBZ#q+42K>ZZ*Y^!x&L0)9l?s~k*YP?eFA0U^L|4n`c z>#XMgF7=<0zasz7s=t`r&<K%JFEHZYqh@)zyqz;aRl|r(7XPNIGmc`h!Zd@0%YQ}#FyTJ6tA@NuhoJYzN9D)O6F$N63I7q}VQ z=Y{Q#!wj5;H{xCRFjnE4_!Dl%-KK>7M)6&V0`tN9P1KASwAoKL<2 z3$6CYwbb8AzLWf*Rew)m9rf>0zlQQJ$?M6#TlKr!)X=C^KL?VJARk3eA@?Tt!?W=` z>L*yOcQVe#Ik?bjoLk7Z;c_g;C#|-77GJZP?>pp1@@M3)$Ul-dkpITrr-kkJv+DOS ztMlm?tK-#^e1g^dPs09I+n-7OaPlbfB=S`9#pKJ$*O0Fx-)6Ord&!SdUrG5hl)p;; zFZlzjd3=MLtmYZX4{c|)o_)y&;6apkwQAoRvnW5;YW+FnJga{5vB0X`Wz-juuO<6F z*si~Wyqx@q)jC&F{sQ?G^4nJJKF43I#{C^*FI3ig_OL478~3ODP^ zoP+r|2d~B3@Fjd3|H4D3hx0hvs^1>uK34PUi~X$TlSTcxWZzHQ>zGK+BhMnwwd%+B z*|sHC`|Td`{pkB|yZ;x-ui(4*0e)_^-FNt#Rev!vLU*;Q-v22?{upu(@`>br4yc2TSTJL4hLccVU;@}77+_5Gcl>9KRv^p-&kYBZ$?;H4*)jB?;{!8+=7f?Q(e3{jJ3&~5Y=39&in&Y^w* zc`#ZRXNT@=)oxF#b#^2lO#T=7Sn~1Y zzE<y~)jGc*|480I-fT7BJ?DfTYPJ1QR_pCWc^}HtDL98;~vJBj)%%Fm*FDCJ`)pFsHqlwU;o zrIh=*6&`01<;CQ?toHx?M^0(w4$$w+Jd0{_$SgmV+ ztN9#8P9*oR8m}J?wXu=N2pnhCZW?(8&Zd06Rr{Ope(E2>C#>2(M}84&DSyYR{TKKv zzb>KtYVsoTEmq^+ zk55_6>lu96YQAri-@}h6|H`WUuh_0IY`;71XVv~t@)39x<-M%h55VD8^Bqh56w0Sl zK8x~slwU(Gw%Wh9k<0NZe93BEui_h4hh))jIYf?`Jj7gDF3X zoJ8(p)&J=@%4+abyn?`QhyKm0rKPIf0JJzzhbo>Ki?%dj^xkC z>#X|SgnM2SZXdN;$6;3Wey)rAIhyiR%KMT}vzq_8pNJP&_2cKdxZf+t*W!(o z-$A~I{0RARtMQ+v{1tK?`F*SYzs5hT#{V04Ss0GHk5&2p*qQPpt=b=lr&*164)vob zA4hpEzm$@fS&hFO%dN(JlKL8QJ-$o%8uFJ`^ZJ4EKggTOyDkd* z>xf5NjhBqaTkZb=h~_Z*Q#AP_5UVUlV2g%k>4k; zCVx#{NB$GrEmpspZwIUX4%@5gRI&Or#^=~iCjRwm|RF+M83tUzuWLm z>K~wf1$ia8hWrw_p8PKPGppnGE%_JnALO`e!};!mhg+>b$!hoWA!Z`#Cs^32__PTKU zopD#I?f0?T?jUj(ayP5~lhDui@%ATBpGiK0d>&50OL2i!Ka22stA0wTzn8q6`~L-(@ zkuSp{t9e~Z{f(60LHYgUC#=?6MSh9=8u@+l$KtBcKt;YGC`ZhO&xvkau_9pL7 zK7@P(If>kp+z$uh2i~JtB3D@JF z)W_YZadbR7;4xO~?QJ!m6YwOf`J6`mVDfPCIC3s|I(ZiPO7hj@V!Vs;W#q@mmE`Bh ztH^JXKPP`AFi@$ ze+}M7{R3Eob+`c|#cHSV6R{_zTfKh|AfI8?|5-T1YTQxO=aQ$8XOZWSuO?q_wVr!% z1^$Qn7x7K2@!rAD@Jsx`YW&}@&COxI?XAi?Sgq?|t9}l{BdJfK{&;d<@~PxA$-~I! zlP8k%$d}+kyqWsj$Q9%#$u;Dc$o1rR$!o}8lGl@eAxCZr*SC|^`r^s^k`J-kzda~V zC7(e3spK=s!>x}ac@lZLRX>&U-ZonM>C z?UpL*{c;bhemjv9$VZdAllzi0$Y+tyC6BV2?^v8*HU2c}FD743UW_GH?Mm@J%2!~u z)x2LIzhSlgTllWkIG<3zmi#^WH}WR(&L!dYyIHM!UvfusBBo$p>NCiL@I1=1$rq6G zt&YPy@&fW=tMN+6caWD`&HoW{75N#feqN^h9jkS}kE+)?7f;^T zYP-Y8iR7cLw(Ctkk$kGvyv`&KCy%w7#{|3xFTtgFJ1(>8|1qono+Q^;9oLu0Z(E&@ z?~|Lz-;jSL|4D9pTe$u1R{eJ*Cy=}2iFi5=wVMA39A!1HiPT?6zKA@Rd=>e6axwW% z^1b90_zc!k{|5O3{1Vqw{|h;CdpMuHtk#u)J*?(^9A;t`jC=vB72znol7UPZ1YuOT;)H<2STVf(1nc%8}V&Wf3W{($d_5Z2lG;$6(mt06LA}=E^C)bke$ZN^#$nD!O zo>f^AIfXokJeZtME+8)<7n3W=Rpfed19=^JJvm+{g4f%@YWx&(DtQojFu8y{n_NOJ zC0CKF$&KXIl2?;Ak~fiq=ZI>&=q};-sa83SJd&JEE+iL` zgXe~7`wDVB^$p|=rnfIj zt{_*E>&W%w_2doY4!eirMXkn5CkM~*lOy`9@p|H{`s+eY zBo87FCg+j!$xFz^ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include +#include +#include + +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define TYPE_SINGLE_DECODE_BIN (single_decode_bin_get_type ()) +#define SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBin)) +#define SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) +#define IS_SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SINGLE_DECODE_BIN)) +#define IS_SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SINGLE_DECODE_BIN)) +#define SINGLE_DECODE_BIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) + +typedef struct _SingleDecodeBin SingleDecodeBin; +typedef struct _SingleDecodeBinClass SingleDecodeBinClass; +typedef struct _SingleDecodeBinPrivate SingleDecodeBinPrivate; +#define _gst_caps_unref0(var) ((var == NULL) ? NULL : (var = (gst_caps_unref (var), NULL))) +#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL))) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define __g_list_free_gst_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_list_free_gst_object_unref (var), NULL))) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +struct _SingleDecodeBin { + GstBin parent_instance; + SingleDecodeBinPrivate * priv; +}; + +struct _SingleDecodeBinClass { + GstBinClass parent_class; +}; + +struct _SingleDecodeBinPrivate { + GstCaps* caps; + GstElement* typefind; + GstGhostPad* srcpad; + GeeArrayList* dynamics; + GeeArrayList* validelements; + GstElementFactory** factories; + gint factories_length1; + gint _factories_size_; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +static gpointer single_decode_bin_parent_class = NULL; + +void qsort (void* p, gsize num, gsize size, GCompareFunc func); +gboolean is_raw (GstCaps* caps); +GType single_decode_bin_get_type (void); +#define SINGLE_DECODE_BIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinPrivate)) +enum { + SINGLE_DECODE_BIN_DUMMY_PROPERTY +}; +#define SINGLE_DECODE_BIN_QUEUE_SIZE ((gint64) (1 * GST_SECOND)) +GstElement* make_element (const char* name, GError** error); +static void single_decode_bin_typefindHaveTypeCb (GstElement* t, gint probability, GstCaps* caps, SingleDecodeBin* data); +static GstElementFactory** single_decode_bin_getSortedFactoryList (SingleDecodeBin* self, int* result_length1); +SingleDecodeBin* single_decode_bin_new (GstCaps* caps, const char* name, const char* uri, GError** error); +SingleDecodeBin* single_decode_bin_construct (GType object_type, GstCaps* caps, const char* name, const char* uri, GError** error); +static void single_decode_bin_dynamicPadAddedCb (SingleDecodeBin* self, GstElement* element, GstPad* pad); +static void _single_decode_bin_dynamicPadAddedCb_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self); +static void single_decode_bin_dynamicNoMorePadsCb (SingleDecodeBin* self, GstElement* element); +static void _single_decode_bin_dynamicNoMorePadsCb_gst_element_no_more_pads (GstElement* _sender, gpointer self); +static void single_decode_bin_controlDynamicElement (SingleDecodeBin* self, GstElement* element); +static gint single_decode_bin_factory_compare (GstElementFactory** a, GstElementFactory** b); +static void _vala_array_add2 (GstElementFactory*** array, int* length, int* size, GstElementFactory* value); +static void _g_list_free_gst_object_unref (GList* self); +static GeeArrayList* single_decode_bin_findCompatibleFactory (SingleDecodeBin* self, GstCaps* caps); +static void _vala_array_add3 (GstPad*** array, int* length, int* size, GstPad* value); +static void _vala_array_add4 (GstPad*** array, int* length, int* size, GstPad* value); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +static void single_decode_bin_closePadLink (SingleDecodeBin* self, GstElement* element, GstPad* pad, GstCaps* caps); +static void single_decode_bin_closeLink (SingleDecodeBin* self, GstElement* element); +static gboolean single_decode_bin_isDemuxer (SingleDecodeBin* self, GstElement* element); +static GstPad* single_decode_bin_plugDecodingQueue (SingleDecodeBin* self, GstPad* pad); +static GstElement* single_decode_bin_tryToLink1 (SingleDecodeBin* self, GstElement* source, GstPad* in_pad, GeeArrayList* factories); +static void single_decode_bin_wrapUp (SingleDecodeBin* self, GstElement* element, GstPad* pad); +static void single_decode_bin_markValidElements (SingleDecodeBin* self, GstElement* element); +static void single_decode_bin_removeUnusedElements (SingleDecodeBin* self, GstElement* element); +static void single_decode_bin_cleanUp (SingleDecodeBin* self); +static GstStateChangeReturn single_decode_bin_real_change_state (GstElement* base, GstStateChange transition); +static void single_decode_bin_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); + + + +#line 29 "singledecodebin.vala" +gboolean is_raw (GstCaps* caps) { +#line 139 "singledecodebin.c" + gboolean result = FALSE; + char* rep; + char** _tmp1_; + gint _valid_size_; + gint valid_length1; + char** _tmp0_ = NULL; + char** valid; +#line 29 "singledecodebin.vala" + g_return_val_if_fail (GST_IS_CAPS (caps), FALSE); +#line 30 "singledecodebin.vala" + rep = gst_caps_to_string (caps); +#line 151 "singledecodebin.c" + valid = (_tmp1_ = (_tmp0_ = g_new0 (char*, 4 + 1), _tmp0_[0] = g_strdup ("video/x-raw"), _tmp0_[1] = g_strdup ("audio/x-raw"), _tmp0_[2] = g_strdup ("text/plain"), _tmp0_[3] = g_strdup ("text/x-pango-markup"), _tmp0_), valid_length1 = 4, _valid_size_ = valid_length1, _tmp1_); + { + char** val_collection; + int val_collection_length1; + int val_it; +#line 32 "singledecodebin.vala" + val_collection = valid; +#line 159 "singledecodebin.c" + val_collection_length1 = valid_length1; + for (val_it = 0; val_it < valid_length1; val_it = val_it + 1) { + char* val; + val = g_strdup (val_collection[val_it]); + { +#line 33 "singledecodebin.vala" + if (g_str_has_prefix (rep, val)) { +#line 167 "singledecodebin.c" + result = TRUE; + _g_free0 (val); + _g_free0 (rep); + valid = (_vala_array_free (valid, valid_length1, (GDestroyNotify) g_free), NULL); +#line 34 "singledecodebin.vala" + return result; +#line 174 "singledecodebin.c" + } + _g_free0 (val); + } + } + } + result = FALSE; + _g_free0 (rep); + valid = (_vala_array_free (valid, valid_length1, (GDestroyNotify) g_free), NULL); +#line 35 "singledecodebin.vala" + return result; +#line 185 "singledecodebin.c" +} + + +static gpointer _gst_caps_ref0 (gpointer self) { + return self ? gst_caps_ref (self) : NULL; +} + + +static gpointer _gst_object_ref0 (gpointer self) { + return self ? gst_object_ref (self) : NULL; +} + + +#line 61 "singledecodebin.vala" +SingleDecodeBin* single_decode_bin_construct (GType object_type, GstCaps* caps, const char* name, const char* uri, GError** error) { +#line 201 "singledecodebin.c" + GError * _inner_error_; + SingleDecodeBin * self; + GstCaps* _tmp0_; + GstCaps* _tmp3_; + GstElement* _tmp4_; + GstElementFactory** _tmp8_; + gint _tmp7_; +#line 61 "singledecodebin.vala" + g_return_val_if_fail ((caps == NULL) || GST_IS_CAPS (caps), NULL); +#line 61 "singledecodebin.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 213 "singledecodebin.c" + _inner_error_ = NULL; + self = g_object_newv (object_type, 0, NULL); + _tmp0_ = NULL; +#line 62 "singledecodebin.vala" + if (caps == NULL) { +#line 219 "singledecodebin.c" + GstCaps* _tmp1_; +#line 62 "singledecodebin.vala" + _tmp0_ = (_tmp1_ = gst_caps_new_any (), _gst_caps_unref0 (_tmp0_), _tmp1_); +#line 223 "singledecodebin.c" + } else { + GstCaps* _tmp2_; +#line 62 "singledecodebin.vala" + _tmp0_ = (_tmp2_ = _gst_caps_ref0 (caps), _gst_caps_unref0 (_tmp0_), _tmp2_); +#line 228 "singledecodebin.c" + } +#line 62 "singledecodebin.vala" + self->priv->caps = (_tmp3_ = _gst_caps_ref0 (_tmp0_), _gst_caps_unref0 (self->priv->caps), _tmp3_); +#line 64 "singledecodebin.vala" + self->priv->typefind = (_tmp4_ = gst_element_factory_make ("typefind", "internal-typefind"), _gst_object_unref0 (self->priv->typefind), _tmp4_); +#line 65 "singledecodebin.vala" + gst_bin_add (GST_BIN (self), _gst_object_ref0 (self->priv->typefind)); +#line 67 "singledecodebin.vala" + if (uri != NULL) { +#line 238 "singledecodebin.c" + GstElement* file_src; +#line 68 "singledecodebin.vala" + file_src = make_element ("filesrc", &_inner_error_); +#line 242 "singledecodebin.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_caps_unref0 (_tmp0_); + gst_object_unref (self); + return NULL; + } +#line 70 "singledecodebin.vala" + g_object_set (G_OBJECT (file_src), "location", uri, NULL); +#line 71 "singledecodebin.vala" + gst_bin_add (GST_BIN (self), _gst_object_ref0 (file_src)); +#line 73 "singledecodebin.vala" + gst_element_link (file_src, self->priv->typefind); +#line 255 "singledecodebin.c" + _gst_object_unref0 (file_src); + } else { + GstPad* _tmp5_; + GstGhostPad* _tmp6_; + GstGhostPad* sinkpad; +#line 75 "singledecodebin.vala" + sinkpad = (_tmp6_ = (GstGhostPad*) gst_ghost_pad_new ("sink", _tmp5_ = gst_element_get_pad (self->priv->typefind, "sink")), _gst_object_unref0 (_tmp5_), _tmp6_); +#line 76 "singledecodebin.vala" + gst_pad_set_active (GST_PAD (sinkpad), TRUE); +#line 77 "singledecodebin.vala" + gst_element_add_pad (GST_ELEMENT (self), _gst_object_ref0 (GST_PAD (sinkpad))); +#line 267 "singledecodebin.c" + _gst_object_unref0 (sinkpad); + } +#line 79 "singledecodebin.vala" + g_signal_connect (self->priv->typefind, "have-type", (GCallback) single_decode_bin_typefindHaveTypeCb, self); +#line 81 "singledecodebin.vala" + self->priv->factories = (_tmp8_ = single_decode_bin_getSortedFactoryList (self, &_tmp7_), self->priv->factories = (_vala_array_free (self->priv->factories, self->priv->factories_length1, (GDestroyNotify) gst_object_unref), NULL), self->priv->factories_length1 = _tmp7_, self->priv->_factories_size_ = self->priv->factories_length1, _tmp8_); +#line 274 "singledecodebin.c" + _gst_caps_unref0 (_tmp0_); + return self; +} + + +#line 61 "singledecodebin.vala" +SingleDecodeBin* single_decode_bin_new (GstCaps* caps, const char* name, const char* uri, GError** error) { +#line 61 "singledecodebin.vala" + return single_decode_bin_construct (TYPE_SINGLE_DECODE_BIN, caps, name, uri, error); +#line 284 "singledecodebin.c" +} + + +#line 360 "singledecodebin.vala" +static void _single_decode_bin_dynamicPadAddedCb_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self) { +#line 290 "singledecodebin.c" + single_decode_bin_dynamicPadAddedCb (self, _sender, pad); +} + + +#line 366 "singledecodebin.vala" +static void _single_decode_bin_dynamicNoMorePadsCb_gst_element_no_more_pads (GstElement* _sender, gpointer self) { +#line 297 "singledecodebin.c" + single_decode_bin_dynamicNoMorePadsCb (self, _sender); +} + + +#line 86 "singledecodebin.vala" +static void single_decode_bin_controlDynamicElement (SingleDecodeBin* self, GstElement* element) { +#line 86 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 86 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 87 "singledecodebin.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->dynamics), element); +#line 88 "singledecodebin.vala" + g_signal_connect_object (element, "pad-added", (GCallback) _single_decode_bin_dynamicPadAddedCb_gst_element_pad_added, self, 0); +#line 89 "singledecodebin.vala" + g_signal_connect_object (element, "no-more-pads", (GCallback) _single_decode_bin_dynamicNoMorePadsCb_gst_element_no_more_pads, self, 0); +#line 314 "singledecodebin.c" +} + + +#line 92 "singledecodebin.vala" +static gint single_decode_bin_factory_compare (GstElementFactory** a, GstElementFactory** b) { +#line 320 "singledecodebin.c" + gint result = 0; + GstPluginFeature* p1; + GstPluginFeature* p2; +#line 93 "singledecodebin.vala" + p1 = *((GstPluginFeature**) a); +#line 94 "singledecodebin.vala" + p2 = *((GstPluginFeature**) b); +#line 328 "singledecodebin.c" + result = (gint) (gst_plugin_feature_get_rank (GST_PLUGIN_FEATURE (p2)) - gst_plugin_feature_get_rank (GST_PLUGIN_FEATURE (p1))); +#line 95 "singledecodebin.vala" + return result; +#line 332 "singledecodebin.c" +} + + +#line 1144 "glib-2.0.vapi" +static gboolean string_contains (const char* self, const char* needle) { +#line 338 "singledecodebin.c" + gboolean result = FALSE; +#line 1144 "glib-2.0.vapi" + g_return_val_if_fail (self != NULL, FALSE); +#line 1144 "glib-2.0.vapi" + g_return_val_if_fail (needle != NULL, FALSE); +#line 344 "singledecodebin.c" + result = strstr (self, needle) != NULL; +#line 1145 "glib-2.0.vapi" + return result; +#line 348 "singledecodebin.c" +} + + +static void _vala_array_add2 (GstElementFactory*** array, int* length, int* size, GstElementFactory* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GstElementFactory*, *array, (*size) + 1); + } + (*array)[(*length)++] = value; + (*array)[*length] = NULL; +} + + +static void _g_list_free_gst_object_unref (GList* self) { + g_list_foreach (self, (GFunc) gst_object_unref, NULL); + g_list_free (self); +} + + +#line 99 "singledecodebin.vala" +static GstElementFactory** single_decode_bin_getSortedFactoryList (SingleDecodeBin* self, int* result_length1) { +#line 370 "singledecodebin.c" + GstElementFactory** result = NULL; + GstRegistry* registry; + GstElementFactory** _tmp0_; + gint _factories_size_; + gint factories_length1; + GstElementFactory** factories; + GstElementFactory** _tmp5_; +#line 99 "singledecodebin.vala" + g_return_val_if_fail (IS_SINGLE_DECODE_BIN (self), NULL); +#line 100 "singledecodebin.vala" + registry = _gst_object_ref0 (gst_registry_get_default ()); +#line 382 "singledecodebin.c" + factories = (_tmp0_ = g_new0 (GstElementFactory*, 0 + 1), factories_length1 = 0, _factories_size_ = factories_length1, _tmp0_); + { + GList* plugin_feature_collection; + GList* plugin_feature_it; +#line 103 "singledecodebin.vala" + plugin_feature_collection = gst_registry_get_feature_list (registry, GST_TYPE_ELEMENT_FACTORY); +#line 389 "singledecodebin.c" + for (plugin_feature_it = plugin_feature_collection; plugin_feature_it != NULL; plugin_feature_it = plugin_feature_it->next) { + GstPluginFeature* plugin_feature; +#line 103 "singledecodebin.vala" + plugin_feature = _gst_object_ref0 ((GstPluginFeature*) plugin_feature_it->data); +#line 394 "singledecodebin.c" + { + GstPluginFeature* _tmp1_; + GstElementFactory* factory; + gboolean _tmp2_ = FALSE; + char* klass; + gboolean _tmp3_ = FALSE; + gboolean _tmp4_ = FALSE; +#line 106 "singledecodebin.vala" + factory = _gst_object_ref0 ((_tmp1_ = plugin_feature, GST_IS_ELEMENT_FACTORY (_tmp1_) ? ((GstElementFactory*) _tmp1_) : NULL)); +#line 107 "singledecodebin.vala" + if (factory == NULL) { +#line 107 "singledecodebin.vala" + _tmp2_ = TRUE; +#line 408 "singledecodebin.c" + } else { +#line 107 "singledecodebin.vala" + _tmp2_ = gst_plugin_feature_get_rank (GST_PLUGIN_FEATURE (factory)) < 64; +#line 412 "singledecodebin.c" + } +#line 107 "singledecodebin.vala" + if (_tmp2_) { +#line 416 "singledecodebin.c" + _gst_object_unref0 (plugin_feature); + _gst_object_unref0 (factory); +#line 108 "singledecodebin.vala" + continue; +#line 421 "singledecodebin.c" + } +#line 109 "singledecodebin.vala" + klass = g_strdup (gst_element_factory_get_klass (factory)); +#line 110 "singledecodebin.vala" + if (string_contains (klass, "Demuxer")) { +#line 110 "singledecodebin.vala" + _tmp4_ = TRUE; +#line 429 "singledecodebin.c" + } else { +#line 110 "singledecodebin.vala" + _tmp4_ = string_contains (klass, "Decoder"); +#line 433 "singledecodebin.c" + } +#line 110 "singledecodebin.vala" + if (_tmp4_) { +#line 110 "singledecodebin.vala" + _tmp3_ = TRUE; +#line 439 "singledecodebin.c" + } else { +#line 110 "singledecodebin.vala" + _tmp3_ = string_contains (klass, "Parse"); +#line 443 "singledecodebin.c" + } +#line 110 "singledecodebin.vala" + if (_tmp3_) { +#line 111 "singledecodebin.vala" + _vala_array_add2 (&factories, &factories_length1, &_factories_size_, _gst_object_ref0 (factory)); +#line 449 "singledecodebin.c" + } + _gst_object_unref0 (plugin_feature); + _gst_object_unref0 (factory); + _g_free0 (klass); + } + } +#line 103 "singledecodebin.vala" + __g_list_free_gst_object_unref0 (plugin_feature_collection); +#line 458 "singledecodebin.c" + } +#line 114 "singledecodebin.vala" + qsort (factories, (gsize) factories_length1, (gsize) sizeof (GstElementFactory*), (GCompareFunc) single_decode_bin_factory_compare); +#line 462 "singledecodebin.c" + result = (_tmp5_ = factories, *result_length1 = factories_length1, _tmp5_); + _gst_object_unref0 (registry); +#line 116 "singledecodebin.vala" + return result; +#line 467 "singledecodebin.c" + _gst_object_unref0 (registry); + factories = (_vala_array_free (factories, factories_length1, (GDestroyNotify) gst_object_unref), NULL); +} + + +#line 121 "singledecodebin.vala" +static GeeArrayList* single_decode_bin_findCompatibleFactory (SingleDecodeBin* self, GstCaps* caps) { +#line 475 "singledecodebin.c" + GeeArrayList* result = NULL; + GeeArrayList* res; +#line 121 "singledecodebin.vala" + g_return_val_if_fail (IS_SINGLE_DECODE_BIN (self), NULL); +#line 121 "singledecodebin.vala" + g_return_val_if_fail (GST_IS_CAPS (caps), NULL); +#line 122 "singledecodebin.vala" + res = gee_array_list_new (GST_TYPE_ELEMENT_FACTORY, (GBoxedCopyFunc) gst_object_ref, gst_object_unref, NULL); +#line 484 "singledecodebin.c" + { + GstElementFactory** factory_collection; + int factory_collection_length1; + int factory_it; +#line 124 "singledecodebin.vala" + factory_collection = self->priv->factories; +#line 491 "singledecodebin.c" + factory_collection_length1 = self->priv->factories_length1; + for (factory_it = 0; factory_it < self->priv->factories_length1; factory_it = factory_it + 1) { + GstElementFactory* factory; + factory = _gst_object_ref0 (factory_collection[factory_it]); + { + GList* templates; +#line 125 "singledecodebin.vala" + templates = gst_element_factory_get_static_pad_templates (factory); +#line 500 "singledecodebin.c" + { + GList* template_collection; + GList* template_it; +#line 126 "singledecodebin.vala" + template_collection = templates; +#line 506 "singledecodebin.c" + for (template_it = template_collection; template_it != NULL; template_it = template_it->next) { + GstStaticPadTemplate template; +#line 126 "singledecodebin.vala" + template = *((GstStaticPadTemplate*) template_it->data); +#line 511 "singledecodebin.c" + { +#line 127 "singledecodebin.vala" + if (template.direction == GST_PAD_SINK) { +#line 515 "singledecodebin.c" + GstCaps* _tmp0_; + GstCaps* _tmp1_; + GstCaps* intersect; +#line 128 "singledecodebin.vala" + intersect = (_tmp1_ = gst_caps_intersect (caps, _tmp0_ = gst_static_caps_get (&template.static_caps)), _gst_caps_unref0 (_tmp0_), _tmp1_); +#line 129 "singledecodebin.vala" + if (!gst_caps_is_empty (intersect)) { +#line 130 "singledecodebin.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (res), factory); +#line 525 "singledecodebin.c" + _gst_caps_unref0 (intersect); +#line 131 "singledecodebin.vala" + break; +#line 529 "singledecodebin.c" + } + _gst_caps_unref0 (intersect); + } + } + } + } + _gst_object_unref0 (factory); + } + } + } + result = res; +#line 136 "singledecodebin.vala" + return result; +#line 543 "singledecodebin.c" +} + + +static void _vala_array_add3 (GstPad*** array, int* length, int* size, GstPad* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GstPad*, *array, (*size) + 1); + } + (*array)[(*length)++] = value; + (*array)[*length] = NULL; +} + + +static void _vala_array_add4 (GstPad*** array, int* length, int* size, GstPad* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GstPad*, *array, (*size) + 1); + } + (*array)[(*length)++] = value; + (*array)[*length] = NULL; +} + + +#line 142 "singledecodebin.vala" +static void single_decode_bin_closeLink (SingleDecodeBin* self, GstElement* element) { +#line 569 "singledecodebin.c" + GstPad** _tmp0_; + gint _to_connect_size_; + gint to_connect_length1; + GstPad** to_connect; + gboolean is_dynamic; +#line 142 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 142 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 579 "singledecodebin.c" + to_connect = (_tmp0_ = g_new0 (GstPad*, 0 + 1), to_connect_length1 = 0, _to_connect_size_ = to_connect_length1, _tmp0_); +#line 144 "singledecodebin.vala" + is_dynamic = FALSE; +#line 583 "singledecodebin.c" + { + GList* template_collection; + GList* template_it; +#line 146 "singledecodebin.vala" + template_collection = gst_element_class_get_pad_template_list (GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element))); +#line 589 "singledecodebin.c" + for (template_it = template_collection; template_it != NULL; template_it = template_it->next) { + GstPadTemplate* template; +#line 146 "singledecodebin.vala" + template = _gst_object_ref0 ((GstPadTemplate*) template_it->data); +#line 594 "singledecodebin.c" + { + GstPadDirection _tmp1_; + GstPadPresence _tmp2_; +#line 147 "singledecodebin.vala" + if ((g_object_get (template, "direction", &_tmp1_, NULL), _tmp1_) != GST_PAD_SRC) { +#line 600 "singledecodebin.c" + _gst_object_unref0 (template); +#line 148 "singledecodebin.vala" + continue; +#line 604 "singledecodebin.c" + } +#line 149 "singledecodebin.vala" + if ((g_object_get (template, "presence", &_tmp2_, NULL), _tmp2_) == GST_PAD_ALWAYS) { +#line 608 "singledecodebin.c" + char* _tmp4_; + char* _tmp3_ = NULL; + GstPad* _tmp5_; + GstPad* pad; +#line 150 "singledecodebin.vala" + pad = (_tmp5_ = gst_element_get_pad (element, _tmp4_ = (g_object_get (template, "name-template", &_tmp3_, NULL), _tmp3_)), _g_free0 (_tmp4_), _tmp5_); +#line 151 "singledecodebin.vala" + _vala_array_add3 (&to_connect, &to_connect_length1, &_to_connect_size_, _gst_object_ref0 (pad)); +#line 617 "singledecodebin.c" + _gst_object_unref0 (pad); + } else { + GstPadPresence _tmp6_; +#line 152 "singledecodebin.vala" + if ((g_object_get (template, "presence", &_tmp6_, NULL), _tmp6_) == GST_PAD_SOMETIMES) { +#line 623 "singledecodebin.c" + char* _tmp8_; + char* _tmp7_ = NULL; + GstPad* _tmp9_; + GstPad* pad; +#line 153 "singledecodebin.vala" + pad = (_tmp9_ = gst_element_get_pad (element, _tmp8_ = (g_object_get (template, "name-template", &_tmp7_, NULL), _tmp7_)), _g_free0 (_tmp8_), _tmp9_); +#line 154 "singledecodebin.vala" + if (pad != NULL) { +#line 155 "singledecodebin.vala" + _vala_array_add4 (&to_connect, &to_connect_length1, &_to_connect_size_, _gst_object_ref0 (pad)); +#line 634 "singledecodebin.c" + } else { +#line 156 "singledecodebin.vala" + is_dynamic = TRUE; +#line 638 "singledecodebin.c" + } + _gst_object_unref0 (pad); + } + } + _gst_object_unref0 (template); + } + } + } +#line 160 "singledecodebin.vala" + if (is_dynamic) { +#line 649 "singledecodebin.c" + char* _tmp11_; + char* _tmp10_; +#line 161 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, _tmp11_ = g_strdup_printf ("%s is a dynamic element", _tmp10_ = gst_object_get_name (GST_OBJECT (element)))); +#line 654 "singledecodebin.c" + _g_free0 (_tmp11_); + _g_free0 (_tmp10_); +#line 163 "singledecodebin.vala" + single_decode_bin_controlDynamicElement (self, element); +#line 659 "singledecodebin.c" + } + { + GstPad** pad_collection; + int pad_collection_length1; + int pad_it; +#line 166 "singledecodebin.vala" + pad_collection = to_connect; +#line 667 "singledecodebin.c" + pad_collection_length1 = to_connect_length1; + for (pad_it = 0; pad_it < to_connect_length1; pad_it = pad_it + 1) { + GstPad* pad; + pad = _gst_object_ref0 (pad_collection[pad_it]); + { + GstCaps* _tmp12_; +#line 167 "singledecodebin.vala" + single_decode_bin_closePadLink (self, element, pad, _tmp12_ = gst_pad_get_caps (pad)); +#line 676 "singledecodebin.c" + _gst_caps_unref0 (_tmp12_); + _gst_object_unref0 (pad); + } + } + } + to_connect = (_vala_array_free (to_connect, to_connect_length1, (GDestroyNotify) gst_object_unref), NULL); +} + + +#line 170 "singledecodebin.vala" +static gboolean single_decode_bin_isDemuxer (SingleDecodeBin* self, GstElement* element) { +#line 688 "singledecodebin.c" + gboolean result = FALSE; + gint potential_src_pads; +#line 170 "singledecodebin.vala" + g_return_val_if_fail (IS_SINGLE_DECODE_BIN (self), FALSE); +#line 170 "singledecodebin.vala" + g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE); +#line 171 "singledecodebin.vala" + if (!string_contains (gst_element_factory_get_klass (gst_element_get_factory (element)), "Demux")) { +#line 697 "singledecodebin.c" + result = FALSE; +#line 172 "singledecodebin.vala" + return result; +#line 701 "singledecodebin.c" + } +#line 174 "singledecodebin.vala" + potential_src_pads = 0; +#line 705 "singledecodebin.c" + { + GList* template_collection; + GList* template_it; +#line 175 "singledecodebin.vala" + template_collection = gst_element_class_get_pad_template_list (GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element))); +#line 711 "singledecodebin.c" + for (template_it = template_collection; template_it != NULL; template_it = template_it->next) { + GstPadTemplate* template; +#line 175 "singledecodebin.vala" + template = _gst_object_ref0 ((GstPadTemplate*) template_it->data); +#line 716 "singledecodebin.c" + { + GstPadDirection _tmp0_; + gboolean _tmp1_ = FALSE; + GstPadPresence _tmp2_; +#line 176 "singledecodebin.vala" + if ((g_object_get (template, "direction", &_tmp0_, NULL), _tmp0_) != GST_PAD_SRC) { +#line 723 "singledecodebin.c" + _gst_object_unref0 (template); +#line 177 "singledecodebin.vala" + continue; +#line 727 "singledecodebin.c" + } +#line 179 "singledecodebin.vala" + if ((g_object_get (template, "presence", &_tmp2_, NULL), _tmp2_) == GST_PAD_REQUEST) { +#line 179 "singledecodebin.vala" + _tmp1_ = TRUE; +#line 733 "singledecodebin.c" + } else { + char* _tmp4_; + char* _tmp3_ = NULL; +#line 180 "singledecodebin.vala" + _tmp1_ = string_contains (_tmp4_ = (g_object_get (template, "name-template", &_tmp3_, NULL), _tmp3_), "%"); +#line 739 "singledecodebin.c" + _g_free0 (_tmp4_); + } +#line 179 "singledecodebin.vala" + if (_tmp1_) { +#line 181 "singledecodebin.vala" + potential_src_pads = potential_src_pads + 2; +#line 746 "singledecodebin.c" + _gst_object_unref0 (template); +#line 182 "singledecodebin.vala" + break; +#line 750 "singledecodebin.c" + } else { +#line 183 "singledecodebin.vala" + potential_src_pads = potential_src_pads + 1; +#line 754 "singledecodebin.c" + } + _gst_object_unref0 (template); + } + } + } + result = potential_src_pads > 1; +#line 186 "singledecodebin.vala" + return result; +#line 763 "singledecodebin.c" +} + + +#line 189 "singledecodebin.vala" +static GstPad* single_decode_bin_plugDecodingQueue (SingleDecodeBin* self, GstPad* pad) { +#line 769 "singledecodebin.c" + GstPad* result = NULL; + GstElement* queue; + GValue _tmp1_; + GValue _tmp0_ = {0}; + GstPad* _tmp2_; +#line 189 "singledecodebin.vala" + g_return_val_if_fail (IS_SINGLE_DECODE_BIN (self), NULL); +#line 189 "singledecodebin.vala" + g_return_val_if_fail (GST_IS_PAD (pad), NULL); +#line 190 "singledecodebin.vala" + queue = gst_element_factory_make ("queue", NULL); +#line 191 "singledecodebin.vala" + g_object_set_property (G_OBJECT (queue), "max_size_time", (_tmp1_ = (g_value_init (&_tmp0_, G_TYPE_INT64), g_value_set_int64 (&_tmp0_, SINGLE_DECODE_BIN_QUEUE_SIZE), _tmp0_), &_tmp1_)); +#line 192 "singledecodebin.vala" + gst_bin_add (GST_BIN (self), _gst_object_ref0 (queue)); +#line 193 "singledecodebin.vala" + gst_element_sync_state_with_parent (queue); +#line 194 "singledecodebin.vala" + gst_pad_link (pad, _tmp2_ = gst_element_get_pad (queue, "sink")); +#line 789 "singledecodebin.c" + _gst_object_unref0 (_tmp2_); + result = gst_element_get_pad (queue, "src"); + _gst_object_unref0 (queue); +#line 195 "singledecodebin.vala" + return result; +#line 795 "singledecodebin.c" +} + + +#line 200 "singledecodebin.vala" +static GstElement* single_decode_bin_tryToLink1 (SingleDecodeBin* self, GstElement* source, GstPad* in_pad, GeeArrayList* factories) { +#line 801 "singledecodebin.c" + GstElement* result = NULL; + GstPad* pad; + GstElement* _result_; +#line 200 "singledecodebin.vala" + g_return_val_if_fail (IS_SINGLE_DECODE_BIN (self), NULL); +#line 200 "singledecodebin.vala" + g_return_val_if_fail (GST_IS_ELEMENT (source), NULL); +#line 200 "singledecodebin.vala" + g_return_val_if_fail (GST_IS_PAD (in_pad), NULL); +#line 200 "singledecodebin.vala" + g_return_val_if_fail (GEE_IS_ARRAY_LIST (factories), NULL); +#line 202 "singledecodebin.vala" + pad = _gst_object_ref0 (in_pad); +#line 203 "singledecodebin.vala" + if (single_decode_bin_isDemuxer (self, source)) { +#line 817 "singledecodebin.c" + GstPad* _tmp0_; +#line 204 "singledecodebin.vala" + pad = (_tmp0_ = single_decode_bin_plugDecodingQueue (self, in_pad), _gst_object_unref0 (pad), _tmp0_); +#line 821 "singledecodebin.c" + } +#line 206 "singledecodebin.vala" + _result_ = NULL; +#line 825 "singledecodebin.c" + { + GeeIterator* _factory_it; + _factory_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (factories)); +#line 207 "singledecodebin.vala" + while (TRUE) { +#line 831 "singledecodebin.c" + GstElementFactory* factory; + GstElement* element; + GstPad* sinkpad; + GstElement* _tmp1_; +#line 207 "singledecodebin.vala" + if (!gee_iterator_next (_factory_it)) { +#line 207 "singledecodebin.vala" + break; +#line 840 "singledecodebin.c" + } +#line 207 "singledecodebin.vala" + factory = (GstElementFactory*) gee_iterator_get (_factory_it); +#line 208 "singledecodebin.vala" + element = gst_element_factory_create (factory, NULL); +#line 209 "singledecodebin.vala" + if (element == NULL) { +#line 210 "singledecodebin.vala" + g_warning ("singledecodebin.vala:210: couldn't create element from factory"); +#line 850 "singledecodebin.c" + _gst_object_unref0 (factory); + _gst_object_unref0 (element); +#line 211 "singledecodebin.vala" + continue; +#line 855 "singledecodebin.c" + } +#line 214 "singledecodebin.vala" + sinkpad = gst_element_get_pad (element, "sink"); +#line 215 "singledecodebin.vala" + if (sinkpad == NULL) { +#line 861 "singledecodebin.c" + _gst_object_unref0 (factory); + _gst_object_unref0 (element); + _gst_object_unref0 (sinkpad); +#line 216 "singledecodebin.vala" + continue; +#line 867 "singledecodebin.c" + } +#line 218 "singledecodebin.vala" + gst_bin_add (GST_BIN (self), _gst_object_ref0 (element)); +#line 219 "singledecodebin.vala" + gst_element_set_state (element, GST_STATE_READY); +#line 220 "singledecodebin.vala" + if (gst_pad_link (pad, sinkpad) != GST_PAD_LINK_OK) { +#line 221 "singledecodebin.vala" + gst_element_set_state (element, GST_STATE_NULL); +#line 222 "singledecodebin.vala" + gst_bin_remove (GST_BIN (self), element); +#line 879 "singledecodebin.c" + _gst_object_unref0 (factory); + _gst_object_unref0 (element); + _gst_object_unref0 (sinkpad); +#line 223 "singledecodebin.vala" + continue; +#line 885 "singledecodebin.c" + } +#line 226 "singledecodebin.vala" + single_decode_bin_closeLink (self, element); +#line 227 "singledecodebin.vala" + gst_element_set_state (element, GST_STATE_PAUSED); +#line 229 "singledecodebin.vala" + _result_ = (_tmp1_ = _gst_object_ref0 (element), _gst_object_unref0 (_result_), _tmp1_); +#line 893 "singledecodebin.c" + _gst_object_unref0 (factory); + _gst_object_unref0 (element); + _gst_object_unref0 (sinkpad); +#line 230 "singledecodebin.vala" + break; +#line 899 "singledecodebin.c" + } + _g_object_unref0 (_factory_it); + } + result = _result_; + _gst_object_unref0 (pad); +#line 233 "singledecodebin.vala" + return result; +#line 907 "singledecodebin.c" +} + + +#line 239 "singledecodebin.vala" +static void single_decode_bin_closePadLink (SingleDecodeBin* self, GstElement* element, GstPad* pad, GstCaps* caps) { +#line 913 "singledecodebin.c" + char* _tmp3_; + char* _tmp2_; + char* _tmp1_; + char* _tmp0_; + GstCaps* _tmp4_; + gboolean _tmp5_; +#line 239 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 239 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 239 "singledecodebin.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 239 "singledecodebin.vala" + g_return_if_fail (GST_IS_CAPS (caps)); +#line 240 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, _tmp3_ = g_strdup_printf ("element:%s, pad:%s, caps:%s", _tmp0_ = gst_object_get_name (GST_OBJECT (element)), _tmp1_ = gst_object_get_name (GST_OBJECT (pad)), _tmp2_ = gst_caps_to_string (caps))); +#line 930 "singledecodebin.c" + _g_free0 (_tmp3_); + _g_free0 (_tmp2_); + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +#line 244 "singledecodebin.vala" + if (gst_caps_is_empty (caps)) { +#line 245 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_INFO, "unknown type"); +#line 246 "singledecodebin.vala" + return; +#line 941 "singledecodebin.c" + } +#line 248 "singledecodebin.vala" + if (gst_caps_is_any (caps)) { +#line 249 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, "type is not known yet, waiting"); +#line 250 "singledecodebin.vala" + return; +#line 949 "singledecodebin.c" + } +#line 253 "singledecodebin.vala" + gst_pad_get_direction (pad); +#line 255 "singledecodebin.vala" + if ((_tmp5_ = !gst_caps_is_empty (_tmp4_ = gst_caps_intersect (caps, self->priv->caps)), _gst_caps_unref0 (_tmp4_), _tmp5_)) { +#line 257 "singledecodebin.vala" + if (self->priv->srcpad == NULL) { +#line 258 "singledecodebin.vala" + single_decode_bin_wrapUp (self, element, pad); +#line 959 "singledecodebin.c" + } + } else { +#line 259 "singledecodebin.vala" + if (is_raw (caps)) { +#line 260 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, "We hit a raw caps which isn't the wanted one"); +#line 966 "singledecodebin.c" + } else { + GeeArrayList* facts; + GstElement* _tmp6_; +#line 265 "singledecodebin.vala" + if (gst_caps_get_size (caps) > 1) { +#line 266 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, "many possible types, delaying"); +#line 268 "singledecodebin.vala" + return; +#line 976 "singledecodebin.c" + } +#line 270 "singledecodebin.vala" + facts = single_decode_bin_findCompatibleFactory (self, caps); +#line 271 "singledecodebin.vala" + if (gee_collection_get_size (GEE_COLLECTION (facts)) == 0) { +#line 272 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, "unknown type"); +#line 984 "singledecodebin.c" + _g_object_unref0 (facts); +#line 274 "singledecodebin.vala" + return; +#line 988 "singledecodebin.c" + } +#line 276 "singledecodebin.vala" + _tmp6_ = single_decode_bin_tryToLink1 (self, element, pad, facts); +#line 992 "singledecodebin.c" + _gst_object_unref0 (_tmp6_); + _g_object_unref0 (facts); + } + } +} + + +#line 282 "singledecodebin.vala" +static void single_decode_bin_wrapUp (SingleDecodeBin* self, GstElement* element, GstPad* pad) { +#line 1002 "singledecodebin.c" + char* _tmp1_; + char* _tmp0_; + GstGhostPad* _tmp2_; +#line 282 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 282 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 282 "singledecodebin.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 283 "singledecodebin.vala" + if (self->priv->srcpad != NULL) { +#line 284 "singledecodebin.vala" + return; +#line 1016 "singledecodebin.c" + } +#line 285 "singledecodebin.vala" + single_decode_bin_markValidElements (self, element); +#line 286 "singledecodebin.vala" + single_decode_bin_removeUnusedElements (self, self->priv->typefind); +#line 287 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, _tmp1_ = g_strdup_printf ("ghosting pad %s", _tmp0_ = gst_object_get_name (GST_OBJECT (pad)))); +#line 1024 "singledecodebin.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +#line 289 "singledecodebin.vala" + self->priv->srcpad = (_tmp2_ = (GstGhostPad*) gst_ghost_pad_new ("src", pad), _gst_object_unref0 (self->priv->srcpad), _tmp2_); +#line 290 "singledecodebin.vala" + if (gst_caps_is_fixed (self->priv->caps)) { +#line 291 "singledecodebin.vala" + gst_pad_set_caps (GST_PAD (self->priv->srcpad), self->priv->caps); +#line 1033 "singledecodebin.c" + } +#line 293 "singledecodebin.vala" + gst_pad_set_active (GST_PAD (self->priv->srcpad), TRUE); +#line 295 "singledecodebin.vala" + gst_element_add_pad (GST_ELEMENT (self), _gst_object_ref0 (GST_PAD (self->priv->srcpad))); +#line 296 "singledecodebin.vala" + gst_element_post_message (GST_ELEMENT (self), gst_message_new_state_dirty (GST_OBJECT (self))); +#line 1041 "singledecodebin.c" +} + + +#line 300 "singledecodebin.vala" +static void single_decode_bin_markValidElements (SingleDecodeBin* self, GstElement* element) { +#line 1047 "singledecodebin.c" + char* _tmp1_; + char* _tmp0_; + GstPad* pad; + GstPad* _tmp2_; + GstElement* _tmp3_; + GstElement* parent; +#line 300 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 300 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 301 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, _tmp1_ = g_strdup_printf ("element:%s", _tmp0_ = gst_object_get_name (GST_OBJECT (element)))); +#line 1060 "singledecodebin.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +#line 303 "singledecodebin.vala" + if (element == self->priv->typefind) { +#line 304 "singledecodebin.vala" + return; +#line 1067 "singledecodebin.c" + } +#line 305 "singledecodebin.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->validelements), element); +#line 308 "singledecodebin.vala" + pad = _gst_object_ref0 (GST_PAD ((GstPad*) g_list_first (element->sinkpads)->data)); +#line 309 "singledecodebin.vala" + parent = (_tmp3_ = _gst_object_ref0 (gst_pad_get_parent_element (_tmp2_ = gst_pad_get_peer (pad))), _gst_object_unref0 (_tmp2_), _tmp3_); +#line 310 "singledecodebin.vala" + single_decode_bin_markValidElements (self, parent); +#line 1077 "singledecodebin.c" + _gst_object_unref0 (pad); + _gst_object_unref0 (parent); +} + + +#line 314 "singledecodebin.vala" +static void single_decode_bin_removeUnusedElements (SingleDecodeBin* self, GstElement* element) { +#line 314 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 314 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 1089 "singledecodebin.c" + { + GList* pad_collection; + GList* pad_it; +#line 315 "singledecodebin.vala" + pad_collection = element->srcpads; +#line 1095 "singledecodebin.c" + for (pad_it = pad_collection; pad_it != NULL; pad_it = pad_it->next) { + GstPad* pad; +#line 315 "singledecodebin.vala" + pad = _gst_object_ref0 ((GstPad*) pad_it->data); +#line 1100 "singledecodebin.c" + { +#line 316 "singledecodebin.vala" + if (gst_pad_is_linked (pad)) { +#line 1104 "singledecodebin.c" + GstPad* _tmp0_; + GstElement* _tmp1_; + GstElement* peer; +#line 317 "singledecodebin.vala" + peer = (_tmp1_ = _gst_object_ref0 (gst_pad_get_parent_element (_tmp0_ = gst_pad_get_peer (pad))), _gst_object_unref0 (_tmp0_), _tmp1_); +#line 318 "singledecodebin.vala" + single_decode_bin_removeUnusedElements (self, peer); +#line 319 "singledecodebin.vala" + if (!gee_abstract_collection_contains (GEE_ABSTRACT_COLLECTION (self->priv->validelements), peer)) { +#line 1114 "singledecodebin.c" + char* _tmp3_; + char* _tmp2_; + GstPad* _tmp4_; +#line 320 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, _tmp3_ = g_strdup_printf ("removing %s", _tmp2_ = gst_object_get_name (GST_OBJECT (peer)))); +#line 1120 "singledecodebin.c" + _g_free0 (_tmp3_); + _g_free0 (_tmp2_); +#line 322 "singledecodebin.vala" + gst_pad_unlink (pad, _tmp4_ = gst_pad_get_peer (pad)); +#line 1125 "singledecodebin.c" + _gst_object_unref0 (_tmp4_); +#line 323 "singledecodebin.vala" + gst_element_set_state (peer, GST_STATE_NULL); +#line 324 "singledecodebin.vala" + gst_bin_remove (GST_BIN (self), peer); +#line 1131 "singledecodebin.c" + } + _gst_object_unref0 (peer); + } + _gst_object_unref0 (pad); + } + } + } +} + + +#line 329 "singledecodebin.vala" +static void single_decode_bin_cleanUp (SingleDecodeBin* self) { +#line 1144 "singledecodebin.c" + GstGhostPad* _tmp0_; + GeeArrayList* _tmp1_; +#line 329 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 330 "singledecodebin.vala" + if (self->priv->srcpad != NULL) { +#line 331 "singledecodebin.vala" + gst_element_remove_pad (GST_ELEMENT (self), GST_PAD (self->priv->srcpad)); +#line 1153 "singledecodebin.c" + } +#line 332 "singledecodebin.vala" + self->priv->srcpad = (_tmp0_ = NULL, _gst_object_unref0 (self->priv->srcpad), _tmp0_); +#line 1157 "singledecodebin.c" + { + GeeIterator* _element_it; + _element_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->validelements)); +#line 333 "singledecodebin.vala" + while (TRUE) { +#line 1163 "singledecodebin.c" + GstElement* element; +#line 333 "singledecodebin.vala" + if (!gee_iterator_next (_element_it)) { +#line 333 "singledecodebin.vala" + break; +#line 1169 "singledecodebin.c" + } +#line 333 "singledecodebin.vala" + element = (GstElement*) gee_iterator_get (_element_it); +#line 334 "singledecodebin.vala" + gst_element_set_state (element, GST_STATE_NULL); +#line 335 "singledecodebin.vala" + gst_bin_remove (GST_BIN (self), element); +#line 1177 "singledecodebin.c" + _gst_object_unref0 (element); + } + _g_object_unref0 (_element_it); + } +#line 337 "singledecodebin.vala" + self->priv->validelements = (_tmp1_ = gee_array_list_new (GST_TYPE_ELEMENT, (GBoxedCopyFunc) gst_object_ref, gst_object_unref, NULL), _g_object_unref0 (self->priv->validelements), _tmp1_); +#line 1184 "singledecodebin.c" +} + + +#line 342 "singledecodebin.vala" +static GstStateChangeReturn single_decode_bin_real_change_state (GstElement* base, GstStateChange transition) { +#line 1190 "singledecodebin.c" + SingleDecodeBin * self; + GstStateChangeReturn result = 0; + GstStateChangeReturn res; + self = SINGLE_DECODE_BIN (base); +#line 343 "singledecodebin.vala" + res = GST_ELEMENT_CLASS (single_decode_bin_parent_class)->change_state (GST_ELEMENT (GST_BIN (self)), transition); +#line 344 "singledecodebin.vala" + if (transition == GST_STATE_CHANGE_PAUSED_TO_READY) { +#line 345 "singledecodebin.vala" + single_decode_bin_cleanUp (self); +#line 1201 "singledecodebin.c" + } + result = res; +#line 346 "singledecodebin.vala" + return result; +#line 1206 "singledecodebin.c" +} + + +#line 351 "singledecodebin.vala" +static void single_decode_bin_typefindHaveTypeCb (GstElement* t, gint probability, GstCaps* caps, SingleDecodeBin* data) { +#line 1212 "singledecodebin.c" + char* _tmp1_; + char* _tmp0_; + GstPad* _tmp2_; +#line 351 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (t)); +#line 351 "singledecodebin.vala" + g_return_if_fail (GST_IS_CAPS (caps)); +#line 351 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (data)); +#line 353 "singledecodebin.vala" + logging_emit (G_OBJECT (data), LOGGING_FACILITY_SINGLEDECODEBIN, LOGGING_LEVEL_VERBOSE, _tmp1_ = g_strdup_printf ("probability:%d, caps:%s", probability, _tmp0_ = gst_caps_to_string (caps))); +#line 1224 "singledecodebin.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +#line 355 "singledecodebin.vala" + single_decode_bin_closePadLink (data, t, _tmp2_ = gst_element_get_pad (t, "src"), caps); +#line 1229 "singledecodebin.c" + _gst_object_unref0 (_tmp2_); +} + + +#line 360 "singledecodebin.vala" +static void single_decode_bin_dynamicPadAddedCb (SingleDecodeBin* self, GstElement* element, GstPad* pad) { +#line 360 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 360 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 360 "singledecodebin.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 361 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "dynamicPadAddedCb"); +#line 362 "singledecodebin.vala" + if (self->priv->srcpad == NULL) { +#line 1246 "singledecodebin.c" + GstCaps* _tmp0_; +#line 363 "singledecodebin.vala" + single_decode_bin_closePadLink (self, element, pad, _tmp0_ = gst_pad_get_caps (pad)); +#line 1250 "singledecodebin.c" + _gst_caps_unref0 (_tmp0_); + } +} + + +#line 366 "singledecodebin.vala" +static void single_decode_bin_dynamicNoMorePadsCb (SingleDecodeBin* self, GstElement* element) { +#line 366 "singledecodebin.vala" + g_return_if_fail (IS_SINGLE_DECODE_BIN (self)); +#line 366 "singledecodebin.vala" + g_return_if_fail (GST_IS_ELEMENT (element)); +#line 367 "singledecodebin.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "dynamicNoMorePadsCb"); +#line 1264 "singledecodebin.c" +} + + +static void single_decode_bin_base_init (SingleDecodeBinClass * klass) { + { + GstPadTemplate* sink_pad; + GstPadTemplate* src_pad; +#line 52 "singledecodebin.vala" + sink_pad = gst_pad_template_new ("sinkpadtemplate", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_new_any ()); +#line 54 "singledecodebin.vala" + src_pad = gst_pad_template_new ("srcpadtemplate", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_new_any ()); +#line 57 "singledecodebin.vala" + gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), src_pad); +#line 58 "singledecodebin.vala" + gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), sink_pad); +#line 1280 "singledecodebin.c" + _gst_object_unref0 (sink_pad); + _gst_object_unref0 (src_pad); + } +} + + +static void single_decode_bin_class_init (SingleDecodeBinClass * klass) { + single_decode_bin_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (SingleDecodeBinPrivate)); + GST_ELEMENT_CLASS (klass)->change_state = single_decode_bin_real_change_state; + G_OBJECT_CLASS (klass)->finalize = single_decode_bin_finalize; +} + + +static void single_decode_bin_instance_init (SingleDecodeBin * self) { + self->priv = SINGLE_DECODE_BIN_GET_PRIVATE (self); + self->priv->dynamics = gee_array_list_new (GST_TYPE_ELEMENT, (GBoxedCopyFunc) gst_object_ref, gst_object_unref, NULL); + self->priv->validelements = gee_array_list_new (GST_TYPE_ELEMENT, (GBoxedCopyFunc) gst_object_ref, gst_object_unref, NULL); +} + + +static void single_decode_bin_finalize (GObject* obj) { + SingleDecodeBin * self; + self = SINGLE_DECODE_BIN (obj); + _gst_caps_unref0 (self->priv->caps); + _gst_object_unref0 (self->priv->typefind); + _gst_object_unref0 (self->priv->srcpad); + _g_object_unref0 (self->priv->dynamics); + _g_object_unref0 (self->priv->validelements); + self->priv->factories = (_vala_array_free (self->priv->factories, self->priv->factories_length1, (GDestroyNotify) gst_object_unref), NULL); + G_OBJECT_CLASS (single_decode_bin_parent_class)->finalize (obj); +} + + +GType single_decode_bin_get_type (void) { + static volatile gsize single_decode_bin_type_id__volatile = 0; + if (g_once_init_enter (&single_decode_bin_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (SingleDecodeBinClass), (GBaseInitFunc) single_decode_bin_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) single_decode_bin_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SingleDecodeBin), 0, (GInstanceInitFunc) single_decode_bin_instance_init, NULL }; + GType single_decode_bin_type_id; + single_decode_bin_type_id = g_type_register_static (GST_TYPE_BIN, "SingleDecodeBin", &g_define_type_info, 0); + g_once_init_leave (&single_decode_bin_type_id__volatile, single_decode_bin_type_id); + } + return single_decode_bin_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + + + diff --git a/src/marina/marina/singledecodebin.o b/src/marina/marina/singledecodebin.o new file mode 100644 index 0000000000000000000000000000000000000000..78f4b16635ea38a4e274b09fc610fb8da624281f GIT binary patch literal 97624 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 +#include +#include +#include +#include +#include +#include + + +#define TYPE_THUMBNAIL_SINK (thumbnail_sink_get_type ()) +#define THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSink)) +#define THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass)) +#define IS_THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_SINK)) +#define IS_THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_SINK)) +#define THUMBNAIL_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass)) + +typedef struct _ThumbnailSink ThumbnailSink; +typedef struct _ThumbnailSinkClass ThumbnailSinkClass; +typedef struct _ThumbnailSinkPrivate ThumbnailSinkPrivate; +#define _gst_structure_free0(var) ((var == NULL) ? NULL : (var = (gst_structure_free (var), NULL))) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL))) + +struct _ThumbnailSink { + GstBaseSink parent_instance; + ThumbnailSinkPrivate * priv; +}; + +struct _ThumbnailSinkClass { + GstBaseSinkClass parent_class; +}; + +struct _ThumbnailSinkPrivate { + gint width; + gint height; +}; + + +static gpointer thumbnail_sink_parent_class = NULL; + +GType thumbnail_sink_get_type (void); +#define THUMBNAIL_SINK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_THUMBNAIL_SINK, ThumbnailSinkPrivate)) +enum { + THUMBNAIL_SINK_DUMMY_PROPERTY +}; +#define THUMBNAIL_SINK_caps_string "video/x-raw-rgb,bpp = (int) 32, depth = (int) 32,\n" \ +" endianness = (int) BIG_ENDIAN,\n" \ +" blue_mask = (int) 0xFF000000,\n" \ +" green_mask = (int) 0x00FF0000,\n" \ +" red_mask = (int) 0x0000FF00,\n" \ +" width = (int) [ 1, max ],\n" \ +" height = (int) [ 1, max ],\n" \ +" framerate = (fraction) [ 0, max ]" +ThumbnailSink* thumbnail_sink_new (void); +ThumbnailSink* thumbnail_sink_construct (GType object_type); +static gboolean thumbnail_sink_real_set_caps (GstBaseSink* base, GstCaps* c); +static void thumbnail_sink_convert_pixbuf_to_rgb (ThumbnailSink* self, GdkPixbuf* buf); +static GstFlowReturn thumbnail_sink_real_preroll (GstBaseSink* base, GstBuffer* b); +static GObject * thumbnail_sink_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); +static void thumbnail_sink_finalize (GObject* obj); + + + +#line 31 "thumbnailsink.vala" +ThumbnailSink* thumbnail_sink_construct (GType object_type) { +#line 64 "thumbnailsink.c" + ThumbnailSink * self; + self = g_object_newv (object_type, 0, NULL); +#line 32 "thumbnailsink.vala" + gst_base_sink_set_sync (GST_BASE_SINK (self), FALSE); +#line 69 "thumbnailsink.c" + return self; +} + + +#line 31 "thumbnailsink.vala" +ThumbnailSink* thumbnail_sink_new (void) { +#line 31 "thumbnailsink.vala" + return thumbnail_sink_construct (TYPE_THUMBNAIL_SINK); +#line 78 "thumbnailsink.c" +} + + +static gpointer _gst_structure_copy0 (gpointer self) { + return self ? gst_structure_copy (self) : NULL; +} + + +#line 35 "thumbnailsink.vala" +static gboolean thumbnail_sink_real_set_caps (GstBaseSink* base, GstCaps* c) { +#line 89 "thumbnailsink.c" + ThumbnailSink * self; + gboolean result = FALSE; + GstStructure* s; + gboolean _tmp0_ = FALSE; + self = THUMBNAIL_SINK (base); +#line 35 "thumbnailsink.vala" + g_return_val_if_fail (GST_IS_CAPS (c), FALSE); +#line 36 "thumbnailsink.vala" + if (gst_caps_get_size (c) < 1) { +#line 99 "thumbnailsink.c" + result = FALSE; +#line 37 "thumbnailsink.vala" + return result; +#line 103 "thumbnailsink.c" + } +#line 39 "thumbnailsink.vala" + s = _gst_structure_copy0 (gst_caps_get_structure (c, (guint) 0)); +#line 41 "thumbnailsink.vala" + if (!gst_structure_get_int (s, "width", &self->priv->width)) { +#line 41 "thumbnailsink.vala" + _tmp0_ = TRUE; +#line 111 "thumbnailsink.c" + } else { +#line 42 "thumbnailsink.vala" + _tmp0_ = !gst_structure_get_int (s, "height", &self->priv->height); +#line 115 "thumbnailsink.c" + } +#line 41 "thumbnailsink.vala" + if (_tmp0_) { +#line 119 "thumbnailsink.c" + result = FALSE; + _gst_structure_free0 (s); +#line 43 "thumbnailsink.vala" + return result; +#line 124 "thumbnailsink.c" + } + result = TRUE; + _gst_structure_free0 (s); +#line 44 "thumbnailsink.vala" + return result; +#line 130 "thumbnailsink.c" +} + + +#line 47 "thumbnailsink.vala" +static void thumbnail_sink_convert_pixbuf_to_rgb (ThumbnailSink* self, GdkPixbuf* buf) { +#line 136 "thumbnailsink.c" + guchar* data; + gint limit; +#line 47 "thumbnailsink.vala" + g_return_if_fail (IS_THUMBNAIL_SINK (self)); +#line 47 "thumbnailsink.vala" + g_return_if_fail (GDK_IS_PIXBUF (buf)); +#line 48 "thumbnailsink.vala" + data = gdk_pixbuf_get_pixels (buf); +#line 49 "thumbnailsink.vala" + limit = gdk_pixbuf_get_width (buf) * gdk_pixbuf_get_height (buf); +#line 51 "thumbnailsink.vala" + while (TRUE) { +#line 149 "thumbnailsink.c" + guchar temp; +#line 51 "thumbnailsink.vala" + if (!((limit--) != 0)) { +#line 51 "thumbnailsink.vala" + break; +#line 155 "thumbnailsink.c" + } +#line 52 "thumbnailsink.vala" + temp = data[0]; +#line 53 "thumbnailsink.vala" + data[0] = data[2]; +#line 54 "thumbnailsink.vala" + data[2] = temp; +#line 56 "thumbnailsink.vala" + data = data + 4; +#line 165 "thumbnailsink.c" + } +} + + +#line 60 "thumbnailsink.vala" +static GstFlowReturn thumbnail_sink_real_preroll (GstBaseSink* base, GstBuffer* b) { +#line 172 "thumbnailsink.c" + ThumbnailSink * self; + GstFlowReturn result = 0; + GdkPixbuf* buf; + self = THUMBNAIL_SINK (base); +#line 60 "thumbnailsink.vala" + g_return_val_if_fail (GST_IS_BUFFER (b), 0); +#line 61 "thumbnailsink.vala" + buf = gdk_pixbuf_new_from_data (b->data, GDK_COLORSPACE_RGB, TRUE, 8, self->priv->width, self->priv->height, self->priv->width * 4, NULL, NULL); +#line 63 "thumbnailsink.vala" + thumbnail_sink_convert_pixbuf_to_rgb (self, buf); +#line 65 "thumbnailsink.vala" + g_signal_emit_by_name (self, "have-thumbnail", buf); +#line 185 "thumbnailsink.c" + result = GST_FLOW_OK; + _g_object_unref0 (buf); +#line 66 "thumbnailsink.vala" + return result; +#line 190 "thumbnailsink.c" +} + + +static GObject * thumbnail_sink_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { + GObject * obj; + GObjectClass * parent_class; + ThumbnailSink * self; + parent_class = G_OBJECT_CLASS (thumbnail_sink_parent_class); + obj = parent_class->constructor (type, n_construct_properties, construct_properties); + self = THUMBNAIL_SINK (obj); + { + } + return obj; +} + + +static void thumbnail_sink_base_init (ThumbnailSinkClass * klass) { + { + GstStaticPadTemplate pad = {0}; + GstPadTemplate* _tmp0_; +#line 18 "thumbnailsink.vala" + pad.name_template = "sink"; +#line 19 "thumbnailsink.vala" + pad.direction = GST_PAD_SINK; +#line 20 "thumbnailsink.vala" + pad.presence = GST_PAD_ALWAYS; +#line 21 "thumbnailsink.vala" + pad.static_caps.string = THUMBNAIL_SINK_caps_string; +#line 23 "thumbnailsink.vala" + gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), _tmp0_ = gst_static_pad_template_get (&pad)); +#line 221 "thumbnailsink.c" + _gst_object_unref0 (_tmp0_); + } +} + + +static void thumbnail_sink_class_init (ThumbnailSinkClass * klass) { + thumbnail_sink_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ThumbnailSinkPrivate)); + GST_BASE_SINK_CLASS (klass)->set_caps = thumbnail_sink_real_set_caps; + GST_BASE_SINK_CLASS (klass)->preroll = thumbnail_sink_real_preroll; + G_OBJECT_CLASS (klass)->constructor = thumbnail_sink_constructor; + G_OBJECT_CLASS (klass)->finalize = thumbnail_sink_finalize; + g_signal_new ("have_thumbnail", TYPE_THUMBNAIL_SINK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GDK_TYPE_PIXBUF); +} + + +static void thumbnail_sink_instance_init (ThumbnailSink * self) { + self->priv = THUMBNAIL_SINK_GET_PRIVATE (self); +} + + +static void thumbnail_sink_finalize (GObject* obj) { + ThumbnailSink * self; + self = THUMBNAIL_SINK (obj); + G_OBJECT_CLASS (thumbnail_sink_parent_class)->finalize (obj); +} + + +GType thumbnail_sink_get_type (void) { + static volatile gsize thumbnail_sink_type_id__volatile = 0; + if (g_once_init_enter (&thumbnail_sink_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ThumbnailSinkClass), (GBaseInitFunc) thumbnail_sink_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) thumbnail_sink_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ThumbnailSink), 0, (GInstanceInitFunc) thumbnail_sink_instance_init, NULL }; + GType thumbnail_sink_type_id; + thumbnail_sink_type_id = g_type_register_static (GST_TYPE_BASE_SINK, "ThumbnailSink", &g_define_type_info, 0); + g_once_init_leave (&thumbnail_sink_type_id__volatile, thumbnail_sink_type_id); + } + return thumbnail_sink_type_id__volatile; +} + + + + diff --git a/src/marina/marina/thumbnailsink.o b/src/marina/marina/thumbnailsink.o new file mode 100644 index 0000000000000000000000000000000000000000..a39a57b96cc3aa507fbf38dab1958105c5d5c283 GIT binary patch literal 48196 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 literal 0 HcmV?d00001 diff --git a/src/marina/marina/timeline.c b/src/marina/marina/timeline.c new file mode 100644 index 0000000..3d62e24 --- /dev/null +++ b/src/marina/marina/timeline.c @@ -0,0 +1,2906 @@ +/* timeline.c generated by valac, the Vala compiler + * generated from timeline.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_TRACK_CLIP_PAIR (track_clip_pair_get_type ()) +#define TRACK_CLIP_PAIR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_CLIP_PAIR, TrackClipPair)) +#define TRACK_CLIP_PAIR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_CLIP_PAIR, TrackClipPairClass)) +#define IS_TRACK_CLIP_PAIR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_CLIP_PAIR)) +#define IS_TRACK_CLIP_PAIR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_CLIP_PAIR)) +#define TRACK_CLIP_PAIR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_CLIP_PAIR, TrackClipPairClass)) + +typedef struct _TrackClipPair TrackClipPair; +typedef struct _TrackClipPairClass TrackClipPairClass; +typedef struct _TrackClipPairPrivate TrackClipPairPrivate; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +typedef struct _ParamSpecTrackClipPair ParamSpecTrackClipPair; + +#define TYPE_CLIPBOARD (clipboard_get_type ()) +#define CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIPBOARD, Clipboard)) +#define CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIPBOARD, ClipboardClass)) +#define IS_CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIPBOARD)) +#define IS_CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIPBOARD)) +#define CLIPBOARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIPBOARD, ClipboardClass)) + +typedef struct _Clipboard Clipboard; +typedef struct _ClipboardClass ClipboardClass; +typedef struct _ClipboardPrivate ClipboardPrivate; + +#define TYPE_CLIP_VIEW (clip_view_get_type ()) +#define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView)) +#define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass)) +#define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW)) +#define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW)) +#define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass)) + +typedef struct _ClipView ClipView; +typedef struct _ClipViewClass ClipViewClass; + +#define TYPE_TRACK_VIEW (track_view_get_type ()) +#define TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW, TrackView)) +#define IS_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW)) +#define TRACK_VIEW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRACK_VIEW, TrackViewIface)) + +typedef struct _TrackView TrackView; +typedef struct _TrackViewIface TrackViewIface; +typedef struct _ClipViewPrivate ClipViewPrivate; +#define _track_clip_pair_unref0(var) ((var == NULL) ? NULL : (var = (track_clip_pair_unref (var), NULL))) +typedef struct _ParamSpecClipboard ParamSpecClipboard; + +#define TYPE_TIME_LINE (time_line_get_type ()) +#define TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TIME_LINE, TimeLine)) +#define TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TIME_LINE, TimeLineClass)) +#define IS_TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TIME_LINE)) +#define IS_TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TIME_LINE)) +#define TIME_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TIME_LINE, TimeLineClass)) + +typedef struct _TimeLine TimeLine; +typedef struct _TimeLineClass TimeLineClass; +typedef struct _TimeLinePrivate TimeLinePrivate; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; + +#define VIEW_TYPE_RULER (view_ruler_get_type ()) +#define VIEW_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_RULER, ViewRuler)) +#define VIEW_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_RULER, ViewRulerClass)) +#define VIEW_IS_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_RULER)) +#define VIEW_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_RULER)) +#define VIEW_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_RULER, ViewRulerClass)) + +typedef struct _ViewRuler ViewRuler; +typedef struct _ViewRulerClass ViewRulerClass; +#define _clipboard_unref0(var) ((var == NULL) ? NULL : (var = (clipboard_unref (var), NULL))) + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +#define TYPE_CLASS_FACTORY (class_factory_get_type ()) +#define CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLASS_FACTORY, ClassFactory)) +#define CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLASS_FACTORY, ClassFactoryClass)) +#define IS_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLASS_FACTORY)) +#define IS_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLASS_FACTORY)) +#define CLASS_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLASS_FACTORY, ClassFactoryClass)) + +typedef struct _ClassFactory ClassFactory; +typedef struct _ClassFactoryClass ClassFactoryClass; +#define _class_factory_unref0(var) ((var == NULL) ? NULL : (var = (class_factory_unref (var), NULL))) + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) +typedef struct _ModelClipPrivate ModelClipPrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) + +struct _TrackClipPair { + GTypeInstance parent_instance; + volatile int ref_count; + TrackClipPairPrivate * priv; + ModelTrack* track; + ModelClip* clip; +}; + +struct _TrackClipPairClass { + GTypeClass parent_class; + void (*finalize) (TrackClipPair *self); +}; + +struct _ParamSpecTrackClipPair { + GParamSpec parent_instance; +}; + +struct _Clipboard { + GTypeInstance parent_instance; + volatile int ref_count; + ClipboardPrivate * priv; + GeeArrayList* clips; +}; + +struct _ClipboardClass { + GTypeClass parent_class; + void (*finalize) (Clipboard *self); +}; + +struct _ClipboardPrivate { + gint64 minimum_time; +}; + +struct _TrackViewIface { + GTypeInterface parent_iface; + void (*move_to_top) (TrackView* self, ClipView* clip_view); + void (*resize) (TrackView* self); + ModelTrack* (*get_track) (TrackView* self); + gint (*get_track_height) (TrackView* self); + GtkWidget* (*find_child) (TrackView* self, double x, double y); + void (*select_all) (TrackView* self); +}; + +struct _ClipView { + GtkDrawingArea parent_instance; + ClipViewPrivate * priv; + ModelClip* clip; + gint64 initial_time; + gboolean is_selected; + gint height; +}; + +struct _ClipViewClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ParamSpecClipboard { + GParamSpec parent_instance; +}; + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +struct _TimeLine { + GtkEventBox parent_instance; + TimeLinePrivate * priv; + ModelProject* project; + ModelTimeSystem* provider; + ViewRuler* ruler; + GeeArrayList* tracks; + GeeArrayList* selected_clips; + Clipboard* clipboard; +}; + +struct _TimeLineClass { + GtkEventBoxClass parent_class; +}; + +struct _TimeLinePrivate { + GtkWidget* drag_widget; + gboolean copying; + GtkVBox* vbox; + float pixel_div; + float pixel_min; + float pixel_max; + GtkLabel* high_water; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + + +static gpointer track_clip_pair_parent_class = NULL; +static gpointer clipboard_parent_class = NULL; +static gpointer time_line_parent_class = NULL; + +gpointer track_clip_pair_ref (gpointer instance); +void track_clip_pair_unref (gpointer instance); +GParamSpec* param_spec_track_clip_pair (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_track_clip_pair (GValue* value, gpointer v_object); +void value_take_track_clip_pair (GValue* value, gpointer v_object); +gpointer value_get_track_clip_pair (const GValue* value); +GType track_clip_pair_get_type (void); +GType model_track_get_type (void); +GType model_clip_get_type (void); +enum { + TRACK_CLIP_PAIR_DUMMY_PROPERTY +}; +TrackClipPair* track_clip_pair_new (ModelTrack* track, ModelClip* clip); +TrackClipPair* track_clip_pair_construct (GType object_type, ModelTrack* track, ModelClip* clip); +static void track_clip_pair_finalize (TrackClipPair* obj); +gpointer clipboard_ref (gpointer instance); +void clipboard_unref (gpointer instance); +GParamSpec* param_spec_clipboard (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_clipboard (GValue* value, gpointer v_object); +void value_take_clipboard (GValue* value, gpointer v_object); +gpointer value_get_clipboard (const GValue* value); +GType clipboard_get_type (void); +#define CLIPBOARD_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CLIPBOARD, ClipboardPrivate)) +enum { + CLIPBOARD_DUMMY_PROPERTY +}; +GType clip_view_get_type (void); +GType track_view_get_type (void); +gint64 model_clip_get_start (ModelClip* self); +ModelTrack* track_view_get_track (TrackView* self); +void clipboard_select (Clipboard* self, GeeArrayList* selected_clips); +void model_track_do_clip_paste (ModelTrack* self, ModelClip* clip, gint64 position); +ModelClip* model_clip_copy (ModelClip* self); +void clipboard_paste (Clipboard* self, ModelTrack* selected_track, gint64 time); +Clipboard* clipboard_new (void); +Clipboard* clipboard_construct (GType object_type); +static void clipboard_finalize (Clipboard* obj); +GType time_line_get_type (void); +GType model_project_get_type (void); +GType model_time_system_get_type (void); +GType view_ruler_get_type (void); +#define TIME_LINE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_TIME_LINE, TimeLinePrivate)) +enum { + TIME_LINE_DUMMY_PROPERTY +}; +#define TIME_LINE_BAR_HEIGHT 32 +#define TIME_LINE_BORDER 4 +#define TIME_LINE_RULER_HEIGHT 32 +static void time_line_on_geometry_changed (TimeLine* self); +static void _time_line_on_geometry_changed_model_time_system_geometry_changed (ModelTimeSystem* _sender, gpointer self); +ViewRuler* view_ruler_new (ModelTimeSystem* provider, gint height); +ViewRuler* view_ruler_construct (GType object_type, ModelTimeSystem* provider, gint height); +void time_line_on_ruler_position_changed (TimeLine* self, gint x); +static void _time_line_on_ruler_position_changed_view_ruler_position_changed (ViewRuler* _sender, gint x, gpointer self); +static void time_line_on_track_added (TimeLine* self, ModelTrack* track); +static void _time_line_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self); +static void time_line_on_track_removed (TimeLine* self, ModelTrack* track); +static void _time_line_on_track_removed_model_project_track_removed (ModelProject* _sender, ModelTrack* track, gpointer self); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType model_tempo_information_get_type (void); +GType model_clip_file_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType view_media_engine_get_type (void); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +GType model_library_importer_get_type (void); +static void time_line_on_position_changed (TimeLine* self); +static void _time_line_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self); +void parse_color (const char* color, GdkColor* result); +void model_time_system_calculate_pixel_step (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); +TimeLine* time_line_new (ModelProject* p, ModelTimeSystem* provider, GdkDragAction actions); +TimeLine* time_line_construct (GType object_type, ModelProject* p, ModelTimeSystem* provider, GdkDragAction actions); +gint64 model_project_get_length (ModelProject* self); +void time_line_zoom (TimeLine* self, float inc); +float model_time_system_get_pixel_percentage (ModelTimeSystem* self); +void time_line_zoom_to_project (TimeLine* self, double width); +void track_view_resize (TrackView* self); +gint64 model_project_transport_get_position (ModelProject* self); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +gpointer class_factory_ref (gpointer instance); +void class_factory_unref (gpointer instance); +GParamSpec* param_spec_class_factory (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_class_factory (GValue* value, gpointer v_object); +void value_take_class_factory (GValue* value, gpointer v_object); +gpointer value_get_class_factory (const GValue* value); +GType class_factory_get_type (void); +ClassFactory* class_factory_get_class_factory (void); +TrackView* class_factory_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline); +void time_line_on_clip_view_added (TimeLine* self, ClipView* clip_view); +static void _time_line_on_clip_view_added_track_view_clip_view_added (TrackView* _sender, ClipView* clip_view, gpointer self); +GType model_media_type_get_type (void); +ModelMediaType model_track_media_type (ModelTrack* self); +static void time_line_on_clip_view_selection_request (TimeLine* self, ClipView* clip_view, gboolean extend); +static void _time_line_on_clip_view_selection_request_clip_view_selection_request (ClipView* _sender, ClipView* clip_view, gboolean extend_selection, gpointer self); +static void time_line_on_clip_view_move_request (TimeLine* self, ClipView* clip_view, gint64 delta); +static void _time_line_on_clip_view_move_request_clip_view_move_request (ClipView* _sender, ClipView* clip_view, gint64 delta, gpointer self); +static void time_line_on_clip_view_move_commit (TimeLine* self, ClipView* clip_view, gint64 delta); +static void _time_line_on_clip_view_move_commit_clip_view_move_commit (ClipView* _sender, ClipView* clip_view, gint64 delta, gpointer self); +static void time_line_on_clip_view_move_begin (TimeLine* self, ClipView* clip_view, gboolean copy); +static void _time_line_on_clip_view_move_begin_clip_view_move_begin (ClipView* _sender, ClipView* clip_view, gboolean copy, gpointer self); +static void time_line_on_clip_view_trim_begin (TimeLine* self, ClipView* clip, GdkWindowEdge edge); +static void _time_line_on_clip_view_trim_begin_clip_view_trim_begin (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self); +static void time_line_on_clip_view_trim_commit (TimeLine* self, ClipView* clip_view, GdkWindowEdge edge); +static void _time_line_on_clip_view_trim_commit_clip_view_trim_commit (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self); +void time_line_deselect_all_clips (TimeLine* self); +void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description); +gint64 model_clip_get_end (ModelClip* self); +void model_clip_gnonlin_disconnect (ModelClip* self); +void model_track_remove_clip_from_array (ModelTrack* self, ModelClip* pos); +void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select); +void track_view_move_to_top (TrackView* self, ClipView* clip_view); +gint64 model_clip_get_duration (ModelClip* self); +gboolean time_line_is_clip_selected (TimeLine* self); +void model_clip_gnonlin_connect (ModelClip* self); +void model_track_move (ModelTrack* self, ModelClip* c, gint64 pos, gint64 original_time); +void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description); +void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge); +void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +#define CLIP_VIEW_SNAP_DELTA 10 +gint model_time_system_time_to_xsize (ModelTimeSystem* self, gint64 time); +gint64 model_time_system_xsize_to_time (ModelTimeSystem* self, gint x); +gboolean model_track_clip_is_near (ModelTrack* self, ModelClip* clip, gint64 range, gint64* adjustment); +void clip_view_snap (ClipView* self, gint64 amount); +static void time_line_constrain_move (TimeLine* self, ClipView* clip_view, gint64* delta); +static gboolean time_line_move_allowed (TimeLine* self, gint64* move_distance); +static void time_line_move_the_clips (TimeLine* self, gint64 move_distance); +gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time); +void time_line_do_clip_move (TimeLine* self, ClipView* clip_view, gint64 delta); +void model_clip_set_start (ModelClip* self, gint64 value); +gboolean model_project_transport_is_recording (ModelProject* self); +void time_line_update_pos (TimeLine* self, gint event_x); +gboolean time_line_gap_selected (TimeLine* self); +void clip_view_delete_clip (ClipView* self); +void time_line_delete_selection (TimeLine* self); +void time_line_do_cut (TimeLine* self); +void time_line_do_copy (TimeLine* self); +void time_line_do_paste (TimeLine* self, gint64 pos); +void time_line_paste (TimeLine* self); +gboolean model_track_get_is_selected (ModelTrack* self); +static TrackView* time_line_find_video_track_view (TimeLine* self); +static TrackView* time_line_find_audio_track_view (TimeLine* self); +void track_view_select_all (TrackView* self); +void time_line_select_all (TimeLine* self); +static gboolean time_line_real_expose_event (GtkWidget* base, GdkEventExpose* event); +GtkWidget* time_line_find_child (TimeLine* self, double x, double y); +void dialog_utils_warning (const char* major_message, const char* minor_message); +GtkResponseType dialog_utils_add_cancel (const char* message); +void model_project_create_clip_importer (ModelProject* self, ModelTrack* track, gboolean timeline_add, gint64 time_to_add, gboolean both_tracks, GtkWindow* progress_window_parent, gint number); +gint64 model_time_system_xpos_to_time (ModelTimeSystem* self, gint x); +void model_library_importer_add_file (ModelLibraryImporter* self, const char* filename, GError** error); +void model_library_importer_start (ModelLibraryImporter* self, GError** error); +static void time_line_real_drag_data_received (GtkWidget* base, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time); +void model_project_snap_coord (ModelProject* self, gint64* coord, gint64 span); +gint64 model_time_system_get_pixel_snap_time (ModelTimeSystem* self); +void view_media_engine_go (ViewMediaEngine* self, gint64 pos); +static void time_line_deselect_all (TimeLine* self); +GtkWidget* track_view_find_child (TrackView* self, double x, double y); +void model_track_set_selected (ModelTrack* self, gboolean is_selected); +static gboolean time_line_real_button_press_event (GtkWidget* base, GdkEventButton* event); +static gboolean time_line_real_button_release_event (GtkWidget* base, GdkEventButton* event); +static gboolean time_line_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event); +static void time_line_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); + +extern const GtkTargetEntry drag_target_entries[1]; + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 10 "timeline.vala" +TrackClipPair* track_clip_pair_construct (GType object_type, ModelTrack* track, ModelClip* clip) { +#line 600 "timeline.c" + TrackClipPair* self; + ModelTrack* _tmp0_; + ModelClip* _tmp1_; +#line 10 "timeline.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 10 "timeline.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 608 "timeline.c" + self = (TrackClipPair*) g_type_create_instance (object_type); +#line 11 "timeline.vala" + self->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->track), _tmp0_); +#line 12 "timeline.vala" + self->clip = (_tmp1_ = _g_object_ref0 (clip), _g_object_unref0 (self->clip), _tmp1_); +#line 614 "timeline.c" + return self; +} + + +#line 10 "timeline.vala" +TrackClipPair* track_clip_pair_new (ModelTrack* track, ModelClip* clip) { +#line 10 "timeline.vala" + return track_clip_pair_construct (TYPE_TRACK_CLIP_PAIR, track, clip); +#line 623 "timeline.c" +} + + +static void value_track_clip_pair_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void value_track_clip_pair_free_value (GValue* value) { + if (value->data[0].v_pointer) { + track_clip_pair_unref (value->data[0].v_pointer); + } +} + + +static void value_track_clip_pair_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = track_clip_pair_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer value_track_clip_pair_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* value_track_clip_pair_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + TrackClipPair* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = track_clip_pair_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* value_track_clip_pair_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + TrackClipPair** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = track_clip_pair_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* param_spec_track_clip_pair (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ParamSpecTrackClipPair* spec; + g_return_val_if_fail (g_type_is_a (object_type, TYPE_TRACK_CLIP_PAIR), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer value_get_track_clip_pair (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_TRACK_CLIP_PAIR), NULL); + return value->data[0].v_pointer; +} + + +void value_set_track_clip_pair (GValue* value, gpointer v_object) { + TrackClipPair* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_TRACK_CLIP_PAIR)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_TRACK_CLIP_PAIR)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + track_clip_pair_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + track_clip_pair_unref (old); + } +} + + +void value_take_track_clip_pair (GValue* value, gpointer v_object) { + TrackClipPair* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_TRACK_CLIP_PAIR)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_TRACK_CLIP_PAIR)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + track_clip_pair_unref (old); + } +} + + +static void track_clip_pair_class_init (TrackClipPairClass * klass) { + track_clip_pair_parent_class = g_type_class_peek_parent (klass); + TRACK_CLIP_PAIR_CLASS (klass)->finalize = track_clip_pair_finalize; +} + + +static void track_clip_pair_instance_init (TrackClipPair * self) { + self->ref_count = 1; +} + + +static void track_clip_pair_finalize (TrackClipPair* obj) { + TrackClipPair * self; + self = TRACK_CLIP_PAIR (obj); + _g_object_unref0 (self->track); + _g_object_unref0 (self->clip); +} + + +GType track_clip_pair_get_type (void) { + static volatile gsize track_clip_pair_type_id__volatile = 0; + if (g_once_init_enter (&track_clip_pair_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { value_track_clip_pair_init, value_track_clip_pair_free_value, value_track_clip_pair_copy_value, value_track_clip_pair_peek_pointer, "p", value_track_clip_pair_collect_value, "p", value_track_clip_pair_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (TrackClipPairClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) track_clip_pair_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackClipPair), 0, (GInstanceInitFunc) track_clip_pair_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType track_clip_pair_type_id; + track_clip_pair_type_id = g_type_register_fundamental (g_type_fundamental_next (), "TrackClipPair", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&track_clip_pair_type_id__volatile, track_clip_pair_type_id); + } + return track_clip_pair_type_id__volatile; +} + + +gpointer track_clip_pair_ref (gpointer instance) { + TrackClipPair* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void track_clip_pair_unref (gpointer instance) { + TrackClipPair* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + TRACK_CLIP_PAIR_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +#line 22 "timeline.vala" +void clipboard_select (Clipboard* self, GeeArrayList* selected_clips) { +#line 22 "timeline.vala" + g_return_if_fail (IS_CLIPBOARD (self)); +#line 22 "timeline.vala" + g_return_if_fail (GEE_IS_ARRAY_LIST (selected_clips)); +#line 23 "timeline.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 24 "timeline.vala" + self->priv->minimum_time = (gint64) (-1); +#line 798 "timeline.c" + { + GeeIterator* _clip_view_it; + _clip_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (selected_clips)); +#line 25 "timeline.vala" + while (TRUE) { +#line 804 "timeline.c" + ClipView* clip_view; + GtkContainer* _tmp0_; + TrackView* track_view; + gboolean _tmp1_ = FALSE; + ModelTrack* _tmp2_; + TrackClipPair* _tmp3_; + TrackClipPair* track_clip_pair; +#line 25 "timeline.vala" + if (!gee_iterator_next (_clip_view_it)) { +#line 25 "timeline.vala" + break; +#line 816 "timeline.c" + } +#line 25 "timeline.vala" + clip_view = (ClipView*) gee_iterator_get (_clip_view_it); +#line 26 "timeline.vala" + track_view = _g_object_ref0 ((_tmp0_ = gtk_widget_get_parent (GTK_WIDGET (clip_view)), IS_TRACK_VIEW (_tmp0_) ? ((TrackView*) _tmp0_) : NULL)); +#line 27 "timeline.vala" + if (self->priv->minimum_time < 0) { +#line 27 "timeline.vala" + _tmp1_ = TRUE; +#line 826 "timeline.c" + } else { +#line 27 "timeline.vala" + _tmp1_ = model_clip_get_start (clip_view->clip) < self->priv->minimum_time; +#line 830 "timeline.c" + } +#line 27 "timeline.vala" + if (_tmp1_) { +#line 28 "timeline.vala" + self->priv->minimum_time = model_clip_get_start (clip_view->clip); +#line 836 "timeline.c" + } +#line 30 "timeline.vala" + track_clip_pair = (_tmp3_ = track_clip_pair_new (_tmp2_ = track_view_get_track (track_view), clip_view->clip), _g_object_unref0 (_tmp2_), _tmp3_); +#line 31 "timeline.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->clips), track_clip_pair); +#line 842 "timeline.c" + _g_object_unref0 (clip_view); + _g_object_unref0 (track_view); + _track_clip_pair_unref0 (track_clip_pair); + } + _g_object_unref0 (_clip_view_it); + } +} + + +#line 35 "timeline.vala" +void clipboard_paste (Clipboard* self, ModelTrack* selected_track, gint64 time) { +#line 35 "timeline.vala" + g_return_if_fail (IS_CLIPBOARD (self)); +#line 35 "timeline.vala" + g_return_if_fail (MODEL_IS_TRACK (selected_track)); +#line 36 "timeline.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->clips)) != 1) { +#line 860 "timeline.c" + { + GeeIterator* _pair_it; + _pair_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 37 "timeline.vala" + while (TRUE) { +#line 866 "timeline.c" + TrackClipPair* pair; + ModelClip* _tmp0_; +#line 37 "timeline.vala" + if (!gee_iterator_next (_pair_it)) { +#line 37 "timeline.vala" + break; +#line 873 "timeline.c" + } +#line 37 "timeline.vala" + pair = (TrackClipPair*) gee_iterator_get (_pair_it); +#line 38 "timeline.vala" + model_track_do_clip_paste (pair->track, _tmp0_ = model_clip_copy (pair->clip), (time + model_clip_get_start (pair->clip)) - self->priv->minimum_time); +#line 879 "timeline.c" + _g_object_unref0 (_tmp0_); + _track_clip_pair_unref0 (pair); + } + _g_object_unref0 (_pair_it); + } + } else { + ModelClip* _tmp2_; + TrackClipPair* _tmp1_; +#line 41 "timeline.vala" + model_track_do_clip_paste (selected_track, _tmp2_ = model_clip_copy ((_tmp1_ = (TrackClipPair*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), 0))->clip), time); +#line 890 "timeline.c" + _g_object_unref0 (_tmp2_); + _track_clip_pair_unref0 (_tmp1_); + } +} + + +#line 18 "timeline.vala" +Clipboard* clipboard_construct (GType object_type) { +#line 899 "timeline.c" + Clipboard* self; + self = (Clipboard*) g_type_create_instance (object_type); + return self; +} + + +#line 18 "timeline.vala" +Clipboard* clipboard_new (void) { +#line 18 "timeline.vala" + return clipboard_construct (TYPE_CLIPBOARD); +#line 910 "timeline.c" +} + + +static void value_clipboard_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void value_clipboard_free_value (GValue* value) { + if (value->data[0].v_pointer) { + clipboard_unref (value->data[0].v_pointer); + } +} + + +static void value_clipboard_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = clipboard_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer value_clipboard_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* value_clipboard_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + Clipboard* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = clipboard_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* value_clipboard_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + Clipboard** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = clipboard_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* param_spec_clipboard (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ParamSpecClipboard* spec; + g_return_val_if_fail (g_type_is_a (object_type, TYPE_CLIPBOARD), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer value_get_clipboard (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLIPBOARD), NULL); + return value->data[0].v_pointer; +} + + +void value_set_clipboard (GValue* value, gpointer v_object) { + Clipboard* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLIPBOARD)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_CLIPBOARD)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + clipboard_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + clipboard_unref (old); + } +} + + +void value_take_clipboard (GValue* value, gpointer v_object) { + Clipboard* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLIPBOARD)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_CLIPBOARD)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + clipboard_unref (old); + } +} + + +static void clipboard_class_init (ClipboardClass * klass) { + clipboard_parent_class = g_type_class_peek_parent (klass); + CLIPBOARD_CLASS (klass)->finalize = clipboard_finalize; + g_type_class_add_private (klass, sizeof (ClipboardPrivate)); +} + + +static void clipboard_instance_init (Clipboard * self) { + self->priv = CLIPBOARD_GET_PRIVATE (self); + self->clips = gee_array_list_new (TYPE_TRACK_CLIP_PAIR, (GBoxedCopyFunc) track_clip_pair_ref, track_clip_pair_unref, NULL); + self->priv->minimum_time = (gint64) (-1); + self->ref_count = 1; +} + + +static void clipboard_finalize (Clipboard* obj) { + Clipboard * self; + self = CLIPBOARD (obj); + _g_object_unref0 (self->clips); +} + + +GType clipboard_get_type (void) { + static volatile gsize clipboard_type_id__volatile = 0; + if (g_once_init_enter (&clipboard_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { value_clipboard_init, value_clipboard_free_value, value_clipboard_copy_value, value_clipboard_peek_pointer, "p", value_clipboard_collect_value, "p", value_clipboard_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ClipboardClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) clipboard_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Clipboard), 0, (GInstanceInitFunc) clipboard_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType clipboard_type_id; + clipboard_type_id = g_type_register_fundamental (g_type_fundamental_next (), "Clipboard", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&clipboard_type_id__volatile, clipboard_type_id); + } + return clipboard_type_id__volatile; +} + + +gpointer clipboard_ref (gpointer instance) { + Clipboard* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void clipboard_unref (gpointer instance) { + Clipboard* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + CLIPBOARD_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +#line 124 "timeline.vala" +static void _time_line_on_geometry_changed_model_time_system_geometry_changed (ModelTimeSystem* _sender, gpointer self) { +#line 1080 "timeline.c" + time_line_on_geometry_changed (self); +} + + +#line 368 "timeline.vala" +static void _time_line_on_ruler_position_changed_view_ruler_position_changed (ViewRuler* _sender, gint x, gpointer self) { +#line 1087 "timeline.c" + time_line_on_ruler_position_changed (self, x); +} + + +#line 135 "timeline.vala" +static void _time_line_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self) { +#line 1094 "timeline.c" + time_line_on_track_added (self, track); +} + + +#line 148 "timeline.vala" +static void _time_line_on_track_removed_model_project_track_removed (ModelProject* _sender, ModelTrack* track, gpointer self) { +#line 1101 "timeline.c" + time_line_on_track_removed (self, track); +} + + +#line 130 "timeline.vala" +static void _time_line_on_position_changed_view_media_engine_position_changed (ViewMediaEngine* _sender, gint64 position, gpointer self) { +#line 1108 "timeline.c" + time_line_on_position_changed (self); +} + + +#line 75 "timeline.vala" +TimeLine* time_line_construct (GType object_type, ModelProject* p, ModelTimeSystem* provider, GdkDragAction actions) { +#line 1115 "timeline.c" + TimeLine * self; + GtkWidget* _tmp0_; + ModelProject* _tmp1_; + GtkVBox* _tmp2_; + ViewRuler* _tmp3_; + GdkColor _tmp5_; + GdkColor _tmp4_ = {0}; + GdkColor _tmp7_; + GdkColor _tmp6_ = {0}; +#line 75 "timeline.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (p), NULL); +#line 75 "timeline.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (provider), NULL); +#line 1129 "timeline.c" + self = g_object_newv (object_type, 0, NULL); +#line 76 "timeline.vala" + gtk_widget_add_events (GTK_WIDGET (self), (gint) GDK_POINTER_MOTION_MASK); +#line 77 "timeline.vala" + self->priv->drag_widget = (_tmp0_ = NULL, _g_object_unref0 (self->priv->drag_widget), _tmp0_); +#line 78 "timeline.vala" + g_object_set (GTK_WIDGET (self), "can-focus", TRUE, NULL); +#line 79 "timeline.vala" + self->project = (_tmp1_ = _g_object_ref0 (p), _g_object_unref0 (self->project), _tmp1_); +#line 80 "timeline.vala" + self->provider = provider; +#line 81 "timeline.vala" + g_signal_connect_object (provider, "geometry-changed", (GCallback) _time_line_on_geometry_changed_model_time_system_geometry_changed, self, 0); +#line 83 "timeline.vala" + self->priv->vbox = (_tmp2_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)), _g_object_unref0 (self->priv->vbox), _tmp2_); +#line 84 "timeline.vala" + self->ruler = (_tmp3_ = g_object_ref_sink (view_ruler_new (provider, TIME_LINE_RULER_HEIGHT)), _g_object_unref0 (self->ruler), _tmp3_); +#line 85 "timeline.vala" + g_signal_connect_object (self->ruler, "position-changed", (GCallback) _time_line_on_ruler_position_changed_view_ruler_position_changed, self, 0); +#line 86 "timeline.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (self->ruler), FALSE, FALSE, (guint) 0); +#line 88 "timeline.vala" + g_signal_connect_object (self->project, "track-added", (GCallback) _time_line_on_track_added_model_project_track_added, self, 0); +#line 89 "timeline.vala" + g_signal_connect_object (self->project, "track-removed", (GCallback) _time_line_on_track_removed_model_project_track_removed, self, 0); +#line 90 "timeline.vala" + g_signal_connect_object (self->project->media_engine, "position-changed", (GCallback) _time_line_on_position_changed_view_media_engine_position_changed, self, 0); +#line 91 "timeline.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->vbox)); +#line 93 "timeline.vala" + gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, (_tmp5_ = (parse_color ("#444", &_tmp4_), _tmp4_), &_tmp5_)); +#line 94 "timeline.vala" + gtk_widget_modify_fg (GTK_WIDGET (self), GTK_STATE_NORMAL, (_tmp7_ = (parse_color ("#f00", &_tmp6_), _tmp6_), &_tmp7_)); +#line 96 "timeline.vala" + self->priv->pixel_div = self->priv->pixel_max / self->priv->pixel_min; +#line 97 "timeline.vala" + model_time_system_calculate_pixel_step (provider, 0.5f, self->priv->pixel_min, self->priv->pixel_div); +#line 98 "timeline.vala" + gtk_drag_dest_set (GTK_WIDGET (self), GTK_DEST_DEFAULT_ALL, drag_target_entries, G_N_ELEMENTS (drag_target_entries), actions); +#line 1169 "timeline.c" + return self; +} + + +#line 75 "timeline.vala" +TimeLine* time_line_new (ModelProject* p, ModelTimeSystem* provider, GdkDragAction actions) { +#line 75 "timeline.vala" + return time_line_construct (TYPE_TIME_LINE, p, provider, actions); +#line 1178 "timeline.c" +} + + +#line 101 "timeline.vala" +void time_line_zoom_to_project (TimeLine* self, double width) { +#line 1184 "timeline.c" + double numerator; + double denominator; +#line 101 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 102 "timeline.vala" + if (model_project_get_length (self->project) == 0) { +#line 103 "timeline.vala" + return; +#line 1193 "timeline.c" + } +#line 106 "timeline.vala" + width = width - 12.0; +#line 108 "timeline.vala" + numerator = log ((width * GST_SECOND) / (((double) model_project_get_length (self->project)) * ((double) self->priv->pixel_min))); +#line 110 "timeline.vala" + denominator = log ((double) self->priv->pixel_div); +#line 112 "timeline.vala" + time_line_zoom (self, ((float) (numerator / denominator)) - model_time_system_get_pixel_percentage (self->provider)); +#line 1203 "timeline.c" +} + + +#line 115 "timeline.vala" +void time_line_zoom (TimeLine* self, float inc) { +#line 115 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 116 "timeline.vala" + model_time_system_calculate_pixel_step (self->provider, inc, self->priv->pixel_min, self->priv->pixel_div); +#line 1213 "timeline.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 117 "timeline.vala" + while (TRUE) { +#line 1219 "timeline.c" + TrackView* track; +#line 117 "timeline.vala" + if (!gee_iterator_next (_track_it)) { +#line 117 "timeline.vala" + break; +#line 1225 "timeline.c" + } +#line 117 "timeline.vala" + track = (TrackView*) gee_iterator_get (_track_it); +#line 118 "timeline.vala" + track_view_resize (track); +#line 1231 "timeline.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +#line 120 "timeline.vala" + g_signal_emit_by_name (self->project->media_engine, "position-changed", model_project_transport_get_position (self->project)); +#line 121 "timeline.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 1240 "timeline.c" +} + + +#line 124 "timeline.vala" +static void time_line_on_geometry_changed (TimeLine* self) { +#line 124 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 125 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_geometry_changed"); +#line 126 "timeline.vala" + model_time_system_calculate_pixel_step (self->provider, (float) 0, self->priv->pixel_min, self->priv->pixel_div); +#line 127 "timeline.vala" + gtk_widget_queue_draw (GTK_WIDGET (self->ruler)); +#line 1254 "timeline.c" +} + + +#line 130 "timeline.vala" +static void time_line_on_position_changed (TimeLine* self) { +#line 130 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 131 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_position_changed"); +#line 132 "timeline.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 1266 "timeline.c" +} + + +#line 160 "timeline.vala" +static void _time_line_on_clip_view_added_track_view_clip_view_added (TrackView* _sender, ClipView* clip_view, gpointer self) { +#line 1272 "timeline.c" + time_line_on_clip_view_added (self, clip_view); +} + + +#line 135 "timeline.vala" +static void time_line_on_track_added (TimeLine* self, ModelTrack* track) { +#line 1279 "timeline.c" + ClassFactory* _tmp0_; + TrackView* _tmp1_; + TrackView* track_view; +#line 135 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 135 "timeline.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 136 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_added"); +#line 137 "timeline.vala" + track_view = (_tmp1_ = class_factory_get_track_view (_tmp0_ = class_factory_get_class_factory (), track, self), _class_factory_unref0 (_tmp0_), _tmp1_); +#line 138 "timeline.vala" + g_signal_connect_object (track_view, "clip-view-added", (GCallback) _time_line_on_clip_view_added_track_view_clip_view_added, self, 0); +#line 139 "timeline.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->tracks), track_view); +#line 140 "timeline.vala" + gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (track_view), FALSE, FALSE, (guint) 0); +#line 141 "timeline.vala" + g_signal_emit_by_name (self, "trackview-added", track_view); +#line 142 "timeline.vala" + if (model_track_media_type (track) == MODEL_MEDIA_TYPE_VIDEO) { +#line 143 "timeline.vala" + gtk_box_reorder_child (GTK_BOX (self->priv->vbox), GTK_WIDGET (track_view), 1); +#line 1303 "timeline.c" + } +#line 145 "timeline.vala" + gtk_widget_show_all (GTK_WIDGET (self->priv->vbox)); +#line 1307 "timeline.c" + _g_object_unref0 (track_view); +} + + +#line 148 "timeline.vala" +static void time_line_on_track_removed (TimeLine* self, ModelTrack* track) { +#line 148 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 148 "timeline.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 149 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_removed"); +#line 1320 "timeline.c" + { + GeeIterator* _track_view_it; + _track_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 150 "timeline.vala" + while (TRUE) { +#line 1326 "timeline.c" + TrackView* track_view; + ModelTrack* _tmp0_; + gboolean _tmp1_; +#line 150 "timeline.vala" + if (!gee_iterator_next (_track_view_it)) { +#line 150 "timeline.vala" + break; +#line 1334 "timeline.c" + } +#line 150 "timeline.vala" + track_view = (TrackView*) gee_iterator_get (_track_view_it); +#line 151 "timeline.vala" + if ((_tmp1_ = (_tmp0_ = track_view_get_track (track_view)) == track, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 152 "timeline.vala" + g_signal_emit_by_name (self, "trackview-removed", track_view); +#line 153 "timeline.vala" + gtk_container_remove (GTK_CONTAINER (self->priv->vbox), GTK_WIDGET (track_view)); +#line 154 "timeline.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->tracks), track_view); +#line 1346 "timeline.c" + _g_object_unref0 (track_view); +#line 155 "timeline.vala" + break; +#line 1350 "timeline.c" + } + _g_object_unref0 (track_view); + } + _g_object_unref0 (_track_view_it); + } +} + + +#line 234 "timeline.vala" +static void _time_line_on_clip_view_selection_request_clip_view_selection_request (ClipView* _sender, ClipView* clip_view, gboolean extend_selection, gpointer self) { +#line 1361 "timeline.c" + time_line_on_clip_view_selection_request (self, clip_view, extend_selection); +} + + +#line 327 "timeline.vala" +static void _time_line_on_clip_view_move_request_clip_view_move_request (ClipView* _sender, ClipView* clip_view, gint64 delta, gpointer self) { +#line 1368 "timeline.c" + time_line_on_clip_view_move_request (self, clip_view, delta); +} + + +#line 267 "timeline.vala" +static void _time_line_on_clip_view_move_commit_clip_view_move_commit (ClipView* _sender, ClipView* clip_view, gint64 delta, gpointer self) { +#line 1375 "timeline.c" + time_line_on_clip_view_move_commit (self, clip_view, delta); +} + + +#line 177 "timeline.vala" +static void _time_line_on_clip_view_move_begin_clip_view_move_begin (ClipView* _sender, ClipView* clip_view, gboolean copy, gpointer self) { +#line 1382 "timeline.c" + time_line_on_clip_view_move_begin (self, clip_view, copy); +} + + +#line 219 "timeline.vala" +static void _time_line_on_clip_view_trim_begin_clip_view_trim_begin (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self) { +#line 1389 "timeline.c" + time_line_on_clip_view_trim_begin (self, clip_view, edge); +} + + +#line 288 "timeline.vala" +static void _time_line_on_clip_view_trim_commit_clip_view_trim_commit (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self) { +#line 1396 "timeline.c" + time_line_on_clip_view_trim_commit (self, clip_view, edge); +} + + +#line 160 "timeline.vala" +void time_line_on_clip_view_added (TimeLine* self, ClipView* clip_view) { +#line 160 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 160 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 161 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_clip_view_added"); +#line 162 "timeline.vala" + g_signal_connect_object (clip_view, "selection-request", (GCallback) _time_line_on_clip_view_selection_request_clip_view_selection_request, self, 0); +#line 163 "timeline.vala" + g_signal_connect_object (clip_view, "move-request", (GCallback) _time_line_on_clip_view_move_request_clip_view_move_request, self, 0); +#line 164 "timeline.vala" + g_signal_connect_object (clip_view, "move-commit", (GCallback) _time_line_on_clip_view_move_commit_clip_view_move_commit, self, 0); +#line 165 "timeline.vala" + g_signal_connect_object (clip_view, "move-begin", (GCallback) _time_line_on_clip_view_move_begin_clip_view_move_begin, self, 0); +#line 166 "timeline.vala" + g_signal_connect_object (clip_view, "trim-begin", (GCallback) _time_line_on_clip_view_trim_begin_clip_view_trim_begin, self, 0); +#line 167 "timeline.vala" + g_signal_connect_object (clip_view, "trim-commit", (GCallback) _time_line_on_clip_view_trim_commit_clip_view_trim_commit, self, 0); +#line 1421 "timeline.c" +} + + +#line 170 "timeline.vala" +void time_line_deselect_all_clips (TimeLine* self) { +#line 170 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 1429 "timeline.c" + { + GeeIterator* _selected_clip_view_it; + _selected_clip_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 171 "timeline.vala" + while (TRUE) { +#line 1435 "timeline.c" + ClipView* selected_clip_view; +#line 171 "timeline.vala" + if (!gee_iterator_next (_selected_clip_view_it)) { +#line 171 "timeline.vala" + break; +#line 1441 "timeline.c" + } +#line 171 "timeline.vala" + selected_clip_view = (ClipView*) gee_iterator_get (_selected_clip_view_it); +#line 172 "timeline.vala" + selected_clip_view->is_selected = FALSE; +#line 1447 "timeline.c" + _g_object_unref0 (selected_clip_view); + } + _g_object_unref0 (_selected_clip_view_it); + } +#line 174 "timeline.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 1454 "timeline.c" +} + + +#line 177 "timeline.vala" +static void time_line_on_clip_view_move_begin (TimeLine* self, ClipView* clip_view, gboolean copy) { +#line 1460 "timeline.c" + ClipView* max_clip; + GtkLabel* _tmp5_; + GtkWidget* _tmp6_; + GtkFixed* the_parent; +#line 177 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 177 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 178 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_view_move_begin"); +#line 179 "timeline.vala" + self->priv->copying = copy; +#line 180 "timeline.vala" + if (copy) { +#line 181 "timeline.vala" + model_undo_manager_start_transaction (self->project->undo_manager, "Copy Clip"); +#line 1477 "timeline.c" + } +#line 183 "timeline.vala" + max_clip = NULL; +#line 1481 "timeline.c" + { + GeeIterator* _selected_clip_it; + _selected_clip_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 185 "timeline.vala" + while (TRUE) { +#line 1487 "timeline.c" + ClipView* selected_clip; + GtkWidget* _tmp2_; + TrackView* track_view; +#line 185 "timeline.vala" + if (!gee_iterator_next (_selected_clip_it)) { +#line 185 "timeline.vala" + break; +#line 1495 "timeline.c" + } +#line 185 "timeline.vala" + selected_clip = (ClipView*) gee_iterator_get (_selected_clip_it); +#line 186 "timeline.vala" + if (max_clip == NULL) { +#line 1501 "timeline.c" + ClipView* _tmp0_; +#line 187 "timeline.vala" + max_clip = (_tmp0_ = _g_object_ref0 (selected_clip), _g_object_unref0 (max_clip), _tmp0_); +#line 1505 "timeline.c" + } else { +#line 188 "timeline.vala" + if (model_clip_get_end (max_clip->clip) < model_clip_get_end (selected_clip->clip)) { +#line 1509 "timeline.c" + ClipView* _tmp1_; +#line 189 "timeline.vala" + max_clip = (_tmp1_ = _g_object_ref0 (selected_clip), _g_object_unref0 (max_clip), _tmp1_); +#line 1513 "timeline.c" + } + } +#line 191 "timeline.vala" + selected_clip->initial_time = model_clip_get_start (selected_clip->clip); +#line 192 "timeline.vala" + model_clip_gnonlin_disconnect (selected_clip->clip); +#line 193 "timeline.vala" + track_view = _g_object_ref0 ((_tmp2_ = gtk_widget_get_parent (GTK_WIDGET (selected_clip)), IS_TRACK_VIEW (_tmp2_) ? ((TrackView*) _tmp2_) : NULL)); +#line 194 "timeline.vala" + if (track_view != NULL) { +#line 1524 "timeline.c" + ModelTrack* _tmp3_; +#line 195 "timeline.vala" + model_track_remove_clip_from_array (_tmp3_ = track_view_get_track (track_view), selected_clip->clip); +#line 1528 "timeline.c" + _g_object_unref0 (_tmp3_); + } +#line 197 "timeline.vala" + if (copy) { +#line 1533 "timeline.c" + ModelClip* clip; + ModelTrack* _tmp4_; +#line 201 "timeline.vala" + clip = model_clip_copy (selected_clip->clip); +#line 202 "timeline.vala" + model_track_append_at_time (_tmp4_ = track_view_get_track (track_view), clip, model_clip_get_start (selected_clip->clip), FALSE); +#line 1540 "timeline.c" + _g_object_unref0 (_tmp4_); + _g_object_unref0 (clip); + } + _g_object_unref0 (selected_clip); + _g_object_unref0 (track_view); + } + _g_object_unref0 (_selected_clip_it); + } +#line 206 "timeline.vala" + self->priv->high_water = (_tmp5_ = g_object_ref_sink ((GtkLabel*) gtk_label_new (NULL)), _g_object_unref0 (self->priv->high_water), _tmp5_); +#line 207 "timeline.vala" + the_parent = _g_object_ref0 ((_tmp6_ = gtk_widget_get_parent (GTK_WIDGET (clip_view)), GTK_IS_FIXED (_tmp6_) ? ((GtkFixed*) _tmp6_) : NULL)); +#line 208 "timeline.vala" + gtk_fixed_put (the_parent, GTK_WIDGET (self->priv->high_water), GTK_WIDGET (max_clip)->allocation.x + GTK_WIDGET (max_clip)->allocation.width, GTK_WIDGET (max_clip)->allocation.y); +#line 1555 "timeline.c" + { + GeeIterator* _selected_clip_it; + _selected_clip_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 213 "timeline.vala" + while (TRUE) { +#line 1561 "timeline.c" + ClipView* selected_clip; + GtkWidget* _tmp7_; + TrackView* track_view; +#line 213 "timeline.vala" + if (!gee_iterator_next (_selected_clip_it)) { +#line 213 "timeline.vala" + break; +#line 1569 "timeline.c" + } +#line 213 "timeline.vala" + selected_clip = (ClipView*) gee_iterator_get (_selected_clip_it); +#line 214 "timeline.vala" + track_view = _g_object_ref0 ((_tmp7_ = gtk_widget_get_parent (GTK_WIDGET (selected_clip)), IS_TRACK_VIEW (_tmp7_) ? ((TrackView*) _tmp7_) : NULL)); +#line 215 "timeline.vala" + track_view_move_to_top (track_view, selected_clip); +#line 1577 "timeline.c" + _g_object_unref0 (selected_clip); + _g_object_unref0 (track_view); + } + _g_object_unref0 (_selected_clip_it); + } + _g_object_unref0 (max_clip); + _g_object_unref0 (the_parent); +} + + +#line 219 "timeline.vala" +static void time_line_on_clip_view_trim_begin (TimeLine* self, ClipView* clip, GdkWindowEdge edge) { +#line 219 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 219 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip)); +#line 220 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_view_trim_begin"); +#line 221 "timeline.vala" + switch (edge) { +#line 1598 "timeline.c" + case GDK_WINDOW_EDGE_WEST: + { +#line 223 "timeline.vala" + clip->initial_time = model_clip_get_start (clip->clip); +#line 224 "timeline.vala" + break; +#line 1605 "timeline.c" + } + case GDK_WINDOW_EDGE_EAST: + { +#line 226 "timeline.vala" + clip->initial_time = model_clip_get_duration (clip->clip); +#line 227 "timeline.vala" + break; +#line 1613 "timeline.c" + } + default: + { +#line 229 "timeline.vala" + g_assert (FALSE); +#line 230 "timeline.vala" + break; +#line 1621 "timeline.c" + } + } +} + + +#line 234 "timeline.vala" +static void time_line_on_clip_view_selection_request (TimeLine* self, ClipView* clip_view, gboolean extend) { +#line 1629 "timeline.c" + gboolean in_selected_clips; +#line 234 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 234 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 235 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_view_selection_request"); +#line 241 "timeline.vala" + in_selected_clips = gee_abstract_collection_contains (GEE_ABSTRACT_COLLECTION (self->selected_clips), clip_view); +#line 242 "timeline.vala" + if (!extend) { +#line 243 "timeline.vala" + if (!in_selected_clips) { +#line 244 "timeline.vala" + time_line_deselect_all_clips (self); +#line 245 "timeline.vala" + clip_view->is_selected = TRUE; +#line 246 "timeline.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->selected_clips), clip_view); +#line 1649 "timeline.c" + } + } else { +#line 249 "timeline.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->selected_clips)) > 1) { +#line 1654 "timeline.c" + gboolean _tmp0_ = FALSE; +#line 250 "timeline.vala" + if (in_selected_clips) { +#line 250 "timeline.vala" + _tmp0_ = clip_view->is_selected; +#line 1660 "timeline.c" + } else { +#line 250 "timeline.vala" + _tmp0_ = FALSE; +#line 1664 "timeline.c" + } +#line 250 "timeline.vala" + if (_tmp0_) { +#line 1668 "timeline.c" + GtkWidget* _tmp1_; +#line 251 "timeline.vala" + clip_view->is_selected = FALSE; +#line 253 "timeline.vala" + self->priv->drag_widget = (_tmp1_ = NULL, _g_object_unref0 (self->priv->drag_widget), _tmp1_); +#line 254 "timeline.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->selected_clips), clip_view); +#line 1676 "timeline.c" + } + } +#line 257 "timeline.vala" + if (!in_selected_clips) { +#line 258 "timeline.vala" + clip_view->is_selected = TRUE; +#line 259 "timeline.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->selected_clips), clip_view); +#line 1685 "timeline.c" + } + } +#line 262 "timeline.vala" + g_signal_emit_by_name (self, "track-changed"); +#line 263 "timeline.vala" + g_signal_emit_by_name (self, "selection-changed", time_line_is_clip_selected (self)); +#line 264 "timeline.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 1694 "timeline.c" +} + + +#line 267 "timeline.vala" +static void time_line_on_clip_view_move_commit (TimeLine* self, ClipView* clip_view, gint64 delta) { +#line 1700 "timeline.c" + GtkWidget* _tmp0_; + GtkFixed* fixed; + GtkLabel* _tmp1_; +#line 267 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 267 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 268 "timeline.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL); +#line 269 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_view_move_request"); +#line 270 "timeline.vala" + fixed = _g_object_ref0 ((_tmp0_ = gtk_widget_get_parent (GTK_WIDGET (self->priv->high_water)), GTK_IS_FIXED (_tmp0_) ? ((GtkFixed*) _tmp0_) : NULL)); +#line 271 "timeline.vala" + gtk_container_remove (GTK_CONTAINER (fixed), GTK_WIDGET (self->priv->high_water)); +#line 272 "timeline.vala" + self->priv->high_water = (_tmp1_ = NULL, _g_object_unref0 (self->priv->high_water), _tmp1_); +#line 274 "timeline.vala" + model_undo_manager_start_transaction (self->project->undo_manager, "Move Clip"); +#line 1720 "timeline.c" + { + GeeIterator* _selected_clip_view_it; + _selected_clip_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 275 "timeline.vala" + while (TRUE) { +#line 1726 "timeline.c" + ClipView* selected_clip_view; + GtkWidget* _tmp2_; + TrackView* track_view; + ModelTrack* _tmp3_; +#line 275 "timeline.vala" + if (!gee_iterator_next (_selected_clip_view_it)) { +#line 275 "timeline.vala" + break; +#line 1735 "timeline.c" + } +#line 275 "timeline.vala" + selected_clip_view = (ClipView*) gee_iterator_get (_selected_clip_view_it); +#line 276 "timeline.vala" + track_view = _g_object_ref0 ((_tmp2_ = gtk_widget_get_parent (GTK_WIDGET (selected_clip_view)), IS_TRACK_VIEW (_tmp2_) ? ((TrackView*) _tmp2_) : NULL)); +#line 277 "timeline.vala" + model_clip_gnonlin_connect (selected_clip_view->clip); +#line 278 "timeline.vala" + model_track_move (_tmp3_ = track_view_get_track (track_view), selected_clip_view->clip, model_clip_get_start (selected_clip_view->clip), selected_clip_view->initial_time); +#line 1745 "timeline.c" + _g_object_unref0 (_tmp3_); + _g_object_unref0 (selected_clip_view); + _g_object_unref0 (track_view); + } + _g_object_unref0 (_selected_clip_view_it); + } +#line 281 "timeline.vala" + model_undo_manager_end_transaction (self->project->undo_manager, "Move Clip"); +#line 282 "timeline.vala" + if (self->priv->copying) { +#line 283 "timeline.vala" + self->priv->copying = FALSE; +#line 284 "timeline.vala" + model_undo_manager_end_transaction (self->project->undo_manager, "Copy Clip"); +#line 1760 "timeline.c" + } + _g_object_unref0 (fixed); +} + + +#line 288 "timeline.vala" +static void time_line_on_clip_view_trim_commit (TimeLine* self, ClipView* clip_view, GdkWindowEdge edge) { +#line 1768 "timeline.c" + GtkWidget* _tmp0_; + TrackView* track_view; + gint64 delta; + ModelTrack* _tmp1_; +#line 288 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 288 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 289 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_view_move_commit"); +#line 290 "timeline.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL); +#line 291 "timeline.vala" + track_view = _g_object_ref0 ((_tmp0_ = gtk_widget_get_parent (GTK_WIDGET (clip_view)), IS_TRACK_VIEW (_tmp0_) ? ((TrackView*) _tmp0_) : NULL)); +#line 292 "timeline.vala" + delta = (gint64) 0; +#line 293 "timeline.vala" + switch (edge) { +#line 1787 "timeline.c" + case GDK_WINDOW_EDGE_WEST: + { +#line 295 "timeline.vala" + delta = model_clip_get_start (clip_view->clip) - clip_view->initial_time; +#line 296 "timeline.vala" + break; +#line 1794 "timeline.c" + } + case GDK_WINDOW_EDGE_EAST: + { +#line 298 "timeline.vala" + delta = model_clip_get_duration (clip_view->clip) - clip_view->initial_time; +#line 299 "timeline.vala" + break; +#line 1802 "timeline.c" + } + default: + { +#line 301 "timeline.vala" + g_assert (FALSE); +#line 302 "timeline.vala" + break; +#line 1810 "timeline.c" + } + } +#line 305 "timeline.vala" + model_undo_manager_start_transaction (self->project->undo_manager, "Trim Clip"); +#line 306 "timeline.vala" + model_clip_trim (clip_view->clip, -delta, edge); +#line 307 "timeline.vala" + model_clip_gnonlin_connect (clip_view->clip); +#line 308 "timeline.vala" + model_track_trim (_tmp1_ = track_view_get_track (track_view), clip_view->clip, delta, edge); +#line 1821 "timeline.c" + _g_object_unref0 (_tmp1_); +#line 309 "timeline.vala" + model_undo_manager_end_transaction (self->project->undo_manager, "Trim Clip"); +#line 1825 "timeline.c" + _g_object_unref0 (track_view); +} + + +#line 312 "timeline.vala" +static void time_line_constrain_move (TimeLine* self, ClipView* clip_view, gint64* delta) { +#line 1832 "timeline.c" + gint min_delta; + gint delta_xsize; + TrackView* _tmp0_; + TrackView* track_view; + ModelTrack* track; +#line 312 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 312 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 313 "timeline.vala" + min_delta = CLIP_VIEW_SNAP_DELTA; +#line 314 "timeline.vala" + delta_xsize = model_time_system_time_to_xsize (self->provider, *delta); +#line 315 "timeline.vala" + track_view = _g_object_ref0 ((_tmp0_ = TRACK_VIEW (gtk_widget_get_parent (GTK_WIDGET (clip_view))), IS_TRACK_VIEW (_tmp0_) ? ((TrackView*) _tmp0_) : NULL)); +#line 316 "timeline.vala" + track = track_view_get_track (track_view); +#line 317 "timeline.vala" + if (abs (delta_xsize) < min_delta) { +#line 1852 "timeline.c" + gint64 range; + gint64 adjustment = 0LL; +#line 318 "timeline.vala" + range = model_time_system_xsize_to_time (self->provider, min_delta); +#line 320 "timeline.vala" + if (model_track_clip_is_near (track, clip_view->clip, range, &adjustment)) { +#line 321 "timeline.vala" + *delta = adjustment; +#line 322 "timeline.vala" + clip_view_snap (clip_view, (gint64) model_time_system_time_to_xsize (self->provider, adjustment)); +#line 1863 "timeline.c" + } + } + _g_object_unref0 (track_view); + _g_object_unref0 (track); +} + + +#line 327 "timeline.vala" +static void time_line_on_clip_view_move_request (TimeLine* self, ClipView* clip_view, gint64 delta) { +#line 327 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 327 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 328 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_view_move_request"); +#line 329 "timeline.vala" + if (self->project->snap_to_clip) { +#line 330 "timeline.vala" + time_line_constrain_move (self, clip_view, &delta); +#line 1883 "timeline.c" + } +#line 332 "timeline.vala" + if (time_line_move_allowed (self, &delta)) { +#line 333 "timeline.vala" + time_line_move_the_clips (self, delta); +#line 1889 "timeline.c" + } +} + + +#line 337 "timeline.vala" +static gboolean time_line_move_allowed (TimeLine* self, gint64* move_distance) { +#line 1896 "timeline.c" + gboolean result = FALSE; + ClipView* max_clip; +#line 337 "timeline.vala" + g_return_val_if_fail (IS_TIME_LINE (self), FALSE); +#line 338 "timeline.vala" + if (self->priv->drag_widget == NULL) { +#line 1903 "timeline.c" + result = FALSE; +#line 339 "timeline.vala" + return result; +#line 1907 "timeline.c" + } +#line 342 "timeline.vala" + max_clip = NULL; +#line 1911 "timeline.c" + { + GeeIterator* _clip_view_it; + _clip_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 344 "timeline.vala" + while (TRUE) { +#line 1917 "timeline.c" + ClipView* clip_view; + gint position; +#line 344 "timeline.vala" + if (!gee_iterator_next (_clip_view_it)) { +#line 344 "timeline.vala" + break; +#line 1924 "timeline.c" + } +#line 344 "timeline.vala" + clip_view = (ClipView*) gee_iterator_get (_clip_view_it); +#line 345 "timeline.vala" + if (max_clip == NULL) { +#line 1930 "timeline.c" + ClipView* _tmp0_; +#line 346 "timeline.vala" + max_clip = (_tmp0_ = _g_object_ref0 (clip_view), _g_object_unref0 (max_clip), _tmp0_); +#line 1934 "timeline.c" + } else { +#line 347 "timeline.vala" + if (model_clip_get_end (clip_view->clip) > model_clip_get_end (max_clip->clip)) { +#line 1938 "timeline.c" + ClipView* _tmp1_; +#line 348 "timeline.vala" + max_clip = (_tmp1_ = _g_object_ref0 (clip_view), _g_object_unref0 (max_clip), _tmp1_); +#line 1942 "timeline.c" + } + } +#line 350 "timeline.vala" + position = model_time_system_time_to_xpos (self->provider, model_clip_get_start (clip_view->clip) + (*move_distance)); +#line 351 "timeline.vala" + if (position < TIME_LINE_BORDER) { +#line 1949 "timeline.c" + result = FALSE; + _g_object_unref0 (clip_view); + _g_object_unref0 (_clip_view_it); + _g_object_unref0 (max_clip); +#line 352 "timeline.vala" + return result; +#line 1956 "timeline.c" + } + _g_object_unref0 (clip_view); + } + _g_object_unref0 (_clip_view_it); + } + result = TRUE; + _g_object_unref0 (max_clip); +#line 355 "timeline.vala" + return result; +#line 1966 "timeline.c" +} + + +#line 358 "timeline.vala" +static void time_line_move_the_clips (TimeLine* self, gint64 move_distance) { +#line 358 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 1974 "timeline.c" + { + GeeIterator* _clip_view_it; + _clip_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 359 "timeline.vala" + while (TRUE) { +#line 1980 "timeline.c" + ClipView* clip_view; +#line 359 "timeline.vala" + if (!gee_iterator_next (_clip_view_it)) { +#line 359 "timeline.vala" + break; +#line 1986 "timeline.c" + } +#line 359 "timeline.vala" + clip_view = (ClipView*) gee_iterator_get (_clip_view_it); +#line 360 "timeline.vala" + time_line_do_clip_move (self, clip_view, move_distance); +#line 1992 "timeline.c" + _g_object_unref0 (clip_view); + } + _g_object_unref0 (_clip_view_it); + } +} + + +#line 364 "timeline.vala" +void time_line_do_clip_move (TimeLine* self, ClipView* clip_view, gint64 delta) { +#line 364 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 364 "timeline.vala" + g_return_if_fail (IS_CLIP_VIEW (clip_view)); +#line 365 "timeline.vala" + model_clip_set_start (clip_view->clip, model_clip_get_start (clip_view->clip) + delta); +#line 2008 "timeline.c" +} + + +#line 368 "timeline.vala" +void time_line_on_ruler_position_changed (TimeLine* self, gint x) { +#line 368 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 369 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_ruler_position_changed"); +#line 370 "timeline.vala" + if (!model_project_transport_is_recording (self->project)) { +#line 371 "timeline.vala" + time_line_update_pos (self, x); +#line 2022 "timeline.c" + } +} + + +#line 375 "timeline.vala" +gboolean time_line_is_clip_selected (TimeLine* self) { +#line 2029 "timeline.c" + gboolean result = FALSE; +#line 375 "timeline.vala" + g_return_val_if_fail (IS_TIME_LINE (self), FALSE); +#line 2033 "timeline.c" + result = gee_collection_get_size (GEE_COLLECTION (self->selected_clips)) > 0; +#line 376 "timeline.vala" + return result; +#line 2037 "timeline.c" +} + + +#line 379 "timeline.vala" +gboolean time_line_gap_selected (TimeLine* self) { +#line 2043 "timeline.c" + gboolean result = FALSE; +#line 379 "timeline.vala" + g_return_val_if_fail (IS_TIME_LINE (self), FALSE); +#line 2047 "timeline.c" + result = FALSE; +#line 380 "timeline.vala" + return result; +#line 2051 "timeline.c" +} + + +#line 384 "timeline.vala" +void time_line_delete_selection (TimeLine* self) { +#line 2057 "timeline.c" + GtkWidget* _tmp0_; +#line 384 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 385 "timeline.vala" + model_undo_manager_start_transaction (self->project->undo_manager, "Delete Clips From Timeline"); +#line 386 "timeline.vala" + self->priv->drag_widget = (_tmp0_ = NULL, _g_object_unref0 (self->priv->drag_widget), _tmp0_); +#line 387 "timeline.vala" + if (time_line_is_clip_selected (self)) { +#line 388 "timeline.vala" + while (TRUE) { +#line 2069 "timeline.c" + ClipView* _tmp1_; + ClipView* _tmp2_; +#line 388 "timeline.vala" + if (!(gee_collection_get_size (GEE_COLLECTION (self->selected_clips)) > 0)) { +#line 388 "timeline.vala" + break; +#line 2076 "timeline.c" + } +#line 389 "timeline.vala" + clip_view_delete_clip (_tmp1_ = (ClipView*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->selected_clips), 0)); +#line 2080 "timeline.c" + _g_object_unref0 (_tmp1_); +#line 390 "timeline.vala" + _tmp2_ = (ClipView*) gee_abstract_list_remove_at (GEE_ABSTRACT_LIST (self->selected_clips), 0); +#line 2084 "timeline.c" + _g_object_unref0 (_tmp2_); + } +#line 392 "timeline.vala" + g_signal_emit_by_name (self, "track-changed"); +#line 2089 "timeline.c" + } else { + } +#line 409 "timeline.vala" + model_undo_manager_end_transaction (self->project->undo_manager, "Delete Clips From Timeline"); +#line 2094 "timeline.c" +} + + +#line 412 "timeline.vala" +void time_line_do_cut (TimeLine* self) { +#line 412 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 413 "timeline.vala" + clipboard_select (self->clipboard, self->selected_clips); +#line 414 "timeline.vala" + time_line_delete_selection (self); +#line 2106 "timeline.c" +} + + +#line 417 "timeline.vala" +void time_line_do_copy (TimeLine* self) { +#line 417 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 418 "timeline.vala" + clipboard_select (self->clipboard, self->selected_clips); +#line 419 "timeline.vala" + g_signal_emit_by_name (self, "selection-changed", TRUE); +#line 2118 "timeline.c" +} + + +#line 422 "timeline.vala" +void time_line_paste (TimeLine* self) { +#line 422 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 423 "timeline.vala" + time_line_do_paste (self, model_project_transport_get_position (self->project)); +#line 2128 "timeline.c" +} + + +#line 426 "timeline.vala" +void time_line_do_paste (TimeLine* self, gint64 pos) { +#line 2134 "timeline.c" + TrackView* view; + ModelTrack* _tmp9_; +#line 426 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 427 "timeline.vala" + view = NULL; +#line 2141 "timeline.c" + { + GeeIterator* _track_view_it; + _track_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 428 "timeline.vala" + while (TRUE) { +#line 2147 "timeline.c" + TrackView* track_view; + ModelTrack* _tmp0_; + gboolean _tmp1_; +#line 428 "timeline.vala" + if (!gee_iterator_next (_track_view_it)) { +#line 428 "timeline.vala" + break; +#line 2155 "timeline.c" + } +#line 428 "timeline.vala" + track_view = (TrackView*) gee_iterator_get (_track_view_it); +#line 429 "timeline.vala" + if ((_tmp1_ = model_track_get_is_selected (_tmp0_ = track_view_get_track (track_view)), _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 2161 "timeline.c" + TrackView* _tmp2_; +#line 430 "timeline.vala" + view = (_tmp2_ = _g_object_ref0 (track_view), _g_object_unref0 (view), _tmp2_); +#line 2165 "timeline.c" + } + _g_object_unref0 (track_view); + } + _g_object_unref0 (_track_view_it); + } +#line 435 "timeline.vala" + if (view == NULL) { +#line 2173 "timeline.c" + TrackView* _tmp3_; + TrackClipPair* _tmp4_; + gboolean _tmp5_; + TrackView* _tmp8_; + _tmp3_ = NULL; +#line 436 "timeline.vala" + if ((_tmp5_ = (_tmp4_ = (TrackClipPair*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clipboard->clips), 0))->clip->type == MODEL_MEDIA_TYPE_VIDEO, _track_clip_pair_unref0 (_tmp4_), _tmp5_)) { +#line 2181 "timeline.c" + TrackView* _tmp6_; +#line 437 "timeline.vala" + _tmp3_ = (_tmp6_ = time_line_find_video_track_view (self), _g_object_unref0 (_tmp3_), _tmp6_); +#line 2185 "timeline.c" + } else { + TrackView* _tmp7_; +#line 437 "timeline.vala" + _tmp3_ = (_tmp7_ = time_line_find_audio_track_view (self), _g_object_unref0 (_tmp3_), _tmp7_); +#line 2190 "timeline.c" + } +#line 436 "timeline.vala" + view = (_tmp8_ = _g_object_ref0 (_tmp3_), _g_object_unref0 (view), _tmp8_); +#line 2194 "timeline.c" + _g_object_unref0 (_tmp3_); + } +#line 439 "timeline.vala" + model_undo_manager_start_transaction (self->project->undo_manager, "Paste"); +#line 440 "timeline.vala" + clipboard_paste (self->clipboard, _tmp9_ = track_view_get_track (view), pos); +#line 2201 "timeline.c" + _g_object_unref0 (_tmp9_); +#line 441 "timeline.vala" + model_undo_manager_end_transaction (self->project->undo_manager, "Paste"); +#line 442 "timeline.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 2207 "timeline.c" + _g_object_unref0 (view); +} + + +#line 445 "timeline.vala" +void time_line_select_all (TimeLine* self) { +#line 445 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 2216 "timeline.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 446 "timeline.vala" + while (TRUE) { +#line 2222 "timeline.c" + TrackView* track; +#line 446 "timeline.vala" + if (!gee_iterator_next (_track_it)) { +#line 446 "timeline.vala" + break; +#line 2228 "timeline.c" + } +#line 446 "timeline.vala" + track = (TrackView*) gee_iterator_get (_track_it); +#line 447 "timeline.vala" + track_view_select_all (track); +#line 2234 "timeline.c" + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } +} + + +#line 451 "timeline.vala" +static gboolean time_line_real_expose_event (GtkWidget* base, GdkEventExpose* event) { +#line 2244 "timeline.c" + TimeLine * self; + gboolean result = FALSE; + gint xpos; + self = TIME_LINE (base); +#line 452 "timeline.vala" + GTK_WIDGET_CLASS (time_line_parent_class)->expose_event (GTK_WIDGET (GTK_EVENT_BOX (self)), event); +#line 454 "timeline.vala" + xpos = model_time_system_time_to_xpos (self->provider, model_project_transport_get_position (self->project)); +#line 455 "timeline.vala" + gdk_draw_line (GDK_DRAWABLE (GTK_WIDGET (self)->window), gtk_widget_get_style (GTK_WIDGET (self))->fg_gc[(gint) GTK_STATE_NORMAL], xpos, 0, xpos, GTK_WIDGET (self)->allocation.height); +#line 2255 "timeline.c" + result = TRUE; +#line 459 "timeline.vala" + return result; +#line 2259 "timeline.c" +} + + +#line 462 "timeline.vala" +static void time_line_real_drag_data_received (GtkWidget* base, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time) { +#line 2265 "timeline.c" + TimeLine * self; + GError * _inner_error_; + char** _tmp1_; + gint _a_size_; + gint a_length1; + char** _tmp0_; + char** a; + ModelTrack* track; + GtkWidget* _tmp2_; + TrackView* track_view; + gboolean timeline_add; + self = TIME_LINE (base); +#line 462 "timeline.vala" + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); +#line 462 "timeline.vala" + g_return_if_fail (selection_data != NULL); +#line 2282 "timeline.c" + _inner_error_ = NULL; +#line 465 "timeline.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drag_data_received"); +#line 2286 "timeline.c" + a = (_tmp1_ = _tmp0_ = gtk_selection_data_get_uris (selection_data), a_length1 = _vala_array_length (_tmp0_), _a_size_ = a_length1, _tmp1_); +#line 467 "timeline.vala" + gtk_drag_finish (context, TRUE, FALSE, (guint32) time); +#line 469 "timeline.vala" + track = NULL; +#line 470 "timeline.vala" + track_view = (_tmp2_ = time_line_find_child (self, (double) x, (double) y), IS_TRACK_VIEW (_tmp2_) ? ((TrackView*) _tmp2_) : NULL); +#line 472 "timeline.vala" + if (track_view == NULL) { +#line 2296 "timeline.c" + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (track); + _g_object_unref0 (track_view); +#line 473 "timeline.vala" + return; +#line 2302 "timeline.c" + } +#line 476 "timeline.vala" + timeline_add = TRUE; +#line 478 "timeline.vala" + if (a_length1 > 1) { +#line 479 "timeline.vala" + if (gtk_drag_get_source_widget (context) != NULL) { +#line 480 "timeline.vala" + dialog_utils_warning ("Cannot add files", "Files must be dropped onto the timeline individually."); +#line 2312 "timeline.c" + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (track); + _g_object_unref0 (track_view); +#line 482 "timeline.vala" + return; +#line 2318 "timeline.c" + } +#line 485 "timeline.vala" + if (dialog_utils_add_cancel ("Files must be dropped onto the timeline individually.\n" "Do you wish to add these files to the library?") != GTK_RESPONSE_YES) { +#line 2322 "timeline.c" + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (track); + _g_object_unref0 (track_view); +#line 488 "timeline.vala" + return; +#line 2328 "timeline.c" + } +#line 490 "timeline.vala" + timeline_add = FALSE; +#line 2332 "timeline.c" + } else { + ModelTrack* _tmp3_; +#line 492 "timeline.vala" + track = (_tmp3_ = track_view_get_track (track_view), _g_object_unref0 (track), _tmp3_); +#line 2337 "timeline.c" + } +#line 495 "timeline.vala" + model_project_create_clip_importer (self->project, track, timeline_add, model_time_system_xpos_to_time (self->provider, x), context->action == GDK_ACTION_COPY, GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))), a_length1); +#line 2341 "timeline.c" + { + { + char** s_collection; + int s_collection_length1; + int s_it; +#line 498 "timeline.vala" + s_collection = a; +#line 2349 "timeline.c" + s_collection_length1 = a_length1; + for (s_it = 0; s_it < a_length1; s_it = s_it + 1) { + char* s; + s = g_strdup (s_collection[s_it]); + { + char* filename; + filename = NULL; + { + char* _tmp4_; + char* _tmp5_; +#line 501 "timeline.vala" + _tmp4_ = g_filename_from_uri (s, NULL, &_inner_error_); +#line 2362 "timeline.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_CONVERT_ERROR) { + goto __catch16_g_convert_error; + } + _g_free0 (s); + _g_free0 (filename); + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (track); + _g_object_unref0 (track_view); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 501 "timeline.vala" + filename = (_tmp5_ = _tmp4_, _g_free0 (filename), _tmp5_); +#line 2378 "timeline.c" + } + goto __finally16; + __catch16_g_convert_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + _g_free0 (s); + _g_free0 (filename); +#line 502 "timeline.vala" + continue; +#line 2392 "timeline.c" + } + } + __finally16: + if (_inner_error_ != NULL) { + _g_free0 (s); + _g_free0 (filename); + goto __catch15_g_error; + } +#line 503 "timeline.vala" + model_library_importer_add_file (self->project->importer, filename, &_inner_error_); +#line 2403 "timeline.c" + if (_inner_error_ != NULL) { + _g_free0 (s); + _g_free0 (filename); + goto __catch15_g_error; + } + _g_free0 (s); + _g_free0 (filename); + } + } + } +#line 505 "timeline.vala" + model_library_importer_start (self->project->importer, &_inner_error_); +#line 2416 "timeline.c" + if (_inner_error_ != NULL) { + goto __catch15_g_error; + } + } + goto __finally15; + __catch15_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 507 "timeline.vala" + g_signal_emit_by_name (self->project, "error-occurred", "Error importing", e->message); +#line 2430 "timeline.c" + _g_error_free0 (e); + } + } + __finally15: + if (_inner_error_ != NULL) { + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (track); + _g_object_unref0 (track_view); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (track); + _g_object_unref0 (track_view); +} + + +#line 511 "timeline.vala" +void time_line_update_pos (TimeLine* self, gint event_x) { +#line 2451 "timeline.c" + gint64 time; +#line 511 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 512 "timeline.vala" + time = model_time_system_xpos_to_time (self->provider, event_x); +#line 513 "timeline.vala" + if (self->project->snap_to_clip) { +#line 514 "timeline.vala" + model_project_snap_coord (self->project, &time, model_time_system_get_pixel_snap_time (self->provider)); +#line 2461 "timeline.c" + } +#line 516 "timeline.vala" + view_media_engine_go (self->project->media_engine, time); +#line 2465 "timeline.c" +} + + +#line 519 "timeline.vala" +GtkWidget* time_line_find_child (TimeLine* self, double x, double y) { +#line 2471 "timeline.c" + GtkWidget* result = NULL; +#line 519 "timeline.vala" + g_return_val_if_fail (IS_TIME_LINE (self), NULL); +#line 2475 "timeline.c" + { + GList* w_collection; + GList* w_it; +#line 520 "timeline.vala" + w_collection = gtk_container_get_children (GTK_CONTAINER (self->priv->vbox)); +#line 2481 "timeline.c" + for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { + GtkWidget* w; +#line 520 "timeline.vala" + w = _g_object_ref0 ((GtkWidget*) w_it->data); +#line 2486 "timeline.c" + { + gboolean _tmp0_ = FALSE; +#line 521 "timeline.vala" + if (w->allocation.y <= y) { +#line 521 "timeline.vala" + _tmp0_ = y < (w->allocation.y + w->allocation.height); +#line 2493 "timeline.c" + } else { +#line 521 "timeline.vala" + _tmp0_ = FALSE; +#line 2497 "timeline.c" + } +#line 521 "timeline.vala" + if (_tmp0_) { +#line 2501 "timeline.c" + result = w; + _g_list_free0 (w_collection); +#line 522 "timeline.vala" + return result; +#line 2506 "timeline.c" + } + _g_object_unref0 (w); + } + } +#line 520 "timeline.vala" + _g_list_free0 (w_collection); +#line 2513 "timeline.c" + } + result = NULL; +#line 524 "timeline.vala" + return result; +#line 2518 "timeline.c" +} + + +#line 527 "timeline.vala" +static void time_line_deselect_all (TimeLine* self) { +#line 527 "timeline.vala" + g_return_if_fail (IS_TIME_LINE (self)); +#line 2526 "timeline.c" + { + GeeIterator* _clip_view_it; + _clip_view_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 528 "timeline.vala" + while (TRUE) { +#line 2532 "timeline.c" + ClipView* clip_view; +#line 528 "timeline.vala" + if (!gee_iterator_next (_clip_view_it)) { +#line 528 "timeline.vala" + break; +#line 2538 "timeline.c" + } +#line 528 "timeline.vala" + clip_view = (ClipView*) gee_iterator_get (_clip_view_it); +#line 529 "timeline.vala" + clip_view->is_selected = FALSE; +#line 2544 "timeline.c" + _g_object_unref0 (clip_view); + } + _g_object_unref0 (_clip_view_it); + } +#line 531 "timeline.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->selected_clips)); +#line 532 "timeline.vala" + g_signal_emit_by_name (self, "selection-changed", FALSE); +#line 2553 "timeline.c" +} + + +#line 535 "timeline.vala" +static gboolean time_line_real_button_press_event (GtkWidget* base, GdkEventButton* event) { +#line 2559 "timeline.c" + TimeLine * self; + gboolean result = FALSE; + GtkWidget* _tmp0_; + GtkWidget* child; + self = TIME_LINE (base); +#line 540 "timeline.vala" + self->priv->drag_widget = (_tmp0_ = NULL, _g_object_unref0 (self->priv->drag_widget), _tmp0_); +#line 541 "timeline.vala" + child = time_line_find_child (self, (*event).x, (*event).y); +#line 543 "timeline.vala" + if (VIEW_IS_RULER (child)) { +#line 2571 "timeline.c" + GtkWidget* _tmp1_; + ViewRuler* ruler; + gboolean _tmp2_; + GtkWidget* _tmp3_; +#line 544 "timeline.vala" + ruler = _g_object_ref0 ((_tmp1_ = child, VIEW_IS_RULER (_tmp1_) ? ((ViewRuler*) _tmp1_) : NULL)); +#line 545 "timeline.vala" + g_signal_emit_by_name (GTK_WIDGET (ruler), "button-press-event", event, &_tmp2_); +#line 545 "timeline.vala" + _tmp2_; +#line 546 "timeline.vala" + self->priv->drag_widget = (_tmp3_ = _g_object_ref0 (child), _g_object_unref0 (self->priv->drag_widget), _tmp3_); +#line 2584 "timeline.c" + _g_object_unref0 (ruler); + } else { +#line 547 "timeline.vala" + if (IS_TRACK_VIEW (child)) { +#line 2589 "timeline.c" + GtkWidget* _tmp4_; + TrackView* track_view; + GtkWidget* _tmp5_; +#line 548 "timeline.vala" + track_view = _g_object_ref0 ((_tmp4_ = child, IS_TRACK_VIEW (_tmp4_) ? ((TrackView*) _tmp4_) : NULL)); +#line 550 "timeline.vala" + self->priv->drag_widget = (_tmp5_ = track_view_find_child (track_view, (*event).x, (*event).y), _g_object_unref0 (self->priv->drag_widget), _tmp5_); +#line 551 "timeline.vala" + if (self->priv->drag_widget != NULL) { +#line 2599 "timeline.c" + gboolean _tmp6_; +#line 552 "timeline.vala" + g_signal_emit_by_name (self->priv->drag_widget, "button-press-event", event, &_tmp6_); +#line 552 "timeline.vala" + _tmp6_; +#line 2605 "timeline.c" + } else { + ModelTrack* _tmp7_; +#line 554 "timeline.vala" + time_line_deselect_all (self); +#line 556 "timeline.vala" + model_track_set_selected (_tmp7_ = track_view_get_track (track_view), TRUE); +#line 2612 "timeline.c" + _g_object_unref0 (_tmp7_); + } + _g_object_unref0 (track_view); + } else { +#line 559 "timeline.vala" + time_line_deselect_all (self); +#line 2619 "timeline.c" + } + } +#line 561 "timeline.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 2624 "timeline.c" + result = TRUE; + _g_object_unref0 (child); +#line 563 "timeline.vala" + return result; +#line 2629 "timeline.c" +} + + +#line 566 "timeline.vala" +static gboolean time_line_real_button_release_event (GtkWidget* base, GdkEventButton* event) { +#line 2635 "timeline.c" + TimeLine * self; + gboolean result = FALSE; + self = TIME_LINE (base); +#line 567 "timeline.vala" + if (self->priv->drag_widget != NULL) { +#line 2641 "timeline.c" + gboolean _tmp0_; + GtkWidget* _tmp1_; +#line 568 "timeline.vala" + g_signal_emit_by_name (self->priv->drag_widget, "button-release-event", event, &_tmp0_); +#line 568 "timeline.vala" + _tmp0_; +#line 569 "timeline.vala" + self->priv->drag_widget = (_tmp1_ = NULL, _g_object_unref0 (self->priv->drag_widget), _tmp1_); +#line 2650 "timeline.c" + } + result = TRUE; +#line 571 "timeline.vala" + return result; +#line 2655 "timeline.c" +} + + +#line 574 "timeline.vala" +static gboolean time_line_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) { +#line 2661 "timeline.c" + TimeLine * self; + gboolean result = FALSE; + self = TIME_LINE (base); +#line 575 "timeline.vala" + if (self->priv->drag_widget != NULL) { +#line 2667 "timeline.c" + gboolean _tmp0_; +#line 576 "timeline.vala" + g_signal_emit_by_name (self->priv->drag_widget, "motion-notify-event", event, &_tmp0_); +#line 576 "timeline.vala" + _tmp0_; +#line 2673 "timeline.c" + } else { + GtkWidget* widget; +#line 578 "timeline.vala" + widget = time_line_find_child (self, (*event).x, (*event).y); +#line 579 "timeline.vala" + if (IS_TRACK_VIEW (widget)) { +#line 2680 "timeline.c" + GtkWidget* _tmp1_; + TrackView* track_view; +#line 580 "timeline.vala" + track_view = _g_object_ref0 ((_tmp1_ = widget, IS_TRACK_VIEW (_tmp1_) ? ((TrackView*) _tmp1_) : NULL)); +#line 581 "timeline.vala" + if (track_view != NULL) { +#line 2687 "timeline.c" + GtkWidget* _tmp2_; + ClipView* clip_view; +#line 582 "timeline.vala" + clip_view = (_tmp2_ = track_view_find_child (track_view, (*event).x, (*event).y), IS_CLIP_VIEW (_tmp2_) ? ((ClipView*) _tmp2_) : NULL); +#line 583 "timeline.vala" + if (clip_view != NULL) { +#line 2694 "timeline.c" + gboolean _tmp3_; +#line 584 "timeline.vala" + g_signal_emit_by_name (GTK_WIDGET (clip_view), "motion-notify-event", event, &_tmp3_); +#line 584 "timeline.vala" + _tmp3_; +#line 2700 "timeline.c" + } else { +#line 586 "timeline.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL); +#line 2704 "timeline.c" + } + _g_object_unref0 (clip_view); + } + _g_object_unref0 (track_view); + } else { +#line 589 "timeline.vala" + if (VIEW_IS_RULER (widget)) { +#line 2712 "timeline.c" + gboolean _tmp4_; +#line 590 "timeline.vala" + g_signal_emit_by_name (widget, "motion-notify-event", event, &_tmp4_); +#line 590 "timeline.vala" + _tmp4_; +#line 2718 "timeline.c" + } else { +#line 592 "timeline.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL); +#line 2722 "timeline.c" + } + } + _g_object_unref0 (widget); + } + result = TRUE; +#line 595 "timeline.vala" + return result; +#line 2730 "timeline.c" +} + + +#line 598 "timeline.vala" +static TrackView* time_line_find_video_track_view (TimeLine* self) { +#line 2736 "timeline.c" + TrackView* result = NULL; +#line 598 "timeline.vala" + g_return_val_if_fail (IS_TIME_LINE (self), NULL); +#line 2740 "timeline.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 599 "timeline.vala" + while (TRUE) { +#line 2746 "timeline.c" + TrackView* track; + ModelTrack* _tmp0_; + gboolean _tmp1_; +#line 599 "timeline.vala" + if (!gee_iterator_next (_track_it)) { +#line 599 "timeline.vala" + break; +#line 2754 "timeline.c" + } +#line 599 "timeline.vala" + track = (TrackView*) gee_iterator_get (_track_it); +#line 600 "timeline.vala" + if ((_tmp1_ = model_track_media_type (_tmp0_ = track_view_get_track (track)) == MODEL_MEDIA_TYPE_VIDEO, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 2760 "timeline.c" + result = track; + _g_object_unref0 (_track_it); +#line 601 "timeline.vala" + return result; +#line 2765 "timeline.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = NULL; +#line 605 "timeline.vala" + return result; +#line 2774 "timeline.c" +} + + +#line 608 "timeline.vala" +static TrackView* time_line_find_audio_track_view (TimeLine* self) { +#line 2780 "timeline.c" + TrackView* result = NULL; +#line 608 "timeline.vala" + g_return_val_if_fail (IS_TIME_LINE (self), NULL); +#line 2784 "timeline.c" + { + GeeIterator* _track_it; + _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks)); +#line 609 "timeline.vala" + while (TRUE) { +#line 2790 "timeline.c" + TrackView* track; + ModelTrack* _tmp0_; + gboolean _tmp1_; +#line 609 "timeline.vala" + if (!gee_iterator_next (_track_it)) { +#line 609 "timeline.vala" + break; +#line 2798 "timeline.c" + } +#line 609 "timeline.vala" + track = (TrackView*) gee_iterator_get (_track_it); +#line 610 "timeline.vala" + if ((_tmp1_ = model_track_media_type (_tmp0_ = track_view_get_track (track)) == MODEL_MEDIA_TYPE_AUDIO, _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 2804 "timeline.c" + result = track; + _g_object_unref0 (_track_it); +#line 611 "timeline.vala" + return result; +#line 2809 "timeline.c" + } + _g_object_unref0 (track); + } + _g_object_unref0 (_track_it); + } + result = NULL; +#line 615 "timeline.vala" + return result; +#line 2818 "timeline.c" +} + + +static void time_line_class_init (TimeLineClass * klass) { + time_line_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (TimeLinePrivate)); + GTK_WIDGET_CLASS (klass)->expose_event = time_line_real_expose_event; + GTK_WIDGET_CLASS (klass)->drag_data_received = time_line_real_drag_data_received; + GTK_WIDGET_CLASS (klass)->button_press_event = time_line_real_button_press_event; + GTK_WIDGET_CLASS (klass)->button_release_event = time_line_real_button_release_event; + GTK_WIDGET_CLASS (klass)->motion_notify_event = time_line_real_motion_notify_event; + G_OBJECT_CLASS (klass)->finalize = time_line_finalize; + g_signal_new ("selection_changed", TYPE_TIME_LINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + g_signal_new ("track_changed", TYPE_TIME_LINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("trackview_added", TYPE_TIME_LINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_TRACK_VIEW); + g_signal_new ("trackview_removed", TYPE_TIME_LINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_TRACK_VIEW); +} + + +static void time_line_instance_init (TimeLine * self) { + self->priv = TIME_LINE_GET_PRIVATE (self); + self->priv->drag_widget = NULL; + self->tracks = gee_array_list_new (TYPE_TRACK_VIEW, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); + self->selected_clips = gee_array_list_new (TYPE_CLIP_VIEW, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); + self->clipboard = clipboard_new (); + self->priv->pixel_min = 0.1f; + self->priv->pixel_max = 4505.0f; +} + + +static void time_line_finalize (GObject* obj) { + TimeLine * self; + self = TIME_LINE (obj); + _g_object_unref0 (self->project); + _g_object_unref0 (self->ruler); + _g_object_unref0 (self->priv->drag_widget); + _g_object_unref0 (self->tracks); + _g_object_unref0 (self->priv->vbox); + _g_object_unref0 (self->selected_clips); + _clipboard_unref0 (self->clipboard); + _g_object_unref0 (self->priv->high_water); + G_OBJECT_CLASS (time_line_parent_class)->finalize (obj); +} + + +GType time_line_get_type (void) { + static volatile gsize time_line_type_id__volatile = 0; + if (g_once_init_enter (&time_line_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (TimeLineClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) time_line_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TimeLine), 0, (GInstanceInitFunc) time_line_instance_init, NULL }; + GType time_line_type_id; + time_line_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "TimeLine", &g_define_type_info, 0); + g_once_init_leave (&time_line_type_id__volatile, time_line_type_id); + } + return time_line_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + + + diff --git a/src/marina/marina/timeline.o b/src/marina/marina/timeline.o new file mode 100644 index 0000000000000000000000000000000000000000..c3560b102b7971275e34637de363da86f40d6c1b GIT binary patch literal 171208 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

63vkeZ10 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 U_sg`}Pj74B@2vRAp8Op8KahjHtN;K2 literal 0 HcmV?d00001 diff --git a/src/marina/marina/track.c b/src/marina/marina/track.c new file mode 100644 index 0000000..5ac6967 --- /dev/null +++ b/src/marina/marina/track.c @@ -0,0 +1,2950 @@ +/* track.c generated by valac, the Vala compiler + * generated from track.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; +typedef struct _ModelTrackPrivate ModelTrackPrivate; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_GAP (model_gap_get_type ()) +#define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap)) +#define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass)) +#define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP)) +#define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP)) +#define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass)) + +typedef struct _ModelGap ModelGap; +typedef struct _ModelGapClass ModelGapClass; +#define _model_gap_unref0(var) ((var == NULL) ? NULL : (var = (model_gap_unref (var), NULL))) +typedef struct _ModelGapPrivate ModelGapPrivate; + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; + +#define MODEL_TYPE_COMMAND (model_command_get_type ()) +#define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand)) +#define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass)) +#define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND)) +#define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND)) +#define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass)) + +typedef struct _ModelCommand ModelCommand; +typedef struct _ModelCommandClass ModelCommandClass; + +#define MODEL_TYPE_CLIP_ADD_COMMAND (model_clip_add_command_get_type ()) +#define MODEL_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommand)) +#define MODEL_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass)) +#define MODEL_IS_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_ADD_COMMAND)) +#define MODEL_IS_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_ADD_COMMAND)) +#define MODEL_CLIP_ADD_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass)) + +typedef struct _ModelClipAddCommand ModelClipAddCommand; +typedef struct _ModelClipAddCommandClass ModelClipAddCommandClass; +#define _model_command_unref0(var) ((var == NULL) ? NULL : (var = (model_command_unref (var), NULL))) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +#define MODEL_CLIP_COMMAND_TYPE_ACTION (model_clip_command_action_get_type ()) + +#define MODEL_TYPE_CLIP_COMMAND (model_clip_command_get_type ()) +#define MODEL_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommand)) +#define MODEL_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass)) +#define MODEL_IS_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_COMMAND)) +#define MODEL_IS_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_COMMAND)) +#define MODEL_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass)) + +typedef struct _ModelClipCommand ModelClipCommand; +typedef struct _ModelClipCommandClass ModelClipCommandClass; + +#define MODEL_TYPE_CLIP_REVERT_COMMAND (model_clip_revert_command_get_type ()) +#define MODEL_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommand)) +#define MODEL_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass)) +#define MODEL_IS_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND)) +#define MODEL_IS_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND)) +#define MODEL_CLIP_REVERT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass)) + +typedef struct _ModelClipRevertCommand ModelClipRevertCommand; +typedef struct _ModelClipRevertCommandClass ModelClipRevertCommandClass; + +#define MODEL_CLIP_SPLIT_COMMAND_TYPE_ACTION (model_clip_split_command_action_get_type ()) + +#define MODEL_TYPE_CLIP_SPLIT_COMMAND (model_clip_split_command_get_type ()) +#define MODEL_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommand)) +#define MODEL_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass)) +#define MODEL_IS_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND)) +#define MODEL_IS_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND)) +#define MODEL_CLIP_SPLIT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass)) + +typedef struct _ModelClipSplitCommand ModelClipSplitCommand; +typedef struct _ModelClipSplitCommandClass ModelClipSplitCommandClass; + +#define MODEL_TYPE_CLIP_TRIM_COMMAND (model_clip_trim_command_get_type ()) +#define MODEL_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommand)) +#define MODEL_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass)) +#define MODEL_IS_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND)) +#define MODEL_IS_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND)) +#define MODEL_CLIP_TRIM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass)) + +typedef struct _ModelClipTrimCommand ModelClipTrimCommand; +typedef struct _ModelClipTrimCommandClass ModelClipTrimCommandClass; + +#define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ()) +#define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack)) +#define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) +#define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) + +typedef struct _ModelAudioTrack ModelAudioTrack; +typedef struct _ModelAudioTrackClass ModelAudioTrackClass; +typedef struct _ModelAudioTrackPrivate ModelAudioTrackPrivate; + +#define MODEL_TYPE_PARAMETER (model_parameter_get_type ()) + +#define MODEL_TYPE_PARAMETER_COMMAND (model_parameter_command_get_type ()) +#define MODEL_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommand)) +#define MODEL_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass)) +#define MODEL_IS_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PARAMETER_COMMAND)) +#define MODEL_IS_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PARAMETER_COMMAND)) +#define MODEL_PARAMETER_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass)) + +typedef struct _ModelParameterCommand ModelParameterCommand; +typedef struct _ModelParameterCommandClass ModelParameterCommandClass; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelTrack { + GObject parent_instance; + ModelTrackPrivate * priv; + ModelProject* project; + GeeArrayList* clips; + char* display_name; +}; + +struct _ModelTrackClass { + GObjectClass parent_class; + char* (*name) (ModelTrack* self); + ModelMediaType (*media_type) (ModelTrack* self); + gboolean (*check) (ModelTrack* self, ModelClip* clip); + void (*on_clip_updated) (ModelTrack* self, ModelClip* clip); + void (*write_attributes) (ModelTrack* self, FILE* f); +}; + +struct _ModelTrackPrivate { + gboolean is_selected; +}; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +struct _ModelGap { + GTypeInstance parent_instance; + volatile int ref_count; + ModelGapPrivate * priv; + gint64 start; + gint64 end; +}; + +struct _ModelGapClass { + GTypeClass parent_class; + void (*finalize) (ModelGap *self); +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +typedef enum { + MODEL_CLIP_COMMAND_ACTION_APPEND, + MODEL_CLIP_COMMAND_ACTION_DELETE +} ModelClipCommandAction; + +typedef enum { + MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT, + MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN +} ModelClipSplitCommandAction; + +struct _ModelAudioTrack { + ModelTrack parent_instance; + ModelAudioTrackPrivate * priv; +}; + +struct _ModelAudioTrackClass { + ModelTrackClass parent_class; +}; + +struct _ModelAudioTrackPrivate { + double pan; + double volume; + gint default_num_channels; +}; + +typedef enum { + MODEL_PARAMETER_PAN, + MODEL_PARAMETER_VOLUME +} ModelParameter; + + +static gpointer model_track_parent_class = NULL; +static gpointer model_audio_track_parent_class = NULL; + +GType model_track_get_type (void); +GType model_media_type_get_type (void); +GType model_clip_get_type (void); +GType model_project_get_type (void); +#define MODEL_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_TRACK, ModelTrackPrivate)) +enum { + MODEL_TRACK_DUMMY_PROPERTY +}; +ModelTrack* model_track_construct (GType object_type, ModelProject* project, const char* display_name); +char* model_track_name (ModelTrack* self); +static char* model_track_real_name (ModelTrack* self); +ModelMediaType model_track_media_type (ModelTrack* self); +static ModelMediaType model_track_real_media_type (ModelTrack* self); +void model_track_hide (ModelTrack* self); +GType model_clip_file_get_type (void); +gboolean model_track_contains_clipfile (ModelTrack* self, ModelClipFile* f); +gboolean model_track_check (ModelTrack* self, ModelClip* clip); +static gboolean model_track_real_check (ModelTrack* self, ModelClip* clip); +gint64 model_clip_get_start (ModelClip* self); +gint64 model_clip_get_duration (ModelClip* self); +gint64 model_track_get_time_from_pos (ModelTrack* self, ModelClip* clip, gboolean after); +gint64 model_clip_get_end (ModelClip* self); +static gint model_track_get_clip_from_time (ModelTrack* self, gint64 time); +gint64 model_clip_snap (ModelClip* self, ModelClip* other, gint64 pad); +gint64 model_track_snap_clip (ModelTrack* self, ModelClip* c, gint64 span); +gboolean model_clip_snap_coord (ModelClip* self, gint64* s, gint64 span); +gboolean model_track_snap_coord (ModelTrack* self, gint64* coord, gint64 span); +gboolean model_track_clip_is_near (ModelTrack* self, ModelClip* clip, gint64 range, gint64* adjustment); +static gint model_track_get_insert_index (ModelTrack* self, gint64 time); +ModelGap* model_gap_new (gint64 start, gint64 end); +ModelGap* model_gap_construct (GType object_type, gint64 start, gint64 end); +gpointer model_gap_ref (gpointer instance); +void model_gap_unref (gpointer instance); +GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_gap (GValue* value, gpointer v_object); +void model_value_take_gap (GValue* value, gpointer v_object); +gpointer model_value_get_gap (const GValue* value); +GType model_gap_get_type (void); +ModelGap* model_track_find_first_gap (ModelTrack* self, gint64 start); +static gint model_track_get_gap_index (ModelTrack* self, gint64 time); +void model_track_find_containing_gap (ModelTrack* self, gint64 time, ModelGap** g); +gboolean model_clip_overlap_pos (ModelClip* self, gint64 start, gint64 length); +ModelClip* model_track_find_overlapping_clip (ModelTrack* self, gint64 start, gint64 length); +ModelClip* model_track_find_nearest_clip_edge (ModelTrack* self, gint64 time, gboolean* after); +gint64 model_clip_get_media_start (ModelClip* self); +ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select); +void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType model_tempo_information_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType view_media_engine_get_type (void); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +GType model_library_importer_get_type (void); +gboolean model_undo_manager_get_in_undo (ModelUndoManager* self); +void model_track_delete_clip (ModelTrack* self, ModelClip* clip); +static void model_track_do_clip_overwrite (ModelTrack* self, ModelClip* c); +ModelClipAddCommand* model_clip_add_command_new (ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start); +ModelClipAddCommand* model_clip_add_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start); +gpointer model_command_ref (gpointer instance); +void model_command_unref (gpointer instance); +GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_command (GValue* value, gpointer v_object); +void model_value_take_command (GValue* value, gpointer v_object); +gpointer model_value_get_command (const GValue* value); +GType model_command_get_type (void); +GType model_clip_add_command_get_type (void); +void model_project_do_command (ModelProject* self, ModelCommand* the_command); +void model_track_move (ModelTrack* self, ModelClip* c, gint64 pos, gint64 original_time); +void model_clip_set_start (ModelClip* self, gint64 value); +static void model_track_insert_clip_into_array (ModelTrack* self, ModelClip* c, gint pos); +void model_project_reseek (ModelProject* self); +void _model_track_move (ModelTrack* self, ModelClip* c, gint64 pos); +void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +void model_track_on_clip_updated (ModelTrack* self, ModelClip* clip); +static void model_track_real_on_clip_updated (ModelTrack* self, ModelClip* clip); +void model_track_do_clip_paste (ModelTrack* self, ModelClip* clip, gint64 position); +ModelClip* model_track_get_clip (ModelTrack* self, gint i); +gint model_track_get_clip_index (ModelTrack* self, ModelClip* c); +ModelClip* model_track_get_clip_by_position (ModelTrack* self, gint64 pos); +gint64 model_track_get_length (ModelTrack* self); +void _model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select); +GType model_clip_command_action_get_type (void); +ModelClipCommand* model_clip_command_new (ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select); +ModelClipCommand* model_clip_command_construct (GType object_type, ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select); +GType model_clip_command_get_type (void); +void _model_track_delete_clip (ModelTrack* self, ModelClip* clip); +void model_track_delete_gap (ModelTrack* self, ModelGap* g); +void model_track_remove_clip_from_array (ModelTrack* self, ModelClip* pos); +static void _model_track_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self); +void view_media_engine_go (ViewMediaEngine* self, gint64 pos); +void model_track_delete_all_clips (ModelTrack* self); +ModelClipRevertCommand* model_clip_revert_command_new (ModelTrack* track, ModelClip* clip); +ModelClipRevertCommand* model_clip_revert_command_construct (GType object_type, ModelTrack* track, ModelClip* clip); +GType model_clip_revert_command_get_type (void); +void model_track_revert_to_original (ModelTrack* self, ModelClip* clip); +void model_clip_set_media_start_duration (ModelClip* self, gint64 media_start, gint64 duration); +gint64 model_clip_file_get_length (ModelClipFile* self); +void _model_track_revert_to_original (ModelTrack* self, ModelClip* c); +gboolean model_track_are_contiguous_clips (ModelTrack* self, gint64 position); +GType model_clip_split_command_action_get_type (void); +ModelClipSplitCommand* model_clip_split_command_new (ModelClipSplitCommandAction action, ModelTrack* track, gint64 time); +ModelClipSplitCommand* model_clip_split_command_construct (GType object_type, ModelClipSplitCommandAction action, ModelTrack* track, gint64 time); +GType model_clip_split_command_get_type (void); +void model_track_split_at (ModelTrack* self, gint64 position); +void model_clip_set_duration (ModelClip* self, gint64 value); +void _model_track_split_at (ModelTrack* self, gint64 position); +void model_track_join (ModelTrack* self, gint64 position); +void _model_track_join (ModelTrack* self, gint64 position); +ModelClipTrimCommand* model_clip_trim_command_new (ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +ModelClipTrimCommand* model_clip_trim_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +GType model_clip_trim_command_get_type (void); +void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge); +void _model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +gint64 model_track_previous_edit (ModelTrack* self, gint64 pos); +gint64 model_track_next_edit (ModelTrack* self, gint64 pos); +char* model_track_get_display_name (ModelTrack* self); +void model_track_write_attributes (ModelTrack* self, FILE* f); +static void model_track_real_write_attributes (ModelTrack* self, FILE* f); +void model_clip_save (ModelClip* self, FILE* f, gint id); +gint model_project_get_clipfile_index (ModelProject* self, ModelClipFile* find); +void model_track_save (ModelTrack* self, FILE* f); +void model_track_set_display_name (ModelTrack* self, const char* new_display_name); +void model_track_set_selected (ModelTrack* self, gboolean is_selected); +gboolean model_track_get_is_selected (ModelTrack* self); +static void model_track_finalize (GObject* obj); +GType model_audio_track_get_type (void); +#define MODEL_AUDIO_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackPrivate)) +enum { + MODEL_AUDIO_TRACK_DUMMY_PROPERTY +}; +#define MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT (-1) +void model_audio_track_set_default_num_channels (ModelAudioTrack* self, gint num); +void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value); +void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume); +ModelAudioTrack* model_audio_track_new (ModelProject* project, const char* display_name); +ModelAudioTrack* model_audio_track_construct (GType object_type, ModelProject* project, const char* display_name); +static char* model_audio_track_real_name (ModelTrack* base); +static ModelMediaType model_audio_track_real_media_type (ModelTrack* base); +double model_audio_track_get_volume (ModelAudioTrack* self); +double model_audio_track_get_pan (ModelAudioTrack* self); +gboolean model_audio_track_get_num_channels (ModelAudioTrack* self, gint* num); +static void model_audio_track_real_write_attributes (ModelTrack* base, FILE* f); +gboolean float_within (double f, double epsilon); +GType model_parameter_get_type (void); +ModelParameterCommand* model_parameter_command_new (ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value); +ModelParameterCommand* model_parameter_command_construct (GType object_type, ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value); +GType model_parameter_command_get_type (void); +void model_audio_track_set_pan (ModelAudioTrack* self, double new_value); +void model_audio_track_set_volume (ModelAudioTrack* self, double new_volume); +gboolean model_clip_file_is_online (ModelClipFile* self); +gboolean model_clip_file_get_num_channels (ModelClipFile* self, gint* channels); +static gboolean model_audio_track_real_check (ModelTrack* base, ModelClip* clip); +void model_audio_track_on_level_changed (ModelAudioTrack* self, double level_left, double level_right); +static void model_audio_track_real_on_clip_updated (ModelTrack* base, ModelClip* clip); +static void model_audio_track_finalize (GObject* obj); +static int _vala_strcmp0 (const char * str1, const char * str2); + + +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); +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); +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); +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); + +#line 26 "track.vala" +ModelTrack* model_track_construct (GType object_type, ModelProject* project, const char* display_name) { +#line 564 "track.c" + ModelTrack * self; + char* _tmp0_; +#line 26 "track.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 26 "track.vala" + g_return_val_if_fail (display_name != NULL, NULL); +#line 26 "track.vala" + self = (ModelTrack*) g_object_new (object_type, NULL); +#line 27 "track.vala" + self->project = project; +#line 28 "track.vala" + self->display_name = (_tmp0_ = g_strdup (display_name), _g_free0 (self->display_name), _tmp0_); +#line 577 "track.c" + return self; +} + + +#line 31 "track.vala" +static char* model_track_real_name (ModelTrack* self) { +#line 584 "track.c" + g_return_val_if_fail (MODEL_IS_TRACK (self), NULL); + g_critical ("Type `%s' does not implement abstract method `model_track_name'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return NULL; +} + + +#line 31 "track.vala" +char* model_track_name (ModelTrack* self) { +#line 31 "track.vala" + return MODEL_TRACK_GET_CLASS (self)->name (self); +#line 595 "track.c" +} + + +#line 32 "track.vala" +static ModelMediaType model_track_real_media_type (ModelTrack* self) { +#line 601 "track.c" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0); + g_critical ("Type `%s' does not implement abstract method `model_track_media_type'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return 0; +} + + +#line 32 "track.vala" +ModelMediaType model_track_media_type (ModelTrack* self) { +#line 32 "track.vala" + return MODEL_TRACK_GET_CLASS (self)->media_type (self); +#line 612 "track.c" +} + + +#line 34 "track.vala" +void model_track_hide (ModelTrack* self) { +#line 34 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 35 "track.vala" + g_signal_emit_by_name (self, "track-hidden", self); +#line 622 "track.c" +} + + +#line 38 "track.vala" +gboolean model_track_contains_clipfile (ModelTrack* self, ModelClipFile* f) { +#line 628 "track.c" + gboolean result = FALSE; +#line 38 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE); +#line 38 "track.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (f), FALSE); +#line 634 "track.c" + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 39 "track.vala" + while (TRUE) { +#line 640 "track.c" + ModelClip* c; +#line 39 "track.vala" + if (!gee_iterator_next (_c_it)) { +#line 39 "track.vala" + break; +#line 646 "track.c" + } +#line 39 "track.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 40 "track.vala" + if (c->clipfile == f) { +#line 652 "track.c" + result = TRUE; + _g_object_unref0 (c); + _g_object_unref0 (_c_it); +#line 41 "track.vala" + return result; +#line 658 "track.c" + } + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } + result = FALSE; +#line 43 "track.vala" + return result; +#line 667 "track.c" +} + + +#line 46 "track.vala" +static gboolean model_track_real_check (ModelTrack* self, ModelClip* clip) { +#line 673 "track.c" + g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE); + g_critical ("Type `%s' does not implement abstract method `model_track_check'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return FALSE; +} + + +#line 46 "track.vala" +gboolean model_track_check (ModelTrack* self, ModelClip* clip) { +#line 46 "track.vala" + return MODEL_TRACK_GET_CLASS (self)->check (self, clip); +#line 684 "track.c" +} + + +#line 48 "track.vala" +gint64 model_track_get_time_from_pos (ModelTrack* self, ModelClip* clip, gboolean after) { +#line 690 "track.c" + gint64 result = 0LL; +#line 48 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL); +#line 48 "track.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), 0LL); +#line 49 "track.vala" + if (after) { +#line 698 "track.c" + result = model_clip_get_start (clip) + model_clip_get_duration (clip); +#line 50 "track.vala" + return result; +#line 702 "track.c" + } else { + result = model_clip_get_start (clip); +#line 52 "track.vala" + return result; +#line 707 "track.c" + } +} + + +#line 55 "track.vala" +static gint model_track_get_clip_from_time (ModelTrack* self, gint64 time) { +#line 714 "track.c" + gint result = 0; +#line 55 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0); +#line 718 "track.c" + { + gint i; +#line 56 "track.vala" + i = 0; +#line 723 "track.c" + { + gboolean _tmp0_; +#line 56 "track.vala" + _tmp0_ = TRUE; +#line 56 "track.vala" + while (TRUE) { +#line 730 "track.c" + gboolean _tmp1_ = FALSE; + ModelClip* _tmp2_; + gboolean _tmp3_; +#line 56 "track.vala" + if (!_tmp0_) { +#line 56 "track.vala" + i++; +#line 738 "track.c" + } +#line 56 "track.vala" + _tmp0_ = FALSE; +#line 56 "track.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) { +#line 56 "track.vala" + break; +#line 746 "track.c" + } +#line 57 "track.vala" + if ((_tmp3_ = time >= model_clip_get_start (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)), _g_object_unref0 (_tmp2_), _tmp3_)) { +#line 750 "track.c" + ModelClip* _tmp4_; +#line 58 "track.vala" + _tmp1_ = time < model_clip_get_end (_tmp4_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)); +#line 754 "track.c" + _g_object_unref0 (_tmp4_); + } else { +#line 57 "track.vala" + _tmp1_ = FALSE; +#line 759 "track.c" + } +#line 57 "track.vala" + if (_tmp1_) { +#line 763 "track.c" + result = i; +#line 59 "track.vala" + return result; +#line 767 "track.c" + } + } + } + } + result = -1; +#line 61 "track.vala" + return result; +#line 775 "track.c" +} + + +#line 64 "track.vala" +gint64 model_track_snap_clip (ModelTrack* self, ModelClip* c, gint64 span) { +#line 781 "track.c" + gint64 result = 0LL; +#line 64 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL); +#line 64 "track.vala" + g_return_val_if_fail (MODEL_IS_CLIP (c), 0LL); +#line 787 "track.c" + { + GeeIterator* _cl_it; + _cl_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 65 "track.vala" + while (TRUE) { +#line 793 "track.c" + ModelClip* cl; + gint64 new_start; +#line 65 "track.vala" + if (!gee_iterator_next (_cl_it)) { +#line 65 "track.vala" + break; +#line 800 "track.c" + } +#line 65 "track.vala" + cl = (ModelClip*) gee_iterator_get (_cl_it); +#line 66 "track.vala" + new_start = model_clip_snap (c, cl, span); +#line 67 "track.vala" + if (new_start != model_clip_get_start (c)) { +#line 808 "track.c" + result = new_start; + _g_object_unref0 (cl); + _g_object_unref0 (_cl_it); +#line 68 "track.vala" + return result; +#line 814 "track.c" + } + _g_object_unref0 (cl); + } + _g_object_unref0 (_cl_it); + } + result = model_clip_get_start (c); +#line 71 "track.vala" + return result; +#line 823 "track.c" +} + + +#line 74 "track.vala" +gboolean model_track_snap_coord (ModelTrack* self, gint64* coord, gint64 span) { +#line 829 "track.c" + gboolean result = FALSE; +#line 74 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE); +#line 833 "track.c" + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 75 "track.vala" + while (TRUE) { +#line 839 "track.c" + ModelClip* c; +#line 75 "track.vala" + if (!gee_iterator_next (_c_it)) { +#line 75 "track.vala" + break; +#line 845 "track.c" + } +#line 75 "track.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 76 "track.vala" + if (model_clip_snap_coord (c, coord, span)) { +#line 851 "track.c" + result = TRUE; + _g_object_unref0 (c); + _g_object_unref0 (_c_it); +#line 77 "track.vala" + return result; +#line 857 "track.c" + } + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } + result = FALSE; +#line 79 "track.vala" + return result; +#line 866 "track.c" +} + + +#line 82 "track.vala" +gboolean model_track_clip_is_near (ModelTrack* self, ModelClip* clip, gint64 range, gint64* adjustment) { +#line 872 "track.c" + gboolean result = FALSE; +#line 82 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE); +#line 82 "track.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), FALSE); +#line 878 "track.c" + { + GeeIterator* _potential_clip_it; + _potential_clip_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 83 "track.vala" + while (TRUE) { +#line 884 "track.c" + ModelClip* potential_clip; +#line 83 "track.vala" + if (!gee_iterator_next (_potential_clip_it)) { +#line 83 "track.vala" + break; +#line 890 "track.c" + } +#line 83 "track.vala" + potential_clip = (ModelClip*) gee_iterator_get (_potential_clip_it); +#line 84 "track.vala" + if (potential_clip != clip) { +#line 896 "track.c" + gint64 difference; +#line 85 "track.vala" + difference = model_clip_get_start (clip) - model_clip_get_end (potential_clip); +#line 86 "track.vala" + if (llabs (difference) < range) { +#line 87 "track.vala" + *adjustment = -difference; +#line 904 "track.c" + result = TRUE; + _g_object_unref0 (potential_clip); + _g_object_unref0 (_potential_clip_it); +#line 88 "track.vala" + return result; +#line 910 "track.c" + } +#line 91 "track.vala" + difference = model_clip_get_start (potential_clip) - model_clip_get_end (clip); +#line 92 "track.vala" + if (llabs (difference) < range) { +#line 93 "track.vala" + *adjustment = difference; +#line 918 "track.c" + result = TRUE; + _g_object_unref0 (potential_clip); + _g_object_unref0 (_potential_clip_it); +#line 94 "track.vala" + return result; +#line 924 "track.c" + } + } + _g_object_unref0 (potential_clip); + } + _g_object_unref0 (_potential_clip_it); + } + result = FALSE; +#line 98 "track.vala" + return result; +#line 934 "track.c" +} + + +#line 101 "track.vala" +static gint model_track_get_insert_index (ModelTrack* self, gint64 time) { +#line 940 "track.c" + gint result = 0; + gint end_ret; +#line 101 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0); +#line 102 "track.vala" + end_ret = 0; +#line 947 "track.c" + { + gint i; +#line 103 "track.vala" + i = 0; +#line 952 "track.c" + { + gboolean _tmp0_; +#line 103 "track.vala" + _tmp0_ = TRUE; +#line 103 "track.vala" + while (TRUE) { +#line 959 "track.c" + ModelClip* c; +#line 103 "track.vala" + if (!_tmp0_) { +#line 103 "track.vala" + i++; +#line 965 "track.c" + } +#line 103 "track.vala" + _tmp0_ = FALSE; +#line 103 "track.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) { +#line 103 "track.vala" + break; +#line 973 "track.c" + } + c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i); +#line 106 "track.vala" + if (time >= model_clip_get_start (c)) { +#line 107 "track.vala" + if (time < (model_clip_get_start (c) + (model_clip_get_duration (c) / 2))) { +#line 980 "track.c" + result = i; + _g_object_unref0 (c); +#line 108 "track.vala" + return result; +#line 985 "track.c" + } else { +#line 109 "track.vala" + if (time < (model_clip_get_start (c) + model_clip_get_duration (c))) { +#line 989 "track.c" + result = i + 1; + _g_object_unref0 (c); +#line 110 "track.vala" + return result; +#line 994 "track.c" + } else { +#line 112 "track.vala" + end_ret++; +#line 998 "track.c" + } + } + } + _g_object_unref0 (c); + } + } + } + result = end_ret; +#line 115 "track.vala" + return result; +#line 1009 "track.c" +} + + +#line 119 "track.vala" +ModelGap* model_track_find_first_gap (ModelTrack* self, gint64 start) { +#line 1015 "track.c" + ModelGap* result = NULL; + gint64 new_start; + gint64 new_end; +#line 119 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), NULL); +#line 120 "track.vala" + new_start = (gint64) 0; +#line 121 "track.vala" + new_end = G_MAXINT64; +#line 1025 "track.c" + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 123 "track.vala" + while (TRUE) { +#line 1031 "track.c" + ModelClip* c; + gboolean _tmp0_ = FALSE; +#line 123 "track.vala" + if (!gee_iterator_next (_c_it)) { +#line 123 "track.vala" + break; +#line 1038 "track.c" + } +#line 123 "track.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 124 "track.vala" + if (model_clip_get_start (c) > new_start) { +#line 125 "track.vala" + _tmp0_ = model_clip_get_start (c) > start; +#line 1046 "track.c" + } else { +#line 124 "track.vala" + _tmp0_ = FALSE; +#line 1050 "track.c" + } +#line 124 "track.vala" + if (_tmp0_) { +#line 126 "track.vala" + new_end = model_clip_get_start (c); +#line 1056 "track.c" + _g_object_unref0 (c); +#line 127 "track.vala" + break; +#line 1060 "track.c" + } +#line 129 "track.vala" + new_start = model_clip_get_end (c); +#line 1064 "track.c" + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } + result = model_gap_new (new_start, new_end); +#line 131 "track.vala" + return result; +#line 1072 "track.c" +} + + +#line 135 "track.vala" +static gint model_track_get_gap_index (ModelTrack* self, gint64 time) { +#line 1078 "track.c" + gint result = 0; + gint i; +#line 135 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0); +#line 136 "track.vala" + i = 0; +#line 137 "track.vala" + while (TRUE) { +#line 1087 "track.c" + ModelClip* _tmp0_; + gboolean _tmp1_; +#line 137 "track.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) { +#line 137 "track.vala" + break; +#line 1094 "track.c" + } +#line 138 "track.vala" + if ((_tmp1_ = time <= model_clip_get_start (_tmp0_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)), _g_object_unref0 (_tmp0_), _tmp1_)) { +#line 139 "track.vala" + break; +#line 1100 "track.c" + } +#line 140 "track.vala" + i++; +#line 1104 "track.c" + } + result = i; +#line 142 "track.vala" + return result; +#line 1109 "track.c" +} + + +#line 147 "track.vala" +void model_track_find_containing_gap (ModelTrack* self, gint64 time, ModelGap** g) { +#line 1115 "track.c" + ModelGap* _tmp0_; + gint index; +#line 147 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 1120 "track.c" + if (g != NULL) { + *g = NULL; + } +#line 148 "track.vala" + *g = (_tmp0_ = model_gap_new ((gint64) 0, (gint64) 0), _model_gap_unref0 (*g), _tmp0_); +#line 150 "track.vala" + index = model_track_get_gap_index (self, time); +#line 151 "track.vala" + if (index < gee_collection_get_size (GEE_COLLECTION (self->clips))) { +#line 1130 "track.c" + gint64 _tmp1_ = 0LL; + ModelClip* _tmp3_; +#line 152 "track.vala" + if (index > 0) { +#line 1135 "track.c" + ModelClip* _tmp2_; +#line 152 "track.vala" + _tmp1_ = model_clip_get_end (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), index - 1)); +#line 1139 "track.c" + _g_object_unref0 (_tmp2_); + } else { +#line 152 "track.vala" + _tmp1_ = (gint64) 0; +#line 1144 "track.c" + } +#line 152 "track.vala" + (*g)->start = _tmp1_; +#line 153 "track.vala" + (*g)->end = model_clip_get_start (_tmp3_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), index)); +#line 1150 "track.c" + _g_object_unref0 (_tmp3_); + } +} + + +#line 157 "track.vala" +ModelClip* model_track_find_overlapping_clip (ModelTrack* self, gint64 start, gint64 length) { +#line 1158 "track.c" + ModelClip* result = NULL; +#line 157 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), NULL); +#line 1162 "track.c" + { + gint i; +#line 158 "track.vala" + i = 0; +#line 1167 "track.c" + { + gboolean _tmp0_; +#line 158 "track.vala" + _tmp0_ = TRUE; +#line 158 "track.vala" + while (TRUE) { +#line 1174 "track.c" + ModelClip* c; +#line 158 "track.vala" + if (!_tmp0_) { +#line 158 "track.vala" + i++; +#line 1180 "track.c" + } +#line 158 "track.vala" + _tmp0_ = FALSE; +#line 158 "track.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) { +#line 158 "track.vala" + break; +#line 1188 "track.c" + } + c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i); +#line 160 "track.vala" + if (model_clip_overlap_pos (c, start, length)) { +#line 1193 "track.c" + result = c; +#line 161 "track.vala" + return result; +#line 1197 "track.c" + } + _g_object_unref0 (c); + } + } + } + result = NULL; +#line 163 "track.vala" + return result; +#line 1206 "track.c" +} + + +#line 166 "track.vala" +ModelClip* model_track_find_nearest_clip_edge (ModelTrack* self, gint64 time, gboolean* after) { +#line 1212 "track.c" + ModelClip* result = NULL; + gint limit; + ModelClip* _tmp0_; + gint64 _tmp1_; + gint64 prev_time; +#line 166 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), NULL); +#line 167 "track.vala" + limit = gee_collection_get_size (GEE_COLLECTION (self->clips)) * 2; +#line 168 "track.vala" + prev_time = (_tmp1_ = model_clip_get_start (_tmp0_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), 0)), _g_object_unref0 (_tmp0_), _tmp1_); +#line 1224 "track.c" + { + gint i; +#line 170 "track.vala" + i = 1; +#line 1229 "track.c" + { + gboolean _tmp2_; +#line 170 "track.vala" + _tmp2_ = TRUE; +#line 170 "track.vala" + while (TRUE) { +#line 1236 "track.c" + ModelClip* c; + gint64 t = 0LL; +#line 170 "track.vala" + if (!_tmp2_) { +#line 170 "track.vala" + i++; +#line 1243 "track.c" + } +#line 170 "track.vala" + _tmp2_ = FALSE; +#line 170 "track.vala" + if (!(i < limit)) { +#line 170 "track.vala" + break; +#line 1251 "track.c" + } + c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i / 2); +#line 174 "track.vala" + if ((i % 2) == 0) { +#line 175 "track.vala" + t = model_clip_get_start (c); +#line 1258 "track.c" + } else { +#line 177 "track.vala" + t = model_clip_get_end (c); +#line 1262 "track.c" + } +#line 179 "track.vala" + if (t > time) { +#line 180 "track.vala" + if ((t - time) < (time - prev_time)) { +#line 181 "track.vala" + *after = (i % 2) != 0; +#line 1270 "track.c" + result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i / 2); + _g_object_unref0 (c); +#line 182 "track.vala" + return result; +#line 1275 "track.c" + } else { +#line 184 "track.vala" + *after = (i % 2) == 0; +#line 1279 "track.c" + result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), (i - 1) / 2); + _g_object_unref0 (c); +#line 185 "track.vala" + return result; +#line 1284 "track.c" + } + } +#line 188 "track.vala" + prev_time = t; +#line 1289 "track.c" + _g_object_unref0 (c); + } + } + } +#line 191 "track.vala" + *after = TRUE; +#line 1296 "track.c" + result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), gee_collection_get_size (GEE_COLLECTION (self->clips)) - 1); +#line 192 "track.vala" + return result; +#line 1300 "track.c" +} + + +#line 195 "track.vala" +static void model_track_do_clip_overwrite (ModelTrack* self, ModelClip* c) { +#line 1306 "track.c" + gint start_index; + gint end_index; + gboolean _tmp11_ = FALSE; + gint i; +#line 195 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 195 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 196 "track.vala" + start_index = model_track_get_clip_from_time (self, model_clip_get_start (c)); +#line 197 "track.vala" + end_index = model_track_get_clip_from_time (self, model_clip_get_end (c)); +#line 199 "track.vala" + if (end_index >= 0) { +#line 1321 "track.c" + ModelClip* _tmp0_; + gint64 _tmp1_; + gint64 diff; +#line 200 "track.vala" + 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_); +#line 201 "track.vala" + if (end_index == start_index) { +#line 1329 "track.c" + ModelClip* _tmp2_; + gboolean _tmp3_; +#line 202 "track.vala" + if ((_tmp3_ = c == (_tmp2_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index)), _g_object_unref0 (_tmp2_), _tmp3_)) { +#line 203 "track.vala" + return; +#line 1336 "track.c" + } +#line 206 "track.vala" + if (diff > 0) { +#line 1340 "track.c" + ModelClip* _tmp8_; + ModelClip* _tmp7_; + ModelClip* _tmp6_; + ModelClip* _tmp5_; + ModelClip* _tmp4_; + ModelClip* _tmp9_; + ModelClip* cl; +#line 207 "track.vala" + 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_); +#line 211 "track.vala" + model_track_append_at_time (self, cl, model_clip_get_start (cl), FALSE); +#line 1352 "track.c" + _g_object_unref0 (cl); + } + } else { + ModelClip* _tmp10_; +#line 214 "track.vala" + model_track_trim (self, _tmp10_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), end_index), diff, GDK_WINDOW_EDGE_WEST); +#line 1359 "track.c" + _g_object_unref0 (_tmp10_); + } + } +#line 217 "track.vala" + if (start_index >= 0) { +#line 1365 "track.c" + ModelClip* _tmp12_; +#line 217 "track.vala" + _tmp11_ = (_tmp12_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), start_index)) != c; +#line 1369 "track.c" + _g_object_unref0 (_tmp12_); + } else { +#line 217 "track.vala" + _tmp11_ = FALSE; +#line 1374 "track.c" + } +#line 217 "track.vala" + if (_tmp11_) { +#line 1378 "track.c" + ModelClip* _tmp13_; + gint64 _tmp14_; + gint64 delta; + ModelClip* _tmp15_; +#line 218 "track.vala" + 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_); +#line 219 "track.vala" + model_track_trim (self, _tmp15_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), start_index), -delta, GDK_WINDOW_EDGE_EAST); +#line 1387 "track.c" + _g_object_unref0 (_tmp15_); + } +#line 222 "track.vala" + i = 0; +#line 226 "track.vala" + if (!model_undo_manager_get_in_undo (self->project->undo_manager)) { +#line 227 "track.vala" + while (TRUE) { +#line 1396 "track.c" + gboolean _tmp16_ = FALSE; + gboolean _tmp17_ = FALSE; + ModelClip* _tmp18_; + gboolean _tmp19_; +#line 227 "track.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) { +#line 227 "track.vala" + break; +#line 1405 "track.c" + } +#line 228 "track.vala" + if ((_tmp19_ = (_tmp18_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) != c, _g_object_unref0 (_tmp18_), _tmp19_)) { +#line 1409 "track.c" + ModelClip* _tmp20_; +#line 229 "track.vala" + _tmp17_ = model_clip_get_start (_tmp20_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) >= model_clip_get_start (c); +#line 1413 "track.c" + _g_object_unref0 (_tmp20_); + } else { +#line 228 "track.vala" + _tmp17_ = FALSE; +#line 1418 "track.c" + } +#line 228 "track.vala" + if (_tmp17_) { +#line 1422 "track.c" + ModelClip* _tmp21_; +#line 230 "track.vala" + _tmp16_ = model_clip_get_end (_tmp21_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) <= model_clip_get_end (c); +#line 1426 "track.c" + _g_object_unref0 (_tmp21_); + } else { +#line 228 "track.vala" + _tmp16_ = FALSE; +#line 1431 "track.c" + } +#line 228 "track.vala" + if (_tmp16_) { +#line 1435 "track.c" + ModelClip* _tmp22_; +#line 231 "track.vala" + model_track_delete_clip (self, _tmp22_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)); +#line 1439 "track.c" + _g_object_unref0 (_tmp22_); + } else { +#line 234 "track.vala" + i++; +#line 1444 "track.c" + } + } + } +} + + +#line 239 "track.vala" +void model_track_move (ModelTrack* self, ModelClip* c, gint64 pos, gint64 original_time) { +#line 1453 "track.c" + ModelCommand* command; +#line 239 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 239 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 240 "track.vala" + command = MODEL_COMMAND (model_clip_add_command_new (self, c, original_time, pos)); +#line 241 "track.vala" + model_project_do_command (self->project, command); +#line 1463 "track.c" + _model_command_unref0 (command); +} + + +#line 244 "track.vala" +void _model_track_move (ModelTrack* self, ModelClip* c, gint64 pos) { +#line 244 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 244 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 245 "track.vala" + if (pos < 0) { +#line 246 "track.vala" + pos = (gint64) 0; +#line 1478 "track.c" + } +#line 248 "track.vala" + model_clip_set_start (c, pos); +#line 249 "track.vala" + model_track_do_clip_overwrite (self, c); +#line 251 "track.vala" + model_track_insert_clip_into_array (self, c, model_track_get_insert_index (self, model_clip_get_start (c))); +#line 252 "track.vala" + model_project_reseek (self->project); +#line 1488 "track.c" +} + + +#line 255 "track.vala" +void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select) { +#line 255 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 255 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 256 "track.vala" + if (!model_track_check (self, c)) { +#line 257 "track.vala" + return; +#line 1502 "track.c" + } +#line 259 "track.vala" + _model_track_move (self, c, pos); +#line 260 "track.vala" + g_signal_emit_by_name (self, "clip-added", c, select); +#line 1508 "track.c" +} + + +#line 263 "track.vala" +static void model_track_real_on_clip_updated (ModelTrack* self, ModelClip* clip) { +#line 263 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 263 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 264 "track.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_updated"); +#line 1520 "track.c" +} + + +#line 263 "track.vala" +void model_track_on_clip_updated (ModelTrack* self, ModelClip* clip) { +#line 263 "track.vala" + MODEL_TRACK_GET_CLASS (self)->on_clip_updated (self, clip); +#line 1528 "track.c" +} + + +#line 267 "track.vala" +void model_track_do_clip_paste (ModelTrack* self, ModelClip* clip, gint64 position) { +#line 267 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 267 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 268 "track.vala" + model_track_append_at_time (self, clip, position, TRUE); +#line 1540 "track.c" +} + + +#line 271 "track.vala" +ModelClip* model_track_get_clip (ModelTrack* self, gint i) { +#line 1546 "track.c" + ModelClip* result = NULL; + gboolean _tmp0_ = FALSE; +#line 271 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), NULL); +#line 272 "track.vala" + if (i < 0) { +#line 272 "track.vala" + _tmp0_ = TRUE; +#line 1555 "track.c" + } else { +#line 272 "track.vala" + _tmp0_ = i >= gee_collection_get_size (GEE_COLLECTION (self->clips)); +#line 1559 "track.c" + } +#line 272 "track.vala" + if (_tmp0_) { +#line 273 "track.vala" + g_error ("track.vala:273: get_clip: Invalid index! %d (%d)", i, gee_collection_get_size (GEE_COLLECTION (self->clips))); +#line 1565 "track.c" + } + result = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i); +#line 274 "track.vala" + return result; +#line 1570 "track.c" +} + + +#line 277 "track.vala" +gint model_track_get_clip_index (ModelTrack* self, ModelClip* c) { +#line 1576 "track.c" + gint result = 0; +#line 277 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0); +#line 277 "track.vala" + g_return_val_if_fail (MODEL_IS_CLIP (c), 0); +#line 1582 "track.c" + { + gint i; +#line 278 "track.vala" + i = 0; +#line 1587 "track.c" + { + gboolean _tmp0_; +#line 278 "track.vala" + _tmp0_ = TRUE; +#line 278 "track.vala" + while (TRUE) { +#line 1594 "track.c" + ModelClip* _tmp1_; + gboolean _tmp2_; +#line 278 "track.vala" + if (!_tmp0_) { +#line 278 "track.vala" + i++; +#line 1601 "track.c" + } +#line 278 "track.vala" + _tmp0_ = FALSE; +#line 278 "track.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) { +#line 278 "track.vala" + break; +#line 1609 "track.c" + } +#line 279 "track.vala" + if ((_tmp2_ = (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) == c, _g_object_unref0 (_tmp1_), _tmp2_)) { +#line 1613 "track.c" + result = i; +#line 280 "track.vala" + return result; +#line 1617 "track.c" + } + } + } + } + result = -1; +#line 283 "track.vala" + return result; +#line 1625 "track.c" +} + + +#line 286 "track.vala" +ModelClip* model_track_get_clip_by_position (ModelTrack* self, gint64 pos) { +#line 1631 "track.c" + ModelClip* result = NULL; + gint length; +#line 286 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), NULL); +#line 287 "track.vala" + length = gee_collection_get_size (GEE_COLLECTION (self->clips)); +#line 1638 "track.c" + { + gint i; +#line 289 "track.vala" + i = length - 1; +#line 1643 "track.c" + { + gboolean _tmp0_; +#line 289 "track.vala" + _tmp0_ = TRUE; +#line 289 "track.vala" + while (TRUE) { +#line 1650 "track.c" + ModelClip* _tmp1_; + gboolean _tmp2_; +#line 289 "track.vala" + if (!_tmp0_) { +#line 289 "track.vala" + i--; +#line 1657 "track.c" + } +#line 289 "track.vala" + _tmp0_ = FALSE; +#line 289 "track.vala" + if (!(i >= 0)) { +#line 289 "track.vala" + break; +#line 1665 "track.c" + } +#line 290 "track.vala" + if ((_tmp2_ = model_clip_get_start (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)) < pos, _g_object_unref0 (_tmp1_), _tmp2_)) { +#line 1669 "track.c" + ModelClip* _tmp3_; + ModelClip* _tmp4_; + gboolean _tmp5_; + _tmp3_ = NULL; +#line 291 "track.vala" + if ((_tmp5_ = pos >= model_clip_get_end (_tmp4_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i)), _g_object_unref0 (_tmp4_), _tmp5_)) { +#line 1676 "track.c" + ModelClip* _tmp6_; +#line 291 "track.vala" + _tmp3_ = (_tmp6_ = NULL, _g_object_unref0 (_tmp3_), _tmp6_); +#line 1680 "track.c" + } else { + ModelClip* _tmp7_; + _tmp3_ = (_tmp7_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i), _g_object_unref0 (_tmp3_), _tmp7_); + } + result = _tmp3_; +#line 291 "track.vala" + return result; +#line 1688 "track.c" + } + } + } + } + result = NULL; +#line 292 "track.vala" + return result; +#line 1696 "track.c" +} + + +#line 295 "track.vala" +gint64 model_track_get_length (ModelTrack* self) { +#line 1702 "track.c" + gint64 result = 0LL; + gint64 _tmp0_ = 0LL; +#line 295 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL); +#line 296 "track.vala" + if (gee_collection_get_size (GEE_COLLECTION (self->clips)) == 0) { +#line 296 "track.vala" + _tmp0_ = (gint64) 0; +#line 1711 "track.c" + } else { + ModelClip* _tmp2_; + ModelClip* _tmp1_; +#line 296 "track.vala" + _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)); +#line 1717 "track.c" + _g_object_unref0 (_tmp2_); + _g_object_unref0 (_tmp1_); + } + result = _tmp0_; +#line 296 "track.vala" + return result; +#line 1724 "track.c" +} + + +#line 299 "track.vala" +void _model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select) { +#line 299 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 299 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 300 "track.vala" + model_track_add (self, c, time, select); +#line 1736 "track.c" +} + + +#line 303 "track.vala" +void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select) { +#line 1742 "track.c" + ModelCommand* command; +#line 303 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 303 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 304 "track.vala" + command = MODEL_COMMAND (model_clip_command_new (MODEL_CLIP_COMMAND_ACTION_APPEND, self, c, time, select)); +#line 305 "track.vala" + model_project_do_command (self->project, command); +#line 1752 "track.c" + _model_command_unref0 (command); +} + + +#line 308 "track.vala" +void model_track_delete_clip (ModelTrack* self, ModelClip* clip) { +#line 1759 "track.c" + ModelCommand* clip_command; +#line 308 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 308 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 309 "track.vala" + clip_command = MODEL_COMMAND (model_clip_command_new (MODEL_CLIP_COMMAND_ACTION_DELETE, self, clip, model_clip_get_start (clip), FALSE)); +#line 311 "track.vala" + model_project_do_command (self->project, clip_command); +#line 1769 "track.c" + _model_command_unref0 (clip_command); +} + + +#line 314 "track.vala" +void _model_track_delete_clip (ModelTrack* self, ModelClip* clip) { +#line 1776 "track.c" + gint index; + ModelClip* _tmp0_; +#line 314 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 314 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 315 "track.vala" + index = model_track_get_clip_index (self, clip); +#line 316 "track.vala" + g_assert (index != (-1)); +#line 317 "track.vala" + _tmp0_ = (ModelClip*) gee_abstract_list_remove_at (GEE_ABSTRACT_LIST (self->clips), index); +#line 1789 "track.c" + _g_object_unref0 (_tmp0_); +#line 319 "track.vala" + g_signal_emit_by_name (clip, "removed", clip); +#line 320 "track.vala" + g_signal_emit_by_name (self, "clip-removed", clip); +#line 1795 "track.c" +} + + +#line 323 "track.vala" +void model_track_delete_gap (ModelTrack* self, ModelGap* g) { +#line 323 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 323 "track.vala" + g_return_if_fail (MODEL_IS_GAP (g)); +#line 324 "track.vala" + model_project_reseek (self->project); +#line 1807 "track.c" +} + + +#line 327 "track.vala" +void model_track_remove_clip_from_array (ModelTrack* self, ModelClip* pos) { +#line 327 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 327 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (pos)); +#line 328 "track.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->clips), pos); +#line 1819 "track.c" +} + + +#line 263 "track.vala" +static void _model_track_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self) { +#line 1825 "track.c" + model_track_on_clip_updated (self, clip); +} + + +#line 331 "track.vala" +static void model_track_insert_clip_into_array (ModelTrack* self, ModelClip* c, gint pos) { +#line 331 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 331 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 332 "track.vala" + g_signal_connect_object (c, "updated", (GCallback) _model_track_on_clip_updated_model_clip_updated, self, 0); +#line 333 "track.vala" + gee_abstract_list_insert (GEE_ABSTRACT_LIST (self->clips), pos, c); +#line 1840 "track.c" +} + + +#line 336 "track.vala" +void model_track_delete_all_clips (ModelTrack* self) { +#line 1846 "track.c" + guint size; +#line 336 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 337 "track.vala" + size = (guint) gee_collection_get_size (GEE_COLLECTION (self->clips)); +#line 1852 "track.c" + { + gint i; +#line 338 "track.vala" + i = 0; +#line 1857 "track.c" + { + gboolean _tmp0_; +#line 338 "track.vala" + _tmp0_ = TRUE; +#line 338 "track.vala" + while (TRUE) { +#line 1864 "track.c" + ModelClip* _tmp1_; +#line 338 "track.vala" + if (!_tmp0_) { +#line 338 "track.vala" + i++; +#line 1870 "track.c" + } +#line 338 "track.vala" + _tmp0_ = FALSE; +#line 338 "track.vala" + if (!(i < size)) { +#line 338 "track.vala" + break; +#line 1878 "track.c" + } +#line 339 "track.vala" + model_track_delete_clip (self, _tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), 0)); +#line 1882 "track.c" + _g_object_unref0 (_tmp1_); + } + } + } +#line 341 "track.vala" + view_media_engine_go (self->project->media_engine, (gint64) 0); +#line 1889 "track.c" +} + + +#line 344 "track.vala" +void model_track_revert_to_original (ModelTrack* self, ModelClip* clip) { +#line 1895 "track.c" + ModelCommand* command; +#line 344 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 344 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 345 "track.vala" + command = MODEL_COMMAND (model_clip_revert_command_new (self, clip)); +#line 346 "track.vala" + model_project_do_command (self->project, command); +#line 1905 "track.c" + _model_command_unref0 (command); +} + + +#line 349 "track.vala" +void _model_track_revert_to_original (ModelTrack* self, ModelClip* c) { +#line 1912 "track.c" + gint index; +#line 349 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 349 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (c)); +#line 350 "track.vala" + index = model_track_get_clip_index (self, c); +#line 351 "track.vala" + if (index == (-1)) { +#line 352 "track.vala" + g_error ("track.vala:352: revert_to_original: Clip not in track array!"); +#line 1924 "track.c" + } +#line 354 "track.vala" + model_clip_set_media_start_duration (c, (gint64) 0, model_clip_file_get_length (c->clipfile)); +#line 356 "track.vala" + view_media_engine_go (self->project->media_engine, model_clip_get_start (c)); +#line 1930 "track.c" +} + + +#line 359 "track.vala" +gboolean model_track_are_contiguous_clips (ModelTrack* self, gint64 position) { +#line 1936 "track.c" + gboolean result = FALSE; + ModelClip* right_clip; + ModelClip* left_clip; + gboolean _tmp0_ = FALSE; + gboolean _tmp1_ = FALSE; + gboolean _tmp2_ = FALSE; + gboolean _tmp3_ = FALSE; +#line 359 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE); +#line 360 "track.vala" + right_clip = model_track_get_clip_by_position (self, position + 1); +#line 361 "track.vala" + left_clip = model_track_get_clip_by_position (self, position - 1); +#line 363 "track.vala" + if (left_clip != NULL) { +#line 363 "track.vala" + _tmp3_ = right_clip != NULL; +#line 1954 "track.c" + } else { +#line 363 "track.vala" + _tmp3_ = FALSE; +#line 1958 "track.c" + } +#line 363 "track.vala" + if (_tmp3_) { +#line 364 "track.vala" + _tmp2_ = left_clip != right_clip; +#line 1964 "track.c" + } else { +#line 363 "track.vala" + _tmp2_ = FALSE; +#line 1968 "track.c" + } +#line 363 "track.vala" + if (_tmp2_) { +#line 365 "track.vala" + _tmp1_ = left_clip->clipfile == right_clip->clipfile; +#line 1974 "track.c" + } else { +#line 363 "track.vala" + _tmp1_ = FALSE; +#line 1978 "track.c" + } +#line 363 "track.vala" + if (_tmp1_) { +#line 366 "track.vala" + _tmp0_ = model_clip_get_end (left_clip) == model_clip_get_start (right_clip); +#line 1984 "track.c" + } else { +#line 363 "track.vala" + _tmp0_ = FALSE; +#line 1988 "track.c" + } + result = _tmp0_; + _g_object_unref0 (right_clip); + _g_object_unref0 (left_clip); +#line 363 "track.vala" + return result; +#line 1995 "track.c" +} + + +#line 369 "track.vala" +void model_track_split_at (ModelTrack* self, gint64 position) { +#line 2001 "track.c" + ModelCommand* command; +#line 369 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 370 "track.vala" + command = MODEL_COMMAND (model_clip_split_command_new (MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT, self, position)); +#line 371 "track.vala" + model_project_do_command (self->project, command); +#line 2009 "track.c" + _model_command_unref0 (command); +} + + +#line 374 "track.vala" +void _model_track_split_at (ModelTrack* self, gint64 position) { +#line 2016 "track.c" + ModelClip* c; + ModelClip* cn; +#line 374 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 375 "track.vala" + c = model_track_get_clip_by_position (self, position); +#line 376 "track.vala" + if (c == NULL) { +#line 2025 "track.c" + _g_object_unref0 (c); +#line 377 "track.vala" + return; +#line 2029 "track.c" + } +#line 379 "track.vala" + 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); +#line 383 "track.vala" + model_clip_set_duration (c, position - model_clip_get_start (c)); +#line 385 "track.vala" + model_track_add (self, cn, position, FALSE); +#line 2037 "track.c" + _g_object_unref0 (c); + _g_object_unref0 (cn); +} + + +#line 388 "track.vala" +void model_track_join (ModelTrack* self, gint64 position) { +#line 2045 "track.c" + ModelCommand* command; +#line 388 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 389 "track.vala" + command = MODEL_COMMAND (model_clip_split_command_new (MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN, self, position)); +#line 390 "track.vala" + model_project_do_command (self->project, command); +#line 2053 "track.c" + _model_command_unref0 (command); +} + + +#line 393 "track.vala" +void _model_track_join (ModelTrack* self, gint64 position) { +#line 393 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 394 "track.vala" + g_assert (model_track_are_contiguous_clips (self, position)); +#line 395 "track.vala" + if (model_track_are_contiguous_clips (self, position)) { +#line 2066 "track.c" + ModelClip* right_clip; + gint right_clip_index; + gint left_clip_index; + ModelClip* left_clip; +#line 396 "track.vala" + right_clip = model_track_get_clip_by_position (self, position + 1); +#line 397 "track.vala" + g_assert (right_clip != NULL); +#line 399 "track.vala" + right_clip_index = model_track_get_clip_index (self, right_clip); +#line 400 "track.vala" + g_assert (right_clip_index > 0); +#line 402 "track.vala" + left_clip_index = right_clip_index - 1; +#line 403 "track.vala" + left_clip = model_track_get_clip (self, left_clip_index); +#line 404 "track.vala" + g_assert (left_clip != NULL); +#line 405 "track.vala" + model_clip_set_duration (left_clip, model_clip_get_end (right_clip) - model_clip_get_start (left_clip)); +#line 406 "track.vala" + _model_track_delete_clip (self, right_clip); +#line 2089 "track.c" + _g_object_unref0 (right_clip); + _g_object_unref0 (left_clip); + } +} + + +#line 410 "track.vala" +void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge) { +#line 2098 "track.c" + ModelCommand* command; +#line 410 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 410 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 411 "track.vala" + command = MODEL_COMMAND (model_clip_trim_command_new (self, clip, delta, edge)); +#line 412 "track.vala" + model_project_do_command (self->project, command); +#line 2108 "track.c" + _model_command_unref0 (command); +} + + +#line 415 "track.vala" +void _model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge) { +#line 415 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 415 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 416 "track.vala" + model_clip_trim (clip, delta, edge); +#line 417 "track.vala" + model_track_do_clip_overwrite (self, clip); +#line 2123 "track.c" +} + + +#line 420 "track.vala" +gint64 model_track_previous_edit (ModelTrack* self, gint64 pos) { +#line 2129 "track.c" + gint64 result = 0LL; +#line 420 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL); +#line 2133 "track.c" + { + gint i; +#line 421 "track.vala" + i = gee_collection_get_size (GEE_COLLECTION (self->clips)) - 1; +#line 2138 "track.c" + { + gboolean _tmp0_; +#line 421 "track.vala" + _tmp0_ = TRUE; +#line 421 "track.vala" + while (TRUE) { +#line 2145 "track.c" + ModelClip* c; +#line 421 "track.vala" + if (!_tmp0_) { +#line 421 "track.vala" + i = i - 1; +#line 2151 "track.c" + } +#line 421 "track.vala" + _tmp0_ = FALSE; +#line 421 "track.vala" + if (!(i >= 0)) { +#line 421 "track.vala" + break; +#line 2159 "track.c" + } + c = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clips), i); +#line 423 "track.vala" + if (model_clip_get_end (c) < pos) { +#line 2164 "track.c" + result = model_clip_get_end (c); + _g_object_unref0 (c); +#line 424 "track.vala" + return result; +#line 2169 "track.c" + } +#line 425 "track.vala" + if (model_clip_get_start (c) < pos) { +#line 2173 "track.c" + result = model_clip_get_start (c); + _g_object_unref0 (c); +#line 426 "track.vala" + return result; +#line 2178 "track.c" + } + _g_object_unref0 (c); + } + } + } + result = (gint64) 0; +#line 428 "track.vala" + return result; +#line 2187 "track.c" +} + + +#line 431 "track.vala" +gint64 model_track_next_edit (ModelTrack* self, gint64 pos) { +#line 2193 "track.c" + gint64 result = 0LL; +#line 431 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), 0LL); +#line 2197 "track.c" + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clips)); +#line 432 "track.vala" + while (TRUE) { +#line 2203 "track.c" + ModelClip* c; +#line 432 "track.vala" + if (!gee_iterator_next (_c_it)) { +#line 432 "track.vala" + break; +#line 2209 "track.c" + } +#line 432 "track.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 433 "track.vala" + if (model_clip_get_start (c) > pos) { +#line 2215 "track.c" + result = model_clip_get_start (c); + _g_object_unref0 (c); + _g_object_unref0 (_c_it); +#line 434 "track.vala" + return result; +#line 2221 "track.c" + } else { +#line 435 "track.vala" + if (model_clip_get_end (c) > pos) { +#line 2225 "track.c" + result = model_clip_get_end (c); + _g_object_unref0 (c); + _g_object_unref0 (_c_it); +#line 436 "track.vala" + return result; +#line 2231 "track.c" + } + } + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } + result = model_track_get_length (self); +#line 437 "track.vala" + return result; +#line 2241 "track.c" +} + + +#line 440 "track.vala" +static void model_track_real_write_attributes (ModelTrack* self, FILE* f) { +#line 2247 "track.c" + char* _tmp1_; + char* _tmp0_; +#line 440 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 440 "track.vala" + g_return_if_fail (f != NULL); +#line 441 "track.vala" + fprintf (f, "type=\"%s\" name=\"%s\" ", _tmp0_ = model_track_name (self), _tmp1_ = model_track_get_display_name (self)); +#line 2256 "track.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +} + + +#line 440 "track.vala" +void model_track_write_attributes (ModelTrack* self, FILE* f) { +#line 440 "track.vala" + MODEL_TRACK_GET_CLASS (self)->write_attributes (self, f); +#line 2266 "track.c" +} + + +#line 444 "track.vala" +void model_track_save (ModelTrack* self, FILE* f) { +#line 444 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 444 "track.vala" + g_return_if_fail (f != NULL); +#line 445 "track.vala" + fprintf (f, " \n"); +#line 2282 "track.c" + { + gint i; +#line 448 "track.vala" + i = 0; +#line 2287 "track.c" + { + gboolean _tmp0_; +#line 448 "track.vala" + _tmp0_ = TRUE; +#line 448 "track.vala" + while (TRUE) { +#line 2294 "track.c" + ModelClip* _tmp2_; + ModelClip* _tmp1_; +#line 448 "track.vala" + if (!_tmp0_) { +#line 448 "track.vala" + i++; +#line 2301 "track.c" + } +#line 448 "track.vala" + _tmp0_ = FALSE; +#line 448 "track.vala" + if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clips)))) { +#line 448 "track.vala" + break; +#line 2309 "track.c" + } +#line 449 "track.vala" + 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)); +#line 2313 "track.c" + _g_object_unref0 (_tmp2_); + _g_object_unref0 (_tmp1_); + } + } + } +#line 450 "track.vala" + fputs (" \n", f); +#line 2321 "track.c" +} + + +#line 453 "track.vala" +char* model_track_get_display_name (ModelTrack* self) { +#line 2327 "track.c" + char* result = NULL; +#line 453 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), NULL); +#line 2331 "track.c" + result = g_strdup (self->display_name); +#line 454 "track.vala" + return result; +#line 2335 "track.c" +} + + +#line 457 "track.vala" +void model_track_set_display_name (ModelTrack* self, const char* new_display_name) { +#line 457 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 457 "track.vala" + g_return_if_fail (new_display_name != NULL); +#line 458 "track.vala" + if (_vala_strcmp0 (self->display_name, new_display_name) != 0) { +#line 2347 "track.c" + char* _tmp0_; +#line 459 "track.vala" + self->display_name = (_tmp0_ = g_strdup (new_display_name), _g_free0 (self->display_name), _tmp0_); +#line 460 "track.vala" + g_signal_emit_by_name (self, "track-renamed", self); +#line 2353 "track.c" + } +} + + +#line 464 "track.vala" +void model_track_set_selected (ModelTrack* self, gboolean is_selected) { +#line 464 "track.vala" + g_return_if_fail (MODEL_IS_TRACK (self)); +#line 465 "track.vala" + if (self->priv->is_selected != is_selected) { +#line 466 "track.vala" + self->priv->is_selected = is_selected; +#line 467 "track.vala" + g_signal_emit_by_name (self, "track-selection-changed", self); +#line 2368 "track.c" + } +} + + +#line 471 "track.vala" +gboolean model_track_get_is_selected (ModelTrack* self) { +#line 2375 "track.c" + gboolean result = FALSE; +#line 471 "track.vala" + g_return_val_if_fail (MODEL_IS_TRACK (self), FALSE); +#line 2379 "track.c" + result = self->priv->is_selected; +#line 472 "track.vala" + return result; +#line 2383 "track.c" +} + + +static void model_track_class_init (ModelTrackClass * klass) { + model_track_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelTrackPrivate)); + MODEL_TRACK_CLASS (klass)->name = model_track_real_name; + MODEL_TRACK_CLASS (klass)->media_type = model_track_real_media_type; + MODEL_TRACK_CLASS (klass)->check = model_track_real_check; + MODEL_TRACK_CLASS (klass)->on_clip_updated = model_track_real_on_clip_updated; + MODEL_TRACK_CLASS (klass)->write_attributes = model_track_real_write_attributes; + G_OBJECT_CLASS (klass)->finalize = model_track_finalize; + 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); + 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); + 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); + 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); + 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); + 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); + 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); +} + + +static void model_track_instance_init (ModelTrack * self) { + self->priv = MODEL_TRACK_GET_PRIVATE (self); + self->clips = gee_array_list_new (MODEL_TYPE_CLIP, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); +} + + +static void model_track_finalize (GObject* obj) { + ModelTrack * self; + self = MODEL_TRACK (obj); + _g_object_unref0 (self->clips); + _g_free0 (self->display_name); + G_OBJECT_CLASS (model_track_parent_class)->finalize (obj); +} + + +GType model_track_get_type (void) { + static volatile gsize model_track_type_id__volatile = 0; + if (g_once_init_enter (&model_track_type_id__volatile)) { + 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 }; + GType model_track_type_id; + model_track_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelTrack", &g_define_type_info, G_TYPE_FLAG_ABSTRACT); + g_once_init_leave (&model_track_type_id__volatile, model_track_type_id); + } + return model_track_type_id__volatile; +} + + +#line 487 "track.vala" +ModelAudioTrack* model_audio_track_construct (GType object_type, ModelProject* project, const char* display_name) { +#line 2435 "track.c" + ModelAudioTrack * self; +#line 487 "track.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 487 "track.vala" + g_return_val_if_fail (display_name != NULL, NULL); +#line 488 "track.vala" + self = (ModelAudioTrack*) model_track_construct (object_type, project, display_name); +#line 490 "track.vala" + model_audio_track_set_default_num_channels (self, MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT); +#line 491 "track.vala" + _model_audio_track_set_pan (self, (double) 0); +#line 492 "track.vala" + _model_audio_track_set_volume (self, 1.0); +#line 2449 "track.c" + return self; +} + + +#line 487 "track.vala" +ModelAudioTrack* model_audio_track_new (ModelProject* project, const char* display_name) { +#line 487 "track.vala" + return model_audio_track_construct (MODEL_TYPE_AUDIO_TRACK, project, display_name); +#line 2458 "track.c" +} + + +#line 495 "track.vala" +static char* model_audio_track_real_name (ModelTrack* base) { +#line 2464 "track.c" + ModelAudioTrack * self; + char* result = NULL; + self = MODEL_AUDIO_TRACK (base); + result = g_strdup ("audio"); +#line 495 "track.vala" + return result; +#line 2471 "track.c" +} + + +#line 497 "track.vala" +static ModelMediaType model_audio_track_real_media_type (ModelTrack* base) { +#line 2477 "track.c" + ModelAudioTrack * self; + ModelMediaType result = 0; + self = MODEL_AUDIO_TRACK (base); + result = MODEL_MEDIA_TYPE_AUDIO; +#line 498 "track.vala" + return result; +#line 2484 "track.c" +} + + +#line 501 "track.vala" +static void model_audio_track_real_write_attributes (ModelTrack* base, FILE* f) { +#line 2490 "track.c" + ModelAudioTrack * self; + gint channels = 0; + gboolean _tmp0_ = FALSE; + self = MODEL_AUDIO_TRACK (base); +#line 501 "track.vala" + g_return_if_fail (f != NULL); +#line 502 "track.vala" + MODEL_TRACK_CLASS (model_audio_track_parent_class)->write_attributes (MODEL_TRACK (self), f); +#line 503 "track.vala" + fprintf (f, "volume=\"%f\" panorama=\"%f\" ", model_audio_track_get_volume (self), model_audio_track_get_pan (self)); +#line 506 "track.vala" + if (model_audio_track_get_num_channels (self, &channels)) { +#line 507 "track.vala" + _tmp0_ = channels != MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT; +#line 2505 "track.c" + } else { +#line 506 "track.vala" + _tmp0_ = FALSE; +#line 2509 "track.c" + } +#line 506 "track.vala" + if (_tmp0_) { +#line 508 "track.vala" + fprintf (f, "channels=\"%d\" ", channels); +#line 2515 "track.c" + } +} + + +#line 511 "track.vala" +void model_audio_track_set_pan (ModelAudioTrack* self, double new_value) { +#line 2522 "track.c" + double old_value; +#line 511 "track.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (self)); +#line 512 "track.vala" + old_value = model_audio_track_get_pan (self); +#line 513 "track.vala" + if (!float_within (new_value - old_value, 0.05)) { +#line 2530 "track.c" + ModelParameterCommand* parameter_command; +#line 515 "track.vala" + parameter_command = model_parameter_command_new (self, MODEL_PARAMETER_PAN, new_value, old_value); +#line 516 "track.vala" + model_project_do_command (MODEL_TRACK (self)->project, MODEL_COMMAND (parameter_command)); +#line 2536 "track.c" + _model_command_unref0 (parameter_command); + } +} + + +#line 520 "track.vala" +void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value) { +#line 2544 "track.c" + double old_value; +#line 520 "track.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (self)); +#line 521 "track.vala" + g_assert ((new_value <= 1.0) && (new_value >= (-1.0))); +#line 522 "track.vala" + old_value = model_audio_track_get_pan (self); +#line 523 "track.vala" + if (!float_within (old_value - new_value, 0.05)) { +#line 524 "track.vala" + self->priv->pan = new_value; +#line 525 "track.vala" + g_signal_emit_by_name (self, "parameter-changed", MODEL_PARAMETER_PAN, new_value); +#line 2558 "track.c" + } +} + + +#line 529 "track.vala" +double model_audio_track_get_pan (ModelAudioTrack* self) { +#line 2565 "track.c" + double result = 0.0; +#line 529 "track.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (self), 0.0); +#line 2569 "track.c" + result = self->priv->pan; +#line 530 "track.vala" + return result; +#line 2573 "track.c" +} + + +#line 533 "track.vala" +void model_audio_track_set_volume (ModelAudioTrack* self, double new_volume) { +#line 2579 "track.c" + double old_volume; +#line 533 "track.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (self)); +#line 534 "track.vala" + old_volume = model_audio_track_get_volume (self); +#line 535 "track.vala" + if (!float_within (old_volume - new_volume, 0.005)) { +#line 2587 "track.c" + ModelParameterCommand* parameter_command; +#line 537 "track.vala" + parameter_command = model_parameter_command_new (self, MODEL_PARAMETER_VOLUME, new_volume, old_volume); +#line 538 "track.vala" + model_project_do_command (MODEL_TRACK (self)->project, MODEL_COMMAND (parameter_command)); +#line 2593 "track.c" + _model_command_unref0 (parameter_command); + } +} + + +#line 542 "track.vala" +void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume) { +#line 2601 "track.c" + double old_volume; +#line 542 "track.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (self)); +#line 543 "track.vala" + g_assert ((new_volume >= 0.0) && (new_volume <= 10.0)); +#line 544 "track.vala" + old_volume = model_audio_track_get_volume (self); +#line 545 "track.vala" + if (!float_within (old_volume - new_volume, 0.005)) { +#line 546 "track.vala" + self->priv->volume = new_volume; +#line 547 "track.vala" + g_signal_emit_by_name (self, "parameter-changed", MODEL_PARAMETER_VOLUME, new_volume); +#line 2615 "track.c" + } +} + + +#line 551 "track.vala" +double model_audio_track_get_volume (ModelAudioTrack* self) { +#line 2622 "track.c" + double result = 0.0; +#line 551 "track.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (self), 0.0); +#line 2626 "track.c" + result = self->priv->volume; +#line 552 "track.vala" + return result; +#line 2630 "track.c" +} + + +#line 555 "track.vala" +void model_audio_track_set_default_num_channels (ModelAudioTrack* self, gint num) { +#line 555 "track.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (self)); +#line 556 "track.vala" + self->priv->default_num_channels = num; +#line 2640 "track.c" +} + + +#line 559 "track.vala" +gboolean model_audio_track_get_num_channels (ModelAudioTrack* self, gint* num) { +#line 2646 "track.c" + gboolean result = FALSE; +#line 559 "track.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (self), FALSE); +#line 560 "track.vala" + if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) { +#line 2652 "track.c" + result = FALSE; +#line 561 "track.vala" + return result; +#line 2656 "track.c" + } + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_TRACK (self)->clips)); +#line 563 "track.vala" + while (TRUE) { +#line 2663 "track.c" + ModelClip* c; +#line 563 "track.vala" + if (!gee_iterator_next (_c_it)) { +#line 563 "track.vala" + break; +#line 2669 "track.c" + } +#line 563 "track.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 564 "track.vala" + if (model_clip_file_is_online (c->clipfile)) { +#line 2675 "track.c" + gboolean can; +#line 565 "track.vala" + can = model_clip_file_get_num_channels (c->clipfile, num); +#line 566 "track.vala" + g_assert (can); +#line 2681 "track.c" + result = can; + _g_object_unref0 (c); + _g_object_unref0 (_c_it); +#line 568 "track.vala" + return result; +#line 2687 "track.c" + } + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } +#line 572 "track.vala" + if (self->priv->default_num_channels == MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT) { +#line 2695 "track.c" + result = FALSE; +#line 573 "track.vala" + return result; +#line 2699 "track.c" + } +#line 575 "track.vala" + *num = self->priv->default_num_channels; +#line 2703 "track.c" + result = TRUE; +#line 576 "track.vala" + return result; +#line 2707 "track.c" +} + + +#line 579 "track.vala" +static gboolean model_audio_track_real_check (ModelTrack* base, ModelClip* clip) { +#line 2713 "track.c" + ModelAudioTrack * self; + gboolean result = FALSE; + gboolean good; + gint number_of_channels = 0; + self = MODEL_AUDIO_TRACK (base); +#line 579 "track.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), FALSE); +#line 580 "track.vala" + if (!model_clip_file_is_online (clip->clipfile)) { +#line 2723 "track.c" + result = TRUE; +#line 581 "track.vala" + return result; +#line 2727 "track.c" + } +#line 584 "track.vala" + if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) { +#line 2731 "track.c" + gint number_of_channels; +#line 585 "track.vala" + number_of_channels = 0; +#line 586 "track.vala" + if (model_clip_file_get_num_channels (clip->clipfile, &number_of_channels)) { +#line 587 "track.vala" + g_signal_emit_by_name (self, "channel-count-changed", number_of_channels); +#line 2739 "track.c" + } + result = TRUE; +#line 589 "track.vala" + return result; +#line 2744 "track.c" + } +#line 592 "track.vala" + good = FALSE; +#line 594 "track.vala" + if (model_clip_file_get_num_channels (clip->clipfile, &number_of_channels)) { +#line 2750 "track.c" + gint track_channel_count = 0; +#line 596 "track.vala" + if (model_audio_track_get_num_channels (self, &track_channel_count)) { +#line 597 "track.vala" + good = track_channel_count == number_of_channels; +#line 2756 "track.c" + } + } +#line 601 "track.vala" + if (!good) { +#line 2761 "track.c" + const char* _tmp0_; + char* sub_error; + _tmp0_ = NULL; +#line 602 "track.vala" + if (number_of_channels == 1) { +#line 603 "track.vala" + _tmp0_ = "Mono clips cannot go on stereo tracks."; +#line 2769 "track.c" + } else { +#line 604 "track.vala" + _tmp0_ = "Stereo clips cannot go on mono tracks."; +#line 2773 "track.c" + } +#line 602 "track.vala" + sub_error = g_strdup (_tmp0_); +#line 605 "track.vala" + g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "Cannot add clip to track", sub_error); +#line 2779 "track.c" + _g_free0 (sub_error); + } + result = good; +#line 607 "track.vala" + return result; +#line 2785 "track.c" +} + + +#line 610 "track.vala" +void model_audio_track_on_level_changed (ModelAudioTrack* self, double level_left, double level_right) { +#line 610 "track.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (self)); +#line 611 "track.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_level_changed"); +#line 612 "track.vala" + g_signal_emit_by_name (self, "level-changed", level_left, level_right); +#line 2797 "track.c" +} + + +#line 615 "track.vala" +static void model_audio_track_real_on_clip_updated (ModelTrack* base, ModelClip* clip) { +#line 2803 "track.c" + ModelAudioTrack * self; + self = MODEL_AUDIO_TRACK (base); +#line 615 "track.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 616 "track.vala" + if (model_clip_file_is_online (clip->clipfile)) { +#line 2810 "track.c" + gint number_of_channels; +#line 617 "track.vala" + number_of_channels = 0; +#line 618 "track.vala" + if (model_audio_track_get_num_channels (self, &number_of_channels)) { +#line 619 "track.vala" + g_signal_emit_by_name (self, "channel-count-changed", number_of_channels); +#line 2818 "track.c" + } + } +} + + +static void model_audio_track_class_init (ModelAudioTrackClass * klass) { + model_audio_track_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelAudioTrackPrivate)); + MODEL_TRACK_CLASS (klass)->name = model_audio_track_real_name; + MODEL_TRACK_CLASS (klass)->media_type = model_audio_track_real_media_type; + MODEL_TRACK_CLASS (klass)->write_attributes = model_audio_track_real_write_attributes; + MODEL_TRACK_CLASS (klass)->check = model_audio_track_real_check; + MODEL_TRACK_CLASS (klass)->on_clip_updated = model_audio_track_real_on_clip_updated; + G_OBJECT_CLASS (klass)->finalize = model_audio_track_finalize; + 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); + 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); + 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); +} + + +static void model_audio_track_instance_init (ModelAudioTrack * self) { + self->priv = MODEL_AUDIO_TRACK_GET_PRIVATE (self); +} + + +static void model_audio_track_finalize (GObject* obj) { + ModelAudioTrack * self; + self = MODEL_AUDIO_TRACK (obj); + G_OBJECT_CLASS (model_audio_track_parent_class)->finalize (obj); +} + + +GType model_audio_track_get_type (void) { + static volatile gsize model_audio_track_type_id__volatile = 0; + if (g_once_init_enter (&model_audio_track_type_id__volatile)) { + 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 }; + GType model_audio_track_type_id; + model_audio_track_type_id = g_type_register_static (MODEL_TYPE_TRACK, "ModelAudioTrack", &g_define_type_info, 0); + g_once_init_leave (&model_audio_track_type_id__volatile, model_audio_track_type_id); + } + return model_audio_track_type_id__volatile; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + +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) { + typedef void (*GMarshalFunc_VOID__OBJECT_BOOLEAN) (gpointer data1, gpointer arg_1, gboolean arg_2, gpointer data2); + register GMarshalFunc_VOID__OBJECT_BOOLEAN callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__OBJECT_BOOLEAN) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_object (param_values + 1), g_value_get_boolean (param_values + 2), data2); +} + + +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) { + typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2); + register GMarshalFunc_VOID__STRING_STRING callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2); +} + + +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) { + typedef void (*GMarshalFunc_VOID__ENUM_DOUBLE) (gpointer data1, gint arg_1, double arg_2, gpointer data2); + register GMarshalFunc_VOID__ENUM_DOUBLE callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__ENUM_DOUBLE) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_enum (param_values + 1), g_value_get_double (param_values + 2), data2); +} + + +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) { + typedef void (*GMarshalFunc_VOID__DOUBLE_DOUBLE) (gpointer data1, double arg_1, double arg_2, gpointer data2); + register GMarshalFunc_VOID__DOUBLE_DOUBLE callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__DOUBLE_DOUBLE) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_double (param_values + 1), g_value_get_double (param_values + 2), data2); +} + + + diff --git a/src/marina/marina/track.o b/src/marina/marina/track.o new file mode 100644 index 0000000000000000000000000000000000000000..b695006074c99c0bd2a8f8426b30b23fc009a81a GIT binary patch literal 138692 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 GKK6gIOFc~h literal 0 HcmV?d00001 diff --git a/src/marina/marina/ui_clip.c b/src/marina/marina/ui_clip.c new file mode 100644 index 0000000..02ec30d --- /dev/null +++ b/src/marina/marina/ui_clip.c @@ -0,0 +1,1334 @@ +/* ui_clip.c generated by valac, the Vala compiler + * generated from ui_clip.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_GAP_VIEW (gap_view_get_type ()) +#define GAP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GAP_VIEW, GapView)) +#define GAP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GAP_VIEW, GapViewClass)) +#define IS_GAP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GAP_VIEW)) +#define IS_GAP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GAP_VIEW)) +#define GAP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_GAP_VIEW, GapViewClass)) + +typedef struct _GapView GapView; +typedef struct _GapViewClass GapViewClass; +typedef struct _GapViewPrivate GapViewPrivate; + +#define MODEL_TYPE_GAP (model_gap_get_type ()) +#define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap)) +#define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass)) +#define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP)) +#define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP)) +#define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass)) + +typedef struct _ModelGap ModelGap; +typedef struct _ModelGapClass ModelGapClass; +#define _model_gap_unref0(var) ((var == NULL) ? NULL : (var = (model_gap_unref (var), NULL))) + +#define TYPE_CLIP_VIEW (clip_view_get_type ()) +#define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView)) +#define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass)) +#define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW)) +#define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW)) +#define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass)) + +typedef struct _ClipView ClipView; +typedef struct _ClipViewClass ClipViewClass; +typedef struct _ClipViewPrivate ClipViewPrivate; + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; + +#define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ()) +#define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate)) +#define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE)) +#define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface)) + +typedef struct _TransportDelegate TransportDelegate; +typedef struct _TransportDelegateIface TransportDelegateIface; + +#define CLIP_VIEW_TYPE_MOTION_MODE (clip_view_motion_mode_get_type ()) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +#define _g_free0(var) (var = (g_free (var), NULL)) + +struct _GapView { + GtkDrawingArea parent_instance; + GapViewPrivate * priv; + ModelGap* gap; +}; + +struct _GapViewClass { + GtkDrawingAreaClass parent_class; +}; + +struct _GapViewPrivate { + GdkColor fill_color; +}; + +struct _ClipView { + GtkDrawingArea parent_instance; + ClipViewPrivate * priv; + ModelClip* clip; + gint64 initial_time; + gboolean is_selected; + gint height; +}; + +struct _ClipViewClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +struct _TransportDelegateIface { + GTypeInterface parent_iface; + gboolean (*is_playing) (TransportDelegate* self); + gboolean (*is_recording) (TransportDelegate* self); + gboolean (*is_stopped) (TransportDelegate* self); +}; + +typedef enum { + CLIP_VIEW_MOTION_MODE_NONE, + CLIP_VIEW_MOTION_MODE_DRAGGING, + CLIP_VIEW_MOTION_MODE_LEFT_TRIM, + CLIP_VIEW_MOTION_MODE_RIGHT_TRIM +} ClipViewMotionMode; + +struct _ClipViewPrivate { + ModelTimeSystem* time_provider; + TransportDelegate* transport_delegate; + GdkColor color_black; + GdkColor color_normal; + GdkColor color_selected; + gint drag_point; + gint snap_amount; + gboolean snapped; + ClipViewMotionMode motion_mode; + gboolean button_down; + gboolean pending_selection; +}; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +static gpointer gap_view_parent_class = NULL; +extern GtkMenu* clip_view_context_menu; +GtkMenu* clip_view_context_menu = NULL; +static GdkCursor* clip_view_left_trim_cursor; +static GdkCursor* clip_view_left_trim_cursor = NULL; +static GdkCursor* clip_view_right_trim_cursor; +static GdkCursor* clip_view_right_trim_cursor = NULL; +static GdkCursor* clip_view_hand_cursor; +static GdkCursor* clip_view_hand_cursor = NULL; +static GdkCursor* clip_view_plus_cursor; +static GdkCursor* clip_view_plus_cursor = NULL; +static gpointer clip_view_parent_class = NULL; + +GType gap_view_get_type (void); +gpointer model_gap_ref (gpointer instance); +void model_gap_unref (gpointer instance); +GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_gap (GValue* value, gpointer v_object); +void model_value_take_gap (GValue* value, gpointer v_object); +gpointer model_value_get_gap (const GValue* value); +GType model_gap_get_type (void); +#define GAP_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_GAP_VIEW, GapViewPrivate)) +enum { + GAP_VIEW_DUMMY_PROPERTY +}; +ModelGap* model_gap_new (gint64 start, gint64 end); +ModelGap* model_gap_construct (GType object_type, gint64 start, gint64 end); +GapView* gap_view_new (gint64 start, gint64 length, gint width, gint height); +GapView* gap_view_construct (GType object_type, gint64 start, gint64 length, gint width, gint height); +void gap_view_remove (GapView* self); +void gap_view_unselect (GapView* self); +void draw_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +static gboolean gap_view_real_expose_event (GtkWidget* base, GdkEventExpose* e); +static void gap_view_finalize (GObject* obj); +GType clip_view_get_type (void); +GType model_clip_get_type (void); +GType model_time_system_get_type (void); +GType transport_delegate_get_type (void); +static GType clip_view_motion_mode_get_type (void) G_GNUC_UNUSED; +#define CLIP_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CLIP_VIEW, ClipViewPrivate)) +enum { + CLIP_VIEW_DUMMY_PROPERTY +}; +#define CLIP_VIEW_MIN_DRAG 5 +#define CLIP_VIEW_TRIM_WIDTH 10 +#define CLIP_VIEW_SNAP_DELTA 10 +void clip_view_on_clip_moved (ClipView* self, ModelClip* clip); +static void _clip_view_on_clip_moved_model_clip_moved (ModelClip* _sender, ModelClip* clip, gpointer self); +static void clip_view_on_clip_updated (ClipView* self); +static void _clip_view_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self); +static void clip_view_get_clip_colors (ClipView* self); +void clip_view_adjust_size (ClipView* self, gint height); +ClipView* clip_view_new (TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height); +ClipView* clip_view_construct (GType object_type, TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height); +GType model_clip_file_get_type (void); +GType model_media_type_get_type (void); +gboolean model_clip_file_is_online (ModelClipFile* self); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time); +gint64 model_clip_get_start (ModelClip* self); +gint64 model_clip_get_duration (ModelClip* self); +void clip_view_delete_clip (ClipView* self); +gint64 model_clip_get_media_start (ModelClip* self); +gint64 model_clip_file_get_length (ModelClipFile* self); +void draw_left_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_right_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_square_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x, gint y, gint width, gint height); +void clip_view_draw (ClipView* self); +static gboolean clip_view_real_expose_event (GtkWidget* base, GdkEventExpose* event); +gboolean transport_delegate_is_stopped (TransportDelegate* self); +static gboolean clip_view_is_left_trim (ClipView* self, double x, double y); +static gboolean clip_view_is_right_trim (ClipView* self, double x, double y); +static gboolean clip_view_real_button_press_event (GtkWidget* base, GdkEventButton* event); +gint64 model_time_system_xsize_to_time (ModelTimeSystem* self, gint x); +static gboolean clip_view_real_button_release_event (GtkWidget* base, GdkEventButton* event); +void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge); +static gboolean clip_view_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event); +static gboolean clip_view_is_trim_height (ClipView* self, double y); +void clip_view_select (ClipView* self); +gint model_time_system_time_to_xsize (ModelTimeSystem* self, gint64 time); +void clip_view_snap (ClipView* self, gint64 amount); +static void clip_view_finalize (GObject* obj); + + +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); +static void g_cclosure_user_marshal_VOID__OBJECT_INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); +static void g_cclosure_user_marshal_VOID__OBJECT_ENUM (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); + +#line 13 "ui_clip.vala" +GapView* gap_view_construct (GType object_type, gint64 start, gint64 length, gint width, gint height) { +#line 305 "ui_clip.c" + GapView * self; + ModelGap* _tmp0_; + self = g_object_newv (object_type, 0, NULL); +#line 15 "ui_clip.vala" + self->gap = (_tmp0_ = model_gap_new (start, start + length), _model_gap_unref0 (self->gap), _tmp0_); +#line 17 "ui_clip.vala" + gdk_color_parse ("#777", &self->priv->fill_color); +#line 19 "ui_clip.vala" + GTK_WIDGET_SET_FLAGS (GTK_WIDGET (self), GTK_NO_WINDOW); +#line 21 "ui_clip.vala" + gtk_widget_set_size_request (GTK_WIDGET (self), width, height); +#line 317 "ui_clip.c" + return self; +} + + +#line 13 "ui_clip.vala" +GapView* gap_view_new (gint64 start, gint64 length, gint width, gint height) { +#line 13 "ui_clip.vala" + return gap_view_construct (TYPE_GAP_VIEW, start, length, width, height); +#line 326 "ui_clip.c" +} + + +#line 27 "ui_clip.vala" +void gap_view_remove (GapView* self) { +#line 27 "ui_clip.vala" + g_return_if_fail (IS_GAP_VIEW (self)); +#line 28 "ui_clip.vala" + g_signal_emit_by_name (self, "removed", self); +#line 336 "ui_clip.c" +} + + +#line 31 "ui_clip.vala" +void gap_view_unselect (GapView* self) { +#line 31 "ui_clip.vala" + g_return_if_fail (IS_GAP_VIEW (self)); +#line 32 "ui_clip.vala" + g_signal_emit_by_name (self, "unselected", self); +#line 346 "ui_clip.c" +} + + +#line 35 "ui_clip.vala" +static gboolean gap_view_real_expose_event (GtkWidget* base, GdkEventExpose* e) { +#line 352 "ui_clip.c" + GapView * self; + gboolean result = FALSE; + self = GAP_VIEW (base); +#line 36 "ui_clip.vala" + draw_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->fill_color, TRUE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1); +#line 358 "ui_clip.c" + result = TRUE; +#line 38 "ui_clip.vala" + return result; +#line 362 "ui_clip.c" +} + + +static void gap_view_class_init (GapViewClass * klass) { + gap_view_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (GapViewPrivate)); + GTK_WIDGET_CLASS (klass)->expose_event = gap_view_real_expose_event; + G_OBJECT_CLASS (klass)->finalize = gap_view_finalize; + g_signal_new ("removed", TYPE_GAP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_GAP_VIEW); + g_signal_new ("unselected", TYPE_GAP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_GAP_VIEW); +} + + +static void gap_view_instance_init (GapView * self) { + self->priv = GAP_VIEW_GET_PRIVATE (self); +} + + +static void gap_view_finalize (GObject* obj) { + GapView * self; + self = GAP_VIEW (obj); + _model_gap_unref0 (self->gap); + G_OBJECT_CLASS (gap_view_parent_class)->finalize (obj); +} + + +GType gap_view_get_type (void) { + static volatile gsize gap_view_type_id__volatile = 0; + if (g_once_init_enter (&gap_view_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (GapViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gap_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GapView), 0, (GInstanceInitFunc) gap_view_instance_init, NULL }; + GType gap_view_type_id; + gap_view_type_id = g_type_register_static (GTK_TYPE_DRAWING_AREA, "GapView", &g_define_type_info, 0); + g_once_init_leave (&gap_view_type_id__volatile, gap_view_type_id); + } + return gap_view_type_id__volatile; +} + + +static GType clip_view_motion_mode_get_type (void) { + static volatile gsize clip_view_motion_mode_type_id__volatile = 0; + if (g_once_init_enter (&clip_view_motion_mode_type_id__volatile)) { + static const GEnumValue values[] = {{CLIP_VIEW_MOTION_MODE_NONE, "CLIP_VIEW_MOTION_MODE_NONE", "none"}, {CLIP_VIEW_MOTION_MODE_DRAGGING, "CLIP_VIEW_MOTION_MODE_DRAGGING", "dragging"}, {CLIP_VIEW_MOTION_MODE_LEFT_TRIM, "CLIP_VIEW_MOTION_MODE_LEFT_TRIM", "left-trim"}, {CLIP_VIEW_MOTION_MODE_RIGHT_TRIM, "CLIP_VIEW_MOTION_MODE_RIGHT_TRIM", "right-trim"}, {0, NULL, NULL}}; + GType clip_view_motion_mode_type_id; + clip_view_motion_mode_type_id = g_enum_register_static ("ClipViewMotionMode", values); + g_once_init_leave (&clip_view_motion_mode_type_id__volatile, clip_view_motion_mode_type_id); + } + return clip_view_motion_mode_type_id__volatile; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 132 "ui_clip.vala" +static void _clip_view_on_clip_moved_model_clip_moved (ModelClip* _sender, ModelClip* clip, gpointer self) { +#line 420 "ui_clip.c" + clip_view_on_clip_moved (self, clip); +} + + +#line 117 "ui_clip.vala" +static void _clip_view_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self) { +#line 427 "ui_clip.c" + clip_view_on_clip_updated (self); +} + + +#line 86 "ui_clip.vala" +ClipView* clip_view_construct (GType object_type, TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height) { +#line 434 "ui_clip.c" + ClipView * self; + TransportDelegate* _tmp0_; + ModelClip* _tmp1_; +#line 86 "ui_clip.vala" + g_return_val_if_fail (IS_TRANSPORT_DELEGATE (transport_delegate), NULL); +#line 86 "ui_clip.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 86 "ui_clip.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (time_provider), NULL); +#line 444 "ui_clip.c" + self = g_object_newv (object_type, 0, NULL); +#line 88 "ui_clip.vala" + self->priv->transport_delegate = (_tmp0_ = _g_object_ref0 (transport_delegate), _g_object_unref0 (self->priv->transport_delegate), _tmp0_); +#line 89 "ui_clip.vala" + self->clip = (_tmp1_ = _g_object_ref0 (clip), _g_object_unref0 (self->clip), _tmp1_); +#line 90 "ui_clip.vala" + self->priv->time_provider = time_provider; +#line 91 "ui_clip.vala" + self->height = height; +#line 92 "ui_clip.vala" + self->is_selected = FALSE; +#line 94 "ui_clip.vala" + g_signal_connect_object (clip, "moved", (GCallback) _clip_view_on_clip_moved_model_clip_moved, self, 0); +#line 95 "ui_clip.vala" + g_signal_connect_object (clip, "updated", (GCallback) _clip_view_on_clip_updated_model_clip_updated, self, 0); +#line 97 "ui_clip.vala" + gdk_color_parse ("000", &self->priv->color_black); +#line 98 "ui_clip.vala" + clip_view_get_clip_colors (self); +#line 100 "ui_clip.vala" + GTK_WIDGET_SET_FLAGS (GTK_WIDGET (self), GTK_NO_WINDOW); +#line 102 "ui_clip.vala" + clip_view_adjust_size (self, height); +#line 468 "ui_clip.c" + return self; +} + + +#line 86 "ui_clip.vala" +ClipView* clip_view_new (TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height) { +#line 86 "ui_clip.vala" + return clip_view_construct (TYPE_CLIP_VIEW, transport_delegate, clip, time_provider, height); +#line 477 "ui_clip.c" +} + + +#line 105 "ui_clip.vala" +static void clip_view_get_clip_colors (ClipView* self) { +#line 105 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 106 "ui_clip.vala" + if (model_clip_file_is_online (self->clip->clipfile)) { +#line 487 "ui_clip.c" + const char* _tmp0_; + const char* _tmp1_; + _tmp0_ = NULL; +#line 107 "ui_clip.vala" + if (self->clip->type == MODEL_MEDIA_TYPE_VIDEO) { +#line 107 "ui_clip.vala" + _tmp0_ = "#d82"; +#line 495 "ui_clip.c" + } else { +#line 107 "ui_clip.vala" + _tmp0_ = "#84a"; +#line 499 "ui_clip.c" + } +#line 107 "ui_clip.vala" + gdk_color_parse (_tmp0_, &self->priv->color_selected); +#line 503 "ui_clip.c" + _tmp1_ = NULL; +#line 109 "ui_clip.vala" + if (self->clip->type == MODEL_MEDIA_TYPE_VIDEO) { +#line 109 "ui_clip.vala" + _tmp1_ = "#da5"; +#line 509 "ui_clip.c" + } else { +#line 109 "ui_clip.vala" + _tmp1_ = "#b9d"; +#line 513 "ui_clip.c" + } +#line 109 "ui_clip.vala" + gdk_color_parse (_tmp1_, &self->priv->color_normal); +#line 517 "ui_clip.c" + } else { +#line 112 "ui_clip.vala" + gdk_color_parse ("red", &self->priv->color_selected); +#line 113 "ui_clip.vala" + gdk_color_parse ("#AA0000", &self->priv->color_normal); +#line 523 "ui_clip.c" + } +} + + +#line 117 "ui_clip.vala" +static void clip_view_on_clip_updated (ClipView* self) { +#line 117 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 118 "ui_clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_updated"); +#line 119 "ui_clip.vala" + clip_view_get_clip_colors (self); +#line 120 "ui_clip.vala" + gtk_widget_queue_draw (GTK_WIDGET (self)); +#line 538 "ui_clip.c" +} + + +#line 126 "ui_clip.vala" +void clip_view_adjust_size (ClipView* self, gint height) { +#line 544 "ui_clip.c" + gint width; +#line 126 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 127 "ui_clip.vala" + width = model_time_system_time_to_xpos (self->priv->time_provider, model_clip_get_start (self->clip) + model_clip_get_duration (self->clip)) - model_time_system_time_to_xpos (self->priv->time_provider, model_clip_get_start (self->clip)); +#line 129 "ui_clip.vala" + gtk_widget_set_size_request (GTK_WIDGET (self), width + 1, height); +#line 552 "ui_clip.c" +} + + +#line 132 "ui_clip.vala" +void clip_view_on_clip_moved (ClipView* self, ModelClip* clip) { +#line 132 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 132 "ui_clip.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 133 "ui_clip.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_moved"); +#line 134 "ui_clip.vala" + clip_view_adjust_size (self, self->height); +#line 135 "ui_clip.vala" + g_signal_emit_by_name (self, "clip-moved", self); +#line 568 "ui_clip.c" +} + + +#line 138 "ui_clip.vala" +void clip_view_delete_clip (ClipView* self) { +#line 138 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 139 "ui_clip.vala" + g_signal_emit_by_name (self, "clip-deleted", self->clip); +#line 578 "ui_clip.c" +} + + +#line 142 "ui_clip.vala" +void clip_view_draw (ClipView* self) { +#line 584 "ui_clip.c" + GdkColor _tmp0_ = {0}; + GdkColor fill; + gboolean _tmp1_ = FALSE; + gboolean left_trimmed; + gboolean _tmp2_ = FALSE; + gboolean right_trimmed; + gboolean _tmp3_ = FALSE; + GdkGC* gc; + GdkRectangle _tmp6_ = {0}; + GdkRectangle r; + PangoLayout* layout; + gint width = 0; + gint height = 0; +#line 142 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 143 "ui_clip.vala" + if (self->is_selected) { +#line 143 "ui_clip.vala" + _tmp0_ = self->priv->color_selected; +#line 604 "ui_clip.c" + } else { +#line 143 "ui_clip.vala" + _tmp0_ = self->priv->color_normal; +#line 608 "ui_clip.c" + } +#line 143 "ui_clip.vala" + fill = _tmp0_; +#line 145 "ui_clip.vala" + if (model_clip_get_media_start (self->clip) != 0) { +#line 145 "ui_clip.vala" + _tmp1_ = !self->clip->is_recording; +#line 616 "ui_clip.c" + } else { +#line 145 "ui_clip.vala" + _tmp1_ = FALSE; +#line 620 "ui_clip.c" + } +#line 145 "ui_clip.vala" + left_trimmed = _tmp1_; +#line 147 "ui_clip.vala" + if (model_clip_file_is_online (self->clip->clipfile)) { +#line 148 "ui_clip.vala" + _tmp2_ = (model_clip_get_media_start (self->clip) + model_clip_get_duration (self->clip)) != model_clip_file_get_length (self->clip->clipfile); +#line 628 "ui_clip.c" + } else { +#line 148 "ui_clip.vala" + _tmp2_ = FALSE; +#line 632 "ui_clip.c" + } +#line 147 "ui_clip.vala" + right_trimmed = _tmp2_; +#line 150 "ui_clip.vala" + if (!left_trimmed) { +#line 150 "ui_clip.vala" + _tmp3_ = !right_trimmed; +#line 640 "ui_clip.c" + } else { +#line 150 "ui_clip.vala" + _tmp3_ = FALSE; +#line 644 "ui_clip.c" + } +#line 150 "ui_clip.vala" + if (_tmp3_) { +#line 151 "ui_clip.vala" + draw_rounded_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2); +#line 153 "ui_clip.vala" + draw_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1); +#line 652 "ui_clip.c" + } else { + gboolean _tmp4_ = FALSE; +#line 156 "ui_clip.vala" + if (!left_trimmed) { +#line 156 "ui_clip.vala" + _tmp4_ = right_trimmed; +#line 659 "ui_clip.c" + } else { +#line 156 "ui_clip.vala" + _tmp4_ = FALSE; +#line 663 "ui_clip.c" + } +#line 156 "ui_clip.vala" + if (_tmp4_) { +#line 157 "ui_clip.vala" + draw_left_rounded_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2); +#line 159 "ui_clip.vala" + draw_left_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1); +#line 671 "ui_clip.c" + } else { + gboolean _tmp5_ = FALSE; +#line 162 "ui_clip.vala" + if (left_trimmed) { +#line 162 "ui_clip.vala" + _tmp5_ = !right_trimmed; +#line 678 "ui_clip.c" + } else { +#line 162 "ui_clip.vala" + _tmp5_ = FALSE; +#line 682 "ui_clip.c" + } +#line 162 "ui_clip.vala" + if (_tmp5_) { +#line 163 "ui_clip.vala" + draw_right_rounded_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2); +#line 165 "ui_clip.vala" + draw_right_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1); +#line 690 "ui_clip.c" + } else { +#line 169 "ui_clip.vala" + draw_square_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2); +#line 171 "ui_clip.vala" + draw_square_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1); +#line 696 "ui_clip.c" + } + } + } +#line 175 "ui_clip.vala" + gc = gdk_gc_new (GDK_DRAWABLE (GTK_WIDGET (self)->window)); +#line 176 "ui_clip.vala" + r = (_tmp6_.x = 0, _tmp6_.y = 0, _tmp6_.width = 0, _tmp6_.height = 0, _tmp6_); +#line 179 "ui_clip.vala" + r.x = GTK_WIDGET (self)->allocation.x; +#line 180 "ui_clip.vala" + r.y = GTK_WIDGET (self)->allocation.y; +#line 181 "ui_clip.vala" + r.width = GTK_WIDGET (self)->allocation.width; +#line 182 "ui_clip.vala" + r.height = GTK_WIDGET (self)->allocation.height; +#line 184 "ui_clip.vala" + gdk_gc_set_clip_rectangle (gc, &r); +#line 714 "ui_clip.c" + layout = NULL; +#line 187 "ui_clip.vala" + if (self->clip->is_recording) { +#line 718 "ui_clip.c" + PangoLayout* _tmp7_; +#line 188 "ui_clip.vala" + layout = (_tmp7_ = gtk_widget_create_pango_layout (GTK_WIDGET (self), "Recording"), _g_object_unref0 (layout), _tmp7_); +#line 722 "ui_clip.c" + } else { +#line 189 "ui_clip.vala" + if (!model_clip_file_is_online (self->clip->clipfile)) { +#line 726 "ui_clip.c" + PangoLayout* _tmp9_; + char* _tmp8_; +#line 190 "ui_clip.vala" + layout = (_tmp9_ = gtk_widget_create_pango_layout (GTK_WIDGET (self), _tmp8_ = g_strdup_printf ("%s (Offline)", self->clip->name)), _g_object_unref0 (layout), _tmp9_); +#line 731 "ui_clip.c" + _g_free0 (_tmp8_); + } else { + PangoLayout* _tmp11_; + char* _tmp10_; +#line 193 "ui_clip.vala" + layout = (_tmp11_ = gtk_widget_create_pango_layout (GTK_WIDGET (self), _tmp10_ = g_strdup_printf ("%s", self->clip->name)), _g_object_unref0 (layout), _tmp11_); +#line 738 "ui_clip.c" + _g_free0 (_tmp10_); + } + } +#line 196 "ui_clip.vala" + pango_layout_get_pixel_size (layout, &width, &height); +#line 197 "ui_clip.vala" + gdk_draw_layout (GDK_DRAWABLE (GTK_WIDGET (self)->window), gc, GTK_WIDGET (self)->allocation.x + 10, GTK_WIDGET (self)->allocation.y + height, layout); +#line 746 "ui_clip.c" + _g_object_unref0 (gc); + _g_object_unref0 (layout); +} + + +#line 200 "ui_clip.vala" +static gboolean clip_view_real_expose_event (GtkWidget* base, GdkEventExpose* event) { +#line 754 "ui_clip.c" + ClipView * self; + gboolean result = FALSE; + self = CLIP_VIEW (base); +#line 201 "ui_clip.vala" + clip_view_draw (self); +#line 760 "ui_clip.c" + result = TRUE; +#line 202 "ui_clip.vala" + return result; +#line 764 "ui_clip.c" +} + + +#line 205 "ui_clip.vala" +static gboolean clip_view_real_button_press_event (GtkWidget* base, GdkEventButton* event) { +#line 770 "ui_clip.c" + ClipView * self; + gboolean result = FALSE; + gboolean primary_press; + gboolean extend_selection; + self = CLIP_VIEW (base); +#line 206 "ui_clip.vala" + if (!transport_delegate_is_stopped (self->priv->transport_delegate)) { +#line 778 "ui_clip.c" + result = TRUE; +#line 207 "ui_clip.vala" + return result; +#line 782 "ui_clip.c" + } +#line 210 "ui_clip.vala" + (*event).x = (*event).x - ((double) GTK_WIDGET (self)->allocation.x); +#line 211 "ui_clip.vala" + primary_press = (*event).button == 1; +#line 212 "ui_clip.vala" + if (primary_press) { +#line 213 "ui_clip.vala" + self->priv->button_down = TRUE; +#line 214 "ui_clip.vala" + self->priv->drag_point = (gint) (*event).x; +#line 215 "ui_clip.vala" + self->priv->snap_amount = 0; +#line 216 "ui_clip.vala" + self->priv->snapped = FALSE; +#line 798 "ui_clip.c" + } +#line 219 "ui_clip.vala" + extend_selection = ((*event).state & GDK_CONTROL_MASK) != 0; +#line 223 "ui_clip.vala" + if (clip_view_is_left_trim (self, (*event).x, (*event).y)) { +#line 224 "ui_clip.vala" + g_signal_emit_by_name (self, "selection-request", self, FALSE); +#line 225 "ui_clip.vala" + if (primary_press) { +#line 226 "ui_clip.vala" + g_signal_emit_by_name (self, "trim-begin", self, GDK_WINDOW_EDGE_WEST); +#line 227 "ui_clip.vala" + self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_LEFT_TRIM; +#line 812 "ui_clip.c" + } + } else { +#line 229 "ui_clip.vala" + if (clip_view_is_right_trim (self, (*event).x, (*event).y)) { +#line 230 "ui_clip.vala" + g_signal_emit_by_name (self, "selection-request", self, FALSE); +#line 231 "ui_clip.vala" + if (primary_press) { +#line 232 "ui_clip.vala" + g_signal_emit_by_name (self, "trim-begin", self, GDK_WINDOW_EDGE_EAST); +#line 233 "ui_clip.vala" + self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_RIGHT_TRIM; +#line 825 "ui_clip.c" + } + } else { +#line 236 "ui_clip.vala" + if (!self->is_selected) { +#line 237 "ui_clip.vala" + self->priv->pending_selection = FALSE; +#line 238 "ui_clip.vala" + g_signal_emit_by_name (self, "selection-request", self, extend_selection); +#line 834 "ui_clip.c" + } else { +#line 240 "ui_clip.vala" + self->priv->pending_selection = TRUE; +#line 838 "ui_clip.c" + } + } + } +#line 244 "ui_clip.vala" + if ((*event).button == 3) { +#line 245 "ui_clip.vala" + gtk_menu_shell_select_first (GTK_MENU_SHELL (clip_view_context_menu), TRUE); +#line 246 "ui_clip.vala" + gtk_menu_popup (clip_view_context_menu, NULL, NULL, NULL, NULL, (*event).button, (*event).time); +#line 848 "ui_clip.c" + } else { +#line 248 "ui_clip.vala" + gtk_menu_popdown (clip_view_context_menu); +#line 852 "ui_clip.c" + } + result = TRUE; +#line 251 "ui_clip.vala" + return result; +#line 857 "ui_clip.c" +} + + +#line 254 "ui_clip.vala" +static gboolean clip_view_real_button_release_event (GtkWidget* base, GdkEventButton* event) { +#line 863 "ui_clip.c" + ClipView * self; + gboolean result = FALSE; + self = CLIP_VIEW (base); +#line 255 "ui_clip.vala" + if (!transport_delegate_is_stopped (self->priv->transport_delegate)) { +#line 869 "ui_clip.c" + result = TRUE; +#line 256 "ui_clip.vala" + return result; +#line 873 "ui_clip.c" + } +#line 259 "ui_clip.vala" + (*event).x = (*event).x - ((double) GTK_WIDGET (self)->allocation.x); +#line 260 "ui_clip.vala" + self->priv->button_down = FALSE; +#line 261 "ui_clip.vala" + if ((*event).button == 1) { +#line 262 "ui_clip.vala" + switch (self->priv->motion_mode) { +#line 883 "ui_clip.c" + case CLIP_VIEW_MOTION_MODE_NONE: + { + { +#line 264 "ui_clip.vala" + if (self->priv->pending_selection) { +#line 265 "ui_clip.vala" + g_signal_emit_by_name (self, "selection-request", self, TRUE); +#line 891 "ui_clip.c" + } + } +#line 268 "ui_clip.vala" + break; +#line 896 "ui_clip.c" + } + case CLIP_VIEW_MOTION_MODE_DRAGGING: + { + { + gint64 delta; +#line 270 "ui_clip.vala" + delta = model_time_system_xsize_to_time (self->priv->time_provider, ((gint) (*event).x) - self->priv->drag_point); +#line 271 "ui_clip.vala" + if (self->priv->motion_mode == CLIP_VIEW_MOTION_MODE_DRAGGING) { +#line 272 "ui_clip.vala" + g_signal_emit_by_name (self, "move-commit", self, delta); +#line 908 "ui_clip.c" + } + } +#line 275 "ui_clip.vala" + break; +#line 913 "ui_clip.c" + } + case CLIP_VIEW_MOTION_MODE_LEFT_TRIM: + { +#line 277 "ui_clip.vala" + g_signal_emit_by_name (self, "trim-commit", self, GDK_WINDOW_EDGE_WEST); +#line 278 "ui_clip.vala" + break; +#line 921 "ui_clip.c" + } + case CLIP_VIEW_MOTION_MODE_RIGHT_TRIM: + { +#line 280 "ui_clip.vala" + g_signal_emit_by_name (self, "trim-commit", self, GDK_WINDOW_EDGE_EAST); +#line 281 "ui_clip.vala" + break; +#line 929 "ui_clip.c" + } + } + } +#line 284 "ui_clip.vala" + self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_NONE; +#line 935 "ui_clip.c" + result = TRUE; +#line 285 "ui_clip.vala" + return result; +#line 939 "ui_clip.c" +} + + +#line 288 "ui_clip.vala" +static gboolean clip_view_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) { +#line 945 "ui_clip.c" + ClipView * self; + gboolean result = FALSE; + gint delta_pixels; + gint64 delta_time; + self = CLIP_VIEW (base); +#line 289 "ui_clip.vala" + if (!transport_delegate_is_stopped (self->priv->transport_delegate)) { +#line 953 "ui_clip.c" + result = TRUE; +#line 290 "ui_clip.vala" + return result; +#line 957 "ui_clip.c" + } +#line 293 "ui_clip.vala" + (*event).x = (*event).x - ((double) GTK_WIDGET (self)->allocation.x); +#line 294 "ui_clip.vala" + delta_pixels = ((gint) ((*event).x - self->priv->drag_point)) - self->priv->snap_amount; +#line 295 "ui_clip.vala" + if (self->priv->snapped) { +#line 296 "ui_clip.vala" + self->priv->snap_amount = self->priv->snap_amount + delta_pixels; +#line 297 "ui_clip.vala" + if (abs (self->priv->snap_amount) < CLIP_VIEW_SNAP_DELTA) { +#line 969 "ui_clip.c" + result = TRUE; +#line 298 "ui_clip.vala" + return result; +#line 973 "ui_clip.c" + } +#line 300 "ui_clip.vala" + delta_pixels = delta_pixels + self->priv->snap_amount; +#line 301 "ui_clip.vala" + self->priv->snap_amount = 0; +#line 302 "ui_clip.vala" + self->priv->snapped = FALSE; +#line 981 "ui_clip.c" + } +#line 305 "ui_clip.vala" + delta_time = model_time_system_xsize_to_time (self->priv->time_provider, delta_pixels); +#line 307 "ui_clip.vala" + switch (self->priv->motion_mode) { +#line 987 "ui_clip.c" + case CLIP_VIEW_MOTION_MODE_NONE: + { + gboolean _tmp0_ = FALSE; +#line 309 "ui_clip.vala" + if (!self->priv->button_down) { +#line 309 "ui_clip.vala" + _tmp0_ = clip_view_is_left_trim (self, (*event).x, (*event).y); +#line 995 "ui_clip.c" + } else { +#line 309 "ui_clip.vala" + _tmp0_ = FALSE; +#line 999 "ui_clip.c" + } +#line 309 "ui_clip.vala" + if (_tmp0_) { +#line 310 "ui_clip.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_left_trim_cursor); +#line 1005 "ui_clip.c" + } else { + gboolean _tmp1_ = FALSE; +#line 311 "ui_clip.vala" + if (!self->priv->button_down) { +#line 311 "ui_clip.vala" + _tmp1_ = clip_view_is_right_trim (self, (*event).x, (*event).y); +#line 1012 "ui_clip.c" + } else { +#line 311 "ui_clip.vala" + _tmp1_ = FALSE; +#line 1016 "ui_clip.c" + } +#line 311 "ui_clip.vala" + if (_tmp1_) { +#line 312 "ui_clip.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_right_trim_cursor); +#line 1022 "ui_clip.c" + } else { + gboolean _tmp2_ = FALSE; +#line 313 "ui_clip.vala" + if (self->is_selected) { +#line 313 "ui_clip.vala" + _tmp2_ = self->priv->button_down; +#line 1029 "ui_clip.c" + } else { +#line 313 "ui_clip.vala" + _tmp2_ = FALSE; +#line 1033 "ui_clip.c" + } +#line 313 "ui_clip.vala" + if (_tmp2_) { +#line 314 "ui_clip.vala" + if (abs (delta_pixels) > CLIP_VIEW_MIN_DRAG) { +#line 1039 "ui_clip.c" + gboolean do_copy; +#line 315 "ui_clip.vala" + do_copy = ((*event).state & GDK_CONTROL_MASK) != 0; +#line 316 "ui_clip.vala" + if (do_copy) { +#line 317 "ui_clip.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_plus_cursor); +#line 1047 "ui_clip.c" + } else { +#line 319 "ui_clip.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_hand_cursor); +#line 1051 "ui_clip.c" + } +#line 321 "ui_clip.vala" + self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_DRAGGING; +#line 322 "ui_clip.vala" + g_signal_emit_by_name (self, "move-begin", self, do_copy); +#line 1057 "ui_clip.c" + } + } else { +#line 325 "ui_clip.vala" + gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL); +#line 1062 "ui_clip.c" + } + } + } +#line 327 "ui_clip.vala" + break; +#line 1068 "ui_clip.c" + } + case CLIP_VIEW_MOTION_MODE_RIGHT_TRIM: + case CLIP_VIEW_MOTION_MODE_LEFT_TRIM: + { +#line 330 "ui_clip.vala" + if (self->priv->button_down) { +#line 331 "ui_clip.vala" + if (self->priv->motion_mode == CLIP_VIEW_MOTION_MODE_LEFT_TRIM) { +#line 332 "ui_clip.vala" + model_clip_trim (self->clip, delta_time, GDK_WINDOW_EDGE_WEST); +#line 1079 "ui_clip.c" + } else { + gint64 duration; +#line 334 "ui_clip.vala" + duration = model_clip_get_duration (self->clip); +#line 335 "ui_clip.vala" + model_clip_trim (self->clip, delta_time, GDK_WINDOW_EDGE_EAST); +#line 336 "ui_clip.vala" + if (duration != model_clip_get_duration (self->clip)) { +#line 337 "ui_clip.vala" + self->priv->drag_point = self->priv->drag_point + ((gint) delta_pixels); +#line 1090 "ui_clip.c" + } + } + } + result = TRUE; +#line 341 "ui_clip.vala" + return result; +#line 1097 "ui_clip.c" + } + case CLIP_VIEW_MOTION_MODE_DRAGGING: + { +#line 343 "ui_clip.vala" + g_signal_emit_by_name (self, "move-request", self, delta_time); +#line 1103 "ui_clip.c" + result = TRUE; +#line 344 "ui_clip.vala" + return result; +#line 1107 "ui_clip.c" + } + } + result = FALSE; +#line 346 "ui_clip.vala" + return result; +#line 1113 "ui_clip.c" +} + + +#line 349 "ui_clip.vala" +static gboolean clip_view_is_trim_height (ClipView* self, double y) { +#line 1119 "ui_clip.c" + gboolean result = FALSE; +#line 349 "ui_clip.vala" + g_return_val_if_fail (IS_CLIP_VIEW (self), FALSE); +#line 1123 "ui_clip.c" + result = (y - GTK_WIDGET (self)->allocation.y) > (GTK_WIDGET (self)->allocation.height / 2); +#line 350 "ui_clip.vala" + return result; +#line 1127 "ui_clip.c" +} + + +#line 353 "ui_clip.vala" +static gboolean clip_view_is_left_trim (ClipView* self, double x, double y) { +#line 1133 "ui_clip.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + gboolean _tmp1_ = FALSE; +#line 353 "ui_clip.vala" + g_return_val_if_fail (IS_CLIP_VIEW (self), FALSE); +#line 354 "ui_clip.vala" + if (clip_view_is_trim_height (self, y)) { +#line 354 "ui_clip.vala" + _tmp1_ = x > 0; +#line 1143 "ui_clip.c" + } else { +#line 354 "ui_clip.vala" + _tmp1_ = FALSE; +#line 1147 "ui_clip.c" + } +#line 354 "ui_clip.vala" + if (_tmp1_) { +#line 354 "ui_clip.vala" + _tmp0_ = x < CLIP_VIEW_TRIM_WIDTH; +#line 1153 "ui_clip.c" + } else { +#line 354 "ui_clip.vala" + _tmp0_ = FALSE; +#line 1157 "ui_clip.c" + } + result = _tmp0_; +#line 354 "ui_clip.vala" + return result; +#line 1162 "ui_clip.c" +} + + +#line 357 "ui_clip.vala" +static gboolean clip_view_is_right_trim (ClipView* self, double x, double y) { +#line 1168 "ui_clip.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + gboolean _tmp1_ = FALSE; +#line 357 "ui_clip.vala" + g_return_val_if_fail (IS_CLIP_VIEW (self), FALSE); +#line 358 "ui_clip.vala" + if (clip_view_is_trim_height (self, y)) { +#line 358 "ui_clip.vala" + _tmp1_ = x > (GTK_WIDGET (self)->allocation.width - CLIP_VIEW_TRIM_WIDTH); +#line 1178 "ui_clip.c" + } else { +#line 358 "ui_clip.vala" + _tmp1_ = FALSE; +#line 1182 "ui_clip.c" + } +#line 358 "ui_clip.vala" + if (_tmp1_) { +#line 359 "ui_clip.vala" + _tmp0_ = x < GTK_WIDGET (self)->allocation.width; +#line 1188 "ui_clip.c" + } else { +#line 358 "ui_clip.vala" + _tmp0_ = FALSE; +#line 1192 "ui_clip.c" + } + result = _tmp0_; +#line 358 "ui_clip.vala" + return result; +#line 1197 "ui_clip.c" +} + + +#line 362 "ui_clip.vala" +void clip_view_select (ClipView* self) { +#line 362 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 363 "ui_clip.vala" + if (!self->is_selected) { +#line 364 "ui_clip.vala" + g_signal_emit_by_name (self, "selection-request", self, TRUE); +#line 1209 "ui_clip.c" + } +} + + +#line 368 "ui_clip.vala" +void clip_view_snap (ClipView* self, gint64 amount) { +#line 368 "ui_clip.vala" + g_return_if_fail (IS_CLIP_VIEW (self)); +#line 369 "ui_clip.vala" + self->priv->snap_amount = model_time_system_time_to_xsize (self->priv->time_provider, amount); +#line 370 "ui_clip.vala" + self->priv->snapped = TRUE; +#line 1222 "ui_clip.c" +} + + +static void clip_view_class_init (ClipViewClass * klass) { + clip_view_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ClipViewPrivate)); + GTK_WIDGET_CLASS (klass)->expose_event = clip_view_real_expose_event; + GTK_WIDGET_CLASS (klass)->button_press_event = clip_view_real_button_press_event; + GTK_WIDGET_CLASS (klass)->button_release_event = clip_view_real_button_release_event; + GTK_WIDGET_CLASS (klass)->motion_notify_event = clip_view_real_motion_notify_event; + G_OBJECT_CLASS (klass)->finalize = clip_view_finalize; + g_signal_new ("clip_deleted", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP); + g_signal_new ("clip_moved", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_CLIP_VIEW); + g_signal_new ("selection_request", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_BOOLEAN); + g_signal_new ("move_request", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_INT64, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_INT64); + g_signal_new ("move_commit", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_INT64, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_INT64); + g_signal_new ("move_begin", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_BOOLEAN); + g_signal_new ("trim_begin", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_ENUM, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, GDK_TYPE_WINDOW_EDGE); + g_signal_new ("trim_commit", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_ENUM, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, GDK_TYPE_WINDOW_EDGE); + clip_view_left_trim_cursor = gdk_cursor_new (GDK_LEFT_SIDE); + clip_view_right_trim_cursor = gdk_cursor_new (GDK_RIGHT_SIDE); + clip_view_hand_cursor = gdk_cursor_new_from_name (gdk_display_get_default (), "dnd-none"); + clip_view_plus_cursor = gdk_cursor_new_from_name (gdk_display_get_default (), "dnd-copy"); +} + + +static void clip_view_instance_init (ClipView * self) { + self->priv = CLIP_VIEW_GET_PRIVATE (self); + self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_NONE; + self->priv->button_down = FALSE; +} + + +static void clip_view_finalize (GObject* obj) { + ClipView * self; + self = CLIP_VIEW (obj); + _g_object_unref0 (self->clip); + _g_object_unref0 (self->priv->transport_delegate); + G_OBJECT_CLASS (clip_view_parent_class)->finalize (obj); +} + + +GType clip_view_get_type (void) { + static volatile gsize clip_view_type_id__volatile = 0; + if (g_once_init_enter (&clip_view_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ClipViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) clip_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ClipView), 0, (GInstanceInitFunc) clip_view_instance_init, NULL }; + GType clip_view_type_id; + clip_view_type_id = g_type_register_static (GTK_TYPE_DRAWING_AREA, "ClipView", &g_define_type_info, 0); + g_once_init_leave (&clip_view_type_id__volatile, clip_view_type_id); + } + return clip_view_type_id__volatile; +} + + + +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) { + typedef void (*GMarshalFunc_VOID__OBJECT_BOOLEAN) (gpointer data1, gpointer arg_1, gboolean arg_2, gpointer data2); + register GMarshalFunc_VOID__OBJECT_BOOLEAN callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__OBJECT_BOOLEAN) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_object (param_values + 1), g_value_get_boolean (param_values + 2), data2); +} + + +static void g_cclosure_user_marshal_VOID__OBJECT_INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__OBJECT_INT64) (gpointer data1, gpointer arg_1, gint64 arg_2, gpointer data2); + register GMarshalFunc_VOID__OBJECT_INT64 callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__OBJECT_INT64) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_object (param_values + 1), g_value_get_int64 (param_values + 2), data2); +} + + +static void g_cclosure_user_marshal_VOID__OBJECT_ENUM (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__OBJECT_ENUM) (gpointer data1, gpointer arg_1, gint arg_2, gpointer data2); + register GMarshalFunc_VOID__OBJECT_ENUM callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__OBJECT_ENUM) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_object (param_values + 1), g_value_get_enum (param_values + 2), data2); +} + + + diff --git a/src/marina/marina/ui_clip.o b/src/marina/marina/ui_clip.o new file mode 100644 index 0000000000000000000000000000000000000000..ff9d8e7256445c07cdd4b4ff708c6f2bb16370aa GIT binary patch literal 92448 zcmeFadwf*Y**3h_>^;eZB%2`#LtqD)WI_nZB$VAAp`?Nk|-!@ zd?#Ek9n$o+?Aw(DAd;FawT_q8r%AMTHD;7*4=$Qjl12NHowzb z)#gssHXZ-w^y$BA;r3%8yKQ(eKGc3p^S2+1)!L7ZI9+h;)V9Y@qys}XuNLa)~Uy=YaL>lx;1<7cN&f3PlENBFJv|0TbjsaIu`Ui4ja zv|f|*{#F&<-&NJPzsm^!s3W#~V@C@7=!U&APF3Z{kr%yUwO#L@+Vc2`2wp4i{NnWK zUZlx}AF`z%HX=?NJ7VB3ITrqM=s$u#Dx>7Gc?z;AORG}!4dwg0+~q&&&@e8>ksoe9 zR;IOeX^`iF9+GdUy|XN|u`3+f)n#Zm%0Auh3;TC%07+{axkW_D(&tse^PJ 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _g_checksum_free0(var) ((var == NULL) ? NULL : (var = (g_checksum_free (var), NULL))) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL))) +#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL))) + +typedef enum { + MEDIA_ERROR_MISSING_PLUGIN +} MediaError; +#define MEDIA_ERROR media_error_quark () +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +typedef enum { + GDK_Control_L, + GDK_Control_R, + GDK_Down, + GDK_equal, + GDK_Escape, + GDK_KP_Add, + GDK_KP_Enter, + GDK_KP_Subtract, + GDK_Left, + GDK_minus, + GDK_plus, + GDK_Return, + GDK_Right, + GDK_Shift_L, + GDK_Shift_R, + GDK_underscore, + GDK_Up +} KeySyms; + + +extern gboolean debug_enabled; +gboolean debug_enabled = FALSE; +extern GdkModifierType GDK_SHIFT_ALT_CONTROL_MASK; +GdkModifierType GDK_SHIFT_ALT_CONTROL_MASK = (GDK_SHIFT_MASK | GDK_MOD1_MASK) | GDK_CONTROL_MASK; + +GQuark media_error_quark (void); +float float_abs (float f); +gboolean float_within (double f, double epsilon); +gint sign (gint x); +gint stricmp (const char* str1, const char* str2); +char** copy_array (char** source, int source_length1, int* result_length1); +void print_debug (const char* text); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +void fraction_init (Fraction *self, gint numerator, gint denominator); +void fraction_init_from_string (Fraction *self, const char* s); +gboolean fraction_equal (Fraction *self, Fraction* f); +gint fraction_nearest_int (Fraction *self); +char* fraction_to_string (Fraction *self); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +void time_code_get_from_length (TimeCode *self, gint64 length); +char* time_code_to_string (TimeCode *self); +gboolean time_in_range (gint64 time, gint64 center, gint64 delta); +char* isolate_filename (const char* path); +char* get_file_extension (const char* path); +char* append_extension (const char* path, const char* extension); +gboolean version_at_least (const char* v, const char* w); +gboolean get_file_md5_checksum (const char* filename, char** checksum); +void save_file_md5_checksum (const char* filename, const char* checksum); +gboolean md5_checksum_on_file (const char* filename, char** checksum); +void parse_color (const char* color, GdkColor* result); +GtkWidget* get_widget (GtkUIManager* manager, const char* name); +#define LINE_WIDTH 1.0 +#define RADIUS 15.0 +#define ANTIALIAS CAIRO_ANTIALIAS_DEFAULT +void draw_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_right_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_left_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_square_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x, gint y, gint width, gint height); +gboolean is_drop_frame_rate (Fraction* r); +gint64 frame_to_time_with_rate (gint frame, Fraction* rate); +gint time_to_frame_with_rate (gint64 time, Fraction* rate); +void frame_to_time (gint frame, Fraction* rate, TimeCode* result); +char* frame_to_string (gint frame, Fraction* rate); +void breakup_time (gint64 time, gint* hours, gint* minutes, double* seconds); +char* time_to_HHMMSS (gint64 time); +char* time_to_string (gint64 time); +GstElement* make_element_with_name (const char* element_name, const char* display_name, GError** error); +GstElement* make_element (const char* name, GError** error); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); +static int _vala_strcmp0 (const char * str1, const char * str2); + +const GtkTargetEntry drag_target_entries[1] = {{"text/uri-list", (guint) 0, (guint) 0}}; + + +GQuark media_error_quark (void) { + return g_quark_from_static_string ("media_error-quark"); +} + + +#line 12 "util.vala" +float float_abs (float f) { +#line 141 "util.c" + float result = 0.0F; +#line 13 "util.vala" + if (f < 0.0f) { +#line 145 "util.c" + result = -f; +#line 14 "util.vala" + return result; +#line 149 "util.c" + } + result = f; +#line 15 "util.vala" + return result; +#line 154 "util.c" +} + + +#line 18 "util.vala" +gboolean float_within (double f, double epsilon) { +#line 160 "util.c" + gboolean result = FALSE; + result = float_abs ((float) f) < epsilon; +#line 19 "util.vala" + return result; +#line 165 "util.c" +} + + +#line 22 "util.vala" +gint sign (gint x) { +#line 171 "util.c" + gint result = 0; + gint _tmp0_ = 0; +#line 23 "util.vala" + if (x == 0) { +#line 176 "util.c" + result = 0; +#line 24 "util.vala" + return result; +#line 180 "util.c" + } +#line 25 "util.vala" + if (x < 0) { +#line 25 "util.vala" + _tmp0_ = -1; +#line 186 "util.c" + } else { +#line 25 "util.vala" + _tmp0_ = 1; +#line 190 "util.c" + } + result = _tmp0_; +#line 25 "util.vala" + return result; +#line 195 "util.c" +} + + +#line 28 "util.vala" +gint stricmp (const char* str1, const char* str2) { +#line 201 "util.c" + gint result = 0; + char* temp_str1; + char* temp_str2; +#line 28 "util.vala" + g_return_val_if_fail (str1 != NULL, 0); +#line 28 "util.vala" + g_return_val_if_fail (str2 != NULL, 0); +#line 29 "util.vala" + temp_str1 = g_utf8_casefold (str1, (gssize) (-1)); +#line 30 "util.vala" + temp_str2 = g_utf8_casefold (str2, (gssize) (-1)); +#line 213 "util.c" + result = g_utf8_collate (temp_str1, temp_str2); + _g_free0 (temp_str1); + _g_free0 (temp_str2); +#line 32 "util.vala" + return result; +#line 219 "util.c" +} + + +#line 36 "util.vala" +char** copy_array (char** source, int source_length1, int* result_length1) { +#line 225 "util.c" + char** result = NULL; + char** _tmp0_; + gint _destination_size_; + gint destination_length1; + char** destination; + gint i; + char** _tmp2_; + destination = (_tmp0_ = g_new0 (char*, source_length1 + 1), destination_length1 = source_length1, _destination_size_ = destination_length1, _tmp0_); +#line 38 "util.vala" + i = 0; +#line 236 "util.c" + { + char** item_collection; + int item_collection_length1; + int item_it; +#line 39 "util.vala" + item_collection = source; +#line 243 "util.c" + item_collection_length1 = source_length1; + for (item_it = 0; item_it < source_length1; item_it = item_it + 1) { + char* item; + item = g_strdup (item_collection[item_it]); + { + char* _tmp1_; +#line 40 "util.vala" + destination[i] = (_tmp1_ = g_strdup (item), _g_free0 (destination[i]), _tmp1_); +#line 41 "util.vala" + i = i + 1; +#line 254 "util.c" + _g_free0 (item); + } + } + } + result = (_tmp2_ = destination, *result_length1 = destination_length1, _tmp2_); +#line 43 "util.vala" + return result; +#line 262 "util.c" + destination = (_vala_array_free (destination, destination_length1, (GDestroyNotify) g_free), NULL); +} + + +#line 50 "util.vala" +void print_debug (const char* text) { +#line 50 "util.vala" + g_return_if_fail (text != NULL); +#line 51 "util.vala" + if (!debug_enabled) { +#line 52 "util.vala" + return; +#line 275 "util.c" + } +#line 54 "util.vala" + g_debug ("util.vala:54: %s", text); +#line 279 "util.c" +} + + +#line 61 "util.vala" +void fraction_init (Fraction *self, gint numerator, gint denominator) { +#line 285 "util.c" + memset (self, 0, sizeof (Fraction)); +#line 62 "util.vala" + (*self).numerator = numerator; +#line 63 "util.vala" + (*self).denominator = denominator; +#line 291 "util.c" +} + + +#line 66 "util.vala" +void fraction_init_from_string (Fraction *self, const char* s) { +#line 297 "util.c" + char** _tmp1_; + gint _elements_size_; + gint elements_length1; + char** _tmp0_; + char** elements; +#line 66 "util.vala" + g_return_if_fail (s != NULL); +#line 305 "util.c" + memset (self, 0, sizeof (Fraction)); + elements = (_tmp1_ = _tmp0_ = g_strsplit (s, "/", 0), elements_length1 = _vala_array_length (_tmp0_), _elements_size_ = elements_length1, _tmp1_); +#line 68 "util.vala" + if (elements_length1 != 2) { +#line 69 "util.vala" + (*self).numerator = 0; +#line 70 "util.vala" + (*self).denominator = 0; +#line 314 "util.c" + } else { +#line 72 "util.vala" + (*self).numerator = atoi (elements[0]); +#line 73 "util.vala" + (*self).denominator = atoi (elements[1]); +#line 320 "util.c" + } + elements = (_vala_array_free (elements, elements_length1, (GDestroyNotify) g_free), NULL); +} + + +#line 77 "util.vala" +gboolean fraction_equal (Fraction *self, Fraction* f) { +#line 328 "util.c" + gboolean result = FALSE; +#line 78 "util.vala" + if (float_abs (((*self).numerator / ((float) (*self).denominator)) - ((*f).numerator / ((float) (*f).denominator))) <= (1000.0f / 1001.0f)) { +#line 332 "util.c" + result = TRUE; +#line 80 "util.vala" + return result; +#line 336 "util.c" + } + result = FALSE; +#line 81 "util.vala" + return result; +#line 341 "util.c" +} + + +#line 84 "util.vala" +gint fraction_nearest_int (Fraction *self) { +#line 347 "util.c" + gint result = 0; + result = (gint) ((((double) (*self).numerator) / (*self).denominator) + 0.5); +#line 85 "util.vala" + return result; +#line 352 "util.c" +} + + +#line 88 "util.vala" +char* fraction_to_string (Fraction *self) { +#line 358 "util.c" + char* result = NULL; + result = g_strdup_printf ("%d/%d", (*self).numerator, (*self).denominator); +#line 89 "util.vala" + return result; +#line 363 "util.c" +} + + +Fraction* fraction_dup (const Fraction* self) { + Fraction* dup; + dup = g_new0 (Fraction, 1); + memcpy (dup, self, sizeof (Fraction)); + return dup; +} + + +void fraction_free (Fraction* self) { + g_free (self); +} + + +GType fraction_get_type (void) { + static volatile gsize fraction_type_id__volatile = 0; + if (g_once_init_enter (&fraction_type_id__volatile)) { + GType fraction_type_id; + fraction_type_id = g_boxed_type_register_static ("Fraction", (GBoxedCopyFunc) fraction_dup, (GBoxedFreeFunc) fraction_free); + g_once_init_leave (&fraction_type_id__volatile, fraction_type_id); + } + return fraction_type_id__volatile; +} + + +#line 101 "util.vala" +void time_code_get_from_length (TimeCode *self, gint64 length) { +#line 102 "util.vala" + length = length / ((gint64) GST_SECOND); +#line 104 "util.vala" + (*self).hour = (gint) (length / 3600); +#line 105 "util.vala" + (*self).minute = (gint) ((length % 3600) / 60); +#line 106 "util.vala" + (*self).second = (gint) ((length % 3600) % 60); +#line 107 "util.vala" + (*self).frame = 0; +#line 403 "util.c" +} + + +#line 110 "util.vala" +char* time_code_to_string (TimeCode *self) { +#line 409 "util.c" + char* result = NULL; + char* ret; + char* _tmp3_; + char* _tmp2_; + char* _tmp5_; + char* _tmp4_; + char* _tmp9_; + char* _tmp8_; +#line 111 "util.vala" + ret = g_strdup (""); +#line 112 "util.vala" + if ((*self).hour != 0) { +#line 422 "util.c" + char* _tmp1_; + char* _tmp0_; +#line 113 "util.vala" + ret = (_tmp1_ = g_strconcat (ret, _tmp0_ = g_strdup_printf ("%.2d:", (*self).hour), NULL), _g_free0 (ret), _tmp1_); +#line 427 "util.c" + _g_free0 (_tmp0_); + } +#line 115 "util.vala" + ret = (_tmp3_ = g_strconcat (ret, _tmp2_ = g_strdup_printf ("%.2d:", (*self).minute), NULL), _g_free0 (ret), _tmp3_); +#line 432 "util.c" + _g_free0 (_tmp2_); +#line 116 "util.vala" + ret = (_tmp5_ = g_strconcat (ret, _tmp4_ = g_strdup_printf ("%.2d", (*self).second), NULL), _g_free0 (ret), _tmp5_); +#line 436 "util.c" + _g_free0 (_tmp4_); +#line 118 "util.vala" + if ((*self).drop_code) { +#line 440 "util.c" + char* _tmp6_; +#line 119 "util.vala" + ret = (_tmp6_ = g_strconcat (ret, ";", NULL), _g_free0 (ret), _tmp6_); +#line 444 "util.c" + } else { + char* _tmp7_; +#line 121 "util.vala" + ret = (_tmp7_ = g_strconcat (ret, ":", NULL), _g_free0 (ret), _tmp7_); +#line 449 "util.c" + } +#line 122 "util.vala" + ret = (_tmp9_ = g_strconcat (ret, _tmp8_ = g_strdup_printf ("%.2d", (*self).frame), NULL), _g_free0 (ret), _tmp9_); +#line 453 "util.c" + _g_free0 (_tmp8_); + result = ret; +#line 124 "util.vala" + return result; +#line 458 "util.c" +} + + +TimeCode* time_code_dup (const TimeCode* self) { + TimeCode* dup; + dup = g_new0 (TimeCode, 1); + memcpy (dup, self, sizeof (TimeCode)); + return dup; +} + + +void time_code_free (TimeCode* self) { + g_free (self); +} + + +GType time_code_get_type (void) { + static volatile gsize time_code_type_id__volatile = 0; + if (g_once_init_enter (&time_code_type_id__volatile)) { + GType time_code_type_id; + time_code_type_id = g_boxed_type_register_static ("TimeCode", (GBoxedCopyFunc) time_code_dup, (GBoxedFreeFunc) time_code_free); + g_once_init_leave (&time_code_type_id__volatile, time_code_type_id); + } + return time_code_type_id__volatile; +} + + +#line 128 "util.vala" +gboolean time_in_range (gint64 time, gint64 center, gint64 delta) { +#line 488 "util.c" + gboolean result = FALSE; + gint64 diff; +#line 129 "util.vala" + diff = time - center; +#line 493 "util.c" + result = llabs (diff) <= delta; +#line 130 "util.vala" + return result; +#line 497 "util.c" +} + + +#line 133 "util.vala" +char* isolate_filename (const char* path) { +#line 503 "util.c" + char* result = NULL; + char* str; + gint _tmp1__length1; + char** _tmp1_; + char** _tmp0_; + char* _tmp2_; +#line 133 "util.vala" + g_return_val_if_fail (path != NULL, NULL); +#line 134 "util.vala" + str = g_path_get_basename (path); +#line 514 "util.c" + result = (_tmp2_ = g_strdup ((_tmp1_ = _tmp0_ = g_strsplit (str, ".", 0), _tmp1__length1 = _vala_array_length (_tmp0_), _tmp1_)[0]), _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) g_free), NULL), _tmp2_); + _g_free0 (str); +#line 135 "util.vala" + return result; +#line 519 "util.c" + _g_free0 (str); +} + + +#line 138 "util.vala" +char* get_file_extension (const char* path) { +#line 526 "util.c" + char* result = NULL; + const char* dot; + const char* _tmp0_; +#line 138 "util.vala" + g_return_val_if_fail (path != NULL, NULL); +#line 139 "util.vala" + dot = g_utf8_strrchr (path, (gssize) (-1), (gunichar) '.'); +#line 534 "util.c" + _tmp0_ = NULL; +#line 140 "util.vala" + if (dot == NULL) { +#line 140 "util.vala" + _tmp0_ = ""; +#line 540 "util.c" + } else { +#line 140 "util.vala" + _tmp0_ = g_utf8_next_char (dot); +#line 544 "util.c" + } + result = g_strdup (_tmp0_); +#line 140 "util.vala" + return result; +#line 549 "util.c" +} + + +#line 143 "util.vala" +char* append_extension (const char* path, const char* extension) { +#line 555 "util.c" + char* result = NULL; + char* _tmp0_; + gboolean _tmp1_; + char* _tmp2_; + char* _tmp3_; +#line 143 "util.vala" + g_return_val_if_fail (path != NULL, NULL); +#line 143 "util.vala" + g_return_val_if_fail (extension != NULL, NULL); +#line 144 "util.vala" + if ((_tmp1_ = _vala_strcmp0 (_tmp0_ = get_file_extension (path), extension) == 0, _g_free0 (_tmp0_), _tmp1_)) { +#line 567 "util.c" + result = g_strdup (path); +#line 145 "util.vala" + return result; +#line 571 "util.c" + } + result = (_tmp3_ = g_strconcat (_tmp2_ = g_strconcat (path, ".", NULL), extension, NULL), _g_free0 (_tmp2_), _tmp3_); +#line 147 "util.vala" + return result; +#line 576 "util.c" +} + + +#line 152 "util.vala" +gboolean version_at_least (const char* v, const char* w) { +#line 582 "util.c" + gboolean result = FALSE; + char** _tmp1_; + gint _va_size_; + gint va_length1; + char** _tmp0_; + char** va; + char** _tmp3_; + gint _wa_size_; + gint wa_length1; + char** _tmp2_; + char** wa; +#line 152 "util.vala" + g_return_val_if_fail (v != NULL, FALSE); +#line 152 "util.vala" + g_return_val_if_fail (w != NULL, FALSE); +#line 598 "util.c" + va = (_tmp1_ = _tmp0_ = g_strsplit (v, ".", 0), va_length1 = _vala_array_length (_tmp0_), _va_size_ = va_length1, _tmp1_); + wa = (_tmp3_ = _tmp2_ = g_strsplit (w, ".", 0), wa_length1 = _vala_array_length (_tmp2_), _wa_size_ = wa_length1, _tmp3_); + { + gint i; +#line 155 "util.vala" + i = 0; +#line 605 "util.c" + { + gboolean _tmp4_; +#line 155 "util.vala" + _tmp4_ = TRUE; +#line 155 "util.vala" + while (TRUE) { +#line 612 "util.c" + gint vi; + gint wi; +#line 155 "util.vala" + if (!_tmp4_) { +#line 155 "util.vala" + i = i + 1; +#line 619 "util.c" + } +#line 155 "util.vala" + _tmp4_ = FALSE; +#line 155 "util.vala" + if (!(i < wa_length1)) { +#line 155 "util.vala" + break; +#line 627 "util.c" + } +#line 156 "util.vala" + if (i >= va_length1) { +#line 631 "util.c" + result = FALSE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 157 "util.vala" + return result; +#line 637 "util.c" + } +#line 158 "util.vala" + vi = atoi (va[i]); +#line 159 "util.vala" + wi = atoi (wa[i]); +#line 160 "util.vala" + if (vi > wi) { +#line 645 "util.c" + result = TRUE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 161 "util.vala" + return result; +#line 651 "util.c" + } +#line 162 "util.vala" + if (wi > vi) { +#line 655 "util.c" + result = FALSE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 163 "util.vala" + return result; +#line 661 "util.c" + } + } + } + } + result = TRUE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 165 "util.vala" + return result; +#line 671 "util.c" +} + + +#line 168 "util.vala" +gboolean get_file_md5_checksum (const char* filename, char** checksum) { +#line 677 "util.c" + gboolean result = FALSE; + GError * _inner_error_; + char* new_filename; + gsize buffer_length = 0UL; +#line 168 "util.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 684 "util.c" + if (checksum != NULL) { + *checksum = NULL; + } + _inner_error_ = NULL; +#line 169 "util.vala" + new_filename = append_extension (filename, "md5"); +#line 691 "util.c" + { + char* _tmp1_; + char* _tmp0_ = NULL; +#line 173 "util.vala" + g_file_get_contents (new_filename, &_tmp0_, &buffer_length, &_inner_error_); +#line 173 "util.vala" + *checksum = (_tmp1_ = _tmp0_, _g_free0 (*checksum), _tmp1_); +#line 699 "util.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch17_g_file_error; + } + _g_free0 (new_filename); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + } + goto __finally17; + __catch17_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + result = FALSE; + _g_error_free0 (e); + _g_free0 (new_filename); +#line 175 "util.vala" + return result; +#line 722 "util.c" + } + } + __finally17: + if (_inner_error_ != NULL) { + _g_free0 (new_filename); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + result = buffer_length == 32; + _g_free0 (new_filename); +#line 178 "util.vala" + return result; +#line 736 "util.c" +} + + +#line 181 "util.vala" +void save_file_md5_checksum (const char* filename, const char* checksum) { +#line 742 "util.c" + GError * _inner_error_; + char* new_filename; +#line 181 "util.vala" + g_return_if_fail (filename != NULL); +#line 181 "util.vala" + g_return_if_fail (checksum != NULL); +#line 749 "util.c" + _inner_error_ = NULL; +#line 182 "util.vala" + new_filename = append_extension (filename, "md5"); +#line 753 "util.c" + { +#line 185 "util.vala" + g_file_set_contents (new_filename, checksum, -1, &_inner_error_); +#line 757 "util.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch18_g_file_error; + } + _g_free0 (new_filename); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + goto __finally18; + __catch18_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 187 "util.vala" + g_error ("util.vala:187: Cannot save md5 file %s!\n", new_filename); +#line 777 "util.c" + _g_error_free0 (e); + } + } + __finally18: + if (_inner_error_ != NULL) { + _g_free0 (new_filename); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _g_free0 (new_filename); +} + + +#line 191 "util.vala" +gboolean md5_checksum_on_file (const char* filename, char** checksum) { +#line 794 "util.c" + gboolean result = FALSE; + GError * _inner_error_; + char* file_buffer; + gsize len = 0UL; + GChecksum* c; + char* _tmp2_; +#line 191 "util.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 803 "util.c" + if (checksum != NULL) { + *checksum = NULL; + } + _inner_error_ = NULL; + file_buffer = NULL; + { + char* _tmp1_; + char* _tmp0_ = NULL; +#line 196 "util.vala" + g_file_get_contents (filename, &_tmp0_, &len, &_inner_error_); +#line 196 "util.vala" + file_buffer = (_tmp1_ = _tmp0_, _g_free0 (file_buffer), _tmp1_); +#line 816 "util.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch19_g_file_error; + } + _g_free0 (file_buffer); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + } + goto __finally19; + __catch19_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + result = FALSE; + _g_error_free0 (e); + _g_free0 (file_buffer); +#line 198 "util.vala" + return result; +#line 839 "util.c" + } + } + __finally19: + if (_inner_error_ != NULL) { + _g_free0 (file_buffer); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } +#line 201 "util.vala" + c = g_checksum_new (G_CHECKSUM_MD5); +#line 202 "util.vala" + g_checksum_update (c, (guchar*) file_buffer, len); +#line 203 "util.vala" + *checksum = (_tmp2_ = g_strdup (g_checksum_get_string (c)), _g_free0 (*checksum), _tmp2_); +#line 855 "util.c" + result = TRUE; + _g_free0 (file_buffer); + _g_checksum_free0 (c); +#line 204 "util.vala" + return result; +#line 861 "util.c" +} + + +#line 239 "util.vala" +void parse_color (const char* color, GdkColor* result) { +#line 867 "util.c" + GdkColor c = {0}; +#line 239 "util.vala" + g_return_if_fail (color != NULL); +#line 241 "util.vala" + if (!gdk_color_parse (color, &c)) { +#line 242 "util.vala" + g_error ("util.vala:242: can't parse color"); +#line 875 "util.c" + } + *result = c; +#line 243 "util.vala" + return; +#line 880 "util.c" +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 246 "util.vala" +GtkWidget* get_widget (GtkUIManager* manager, const char* name) { +#line 891 "util.c" + GtkWidget* result = NULL; + GtkWidget* widget; +#line 246 "util.vala" + g_return_val_if_fail (GTK_IS_UI_MANAGER (manager), NULL); +#line 246 "util.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 247 "util.vala" + widget = _g_object_ref0 (gtk_ui_manager_get_widget (manager, name)); +#line 248 "util.vala" + if (widget == NULL) { +#line 249 "util.vala" + g_error ("util.vala:249: can't find widget"); +#line 904 "util.c" + } + result = widget; +#line 250 "util.vala" + return result; +#line 909 "util.c" +} + + +#line 262 "util.vala" +void draw_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height) { +#line 915 "util.c" + gboolean _tmp0_ = FALSE; + double x1; + double y1; + cairo_t* cairo_window; +#line 262 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 264 "util.vala" + if (width == 0) { +#line 264 "util.vala" + _tmp0_ = TRUE; +#line 926 "util.c" + } else { +#line 264 "util.vala" + _tmp0_ = height == 0; +#line 930 "util.c" + } +#line 264 "util.vala" + if (_tmp0_) { +#line 265 "util.vala" + return; +#line 936 "util.c" + } +#line 267 "util.vala" + x1 = (double) (x0 + width); +#line 268 "util.vala" + y1 = (double) (y0 + height); +#line 270 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 271 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 272 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 274 "util.vala" + if ((width / 2) < RADIUS) { +#line 275 "util.vala" + if ((height / 2) < RADIUS) { +#line 276 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 277 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 278 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 279 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 280 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 962 "util.c" + } else { +#line 282 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 283 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 284 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 285 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 286 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 287 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 976 "util.c" + } + } else { +#line 290 "util.vala" + if ((height / 2) < RADIUS) { +#line 291 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 292 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 293 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 294 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 295 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 296 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 297 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 995 "util.c" + } else { +#line 299 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 300 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 301 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 302 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 303 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 304 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 305 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 306 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 1013 "util.c" + } + } +#line 309 "util.vala" + cairo_close_path (cairo_window); +#line 311 "util.vala" + if (filled) { +#line 312 "util.vala" + cairo_fill (cairo_window); +#line 1022 "util.c" + } else { +#line 314 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 315 "util.vala" + cairo_stroke (cairo_window); +#line 1028 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 319 "util.vala" +void draw_right_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height) { +#line 1036 "util.c" + gboolean _tmp0_ = FALSE; + double x1; + double y1; + cairo_t* cairo_window; +#line 319 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 321 "util.vala" + if (width == 0) { +#line 321 "util.vala" + _tmp0_ = TRUE; +#line 1047 "util.c" + } else { +#line 321 "util.vala" + _tmp0_ = height == 0; +#line 1051 "util.c" + } +#line 321 "util.vala" + if (_tmp0_) { +#line 322 "util.vala" + return; +#line 1057 "util.c" + } +#line 324 "util.vala" + x1 = (double) (x0 + width); +#line 325 "util.vala" + y1 = (double) (y0 + height); +#line 327 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 328 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 329 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 331 "util.vala" + if ((width / 2) < RADIUS) { +#line 332 "util.vala" + if ((height / 2) < RADIUS) { +#line 333 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 334 "util.vala" + cairo_line_to (cairo_window, (x0 + x1) / 2, (double) y0); +#line 335 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 336 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 337 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 338 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1085 "util.c" + } else { +#line 340 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 341 "util.vala" + cairo_line_to (cairo_window, (x0 + x1) / 2, (double) y0); +#line 342 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 343 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 344 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 345 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 346 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1101 "util.c" + } + } else { +#line 349 "util.vala" + if ((height / 2) < RADIUS) { +#line 350 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 351 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 352 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 353 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 354 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 355 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1118 "util.c" + } else { +#line 357 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 358 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 359 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 360 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 361 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 362 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 363 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1134 "util.c" + } + } +#line 366 "util.vala" + cairo_close_path (cairo_window); +#line 368 "util.vala" + if (filled) { +#line 369 "util.vala" + cairo_fill (cairo_window); +#line 1143 "util.c" + } else { +#line 371 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 372 "util.vala" + cairo_stroke (cairo_window); +#line 1149 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 376 "util.vala" +void draw_left_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height) { +#line 1157 "util.c" + gboolean _tmp0_ = FALSE; + double x1; + double y1; + cairo_t* cairo_window; +#line 376 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 378 "util.vala" + if (width == 0) { +#line 378 "util.vala" + _tmp0_ = TRUE; +#line 1168 "util.c" + } else { +#line 378 "util.vala" + _tmp0_ = height == 0; +#line 1172 "util.c" + } +#line 378 "util.vala" + if (_tmp0_) { +#line 379 "util.vala" + return; +#line 1178 "util.c" + } +#line 381 "util.vala" + x1 = (double) (x0 + width); +#line 382 "util.vala" + y1 = (double) (y0 + height); +#line 384 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 385 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 386 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 388 "util.vala" + if ((width / 2) < RADIUS) { +#line 389 "util.vala" + if ((height / 2) < RADIUS) { +#line 390 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 391 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 392 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 393 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 394 "util.vala" + cairo_line_to (cairo_window, (x1 + x0) / 2, y1); +#line 395 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 1206 "util.c" + } else { +#line 397 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 398 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 399 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 400 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 401 "util.vala" + cairo_line_to (cairo_window, (x1 + x0) / 2, y1); +#line 402 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 1220 "util.c" + } + } else { +#line 405 "util.vala" + if ((height / 2) < RADIUS) { +#line 406 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 407 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 408 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 409 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 410 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 411 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 1237 "util.c" + } else { +#line 413 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 414 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 415 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 416 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 417 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 418 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 1251 "util.c" + } + } +#line 421 "util.vala" + cairo_close_path (cairo_window); +#line 423 "util.vala" + if (filled) { +#line 424 "util.vala" + cairo_fill (cairo_window); +#line 1260 "util.c" + } else { +#line 426 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 427 "util.vala" + cairo_stroke (cairo_window); +#line 1266 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 431 "util.vala" +void draw_square_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x, gint y, gint width, gint height) { +#line 1274 "util.c" + gboolean _tmp0_ = FALSE; + cairo_t* cairo_window; +#line 431 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 433 "util.vala" + if (width == 0) { +#line 433 "util.vala" + _tmp0_ = TRUE; +#line 1283 "util.c" + } else { +#line 433 "util.vala" + _tmp0_ = height == 0; +#line 1287 "util.c" + } +#line 433 "util.vala" + if (_tmp0_) { +#line 434 "util.vala" + return; +#line 1293 "util.c" + } +#line 436 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 437 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 438 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 440 "util.vala" + cairo_rectangle (cairo_window, (double) x, (double) y, (double) width, (double) height); +#line 442 "util.vala" + if (filled) { +#line 443 "util.vala" + cairo_fill (cairo_window); +#line 1307 "util.c" + } else { +#line 445 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 446 "util.vala" + cairo_stroke (cairo_window); +#line 1313 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 452 "util.vala" +gboolean is_drop_frame_rate (Fraction* r) { +#line 1321 "util.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + gboolean _tmp1_ = FALSE; +#line 453 "util.vala" + if ((*r).numerator == 2997) { +#line 453 "util.vala" + _tmp1_ = (*r).denominator == 100; +#line 1329 "util.c" + } else { +#line 453 "util.vala" + _tmp1_ = FALSE; +#line 1333 "util.c" + } +#line 453 "util.vala" + if (_tmp1_) { +#line 453 "util.vala" + _tmp0_ = TRUE; +#line 1339 "util.c" + } else { + gboolean _tmp2_ = FALSE; +#line 454 "util.vala" + if ((*r).numerator == 30000) { +#line 454 "util.vala" + _tmp2_ = (*r).denominator == 1001; +#line 1346 "util.c" + } else { +#line 454 "util.vala" + _tmp2_ = FALSE; +#line 1350 "util.c" + } +#line 454 "util.vala" + _tmp0_ = _tmp2_; +#line 1354 "util.c" + } + result = _tmp0_; +#line 453 "util.vala" + return result; +#line 1359 "util.c" +} + + +#line 457 "util.vala" +gint64 frame_to_time_with_rate (gint frame, Fraction* rate) { +#line 1365 "util.c" + gint64 result = 0LL; + gint64 time; +#line 458 "util.vala" + time = (gint64) gst_util_uint64_scale ((guint64) frame, (guint64) (GST_SECOND * (*rate).denominator), (guint64) (*rate).numerator); +#line 1370 "util.c" + result = time; +#line 459 "util.vala" + return result; +#line 1374 "util.c" +} + + +#line 462 "util.vala" +gint time_to_frame_with_rate (gint64 time, Fraction* rate) { +#line 1380 "util.c" + gint result = 0; + gint frame; + gint _tmp0_ = 0; +#line 463 "util.vala" + frame = (gint) gst_util_uint64_scale ((guint64) time, (guint64) (*rate).numerator, (guint64) (GST_SECOND * (*rate).denominator)); +#line 469 "util.vala" + if (time >= frame_to_time_with_rate (frame + 1, rate)) { +#line 469 "util.vala" + _tmp0_ = frame + 1; +#line 1390 "util.c" + } else { +#line 469 "util.vala" + _tmp0_ = frame; +#line 1394 "util.c" + } + result = _tmp0_; +#line 469 "util.vala" + return result; +#line 1399 "util.c" +} + + +#line 472 "util.vala" +void frame_to_time (gint frame, Fraction* rate, TimeCode* result) { +#line 1405 "util.c" + gint frame_rate; + TimeCode _tmp0_ = {0}; + TimeCode t; + gint64 secs; +#line 473 "util.vala" + frame_rate = 0; +#line 475 "util.vala" + t = (_tmp0_); +#line 477 "util.vala" + t.drop_code = FALSE; +#line 478 "util.vala" + if ((*rate).denominator == 1) { +#line 479 "util.vala" + frame_rate = (*rate).numerator; +#line 1420 "util.c" + } else { +#line 480 "util.vala" + if (is_drop_frame_rate (rate)) { +#line 1424 "util.c" + gint FRAMES_PER_MINUTE; + gint FRAMES_PER_10_MINUTES; + gint block; + gint minute_in_block; + gint minutes; +#line 481 "util.vala" + t.drop_code = TRUE; +#line 482 "util.vala" + frame_rate = 30; +#line 485 "util.vala" + FRAMES_PER_MINUTE = (30 * 60) - 2; +#line 486 "util.vala" + FRAMES_PER_10_MINUTES = (10 * FRAMES_PER_MINUTE) + 2; +#line 488 "util.vala" + block = frame / FRAMES_PER_10_MINUTES; +#line 489 "util.vala" + minute_in_block = ((frame % FRAMES_PER_10_MINUTES) - 2) / FRAMES_PER_MINUTE; +#line 490 "util.vala" + minutes = (10 * block) + minute_in_block; +#line 491 "util.vala" + frame = frame + ((2 * minutes) - (2 * block)); +#line 1446 "util.c" + } else { +#line 495 "util.vala" + frame_rate = (*rate).numerator / (*rate).denominator; +#line 1450 "util.c" + } + } +#line 498 "util.vala" + t.frame = frame % frame_rate; +#line 500 "util.vala" + secs = (gint64) (frame / frame_rate); +#line 501 "util.vala" + t.hour = ((gint) secs) / 3600; +#line 502 "util.vala" + t.minute = (((gint) secs) % 3600) / 60; +#line 503 "util.vala" + t.second = (((gint) secs) % 3600) % 60; +#line 1463 "util.c" + *result = t; +#line 505 "util.vala" + return; +#line 1467 "util.c" +} + + +#line 508 "util.vala" +char* frame_to_string (gint frame, Fraction* rate) { +#line 1473 "util.c" + char* result = NULL; + TimeCode _tmp1_; + TimeCode _tmp0_ = {0}; + result = time_code_to_string ((_tmp1_ = (frame_to_time (frame, rate, &_tmp0_), _tmp0_), &_tmp1_)); +#line 509 "util.vala" + return result; +#line 1480 "util.c" +} + + +#line 512 "util.vala" +void breakup_time (gint64 time, gint* hours, gint* minutes, double* seconds) { +#line 1486 "util.c" + gint64 the_time; + gint64 minute; + gint64 hour; +#line 513 "util.vala" + the_time = time; +#line 514 "util.vala" + minute = (gint64) (GST_SECOND * 60); +#line 515 "util.vala" + hour = minute * 60; +#line 516 "util.vala" + *hours = (gint) (the_time / hour); +#line 517 "util.vala" + the_time = the_time % hour; +#line 518 "util.vala" + *minutes = (gint) (the_time / minute); +#line 519 "util.vala" + the_time = the_time % minute; +#line 520 "util.vala" + *seconds = ((double) the_time) / GST_SECOND; +#line 1506 "util.c" +} + + +#line 523 "util.vala" +char* time_to_HHMMSS (gint64 time) { +#line 1512 "util.c" + char* result = NULL; + gint hours = 0; + gint minutes = 0; + double seconds = 0.0; +#line 528 "util.vala" + breakup_time (time, &hours, &minutes, &seconds); +#line 1519 "util.c" + result = g_strdup_printf ("%02d:%02d:%05.2lf", hours, minutes, seconds); +#line 529 "util.vala" + return result; +#line 1523 "util.c" +} + + +#line 532 "util.vala" +char* time_to_string (gint64 time) { +#line 1529 "util.c" + char* result = NULL; + gint hours = 0; + gint minutes = 0; + double seconds = 0.0; + char* return_value; + gboolean _tmp0_ = FALSE; +#line 537 "util.vala" + breakup_time (time, &hours, &minutes, &seconds); +#line 538 "util.vala" + return_value = g_strdup_printf ("%1.2lfs", seconds); +#line 539 "util.vala" + if (hours > 0) { +#line 539 "util.vala" + _tmp0_ = TRUE; +#line 1544 "util.c" + } else { +#line 539 "util.vala" + _tmp0_ = minutes > 0; +#line 1548 "util.c" + } +#line 539 "util.vala" + if (_tmp0_) { +#line 1552 "util.c" + char* _tmp2_; + char* _tmp1_; +#line 540 "util.vala" + return_value = (_tmp2_ = g_strconcat (_tmp1_ = g_strdup_printf ("%dm ", minutes), return_value, NULL), _g_free0 (return_value), _tmp2_); +#line 1557 "util.c" + _g_free0 (_tmp1_); + } +#line 543 "util.vala" + if (hours > 0) { +#line 1562 "util.c" + char* _tmp4_; + char* _tmp3_; +#line 544 "util.vala" + return_value = (_tmp4_ = g_strconcat (_tmp3_ = g_strdup_printf ("%dh ", hours), return_value, NULL), _g_free0 (return_value), _tmp4_); +#line 1567 "util.c" + _g_free0 (_tmp3_); + } + result = return_value; +#line 547 "util.vala" + return result; +#line 1573 "util.c" +} + + +#line 550 "util.vala" +GstElement* make_element_with_name (const char* element_name, const char* display_name, GError** error) { +#line 1579 "util.c" + GstElement* result = NULL; + GError * _inner_error_; + GstElement* e; +#line 550 "util.vala" + g_return_val_if_fail (element_name != NULL, NULL); +#line 1585 "util.c" + _inner_error_ = NULL; +#line 552 "util.vala" + e = gst_element_factory_make (element_name, display_name); +#line 553 "util.vala" + if (e == NULL) { +#line 1591 "util.c" + char* _tmp0_; + GError* _tmp1_; + _inner_error_ = (_tmp1_ = g_error_new_literal (MEDIA_ERROR, MEDIA_ERROR_MISSING_PLUGIN, _tmp0_ = g_strdup_printf ("Could not create element %s(%s)", element_name, display_name)), _g_free0 (_tmp0_), _tmp1_); + { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (e); + return NULL; + } + } + result = e; +#line 557 "util.vala" + return result; +#line 1604 "util.c" +} + + +#line 560 "util.vala" +GstElement* make_element (const char* name, GError** error) { +#line 1610 "util.c" + GstElement* result = NULL; + GError * _inner_error_; + GstElement* _tmp0_; +#line 560 "util.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 1616 "util.c" + _inner_error_ = NULL; +#line 561 "util.vala" + _tmp0_ = make_element_with_name (name, NULL, &_inner_error_); +#line 1620 "util.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return NULL; + } + result = _tmp0_; +#line 561 "util.vala" + return result; +#line 1628 "util.c" +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/marina/marina/util.o b/src/marina/marina/util.o new file mode 100644 index 0000000000000000000000000000000000000000..102f61f2a7dc10b63a7220f39d5d5bd56ea7332e GIT binary patch literal 69284 zcmce<3w%`7wLiYkoSDf$0*sQ#Fa#Y;gaCOH1TBvQ5+Ec%UOZHA67wP@BxxQH1T@M+ ze4wakY4u99w&hmZ(iX2&vC@i)immOn)~oh5fDu$ksZvXo*8lgr_Bk^ri2dFB|NlP! z(Ve~5UTd$tUVH6*&YUycTu?mAFbrjX43(mykWz0wEf`OZR4Hnt3QB9+z?i<{H=gcu z?@8-bd$u0kHgH&&|CSsx8l+P^#pZ%^xxiRI2A^ zp!tq-9`g73x1I3664STs>X^QluHDz?&b{}9e_RY?+j{i)*Z1{p`;h%-A@9CE&(~k< zyY0po`i_5nRo}LOmxwH$8~=35FZx7e*?@WOrwm(uar5*zwe19XA1?wg@Evg7&QrEr z$5&v!wVV4qYbW)+wD#FP|9N)McI}yd8giQc?j!M#NmX_qQJLMxT&nv>OK4{=?QtZ% z`xyIFZub$Rr27c_JfM&CtIfS`(6iqK8WS`ePo7gkdMt5vn`7OMG3r3~vA6@9dwrqJ zy{Bp0SHAtVOkdgu_I$3~iXOA%g&rT|dtrL_kry($k9hn^J#KY*&l|a~Vy==N)BnpJ zk17?};g46`@QDGLO~~Pc-!d)VyH&}Nzkl(?9e?}ciw{+3Tkn%!Q=ln3V%sbZ<1#14 zNS`Twh5U}#abwH}6Z9Cw#ZdUd{1m+0ncI46RQWN&fBE8zAPV~K?LA$T_JM)^M96Ny zHj1`sL0x&TM|E|Zmrzc~Nc*U+lA{vOz%xa{sDamnBvs+Mssz-HzRJr$V8eW1GMzA3-z zISl*9VV+-QSNFIxZ|gN7i#b8l#bs9a_|QjP{9WMZzpeN5ozI>y)%FvjUuE}^w_%ri z+}-UfQxD(!!p|PN_x3GYwwzv&_QCGloxLI0XjZv87WewRqpt4mBPp4&z3vd?&!oK& zd$1e%*nKh3t+Q)q@1Sk)k-DSTt1cXaKJXX-9vqwEAAva2uu`{3+%g`CW4tnM+4ii( zI?8;gHvzdKX2qsHwPM4m5aQ_cJzV=r)xP#xp6cG0sg}$>t3oA5?f5|=7^pJu>s9c1 zj1@od$5EAa-*NVRj@WR<6JqGtXRt{N)}SByCqnl?sOV^7X3^0(l{WxhDYq5%fOqv%*lUEijh zZsURDM()O=dW;%43HjEmDvq3m-X6=gvc|!S^U>ClPtSun7v~8$?D1}kWe?aOVh_xD zzCHFqub7s5dfvDkHd43saE?Ic2=Pf`&xjYOLkRM22i;)!+@@h1sF2uO?8cb0Ww!Gh z?WgutZ;>nBt^f~vJlC3x2Y=Bkw;Q@!@nqF*;K(zcu|%Krkl*#kkdxl#+Sn7Z zxz(`j;)5OB{(Daxz&igG*5K*TYgmUndmq01dC|`eequ-D&eMfy9|T~#c#K(|i?v&M zU$3i+vfbDFV9iTC9Dl|I+rW;eD|L(*xrot9y~e1k54uo?5bS0muOb(|?agK0?miNr z?6*IAg0Y+|_>v>Q-6A>FF+XD&F(Gln`OTK@BmPporzll%%u{j?@(5~ggFYYDBx%Q@9cQ&iqb)QJdcxul%+EIYfZs8;jceaI)w_0Ip9?kn zd$CWdwOdb_H$HS~+l|FqpEr<_~lH zJ9~5B7sJ1)#}(S7W6!de$bk3?VEx%Lu|CPY0-IL!b9(yed1)UE#@VC-eoV3L*oFMm zt?l@Dd4D^`RX)`Fzp>@Dw56Z6EIqaiZKW0+yAE|s<}E#L^l!V`+h>F}_q_j+K3BZ_ z>dsTg-`OW;5~p7%KVyY{78}9Fwmr!I(doDJJfGQpg#6xzJr7%Fs+me%`@QL#FNkXc z&baZNQ^z0L*Z0F`cETs#KJpy2_Nuef>M%P+pQ(*#dgJ+$?d>&~sG z+^Bshu}_TY^FFcllx^=zEgHgXi%;Is_~3ak`4R61-iP@VYV!7?*!)Cib?vd~=f#E3 z0mCmJp1o*i@7Yn&xCr=fk=$2-*cgm6<>{@@p7<(zT;s4u1NSA`V#QT`G0%+dqiw_< z&ul#v_r&Br+a{#BkUjpd*aCB%Z;NLb!b3m?tg-(aYx~uIv9@hoHDZ}LmTTMiy3W6MVSdKKaIQ^j zZ4FpEMQlu%YnW@3KJu-YD*cHTt?N~+br|pKp2XB01XYc#4 zr-Izf9kXAZCTF8dR?L<>V&^i~LpneCsMj-B^|PJ5X6$?;_5vN(*jL)})eGBlgq^=E z+uHd|?EQo_2C{fjIN$fNmSk-qcHHOf*WUxqz*+bu*nsvrft& z%g$cLlzK+nfP4pF4^Oe|b|D+khQnZ^*{@Fj(q7Iy?gKBU{!ZKQ%tts9SGHas!N#9Q z_sb(a)6bokKa@((mGuJs>2KN~G4rxs`rWnxeV^HKS#J!^0-P`A zovS1kC?8|MmO*sE+@jl^TTjh;W?G;39j%8q)O{od>o#Ir;$av1(y6zMed2#%muD=U zKk9Fnk>|z8UfKcImrD-d8n%b`Ft#3zJ8(}=EY{i__}mOVd|df?FQfDrt}T6&aa}VQ z^14EI_3*w$mvueG>&}oL_iyC7=Pq3L+||=)tv}+5b;9oV*S@}&>%)@nBl|0(Ihpq| z{>RrcEhR^XNDf|jEWyeV_Wc~*gWxqKZOJySw*yNcBV~8t+Qx0k5B!JukUwAK-wgRT z_jFqF$6(*$b$T-JDHfjB?@k)Rr1{ddJ2d8f9nQ^rJ1x+W*W|pHN*#GGHGq3uA(TWE zUR#E8i*TJEz2-$|4vfM5vlzAMgnb_;6>?B^%0S&Heu{ZVm@Y*sT z`Ac|Z1?hs^y z?~~!{9F$CyR21Ilp58)^2hLb;&IW12b_?)n9Zp1bhk#=cGMSx<*Jlqq&ovUbAH}yNDe^;_{Wx? zH4A;D)Pq{?TzsEk&7;&p+?Q7a$%k|X)_)K9aZM-7n$fauv(^mh-U7b(0)C}WTXGST zB_&7cTX*g~J$~BD-*YS-aVl~gC^?Gzp#zIy6Q$lo9^Ec^)X04OcpUDtl7@cF1m08| zBXCrnjj-Luo?Q-kNM92Ttw@XCFT7rfdGOr<<3aLDOZSmWDHDBB?#5uk_MBMAxhE0wP2W;!=jQh{BqjCQ@d}zo0!xHy;|FGkpy4Z1V z+sVFvYV+p({~C<7?cjlI%uT|JO0NAzXZsvLKb)|9z_IUPZ01+kn(MTy3-MT~*Qu}T zo*sO^B5Sh|Jh{dU{}$R@uTSt>{&zd4Js@`CnT+vkhISn1y?VyaH$lU=p?ut{?6sxy z+7`shmL4Nf-)pq-?M~-gZJx&}b9eSuR$>n1G;hhq9)AB~$0+Ru)dqUi_TxP3IQ#M4 z#lTd^ma34?{M(PGpskSCnD;0b?-$$jeX!Az3(Rk1-g1=R1M)jSe*dSoK~Dp@s2lrJ zNUsB2njNEkaNc_x@pa5s$?u;YlsSy9E!g8M+vVb1ZS`~BnB2`mGf*u#;;!6$l;6*$ zz{j+k>fV5O*Wc?gw=0ZgUXNEgm-G7?e-FN&IKX+IJP`-Hzvr&rA?ooH+?yqjJH{by z^d682`EhPD)dmzzXMacNRb3~X-vQG0jBD;Gv^l?%V@|u6YXmu*YlHiXwq=jxVy=II zLC2V|?Q6#caW;+k9X`wT@9fPDF-L4bTx{qmxJ<`|r?UIVU*Q*?;dR_Z@iq@PXqeZx zpXWP%ml2@fA+z&)M3D`1VsDfWbIkT!=!kua@x{H$)vdp8;=UyGSR0V_BAf>Tgt^zp zgmj)>ia8il?6<$yaRV388-B87<+|tjPiWDW^96L%*C%>!oo(sPbx!&ACwSSLaItY*tc*|1I==X7o3d6pc+ z^Q^wqAqR7Y$}By4s1j#;*o*Payv*;r_CX)c&m63ByRc?aLX0^pE?T;eEIEtkF_`DN zDC4FCiKE`O{Z%);hw^tQrxd9dg6i2Yx}Ca;XbcQhfTo*tkU z9pQP-hZ^6P^E=3625b_e9ym_B$UNv{oBamz33J9k;E8jWY{Hql;>bt%K6gKCl!CKr z#MZg@9jA}RK@P^~0LV#rG+;wvzqj(x#;+Kcc;2`G^})E)h#StsYZ=uxV`>VA2q$BDzU0RQ9t;uK`5ypSN63+qrB7a3O!9vW*79x?bL<6^__RmzpDVq>Sp znz&7m$7{^NSI2%Wws5FYZmWN=Ql6oPIXE_!7y}sZpa|JyL|M!*BZ~6@=d)Q1h!R3S z!zdie;jyDs;n0j&rQ-AqN(~wU5tJG{6nv+|DK&&JW$+K{H}ORY#+W#=xYz?0N(~(? zReW?#%9B7UJ=Gl1cQkT1Jtpt}Oa(Qg)CRJp14w#F$@ll)$lcqXAVACv6rb~BD z7o994(k*gE5t)`07|fZnqPz%Z#~KS!O>mBmj?IbcN#co)v5@jgfYeXKniPu&zZi>g zvSSR0u1bf=Nz~sqS4X?GNfF>mO^NnKg_t_h$QruPyCn7+$RCbnS9`8k*XbITE1v%}My{cE=bOp)$O$ z0y5tMtC%q*L>Rsku&>+Yxe_NMGYKNcjBOyo6_br?R1-JCR7^T~my$ii?!%14H z61%={60HQ$ngE#hBFcR8IDz>$O0)PBnnT>5;O|Ao7x;VeAMgh~9yom{=QNXW+h@S& z1i+p&pnL;HPea>F1qP(D3H!!3);6gDX)l1@mE^{78QBS=4;E0&Ik~VCxYg@S|vBy9@#7!R!cVG0i8uSMT%d{WE@~+@2Fmea)WF!XPMS%H(>6kVYEQe4B zRB#oH-em-D2a|Qm91E*oJh~Y?Jii9RxQj=Bj{-b|ptyLP)>L_SL&}RIR(KuuzBpAo zhF16;IAQsH8)1D(7TQCbjhz^9$wgR}LsuEEg5R*~Fvbnw1b_ghR73ADeug$|tSwcggu4}j&vpECf?A|rV@T?ybO=J zlJWyzN1gDbaU(dolI8?9!fpxwVZ=fjS5isf5av&K+PGfkT@vU4kA!Co?a!rwZzA>* z_FLG>KoPcj{E)V>c8a-!W8w1_2SHb~Hqn5yA1YW{nW1|$dof(ot*JO*>&Y^p(Dpa86f#am!p;5#t¨VA2foFzmsntY;CB#k*f0wW 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 literal 0 HcmV?d00001 diff --git a/src/marina/marina/video_track.c b/src/marina/marina/video_track.c new file mode 100644 index 0000000..ea18f10 --- /dev/null +++ b/src/marina/marina/video_track.c @@ -0,0 +1,571 @@ +/* video_track.c generated by valac, the Vala compiler + * generated from video_track.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; +typedef struct _ModelTrackPrivate ModelTrackPrivate; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define MODEL_TYPE_VIDEO_TRACK (model_video_track_get_type ()) +#define MODEL_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrack)) +#define MODEL_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) +#define MODEL_IS_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_IS_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) + +typedef struct _ModelVideoTrack ModelVideoTrack; +typedef struct _ModelVideoTrackClass ModelVideoTrackClass; +typedef struct _ModelVideoTrackPrivate ModelVideoTrackPrivate; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelTrack { + GObject parent_instance; + ModelTrackPrivate * priv; + ModelProject* project; + GeeArrayList* clips; + char* display_name; +}; + +struct _ModelTrackClass { + GObjectClass parent_class; + char* (*name) (ModelTrack* self); + ModelMediaType (*media_type) (ModelTrack* self); + gboolean (*check) (ModelTrack* self, ModelClip* clip); + void (*on_clip_updated) (ModelTrack* self, ModelClip* clip); + void (*write_attributes) (ModelTrack* self, FILE* f); +}; + +struct _ModelVideoTrack { + ModelTrack parent_instance; + ModelVideoTrackPrivate * priv; +}; + +struct _ModelVideoTrackClass { + ModelTrackClass parent_class; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + + +extern Fraction model_project_INVALID_FRAME_RATE; +static gpointer model_video_track_parent_class = NULL; + +GType model_track_get_type (void); +GType model_media_type_get_type (void); +GType model_clip_get_type (void); +GType model_project_get_type (void); +GType model_video_track_get_type (void); +enum { + MODEL_VIDEO_TRACK_DUMMY_PROPERTY +}; +ModelTrack* model_track_construct (GType object_type, ModelProject* project, const char* display_name); +ModelVideoTrack* model_video_track_new (ModelProject* project); +ModelVideoTrack* model_video_track_construct (GType object_type, ModelProject* project); +static char* model_video_track_real_name (ModelTrack* base); +static ModelMediaType model_video_track_real_media_type (ModelTrack* base); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType model_clip_file_get_type (void); +gboolean model_clip_file_is_online (ModelClipFile* self); +gboolean model_video_track_get_framerate (ModelVideoTrack* self, Fraction* rate); +gboolean model_clip_file_get_frame_rate (ModelClipFile* self, Fraction* rate); +gboolean fraction_equal (Fraction *self, Fraction* f); +static gboolean model_video_track_real_check (ModelTrack* base, ModelClip* clip); +static gint64 model_video_track_frame_to_time (ModelVideoTrack* self, gint frame); +gint time_to_frame_with_rate (gint64 time, Fraction* rate); +static gint model_video_track_time_to_frame (ModelVideoTrack* self, gint64 time); +gint model_video_track_get_current_frame (ModelVideoTrack* self, gint64 time); +gint64 model_video_track_previous_frame (ModelVideoTrack* self, gint64 position); +gint64 model_video_track_next_frame (ModelVideoTrack* self, gint64 position); +GType model_tempo_information_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType view_media_engine_get_type (void); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +GType model_library_importer_get_type (void); + + + +#line 11 "video_track.vala" +ModelVideoTrack* model_video_track_construct (GType object_type, ModelProject* project) { +#line 280 "video_track.c" + ModelVideoTrack * self; +#line 11 "video_track.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 12 "video_track.vala" + self = (ModelVideoTrack*) model_track_construct (object_type, project, "Video Track"); +#line 286 "video_track.c" + return self; +} + + +#line 11 "video_track.vala" +ModelVideoTrack* model_video_track_new (ModelProject* project) { +#line 11 "video_track.vala" + return model_video_track_construct (MODEL_TYPE_VIDEO_TRACK, project); +#line 295 "video_track.c" +} + + +#line 15 "video_track.vala" +static char* model_video_track_real_name (ModelTrack* base) { +#line 301 "video_track.c" + ModelVideoTrack * self; + char* result = NULL; + self = MODEL_VIDEO_TRACK (base); + result = g_strdup ("video"); +#line 15 "video_track.vala" + return result; +#line 308 "video_track.c" +} + + +#line 17 "video_track.vala" +static ModelMediaType model_video_track_real_media_type (ModelTrack* base) { +#line 314 "video_track.c" + ModelVideoTrack * self; + ModelMediaType result = 0; + self = MODEL_VIDEO_TRACK (base); + result = MODEL_MEDIA_TYPE_VIDEO; +#line 18 "video_track.vala" + return result; +#line 321 "video_track.c" +} + + +#line 21 "video_track.vala" +static gboolean model_video_track_real_check (ModelTrack* base, ModelClip* clip) { +#line 327 "video_track.c" + ModelVideoTrack * self; + gboolean result = FALSE; + Fraction rate1 = {0}; + Fraction rate2 = {0}; + self = MODEL_VIDEO_TRACK (base); +#line 21 "video_track.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), FALSE); +#line 25 "video_track.vala" + if (!model_clip_file_is_online (clip->clipfile)) { +#line 337 "video_track.c" + result = TRUE; +#line 26 "video_track.vala" + return result; +#line 341 "video_track.c" + } +#line 28 "video_track.vala" + if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) { +#line 345 "video_track.c" + result = TRUE; +#line 29 "video_track.vala" + return result; +#line 349 "video_track.c" + } +#line 31 "video_track.vala" + if (!model_video_track_get_framerate (self, &rate2)) { +#line 32 "video_track.vala" + g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "Cannot get initial frame rate!", NULL); +#line 355 "video_track.c" + result = FALSE; +#line 33 "video_track.vala" + return result; +#line 359 "video_track.c" + } +#line 36 "video_track.vala" + if (!model_clip_file_get_frame_rate (clip->clipfile, &rate1)) { +#line 37 "video_track.vala" + g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "can't get frame rate", NULL); +#line 365 "video_track.c" + result = FALSE; +#line 38 "video_track.vala" + return result; +#line 369 "video_track.c" + } +#line 41 "video_track.vala" + if (!fraction_equal (&rate1, &rate2)) { +#line 42 "video_track.vala" + g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "can't insert clip with different frame rate", NULL); +#line 375 "video_track.c" + result = FALSE; +#line 43 "video_track.vala" + return result; +#line 379 "video_track.c" + } + result = TRUE; +#line 45 "video_track.vala" + return result; +#line 384 "video_track.c" +} + + +#line 63 "video_track.vala" +static gint64 model_video_track_frame_to_time (ModelVideoTrack* self, gint frame) { +#line 390 "video_track.c" + gint64 result = 0LL; + Fraction rate = {0}; +#line 63 "video_track.vala" + g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0LL); +#line 65 "video_track.vala" + if (!model_video_track_get_framerate (self, &rate)) { +#line 397 "video_track.c" + result = (gint64) 0; +#line 66 "video_track.vala" + return result; +#line 401 "video_track.c" + } + result = (gint64) gst_util_uint64_scale ((guint64) frame, (guint64) (GST_SECOND * rate.denominator), (guint64) rate.numerator); +#line 68 "video_track.vala" + return result; +#line 406 "video_track.c" +} + + +#line 71 "video_track.vala" +static gint model_video_track_time_to_frame (ModelVideoTrack* self, gint64 time) { +#line 412 "video_track.c" + gint result = 0; + Fraction rate = {0}; +#line 71 "video_track.vala" + g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0); +#line 73 "video_track.vala" + if (!model_video_track_get_framerate (self, &rate)) { +#line 419 "video_track.c" + result = 0; +#line 74 "video_track.vala" + return result; +#line 423 "video_track.c" + } + result = time_to_frame_with_rate (time, &rate); +#line 75 "video_track.vala" + return result; +#line 428 "video_track.c" +} + + +#line 78 "video_track.vala" +gint model_video_track_get_current_frame (ModelVideoTrack* self, gint64 time) { +#line 434 "video_track.c" + gint result = 0; +#line 78 "video_track.vala" + g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0); +#line 438 "video_track.c" + result = model_video_track_time_to_frame (self, time); +#line 79 "video_track.vala" + return result; +#line 442 "video_track.c" +} + + +#line 82 "video_track.vala" +gint64 model_video_track_previous_frame (ModelVideoTrack* self, gint64 position) { +#line 448 "video_track.c" + gint64 result = 0LL; + gint frame; +#line 82 "video_track.vala" + g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0LL); +#line 83 "video_track.vala" + frame = model_video_track_time_to_frame (self, position); +#line 455 "video_track.c" + result = model_video_track_frame_to_time (self, frame - 1); +#line 84 "video_track.vala" + return result; +#line 459 "video_track.c" +} + + +#line 87 "video_track.vala" +gint64 model_video_track_next_frame (ModelVideoTrack* self, gint64 position) { +#line 465 "video_track.c" + gint64 result = 0LL; + gint frame; +#line 87 "video_track.vala" + g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0LL); +#line 88 "video_track.vala" + frame = model_video_track_time_to_frame (self, position); +#line 472 "video_track.c" + result = model_video_track_frame_to_time (self, frame + 1); +#line 89 "video_track.vala" + return result; +#line 476 "video_track.c" +} + + +#line 92 "video_track.vala" +gboolean model_video_track_get_framerate (ModelVideoTrack* self, Fraction* rate) { +#line 482 "video_track.c" + gboolean result = FALSE; +#line 92 "video_track.vala" + g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), FALSE); +#line 93 "video_track.vala" + if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) { +#line 488 "video_track.c" + result = FALSE; +#line 94 "video_track.vala" + return result; +#line 492 "video_track.c" + } + { + GeeIterator* _c_it; + _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_TRACK (self)->clips)); +#line 96 "video_track.vala" + while (TRUE) { +#line 499 "video_track.c" + ModelClip* c; +#line 96 "video_track.vala" + if (!gee_iterator_next (_c_it)) { +#line 96 "video_track.vala" + break; +#line 505 "video_track.c" + } +#line 96 "video_track.vala" + c = (ModelClip*) gee_iterator_get (_c_it); +#line 97 "video_track.vala" + if (model_clip_file_is_online (c->clipfile)) { +#line 511 "video_track.c" + gboolean can; +#line 98 "video_track.vala" + can = model_clip_file_get_frame_rate (c->clipfile, rate); +#line 99 "video_track.vala" + g_assert (can); +#line 517 "video_track.c" + result = can; + _g_object_unref0 (c); + _g_object_unref0 (_c_it); +#line 101 "video_track.vala" + return result; +#line 523 "video_track.c" + } + _g_object_unref0 (c); + } + _g_object_unref0 (_c_it); + } +#line 105 "video_track.vala" + if (fraction_equal (&MODEL_TRACK (self)->project->default_framerate, &model_project_INVALID_FRAME_RATE)) { +#line 531 "video_track.c" + result = FALSE; +#line 106 "video_track.vala" + return result; +#line 535 "video_track.c" + } +#line 108 "video_track.vala" + *rate = MODEL_TRACK (self)->project->default_framerate; +#line 539 "video_track.c" + result = TRUE; +#line 109 "video_track.vala" + return result; +#line 543 "video_track.c" +} + + +static void model_video_track_class_init (ModelVideoTrackClass * klass) { + model_video_track_parent_class = g_type_class_peek_parent (klass); + MODEL_TRACK_CLASS (klass)->name = model_video_track_real_name; + MODEL_TRACK_CLASS (klass)->media_type = model_video_track_real_media_type; + MODEL_TRACK_CLASS (klass)->check = model_video_track_real_check; +} + + +static void model_video_track_instance_init (ModelVideoTrack * self) { +} + + +GType model_video_track_get_type (void) { + static volatile gsize model_video_track_type_id__volatile = 0; + if (g_once_init_enter (&model_video_track_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelVideoTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_video_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelVideoTrack), 0, (GInstanceInitFunc) model_video_track_instance_init, NULL }; + GType model_video_track_type_id; + model_video_track_type_id = g_type_register_static (MODEL_TYPE_TRACK, "ModelVideoTrack", &g_define_type_info, 0); + g_once_init_leave (&model_video_track_type_id__volatile, model_video_track_type_id); + } + return model_video_track_type_id__volatile; +} + + + + diff --git a/src/marina/marina/video_track.o b/src/marina/marina/video_track.o new file mode 100644 index 0000000000000000000000000000000000000000..42fcd47f2efa00a9f3c07eaa15588e8f42fa961b GIT binary patch literal 28496 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 literal 0 HcmV?d00001 diff --git a/src/marina/project.vala b/src/marina/project.vala new file mode 100644 index 0000000..22b1d93 --- /dev/null +++ b/src/marina/project.vala @@ -0,0 +1,1143 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +extern const string _VERSION; + +namespace Model { +public class MediaLoaderHandler : LoaderHandler { + protected weak Project the_project; + protected Track current_track; + + Gee.ArrayList clipfetchers = new Gee.ArrayList(); + int num_clipfiles_complete; + + public MediaLoaderHandler(Project the_project) { + this.the_project = the_project; + current_track = null; + } + + public override bool commit_marina(string[] attr_names, string[] attr_values) { + int number_of_attributes = attr_names.length; + if (number_of_attributes != 1 || + attr_names[0] != "version") { + load_error("Missing version information"); + return false; + } + + if (the_project.get_file_version() < attr_values[0].to_int()) { + load_error("Version mismatch! (File Version: %d, App Version: %d)".printf( + the_project.get_file_version(), attr_values[0].to_int())); + return false; + } + + num_clipfiles_complete = 0; + return true; + } + + public override bool commit_library(string[] attr_names, string[] attr_values) { + // We return true since framerate is an optional parameter + if (attr_names.length != 1) + return true; + + if (attr_names[0] != "framerate") { + load_error("Missing framerate tag"); + return false; + } + + string[] arr = attr_values[0].split("/"); + if (arr.length != 2) { + load_error("Invalid framerate attribute"); + return false; + } + + the_project.set_default_framerate(Fraction(arr[0].to_int(), arr[1].to_int())); + return true; + } + + public override bool commit_track(string[] attr_names, string[] attr_values) { + assert(current_track == null); + + int number_of_attributes = attr_names.length; + string? name = null; + string? type = null; + for (int i = 0; i < number_of_attributes; ++i) { + switch(attr_names[i]) { + case "type": + type = attr_values[i]; + break; + case "name": + name = attr_values[i]; + break; + default: + break; + } + } + + if (name == null) { + load_error("Missing track name"); + return false; + } + + if (type == null) { + load_error("Missing track type"); + return false; + } + + if (type == "audio") { + AudioTrack audio_track = new AudioTrack(the_project, name); + current_track = audio_track; + the_project.add_track(current_track); + + for (int i = 0; i < number_of_attributes; ++i) { + switch(attr_names[i]) { + case "panorama": + audio_track._set_pan(attr_values[i].to_double()); + break; + case "volume": + audio_track._set_volume(attr_values[i].to_double()); + break; + case "channels": + audio_track.set_default_num_channels(attr_values[i].to_int()); + break; + default: + break; + } + } + return true; + } else if (type == "video") { + current_track = new VideoTrack(the_project); + the_project.add_track(current_track); + } + + return base.commit_track(attr_names, attr_values); + } + + public override void leave_track() { + assert(current_track != null); + current_track = null; + } + + public override bool commit_clip(string[] attr_names, string[] attr_values) { + assert(current_track != null); + + int number_of_attributes = attr_names.length; + int id = -1; + string? clip_name = null; + int64 start = -1; + int64 media_start = -1; + int64 duration = -1; + for (int i = 0; i < number_of_attributes; i++) { + switch (attr_names[i]) { + case "id": + id = attr_values[i].to_int(); + break; + case "name": + clip_name = attr_values[i]; + break; + case "start": + start = attr_values[i].to_int64(); + break; + case "media-start": + media_start = attr_values[i].to_int64(); + break; + case "duration": + duration = attr_values[i].to_int64(); + break; + default: + // TODO: we need a way to deal with orphaned attributes, for now, reject the file + load_error("Unknown attribute %s".printf(attr_names[i])); + return false; + } + } + + if (id == -1) { + load_error("missing clip id"); + return false; + } + + if (clip_name == null) { + load_error("missing clip_name"); + return false; + } + + if (start == -1) { + load_error("missing start time"); + return false; + } + + if (media_start == -1) { + load_error("missing media_start"); + return false; + } + + if (duration == -1) { + load_error("missing duration"); + return false; + } + + if (id >= clipfetchers.size) { + load_error("clip file id %s was not loaded".printf(clip_name)); + return false; + } + + Clip clip = new Clip(clipfetchers[id].clipfile, current_track.media_type(), clip_name, + start, media_start, duration, false); + current_track.add(clip, start, false); + return true; + } + + void fetcher_ready(Fetcher f) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "fetcher_ready"); + if (f.error_string != null) { + load_error("Could not load %s.".printf(f.clipfile.filename)); + warning("Could not load %s: %s", f.clipfile.filename, f.error_string); + } + the_project.add_clipfile(f.clipfile); + num_clipfiles_complete++; + if (num_clipfiles_complete == clipfetchers.size) { + complete(); + } + } + + public override bool commit_clipfile(string[] attr_names, string[] attr_values) { + string filename = null; + int id = -1; + + for (int i = 0; i < attr_names.length; i++) { + if (attr_names[i] == "filename") { + filename = attr_values[i]; + } else if (attr_names[i] == "id") { + id = attr_values[i].to_int(); + } + } + + if (filename == null) { + load_error("Invalid clipfile filename"); + return false; + } + + if (id < 0) { + load_error("Invalid clipfile id"); + return false; + } + + try { + ClipFetcher fetcher = new ClipFetcher(filename); + fetcher.ready.connect(fetcher_ready); + clipfetchers.insert(id, fetcher); + } catch (Error e) { + load_error(e.message); + return false; + } + return true; + } + + public override bool commit_tempo_entry(string[] attr_names, string[] attr_values) { + if (attr_names[0] != "tempo") { + load_error("Invalid attribute on tempo entry"); + return false; + } + + the_project._set_bpm(attr_values[0].to_int()); + return true; + } + + public override bool commit_time_signature_entry(string[] attr_names, string[] attr_values) { + if (attr_names[0] != "signature") { + load_error("Invalid attribute on time signature"); + return false; + } + + the_project._set_time_signature(Fraction.from_string(attr_values[0])); + return true; + } + + public override bool commit_click(string[] attr_names, string[] attr_values) { + for (int i = 0; i < attr_names.length; ++i) { + switch (attr_names[i]) { + case "on_play": + the_project.click_during_play = attr_values[i] == "true"; + break; + case "on_record": + the_project.click_during_record = attr_values[i] == "true"; + break; + case "volume": + the_project.click_volume = attr_values[i].to_double(); + break; + default: + load_error("unknown attribute for click '%s'".printf(attr_names[i])); + return false; + } + } + return true; + } + + public override bool commit_library_preference(string[] attr_names, string[] attr_values) { + for (int i = 0; i < attr_names.length; ++i) { + switch (attr_names[i]) { + case "width": + the_project.library_width = attr_values[i].to_int(); + break; + case "visible": + the_project.library_visible = attr_values[i] == "true"; + break; + default: + load_error("unknown attribute for library '%s'".printf(attr_names[i])); + return false; + } + } + return true; + } + + public override void leave_library() { + if (clipfetchers.size == 0) + complete(); + } +} + +public abstract class Project : TempoInformation, Object { + public const string FILLMORE_FILE_EXTENSION = "fill"; + public const string FILLMORE_FILE_FILTER = "*." + FILLMORE_FILE_EXTENSION; + public const string LOMBARD_FILE_EXTENSION = "lom"; + public const string LOMBARD_FILE_FILTER = "*." + LOMBARD_FILE_EXTENSION; + + const string license = """ +%s is free software; you can redistribute it and/or modify it under the +terms of the GNU Lesser General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) +any later version. + +%s is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +more details. + +You should have received a copy of the GNU Lesser General Public License +along with %s; if not, write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +"""; + + public const string[] authors = { + "Robert Powell ", + "Adam Dingle ", + "Andrew O'Mahony ", + "Dru Moore ", + null + }; + + public Gee.ArrayList tracks = new Gee.ArrayList(); + public Gee.ArrayList inactive_tracks = new Gee.ArrayList(); + Gee.HashSet pending = new Gee.HashSet(); + Gee.ArrayList pending_thumbs = new Gee.ArrayList(); + protected Gee.ArrayList clipfiles = new Gee.ArrayList(); + // TODO: media_engine is a member of project only temporarily. It will be + // less work to move it to fillmore/lombard once we have a transport class. + public View.MediaEngine media_engine; + + protected string project_file; // may be null if project has not yet been saved + public ProjectLoader loader; + + FetcherCompletion fetcher_completion; + public UndoManager undo_manager; + public LibraryImporter importer; + + public Fraction default_framerate; + int tempo = 120; + Fraction time_signature = Fraction(4, 4); + public bool click_during_play = false; + public bool click_during_record = true; + public double click_volume = 0.8; + public bool library_visible = true; + public int library_width = 600; + public bool snap_to_clip; + + /* TODO: + * This can't be const since the Vala compiler (0.7.7) crashes if we try to make it a const. + * I've filed a bug with the Vala bugzilla for this: + * https://bugzilla.gnome.org/show_bug.cgi?id=598204 + */ + public static Fraction INVALID_FRAME_RATE = Fraction(-1, 1); + + public signal void playstate_changed(PlayState playstate); + + public signal void name_changed(string? project_file); + public signal void load_error(string error); + public virtual signal void load_complete() { + } + + public signal void closed(); + + public signal void track_added(Track track); + public signal void track_removed(Track track); + public signal void error_occurred(string major_message, string? minor_message); + + public signal void clipfile_added(ClipFile c); + public signal void clipfile_removed(ClipFile clip_file); + public signal void cleared(); + + public abstract TimeCode get_clip_time(ClipFile f); + + public Project(string? filename, bool include_video) throws Error { + undo_manager = new UndoManager(); + project_file = filename; + + media_engine = new View.MediaEngine(this, include_video); + track_added.connect(media_engine.on_track_added); + media_engine.playstate_changed.connect(on_playstate_changed); + media_engine.error_occurred.connect(on_error_occurred); + + set_default_framerate(INVALID_FRAME_RATE); + } + + public void on_playstate_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_playstate_changed"); + switch (media_engine.get_play_state()) { + case PlayState.STOPPED: + ClearTrackMeters(); + break; + case PlayState.CLOSED: + closed(); + break; + } + playstate_changed(media_engine.get_play_state()); + } + + public virtual string? get_project_file() { + return project_file; + } + + public ClipFile? get_clipfile(int index) { + if (index < 0 || + index >= clipfiles.size) + return null; + return clipfiles[index]; + } + + public int get_clipfile_index(ClipFile find) { + int i = 0; + foreach (ClipFile f in clipfiles) { + if (f == find) + return i; + i++; + } + return -1; + } + + public Track? track_from_clip(Clip clip) { + foreach (Track track in tracks) { + foreach (Clip match in track.clips) { + if (match == clip) { + return track; + } + } + } + return null; + } + + public void print_graph(Gst.Bin bin, string file_name) { + Gst.debug_bin_to_dot_file_with_ts(bin, Gst.DebugGraphDetails.ALL, file_name); + } + + public int64 get_length() { + int64 max = 0; + foreach (Track track in tracks) { + max = int64.max(max, track.get_length()); + } + return max; + } + + public int64 snap_clip(Clip c, int64 span) { + foreach (Track track in tracks) { + int64 new_start = track.snap_clip(c, span); + if (new_start != c.start) { + return new_start; + } + } + return c.start; + } + + public void snap_coord(out int64 coord, int64 span) { + foreach (Track track in tracks) { + if (track.snap_coord(out coord, span)) { + break; + } + } + } + + Gap get_gap_intersection(Gap gap) { + Gap intersection = gap; + + foreach (Track track in tracks) { + intersection = intersection.intersect(track.find_first_gap(intersection.start)); + } + + return intersection; + } + + public bool can_delete_gap(Gap gap) { + Gap intersection = get_gap_intersection(gap); + return !intersection.is_empty(); + } + + public void delete_gap(Gap gap) { + Gap intersection = get_gap_intersection(gap); + assert(!intersection.is_empty()); + + foreach (Track track in tracks) { + track.delete_gap(intersection); + } + } + + protected virtual void do_append(Track track, ClipFile clipfile, string name, + int64 insert_time) { + switch(track.media_type()) { + case MediaType.AUDIO: + if (clipfile.audio_caps == null) { + return; + } + break; + case MediaType.VIDEO: + if (clipfile.video_caps == null) { + return; + } + break; + } + + Clip clip = new Clip(clipfile, track.media_type(), name, 0, 0, clipfile.length, false); + track.append_at_time(clip, insert_time, true); + } + + public void append(Track track, ClipFile clipfile) { + string name = isolate_filename(clipfile.filename); + int64 insert_time = 0; + + foreach (Track temp_track in tracks) { + insert_time = int64.max(insert_time, temp_track.get_length()); + } + do_append(track, clipfile, name, insert_time); + } + + public void add(Track track, ClipFile clipfile, int64 time) { + string name = isolate_filename(clipfile.filename); + do_append(track, clipfile, name, time); + } + + public void on_clip_removed(Track t, Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_removed"); + reseek(); + } + + public void split_at_playhead() { + string description = "Split At Playhead"; + undo_manager.start_transaction(description); + foreach (Track track in tracks) { + if (track.get_clip_by_position(transport_get_position()) != null) { + track.split_at(transport_get_position()); + } + } + undo_manager.end_transaction(description); + } + + public bool can_trim(out bool left) { + Clip first_clip = null; + + // When trimming multiple clips, we allow trimming left only if both clips already start + // at the same position, and trimming right only if both clips already end at the same + // position. + + int64 start = 0; + int64 end = 0; + bool start_same = true; + bool end_same = true; + foreach (Track track in tracks) { + Clip clip = track.get_clip_by_position(transport_get_position()); + if (first_clip != null && clip != null) { + start_same = start_same && start == clip.start; + end_same = end_same && end == clip.end; + } else if (clip != null) { + first_clip = clip; + start = first_clip.start; + end = first_clip.end; + } + } + + if (first_clip == null) { + return false; + } + + if (start_same && !end_same) { + left = true; + return true; + } + + if (!start_same && end_same) { + left = false; + return true; + } + + // which half of the clip are we closer to? + left = (transport_get_position() - first_clip.start < first_clip.duration / 2); + return true; + } + + public void trim_to_playhead() { + bool left; + if (!can_trim(out left)) { + return; + } + string description = "Trim To Playhead"; + Clip first_clip = null; + undo_manager.start_transaction(description); + foreach (Track track in tracks) { + Clip clip = track.get_clip_by_position(transport_get_position()); + if (clip != null) { + int64 delta; + if (left) { + delta = transport_get_position() - clip.start; + } else { + delta = transport_get_position() - clip.end; + } + track.trim(clip, delta, left ? Gdk.WindowEdge.WEST : Gdk.WindowEdge.EAST); + } + } + undo_manager.end_transaction(description); + + if (left && first_clip != null) { + transport_go(first_clip.start); + } + } + + public void transport_go(int64 position) { + media_engine.go(position); + } + + public bool transport_is_playing() { + return media_engine.playing; + } + + public bool transport_is_recording() { + return media_engine.get_play_state() == PlayState.PRE_RECORD || + media_engine.get_play_state() == PlayState.RECORDING; + } + + public bool playhead_on_clip() { + foreach (Track track in tracks) { + if (track.get_clip_by_position(transport_get_position()) != null) { + return true; + } + } + return false; + } + + public bool playhead_on_contiguous_clip() { + foreach (Track track in tracks) { + if (track.are_contiguous_clips(transport_get_position())) { + return true; + } + } + return false; + } + + public bool is_duplicate_track_name(Track? track, string new_name) { + assert(new_name != ""); + foreach (Track this_track in tracks) { + if (track != this_track) { + if (this_track.get_display_name() == new_name) { + return true; + } + } + } + + foreach (Track this_track in inactive_tracks) { + if (track != this_track) { + if (this_track.get_display_name() == new_name) { + return true; + } + } + } + return false; + } + + public virtual void add_track(Track track) { + track.clip_removed.connect(on_clip_removed); + track.error_occurred.connect(on_error_occurred); + tracks.add(track); + track_added(track); + } + public virtual void insert_track(int index, Track track) { + if (0 > index) index = 0; + if (tracks.size <= index) { + add_track(track); + } + else { + track.clip_removed.connect(on_clip_removed); + track.error_occurred.connect(on_error_occurred); + tracks.insert(index, track); + track_added(track); + } + } + + public void add_inactive_track(Track track) { + track.hide(); + inactive_tracks.add(track); + } + + public void remove_track(Track track) { + media_engine.pipeline.set_state(Gst.State.NULL); + track.track_removed(track); + tracks.remove(track); + track_removed(track); + } + + public void remove_track_at(int index) { + remove_track(tracks.get(index)); + } + + public void add_clipfile(ClipFile clipfile) { + Model.Command command = new Model.AddClipCommand(this, clipfile); + do_command(command); + } + + public void _add_clipfile(ClipFile clipfile) throws Error { + clipfiles.add(clipfile); + if (clipfile.is_online() && clipfile.is_of_type(MediaType.VIDEO)) { + ThumbnailFetcher fetcher = new ThumbnailFetcher(clipfile, 0); + fetcher.ready.connect(on_thumbnail_ready); + pending_thumbs.add(fetcher); + } else { + clipfile_added(clipfile); + } + } + + void on_thumbnail_ready(Fetcher f) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_thumbnail_ready"); + clipfile_added(f.clipfile); + pending_thumbs.remove(f as ThumbnailFetcher); + } + + public bool clipfile_on_track(string filename) { + ClipFile cf = find_clipfile(filename); + + foreach (Track t in tracks) { + foreach (Clip c in t.clips) { + if (c.clipfile == cf) + return true; + } + } + + foreach (Track t in inactive_tracks) { + foreach (Clip c in t.clips) { + if (c.clipfile == cf) + return true; + } + } + + return false; + } + + void delete_clipfile_from_tracks(ClipFile cf) { + foreach (Track t in tracks) { + for (int i = 0; i < t.clips.size; i++) { + if (t.clips[i].clipfile == cf) { + t.delete_clip(t.clips[i]); + i --; + } + } + } + + foreach (Track t in inactive_tracks) { + for (int i = 0; i < t.clips.size; i++) { + if (t.clips[i].clipfile == cf) { + t.delete_clip(t.clips[i]); + i --; + } + } + } + } + + public void _remove_clipfile(ClipFile cf) { + clipfiles.remove(cf); + clipfile_removed(cf); + } + + public void remove_clipfile(string filename) { + ClipFile cf = find_clipfile(filename); + if (cf != null) { + string description = "Delete From Library"; + undo_manager.start_transaction(description); + + delete_clipfile_from_tracks(cf); + + Command clipfile_delete = new ClipFileDeleteCommand(this, cf); + do_command(clipfile_delete); + + undo_manager.end_transaction(description); + } + } + + public ClipFile? find_clipfile(string filename) { + foreach (ClipFile cf in clipfiles) + if (cf.filename == filename) + return cf; + return null; + } + + public void reseek() { transport_go(transport_get_position()); } + + public void go_start() { transport_go(0); } + + public void go_end() { transport_go(get_length()); } + + public void go_previous() { + int64 start_pos = transport_get_position(); + + // If we're currently playing, we jump to the previous clip if we're within the first + // second of the current clip. + if (transport_is_playing()) + start_pos -= 1 * Gst.SECOND; + + int64 new_position = 0; + foreach (Track track in tracks) { + new_position = int64.max(new_position, track.previous_edit(start_pos)); + } + transport_go(new_position); + } + + // Move to the next clip boundary after the current transport position. + public void go_next() { + int64 start_pos = transport_get_position(); + int64 new_position = get_length(); + foreach (Track track in tracks) { + if (track.get_length() > start_pos) { + new_position = int64.min(new_position, track.next_edit(start_pos)); + } + } + transport_go(new_position); + } + + public int64 transport_get_position() { + return media_engine.position; + } + + public void set_name(string? filename) { + if (filename != null) { + this.project_file = filename; + } + name_changed(filename); + } + + public void set_default_framerate(Fraction rate) { + default_framerate = rate; + } + + public string get_file_display_name() { + string filename = get_project_file(); + if (filename == null) { + return "Unsaved Project - %s".printf(get_app_name()); + } + else { + string dir = Path.get_dirname(filename); + string name = Path.get_basename(filename); + string home_path = GLib.Environment.get_home_dir(); + + if (dir == ".") + dir = GLib.Environment.get_current_dir(); + + if (dir.has_prefix(home_path)) + dir = "~" + dir.substring(home_path.length); + return "%s (%s) - %s".printf(name, dir, get_app_name()); + } + } + + public void clear() { + media_engine.set_gst_state(Gst.State.NULL); + + foreach (Track track in tracks) { + track.delete_all_clips(); + track.track_removed(track); + track_removed(track); + } + + tracks.clear(); + + clipfiles.clear(); + set_name(null); + cleared(); + } + + public bool can_export() { + if (media_engine.get_play_state() != PlayState.STOPPED) { + return false; + } + foreach (Track track in tracks) { + if (track.get_length() > 0) { + return true; + } + } + return false; + } + + public void on_load_started(string filename) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_started"); + project_file = filename; + } + + void on_load_error(string error) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_error"); + load_error(error); + } + + void on_load_complete() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_load_complete"); + undo_manager.reset(); + set_name(project_file); + load_complete(); + } + + // Load a project file. The load is asynchronous: it may continue after this method returns. + // Any load error will be reported via the load_error signal, which may run either while this + // method executes or afterward. + public virtual void load(string? fname) { + emit(this, Facility.LOADING, Level.INFO, "loading project"); + clear(); + set_name(null); + if (fname == null) { + return; + } + + loader = new ProjectLoader(new MediaLoaderHandler(this), fname); + + loader.load_started.connect(on_load_started); + loader.load_error.connect(on_load_error); + loader.load_complete.connect(on_load_complete); + loader.load_complete.connect(media_engine.on_load_complete); + media_engine.set_play_state(PlayState.LOADING); + media_engine.pipeline.set_state(Gst.State.NULL); + loader.load(); + } + + public void on_error_occurred(string major_error, string? minor_error) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_error_occurred"); + error_occurred(major_error, minor_error); + } + + public int get_file_version() { + return 4; + } + + public void save_library(FileStream f) { + f.printf(" \n"); + + for (int i = 0; i < clipfiles.size; i++) { + f.printf(" \n", clipfiles[i].filename, i); + } + + f.printf(" \n"); + } + + public virtual void save(string? filename) { + if (filename != null) { + set_name(filename); + } + + FileStream f = FileStream.open(project_file, "w"); + if (f == null) { + error_occurred("Could not save project", + "%s: %s".printf(project_file, GLib.strerror(GLib.errno))); + return; + } + f.printf("\n", get_file_version()); + + save_library(f); + + f.printf(" \n"); + foreach (Track track in tracks) { + track.save(f); + } + + foreach (Track track in inactive_tracks) { + track.save(f); + } + f.printf(" \n"); + f.printf(" \n"); + f.printf(" \n", + click_during_play ? "true" : "false", + click_during_record ? "true" : "false", + click_volume); + f.printf(" \n", + library_width, library_visible ? "true" : "false"); + f.printf(" \n"); + f.printf(" \n"); + f.printf(" \n"); + f.printf(" \n", tempo); + f.printf(" \n"); + f.printf(" \n"); + f.printf(" \n", time_signature.to_string()); + f.printf(" \n"); + f.printf(" \n"); + + f.printf("\n"); + f.flush(); + + // TODO: clean up responsibility between dirty and undo + undo_manager.mark_clean(); + } + + public void close() { + media_engine.close(); + } + + public void on_importer_clip_complete(ClipFetcher fetcher) { + if (fetcher.error_string != null) { + error_occurred("Error importing clip", fetcher.error_string); + } else { + fetcher_completion.complete(fetcher); + } + } + + public void create_clip_fetcher(FetcherCompletion fetcher_completion, string filename) + throws Error { + ClipFetcher fetcher = new ClipFetcher(filename); + this.fetcher_completion = fetcher_completion; + fetcher.ready.connect(on_fetcher_ready); + pending.add(fetcher); + } + + // TODO: We should be using Library importer rather than this mechanism for fillmore + void on_fetcher_ready(Fetcher fetcher) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_fetcher_ready"); + pending.remove(fetcher as ClipFetcher); + if (fetcher.error_string != null) { + emit(this, Facility.DEVELOPER_WARNINGS, Level.INFO, fetcher.error_string); + error_occurred("Error retrieving clip", fetcher.error_string); + } else { + if (get_clipfile_index(fetcher.clipfile) == -1) { + add_clipfile(fetcher.clipfile); + } + fetcher_completion.complete(fetcher); + } + } + + public bool is_project_extension(string filename) { + string extension = get_file_extension(filename); + return extension == LOMBARD_FILE_EXTENSION || extension == FILLMORE_FILE_EXTENSION; + } + + public void do_command(Command the_command) { + undo_manager.do_command(the_command); + } + + public void undo() { + undo_manager.undo(); + } + + void ClearTrackMeters() { + foreach (Track track in tracks) { + AudioTrack audio_track = track as AudioTrack; + if (audio_track != null) { + audio_track.level_changed(-100, -100); + } + } + } + + public void create_clip_importer(Model.Track? track, bool timeline_add, + int64 time_to_add, bool both_tracks, Gtk.Window? progress_window_parent, int number) { + if (timeline_add) { + assert(track != null); + importer = new Model.TimelineImporter(track, this, time_to_add, both_tracks); + } else { + importer = new Model.LibraryImporter(this); + } + if (progress_window_parent != null) { + new MultiFileProgress(progress_window_parent, number, "Import", + importer.importer); + } + + } + + public string get_version() { + return _VERSION; + } + + public abstract string get_app_name(); + + public string get_license() { + return license.printf(get_app_name(), get_app_name(), get_app_name()); + } + + public void set_time_signature(Fraction time_signature) { + TimeSignatureCommand command = new TimeSignatureCommand(this, time_signature); + undo_manager.do_command(command); + } + + public void _set_time_signature(Fraction time_signature) { + this.time_signature = time_signature; + time_signature_changed(time_signature); + } + + public Fraction get_time_signature() { + return time_signature; + } + + public void set_bpm(int bpm) { + BpmCommand command = new BpmCommand(this, bpm); + undo_manager.do_command(command); + } + + public void _set_bpm(int bpm) { + this.tempo = bpm; + bpm_changed(bpm); + } + + public int get_bpm() { + return tempo; + } + + public string get_audio_path() { + string path = get_path(); + return path == null ? null : Path.build_filename(path, "audio files"); + } + + string get_path() { + return project_file == null ? null : Path.get_dirname(project_file); + } + + public VideoTrack? find_video_track() { + foreach (Track track in tracks) { + if (track is VideoTrack) { + return track as VideoTrack; + } + } + return null; + } + + public AudioTrack? find_audio_track() { + foreach (Track track in tracks) { + if (track is AudioTrack) { + return track as AudioTrack; + } + } + return null; + } +} +} + diff --git a/src/marina/singledecodebin.vala b/src/marina/singledecodebin.vala new file mode 100644 index 0000000..adf9153 --- /dev/null +++ b/src/marina/singledecodebin.vala @@ -0,0 +1,370 @@ +/* Ported to Vala from singledecodebin.py in Pitivi: + * + * Copyright (c) 2005, Edward Hervey + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +using Gee; +using Logging; + +extern void qsort(void *p, size_t num, size_t size, GLib.CompareFunc func); + +// Single-stream queue-less decodebin + +// returns true if the caps are RAW +bool is_raw(Gst.Caps caps) { + string rep = caps.to_string(); + string[] valid = { "video/x-raw", "audio/x-raw", "text/plain", "text/x-pango-markup" }; + foreach (string val in valid) + if (rep.has_prefix(val)) + return true; + return false; +} + +// A variant of decodebin. +// Only outputs one stream; doesn't contain any internal queue. +class SingleDecodeBin : Gst.Bin { + Gst.Caps caps; + Gst.Element typefind; + Gst.GhostPad srcpad; + + ArrayList dynamics = new ArrayList(); + ArrayList validelements = new ArrayList(); // added elements + Gst.ElementFactory[] factories; + + const int64 QUEUE_SIZE = 1 * Gst.SECOND; + + class construct { + Gst.PadTemplate sink_pad = new Gst.PadTemplate("sinkpadtemplate", Gst.PadDirection.SINK, + Gst.PadPresence.ALWAYS, new Gst.Caps.any()); + Gst.PadTemplate src_pad = new Gst.PadTemplate("srcpadtemplate", Gst.PadDirection.SINK, + Gst.PadPresence.ALWAYS, new Gst.Caps.any()); + + add_pad_template (src_pad); + add_pad_template (sink_pad); + } + + public SingleDecodeBin(Gst.Caps? caps, string name, string? uri) throws Error { + this.caps = caps == null ? new Gst.Caps.any() : caps; + + typefind = Gst.ElementFactory.make("typefind", "internal-typefind"); + add(typefind); + + if (uri != null) { + Gst.Element file_src = make_element("filesrc"); + + file_src.set("location", uri); + add(file_src); + + file_src.link(typefind); + } else { + Gst.GhostPad sinkpad = new Gst.GhostPad("sink", typefind.get_pad("sink")); + sinkpad.set_active(true); + add_pad(sinkpad); + } + Signal.connect(typefind, "have-type", (Callback) typefindHaveTypeCb, this); + + factories = getSortedFactoryList(); + } + + // internal methods + + void controlDynamicElement(Gst.Element element) { + dynamics.add(element); + element.pad_added.connect(dynamicPadAddedCb); + element.no_more_pads.connect(dynamicNoMorePadsCb); + } + + static int factory_compare(Gst.ElementFactory** a, Gst.ElementFactory** b) { + Gst.PluginFeature* p1 = *(Gst.PluginFeature**)a; + Gst.PluginFeature* p2 = *(Gst.PluginFeature**)b; + return (int) (((Gst.PluginFeature) p2).get_rank() - ((Gst.PluginFeature) p1).get_rank()); + } + + // Returns the list of demuxers, decoders and parsers available, sorted by rank + Gst.ElementFactory[] getSortedFactoryList() { + Gst.Registry registry = Gst.Registry.get_default(); + Gst.ElementFactory[] factories = new Gst.ElementFactory[0]; + + foreach (Gst.PluginFeature plugin_feature in + registry.get_feature_list(typeof(Gst.ElementFactory)) ) { + + Gst.ElementFactory factory = plugin_feature as Gst.ElementFactory; + if (factory == null || factory.get_rank() < 64) + continue; + string klass = factory.get_klass(); + if (klass.contains("Demuxer") || klass.contains("Decoder") || klass.contains("Parse")) + factories += factory; + } + + qsort(factories, factories.length, sizeof(Gst.ElementFactory *), + (GLib.CompareFunc) factory_compare); + return factories; + } + + /* Returns a list of factories (sorted by rank) which can take caps as + * input. Returns empty list if none are compatible. */ + Gee.ArrayList findCompatibleFactory(Gst.Caps caps) { + Gee.ArrayList res = new Gee.ArrayList(); + + foreach (Gst.ElementFactory factory in factories) { + weak GLib.List templates = factory.get_static_pad_templates(); + foreach (Gst.StaticPadTemplate template in templates) + if (template.direction == Gst.PadDirection.SINK) { + Gst.Caps intersect = caps.intersect(template.static_caps.get()); + if (!intersect.is_empty()) { + res.add(factory); + break; + } + } + } + + return res; + } + + // Inspect element and try to connect something on the srcpads. + // If there are dynamic pads, set up a signal handler to + // continue autoplugging when they become available. + void closeLink(Gst.Element element) { + Gst.Pad[] to_connect = new Gst.Pad[0]; + bool is_dynamic = false; + + foreach (Gst.PadTemplate template in element.get_pad_template_list ()) { + if (template.direction != Gst.PadDirection.SRC) + continue; + if (template.presence == Gst.PadPresence.ALWAYS) { + Gst.Pad pad = element.get_pad(template.name_template); + to_connect += pad; + } else if (template.presence == Gst.PadPresence.SOMETIMES) { + Gst.Pad pad = element.get_pad(template.name_template); + if (pad != null) + to_connect += pad; + else is_dynamic = true; + } + } + + if (is_dynamic) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "%s is a dynamic element".printf(element.get_name())); + controlDynamicElement(element); + } + + foreach (Gst.Pad pad in to_connect) + closePadLink(element, pad, pad.get_caps()); + } + + bool isDemuxer(Gst.Element element) { + if (!element.get_factory().get_klass().contains("Demux")) + return false; + + int potential_src_pads = 0; + foreach (Gst.PadTemplate template in element.get_pad_template_list()) { + if (template.direction != Gst.PadDirection.SRC) + continue; + + if (template.presence == Gst.PadPresence.REQUEST || + template.name_template.contains("%")) { + potential_src_pads += 2; + break; + } else potential_src_pads += 1; + } + + return potential_src_pads > 1; + } + + Gst.Pad plugDecodingQueue(Gst.Pad pad) { + Gst.Element queue = Gst.ElementFactory.make("queue", null); + queue.set_property("max_size_time", QUEUE_SIZE); + add(queue); + queue.sync_state_with_parent(); + pad.link(queue.get_pad("sink")); + return queue.get_pad("src"); + } + + // Tries to link one of the factories' element to the given pad. + // Returns the element that was successfully linked to the pad. + Gst.Element tryToLink1(Gst.Element source, Gst.Pad in_pad, + Gee.ArrayList factories) { + Gst.Pad? pad = in_pad; + if (isDemuxer(source)) + pad = plugDecodingQueue(in_pad); + + Gst.Element result = null; + foreach (Gst.ElementFactory factory in factories) { + Gst.Element element = factory.create(null); + if (element == null) { + warning("couldn't create element from factory"); + continue; + } + + Gst.Pad sinkpad = element.get_pad("sink"); + if (sinkpad == null) + continue; + + add(element); + element.set_state(Gst.State.READY); + if (pad.link(sinkpad) != Gst.PadLinkReturn.OK) { + element.set_state(Gst.State.NULL); + remove(element); + continue; + } + + closeLink(element); + element.set_state(Gst.State.PAUSED); + + result = element; + break; + } + + return result; + } + + // Finds the list of elements that could connect to the pad. + // If the pad has the desired caps, it will create a ghostpad. + // If no compatible elements could be found, the search will stop. + void closePadLink(Gst.Element element, Gst.Pad pad, Gst.Caps caps) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "element:%s, pad:%s, caps:%s".printf(element.get_name(), + pad.get_name(), + caps.to_string())); + if (caps.is_empty()) { + emit(this, Facility.SINGLEDECODEBIN, Level.INFO, "unknown type"); + return; + } + if (caps.is_any()) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, "type is not known yet, waiting"); + return; + } + + pad.get_direction (); + + if (!caps.intersect(this.caps).is_empty()) { + // This is the desired caps + if (srcpad == null) + wrapUp(element, pad); + } else if (is_raw(caps)) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "We hit a raw caps which isn't the wanted one"); + // TODO : recursively remove everything until demux/typefind + } else { + // Find something + if (caps.get_size() > 1) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "many possible types, delaying"); + return; + } + Gee.ArrayList facts = findCompatibleFactory(caps); + if (facts.size == 0) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "unknown type"); + return; + } + tryToLink1(element, pad, facts); + } + } + + // Ghost the given pad of element. + // Remove non-used elements. + void wrapUp(Gst.Element element, Gst.Pad pad) { + if (srcpad != null) + return; + markValidElements(element); + removeUnusedElements(typefind); + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "ghosting pad %s".printf(pad.get_name())); + srcpad = new Gst.GhostPad("src", pad); + if (caps.is_fixed()) { + srcpad.set_caps(caps); + } + srcpad.set_active(true); + + add_pad(srcpad); + post_message(new Gst.Message.state_dirty(this)); + } + + // Mark this element and upstreams as valid + void markValidElements(Gst.Element element) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "element:%s".printf(element.get_name())); + if (element == typefind) + return; + validelements.add(element); + + // find upstream element + Gst.Pad pad = (Gst.Pad) element.sinkpads.first().data; + Gst.Element parent = pad.get_peer().get_parent_element(); + markValidElements(parent); + } + + // Remove unused elements connected to srcpad(s) of element + void removeUnusedElements(Gst.Element element) { + foreach (Gst.Pad pad in element.srcpads) + if (pad.is_linked()) { + Gst.Element peer = pad.get_peer().get_parent_element(); + removeUnusedElements(peer); + if (!(peer in validelements)) { + emit(this, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "removing %s".printf(peer.get_name())); + pad.unlink(pad.get_peer()); + peer.set_state(Gst.State.NULL); + remove(peer); + } + } + } + + void cleanUp() { + if (srcpad != null) + remove_pad(srcpad); + srcpad = null; + foreach (Gst.Element element in validelements) { + element.set_state(Gst.State.NULL); + remove(element); + } + validelements = new Gee.ArrayList(); + } + + // Overrides + + public override Gst.StateChangeReturn change_state(Gst.StateChange transition) { + Gst.StateChangeReturn res = base.change_state(transition); + if (transition == Gst.StateChange.PAUSED_TO_READY) + cleanUp(); + return res; + } + + // Signal callbacks + + static void typefindHaveTypeCb(Gst.Element t, int probability, Gst.Caps caps, + SingleDecodeBin data) { + emit(data, Facility.SINGLEDECODEBIN, Level.VERBOSE, + "probability:%d, caps:%s".printf(probability, caps.to_string())); + data.closePadLink(t, t.get_pad("src"), caps); + } + + // Dynamic element Callbacks + + void dynamicPadAddedCb(Gst.Element element, Gst.Pad pad) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "dynamicPadAddedCb"); + if (srcpad == null) + closePadLink(element, pad, pad.get_caps()); + } + + void dynamicNoMorePadsCb(Gst.Element element) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "dynamicNoMorePadsCb"); + } +} + diff --git a/src/marina/sources.mk b/src/marina/sources.mk new file mode 100644 index 0000000..7486e0f --- /dev/null +++ b/src/marina/sources.mk @@ -0,0 +1,28 @@ +$(SRC_PREFIX)SRC_FILES = \ + AppDirs.vala \ + AudioMeter.vala \ + ClassFactory.vala \ + ClipLibraryView.vala \ + clip.vala \ + command.vala \ + DialogUtils.vala \ + import.vala \ + Logging.vala \ + MediaEngine.vala \ + MultiFileProgress.vala \ + ProjectLoader.vala \ + project.vala \ + Ruler.vala \ + singledecodebin.vala \ + StatusBar.vala \ + thumbnailsink.vala \ + timeline.vala \ + TimeSystem.vala \ + track.vala \ + TrackView.vala \ + TransportDelegate.vala \ + ui_clip.vala \ + UndoManager.vala \ + util.vala \ + video_track.vala + diff --git a/src/marina/thumbnailsink.vala b/src/marina/thumbnailsink.vala new file mode 100644 index 0000000..fe4f358 --- /dev/null +++ b/src/marina/thumbnailsink.vala @@ -0,0 +1,68 @@ +class ThumbnailSink : Gst.BaseSink { + int width; + int height; + + const string caps_string = """video/x-raw-rgb,bpp = (int) 32, depth = (int) 32, + endianness = (int) BIG_ENDIAN, + blue_mask = (int) 0xFF000000, + green_mask = (int) 0x00FF0000, + red_mask = (int) 0x0000FF00, + width = (int) [ 1, max ], + height = (int) [ 1, max ], + framerate = (fraction) [ 0, max ]"""; + + public signal void have_thumbnail(Gdk.Pixbuf b); + + class construct { + Gst.StaticPadTemplate pad; + pad.name_template = "sink"; + pad.direction = Gst.PadDirection.SINK; + pad.presence = Gst.PadPresence.ALWAYS; + pad.static_caps.str = caps_string; + + add_pad_template(pad.get()); + } + + // This empty construct block eliminates a build warning about chaining up to a private + // constructor. + construct { + } + + public ThumbnailSink() { + set_sync(false); + } + + public override bool set_caps(Gst.Caps c) { + if (c.get_size() < 1) + return false; + + Gst.Structure s = c.get_structure(0); + + if (!s.get_int("width", out width) || + !s.get_int("height", out height)) + return false; + return true; + } + + void convert_pixbuf_to_rgb(Gdk.Pixbuf buf) { + uchar* data = buf.get_pixels(); + int limit = buf.get_width() * buf.get_height(); + + while (limit-- != 0) { + uchar temp = data[0]; + data[0] = data[2]; + data[2] = temp; + + data += 4; + } + } + + public override Gst.FlowReturn preroll(Gst.Buffer b) { + Gdk.Pixbuf buf = new Gdk.Pixbuf.from_data(b.data, Gdk.Colorspace.RGB, + true, 8, width, height, width * 4, null); + convert_pixbuf_to_rgb(buf); + + have_thumbnail(buf); + return Gst.FlowReturn.OK; + } +} diff --git a/src/marina/timeline.vala b/src/marina/timeline.vala new file mode 100644 index 0000000..cf8bdd5 --- /dev/null +++ b/src/marina/timeline.vala @@ -0,0 +1,617 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +public class TrackClipPair { + public TrackClipPair(Model.Track track, Model.Clip clip) { + this.track = track; + this.clip = clip; + } + public Model.Track track; + public Model.Clip clip; +} + +public class Clipboard { + public Gee.ArrayList clips = new Gee.ArrayList(); + int64 minimum_time = -1; + + public void select(Gee.ArrayList selected_clips) { + clips.clear(); + minimum_time = -1; + foreach(ClipView clip_view in selected_clips) { + TrackView track_view = clip_view.parent as TrackView; + if (minimum_time < 0 || clip_view.clip.start < minimum_time) { + minimum_time = clip_view.clip.start; + } + TrackClipPair track_clip_pair = new TrackClipPair(track_view.get_track(), clip_view.clip); + clips.add(track_clip_pair); + } + } + + public void paste(Model.Track selected_track, int64 time) { + if (clips.size != 1) { + foreach (TrackClipPair pair in clips) { + pair.track.do_clip_paste(pair.clip.copy(), time + pair.clip.start - minimum_time); + } + } else { + selected_track.do_clip_paste(clips[0].clip.copy(), time); + } + } +} + +public class TimeLine : Gtk.EventBox { + public Model.Project project; + public weak Model.TimeSystem provider; + public View.Ruler ruler; + Gtk.Widget drag_widget = null; + bool copying; + public Gee.ArrayList tracks = new Gee.ArrayList(); + Gtk.VBox vbox; + + public Gee.ArrayList selected_clips = new Gee.ArrayList(); + public Clipboard clipboard = new Clipboard(); + + public const int BAR_HEIGHT = 32; + public const int BORDER = 4; + + public signal void selection_changed(bool selected); + public signal void track_changed(); + public signal void trackview_added(TrackView trackview); + public signal void trackview_removed(TrackView trackview); + + float pixel_div; + float pixel_min = 0.1f; + float pixel_max = 4505.0f; + Gtk.Label high_water; + + public const int RULER_HEIGHT = 32; + // GapView will re-emerge after 0.1 release + // public GapView gap_view; + + public TimeLine(Model.Project p, Model.TimeSystem provider, Gdk.DragAction actions) { + add_events(Gdk.EventMask.POINTER_MOTION_MASK); + drag_widget = null; + can_focus = true; + project = p; + this.provider = provider; + provider.geometry_changed.connect(on_geometry_changed); + + vbox = new Gtk.VBox(false, 0); + ruler = new View.Ruler(provider, RULER_HEIGHT); + ruler.position_changed.connect(on_ruler_position_changed); + vbox.pack_start(ruler, false, false, 0); + + project.track_added.connect(on_track_added); + project.track_removed.connect(on_track_removed); + project.media_engine.position_changed.connect(on_position_changed); + add(vbox); + + modify_bg(Gtk.StateType.NORMAL, parse_color("#444")); + modify_fg(Gtk.StateType.NORMAL, parse_color("#f00")); + + pixel_div = pixel_max / pixel_min; + provider.calculate_pixel_step (0.5f, pixel_min, pixel_div); + Gtk.drag_dest_set(this, Gtk.DestDefaults.ALL, drag_target_entries, actions); + } + + public void zoom_to_project(double width) { + if (project.get_length() == 0) + return; + + // The 12.0 is just a magic number to completely get rid of the scrollbar on this operation + width -= 12.0; + + double numerator = GLib.Math.log( + (width * Gst.SECOND) / ((double) project.get_length() * (double) pixel_min)); + double denominator = GLib.Math.log((double) pixel_div); + + zoom((float) (numerator / denominator) - provider.get_pixel_percentage()); + } + + public void zoom(float inc) { + provider.calculate_pixel_step(inc, pixel_min, pixel_div); + foreach (TrackView track in tracks) { + track.resize(); + } + project.media_engine.position_changed(project.transport_get_position()); + queue_draw(); + } + + void on_geometry_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_geometry_changed"); + provider.calculate_pixel_step(0, pixel_min, pixel_div); + ruler.queue_draw(); + } + + void on_position_changed() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_position_changed"); + queue_draw(); + } + + void on_track_added(Model.Track track) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_added"); + TrackView track_view = ClassFactory.get_class_factory().get_track_view(track, this); + track_view.clip_view_added.connect(on_clip_view_added); + tracks.add(track_view); + vbox.pack_start(track_view, false, false, 0); + trackview_added(track_view); + if (track.media_type() == Model.MediaType.VIDEO) { + vbox.reorder_child(track_view, 1); + } + vbox.show_all(); + } + + void on_track_removed(Model.Track track) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_track_removed"); + foreach (TrackView track_view in tracks) { + if (track_view.get_track() == track) { + trackview_removed(track_view); + vbox.remove(track_view); + tracks.remove(track_view); + break; + } + } + } + + public void on_clip_view_added(ClipView clip_view) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_clip_view_added"); + clip_view.selection_request.connect(on_clip_view_selection_request); + clip_view.move_request.connect(on_clip_view_move_request); + clip_view.move_commit.connect(on_clip_view_move_commit); + clip_view.move_begin.connect(on_clip_view_move_begin); + clip_view.trim_begin.connect(on_clip_view_trim_begin); + clip_view.trim_commit.connect(on_clip_view_trim_commit); + } + + public void deselect_all_clips() { + foreach(ClipView selected_clip_view in selected_clips) { + selected_clip_view.is_selected = false; + } + selected_clips.clear(); + } + + void on_clip_view_move_begin(ClipView clip_view, bool copy) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_view_move_begin"); + copying = copy; + if (copy) { + project.undo_manager.start_transaction("Copy Clip"); + } + ClipView max_clip = null; + //The first pass removes the clips from the track model and makes any copies + foreach (ClipView selected_clip in selected_clips) { + if (max_clip == null) { + max_clip = selected_clip; + } else if (max_clip.clip.end < selected_clip.clip.end) { + max_clip = selected_clip; + } + selected_clip.initial_time = selected_clip.clip.start; + selected_clip.clip.gnonlin_disconnect(); + TrackView track_view = selected_clip.get_parent() as TrackView; + if (track_view != null) { + track_view.get_track().remove_clip_from_array(selected_clip.clip); + } + if (copy) { + // TODO: When adding in linking/groups, this should be moved into track_view + // We'll want to call move_begin for each clip that is linked, or in a group + // or selected and not iterate over them in this fashion in the timeline. + Model.Clip clip = selected_clip.clip.copy(); + track_view.get_track().append_at_time(clip, selected_clip.clip.start, false); + } + } + + high_water = new Gtk.Label(null); + Gtk.Fixed the_parent = clip_view.get_parent() as Gtk.Fixed; + the_parent.put(high_water, + max_clip.allocation.x + max_clip.allocation.width, max_clip.allocation.y); + + //The second pass moves the selected clips to the top. We can't do this in one pass + //because creating a copy inserts the new copy in the z-order at the top. + foreach (ClipView selected_clip in selected_clips) { + TrackView track_view = selected_clip.get_parent() as TrackView; + track_view.move_to_top(selected_clip); + } + } + + void on_clip_view_trim_begin(ClipView clip, Gdk.WindowEdge edge) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_view_trim_begin"); + switch (edge) { + case Gdk.WindowEdge.WEST: + clip.initial_time = clip.clip.start; + break; + case Gdk.WindowEdge.EAST: + clip.initial_time = clip.clip.duration; + break; + default: + assert(false); // We only support trimming east and west; + break; + } + } + + void on_clip_view_selection_request(ClipView clip_view, bool extend) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_view_selection_request"); +/* + if (gap_view != null) { + gap_view.unselect(); + } +*/ + bool in_selected_clips = selected_clips.contains(clip_view); + if (!extend) { + if (!in_selected_clips) { + deselect_all_clips(); + clip_view.is_selected = true; + selected_clips.add(clip_view); + } + } else { + if (selected_clips.size > 1) { + if (in_selected_clips && clip_view.is_selected) { + clip_view.is_selected = false; + // just deselected with multiple clips, so moving is not allowed + drag_widget = null; + selected_clips.remove(clip_view); + } + } + if (!in_selected_clips) { + clip_view.is_selected = true; + selected_clips.add(clip_view); + } + } + track_changed(); + selection_changed(is_clip_selected()); + queue_draw(); + } + + void on_clip_view_move_commit(ClipView clip_view, int64 delta) { + window.set_cursor(null); + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_view_move_request"); + Gtk.Fixed fixed = high_water.get_parent() as Gtk.Fixed; + fixed.remove(high_water); + high_water = null; + + project.undo_manager.start_transaction("Move Clip"); + foreach (ClipView selected_clip_view in selected_clips) { + TrackView track_view = selected_clip_view.get_parent() as TrackView; + selected_clip_view.clip.gnonlin_connect(); + track_view.get_track().move(selected_clip_view.clip, + selected_clip_view.clip.start, selected_clip_view.initial_time); + } + project.undo_manager.end_transaction("Move Clip"); + if (copying) { + copying = false; + project.undo_manager.end_transaction("Copy Clip"); + } + } + + void on_clip_view_trim_commit(ClipView clip_view, Gdk.WindowEdge edge) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_view_move_commit"); + window.set_cursor(null); + TrackView track_view = clip_view.get_parent() as TrackView; + int64 delta = 0; + switch (edge) { + case Gdk.WindowEdge.WEST: + delta = clip_view.clip.start - clip_view.initial_time; + break; + case Gdk.WindowEdge.EAST: + delta = clip_view.clip.duration - clip_view.initial_time; + break; + default: + assert(false); // We only handle WEST and EAST + break; + } + //restore back to pre-trim state + project.undo_manager.start_transaction("Trim Clip"); + clip_view.clip.trim(-delta, edge); + clip_view.clip.gnonlin_connect(); + track_view.get_track().trim(clip_view.clip, delta, edge); + project.undo_manager.end_transaction("Trim Clip"); + } + + void constrain_move(ClipView clip_view, ref int64 delta) { + int min_delta = clip_view.SNAP_DELTA; + int delta_xsize = provider.time_to_xsize(delta); + TrackView track_view = (TrackView) clip_view.parent as TrackView; + Model.Track track = track_view.get_track(); + if (delta_xsize.abs() < min_delta) { + int64 range = provider.xsize_to_time(min_delta); + int64 adjustment; + if (track.clip_is_near(clip_view.clip, range, out adjustment)) { + delta = adjustment; + clip_view.snap(provider.time_to_xsize(adjustment)); + } + } + } + + void on_clip_view_move_request(ClipView clip_view, int64 delta) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_view_move_request"); + if (project.snap_to_clip) { + constrain_move(clip_view, ref delta); + } + if (move_allowed(ref delta)) { + move_the_clips(delta); + } + } + + bool move_allowed(ref int64 move_distance) { + if (drag_widget == null) { + return false; + } + + ClipView max_clip = null; + + foreach(ClipView clip_view in selected_clips) { + if (max_clip == null) { + max_clip = clip_view; + } else if (clip_view.clip.end > max_clip.clip.end){ + max_clip = clip_view; + } + int position = provider.time_to_xpos(clip_view.clip.start + move_distance); + if (position < BORDER) { + return false; + } + } + return true; + } + + void move_the_clips(int64 move_distance) { + foreach (ClipView clip_view in selected_clips) { + do_clip_move(clip_view, move_distance); + } + } + + public void do_clip_move(ClipView clip_view, int64 delta) { + clip_view.clip.start += delta; + } + + public void on_ruler_position_changed(int x) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_ruler_position_changed"); + if (!project.transport_is_recording()) { + update_pos(x); + } + } + + public bool is_clip_selected() { + return selected_clips.size > 0; + } + + public bool gap_selected() { + return false; +// return gap_view != null; + } + + public void delete_selection() { + project.undo_manager.start_transaction("Delete Clips From Timeline"); + drag_widget = null; + if (is_clip_selected()) { + while (selected_clips.size > 0) { + selected_clips[0].delete_clip(); + selected_clips.remove_at(0); + } + track_changed(); + } else { +/* + if (gap_view != null) { + if (!project.can_delete_gap(gap_view.gap)) { + if (DialogUtils.delete_cancel("Really delete single-track gap?") == + Gtk.ResponseType.YES) { + gap_view.remove(); + } + } else { + project.delete_gap(gap_view.gap); + } + + gap_view.unselect(); + } +*/ + } + project.undo_manager.end_transaction("Delete Clips From Timeline"); + } + + public void do_cut() { + clipboard.select(selected_clips); + delete_selection(); + } + + public void do_copy() { + clipboard.select(selected_clips); + selection_changed(true); + } + + public void paste() { + do_paste(project.transport_get_position()); + } + + public void do_paste(int64 pos) { + TrackView? view = null; + foreach (TrackView track_view in tracks) { + if (track_view.get_track().get_is_selected()) { + view = track_view; + } + } + // TODO: Lombard doesn't use selected state. The following check should be removed + // when it does + if (view == null) { + view = clipboard.clips[0].clip.type == Model.MediaType.VIDEO ? + find_video_track_view() : find_audio_track_view(); + } + project.undo_manager.start_transaction("Paste"); + clipboard.paste(view.get_track(), pos); + project.undo_manager.end_transaction("Paste"); + queue_draw(); + } + + public void select_all() { + foreach (TrackView track in tracks) { + track.select_all(); + } + } + + public override bool expose_event(Gdk.EventExpose event) { + base.expose_event(event); + + int xpos = provider.time_to_xpos(project.transport_get_position()); + Gdk.draw_line(window, style.fg_gc[(int) Gtk.StateType.NORMAL], + xpos, 0, + xpos, allocation.height); + + return true; + } + + public override void drag_data_received(Gdk.DragContext context, int x, int y, + Gtk.SelectionData selection_data, uint drag_info, + uint time) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_drag_data_received"); + string[] a = selection_data.get_uris(); + Gtk.drag_finish(context, true, false, time); + + Model.Track? track = null; + TrackView? track_view = find_child(x, y) as TrackView; + + if (track_view == null) { + return; + } + + bool timeline_add = true; + + if (a.length > 1) { + if (Gtk.drag_get_source_widget(context) != null) { + DialogUtils.warning("Cannot add files", + "Files must be dropped onto the timeline individually."); + return; + } + + if (DialogUtils.add_cancel( + "Files must be dropped onto the timeline individually.\n" + + "Do you wish to add these files to the library?") != Gtk.ResponseType.YES) { + return; + } + timeline_add = false; + } else { + track = track_view.get_track(); + } + + project.create_clip_importer(track, timeline_add, provider.xpos_to_time(x), + context.action == Gdk.DragAction.COPY, (Gtk.Window) get_toplevel(), a.length); + try { + foreach (string s in a) { + string filename; + try { + filename = GLib.Filename.from_uri(s); + } catch (GLib.ConvertError e) { continue; } + project.importer.add_file(filename); + } + project.importer.start(); + } catch (Error e) { + project.error_occurred("Error importing", e.message); + } + } + + public void update_pos(int event_x) { + int64 time = provider.xpos_to_time(event_x); + if (project.snap_to_clip) { + project.snap_coord(out time, provider.get_pixel_snap_time()); + } + project.media_engine.go(time); + } + + public Gtk.Widget? find_child(double x, double y) { + foreach (Gtk.Widget w in vbox.get_children()) { + if (w.allocation.y <= y && y < w.allocation.y + w.allocation.height) + return w; + } + return null; + } + + void deselect_all() { + foreach (ClipView clip_view in selected_clips) { + clip_view.is_selected = false; + } + selected_clips.clear(); + selection_changed(false); + } + + public override bool button_press_event(Gdk.EventButton event) { +/* + if (gap_view != null) + gap_view.unselect(); +*/ + drag_widget = null; + Gtk.Widget? child = find_child(event.x, event.y); + + if (child is View.Ruler) { + View.Ruler ruler = child as View.Ruler; + ruler.button_press_event(event); + drag_widget = child; + } else if (child is TrackView) { + TrackView track_view = child as TrackView; + + drag_widget = track_view.find_child(event.x, event.y); + if (drag_widget != null) { + drag_widget.button_press_event(event); + } else { + deselect_all(); + // want to select the track_views track as selected + track_view.get_track().set_selected(true); + } + } else { + deselect_all(); + } + queue_draw(); + + return true; + } + + public override bool button_release_event(Gdk.EventButton event) { + if (drag_widget != null) { + drag_widget.button_release_event(event); + drag_widget = null; + } + return true; + } + + public override bool motion_notify_event(Gdk.EventMotion event) { + if (drag_widget != null) { + drag_widget.motion_notify_event(event); + } else { + Gtk.Widget widget = find_child(event.x, event.y); + if (widget is TrackView) { + TrackView? track_view = widget as TrackView; + if (track_view != null) { + ClipView? clip_view = track_view.find_child(event.x, event.y) as ClipView; + if (clip_view != null) { + clip_view.motion_notify_event(event); + } else { + window.set_cursor(null); + } + } + } else if (widget is View.Ruler) { + widget.motion_notify_event(event); + } else { + window.set_cursor(null); + } + } + return true; + } + + TrackView? find_video_track_view() { + foreach (TrackView track in tracks) { + if (track.get_track().media_type() == Model.MediaType.VIDEO) { + return track; + } + } + + return null; + } + + TrackView? find_audio_track_view() { + foreach (TrackView track in tracks) { + if (track.get_track().media_type() == Model.MediaType.AUDIO) { + return track; + } + } + + return null; + } +} diff --git a/src/marina/track.vala b/src/marina/track.vala new file mode 100644 index 0000000..172fff6 --- /dev/null +++ b/src/marina/track.vala @@ -0,0 +1,624 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +namespace Model { + +public abstract class Track : Object { + protected weak Project project; + public Gee.ArrayList clips = new Gee.ArrayList(); // all clips, sorted by time + public string display_name; + bool is_selected; + + public signal void clip_added(Clip clip, bool select); + public signal void clip_removed(Clip clip); + + public signal void track_renamed(Track track); + public signal void track_selection_changed(Track track); + public signal void track_hidden(Track track); + public signal void track_removed(Track track); + public signal void error_occurred(string major_error, string? minor_error); + + public Track(Project project, string display_name) { + this.project = project; + this.display_name = display_name; + } + + protected abstract string name(); + public abstract MediaType media_type(); + + public void hide() { + track_hidden(this); + } + + public bool contains_clipfile(ClipFile f) { + foreach (Clip c in clips) { + if (c.clipfile == f) + return true; + } + return false; + } + + protected abstract bool check(Clip clip); + + public int64 get_time_from_pos(Clip clip, bool after) { + if (after) + return clip.start + clip.duration; + else + return clip.start; + } + + int get_clip_from_time(int64 time) { + for (int i = 0; i < clips.size; i++) { + if (time >= clips[i].start && + time < clips[i].end) + return i; + } + return -1; + } + + public int64 snap_clip(Clip c, int64 span) { + foreach (Clip cl in clips) { + int64 new_start = c.snap(cl, span); + if (new_start != c.start) { + return new_start; + } + } + return c.start; + } + + public bool snap_coord(out int64 coord, int64 span) { + foreach (Clip c in clips) { + if (c.snap_coord(out coord, span)) + return true; + } + return false; + } + + public bool clip_is_near(Model.Clip clip, int64 range, out int64 adjustment) { + foreach (Clip potential_clip in clips) { + if (potential_clip != clip) { + int64 difference = clip.start - potential_clip.end; + if (difference.abs() < range) { + adjustment = -difference; + return true; + } + + difference = potential_clip.start - clip.end; + if (difference.abs() < range) { + adjustment = difference; + return true; + } + } + } + return false; + } + + int get_insert_index(int64 time) { + int end_ret = 0; + for (int i = 0; i < clips.size; i++) { + Clip c = clips[i]; + + if (time >= c.start) { + if (time < c.start + c.duration/2) + return i; + else if (time < c.start + c.duration) + return i + 1; + else + end_ret ++; + } + } + return end_ret; + } + + // This is called to find the first gap after a start time + public Gap find_first_gap(int64 start) { + int64 new_start = 0; + int64 new_end = int64.MAX; + + foreach (Clip c in clips) { + if (c.start > new_start && + c.start > start) { + new_end = c.start; + break; + } + new_start = c.end; + } + return new Gap(new_start, new_end); + } + + // This is always called with the assumption that we are not on a clip + int get_gap_index(int64 time) { + int i = 0; + while (i < clips.size) { + if (time <= clips[i].start) + break; + i++; + } + return i; + } + + // If we are not on a valid gap (as in, a space between two clips or between the start + // and the first clip), we return an empty (and invalid) gap + public void find_containing_gap(int64 time, out Gap g) { + g = new Gap(0, 0); + + int index = get_gap_index(time); + if (index < clips.size) { + g.start = index > 0 ? clips[index - 1].end : 0; + g.end = clips[index].start; + } + } + + public Clip? find_overlapping_clip(int64 start, int64 length) { + for (int i = 0; i < clips.size; i++) { + Clip c = clips[i]; + if (c.overlap_pos(start, length)) + return c; + } + return null; + } + + public Clip? find_nearest_clip_edge(int64 time, out bool after) { + int limit = clips.size * 2; + int64 prev_time = clips[0].start; + + for (int i = 1; i < limit; i++) { + Clip c = clips[i / 2]; + int64 t; + + if (i % 2 == 0) + t = c.start; + else + t = c.end; + + if (t > time) { + if (t - time < time - prev_time) { + after = ((i % 2) != 0); + return clips[i / 2]; + } else { + after = ((i % 2) == 0); + return clips[(i - 1) / 2]; + } + } + prev_time = t; + } + + after = true; + return clips[clips.size - 1]; + } + + void do_clip_overwrite(Clip c) { + int start_index = get_clip_from_time(c.start); + int end_index = get_clip_from_time(c.end); + + if (end_index >= 0) { + int64 diff = c.end - clips[end_index].start; + if (end_index == start_index) { + if (c == clips[end_index]) { + return; + } + + if (diff > 0) { + Clip cl = new Clip(clips[end_index].clipfile, clips[end_index].type, + clips[end_index].name, c.end, + clips[end_index].media_start + diff, + clips[end_index].duration - diff, false); + append_at_time(cl, cl.start, false); + } + } else { + trim(clips[end_index], diff, Gdk.WindowEdge.WEST); + } + } + if (start_index >= 0 && clips[start_index] != c) { + int64 delta = clips[start_index].end - c.start; + trim(clips[start_index], -delta, Gdk.WindowEdge.EAST); + } + + int i = 0; + // TODO: This code assumes that when a delete happens, it is reflected immediately. + // When we are in an undo (or redo) deleting will happen later. It would be better + // for callers not to have to deal with this problem. Too large of a change for now. + if (!project.undo_manager.in_undo) { + while (i < clips.size) { + if (clips[i] != c && + clips[i].start >= c.start && + clips[i].end <= c.end) { + delete_clip(clips[i]); + } + else + i++; + } + } + } + + public void move(Clip c, int64 pos, int64 original_time) { + Command command = new ClipAddCommand(this, c, original_time, pos); + project.do_command(command); + } + + public void _move(Clip c, int64 pos) { + if (pos < 0) { + pos = 0; + } + c.start = pos; + do_clip_overwrite(c); + + insert_clip_into_array(c, get_insert_index(c.start)); + project.reseek(); + } + + public void add(Clip c, int64 pos, bool select) { + if (!check(c)) + return; + + _move(c, pos); + clip_added(c, select); + } + + public virtual void on_clip_updated(Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_updated"); + } + + public void do_clip_paste(Clip clip, int64 position) { + append_at_time(clip, position, true); + } + + public Clip? get_clip(int i) { + if (i < 0 || i >= clips.size) + error("get_clip: Invalid index! %d (%d)", i, clips.size); + return clips[i]; + } + + public int get_clip_index(Clip c) { + for (int i = 0; i < clips.size; i++) { + if (clips[i] == c) { + return i; + } + } + return -1; + } + + public Clip? get_clip_by_position(int64 pos) { + int length = clips.size; + + for (int i = length - 1; i >= 0; i--) + if (clips[i].start < pos) + return pos >= clips[i].end ? null : clips[i]; + return null; + } + + public int64 get_length() { + return clips.size == 0 ? 0 : clips[clips.size - 1].start + clips[clips.size - 1].duration; + } + + public void _append_at_time(Clip c, int64 time, bool select) { + add(c, time, select); + } + + public void append_at_time(Clip c, int64 time, bool select) { + Command command = new ClipCommand(ClipCommand.Action.APPEND, this, c, time, select); + project.do_command(command); + } + + public void delete_clip(Clip clip) { + Command clip_command = new ClipCommand(ClipCommand.Action.DELETE, + this, clip, clip.start, false); + project.do_command(clip_command); + } + + public void _delete_clip(Clip clip) { + int index = get_clip_index(clip); + assert(index != -1); + clips.remove_at(index); + + clip.removed(clip); + clip_removed(clip); + } + + public void delete_gap(Gap g) { + project.reseek(); + } + + public void remove_clip_from_array(Clip pos) { + clips.remove(pos); + } + + void insert_clip_into_array(Clip c, int pos) { + c.updated.connect(on_clip_updated); + clips.insert(pos, c); + } + + public void delete_all_clips() { + uint size = clips.size; + for (int i = 0; i < size; i++) { + delete_clip(clips[0]); + } + project.media_engine.go(0); + } + + public void revert_to_original(Clip clip) { + Command command = new ClipRevertCommand(this, clip); + project.do_command(command); + } + + public void _revert_to_original(Clip c) { + int index = get_clip_index(c); + if (index == -1) + error("revert_to_original: Clip not in track array!"); + + c.set_media_start_duration(0, c.clipfile.length); + + project.media_engine.go(c.start); + } + + public bool are_contiguous_clips(int64 position) { + Clip right_clip = get_clip_by_position(position + 1); + Clip left_clip = get_clip_by_position(position - 1); + + return left_clip != null && right_clip != null && + left_clip != right_clip && + left_clip.clipfile == right_clip.clipfile && + left_clip.end == right_clip.start; + } + + public void split_at(int64 position) { + Command command = new ClipSplitCommand(ClipSplitCommand.Action.SPLIT, this, position); + project.do_command(command); + } + + public void _split_at(int64 position) { + Clip c = get_clip_by_position(position); + if (c == null) + return; + + Clip cn = new Clip(c.clipfile, c.type, c.name, position, + (position - c.start) + c.media_start, + c.start + c.duration - position, false); + + c.duration = position - c.start; + + add(cn, position, false); + } + + public void join(int64 position) { + Command command = new ClipSplitCommand(ClipSplitCommand.Action.JOIN, this, position); + project.do_command(command); + } + + public void _join(int64 position) { + assert(are_contiguous_clips(position)); + if (are_contiguous_clips(position)) { + Clip right_clip = get_clip_by_position(position + 1); + assert(right_clip != null); + + int right_clip_index = get_clip_index(right_clip); + assert(right_clip_index > 0); + + int left_clip_index = right_clip_index - 1; + Clip left_clip = get_clip(left_clip_index); + assert(left_clip != null); + left_clip.duration = right_clip.end - left_clip.start; + _delete_clip(right_clip); + } + } + + public void trim(Clip clip, int64 delta, Gdk.WindowEdge edge) { + Command command = new ClipTrimCommand(this, clip, delta, edge); + project.do_command(command); + } + + public void _trim(Clip clip, int64 delta, Gdk.WindowEdge edge) { + clip.trim(delta, edge); + do_clip_overwrite(clip); + } + + public int64 previous_edit(int64 pos) { + for (int i = clips.size - 1; i >= 0 ; --i) { + Clip c = clips[i]; + if (c.end < pos) + return c.end; + if (c.start < pos) + return c.start; + } + return 0; + } + + public int64 next_edit(int64 pos) { + foreach (Clip c in clips) + if (c.start > pos) + return c.start; + else if (c.end > pos) + return c.end; + return get_length(); + } + + public virtual void write_attributes(FileStream f) { + f.printf("type=\"%s\" name=\"%s\" ", name(), get_display_name()); + } + + public void save(FileStream f) { + f.printf(" \n"); + for (int i = 0; i < clips.size; i++) + clips[i].save(f, project.get_clipfile_index(clips[i].clipfile)); + f.puts(" \n"); + } + + public string get_display_name() { + return display_name; + } + + public void set_display_name(string new_display_name) { + if (display_name != new_display_name) { + display_name = new_display_name; + track_renamed(this); + } + } + + public void set_selected(bool is_selected) { + if (this.is_selected != is_selected) { + this.is_selected = is_selected; + track_selection_changed(this); + } + } + + public bool get_is_selected() { + return is_selected; + } +} + +public class AudioTrack : Track { + double pan; + double volume; + + int default_num_channels; + public static const int INVALID_CHANNEL_COUNT = -1; + + public signal void parameter_changed(Parameter parameter, double new_value); + public signal void level_changed(double level_left, double level_right); + public signal void channel_count_changed(int channel_count); + + public AudioTrack(Project project, string display_name) { + base(project, display_name); + + set_default_num_channels(INVALID_CHANNEL_COUNT); + _set_pan(0); + _set_volume(1.0); + } + + protected override string name() { return "audio"; } + + public override MediaType media_type() { + return MediaType.AUDIO; + } + + public override void write_attributes(FileStream f) { + base.write_attributes(f); + f.printf("volume=\"%f\" panorama=\"%f\" ", get_volume(), get_pan()); + + int channels; + if (get_num_channels(out channels) && + channels != INVALID_CHANNEL_COUNT) + f.printf("channels=\"%d\" ", channels); + } + + public void set_pan(double new_value) { + double old_value = get_pan(); + if (!float_within(new_value - old_value, 0.05)) { + ParameterCommand parameter_command = + new ParameterCommand(this, Parameter.PAN, new_value, old_value); + project.do_command(parameter_command); + } + } + + public void _set_pan(double new_value) { + assert(new_value <= 1.0 && new_value >= -1.0); + double old_value = get_pan(); + if (!float_within(old_value - new_value, 0.05)) { + pan = new_value; + parameter_changed(Parameter.PAN, new_value); + } + } + + public double get_pan() { + return pan; + } + + public void set_volume(double new_volume) { + double old_volume = get_volume(); + if (!float_within(old_volume - new_volume, 0.005)) { + ParameterCommand parameter_command = + new ParameterCommand(this, Parameter.VOLUME, new_volume, old_volume); + project.do_command(parameter_command); + } + } + + public void _set_volume(double new_volume) { + assert(new_volume >= 0.0 && new_volume <= 10.0); + double old_volume = get_volume(); + if (!float_within(old_volume - new_volume, 0.005)) { + volume = new_volume; + parameter_changed(Parameter.VOLUME, new_volume); + } + } + + public double get_volume() { + return volume; + } + + public void set_default_num_channels(int num) { + default_num_channels = num; + } + + public bool get_num_channels(out int num) { + if (clips.size == 0) + return false; + + foreach (Clip c in clips) { + if (c.clipfile.is_online()) { + bool can = c.clipfile.get_num_channels(out num); + assert(can); + + return can; + } + } + + if (default_num_channels == INVALID_CHANNEL_COUNT) + return false; + + num = default_num_channels; + return true; + } + + public override bool check(Clip clip) { + if (!clip.clipfile.is_online()) { + return true; + } + + if (clips.size == 0) { + int number_of_channels = 0; + if (clip.clipfile.get_num_channels(out number_of_channels)) { + channel_count_changed(number_of_channels); + } + return true; + } + + bool good = false; + int number_of_channels; + if (clip.clipfile.get_num_channels(out number_of_channels)) { + int track_channel_count; + if (get_num_channels(out track_channel_count)) { + good = track_channel_count == number_of_channels; + } + } + + if (!good) { + string sub_error = number_of_channels == 1 ? + "Mono clips cannot go on stereo tracks." : + "Stereo clips cannot go on mono tracks."; + error_occurred("Cannot add clip to track", sub_error); + } + return good; + } + + public void on_level_changed(double level_left, double level_right) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_level_changed"); + level_changed(level_left, level_right); + } + + public override void on_clip_updated(Clip clip) { + if (clip.clipfile.is_online()) { + int number_of_channels = 0; + if (get_num_channels(out number_of_channels)) { + channel_count_changed(number_of_channels); + } + } + } +} +} diff --git a/src/marina/ui_clip.vala b/src/marina/ui_clip.vala new file mode 100644 index 0000000..9a17244 --- /dev/null +++ b/src/marina/ui_clip.vala @@ -0,0 +1,372 @@ +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +using Logging; + +public class GapView : Gtk.DrawingArea { + public Model.Gap gap; + Gdk.Color fill_color; + + public GapView(int64 start, int64 length, int width, int height) { + + gap = new Model.Gap(start, start + length); + + Gdk.Color.parse("#777", out fill_color); + + set_flags(Gtk.WidgetFlags.NO_WINDOW); + + set_size_request(width, height); + } + + public signal void removed(GapView gap_view); + public signal void unselected(GapView gap_view); + + public void remove() { + removed(this); + } + + public void unselect() { + unselected(this); + } + + public override bool expose_event(Gdk.EventExpose e) { + draw_rounded_rectangle(window, fill_color, true, allocation.x, allocation.y, + allocation.width - 1, allocation.height - 1); + return true; + } +} + +public class ClipView : Gtk.DrawingArea { + enum MotionMode { + NONE, + DRAGGING, + LEFT_TRIM, + RIGHT_TRIM + } + + public Model.Clip clip; + public int64 initial_time; + weak Model.TimeSystem time_provider; + public bool is_selected; + public int height; // TODO: We request size of height, but we aren't allocated this height. + // We should be using the allocated height, not the requested height. + public static Gtk.Menu context_menu; + TransportDelegate transport_delegate; + Gdk.Color color_black; + Gdk.Color color_normal; + Gdk.Color color_selected; + int drag_point; + int snap_amount; + bool snapped; + MotionMode motion_mode = MotionMode.NONE; + bool button_down = false; + bool pending_selection; + const int MIN_DRAG = 5; + const int TRIM_WIDTH = 10; + public const int SNAP_DELTA = 10; + + static Gdk.Cursor left_trim_cursor = new Gdk.Cursor(Gdk.CursorType.LEFT_SIDE); + static Gdk.Cursor right_trim_cursor = new Gdk.Cursor(Gdk.CursorType.RIGHT_SIDE); + static Gdk.Cursor hand_cursor = new Gdk.Cursor.from_name(Gdk.Display.get_default(), "dnd-none"); + // will be used for drag + static Gdk.Cursor plus_cursor = new Gdk.Cursor.from_name(Gdk.Display.get_default(), "dnd-copy"); + + public signal void clip_deleted(Model.Clip clip); + public signal void clip_moved(ClipView clip); + public signal void selection_request(ClipView clip_view, bool extend_selection); + public signal void move_request(ClipView clip_view, int64 delta); + public signal void move_commit(ClipView clip_view, int64 delta); + public signal void move_begin(ClipView clip_view, bool copy); + public signal void trim_begin(ClipView clip_view, Gdk.WindowEdge edge); + public signal void trim_commit(ClipView clip_view, Gdk.WindowEdge edge); + + public ClipView(TransportDelegate transport_delegate, Model.Clip clip, + Model.TimeSystem time_provider, int height) { + this.transport_delegate = transport_delegate; + this.clip = clip; + this.time_provider = time_provider; + this.height = height; + is_selected = false; + + clip.moved.connect(on_clip_moved); + clip.updated.connect(on_clip_updated); + + Gdk.Color.parse("000", out color_black); + get_clip_colors(); + + set_flags(Gtk.WidgetFlags.NO_WINDOW); + + adjust_size(height); + } + + void get_clip_colors() { + if (clip.clipfile.is_online()) { + Gdk.Color.parse(clip.type == Model.MediaType.VIDEO ? "#d82" : "#84a", + out color_selected); + Gdk.Color.parse(clip.type == Model.MediaType.VIDEO ? "#da5" : "#b9d", + out color_normal); + } else { + Gdk.Color.parse("red", out color_selected); + Gdk.Color.parse("#AA0000", out color_normal); + } + } + + void on_clip_updated() { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_updated"); + get_clip_colors(); + queue_draw(); + } + + // Note that a view's size may vary slightly (by a single pixel) depending on its + // starting position. This is because the clip's length may not be an integer number of + // pixels, and may get rounded either up or down depending on the clip position. + public void adjust_size(int height) { + int width = time_provider.time_to_xpos(clip.start + clip.duration) - + time_provider.time_to_xpos(clip.start); + set_size_request(width + 1, height); + } + + public void on_clip_moved(Model.Clip clip) { + emit(this, Facility.SIGNAL_HANDLERS, Level.INFO, "on_clip_moved"); + adjust_size(height); + clip_moved(this); + } + + public void delete_clip() { + clip_deleted(clip); + } + + public void draw() { + weak Gdk.Color fill = is_selected ? color_selected : color_normal; + + bool left_trimmed = clip.media_start != 0 && !clip.is_recording; + + bool right_trimmed = clip.clipfile.is_online() ? + (clip.media_start + clip.duration != clip.clipfile.length) : false; + + if (!left_trimmed && !right_trimmed) { + draw_rounded_rectangle(window, fill, true, allocation.x + 1, allocation.y + 1, + allocation.width - 2, allocation.height - 2); + draw_rounded_rectangle(window, color_black, false, allocation.x, allocation.y, + allocation.width - 1, allocation.height - 1); + + } else if (!left_trimmed && right_trimmed) { + draw_left_rounded_rectangle(window, fill, true, allocation.x + 1, allocation.y + 1, + allocation.width - 2, allocation.height - 2); + draw_left_rounded_rectangle(window, color_black, false, allocation.x, allocation.y, + allocation.width - 1, allocation.height - 1); + + } else if (left_trimmed && !right_trimmed) { + draw_right_rounded_rectangle(window, fill, true, allocation.x + 1, allocation.y + 1, + allocation.width - 2, allocation.height - 2); + draw_right_rounded_rectangle(window, color_black, false, allocation.x, allocation.y, + allocation.width - 1, allocation.height - 1); + + } else { + draw_square_rectangle(window, fill, true, allocation.x + 1, allocation.y + 1, + allocation.width - 2, allocation.height - 2); + draw_square_rectangle(window, color_black, false, allocation.x, allocation.y, + allocation.width - 1, allocation.height - 1); + } + + Gdk.GC gc = new Gdk.GC(window); + Gdk.Rectangle r = { 0, 0, 0, 0 }; + + // Due to a Vala compiler bug, we have to do this initialization here... + r.x = allocation.x; + r.y = allocation.y; + r.width = allocation.width; + r.height = allocation.height; + + gc.set_clip_rectangle(r); + + Pango.Layout layout; + if (clip.is_recording) { + layout = create_pango_layout("Recording"); + } else if (!clip.clipfile.is_online()) { + layout = create_pango_layout("%s (Offline)".printf(clip.name)); + } + else { + layout = create_pango_layout("%s".printf(clip.name)); + } + int width, height; + layout.get_pixel_size(out width, out height); + Gdk.draw_layout(window, gc, allocation.x + 10, allocation.y + height, layout); + } + + public override bool expose_event(Gdk.EventExpose event) { + draw(); + return true; + } + + public override bool button_press_event(Gdk.EventButton event) { + if (!transport_delegate.is_stopped()) { + return true; + } + + event.x -= allocation.x; + bool primary_press = event.button == 1; + if (primary_press) { + button_down = true; + drag_point = (int)event.x; + snap_amount = 0; + snapped = false; + } + + bool extend_selection = (event.state & Gdk.ModifierType.CONTROL_MASK) != 0; + // The clip is not responsible for changing the selection state. + // It may depend upon knowledge of multiple clips. Let anyone who is interested + // update our state. + if (is_left_trim(event.x, event.y)) { + selection_request(this, false); + if (primary_press) { + trim_begin(this, Gdk.WindowEdge.WEST); + motion_mode = MotionMode.LEFT_TRIM; + } + } else if (is_right_trim(event.x, event.y)){ + selection_request(this, false); + if (primary_press) { + trim_begin(this, Gdk.WindowEdge.EAST); + motion_mode = MotionMode.RIGHT_TRIM; + } + } else { + if (!is_selected) { + pending_selection = false; + selection_request(this, extend_selection); + } else { + pending_selection = true; + } + } + + if (event.button == 3) { + context_menu.select_first(true); + context_menu.popup(null, null, null, event.button, event.time); + } else { + context_menu.popdown(); + } + + return true; + } + + public override bool button_release_event(Gdk.EventButton event) { + if (!transport_delegate.is_stopped()) { + return true; + } + + event.x -= allocation.x; + button_down = false; + if (event.button == 1) { + switch (motion_mode) { + case MotionMode.NONE: { + if (pending_selection) { + selection_request(this, true); + } + } + break; + case MotionMode.DRAGGING: { + int64 delta = time_provider.xsize_to_time((int) event.x - drag_point); + if (motion_mode == MotionMode.DRAGGING) { + move_commit(this, delta); + } + } + break; + case MotionMode.LEFT_TRIM: + trim_commit(this, Gdk.WindowEdge.WEST); + break; + case MotionMode.RIGHT_TRIM: + trim_commit(this, Gdk.WindowEdge.EAST); + break; + } + } + motion_mode = MotionMode.NONE; + return true; + } + + public override bool motion_notify_event(Gdk.EventMotion event) { + if (!transport_delegate.is_stopped()) { + return true; + } + + event.x -= allocation.x; + int delta_pixels = (int)(event.x - drag_point) - snap_amount; + if (snapped) { + snap_amount += delta_pixels; + if (snap_amount.abs() < SNAP_DELTA) { + return true; + } + delta_pixels += snap_amount; + snap_amount = 0; + snapped = false; + } + + int64 delta_time = time_provider.xsize_to_time(delta_pixels); + + switch (motion_mode) { + case MotionMode.NONE: + if (!button_down && is_left_trim(event.x, event.y)) { + window.set_cursor(left_trim_cursor); + } else if (!button_down && is_right_trim(event.x, event.y)) { + window.set_cursor(right_trim_cursor); + } else if (is_selected && button_down) { + if (delta_pixels.abs() > MIN_DRAG) { + bool do_copy = (event.state & Gdk.ModifierType.CONTROL_MASK) != 0; + if (do_copy) { + window.set_cursor(plus_cursor); + } else { + window.set_cursor(hand_cursor); + } + motion_mode = MotionMode.DRAGGING; + move_begin(this, do_copy); + } + } else { + window.set_cursor(null); + } + break; + case MotionMode.RIGHT_TRIM: + case MotionMode.LEFT_TRIM: + if (button_down) { + if (motion_mode == MotionMode.LEFT_TRIM) { + clip.trim(delta_time, Gdk.WindowEdge.WEST); + } else { + int64 duration = clip.duration; + clip.trim(delta_time, Gdk.WindowEdge.EAST); + if (duration != clip.duration) { + drag_point += (int)delta_pixels; + } + } + } + return true; + case MotionMode.DRAGGING: + move_request(this, delta_time); + return true; + } + return false; + } + + bool is_trim_height(double y) { + return y - allocation.y > allocation.height / 2; + } + + bool is_left_trim(double x, double y) { + return is_trim_height(y) && x > 0 && x < TRIM_WIDTH; + } + + bool is_right_trim(double x, double y) { + return is_trim_height(y) && x > allocation.width - TRIM_WIDTH && + x < allocation.width; + } + + public void select() { + if (!is_selected) { + selection_request(this, true); + } + } + + public void snap(int64 amount) { + snap_amount = time_provider.time_to_xsize(amount); + snapped = true; + } +} diff --git a/src/marina/util.vala b/src/marina/util.vala new file mode 100644 index 0000000..576324a --- /dev/null +++ b/src/marina/util.vala @@ -0,0 +1,563 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +public errordomain MediaError { + MISSING_PLUGIN +} + +// I can't find a floating point absolute value function in Vala... +public float float_abs(float f) { + if (f < 0.0f) + return -f; + return f; +} + +public bool float_within(double f, double epsilon) { + return float_abs((float) f) < epsilon; +} + +public int sign(int x) { + if (x == 0) + return 0; + return x < 0 ? -1 : 1; +} + +int stricmp(string str1, string str2) { + string temp_str1 = str1.casefold(-1); + string temp_str2 = str2.casefold(-1); + + return temp_str1.collate(temp_str2); +} + +// TODO: write this using generics. +public string[] copy_array(string[] source) { + string[] destination = new string[source.length]; + int i = 0; + foreach (string item in source) { + destination[i] = item; + ++i; + } + return destination; +} + +// Debug utilities + +public bool debug_enabled; + +public void print_debug(string text) { + if (!debug_enabled) + return; + + debug("%s", text); +} + +public struct Fraction { + public int numerator; + public int denominator; + + public Fraction(int numerator, int denominator) { + this.numerator = numerator; + this.denominator = denominator; + } + + public Fraction.from_string(string s) { + string[] elements = s.split("/"); + if (elements.length != 2) { + numerator = 0; + denominator = 0; + } else { + numerator = elements[0].to_int(); + denominator = elements[1].to_int(); + } + } + + public bool equal(Fraction f) { + if (float_abs(((numerator / (float)denominator) - (f.numerator / (float)f.denominator))) <= + (1000.0f / 1001.0f)) + return true; + return false; + } + + public int nearest_int() { + return (int) (((double) numerator / denominator) + 0.5); + } + + public string to_string() { + return "%d/%d".printf(numerator, denominator); + } + +} + +public struct TimeCode { + public int hour; + public int minute; + public int second; + public int frame; + public bool drop_code; + + public void get_from_length(int64 length) { + length /= Gst.SECOND; + + hour = (int) (length / 3600); + minute = (int) ((length % 3600) / 60); + second = (int) ((length % 3600) % 60); + frame = 0; + } + + public string to_string() { + string ret = ""; + if (hour != 0) + ret += "%.2d:".printf(hour); + + ret += "%.2d:".printf(minute); + ret += "%.2d".printf(second); + + if (drop_code) + ret += ";"; + else + ret += ":"; + ret += "%.2d".printf(frame); + + return ret; + } +} + +public bool time_in_range(int64 time, int64 center, int64 delta) { + int64 diff = time - center; + return diff.abs() <= delta; +} + +public string isolate_filename(string path) { + string str = Path.get_basename(path); + return str.split(".")[0]; +} + +public string get_file_extension(string path) { + unowned string dot = path.rchr(-1, '.'); + return dot == null ? "" : dot.next_char(); +} + +public string append_extension(string path, string extension) { + if (get_file_extension(path) == extension) + return path; + + return path + "." + extension; +} + +// Given two version number strings such as "0.10.2.4", return true if the first is +// greater than or equal to the second. +public bool version_at_least(string v, string w) { + string[] va = v.split("."); + string[] wa = w.split("."); + for (int i = 0 ; i < wa.length ; ++i) { + if (i >= va.length) + return false; + int vi = va[i].to_int(); + int wi = wa[i].to_int(); + if (vi > wi) + return true; + if (wi > vi) + return false; + } + return true; +} + +public bool get_file_md5_checksum(string filename, out string checksum) { + string new_filename = append_extension(filename, "md5"); + + size_t buffer_length; + try { + GLib.FileUtils.get_contents(new_filename, out checksum, out buffer_length); + } catch (GLib.FileError e) { + return false; + } + + return buffer_length == 32; +} + +public void save_file_md5_checksum(string filename, string checksum) { + string new_filename = append_extension(filename, "md5"); + + try { + GLib.FileUtils.set_contents(new_filename, checksum); + } catch (GLib.FileError e) { + error("Cannot save md5 file %s!\n", new_filename); + } +} + +public bool md5_checksum_on_file(string filename, out string checksum) { + string file_buffer; + size_t len; + + try { + GLib.FileUtils.get_contents(filename, out file_buffer, out len); + } catch (GLib.FileError e) { + return false; + } + + GLib.Checksum c = new GLib.Checksum(GLib.ChecksumType.MD5); + c.update((uchar[]) file_buffer, len); + checksum = c.get_string(); + return true; +} + +// GDK/GTK utility functions + +// constants from gdkkeysyms.h https://bugzilla.gnome.org/show_bug.cgi?id=551184 +[CCode (cprefix = "GDK_", has_type_id = "0", cheader_filename = "gdk/gdkkeysyms.h")] +public enum KeySyms { + Control_L, + Control_R, + Down, + equal, + Escape, + KP_Add, + KP_Enter, + KP_Subtract, + Left, + minus, + plus, + Return, + Right, + Shift_L, + Shift_R, + underscore, + Up +} + +public Gdk.ModifierType GDK_SHIFT_ALT_CONTROL_MASK = Gdk.ModifierType.SHIFT_MASK | + Gdk.ModifierType.MOD1_MASK | + Gdk.ModifierType.CONTROL_MASK; + +public const Gtk.TargetEntry[] drag_target_entries = { + { "text/uri-list", 0, 0 } +}; + +public Gdk.Color parse_color(string color) { + Gdk.Color c; + if (!Gdk.Color.parse(color, out c)) + error("can't parse color"); + return c; +} + +public Gtk.Widget get_widget(Gtk.UIManager manager, string name) { + Gtk.Widget widget = manager.get_widget(name); + if (widget == null) + error("can't find widget"); + return widget; +} + +///////////////////////////////////////////////////////////////////////////// +// Rectangle drawing stuff // +// Original rounded rectangle code from: http://cairographics.org/samples/ // +///////////////////////////////////////////////////////////////////////////// + +const double LINE_WIDTH = 1.0; +const double RADIUS = 15.0; +const Cairo.Antialias ANTIALIAS = Cairo.Antialias.DEFAULT; // NONE/DEFAULT + +public void draw_rounded_rectangle(Gdk.Window window, Gdk.Color color, bool filled, + int x0, int y0, int width, int height) { + if (width == 0 || height == 0) + return; + + double x1 = x0 + width; + double y1 = y0 + height; + + Cairo.Context cairo_window = Gdk.cairo_create(window); + Gdk.cairo_set_source_color(cairo_window, color); + cairo_window.set_antialias(ANTIALIAS); + + if ((width / 2) < RADIUS) { + if ((height / 2) < RADIUS) { + cairo_window.move_to(x0, ((y0 + y1) / 2)); + cairo_window.curve_to(x0, y0, x0, y0, (x0 + x1) / 2, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, (y0 + y1) / 2); + cairo_window.curve_to(x1, y1, x1, y1, (x1 + x0) / 2, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, (y0 + y1) / 2); + } else { + cairo_window.move_to(x0, y0 + RADIUS); + cairo_window.curve_to(x0,y0, x0, y0, (x0 + x1) / 2, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, y0 + RADIUS); + cairo_window.line_to(x1, y1 - RADIUS); + cairo_window.curve_to(x1, y1, x1, y1, (x1 + x0) / 2, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, y1 - RADIUS); + } + } else { + if ((height / 2) < RADIUS) { + cairo_window.move_to(x0, (y0 + y1) / 2); + cairo_window.curve_to(x0, y0, x0, y0, x0 + RADIUS, y0); + cairo_window.line_to(x1 - RADIUS, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, (y0 + y1) / 2); + cairo_window.curve_to(x1, y1, x1, y1, x1 - RADIUS, y1); + cairo_window.line_to(x0 + RADIUS, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, (y0 + y1) / 2); + } else { + cairo_window.move_to(x0, y0 + RADIUS); + cairo_window.curve_to(x0, y0, x0, y0, x0 + RADIUS, y0); + cairo_window.line_to(x1 - RADIUS, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, y0 + RADIUS); + cairo_window.line_to(x1, y1 - RADIUS); + cairo_window.curve_to(x1, y1, x1, y1, x1 - RADIUS, y1); + cairo_window.line_to(x0 + RADIUS, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, y1 - RADIUS); + } + } + cairo_window.close_path(); + + if (filled) { + cairo_window.fill(); + } else { + cairo_window.set_line_width(LINE_WIDTH); + cairo_window.stroke(); + } +} + +public void draw_right_rounded_rectangle(Gdk.Window window, Gdk.Color color, bool filled, + int x0, int y0, int width, int height) { + if (width == 0 || height == 0) + return; + + double x1 = x0 + width; + double y1 = y0 + height; + + Cairo.Context cairo_window = Gdk.cairo_create(window); + Gdk.cairo_set_source_color(cairo_window, color); + cairo_window.set_antialias(ANTIALIAS); + + if ((width / 2) < RADIUS) { + if ((height / 2) < RADIUS) { + cairo_window.move_to(x0, y0); + cairo_window.line_to((x0 + x1) / 2, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, (y0 + y1) / 2); + cairo_window.curve_to(x1, y1, x1, y1, (x1 + x0) / 2, y1); + cairo_window.line_to(x0, y1); + cairo_window.line_to(x0, y0); + } else { + cairo_window.move_to(x0, y0); + cairo_window.line_to((x0 + x1) / 2, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, y0 + RADIUS); + cairo_window.line_to(x1, y1 - RADIUS); + cairo_window.curve_to(x1, y1, x1, y1, (x1 + x0) / 2, y1); + cairo_window.line_to(x0, y1); + cairo_window.line_to(x0, y0); + } + } else { + if ((height / 2) < RADIUS) { + cairo_window.move_to(x0, y0); + cairo_window.line_to(x1 - RADIUS, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, (y0 + y1) / 2); + cairo_window.curve_to(x1, y1, x1, y1, x1 - RADIUS, y1); + cairo_window.line_to(x0, y1); + cairo_window.line_to(x0, y0); + } else { + cairo_window.move_to(x0, y0); + cairo_window.line_to(x1 - RADIUS, y0); + cairo_window.curve_to(x1, y0, x1, y0, x1, y0 + RADIUS); + cairo_window.line_to(x1, y1 - RADIUS); + cairo_window.curve_to(x1, y1, x1, y1, x1 - RADIUS, y1); + cairo_window.line_to(x0, y1); + cairo_window.line_to(x0, y0); + } + } + cairo_window.close_path(); + + if (filled) { + cairo_window.fill(); + } else { + cairo_window.set_line_width(LINE_WIDTH); + cairo_window.stroke(); + } +} + +public void draw_left_rounded_rectangle(Gdk.Window window, Gdk.Color color, bool filled, + int x0, int y0, int width, int height) { + if (width == 0 || height == 0) + return; + + double x1 = x0 + width; + double y1 = y0 + height; + + Cairo.Context cairo_window = Gdk.cairo_create(window); + Gdk.cairo_set_source_color(cairo_window, color); + cairo_window.set_antialias(ANTIALIAS); + + if ((width / 2) < RADIUS) { + if ((height / 2) < RADIUS) { + cairo_window.move_to(x0, ((y0 + y1) / 2)); + cairo_window.curve_to(x0, y0, x0, y0, (x0 + x1) / 2, y0); + cairo_window.line_to(x1, y0); + cairo_window.line_to(x1, y1); + cairo_window.line_to((x1 + x0) / 2, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, (y0 + y1) / 2); + } else { + cairo_window.move_to(x0, y0 + RADIUS); + cairo_window.curve_to(x0,y0, x0, y0, (x0 + x1) / 2, y0); + cairo_window.line_to(x1, y0); + cairo_window.line_to(x1, y1); + cairo_window.line_to((x1 + x0) / 2, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, y1 - RADIUS); + } + } else { + if ((height / 2) < RADIUS) { + cairo_window.move_to(x0, (y0 + y1) / 2); + cairo_window.curve_to(x0, y0, x0, y0, x0 + RADIUS, y0); + cairo_window.line_to(x1, y0); + cairo_window.line_to(x1, y1); + cairo_window.line_to(x0 + RADIUS, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, (y0 + y1) / 2); + } else { + cairo_window.move_to(x0, y0 + RADIUS); + cairo_window.curve_to(x0, y0, x0, y0, x0 + RADIUS, y0); + cairo_window.line_to(x1, y0); + cairo_window.line_to(x1, y1); + cairo_window.line_to(x0 + RADIUS, y1); + cairo_window.curve_to(x0, y1, x0, y1, x0, y1 - RADIUS); + } + } + cairo_window.close_path(); + + if (filled) { + cairo_window.fill(); + } else { + cairo_window.set_line_width(LINE_WIDTH); + cairo_window.stroke(); + } +} + +public void draw_square_rectangle(Gdk.Window window, Gdk.Color color, bool filled, + int x, int y, int width, int height) { + if (width == 0 || height == 0) + return; + + Cairo.Context cairo_window = Gdk.cairo_create(window); + Gdk.cairo_set_source_color(cairo_window, color); + cairo_window.set_antialias(ANTIALIAS); + + cairo_window.rectangle(x, y, width, height); + + if (filled) { + cairo_window.fill(); + } else { + cairo_window.set_line_width(LINE_WIDTH); + cairo_window.stroke(); + } +} + +// GStreamer utility functions + +public bool is_drop_frame_rate(Fraction r) { + return r.numerator == 2997 && r.denominator == 100 || + r.numerator == 30000 && r.denominator == 1001; +} + +public int64 frame_to_time_with_rate(int frame, Fraction rate) { + int64 time = (int64) Gst.util_uint64_scale(frame, Gst.SECOND * rate.denominator, rate.numerator); + return time; +} + +public int time_to_frame_with_rate(int64 time, Fraction rate) { + int frame = (int) Gst.util_uint64_scale(time, rate.numerator, Gst.SECOND * rate.denominator); + + /* We need frame_to_time_with_rate and time_to_frame_with_rate to be inverse functions, so that + * time_to_frame(frame_to_time_with_rate(f)) = f for all f. With the simple calculation + * above the functions might not be inverses due to rounding error, so we + * need the following check. */ + return time >= frame_to_time_with_rate(frame + 1, rate) ? frame + 1 : frame; +} + +public TimeCode frame_to_time(int frame, Fraction rate) { + int frame_rate = 0; + + TimeCode t = {}; + + t.drop_code = false; + if (rate.denominator == 1) + frame_rate = rate.numerator; + else if (is_drop_frame_rate(rate)) { + t.drop_code = true; + frame_rate = 30; + + // We can't declare these as const int due to a Vala compiler bug. + int FRAMES_PER_MINUTE = 30 * 60 - 2; + int FRAMES_PER_10_MINUTES = 10 * FRAMES_PER_MINUTE + 2; + + int block = frame / FRAMES_PER_10_MINUTES; // number of 10-minute blocks elapsed + int minute_in_block = (frame % FRAMES_PER_10_MINUTES - 2) / FRAMES_PER_MINUTE; + int minutes = 10 * block + minute_in_block; + frame += 2 * minutes - 2 * block; // skip 2 frames per minute, except every 10 minutes + } else { + // TODO: We're getting odd framerate fractions from imported videos, so + // I've removed the error call until we decide what to do + frame_rate = rate.numerator / rate.denominator; + } + + t.frame = frame % frame_rate; + + int64 secs = frame / frame_rate; + t.hour = (int) secs / 3600; + t.minute = ((int) secs % 3600) / 60; + t.second = ((int) secs % 3600) % 60; + + return t; +} + +public string frame_to_string(int frame, Fraction rate) { + return frame_to_time(frame, rate).to_string(); +} + +void breakup_time(int64 time, out int hours, out int minutes, out double seconds) { + int64 the_time = time; + int64 minute = Gst.SECOND * 60; + int64 hour = minute * 60; + hours = (int) (the_time / hour); + the_time = the_time % hour; + minutes = (int) (the_time / minute); + the_time = the_time % minute; + seconds = (double) the_time / Gst.SECOND; +} + +public string time_to_HHMMSS(int64 time) { + int hours; + int minutes; + double seconds; + + breakup_time(time, out hours, out minutes, out seconds); + return "%02d:%02d:%05.2lf".printf(hours, minutes, seconds); +} + +public string time_to_string(int64 time) { + int hours; + int minutes; + double seconds; + + breakup_time(time, out hours, out minutes, out seconds); + string return_value = "%1.2lfs".printf(seconds); + if (hours > 0 || minutes > 0) { + return_value = "%dm ".printf(minutes) + return_value; + } + + if (hours > 0) { + return_value = "%dh ".printf(hours) + return_value; + } + + return return_value; +} + +public static Gst.Element make_element_with_name(string element_name, string? display_name) + throws GLib.Error { + Gst.Element e = Gst.ElementFactory.make(element_name, display_name); + if (e == null) { + throw new + MediaError.MISSING_PLUGIN("Could not create element %s(%s)".printf(element_name, display_name)); + } + return e; +} + +public static Gst.Element make_element(string name) throws Error { + return make_element_with_name(name, null); +} + diff --git a/src/marina/video_track.vala b/src/marina/video_track.vala new file mode 100644 index 0000000..bc858b2 --- /dev/null +++ b/src/marina/video_track.vala @@ -0,0 +1,114 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + + +namespace Model { +public class VideoTrack : Track { + + public VideoTrack(Model.Project project) { + base(project, "Video Track"); + } + + protected override string name() { return "video"; } + + public override MediaType media_type() { + return MediaType.VIDEO; + } + + protected override bool check(Clip clip) { + Fraction rate1; + Fraction rate2; + + if (!clip.clipfile.is_online()) + return true; + + if (clips.size == 0) + return true; + + if (!get_framerate(out rate2)) { + error_occurred("Cannot get initial frame rate!", null); + return false; + } + + if (!clip.clipfile.get_frame_rate(out rate1)) { + error_occurred("can't get frame rate", null); + return false; + } + + if (!rate1.equal(rate2)) { + error_occurred("can't insert clip with different frame rate", null); + return false; + } + return true; + } + + /* It would be nice if we could query or seek in frames using GST_FORMAT_DEFAULT, or ask + * GStreamer to convert frame->time and time->frame for us using gst_element_query_convert(). + * Unfortunately there are several reasons we can't. + * 1) It appears that position queries using GST_FORMAT_DEFAULT are broken since GstBaseSink + * won't pass them upstream. + * 2) Some codecs (e.g. theoradec) will convert between time and frames, but + * others (e.g. ffmpegdec, dvdec) haven't implemented this conversion. + * 3) Even when a codec will perform conversions, its frame->time and time->frame functions may + * not be perfect inverses; see the comments in time_to_frame(), below. + * + * So instead we must convert manually using the frame rate. + * + * TODO: We should file GStreamer bugs for all of these. + */ + + int64 frame_to_time(int frame) { + Fraction rate; + if (!get_framerate(out rate)) + return 0; + + return (int64) Gst.util_uint64_scale(frame, Gst.SECOND * rate.denominator, rate.numerator); + } + + int time_to_frame(int64 time) { + Fraction rate; + if (!get_framerate(out rate)) + return 0; + return time_to_frame_with_rate(time, rate); + } + + public int get_current_frame(int64 time) { + return time_to_frame(time); + } + + public int64 previous_frame(int64 position) { + int frame = time_to_frame(position); + return frame_to_time(frame - 1); + } + + public int64 next_frame(int64 position) { + int frame = time_to_frame(position); + return frame_to_time(frame + 1); + } + + public bool get_framerate(out Fraction rate) { + if (clips.size == 0) + return false; + + foreach (Clip c in clips) { + if (c.clipfile.is_online()) { + bool can = c.clipfile.get_frame_rate(out rate); + assert(can); + + return can; + } + } + + if (project.default_framerate.equal(Project.INVALID_FRAME_RATE)) + return false; + + rate = project.default_framerate; + return true; + } +} + +} + diff --git a/src/test/Makefile b/src/test/Makefile new file mode 100644 index 0000000..41b0361 --- /dev/null +++ b/src/test/Makefile @@ -0,0 +1,19 @@ +PROGRAM = ../../$(PROGRAM_NAME) +all: $(PROGRAM) + +-include ../../configure.mk + +VALA_LDFLAGS = `pkg-config --libs $(EXT_PKGS)` +-include sources.mk +SRC_FILES += \ + ../marina/ProjectLoader.vala \ + ../marina/Logging.vala \ + ../marina/util.vala + +ifndef BUILD_DIR +BUILD_DIR=debug +endif + +-include ../../marina.mk +HEADER_DIRS += ../marina + diff --git a/src/test/debug/.stamp b/src/test/debug/.stamp new file mode 100644 index 0000000..e69de29 diff --git a/src/test/debug/Logging.c b/src/test/debug/Logging.c new file mode 100644 index 0000000..59595c4 --- /dev/null +++ b/src/test/debug/Logging.c @@ -0,0 +1,127 @@ +/* Logging.c generated by valac, the Vala compiler + * generated from Logging.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include + + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +extern LoggingLevel logging_current_level; +LoggingLevel logging_current_level = LOGGING_LEVEL_HIGH; + +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_set_logging_level (LoggingLevel new_level); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); + +const LoggingLevel LOGGING_active_facility[6] = {LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL}; +const char* LOGGING_facility_names[6] = {"SIGNAL_HANDLERS", "DEVELOPER_WARNINGS", "GRAPH", "LOADING", "IMPORT", "SINGLEDECODEBIN"}; + + +GType logging_facility_get_type (void) { + static volatile gsize logging_facility_type_id__volatile = 0; + if (g_once_init_enter (&logging_facility_type_id__volatile)) { + static const GEnumValue values[] = {{LOGGING_FACILITY_SIGNAL_HANDLERS, "LOGGING_FACILITY_SIGNAL_HANDLERS", "signal-handlers"}, {LOGGING_FACILITY_DEVELOPER_WARNINGS, "LOGGING_FACILITY_DEVELOPER_WARNINGS", "developer-warnings"}, {LOGGING_FACILITY_GRAPH, "LOGGING_FACILITY_GRAPH", "graph"}, {LOGGING_FACILITY_LOADING, "LOGGING_FACILITY_LOADING", "loading"}, {LOGGING_FACILITY_IMPORT, "LOGGING_FACILITY_IMPORT", "import"}, {LOGGING_FACILITY_SINGLEDECODEBIN, "LOGGING_FACILITY_SINGLEDECODEBIN", "singledecodebin"}, {0, NULL, NULL}}; + GType logging_facility_type_id; + logging_facility_type_id = g_enum_register_static ("LoggingFacility", values); + g_once_init_leave (&logging_facility_type_id__volatile, logging_facility_type_id); + } + return logging_facility_type_id__volatile; +} + + +GType logging_level_get_type (void) { + static volatile gsize logging_level_type_id__volatile = 0; + if (g_once_init_enter (&logging_level_type_id__volatile)) { + static const GEnumValue values[] = {{LOGGING_LEVEL_CRITICAL, "LOGGING_LEVEL_CRITICAL", "critical"}, {LOGGING_LEVEL_HIGH, "LOGGING_LEVEL_HIGH", "high"}, {LOGGING_LEVEL_MEDIUM, "LOGGING_LEVEL_MEDIUM", "medium"}, {LOGGING_LEVEL_LOW, "LOGGING_LEVEL_LOW", "low"}, {LOGGING_LEVEL_INFO, "LOGGING_LEVEL_INFO", "info"}, {LOGGING_LEVEL_VERBOSE, "LOGGING_LEVEL_VERBOSE", "verbose"}, {0, NULL, NULL}}; + GType logging_level_type_id; + logging_level_type_id = g_enum_register_static ("LoggingLevel", values); + g_once_init_leave (&logging_level_type_id__volatile, logging_level_type_id); + } + return logging_level_type_id__volatile; +} + + +#line 46 "Logging.vala" +void logging_set_logging_level (LoggingLevel new_level) { +#line 79 "Logging.c" + gboolean _tmp0_ = FALSE; +#line 47 "Logging.vala" + if (new_level <= LOGGING_LEVEL_VERBOSE) { +#line 47 "Logging.vala" + _tmp0_ = new_level >= LOGGING_LEVEL_CRITICAL; +#line 85 "Logging.c" + } else { +#line 47 "Logging.vala" + _tmp0_ = FALSE; +#line 89 "Logging.c" + } +#line 47 "Logging.vala" + if (_tmp0_) { +#line 48 "Logging.vala" + logging_current_level = new_level; +#line 95 "Logging.c" + } +} + + +#line 52 "Logging.vala" +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message) { +#line 102 "Logging.c" + gboolean _tmp0_ = FALSE; +#line 52 "Logging.vala" + g_return_if_fail (G_IS_OBJECT (object)); +#line 52 "Logging.vala" + g_return_if_fail (message != NULL); +#line 53 "Logging.vala" + if (level <= logging_current_level) { +#line 53 "Logging.vala" + _tmp0_ = TRUE; +#line 112 "Logging.c" + } else { +#line 53 "Logging.vala" + _tmp0_ = level <= LOGGING_active_facility[facility]; +#line 116 "Logging.c" + } +#line 53 "Logging.vala" + if (_tmp0_) { +#line 54 "Logging.vala" + fprintf (stderr, "%s(%s): %s\n", g_type_name (G_TYPE_FROM_INSTANCE (object)), LOGGING_facility_names[facility], message); +#line 122 "Logging.c" + } +} + + + + diff --git a/src/test/debug/Logging.o b/src/test/debug/Logging.o new file mode 100644 index 0000000000000000000000000000000000000000..24bc0f4687a9318e166750b7e5ab8a1013a17dd2 GIT binary patch literal 12036 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 OLGaJA8s&VU|Nj9HW%a}W literal 0 HcmV?d00001 diff --git a/src/test/debug/ProjectLoader.c b/src/test/debug/ProjectLoader.c new file mode 100644 index 0000000..2540eb1 --- /dev/null +++ b/src/test/debug/ProjectLoader.c @@ -0,0 +1,2126 @@ +/* ProjectLoader.c generated by valac, the Vala compiler + * generated from ProjectLoader.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include + + +#define MODEL_TYPE_LOADER_HANDLER (model_loader_handler_get_type ()) +#define MODEL_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandler)) +#define MODEL_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) +#define MODEL_IS_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_IS_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) + +typedef struct _ModelLoaderHandler ModelLoaderHandler; +typedef struct _ModelLoaderHandlerClass ModelLoaderHandlerClass; +typedef struct _ModelLoaderHandlerPrivate ModelLoaderHandlerPrivate; + +#define MODEL_TYPE_XML_TREE_LOADER (model_xml_tree_loader_get_type ()) +#define MODEL_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoader)) +#define MODEL_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) +#define MODEL_IS_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_IS_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_XML_TREE_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) + +typedef struct _ModelXmlTreeLoader ModelXmlTreeLoader; +typedef struct _ModelXmlTreeLoaderClass ModelXmlTreeLoaderClass; +typedef struct _ModelXmlTreeLoaderPrivate ModelXmlTreeLoaderPrivate; + +#define MODEL_TYPE_XML_ELEMENT (model_xml_element_get_type ()) +#define MODEL_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElement)) +#define MODEL_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) +#define MODEL_IS_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_IS_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_XML_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) + +typedef struct _ModelXmlElement ModelXmlElement; +typedef struct _ModelXmlElementClass ModelXmlElementClass; +#define _model_xml_element_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_element_unref (var), NULL))) +#define _g_markup_parse_context_free0(var) ((var == NULL) ? NULL : (var = (g_markup_parse_context_free (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +typedef struct _ModelParamSpecXmlTreeLoader ModelParamSpecXmlTreeLoader; + +#define MODEL_TYPE_PROJECT_BUILDER (model_project_builder_get_type ()) +#define MODEL_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilder)) +#define MODEL_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass)) +#define MODEL_IS_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_BUILDER)) +#define MODEL_IS_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_BUILDER)) +#define MODEL_PROJECT_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass)) + +typedef struct _ModelProjectBuilder ModelProjectBuilder; +typedef struct _ModelProjectBuilderClass ModelProjectBuilderClass; +typedef struct _ModelProjectBuilderPrivate ModelProjectBuilderPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +typedef struct _ModelXmlElementPrivate ModelXmlElementPrivate; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +typedef struct _ModelParamSpecXmlElement ModelParamSpecXmlElement; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; +typedef struct _ModelProjectLoaderPrivate ModelProjectLoaderPrivate; +#define _model_xml_tree_loader_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_tree_loader_unref (var), NULL))) + +struct _ModelLoaderHandler { + GObject parent_instance; + ModelLoaderHandlerPrivate * priv; +}; + +struct _ModelLoaderHandlerClass { + GObjectClass parent_class; + gboolean (*commit_library) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_marina) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_track) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clip) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clipfile) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_time_signature_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_tempo_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_click) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_library_preference) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + void (*leave_library) (ModelLoaderHandler* self); + void (*leave_marina) (ModelLoaderHandler* self); + void (*leave_track) (ModelLoaderHandler* self); + void (*leave_clip) (ModelLoaderHandler* self); + void (*leave_clipfile) (ModelLoaderHandler* self); +}; + +struct _ModelXmlTreeLoader { + GTypeInstance parent_instance; + volatile int ref_count; + ModelXmlTreeLoaderPrivate * priv; + ModelXmlElement* root; +}; + +struct _ModelXmlTreeLoaderClass { + GTypeClass parent_class; + void (*finalize) (ModelXmlTreeLoader *self); +}; + +struct _ModelXmlTreeLoaderPrivate { + ModelXmlElement* current_element; +}; + +struct _ModelParamSpecXmlTreeLoader { + GParamSpec parent_instance; +}; + +struct _ModelProjectBuilder { + GObject parent_instance; + ModelProjectBuilderPrivate * priv; +}; + +struct _ModelProjectBuilderClass { + GObjectClass parent_class; +}; + +struct _ModelProjectBuilderPrivate { + ModelLoaderHandler* handler; +}; + +struct _ModelXmlElement { + GTypeInstance parent_instance; + volatile int ref_count; + ModelXmlElementPrivate * priv; + char** attribute_names; + gint attribute_names_length1; + char** attribute_values; + gint attribute_values_length1; +}; + +struct _ModelXmlElementClass { + GTypeClass parent_class; + void (*finalize) (ModelXmlElement *self); +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _ModelXmlElementPrivate { + char* _name; + ModelXmlElement* _parent; + GeeArrayList* _children; +}; + +struct _ModelParamSpecXmlElement { + GParamSpec parent_instance; +}; + +struct _ModelProjectLoader { + GObject parent_instance; + ModelProjectLoaderPrivate * priv; +}; + +struct _ModelProjectLoaderClass { + GObjectClass parent_class; +}; + +struct _ModelProjectLoaderPrivate { + char* file_name; + ModelLoaderHandler* loader_handler; + char* text; + gsize text_len; + gboolean project_load_completed; + gboolean load_completed_fired; + gboolean handler_completed; +}; + + +static gpointer model_loader_handler_parent_class = NULL; +static gpointer model_xml_tree_loader_parent_class = NULL; +static gpointer model_project_builder_parent_class = NULL; +static gpointer model_xml_element_parent_class = NULL; +static gpointer model_project_loader_parent_class = NULL; + +GType model_loader_handler_get_type (void); +enum { + MODEL_LOADER_HANDLER_DUMMY_PROPERTY +}; +ModelLoaderHandler* model_loader_handler_new (void); +ModelLoaderHandler* model_loader_handler_construct (GType object_type); +gboolean model_loader_handler_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static gboolean model_loader_handler_real_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +void model_loader_handler_leave_library (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_library (ModelLoaderHandler* self); +void model_loader_handler_leave_marina (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_marina (ModelLoaderHandler* self); +void model_loader_handler_leave_track (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_track (ModelLoaderHandler* self); +void model_loader_handler_leave_clip (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_clip (ModelLoaderHandler* self); +void model_loader_handler_leave_clipfile (ModelLoaderHandler* self); +static void model_loader_handler_real_leave_clipfile (ModelLoaderHandler* self); +gpointer model_xml_tree_loader_ref (gpointer instance); +void model_xml_tree_loader_unref (gpointer instance); +GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_tree_loader (GValue* value, gpointer v_object); +void model_value_take_xml_tree_loader (GValue* value, gpointer v_object); +gpointer model_value_get_xml_tree_loader (const GValue* value); +GType model_xml_tree_loader_get_type (void); +gpointer model_xml_element_ref (gpointer instance); +void model_xml_element_unref (gpointer instance); +GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_element (GValue* value, gpointer v_object); +void model_value_take_xml_element (GValue* value, gpointer v_object); +gpointer model_value_get_xml_element (const GValue* value); +GType model_xml_element_get_type (void); +#define MODEL_XML_TREE_LOADER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderPrivate)) +enum { + MODEL_XML_TREE_LOADER_DUMMY_PROPERTY +}; +static void model_xml_tree_loader_xml_start_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +static void _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func (GMarkupParseContext* context, const char* element_name, char** attribute_names, char** attribute_values, gpointer self); +static void model_xml_tree_loader_xml_end_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name); +static void _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func (GMarkupParseContext* context, const char* element_name, gpointer self); +ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document); +ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document); +ModelXmlElement* model_xml_element_new (const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent); +ModelXmlElement* model_xml_element_construct (GType object_type, const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent); +void model_xml_element_add_child (ModelXmlElement* self, ModelXmlElement* child_element); +ModelXmlElement* model_xml_element_get_parent (ModelXmlElement* self); +static void model_xml_tree_loader_finalize (ModelXmlTreeLoader* obj); +GType model_project_builder_get_type (void); +#define MODEL_PROJECT_BUILDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderPrivate)) +enum { + MODEL_PROJECT_BUILDER_DUMMY_PROPERTY +}; +ModelProjectBuilder* model_project_builder_new (ModelLoaderHandler* handler); +ModelProjectBuilder* model_project_builder_construct (GType object_type, ModelLoaderHandler* handler); +const char* model_xml_element_get_name (ModelXmlElement* self); +static gboolean model_project_builder_check_name (ModelProjectBuilder* self, const char* expected_name, ModelXmlElement* node); +GeeArrayList* model_xml_element_get_children (ModelXmlElement* self); +static void model_project_builder_handle_clip (ModelProjectBuilder* self, ModelXmlElement* clip); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +static void model_project_builder_handle_track (ModelProjectBuilder* self, ModelXmlElement* track); +static void model_project_builder_handle_preference (ModelProjectBuilder* self, ModelXmlElement* preference); +static void model_project_builder_handle_time_signature (ModelProjectBuilder* self, ModelXmlElement* time_signature); +static void model_project_builder_handle_tempo (ModelProjectBuilder* self, ModelXmlElement* tempo); +static void model_project_builder_handle_map (ModelProjectBuilder* self, ModelXmlElement* map); +static void model_project_builder_handle_library (ModelProjectBuilder* self, ModelXmlElement* library); +static void model_project_builder_handle_tracks (ModelProjectBuilder* self, ModelXmlElement* tracks); +static void model_project_builder_handle_preferences (ModelProjectBuilder* self, ModelXmlElement* preferences); +static void model_project_builder_handle_maps (ModelProjectBuilder* self, ModelXmlElement* maps); +gboolean model_project_builder_check_project (ModelProjectBuilder* self, ModelXmlElement* root); +void model_project_builder_build_project (ModelProjectBuilder* self, ModelXmlElement* root); +static void model_project_builder_finalize (GObject* obj); +#define MODEL_XML_ELEMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_XML_ELEMENT, ModelXmlElementPrivate)) +enum { + MODEL_XML_ELEMENT_DUMMY_PROPERTY +}; +static void model_xml_element_set_name (ModelXmlElement* self, const char* value); +char** copy_array (char** source, int source_length1, int* result_length1); +static void model_xml_element_set_parent (ModelXmlElement* self, ModelXmlElement* value); +static void model_xml_element_finalize (ModelXmlElement* obj); +GType model_project_loader_get_type (void); +#define MODEL_PROJECT_LOADER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderPrivate)) +enum { + MODEL_PROJECT_LOADER_DUMMY_PROPERTY +}; +static void model_project_loader_on_load_error (ModelProjectLoader* self, const char* _error_); +static void _model_project_loader_on_load_error_model_loader_handler_load_error (ModelLoaderHandler* _sender, const char* error_message, gpointer self); +static void model_project_loader_on_handler_complete (ModelProjectLoader* self); +static void _model_project_loader_on_handler_complete_model_loader_handler_complete (ModelLoaderHandler* _sender, gpointer self); +ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name); +ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name); +static void _model_project_loader_on_load_error_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self); +void model_project_loader_load (ModelProjectLoader* self); +static void model_project_loader_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); +static int _vala_strcmp0 (const char * str1, const char * str2); + + + +#line 15 "ProjectLoader.vala" +ModelLoaderHandler* model_loader_handler_construct (GType object_type) { +#line 332 "ProjectLoader.c" + ModelLoaderHandler * self; +#line 15 "ProjectLoader.vala" + self = (ModelLoaderHandler*) g_object_new (object_type, NULL); +#line 336 "ProjectLoader.c" + return self; +} + + +#line 15 "ProjectLoader.vala" +ModelLoaderHandler* model_loader_handler_new (void) { +#line 15 "ProjectLoader.vala" + return model_loader_handler_construct (MODEL_TYPE_LOADER_HANDLER); +#line 345 "ProjectLoader.c" +} + + +#line 18 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 351 "ProjectLoader.c" + gboolean result = FALSE; +#line 18 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 355 "ProjectLoader.c" + result = TRUE; +#line 19 "ProjectLoader.vala" + return result; +#line 359 "ProjectLoader.c" +} + + +#line 18 "ProjectLoader.vala" +gboolean model_loader_handler_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 18 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_library (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 367 "ProjectLoader.c" +} + + +#line 22 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 373 "ProjectLoader.c" + gboolean result = FALSE; +#line 22 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 377 "ProjectLoader.c" + result = TRUE; +#line 23 "ProjectLoader.vala" + return result; +#line 381 "ProjectLoader.c" +} + + +#line 22 "ProjectLoader.vala" +gboolean model_loader_handler_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 22 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_marina (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 389 "ProjectLoader.c" +} + + +#line 26 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 395 "ProjectLoader.c" + gboolean result = FALSE; +#line 26 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 399 "ProjectLoader.c" + result = TRUE; +#line 27 "ProjectLoader.vala" + return result; +#line 403 "ProjectLoader.c" +} + + +#line 26 "ProjectLoader.vala" +gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 26 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_track (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 411 "ProjectLoader.c" +} + + +#line 30 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 417 "ProjectLoader.c" + gboolean result = FALSE; +#line 30 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 421 "ProjectLoader.c" + result = TRUE; +#line 31 "ProjectLoader.vala" + return result; +#line 425 "ProjectLoader.c" +} + + +#line 30 "ProjectLoader.vala" +gboolean model_loader_handler_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 30 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_clip (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 433 "ProjectLoader.c" +} + + +#line 34 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 439 "ProjectLoader.c" + gboolean result = FALSE; +#line 34 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 443 "ProjectLoader.c" + result = TRUE; +#line 35 "ProjectLoader.vala" + return result; +#line 447 "ProjectLoader.c" +} + + +#line 34 "ProjectLoader.vala" +gboolean model_loader_handler_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 34 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_clipfile (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 455 "ProjectLoader.c" +} + + +#line 38 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 461 "ProjectLoader.c" + gboolean result = FALSE; +#line 38 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 465 "ProjectLoader.c" + result = TRUE; +#line 39 "ProjectLoader.vala" + return result; +#line 469 "ProjectLoader.c" +} + + +#line 38 "ProjectLoader.vala" +gboolean model_loader_handler_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 38 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_time_signature_entry (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 477 "ProjectLoader.c" +} + + +#line 42 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 483 "ProjectLoader.c" + gboolean result = FALSE; +#line 42 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 487 "ProjectLoader.c" + result = TRUE; +#line 43 "ProjectLoader.vala" + return result; +#line 491 "ProjectLoader.c" +} + + +#line 42 "ProjectLoader.vala" +gboolean model_loader_handler_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 42 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_tempo_entry (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 499 "ProjectLoader.c" +} + + +#line 46 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 505 "ProjectLoader.c" + gboolean result = FALSE; +#line 46 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 509 "ProjectLoader.c" + result = TRUE; +#line 47 "ProjectLoader.vala" + return result; +#line 513 "ProjectLoader.c" +} + + +#line 46 "ProjectLoader.vala" +gboolean model_loader_handler_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 46 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_click (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 521 "ProjectLoader.c" +} + + +#line 50 "ProjectLoader.vala" +static gboolean model_loader_handler_real_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 527 "ProjectLoader.c" + gboolean result = FALSE; +#line 50 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE); +#line 531 "ProjectLoader.c" + result = TRUE; +#line 51 "ProjectLoader.vala" + return result; +#line 535 "ProjectLoader.c" +} + + +#line 50 "ProjectLoader.vala" +gboolean model_loader_handler_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 50 "ProjectLoader.vala" + return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_library_preference (self, attr_names, attr_names_length1, attr_values, attr_values_length1); +#line 543 "ProjectLoader.c" +} + + +#line 54 "ProjectLoader.vala" +static void model_loader_handler_real_leave_library (ModelLoaderHandler* self) { +#line 54 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 551 "ProjectLoader.c" +} + + +#line 54 "ProjectLoader.vala" +void model_loader_handler_leave_library (ModelLoaderHandler* self) { +#line 54 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_library (self); +#line 559 "ProjectLoader.c" +} + + +#line 57 "ProjectLoader.vala" +static void model_loader_handler_real_leave_marina (ModelLoaderHandler* self) { +#line 57 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 567 "ProjectLoader.c" +} + + +#line 57 "ProjectLoader.vala" +void model_loader_handler_leave_marina (ModelLoaderHandler* self) { +#line 57 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_marina (self); +#line 575 "ProjectLoader.c" +} + + +#line 60 "ProjectLoader.vala" +static void model_loader_handler_real_leave_track (ModelLoaderHandler* self) { +#line 60 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 583 "ProjectLoader.c" +} + + +#line 60 "ProjectLoader.vala" +void model_loader_handler_leave_track (ModelLoaderHandler* self) { +#line 60 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_track (self); +#line 591 "ProjectLoader.c" +} + + +#line 63 "ProjectLoader.vala" +static void model_loader_handler_real_leave_clip (ModelLoaderHandler* self) { +#line 63 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 599 "ProjectLoader.c" +} + + +#line 63 "ProjectLoader.vala" +void model_loader_handler_leave_clip (ModelLoaderHandler* self) { +#line 63 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_clip (self); +#line 607 "ProjectLoader.c" +} + + +#line 66 "ProjectLoader.vala" +static void model_loader_handler_real_leave_clipfile (ModelLoaderHandler* self) { +#line 66 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_LOADER_HANDLER (self)); +#line 615 "ProjectLoader.c" +} + + +#line 66 "ProjectLoader.vala" +void model_loader_handler_leave_clipfile (ModelLoaderHandler* self) { +#line 66 "ProjectLoader.vala" + MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_clipfile (self); +#line 623 "ProjectLoader.c" +} + + +static void model_loader_handler_class_init (ModelLoaderHandlerClass * klass) { + model_loader_handler_parent_class = g_type_class_peek_parent (klass); + MODEL_LOADER_HANDLER_CLASS (klass)->commit_library = model_loader_handler_real_commit_library; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_marina = model_loader_handler_real_commit_marina; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_track = model_loader_handler_real_commit_track; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_clip = model_loader_handler_real_commit_clip; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_clipfile = model_loader_handler_real_commit_clipfile; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_time_signature_entry = model_loader_handler_real_commit_time_signature_entry; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_tempo_entry = model_loader_handler_real_commit_tempo_entry; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_click = model_loader_handler_real_commit_click; + MODEL_LOADER_HANDLER_CLASS (klass)->commit_library_preference = model_loader_handler_real_commit_library_preference; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_library = model_loader_handler_real_leave_library; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_marina = model_loader_handler_real_leave_marina; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_track = model_loader_handler_real_leave_track; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_clip = model_loader_handler_real_leave_clip; + MODEL_LOADER_HANDLER_CLASS (klass)->leave_clipfile = model_loader_handler_real_leave_clipfile; + g_signal_new ("load_error", MODEL_TYPE_LOADER_HANDLER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + g_signal_new ("complete", MODEL_TYPE_LOADER_HANDLER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); +} + + +static void model_loader_handler_instance_init (ModelLoaderHandler * self) { +} + + +GType model_loader_handler_get_type (void) { + static volatile gsize model_loader_handler_type_id__volatile = 0; + if (g_once_init_enter (&model_loader_handler_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelLoaderHandlerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_loader_handler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelLoaderHandler), 0, (GInstanceInitFunc) model_loader_handler_instance_init, NULL }; + GType model_loader_handler_type_id; + model_loader_handler_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelLoaderHandler", &g_define_type_info, 0); + g_once_init_leave (&model_loader_handler_type_id__volatile, model_loader_handler_type_id); + } + return model_loader_handler_type_id__volatile; +} + + +#line 87 "ProjectLoader.vala" +static void _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func (GMarkupParseContext* context, const char* element_name, char** attribute_names, char** attribute_values, gpointer self) { +#line 666 "ProjectLoader.c" + model_xml_tree_loader_xml_start_element (self, context, element_name, attribute_names, _vala_array_length (attribute_names), attribute_values, _vala_array_length (attribute_values)); +} + + +#line 100 "ProjectLoader.vala" +static void _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func (GMarkupParseContext* context, const char* element_name, gpointer self) { +#line 673 "ProjectLoader.c" + model_xml_tree_loader_xml_end_element (self, context, element_name); +} + + +static glong string_get_length (const char* self) { + glong result; + g_return_val_if_fail (self != NULL, 0L); + result = g_utf8_strlen (self, -1); +#line 1158 "glib-2.0.vapi" + return result; +#line 684 "ProjectLoader.c" +} + + +#line 76 "ProjectLoader.vala" +ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document) { +#line 690 "ProjectLoader.c" + GError * _inner_error_; + ModelXmlTreeLoader* self; + GMarkupParser _tmp0_ = {0}; + GMarkupParser parser; + GMarkupParseContext* context; +#line 76 "ProjectLoader.vala" + g_return_val_if_fail (document != NULL, NULL); +#line 698 "ProjectLoader.c" + _inner_error_ = NULL; + self = (ModelXmlTreeLoader*) g_type_create_instance (object_type); +#line 77 "ProjectLoader.vala" + parser = (_tmp0_.start_element = _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func, _tmp0_.end_element = _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func, _tmp0_.text = NULL, _tmp0_.passthrough = NULL, _tmp0_); +#line 79 "ProjectLoader.vala" + context = g_markup_parse_context_new (&parser, (GMarkupParseFlags) 0, self, NULL); +#line 705 "ProjectLoader.c" + { +#line 81 "ProjectLoader.vala" + g_markup_parse_context_parse (context, document, (gssize) string_get_length (document), &_inner_error_); +#line 709 "ProjectLoader.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_MARKUP_ERROR) { + goto __catch0_g_markup_error; + } + _g_markup_parse_context_free0 (context); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + } + goto __finally0; + __catch0_g_markup_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally0: + if (_inner_error_ != NULL) { + _g_markup_parse_context_free0 (context); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + _g_markup_parse_context_free0 (context); + return self; +} + + +#line 76 "ProjectLoader.vala" +ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document) { +#line 76 "ProjectLoader.vala" + return model_xml_tree_loader_construct (MODEL_TYPE_XML_TREE_LOADER, document); +#line 746 "ProjectLoader.c" +} + + +static gpointer _model_xml_element_ref0 (gpointer self) { + return self ? model_xml_element_ref (self) : NULL; +} + + +#line 87 "ProjectLoader.vala" +static void model_xml_tree_loader_xml_start_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) { +#line 757 "ProjectLoader.c" + ModelXmlElement* new_element; + ModelXmlElement* _tmp1_; +#line 87 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_TREE_LOADER (self)); +#line 87 "ProjectLoader.vala" + g_return_if_fail (c != NULL); +#line 87 "ProjectLoader.vala" + g_return_if_fail (name != NULL); +#line 89 "ProjectLoader.vala" + new_element = model_xml_element_new (name, attr_names, attr_names_length1, attr_values, attr_values_length1, self->priv->current_element); +#line 90 "ProjectLoader.vala" + if (self->root == NULL) { +#line 770 "ProjectLoader.c" + ModelXmlElement* _tmp0_; +#line 91 "ProjectLoader.vala" + self->root = (_tmp0_ = _model_xml_element_ref0 (new_element), _model_xml_element_unref0 (self->root), _tmp0_); +#line 774 "ProjectLoader.c" + } else { +#line 93 "ProjectLoader.vala" + g_assert (self->priv->current_element != NULL); +#line 94 "ProjectLoader.vala" + model_xml_element_add_child (self->priv->current_element, new_element); +#line 780 "ProjectLoader.c" + } +#line 97 "ProjectLoader.vala" + self->priv->current_element = (_tmp1_ = _model_xml_element_ref0 (new_element), _model_xml_element_unref0 (self->priv->current_element), _tmp1_); +#line 784 "ProjectLoader.c" + _model_xml_element_unref0 (new_element); +} + + +#line 100 "ProjectLoader.vala" +static void model_xml_tree_loader_xml_end_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name) { +#line 791 "ProjectLoader.c" + ModelXmlElement* _tmp0_; +#line 100 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_TREE_LOADER (self)); +#line 100 "ProjectLoader.vala" + g_return_if_fail (c != NULL); +#line 100 "ProjectLoader.vala" + g_return_if_fail (name != NULL); +#line 101 "ProjectLoader.vala" + g_assert (self->priv->current_element != NULL); +#line 102 "ProjectLoader.vala" + self->priv->current_element = (_tmp0_ = _model_xml_element_ref0 (model_xml_element_get_parent (self->priv->current_element)), _model_xml_element_unref0 (self->priv->current_element), _tmp0_); +#line 803 "ProjectLoader.c" +} + + +static void model_value_xml_tree_loader_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_xml_tree_loader_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_xml_tree_loader_unref (value->data[0].v_pointer); + } +} + + +static void model_value_xml_tree_loader_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_xml_tree_loader_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_xml_tree_loader_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_xml_tree_loader_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelXmlTreeLoader* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_xml_tree_loader_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_xml_tree_loader_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelXmlTreeLoader** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_xml_tree_loader_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecXmlTreeLoader* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_XML_TREE_LOADER), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_xml_tree_loader (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_xml_tree_loader (GValue* value, gpointer v_object) { + ModelXmlTreeLoader* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_TREE_LOADER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_xml_tree_loader_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_tree_loader_unref (old); + } +} + + +void model_value_take_xml_tree_loader (GValue* value, gpointer v_object) { + ModelXmlTreeLoader* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_TREE_LOADER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_tree_loader_unref (old); + } +} + + +static void model_xml_tree_loader_class_init (ModelXmlTreeLoaderClass * klass) { + model_xml_tree_loader_parent_class = g_type_class_peek_parent (klass); + MODEL_XML_TREE_LOADER_CLASS (klass)->finalize = model_xml_tree_loader_finalize; + g_type_class_add_private (klass, sizeof (ModelXmlTreeLoaderPrivate)); +} + + +static void model_xml_tree_loader_instance_init (ModelXmlTreeLoader * self) { + self->priv = MODEL_XML_TREE_LOADER_GET_PRIVATE (self); + self->priv->current_element = NULL; + self->root = NULL; + self->ref_count = 1; +} + + +static void model_xml_tree_loader_finalize (ModelXmlTreeLoader* obj) { + ModelXmlTreeLoader * self; + self = MODEL_XML_TREE_LOADER (obj); + _model_xml_element_unref0 (self->priv->current_element); + _model_xml_element_unref0 (self->root); +} + + +GType model_xml_tree_loader_get_type (void) { + static volatile gsize model_xml_tree_loader_type_id__volatile = 0; + if (g_once_init_enter (&model_xml_tree_loader_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_xml_tree_loader_init, model_value_xml_tree_loader_free_value, model_value_xml_tree_loader_copy_value, model_value_xml_tree_loader_peek_pointer, "p", model_value_xml_tree_loader_collect_value, "p", model_value_xml_tree_loader_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelXmlTreeLoaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_xml_tree_loader_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelXmlTreeLoader), 0, (GInstanceInitFunc) model_xml_tree_loader_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_xml_tree_loader_type_id; + model_xml_tree_loader_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelXmlTreeLoader", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_xml_tree_loader_type_id__volatile, model_xml_tree_loader_type_id); + } + return model_xml_tree_loader_type_id__volatile; +} + + +gpointer model_xml_tree_loader_ref (gpointer instance) { + ModelXmlTreeLoader* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_xml_tree_loader_unref (gpointer instance) { + ModelXmlTreeLoader* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_XML_TREE_LOADER_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 114 "ProjectLoader.vala" +ModelProjectBuilder* model_project_builder_construct (GType object_type, ModelLoaderHandler* handler) { +#line 979 "ProjectLoader.c" + ModelProjectBuilder * self; + ModelLoaderHandler* _tmp0_; +#line 114 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (handler), NULL); +#line 114 "ProjectLoader.vala" + self = (ModelProjectBuilder*) g_object_new (object_type, NULL); +#line 115 "ProjectLoader.vala" + self->priv->handler = (_tmp0_ = _g_object_ref0 (handler), _g_object_unref0 (self->priv->handler), _tmp0_); +#line 988 "ProjectLoader.c" + return self; +} + + +#line 114 "ProjectLoader.vala" +ModelProjectBuilder* model_project_builder_new (ModelLoaderHandler* handler) { +#line 114 "ProjectLoader.vala" + return model_project_builder_construct (MODEL_TYPE_PROJECT_BUILDER, handler); +#line 997 "ProjectLoader.c" +} + + +#line 118 "ProjectLoader.vala" +static gboolean model_project_builder_check_name (ModelProjectBuilder* self, const char* expected_name, ModelXmlElement* node) { +#line 1003 "ProjectLoader.c" + gboolean result = FALSE; + char* _tmp0_; +#line 118 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_PROJECT_BUILDER (self), FALSE); +#line 118 "ProjectLoader.vala" + g_return_val_if_fail (expected_name != NULL, FALSE); +#line 118 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (node), FALSE); +#line 119 "ProjectLoader.vala" + if (_vala_strcmp0 (model_xml_element_get_name (node), expected_name) == 0) { +#line 1014 "ProjectLoader.c" + result = TRUE; +#line 120 "ProjectLoader.vala" + return result; +#line 1018 "ProjectLoader.c" + } +#line 123 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", _tmp0_ = g_strdup_printf ("expected %s, got %s", expected_name, model_xml_element_get_name (node))); +#line 1022 "ProjectLoader.c" + _g_free0 (_tmp0_); + result = FALSE; +#line 124 "ProjectLoader.vala" + return result; +#line 1027 "ProjectLoader.c" +} + + +#line 127 "ProjectLoader.vala" +static void model_project_builder_handle_clip (ModelProjectBuilder* self, ModelXmlElement* clip) { +#line 127 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 127 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (clip)); +#line 128 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "clip", clip)) { +#line 129 "ProjectLoader.vala" + if (model_loader_handler_commit_clip (self->priv->handler, clip->attribute_names, clip->attribute_names_length1, clip->attribute_values, clip->attribute_values_length1)) { +#line 130 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (clip))) != 0) { +#line 131 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "clip cannot have children"); +#line 1045 "ProjectLoader.c" + } +#line 133 "ProjectLoader.vala" + model_loader_handler_leave_clip (self->priv->handler); +#line 1049 "ProjectLoader.c" + } + } +} + + +#line 138 "ProjectLoader.vala" +static void model_project_builder_handle_track (ModelProjectBuilder* self, ModelXmlElement* track) { +#line 138 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 138 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (track)); +#line 139 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "track", track)) { +#line 140 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, "loading track"); +#line 141 "ProjectLoader.vala" + if (model_loader_handler_commit_track (self->priv->handler, track->attribute_names, track->attribute_names_length1, track->attribute_values, track->attribute_values_length1)) { +#line 1067 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (track))); +#line 142 "ProjectLoader.vala" + while (TRUE) { +#line 1073 "ProjectLoader.c" + ModelXmlElement* child; +#line 142 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 142 "ProjectLoader.vala" + break; +#line 1079 "ProjectLoader.c" + } +#line 142 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 143 "ProjectLoader.vala" + model_project_builder_handle_clip (self, child); +#line 1085 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +#line 145 "ProjectLoader.vala" + model_loader_handler_leave_track (self->priv->handler); +#line 1092 "ProjectLoader.c" + } + } +} + + +#line 150 "ProjectLoader.vala" +static void model_project_builder_handle_preference (ModelProjectBuilder* self, ModelXmlElement* preference) { +#line 150 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 150 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (preference)); +#line 151 "ProjectLoader.vala" + if (_vala_strcmp0 ("click", model_xml_element_get_name (preference)) == 0) { +#line 152 "ProjectLoader.vala" + model_loader_handler_commit_click (self->priv->handler, preference->attribute_names, preference->attribute_names_length1, preference->attribute_values, preference->attribute_values_length1); +#line 1108 "ProjectLoader.c" + } else { +#line 153 "ProjectLoader.vala" + if (_vala_strcmp0 ("library", model_xml_element_get_name (preference)) == 0) { +#line 154 "ProjectLoader.vala" + model_loader_handler_commit_library_preference (self->priv->handler, preference->attribute_names, preference->attribute_names_length1, preference->attribute_values, preference->attribute_values_length1); +#line 1114 "ProjectLoader.c" + } else { + char* _tmp0_; +#line 157 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", _tmp0_ = g_strdup_printf ("Unknown preference: %s", model_xml_element_get_name (preference))); +#line 1119 "ProjectLoader.c" + _g_free0 (_tmp0_); + } + } +} + + +#line 161 "ProjectLoader.vala" +static void model_project_builder_handle_time_signature (ModelProjectBuilder* self, ModelXmlElement* time_signature) { +#line 161 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 161 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (time_signature)); +#line 1132 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (time_signature))); +#line 162 "ProjectLoader.vala" + while (TRUE) { +#line 1138 "ProjectLoader.c" + ModelXmlElement* child; +#line 162 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 162 "ProjectLoader.vala" + break; +#line 1144 "ProjectLoader.c" + } +#line 162 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 163 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "entry", child)) { +#line 164 "ProjectLoader.vala" + if (!model_loader_handler_commit_time_signature_entry (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) { +#line 166 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper time signature node"); +#line 1154 "ProjectLoader.c" + } + } + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 172 "ProjectLoader.vala" +static void model_project_builder_handle_tempo (ModelProjectBuilder* self, ModelXmlElement* tempo) { +#line 172 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 172 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (tempo)); +#line 1170 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (tempo))); +#line 173 "ProjectLoader.vala" + while (TRUE) { +#line 1176 "ProjectLoader.c" + ModelXmlElement* child; +#line 173 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 173 "ProjectLoader.vala" + break; +#line 1182 "ProjectLoader.c" + } +#line 173 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 174 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "entry", child)) { +#line 175 "ProjectLoader.vala" + if (!model_loader_handler_commit_tempo_entry (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) { +#line 176 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper tempo node"); +#line 1192 "ProjectLoader.c" + } + } + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 182 "ProjectLoader.vala" +static void model_project_builder_handle_map (ModelProjectBuilder* self, ModelXmlElement* map) { +#line 1204 "ProjectLoader.c" + GQuark _tmp1_; + const char* _tmp0_; + static GQuark _tmp1__label0 = 0; + static GQuark _tmp1__label1 = 0; +#line 182 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 182 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (map)); +#line 1213 "ProjectLoader.c" + _tmp0_ = model_xml_element_get_name (map); + _tmp1_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_); + if (_tmp1_ == ((0 != _tmp1__label0) ? _tmp1__label0 : (_tmp1__label0 = g_quark_from_static_string ("tempo")))) + switch (0) { + default: + { +#line 185 "ProjectLoader.vala" + model_project_builder_handle_tempo (self, map); +#line 186 "ProjectLoader.vala" + break; +#line 1224 "ProjectLoader.c" + } + } else if (_tmp1_ == ((0 != _tmp1__label1) ? _tmp1__label1 : (_tmp1__label1 = g_quark_from_static_string ("time_signature")))) + switch (0) { + default: + { +#line 188 "ProjectLoader.vala" + model_project_builder_handle_time_signature (self, map); +#line 189 "ProjectLoader.vala" + break; +#line 1234 "ProjectLoader.c" + } + } else + switch (0) { + default: + { +#line 191 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "improper map node"); +#line 192 "ProjectLoader.vala" + break; +#line 1244 "ProjectLoader.c" + } + } +} + + +#line 196 "ProjectLoader.vala" +static void model_project_builder_handle_library (ModelProjectBuilder* self, ModelXmlElement* library) { +#line 196 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 196 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (library)); +#line 197 "ProjectLoader.vala" + if (model_loader_handler_commit_library (self->priv->handler, library->attribute_names, library->attribute_names_length1, library->attribute_values, library->attribute_values_length1)) { +#line 1258 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (library))); +#line 198 "ProjectLoader.vala" + while (TRUE) { +#line 1264 "ProjectLoader.c" + ModelXmlElement* child; +#line 198 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 198 "ProjectLoader.vala" + break; +#line 1270 "ProjectLoader.c" + } +#line 198 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 199 "ProjectLoader.vala" + if (!model_loader_handler_commit_clipfile (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) { +#line 200 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper library node"); +#line 1278 "ProjectLoader.c" + } + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +#line 202 "ProjectLoader.vala" + model_loader_handler_leave_library (self->priv->handler); +#line 1286 "ProjectLoader.c" + } +} + + +#line 206 "ProjectLoader.vala" +static void model_project_builder_handle_tracks (ModelProjectBuilder* self, ModelXmlElement* tracks) { +#line 206 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 206 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (tracks)); +#line 1297 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (tracks))); +#line 207 "ProjectLoader.vala" + while (TRUE) { +#line 1303 "ProjectLoader.c" + ModelXmlElement* child; +#line 207 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 207 "ProjectLoader.vala" + break; +#line 1309 "ProjectLoader.c" + } +#line 207 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 208 "ProjectLoader.vala" + model_project_builder_handle_track (self, child); +#line 1315 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 212 "ProjectLoader.vala" +static void model_project_builder_handle_preferences (ModelProjectBuilder* self, ModelXmlElement* preferences) { +#line 212 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 212 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (preferences)); +#line 1329 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (preferences))); +#line 213 "ProjectLoader.vala" + while (TRUE) { +#line 1335 "ProjectLoader.c" + ModelXmlElement* child; +#line 213 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 213 "ProjectLoader.vala" + break; +#line 1341 "ProjectLoader.c" + } +#line 213 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 214 "ProjectLoader.vala" + model_project_builder_handle_preference (self, child); +#line 1347 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 217 "ProjectLoader.vala" +static void model_project_builder_handle_maps (ModelProjectBuilder* self, ModelXmlElement* maps) { +#line 217 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 217 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (maps)); +#line 1361 "ProjectLoader.c" + { + GeeIterator* _child_it; + _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (maps))); +#line 218 "ProjectLoader.vala" + while (TRUE) { +#line 1367 "ProjectLoader.c" + ModelXmlElement* child; +#line 218 "ProjectLoader.vala" + if (!gee_iterator_next (_child_it)) { +#line 218 "ProjectLoader.vala" + break; +#line 1373 "ProjectLoader.c" + } +#line 218 "ProjectLoader.vala" + child = (ModelXmlElement*) gee_iterator_get (_child_it); +#line 219 "ProjectLoader.vala" + model_project_builder_handle_map (self, child); +#line 1379 "ProjectLoader.c" + _model_xml_element_unref0 (child); + } + _g_object_unref0 (_child_it); + } +} + + +#line 222 "ProjectLoader.vala" +gboolean model_project_builder_check_project (ModelProjectBuilder* self, ModelXmlElement* root) { +#line 1389 "ProjectLoader.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; +#line 222 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_PROJECT_BUILDER (self), FALSE); +#line 222 "ProjectLoader.vala" + g_return_val_if_fail ((root == NULL) || MODEL_IS_XML_ELEMENT (root), FALSE); +#line 223 "ProjectLoader.vala" + if (root == NULL) { +#line 224 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Invalid XML file!"); +#line 1400 "ProjectLoader.c" + result = FALSE; +#line 225 "ProjectLoader.vala" + return result; +#line 1404 "ProjectLoader.c" + } +#line 228 "ProjectLoader.vala" + if (model_project_builder_check_name (self, "marina", root)) { +#line 229 "ProjectLoader.vala" + _tmp0_ = model_loader_handler_commit_marina (self->priv->handler, root->attribute_names, root->attribute_names_length1, root->attribute_values, root->attribute_values_length1); +#line 1410 "ProjectLoader.c" + } else { +#line 228 "ProjectLoader.vala" + _tmp0_ = FALSE; +#line 1414 "ProjectLoader.c" + } +#line 228 "ProjectLoader.vala" + if (_tmp0_) { +#line 1418 "ProjectLoader.c" + gboolean _tmp1_ = FALSE; + gboolean _tmp2_ = FALSE; + gboolean _tmp3_ = FALSE; + ModelXmlElement* _tmp4_; + gboolean _tmp5_; + gboolean _tmp8_ = FALSE; +#line 230 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) != 3) { +#line 230 "ProjectLoader.vala" + _tmp1_ = gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) != 4; +#line 1429 "ProjectLoader.c" + } else { +#line 230 "ProjectLoader.vala" + _tmp1_ = FALSE; +#line 1433 "ProjectLoader.c" + } +#line 230 "ProjectLoader.vala" + if (_tmp1_) { +#line 231 "ProjectLoader.vala" + g_signal_emit_by_name (self, "error-occurred", "Improper number of children!"); +#line 1439 "ProjectLoader.c" + result = FALSE; +#line 232 "ProjectLoader.vala" + return result; +#line 1443 "ProjectLoader.c" + } +#line 235 "ProjectLoader.vala" + if ((_tmp5_ = !model_project_builder_check_name (self, "library", _tmp4_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 0)), _model_xml_element_unref0 (_tmp4_), _tmp5_)) { +#line 235 "ProjectLoader.vala" + _tmp3_ = TRUE; +#line 1449 "ProjectLoader.c" + } else { + ModelXmlElement* _tmp6_; +#line 236 "ProjectLoader.vala" + _tmp3_ = !model_project_builder_check_name (self, "tracks", _tmp6_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 1)); +#line 1454 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp6_); + } +#line 235 "ProjectLoader.vala" + if (_tmp3_) { +#line 235 "ProjectLoader.vala" + _tmp2_ = TRUE; +#line 1461 "ProjectLoader.c" + } else { + ModelXmlElement* _tmp7_; +#line 237 "ProjectLoader.vala" + _tmp2_ = !model_project_builder_check_name (self, "preferences", _tmp7_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 2)); +#line 1466 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp7_); + } +#line 235 "ProjectLoader.vala" + if (_tmp2_) { +#line 1471 "ProjectLoader.c" + result = FALSE; +#line 238 "ProjectLoader.vala" + return result; +#line 1475 "ProjectLoader.c" + } +#line 240 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) == 4) { +#line 1479 "ProjectLoader.c" + ModelXmlElement* _tmp9_; +#line 240 "ProjectLoader.vala" + _tmp8_ = !model_project_builder_check_name (self, "maps", _tmp9_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 3)); +#line 1483 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp9_); + } else { +#line 240 "ProjectLoader.vala" + _tmp8_ = FALSE; +#line 1488 "ProjectLoader.c" + } +#line 240 "ProjectLoader.vala" + if (_tmp8_) { +#line 1492 "ProjectLoader.c" + result = FALSE; +#line 241 "ProjectLoader.vala" + return result; +#line 1496 "ProjectLoader.c" + } + } else { + result = FALSE; +#line 244 "ProjectLoader.vala" + return result; +#line 1502 "ProjectLoader.c" + } + result = TRUE; +#line 245 "ProjectLoader.vala" + return result; +#line 1507 "ProjectLoader.c" +} + + +#line 248 "ProjectLoader.vala" +void model_project_builder_build_project (ModelProjectBuilder* self, ModelXmlElement* root) { +#line 1513 "ProjectLoader.c" + ModelXmlElement* _tmp0_; + ModelXmlElement* _tmp1_; + ModelXmlElement* _tmp2_; +#line 248 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self)); +#line 248 "ProjectLoader.vala" + g_return_if_fail ((root == NULL) || MODEL_IS_XML_ELEMENT (root)); +#line 249 "ProjectLoader.vala" + model_project_builder_handle_library (self, _tmp0_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 0)); +#line 1523 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp0_); +#line 250 "ProjectLoader.vala" + model_project_builder_handle_tracks (self, _tmp1_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 1)); +#line 1527 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp1_); +#line 251 "ProjectLoader.vala" + model_project_builder_handle_preferences (self, _tmp2_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 2)); +#line 1531 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp2_); +#line 252 "ProjectLoader.vala" + if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) == 4) { +#line 1535 "ProjectLoader.c" + ModelXmlElement* _tmp3_; +#line 253 "ProjectLoader.vala" + model_project_builder_handle_maps (self, _tmp3_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 3)); +#line 1539 "ProjectLoader.c" + _model_xml_element_unref0 (_tmp3_); + } +#line 256 "ProjectLoader.vala" + model_loader_handler_leave_marina (self->priv->handler); +#line 1544 "ProjectLoader.c" +} + + +static void model_project_builder_class_init (ModelProjectBuilderClass * klass) { + model_project_builder_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelProjectBuilderPrivate)); + G_OBJECT_CLASS (klass)->finalize = model_project_builder_finalize; + g_signal_new ("error_occurred", MODEL_TYPE_PROJECT_BUILDER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); +} + + +static void model_project_builder_instance_init (ModelProjectBuilder * self) { + self->priv = MODEL_PROJECT_BUILDER_GET_PRIVATE (self); +} + + +static void model_project_builder_finalize (GObject* obj) { + ModelProjectBuilder * self; + self = MODEL_PROJECT_BUILDER (obj); + _g_object_unref0 (self->priv->handler); + G_OBJECT_CLASS (model_project_builder_parent_class)->finalize (obj); +} + + +GType model_project_builder_get_type (void) { + static volatile gsize model_project_builder_type_id__volatile = 0; + if (g_once_init_enter (&model_project_builder_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelProjectBuilderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_builder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProjectBuilder), 0, (GInstanceInitFunc) model_project_builder_instance_init, NULL }; + GType model_project_builder_type_id; + model_project_builder_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProjectBuilder", &g_define_type_info, 0); + g_once_init_leave (&model_project_builder_type_id__volatile, model_project_builder_type_id); + } + return model_project_builder_type_id__volatile; +} + + +#line 272 "ProjectLoader.vala" +ModelXmlElement* model_xml_element_construct (GType object_type, const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent) { +#line 1583 "ProjectLoader.c" + ModelXmlElement* self; + char** _tmp1_; + gint _tmp0_; + char** _tmp3_; + gint _tmp2_; + GeeArrayList* _tmp4_; +#line 272 "ProjectLoader.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 272 "ProjectLoader.vala" + g_return_val_if_fail ((parent == NULL) || MODEL_IS_XML_ELEMENT (parent), NULL); +#line 1594 "ProjectLoader.c" + self = (ModelXmlElement*) g_type_create_instance (object_type); +#line 274 "ProjectLoader.vala" + model_xml_element_set_name (self, name); +#line 276 "ProjectLoader.vala" + self->attribute_names = (_tmp1_ = copy_array (attribute_names, attribute_names_length1, &_tmp0_), self->attribute_names = (_vala_array_free (self->attribute_names, self->attribute_names_length1, (GDestroyNotify) g_free), NULL), self->attribute_names_length1 = _tmp0_, _tmp1_); +#line 277 "ProjectLoader.vala" + self->attribute_values = (_tmp3_ = copy_array (attribute_values, attribute_values_length1, &_tmp2_), self->attribute_values = (_vala_array_free (self->attribute_values, self->attribute_values_length1, (GDestroyNotify) g_free), NULL), self->attribute_values_length1 = _tmp2_, _tmp3_); +#line 278 "ProjectLoader.vala" + model_xml_element_set_parent (self, parent); +#line 279 "ProjectLoader.vala" + self->priv->_children = (_tmp4_ = gee_array_list_new (MODEL_TYPE_XML_ELEMENT, (GBoxedCopyFunc) model_xml_element_ref, model_xml_element_unref, NULL), _g_object_unref0 (self->priv->_children), _tmp4_); +#line 1606 "ProjectLoader.c" + return self; +} + + +#line 272 "ProjectLoader.vala" +ModelXmlElement* model_xml_element_new (const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent) { +#line 272 "ProjectLoader.vala" + return model_xml_element_construct (MODEL_TYPE_XML_ELEMENT, name, attribute_names, attribute_names_length1, attribute_values, attribute_values_length1, parent); +#line 1615 "ProjectLoader.c" +} + + +#line 282 "ProjectLoader.vala" +void model_xml_element_add_child (ModelXmlElement* self, ModelXmlElement* child_element) { +#line 282 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (self)); +#line 282 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_XML_ELEMENT (child_element)); +#line 283 "ProjectLoader.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->_children), child_element); +#line 1627 "ProjectLoader.c" +} + + +const char* model_xml_element_get_name (ModelXmlElement* self) { + const char* result; + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL); + result = self->priv->_name; +#line 261 "ProjectLoader.vala" + return result; +#line 1637 "ProjectLoader.c" +} + + +static void model_xml_element_set_name (ModelXmlElement* self, const char* value) { + char* _tmp0_; + g_return_if_fail (MODEL_IS_XML_ELEMENT (self)); + self->priv->_name = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_name), _tmp0_); +} + + +GeeArrayList* model_xml_element_get_children (ModelXmlElement* self) { + GeeArrayList* result; + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL); + result = self->priv->_children; +#line 267 "ProjectLoader.vala" + return result; +#line 1654 "ProjectLoader.c" +} + + +ModelXmlElement* model_xml_element_get_parent (ModelXmlElement* self) { + ModelXmlElement* result; + g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL); + result = self->priv->_parent; +#line 269 "ProjectLoader.vala" + return result; +#line 1664 "ProjectLoader.c" +} + + +static void model_xml_element_set_parent (ModelXmlElement* self, ModelXmlElement* value) { + g_return_if_fail (MODEL_IS_XML_ELEMENT (self)); + self->priv->_parent = value; +} + + +static void model_value_xml_element_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_xml_element_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_xml_element_unref (value->data[0].v_pointer); + } +} + + +static void model_value_xml_element_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_xml_element_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_xml_element_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_xml_element_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelXmlElement* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_xml_element_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_xml_element_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelXmlElement** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_xml_element_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecXmlElement* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_XML_ELEMENT), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_xml_element (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_xml_element (GValue* value, gpointer v_object) { + ModelXmlElement* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_ELEMENT)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_xml_element_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_element_unref (old); + } +} + + +void model_value_take_xml_element (GValue* value, gpointer v_object) { + ModelXmlElement* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_ELEMENT)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_xml_element_unref (old); + } +} + + +static void model_xml_element_class_init (ModelXmlElementClass * klass) { + model_xml_element_parent_class = g_type_class_peek_parent (klass); + MODEL_XML_ELEMENT_CLASS (klass)->finalize = model_xml_element_finalize; + g_type_class_add_private (klass, sizeof (ModelXmlElementPrivate)); +} + + +static void model_xml_element_instance_init (ModelXmlElement * self) { + self->priv = MODEL_XML_ELEMENT_GET_PRIVATE (self); + self->ref_count = 1; +} + + +static void model_xml_element_finalize (ModelXmlElement* obj) { + ModelXmlElement * self; + self = MODEL_XML_ELEMENT (obj); + _g_free0 (self->priv->_name); + self->attribute_names = (_vala_array_free (self->attribute_names, self->attribute_names_length1, (GDestroyNotify) g_free), NULL); + self->attribute_values = (_vala_array_free (self->attribute_values, self->attribute_values_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (self->priv->_children); +} + + +GType model_xml_element_get_type (void) { + static volatile gsize model_xml_element_type_id__volatile = 0; + if (g_once_init_enter (&model_xml_element_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_xml_element_init, model_value_xml_element_free_value, model_value_xml_element_copy_value, model_value_xml_element_peek_pointer, "p", model_value_xml_element_collect_value, "p", model_value_xml_element_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelXmlElementClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_xml_element_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelXmlElement), 0, (GInstanceInitFunc) model_xml_element_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_xml_element_type_id; + model_xml_element_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelXmlElement", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_xml_element_type_id__volatile, model_xml_element_type_id); + } + return model_xml_element_type_id__volatile; +} + + +gpointer model_xml_element_ref (gpointer instance) { + ModelXmlElement* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_xml_element_unref (gpointer instance) { + ModelXmlElement* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_XML_ELEMENT_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +#line 307 "ProjectLoader.vala" +static void _model_project_loader_on_load_error_model_loader_handler_load_error (ModelLoaderHandler* _sender, const char* error_message, gpointer self) { +#line 1841 "ProjectLoader.c" + model_project_loader_on_load_error (self, error_message); +} + + +#line 312 "ProjectLoader.vala" +static void _model_project_loader_on_handler_complete_model_loader_handler_complete (ModelLoaderHandler* _sender, gpointer self) { +#line 1848 "ProjectLoader.c" + model_project_loader_on_handler_complete (self); +} + + +#line 300 "ProjectLoader.vala" +ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name) { +#line 1855 "ProjectLoader.c" + ModelProjectLoader * self; + char* _tmp0_; + ModelLoaderHandler* _tmp1_; +#line 300 "ProjectLoader.vala" + g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (loader_handler), NULL); +#line 300 "ProjectLoader.vala" + self = (ModelProjectLoader*) g_object_new (object_type, NULL); +#line 301 "ProjectLoader.vala" + self->priv->file_name = (_tmp0_ = g_strdup (file_name), _g_free0 (self->priv->file_name), _tmp0_); +#line 302 "ProjectLoader.vala" + self->priv->loader_handler = (_tmp1_ = _g_object_ref0 (loader_handler), _g_object_unref0 (self->priv->loader_handler), _tmp1_); +#line 303 "ProjectLoader.vala" + g_signal_connect_object (loader_handler, "load-error", (GCallback) _model_project_loader_on_load_error_model_loader_handler_load_error, self, 0); +#line 304 "ProjectLoader.vala" + g_signal_connect_object (loader_handler, "complete", (GCallback) _model_project_loader_on_handler_complete_model_loader_handler_complete, self, 0); +#line 1871 "ProjectLoader.c" + return self; +} + + +#line 300 "ProjectLoader.vala" +ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name) { +#line 300 "ProjectLoader.vala" + return model_project_loader_construct (MODEL_TYPE_PROJECT_LOADER, loader_handler, file_name); +#line 1880 "ProjectLoader.c" +} + + +#line 307 "ProjectLoader.vala" +static void model_project_loader_on_load_error (ModelProjectLoader* self, const char* _error_) { +#line 307 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_LOADER (self)); +#line 307 "ProjectLoader.vala" + g_return_if_fail (_error_ != NULL); +#line 308 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_error"); +#line 309 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-error", _error_); +#line 1894 "ProjectLoader.c" +} + + +#line 312 "ProjectLoader.vala" +static void model_project_loader_on_handler_complete (ModelProjectLoader* self) { +#line 1900 "ProjectLoader.c" + gboolean _tmp0_ = FALSE; +#line 312 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_LOADER (self)); +#line 313 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_handler_complete"); +#line 314 "ProjectLoader.vala" + self->priv->handler_completed = TRUE; +#line 315 "ProjectLoader.vala" + if (self->priv->project_load_completed) { +#line 315 "ProjectLoader.vala" + _tmp0_ = !self->priv->load_completed_fired; +#line 1912 "ProjectLoader.c" + } else { +#line 315 "ProjectLoader.vala" + _tmp0_ = FALSE; +#line 1916 "ProjectLoader.c" + } +#line 315 "ProjectLoader.vala" + if (_tmp0_) { +#line 316 "ProjectLoader.vala" + self->priv->load_completed_fired = TRUE; +#line 317 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 1924 "ProjectLoader.c" + } +} + + +#line 307 "ProjectLoader.vala" +static void _model_project_loader_on_load_error_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self) { +#line 1931 "ProjectLoader.c" + model_project_loader_on_load_error (self, _error_); +} + + +#line 321 "ProjectLoader.vala" +void model_project_loader_load (ModelProjectLoader* self) { +#line 1938 "ProjectLoader.c" + GError * _inner_error_; + char* _tmp3_; + ModelXmlTreeLoader* tree_loader; + ModelProjectBuilder* builder; +#line 321 "ProjectLoader.vala" + g_return_if_fail (MODEL_IS_PROJECT_LOADER (self)); +#line 1945 "ProjectLoader.c" + _inner_error_ = NULL; + { + char* _tmp1_; + char* _tmp0_ = NULL; +#line 323 "ProjectLoader.vala" + g_file_get_contents (self->priv->file_name, &_tmp0_, &self->priv->text_len, &_inner_error_); +#line 323 "ProjectLoader.vala" + self->priv->text = (_tmp1_ = _tmp0_, _g_free0 (self->priv->text), _tmp1_); +#line 1954 "ProjectLoader.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch1_g_file_error; + } + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + goto __finally1; + __catch1_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + char* _tmp2_; +#line 325 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_MEDIUM, _tmp2_ = g_strdup_printf ("error loading %s: %s", self->priv->file_name, e->message)); +#line 1974 "ProjectLoader.c" + _g_free0 (_tmp2_); +#line 327 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-error", e->message); +#line 328 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 1980 "ProjectLoader.c" + _g_error_free0 (e); +#line 329 "ProjectLoader.vala" + return; +#line 1984 "ProjectLoader.c" + } + } + __finally1: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 331 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, _tmp3_ = g_strdup_printf ("Building tree for %s", self->priv->file_name)); +#line 1995 "ProjectLoader.c" + _g_free0 (_tmp3_); +#line 332 "ProjectLoader.vala" + tree_loader = model_xml_tree_loader_new (self->priv->text); +#line 334 "ProjectLoader.vala" + builder = model_project_builder_new (self->priv->loader_handler); +#line 335 "ProjectLoader.vala" + g_signal_connect_object (builder, "error-occurred", (GCallback) _model_project_loader_on_load_error_model_project_builder_error_occurred, self, 0); +#line 337 "ProjectLoader.vala" + if (model_project_builder_check_project (builder, tree_loader->root)) { +#line 2005 "ProjectLoader.c" + gboolean _tmp4_ = FALSE; +#line 338 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, "project checked out. starting load"); +#line 339 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-started", self->priv->file_name); +#line 340 "ProjectLoader.vala" + model_project_builder_build_project (builder, tree_loader->root); +#line 341 "ProjectLoader.vala" + self->priv->project_load_completed = TRUE; +#line 342 "ProjectLoader.vala" + if (self->priv->handler_completed) { +#line 342 "ProjectLoader.vala" + _tmp4_ = !self->priv->load_completed_fired; +#line 2019 "ProjectLoader.c" + } else { +#line 342 "ProjectLoader.vala" + _tmp4_ = FALSE; +#line 2023 "ProjectLoader.c" + } +#line 342 "ProjectLoader.vala" + if (_tmp4_) { +#line 343 "ProjectLoader.vala" + self->priv->load_completed_fired = TRUE; +#line 344 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 2031 "ProjectLoader.c" + } + } else { +#line 348 "ProjectLoader.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_INFO, "project did not check out. stopping."); +#line 349 "ProjectLoader.vala" + g_signal_emit_by_name (self, "load-complete"); +#line 2038 "ProjectLoader.c" + } + _model_xml_tree_loader_unref0 (tree_loader); + _g_object_unref0 (builder); +} + + +static void model_project_loader_class_init (ModelProjectLoaderClass * klass) { + model_project_loader_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ModelProjectLoaderPrivate)); + G_OBJECT_CLASS (klass)->finalize = model_project_loader_finalize; + g_signal_new ("load_started", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + g_signal_new ("load_complete", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("load_error", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); +} + + +static void model_project_loader_instance_init (ModelProjectLoader * self) { + self->priv = MODEL_PROJECT_LOADER_GET_PRIVATE (self); + self->priv->project_load_completed = FALSE; + self->priv->load_completed_fired = FALSE; + self->priv->handler_completed = FALSE; +} + + +static void model_project_loader_finalize (GObject* obj) { + ModelProjectLoader * self; + self = MODEL_PROJECT_LOADER (obj); + _g_free0 (self->priv->file_name); + _g_object_unref0 (self->priv->loader_handler); + _g_free0 (self->priv->text); + G_OBJECT_CLASS (model_project_loader_parent_class)->finalize (obj); +} + + +GType model_project_loader_get_type (void) { + static volatile gsize model_project_loader_type_id__volatile = 0; + if (g_once_init_enter (&model_project_loader_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ModelProjectLoaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_loader_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProjectLoader), 0, (GInstanceInitFunc) model_project_loader_instance_init, NULL }; + GType model_project_loader_type_id; + model_project_loader_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProjectLoader", &g_define_type_info, 0); + g_once_init_leave (&model_project_loader_type_id__volatile, model_project_loader_type_id); + } + return model_project_loader_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/test/debug/ProjectLoader.o b/src/test/debug/ProjectLoader.o new file mode 100644 index 0000000000000000000000000000000000000000..bab2c37165fe0a8508adaf8086644828cc0bb4f1 GIT binary patch literal 127244 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 +#include +#include +#include +#include + + +#define MODEL_TYPE_CLIP_FETCHER (model_clip_fetcher_get_type ()) +#define MODEL_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcher)) +#define MODEL_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) +#define MODEL_IS_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_IS_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_CLIP_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) + +typedef struct _ModelClipFetcher ModelClipFetcher; +typedef struct _ModelClipFetcherClass ModelClipFetcherClass; +typedef struct _ModelClipFetcherPrivate ModelClipFetcherPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _model_clip_file_unref0(var) ((var == NULL) ? NULL : (var = (model_clip_file_unref (var), NULL))) +typedef struct _ModelParamSpecClipFetcher ModelParamSpecClipFetcher; +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; +typedef struct _ModelParamSpecClipFile ModelParamSpecClipFile; + +#define TYPE_VALID_DOCUMENT (valid_document_get_type ()) +typedef struct _ValidDocument ValidDocument; + +#define TYPE_STATE_CHANGE_FIXTURE (state_change_fixture_get_type ()) + +#define MODEL_TYPE_XML_ELEMENT (model_xml_element_get_type ()) +#define MODEL_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElement)) +#define MODEL_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) +#define MODEL_IS_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_IS_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_XML_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) + +typedef struct _ModelXmlElement ModelXmlElement; +typedef struct _ModelXmlElementClass ModelXmlElementClass; + +#define MODEL_TYPE_PROJECT_BUILDER (model_project_builder_get_type ()) +#define MODEL_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilder)) +#define MODEL_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass)) +#define MODEL_IS_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_BUILDER)) +#define MODEL_IS_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_BUILDER)) +#define MODEL_PROJECT_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass)) + +typedef struct _ModelProjectBuilder ModelProjectBuilder; +typedef struct _ModelProjectBuilderClass ModelProjectBuilderClass; +typedef struct _StateChangeFixture StateChangeFixture; +#define _model_xml_element_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_element_unref (var), NULL))) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define MODEL_TYPE_XML_TREE_LOADER (model_xml_tree_loader_get_type ()) +#define MODEL_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoader)) +#define MODEL_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) +#define MODEL_IS_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_IS_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_XML_TREE_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) + +typedef struct _ModelXmlTreeLoader ModelXmlTreeLoader; +typedef struct _ModelXmlTreeLoaderClass ModelXmlTreeLoaderClass; +typedef struct _ModelXmlTreeLoaderPrivate ModelXmlTreeLoaderPrivate; + +#define MODEL_TYPE_LOADER_HANDLER (model_loader_handler_get_type ()) +#define MODEL_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandler)) +#define MODEL_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) +#define MODEL_IS_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_IS_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) + +typedef struct _ModelLoaderHandler ModelLoaderHandler; +typedef struct _ModelLoaderHandlerClass ModelLoaderHandlerClass; +#define _model_xml_tree_loader_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_tree_loader_unref (var), NULL))) +typedef GTestSuite ProjectLoaderSuite; + +struct _ModelClipFetcher { + GTypeInstance parent_instance; + volatile int ref_count; + ModelClipFetcherPrivate * priv; + char* error_string; + ModelClipFile* clipfile; +}; + +struct _ModelClipFetcherClass { + GTypeClass parent_class; + void (*finalize) (ModelClipFetcher *self); +}; + +struct _ModelClipFetcherPrivate { + char* filename; +}; + +struct _ModelParamSpecClipFetcher { + GParamSpec parent_instance; +}; + +struct _ModelClipFile { + GTypeInstance parent_instance; + volatile int ref_count; + ModelClipFilePrivate * priv; + char* filename; +}; + +struct _ModelClipFileClass { + GTypeClass parent_class; + void (*finalize) (ModelClipFile *self); +}; + +struct _ModelParamSpecClipFile { + GParamSpec parent_instance; +}; + +struct _ValidDocument { + gboolean valid; + char* document; +}; + +struct _StateChangeFixture { + ModelXmlElement* root; + ModelProjectBuilder* project_builder; + gboolean valid; +}; + +struct _ModelXmlTreeLoader { + GTypeInstance parent_instance; + volatile int ref_count; + ModelXmlTreeLoaderPrivate * priv; + ModelXmlElement* root; +}; + +struct _ModelXmlTreeLoaderClass { + GTypeClass parent_class; + void (*finalize) (ModelXmlTreeLoader *self); +}; + + +static gpointer model_clip_fetcher_parent_class = NULL; +static gpointer model_clip_file_parent_class = NULL; +extern ValidDocument* project_documents; +extern gint project_documents_length1; +ValidDocument* project_documents = NULL; +gint project_documents_length1 = 0; +static gint _project_documents_size_ = 0; +extern gint current_document; +gint current_document = 0; +extern gboolean document_valid; +gboolean document_valid = FALSE; + +gpointer model_clip_fetcher_ref (gpointer instance); +void model_clip_fetcher_unref (gpointer instance); +GParamSpec* model_param_spec_clip_fetcher (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_clip_fetcher (GValue* value, gpointer v_object); +void model_value_take_clip_fetcher (GValue* value, gpointer v_object); +gpointer model_value_get_clip_fetcher (const GValue* value); +GType model_clip_fetcher_get_type (void); +gpointer model_clip_file_ref (gpointer instance); +void model_clip_file_unref (gpointer instance); +GParamSpec* model_param_spec_clip_file (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_clip_file (GValue* value, gpointer v_object); +void model_value_take_clip_file (GValue* value, gpointer v_object); +gpointer model_value_get_clip_file (const GValue* value); +GType model_clip_file_get_type (void); +#define MODEL_CLIP_FETCHER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherPrivate)) +enum { + MODEL_CLIP_FETCHER_DUMMY_PROPERTY +}; +ModelClipFetcher* model_clip_fetcher_new (const char* filename); +ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename); +char* model_clip_fetcher_get_filename (ModelClipFetcher* self); +static void model_clip_fetcher_finalize (ModelClipFetcher* obj); +enum { + MODEL_CLIP_FILE_DUMMY_PROPERTY +}; +ModelClipFile* model_clip_file_new (void); +ModelClipFile* model_clip_file_construct (GType object_type); +static void model_clip_file_finalize (ModelClipFile* obj); +GType valid_document_get_type (void); +ValidDocument* valid_document_dup (const ValidDocument* self); +void valid_document_free (ValidDocument* self); +void valid_document_copy (const ValidDocument* self, ValidDocument* dest); +void valid_document_destroy (ValidDocument* self); +void valid_document_init (ValidDocument *self, gboolean valid, const char* document); +GType state_change_fixture_get_type (void); +gpointer model_xml_element_ref (gpointer instance); +void model_xml_element_unref (gpointer instance); +GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_element (GValue* value, gpointer v_object); +void model_value_take_xml_element (GValue* value, gpointer v_object); +gpointer model_value_get_xml_element (const GValue* value); +GType model_xml_element_get_type (void); +GType model_project_builder_get_type (void); +StateChangeFixture* state_change_fixture_dup (const StateChangeFixture* self); +void state_change_fixture_free (StateChangeFixture* self); +void state_change_fixture_copy (const StateChangeFixture* self, StateChangeFixture* dest); +void state_change_fixture_destroy (StateChangeFixture* self); +ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document); +ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document); +gpointer model_xml_tree_loader_ref (gpointer instance); +void model_xml_tree_loader_unref (gpointer instance); +GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_tree_loader (GValue* value, gpointer v_object); +void model_value_take_xml_tree_loader (GValue* value, gpointer v_object); +gpointer model_value_get_xml_tree_loader (const GValue* value); +GType model_xml_tree_loader_get_type (void); +ModelLoaderHandler* model_loader_handler_new (void); +ModelLoaderHandler* model_loader_handler_construct (GType object_type); +GType model_loader_handler_get_type (void); +ModelProjectBuilder* model_project_builder_new (ModelLoaderHandler* handler); +ModelProjectBuilder* model_project_builder_construct (GType object_type, ModelLoaderHandler* handler); +void state_change_fixture_buildup (void* fixture); +void state_change_fixture_teardown (void* fixture); +void on_error_occurred (const char* message); +static void _on_error_occurred_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self); +gboolean model_project_builder_check_project (ModelProjectBuilder* self, ModelXmlElement* root); +void model_project_builder_build_project (ModelProjectBuilder* self, ModelXmlElement* root); +void check_document (void* fixture); +static void _vala_ValidDocument_array_free (ValidDocument* array, gint array_length); +static void _state_change_fixture_buildup_gtest_func (void* fixture, gpointer self); +static void _check_document_gtest_func (void* fixture, gpointer self); +static void _state_change_fixture_teardown_gtest_func (void* fixture, gpointer self); +ProjectLoaderSuite* project_loader_suite_new (void); +ProjectLoaderSuite* project_loader_suite_new (void); + + +static void g_cclosure_user_marshal_VOID__MODEL_CLIP_FETCHER (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); + +#line 14 "ProjectLoading.vala" +ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename) { +#line 248 "ProjectLoading.c" + ModelClipFetcher* self; + char* _tmp0_; +#line 14 "ProjectLoading.vala" + g_return_val_if_fail (filename != NULL, NULL); +#line 253 "ProjectLoading.c" + self = (ModelClipFetcher*) g_type_create_instance (object_type); +#line 15 "ProjectLoading.vala" + self->priv->filename = (_tmp0_ = g_strdup (filename), _g_free0 (self->priv->filename), _tmp0_); +#line 257 "ProjectLoading.c" + return self; +} + + +#line 14 "ProjectLoading.vala" +ModelClipFetcher* model_clip_fetcher_new (const char* filename) { +#line 14 "ProjectLoading.vala" + return model_clip_fetcher_construct (MODEL_TYPE_CLIP_FETCHER, filename); +#line 266 "ProjectLoading.c" +} + + +#line 17 "ProjectLoading.vala" +char* model_clip_fetcher_get_filename (ModelClipFetcher* self) { +#line 272 "ProjectLoading.c" + char* result = NULL; +#line 17 "ProjectLoading.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FETCHER (self), NULL); +#line 276 "ProjectLoading.c" + result = g_strdup (self->priv->filename); +#line 18 "ProjectLoading.vala" + return result; +#line 280 "ProjectLoading.c" +} + + +static void model_value_clip_fetcher_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_clip_fetcher_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_clip_fetcher_unref (value->data[0].v_pointer); + } +} + + +static void model_value_clip_fetcher_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_clip_fetcher_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_clip_fetcher_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_clip_fetcher_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelClipFetcher* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_clip_fetcher_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_clip_fetcher_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelClipFetcher** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_clip_fetcher_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_clip_fetcher (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecClipFetcher* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_CLIP_FETCHER), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_clip_fetcher (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_CLIP_FETCHER), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_clip_fetcher (GValue* value, gpointer v_object) { + ModelClipFetcher* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_CLIP_FETCHER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_CLIP_FETCHER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_clip_fetcher_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_clip_fetcher_unref (old); + } +} + + +void model_value_take_clip_fetcher (GValue* value, gpointer v_object) { + ModelClipFetcher* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_CLIP_FETCHER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_CLIP_FETCHER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_clip_fetcher_unref (old); + } +} + + +static void model_clip_fetcher_class_init (ModelClipFetcherClass * klass) { + model_clip_fetcher_parent_class = g_type_class_peek_parent (klass); + MODEL_CLIP_FETCHER_CLASS (klass)->finalize = model_clip_fetcher_finalize; + g_type_class_add_private (klass, sizeof (ModelClipFetcherPrivate)); + g_signal_new ("ready", MODEL_TYPE_CLIP_FETCHER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__MODEL_CLIP_FETCHER, G_TYPE_NONE, 1, MODEL_TYPE_CLIP_FETCHER); +} + + +static void model_clip_fetcher_instance_init (ModelClipFetcher * self) { + self->priv = MODEL_CLIP_FETCHER_GET_PRIVATE (self); + self->ref_count = 1; +} + + +static void model_clip_fetcher_finalize (ModelClipFetcher* obj) { + ModelClipFetcher * self; + self = MODEL_CLIP_FETCHER (obj); + _g_free0 (self->error_string); + _model_clip_file_unref0 (self->clipfile); + _g_free0 (self->priv->filename); +} + + +GType model_clip_fetcher_get_type (void) { + static volatile gsize model_clip_fetcher_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_fetcher_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_clip_fetcher_init, model_value_clip_fetcher_free_value, model_value_clip_fetcher_copy_value, model_value_clip_fetcher_peek_pointer, "p", model_value_clip_fetcher_collect_value, "p", model_value_clip_fetcher_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelClipFetcherClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_fetcher_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipFetcher), 0, (GInstanceInitFunc) model_clip_fetcher_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_clip_fetcher_type_id; + model_clip_fetcher_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelClipFetcher", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_clip_fetcher_type_id__volatile, model_clip_fetcher_type_id); + } + return model_clip_fetcher_type_id__volatile; +} + + +gpointer model_clip_fetcher_ref (gpointer instance) { + ModelClipFetcher* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_clip_fetcher_unref (gpointer instance) { + ModelClipFetcher* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_CLIP_FETCHER_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +#line 23 "ProjectLoading.vala" +ModelClipFile* model_clip_file_construct (GType object_type) { +#line 451 "ProjectLoading.c" + ModelClipFile* self; + self = (ModelClipFile*) g_type_create_instance (object_type); + return self; +} + + +#line 23 "ProjectLoading.vala" +ModelClipFile* model_clip_file_new (void) { +#line 23 "ProjectLoading.vala" + return model_clip_file_construct (MODEL_TYPE_CLIP_FILE); +#line 462 "ProjectLoading.c" +} + + +static void model_value_clip_file_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void model_value_clip_file_free_value (GValue* value) { + if (value->data[0].v_pointer) { + model_clip_file_unref (value->data[0].v_pointer); + } +} + + +static void model_value_clip_file_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = model_clip_file_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer model_value_clip_file_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* model_value_clip_file_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ModelClipFile* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = model_clip_file_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* model_value_clip_file_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ModelClipFile** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = model_clip_file_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* model_param_spec_clip_file (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ModelParamSpecClipFile* spec; + g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_CLIP_FILE), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer model_value_get_clip_file (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_CLIP_FILE), NULL); + return value->data[0].v_pointer; +} + + +void model_value_set_clip_file (GValue* value, gpointer v_object) { + ModelClipFile* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_CLIP_FILE)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_CLIP_FILE)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + model_clip_file_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_clip_file_unref (old); + } +} + + +void model_value_take_clip_file (GValue* value, gpointer v_object) { + ModelClipFile* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_CLIP_FILE)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_CLIP_FILE)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + model_clip_file_unref (old); + } +} + + +static void model_clip_file_class_init (ModelClipFileClass * klass) { + model_clip_file_parent_class = g_type_class_peek_parent (klass); + MODEL_CLIP_FILE_CLASS (klass)->finalize = model_clip_file_finalize; +} + + +static void model_clip_file_instance_init (ModelClipFile * self) { + self->ref_count = 1; +} + + +static void model_clip_file_finalize (ModelClipFile* obj) { + ModelClipFile * self; + self = MODEL_CLIP_FILE (obj); + _g_free0 (self->filename); +} + + +GType model_clip_file_get_type (void) { + static volatile gsize model_clip_file_type_id__volatile = 0; + if (g_once_init_enter (&model_clip_file_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { model_value_clip_file_init, model_value_clip_file_free_value, model_value_clip_file_copy_value, model_value_clip_file_peek_pointer, "p", model_value_clip_file_collect_value, "p", model_value_clip_file_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ModelClipFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_clip_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelClipFile), 0, (GInstanceInitFunc) model_clip_file_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType model_clip_file_type_id; + model_clip_file_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelClipFile", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&model_clip_file_type_id__volatile, model_clip_file_type_id); + } + return model_clip_file_type_id__volatile; +} + + +gpointer model_clip_file_ref (gpointer instance) { + ModelClipFile* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void model_clip_file_unref (gpointer instance) { + ModelClipFile* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + MODEL_CLIP_FILE_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + +#line 32 "ProjectLoading.vala" +void valid_document_init (ValidDocument *self, gboolean valid, const char* document) { +#line 628 "ProjectLoading.c" + char* _tmp0_; +#line 32 "ProjectLoading.vala" + g_return_if_fail (document != NULL); +#line 632 "ProjectLoading.c" + memset (self, 0, sizeof (ValidDocument)); +#line 33 "ProjectLoading.vala" + (*self).valid = valid; +#line 34 "ProjectLoading.vala" + (*self).document = (_tmp0_ = g_strdup (document), _g_free0 ((*self).document), _tmp0_); +#line 638 "ProjectLoading.c" +} + + +void valid_document_copy (const ValidDocument* self, ValidDocument* dest) { + dest->valid = self->valid; + dest->document = g_strdup (self->document); +} + + +void valid_document_destroy (ValidDocument* self) { + _g_free0 (self->document); +} + + +ValidDocument* valid_document_dup (const ValidDocument* self) { + ValidDocument* dup; + dup = g_new0 (ValidDocument, 1); + valid_document_copy (self, dup); + return dup; +} + + +void valid_document_free (ValidDocument* self) { + valid_document_destroy (self); + g_free (self); +} + + +GType valid_document_get_type (void) { + static volatile gsize valid_document_type_id__volatile = 0; + if (g_once_init_enter (&valid_document_type_id__volatile)) { + GType valid_document_type_id; + valid_document_type_id = g_boxed_type_register_static ("ValidDocument", (GBoxedCopyFunc) valid_document_dup, (GBoxedFreeFunc) valid_document_free); + g_once_init_leave (&valid_document_type_id__volatile, valid_document_type_id); + } + return valid_document_type_id__volatile; +} + + +static gpointer _model_xml_element_ref0 (gpointer self) { + return self ? model_xml_element_ref (self) : NULL; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +void state_change_fixture_copy (const StateChangeFixture* self, StateChangeFixture* dest) { + dest->root = _model_xml_element_ref0 (self->root); + dest->project_builder = _g_object_ref0 (self->project_builder); + dest->valid = self->valid; +} + + +void state_change_fixture_destroy (StateChangeFixture* self) { + _model_xml_element_unref0 (self->root); + _g_object_unref0 (self->project_builder); +} + + +StateChangeFixture* state_change_fixture_dup (const StateChangeFixture* self) { + StateChangeFixture* dup; + dup = g_new0 (StateChangeFixture, 1); + state_change_fixture_copy (self, dup); + return dup; +} + + +void state_change_fixture_free (StateChangeFixture* self) { + state_change_fixture_destroy (self); + g_free (self); +} + + +GType state_change_fixture_get_type (void) { + static volatile gsize state_change_fixture_type_id__volatile = 0; + if (g_once_init_enter (&state_change_fixture_type_id__volatile)) { + GType state_change_fixture_type_id; + state_change_fixture_type_id = g_boxed_type_register_static ("StateChangeFixture", (GBoxedCopyFunc) state_change_fixture_dup, (GBoxedFreeFunc) state_change_fixture_free); + g_once_init_leave (&state_change_fixture_type_id__volatile, state_change_fixture_type_id); + } + return state_change_fixture_type_id__volatile; +} + + +#line 49 "ProjectLoading.vala" +void state_change_fixture_buildup (void* fixture) { +#line 728 "ProjectLoading.c" + StateChangeFixture* state_change_fixture; + ModelXmlTreeLoader* tree_loader; + ModelXmlElement* _tmp0_; + ModelProjectBuilder* _tmp2_; + ModelLoaderHandler* _tmp1_; +#line 50 "ProjectLoading.vala" + state_change_fixture = (StateChangeFixture*) fixture; +#line 51 "ProjectLoading.vala" + tree_loader = model_xml_tree_loader_new (project_documents[current_document].document); +#line 52 "ProjectLoading.vala" + (*state_change_fixture).root = (_tmp0_ = _model_xml_element_ref0 (tree_loader->root), _model_xml_element_unref0 ((*state_change_fixture).root), _tmp0_); +#line 53 "ProjectLoading.vala" + (*state_change_fixture).project_builder = (_tmp2_ = model_project_builder_new (_tmp1_ = model_loader_handler_new ()), _g_object_unref0 ((*state_change_fixture).project_builder), _tmp2_); +#line 742 "ProjectLoading.c" + _g_object_unref0 (_tmp1_); +#line 54 "ProjectLoading.vala" + (*state_change_fixture).valid = project_documents[current_document].valid; +#line 55 "ProjectLoading.vala" + current_document = current_document + 1; +#line 748 "ProjectLoading.c" + _model_xml_tree_loader_unref0 (tree_loader); +} + + +#line 58 "ProjectLoading.vala" +void state_change_fixture_teardown (void* fixture) { +#line 755 "ProjectLoading.c" + StateChangeFixture* state_change_fixture; + ModelXmlElement* _tmp0_; + ModelProjectBuilder* _tmp1_; +#line 59 "ProjectLoading.vala" + state_change_fixture = (StateChangeFixture*) fixture; +#line 60 "ProjectLoading.vala" + (*state_change_fixture).root = (_tmp0_ = NULL, _model_xml_element_unref0 ((*state_change_fixture).root), _tmp0_); +#line 61 "ProjectLoading.vala" + (*state_change_fixture).project_builder = (_tmp1_ = NULL, _g_object_unref0 ((*state_change_fixture).project_builder), _tmp1_); +#line 765 "ProjectLoading.c" +} + + +#line 66 "ProjectLoading.vala" +void on_error_occurred (const char* message) { +#line 67 "ProjectLoading.vala" + g_test_message ("received error: %s", message); +#line 68 "ProjectLoading.vala" + document_valid = FALSE; +#line 775 "ProjectLoading.c" +} + + +#line 66 "ProjectLoading.vala" +static void _on_error_occurred_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self) { +#line 781 "ProjectLoading.c" + on_error_occurred (_error_); +} + + +#line 73 "ProjectLoading.vala" +void check_document (void* fixture) { +#line 788 "ProjectLoading.c" + StateChangeFixture* state_change_fixture; + const char* _tmp0_; + ModelXmlElement* root; + ModelProjectBuilder* project_builder; +#line 74 "ProjectLoading.vala" + state_change_fixture = (StateChangeFixture*) fixture; +#line 795 "ProjectLoading.c" + _tmp0_ = NULL; +#line 77 "ProjectLoading.vala" + if ((*state_change_fixture).valid) { +#line 77 "ProjectLoading.vala" + _tmp0_ = "valid"; +#line 801 "ProjectLoading.c" + } else { +#line 77 "ProjectLoading.vala" + _tmp0_ = "invalid"; +#line 805 "ProjectLoading.c" + } +#line 76 "ProjectLoading.vala" + g_test_message ("checking document expecting to be %s", _tmp0_); +#line 79 "ProjectLoading.vala" + root = _model_xml_element_ref0 ((*state_change_fixture).root); +#line 80 "ProjectLoading.vala" + project_builder = _g_object_ref0 ((*state_change_fixture).project_builder); +#line 82 "ProjectLoading.vala" + document_valid = TRUE; +#line 83 "ProjectLoading.vala" + g_signal_connect (project_builder, "error-occurred", (GCallback) _on_error_occurred_model_project_builder_error_occurred, NULL); +#line 87 "ProjectLoading.vala" + if (model_project_builder_check_project (project_builder, root)) { +#line 88 "ProjectLoading.vala" + model_project_builder_build_project (project_builder, root); +#line 821 "ProjectLoading.c" + } +#line 89 "ProjectLoading.vala" + g_assert (document_valid == (*state_change_fixture).valid); +#line 90 "ProjectLoading.vala" + g_test_message ("finished executing check document"); +#line 827 "ProjectLoading.c" + _model_xml_element_unref0 (root); + _g_object_unref0 (project_builder); +} + + +static void _vala_ValidDocument_array_free (ValidDocument* array, gint array_length) { + if (array != NULL) { + int i; + for (i = 0; i < array_length; i = i + 1) { + valid_document_destroy (&array[i]); + } + } + g_free (array); +} + + +#line 49 "ProjectLoading.vala" +static void _state_change_fixture_buildup_gtest_func (void* fixture, gpointer self) { +#line 846 "ProjectLoading.c" + state_change_fixture_buildup (fixture); +} + + +#line 73 "ProjectLoading.vala" +static void _check_document_gtest_func (void* fixture, gpointer self) { +#line 853 "ProjectLoading.c" + check_document (fixture); +} + + +#line 58 "ProjectLoading.vala" +static void _state_change_fixture_teardown_gtest_func (void* fixture, gpointer self) { +#line 860 "ProjectLoading.c" + state_change_fixture_teardown (fixture); +} + + +#line 95 "ProjectLoading.vala" +ProjectLoaderSuite* project_loader_suite_new (void) { +#line 867 "ProjectLoading.c" + ProjectLoaderSuite* self; + ValidDocument* _tmp37_; + ValidDocument* _tmp36_ = NULL; + ValidDocument _tmp0_ = {0}; + ValidDocument _tmp1_ = {0}; + ValidDocument _tmp2_ = {0}; + ValidDocument _tmp3_ = {0}; + ValidDocument _tmp4_ = {0}; + ValidDocument _tmp5_ = {0}; + ValidDocument _tmp6_ = {0}; + ValidDocument _tmp7_ = {0}; + ValidDocument _tmp8_ = {0}; + ValidDocument _tmp9_ = {0}; + ValidDocument _tmp10_ = {0}; + ValidDocument _tmp11_ = {0}; + ValidDocument _tmp12_ = {0}; + ValidDocument _tmp13_ = {0}; + ValidDocument _tmp14_ = {0}; + ValidDocument _tmp15_ = {0}; + ValidDocument _tmp16_ = {0}; + ValidDocument _tmp17_ = {0}; + ValidDocument _tmp18_ = {0}; + ValidDocument _tmp19_ = {0}; + ValidDocument _tmp20_ = {0}; + ValidDocument _tmp21_ = {0}; + ValidDocument _tmp22_ = {0}; + ValidDocument _tmp23_ = {0}; + ValidDocument _tmp24_ = {0}; + ValidDocument _tmp25_ = {0}; + ValidDocument _tmp26_ = {0}; + ValidDocument _tmp27_ = {0}; + ValidDocument _tmp28_ = {0}; + ValidDocument _tmp29_ = {0}; + ValidDocument _tmp30_ = {0}; + ValidDocument _tmp31_ = {0}; + ValidDocument _tmp32_ = {0}; + ValidDocument _tmp33_ = {0}; + ValidDocument _tmp34_ = {0}; + ValidDocument _tmp35_ = {0}; + gint length; +#line 96 "ProjectLoading.vala" + self = (ProjectLoaderSuite*) g_test_create_suite ("ProjectLoaderSuite"); +#line 98 "ProjectLoading.vala" + current_document = 0; +#line 99 "ProjectLoading.vala" + project_documents = (_tmp37_ = (_tmp36_ = g_new0 (ValidDocument, 36), _tmp36_[0] = (valid_document_init (&_tmp0_, TRUE, "" ""), _tmp0_), _tmp36_[1] = (valid_document_init (&_tmp1_, TRUE, "" ""), _tmp1_), _tmp36_[2] = (valid_document_init (&_tmp2_, TRUE, "" ""), _tmp2_), _tmp36_[3] = (valid_document_init (&_tmp3_, TRUE, "" ""), _tmp3_), _tmp36_[4] = (valid_document_init (&_tmp4_, TRUE, "" ""), _tmp4_), _tmp36_[5] = (valid_document_init (&_tmp5_, TRUE, "" ""), _tmp5_), _tmp36_[6] = (valid_document_init (&_tmp6_, TRUE, "" ""), _tmp6_), _tmp36_[7] = (valid_document_init (&_tmp7_, TRUE, "" ""), _tmp7_), _tmp36_[8] = (valid_document_init (&_tmp8_, TRUE, ""), _tmp8_), _tmp36_[9] = (valid_document_init (&_tmp9_, TRUE, "" ""), _tmp9_), _tmp36_[10] = (valid_document_init (&_tmp10_, TRUE, "" ""), _tmp10_), _tmp36_[11] = (valid_document_init (&_tmp11_, TRUE, "" ""), _tmp11_), _tmp36_[12] = (valid_document_init (&_tmp12_, FALSE, ""), _tmp12_), _tmp36_[13] = (valid_document_init (&_tmp13_, FALSE, ""), _tmp13_), _tmp36_[14] = (valid_document_init (&_tmp14_, FALSE, "" ""), _tmp14_), _tmp36_[15] = (valid_document_init (&_tmp15_, FALSE, ""), _tmp15_), _tmp36_[16] = (valid_document_init (&_tmp16_, FALSE, ""), _tmp16_), _tmp36_[17] = (valid_document_init (&_tmp17_, FALSE, ""), _tmp17_), _tmp36_[18] = (valid_document_init (&_tmp18_, FALSE, ""), _tmp18_), _tmp36_[19] = (valid_document_init (&_tmp19_, FALSE, ""), _tmp19_), _tmp36_[20] = (valid_document_init (&_tmp20_, FALSE, ""), _tmp20_), _tmp36_[21] = (valid_document_init (&_tmp21_, FALSE, ""), _tmp21_), _tmp36_[22] = (valid_document_init (&_tmp22_, FALSE, ""), _tmp22_), _tmp36_[23] = (valid_document_init (&_tmp23_, FALSE, ""), _tmp23_), _tmp36_[24] = (valid_document_init (&_tmp24_, FALSE, ""), _tmp24_), _tmp36_[25] = (valid_document_init (&_tmp25_, FALSE, ""), _tmp25_), _tmp36_[26] = (valid_document_init (&_tmp26_, FALSE, ""), _tmp26_), _tmp36_[27] = (valid_document_init (&_tmp27_, FALSE, ""), _tmp27_), _tmp36_[28] = (valid_document_init (&_tmp28_, FALSE, ""), _tmp28_), _tmp36_[29] = (valid_document_init (&_tmp29_, FALSE, ""), _tmp29_), _tmp36_[30] = (valid_document_init (&_tmp30_, FALSE, ""), _tmp30_), _tmp36_[31] = (valid_document_init (&_tmp31_, FALSE, ""), _tmp31_), _tmp36_[32] = (valid_document_init (&_tmp32_, FALSE, "" ""), _tmp32_), _tmp36_[33] = (valid_document_init (&_tmp33_, FALSE, ""), _tmp33_), _tmp36_[34] = (valid_document_init (&_tmp34_, FALSE, "" ""), _tmp34_), _tmp36_[35] = (valid_document_init (&_tmp35_, FALSE, ""), _tmp35_), _tmp36_), project_documents = (_vala_ValidDocument_array_free (project_documents, project_documents_length1), NULL), project_documents_length1 = 36, _project_documents_size_ = project_documents_length1, _tmp37_); +#line 152 "ProjectLoading.vala" + length = project_documents_length1; +#line 916 "ProjectLoading.c" + { + gint i; +#line 154 "ProjectLoading.vala" + i = 0; +#line 921 "ProjectLoading.c" + { + gboolean _tmp38_; +#line 154 "ProjectLoading.vala" + _tmp38_ = TRUE; +#line 154 "ProjectLoading.vala" + while (TRUE) { +#line 928 "ProjectLoading.c" + gboolean _tmp39_ = FALSE; +#line 154 "ProjectLoading.vala" + if (!_tmp38_) { +#line 154 "ProjectLoading.vala" + i = i + 1; +#line 934 "ProjectLoading.c" + } +#line 154 "ProjectLoading.vala" + _tmp38_ = FALSE; +#line 154 "ProjectLoading.vala" + if (!(i < length)) { +#line 154 "ProjectLoading.vala" + break; +#line 942 "ProjectLoading.c" + } +#line 155 "ProjectLoading.vala" + if (g_test_thorough ()) { +#line 155 "ProjectLoading.vala" + _tmp39_ = TRUE; +#line 948 "ProjectLoading.c" + } else { +#line 155 "ProjectLoading.vala" + _tmp39_ = project_documents[i].valid; +#line 952 "ProjectLoading.c" + } +#line 155 "ProjectLoading.vala" + if (_tmp39_) { +#line 956 "ProjectLoading.c" + char* _tmp40_; +#line 156 "ProjectLoading.vala" + g_test_suite_add ((GTestSuite*) self, g_test_create_case (_tmp40_ = g_strdup_printf ("Document%d", i), (gsize) sizeof (StateChangeFixture), NULL, (void (*) (void)) _state_change_fixture_buildup_gtest_func, (void (*) (void)) _check_document_gtest_func, (void (*) (void)) _state_change_fixture_teardown_gtest_func)); +#line 960 "ProjectLoading.c" + _g_free0 (_tmp40_); + } + } + } + } + return self; +} + + + +static void g_cclosure_user_marshal_VOID__MODEL_CLIP_FETCHER (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__MODEL_CLIP_FETCHER) (gpointer data1, gpointer arg_1, gpointer data2); + register GMarshalFunc_VOID__MODEL_CLIP_FETCHER callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 2); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__MODEL_CLIP_FETCHER) (marshal_data ? marshal_data : cc->callback); + callback (data1, model_value_get_clip_fetcher (param_values + 1), data2); +} + + + diff --git a/src/test/debug/ProjectLoading.o b/src/test/debug/ProjectLoading.o new file mode 100644 index 0000000000000000000000000000000000000000..996ed4b98d76a4912e79c79f78fce8beed725f88 GIT binary patch literal 60980 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 DF=C#P literal 0 HcmV?d00001 diff --git a/src/test/debug/test.c b/src/test/debug/test.c new file mode 100644 index 0000000..4844d0d --- /dev/null +++ b/src/test/debug/test.c @@ -0,0 +1,52 @@ +/* test.c generated by valac, the Vala compiler + * generated from test.vala, do not modify */ + +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include + +typedef GTestSuite ProjectLoaderSuite; + + + +ProjectLoaderSuite* project_loader_suite_new (void); +ProjectLoaderSuite* project_loader_suite_new (void); +void _vala_main (char** args, int args_length1); + + + +#line 8 "test.vala" +void _vala_main (char** args, int args_length1) { +#line 9 "test.vala" + g_test_init (&args_length1, &args, NULL); +#line 10 "test.vala" + g_test_suite_add_suite (g_test_get_root (), (GTestSuite*) project_loader_suite_new ()); +#line 11 "test.vala" + g_test_run (); +#line 34 "test.c" +} + + +#line 8 "test.vala" +int main (int argc, char ** argv) { +#line 40 "test.c" + g_thread_init (NULL); +#line 8 "test.vala" + g_type_init (); +#line 8 "test.vala" + _vala_main (argv, argc); +#line 8 "test.vala" + return 0; +#line 48 "test.c" +} + + + + diff --git a/src/test/debug/test.o b/src/test/debug/test.o new file mode 100644 index 0000000000000000000000000000000000000000..84f1d0ecfce6b20004cd32ab2a7d6675db9118f4 GIT binary patch literal 3568 zcma)9TZ|J`82-=9bX#aCg$21RYE3}b%g!!}x&cHGkeeVP8cozPZD+g1Zo9Tq1aBl> z5~C5LF~$cI*J$F4Cd9;qc!@sfgD-{$Z;t}ONHiJ~AB;xv`_7!x4)~yda?baE|Lt7n zoSF9U=38!7N{JOE!_sFW;{)20TBTuF7Ry2@Y#lk1Ir`km-0__!r8sk{AlcIk3TU$9 zWTCL*UclXHIA=%$)Ef*2y!+5%=^*Ka8P{LQD>|WcSPok(pCAm+>j&>3rD7 z5U=K`75Txen;**0Q}a~;Q*)L}HoGqCW<*@0=0&_%6-mv7d)uJMz@WJKwK9 z4?M?R?9?Icy$ytaJ^+-N9N0#XdamR^n%IA)#XPqbAO}VTG zZvFI)X@7zKr`#vKt#Jf48FnT25;ACxJengi#gT_;?g`5&*-bF+>7EZt5lzW$1mkW% z)k1y?8U`ZlMZ-V^A~!cV5JT@l!$1VOmE3_|3%&c$Fb*O1vW%8X(Z{E84mSN|uoAbt zG!@jF@+GKN7|J!6b4#j)#jG@1&00}+Jh|Owr(SD@)gp&WIy%{!3P-E$?kJ}qD!whj zOfFbt%f^kXi^EvtBML`)DwPT#LT03m`QFt&CzZyh=_~lLqDrZy*%H?)=KzxS8mU?rd zmE?_jGfeV{b}$7)9NcJClD_F~xd|_-_v;1ipjo3S&cK|+ue7G7LM-2JwxZC-!bdt$ zP`O|H4SRO_K@_#?C(qtEzJq3=S=oxqzaHcQH0Ik2 z%a;_ni$-}nhF(t}MZfQW{}spggw0_d>pf1zi1pnBZgskR5Z*c~R$T`}ave`&9m8;P z9oz%Ejy=$A4pdo#>lsinVtu>7ll6|yiCoAW~149E$GR5KcU`n*sNIJV=!2qz7MhC{3KYhK7Qbm<9?f12h`rUFG9CDtnoeS z6{#4pz9Zntdf%Z)0XD8(H6Q=S&%Z;{sa*oGKfid%`Ts@MWG4n-%MO4+g8# z=OZpD*7q5VnEJH!G42{mfHrPk9M|&%i2JI?`f-fMBk0NRSo|k2E`kNWU-Wvpe(s4q z^HAkjR^)jqM(ntjTTI$L`Sq-|6W!iyW2<}42=v?2W&P)Firc&W)}PU5H)iaUqqE*@ z!L$>?li3$na_9MR$r9oUPgGxAeIk;ayWSU9?_iQApFHQYK=Q`TFY0J%+~mU7!{EpRfc-ZhurQ4`g{Y`Q5LT_+2g4oApSHUJIjA zyVZ(hy4~6zR-zKVeATdB>hK$0YK9Nmz}OH}tFgY$sR}8*J#C+Z` z_!bd|_Nei{Z}`WCe{T5KhMyoJ|Fpp~#{aYN|8DqShVx$o>t9cfJZ!Z%xa` +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _g_checksum_free0(var) ((var == NULL) ? NULL : (var = (g_checksum_free (var), NULL))) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL))) +#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL))) + +typedef enum { + MEDIA_ERROR_MISSING_PLUGIN +} MediaError; +#define MEDIA_ERROR media_error_quark () +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +typedef enum { + GDK_Control_L, + GDK_Control_R, + GDK_Down, + GDK_equal, + GDK_Escape, + GDK_KP_Add, + GDK_KP_Enter, + GDK_KP_Subtract, + GDK_Left, + GDK_minus, + GDK_plus, + GDK_Return, + GDK_Right, + GDK_Shift_L, + GDK_Shift_R, + GDK_underscore, + GDK_Up +} KeySyms; + + +extern gboolean debug_enabled; +gboolean debug_enabled = FALSE; +extern GdkModifierType GDK_SHIFT_ALT_CONTROL_MASK; +GdkModifierType GDK_SHIFT_ALT_CONTROL_MASK = (GDK_SHIFT_MASK | GDK_MOD1_MASK) | GDK_CONTROL_MASK; + +GQuark media_error_quark (void); +float float_abs (float f); +gboolean float_within (double f, double epsilon); +gint sign (gint x); +gint stricmp (const char* str1, const char* str2); +char** copy_array (char** source, int source_length1, int* result_length1); +void print_debug (const char* text); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +void fraction_init (Fraction *self, gint numerator, gint denominator); +void fraction_init_from_string (Fraction *self, const char* s); +gboolean fraction_equal (Fraction *self, Fraction* f); +gint fraction_nearest_int (Fraction *self); +char* fraction_to_string (Fraction *self); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +void time_code_get_from_length (TimeCode *self, gint64 length); +char* time_code_to_string (TimeCode *self); +gboolean time_in_range (gint64 time, gint64 center, gint64 delta); +char* isolate_filename (const char* path); +char* get_file_extension (const char* path); +char* append_extension (const char* path, const char* extension); +gboolean version_at_least (const char* v, const char* w); +gboolean get_file_md5_checksum (const char* filename, char** checksum); +void save_file_md5_checksum (const char* filename, const char* checksum); +gboolean md5_checksum_on_file (const char* filename, char** checksum); +void parse_color (const char* color, GdkColor* result); +GtkWidget* get_widget (GtkUIManager* manager, const char* name); +#define LINE_WIDTH 1.0 +#define RADIUS 15.0 +#define ANTIALIAS CAIRO_ANTIALIAS_DEFAULT +void draw_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_right_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_left_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_square_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x, gint y, gint width, gint height); +gboolean is_drop_frame_rate (Fraction* r); +gint64 frame_to_time_with_rate (gint frame, Fraction* rate); +gint time_to_frame_with_rate (gint64 time, Fraction* rate); +void frame_to_time (gint frame, Fraction* rate, TimeCode* result); +char* frame_to_string (gint frame, Fraction* rate); +void breakup_time (gint64 time, gint* hours, gint* minutes, double* seconds); +char* time_to_HHMMSS (gint64 time); +char* time_to_string (gint64 time); +GstElement* make_element_with_name (const char* element_name, const char* display_name, GError** error); +GstElement* make_element (const char* name, GError** error); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); +static int _vala_strcmp0 (const char * str1, const char * str2); + +const GtkTargetEntry drag_target_entries[1] = {{"text/uri-list", (guint) 0, (guint) 0}}; + + +GQuark media_error_quark (void) { + return g_quark_from_static_string ("media_error-quark"); +} + + +#line 12 "util.vala" +float float_abs (float f) { +#line 141 "util.c" + float result = 0.0F; +#line 13 "util.vala" + if (f < 0.0f) { +#line 145 "util.c" + result = -f; +#line 14 "util.vala" + return result; +#line 149 "util.c" + } + result = f; +#line 15 "util.vala" + return result; +#line 154 "util.c" +} + + +#line 18 "util.vala" +gboolean float_within (double f, double epsilon) { +#line 160 "util.c" + gboolean result = FALSE; + result = float_abs ((float) f) < epsilon; +#line 19 "util.vala" + return result; +#line 165 "util.c" +} + + +#line 22 "util.vala" +gint sign (gint x) { +#line 171 "util.c" + gint result = 0; + gint _tmp0_ = 0; +#line 23 "util.vala" + if (x == 0) { +#line 176 "util.c" + result = 0; +#line 24 "util.vala" + return result; +#line 180 "util.c" + } +#line 25 "util.vala" + if (x < 0) { +#line 25 "util.vala" + _tmp0_ = -1; +#line 186 "util.c" + } else { +#line 25 "util.vala" + _tmp0_ = 1; +#line 190 "util.c" + } + result = _tmp0_; +#line 25 "util.vala" + return result; +#line 195 "util.c" +} + + +#line 28 "util.vala" +gint stricmp (const char* str1, const char* str2) { +#line 201 "util.c" + gint result = 0; + char* temp_str1; + char* temp_str2; +#line 28 "util.vala" + g_return_val_if_fail (str1 != NULL, 0); +#line 28 "util.vala" + g_return_val_if_fail (str2 != NULL, 0); +#line 29 "util.vala" + temp_str1 = g_utf8_casefold (str1, (gssize) (-1)); +#line 30 "util.vala" + temp_str2 = g_utf8_casefold (str2, (gssize) (-1)); +#line 213 "util.c" + result = g_utf8_collate (temp_str1, temp_str2); + _g_free0 (temp_str1); + _g_free0 (temp_str2); +#line 32 "util.vala" + return result; +#line 219 "util.c" +} + + +#line 36 "util.vala" +char** copy_array (char** source, int source_length1, int* result_length1) { +#line 225 "util.c" + char** result = NULL; + char** _tmp0_; + gint _destination_size_; + gint destination_length1; + char** destination; + gint i; + char** _tmp2_; + destination = (_tmp0_ = g_new0 (char*, source_length1 + 1), destination_length1 = source_length1, _destination_size_ = destination_length1, _tmp0_); +#line 38 "util.vala" + i = 0; +#line 236 "util.c" + { + char** item_collection; + int item_collection_length1; + int item_it; +#line 39 "util.vala" + item_collection = source; +#line 243 "util.c" + item_collection_length1 = source_length1; + for (item_it = 0; item_it < source_length1; item_it = item_it + 1) { + char* item; + item = g_strdup (item_collection[item_it]); + { + char* _tmp1_; +#line 40 "util.vala" + destination[i] = (_tmp1_ = g_strdup (item), _g_free0 (destination[i]), _tmp1_); +#line 41 "util.vala" + i = i + 1; +#line 254 "util.c" + _g_free0 (item); + } + } + } + result = (_tmp2_ = destination, *result_length1 = destination_length1, _tmp2_); +#line 43 "util.vala" + return result; +#line 262 "util.c" + destination = (_vala_array_free (destination, destination_length1, (GDestroyNotify) g_free), NULL); +} + + +#line 50 "util.vala" +void print_debug (const char* text) { +#line 50 "util.vala" + g_return_if_fail (text != NULL); +#line 51 "util.vala" + if (!debug_enabled) { +#line 52 "util.vala" + return; +#line 275 "util.c" + } +#line 54 "util.vala" + g_debug ("util.vala:54: %s", text); +#line 279 "util.c" +} + + +#line 61 "util.vala" +void fraction_init (Fraction *self, gint numerator, gint denominator) { +#line 285 "util.c" + memset (self, 0, sizeof (Fraction)); +#line 62 "util.vala" + (*self).numerator = numerator; +#line 63 "util.vala" + (*self).denominator = denominator; +#line 291 "util.c" +} + + +#line 66 "util.vala" +void fraction_init_from_string (Fraction *self, const char* s) { +#line 297 "util.c" + char** _tmp1_; + gint _elements_size_; + gint elements_length1; + char** _tmp0_; + char** elements; +#line 66 "util.vala" + g_return_if_fail (s != NULL); +#line 305 "util.c" + memset (self, 0, sizeof (Fraction)); + elements = (_tmp1_ = _tmp0_ = g_strsplit (s, "/", 0), elements_length1 = _vala_array_length (_tmp0_), _elements_size_ = elements_length1, _tmp1_); +#line 68 "util.vala" + if (elements_length1 != 2) { +#line 69 "util.vala" + (*self).numerator = 0; +#line 70 "util.vala" + (*self).denominator = 0; +#line 314 "util.c" + } else { +#line 72 "util.vala" + (*self).numerator = atoi (elements[0]); +#line 73 "util.vala" + (*self).denominator = atoi (elements[1]); +#line 320 "util.c" + } + elements = (_vala_array_free (elements, elements_length1, (GDestroyNotify) g_free), NULL); +} + + +#line 77 "util.vala" +gboolean fraction_equal (Fraction *self, Fraction* f) { +#line 328 "util.c" + gboolean result = FALSE; +#line 78 "util.vala" + if (float_abs (((*self).numerator / ((float) (*self).denominator)) - ((*f).numerator / ((float) (*f).denominator))) <= (1000.0f / 1001.0f)) { +#line 332 "util.c" + result = TRUE; +#line 80 "util.vala" + return result; +#line 336 "util.c" + } + result = FALSE; +#line 81 "util.vala" + return result; +#line 341 "util.c" +} + + +#line 84 "util.vala" +gint fraction_nearest_int (Fraction *self) { +#line 347 "util.c" + gint result = 0; + result = (gint) ((((double) (*self).numerator) / (*self).denominator) + 0.5); +#line 85 "util.vala" + return result; +#line 352 "util.c" +} + + +#line 88 "util.vala" +char* fraction_to_string (Fraction *self) { +#line 358 "util.c" + char* result = NULL; + result = g_strdup_printf ("%d/%d", (*self).numerator, (*self).denominator); +#line 89 "util.vala" + return result; +#line 363 "util.c" +} + + +Fraction* fraction_dup (const Fraction* self) { + Fraction* dup; + dup = g_new0 (Fraction, 1); + memcpy (dup, self, sizeof (Fraction)); + return dup; +} + + +void fraction_free (Fraction* self) { + g_free (self); +} + + +GType fraction_get_type (void) { + static volatile gsize fraction_type_id__volatile = 0; + if (g_once_init_enter (&fraction_type_id__volatile)) { + GType fraction_type_id; + fraction_type_id = g_boxed_type_register_static ("Fraction", (GBoxedCopyFunc) fraction_dup, (GBoxedFreeFunc) fraction_free); + g_once_init_leave (&fraction_type_id__volatile, fraction_type_id); + } + return fraction_type_id__volatile; +} + + +#line 101 "util.vala" +void time_code_get_from_length (TimeCode *self, gint64 length) { +#line 102 "util.vala" + length = length / ((gint64) GST_SECOND); +#line 104 "util.vala" + (*self).hour = (gint) (length / 3600); +#line 105 "util.vala" + (*self).minute = (gint) ((length % 3600) / 60); +#line 106 "util.vala" + (*self).second = (gint) ((length % 3600) % 60); +#line 107 "util.vala" + (*self).frame = 0; +#line 403 "util.c" +} + + +#line 110 "util.vala" +char* time_code_to_string (TimeCode *self) { +#line 409 "util.c" + char* result = NULL; + char* ret; + char* _tmp3_; + char* _tmp2_; + char* _tmp5_; + char* _tmp4_; + char* _tmp9_; + char* _tmp8_; +#line 111 "util.vala" + ret = g_strdup (""); +#line 112 "util.vala" + if ((*self).hour != 0) { +#line 422 "util.c" + char* _tmp1_; + char* _tmp0_; +#line 113 "util.vala" + ret = (_tmp1_ = g_strconcat (ret, _tmp0_ = g_strdup_printf ("%.2d:", (*self).hour), NULL), _g_free0 (ret), _tmp1_); +#line 427 "util.c" + _g_free0 (_tmp0_); + } +#line 115 "util.vala" + ret = (_tmp3_ = g_strconcat (ret, _tmp2_ = g_strdup_printf ("%.2d:", (*self).minute), NULL), _g_free0 (ret), _tmp3_); +#line 432 "util.c" + _g_free0 (_tmp2_); +#line 116 "util.vala" + ret = (_tmp5_ = g_strconcat (ret, _tmp4_ = g_strdup_printf ("%.2d", (*self).second), NULL), _g_free0 (ret), _tmp5_); +#line 436 "util.c" + _g_free0 (_tmp4_); +#line 118 "util.vala" + if ((*self).drop_code) { +#line 440 "util.c" + char* _tmp6_; +#line 119 "util.vala" + ret = (_tmp6_ = g_strconcat (ret, ";", NULL), _g_free0 (ret), _tmp6_); +#line 444 "util.c" + } else { + char* _tmp7_; +#line 121 "util.vala" + ret = (_tmp7_ = g_strconcat (ret, ":", NULL), _g_free0 (ret), _tmp7_); +#line 449 "util.c" + } +#line 122 "util.vala" + ret = (_tmp9_ = g_strconcat (ret, _tmp8_ = g_strdup_printf ("%.2d", (*self).frame), NULL), _g_free0 (ret), _tmp9_); +#line 453 "util.c" + _g_free0 (_tmp8_); + result = ret; +#line 124 "util.vala" + return result; +#line 458 "util.c" +} + + +TimeCode* time_code_dup (const TimeCode* self) { + TimeCode* dup; + dup = g_new0 (TimeCode, 1); + memcpy (dup, self, sizeof (TimeCode)); + return dup; +} + + +void time_code_free (TimeCode* self) { + g_free (self); +} + + +GType time_code_get_type (void) { + static volatile gsize time_code_type_id__volatile = 0; + if (g_once_init_enter (&time_code_type_id__volatile)) { + GType time_code_type_id; + time_code_type_id = g_boxed_type_register_static ("TimeCode", (GBoxedCopyFunc) time_code_dup, (GBoxedFreeFunc) time_code_free); + g_once_init_leave (&time_code_type_id__volatile, time_code_type_id); + } + return time_code_type_id__volatile; +} + + +#line 128 "util.vala" +gboolean time_in_range (gint64 time, gint64 center, gint64 delta) { +#line 488 "util.c" + gboolean result = FALSE; + gint64 diff; +#line 129 "util.vala" + diff = time - center; +#line 493 "util.c" + result = llabs (diff) <= delta; +#line 130 "util.vala" + return result; +#line 497 "util.c" +} + + +#line 133 "util.vala" +char* isolate_filename (const char* path) { +#line 503 "util.c" + char* result = NULL; + char* str; + gint _tmp1__length1; + char** _tmp1_; + char** _tmp0_; + char* _tmp2_; +#line 133 "util.vala" + g_return_val_if_fail (path != NULL, NULL); +#line 134 "util.vala" + str = g_path_get_basename (path); +#line 514 "util.c" + result = (_tmp2_ = g_strdup ((_tmp1_ = _tmp0_ = g_strsplit (str, ".", 0), _tmp1__length1 = _vala_array_length (_tmp0_), _tmp1_)[0]), _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) g_free), NULL), _tmp2_); + _g_free0 (str); +#line 135 "util.vala" + return result; +#line 519 "util.c" + _g_free0 (str); +} + + +#line 138 "util.vala" +char* get_file_extension (const char* path) { +#line 526 "util.c" + char* result = NULL; + const char* dot; + const char* _tmp0_; +#line 138 "util.vala" + g_return_val_if_fail (path != NULL, NULL); +#line 139 "util.vala" + dot = g_utf8_strrchr (path, (gssize) (-1), (gunichar) '.'); +#line 534 "util.c" + _tmp0_ = NULL; +#line 140 "util.vala" + if (dot == NULL) { +#line 140 "util.vala" + _tmp0_ = ""; +#line 540 "util.c" + } else { +#line 140 "util.vala" + _tmp0_ = g_utf8_next_char (dot); +#line 544 "util.c" + } + result = g_strdup (_tmp0_); +#line 140 "util.vala" + return result; +#line 549 "util.c" +} + + +#line 143 "util.vala" +char* append_extension (const char* path, const char* extension) { +#line 555 "util.c" + char* result = NULL; + char* _tmp0_; + gboolean _tmp1_; + char* _tmp2_; + char* _tmp3_; +#line 143 "util.vala" + g_return_val_if_fail (path != NULL, NULL); +#line 143 "util.vala" + g_return_val_if_fail (extension != NULL, NULL); +#line 144 "util.vala" + if ((_tmp1_ = _vala_strcmp0 (_tmp0_ = get_file_extension (path), extension) == 0, _g_free0 (_tmp0_), _tmp1_)) { +#line 567 "util.c" + result = g_strdup (path); +#line 145 "util.vala" + return result; +#line 571 "util.c" + } + result = (_tmp3_ = g_strconcat (_tmp2_ = g_strconcat (path, ".", NULL), extension, NULL), _g_free0 (_tmp2_), _tmp3_); +#line 147 "util.vala" + return result; +#line 576 "util.c" +} + + +#line 152 "util.vala" +gboolean version_at_least (const char* v, const char* w) { +#line 582 "util.c" + gboolean result = FALSE; + char** _tmp1_; + gint _va_size_; + gint va_length1; + char** _tmp0_; + char** va; + char** _tmp3_; + gint _wa_size_; + gint wa_length1; + char** _tmp2_; + char** wa; +#line 152 "util.vala" + g_return_val_if_fail (v != NULL, FALSE); +#line 152 "util.vala" + g_return_val_if_fail (w != NULL, FALSE); +#line 598 "util.c" + va = (_tmp1_ = _tmp0_ = g_strsplit (v, ".", 0), va_length1 = _vala_array_length (_tmp0_), _va_size_ = va_length1, _tmp1_); + wa = (_tmp3_ = _tmp2_ = g_strsplit (w, ".", 0), wa_length1 = _vala_array_length (_tmp2_), _wa_size_ = wa_length1, _tmp3_); + { + gint i; +#line 155 "util.vala" + i = 0; +#line 605 "util.c" + { + gboolean _tmp4_; +#line 155 "util.vala" + _tmp4_ = TRUE; +#line 155 "util.vala" + while (TRUE) { +#line 612 "util.c" + gint vi; + gint wi; +#line 155 "util.vala" + if (!_tmp4_) { +#line 155 "util.vala" + i = i + 1; +#line 619 "util.c" + } +#line 155 "util.vala" + _tmp4_ = FALSE; +#line 155 "util.vala" + if (!(i < wa_length1)) { +#line 155 "util.vala" + break; +#line 627 "util.c" + } +#line 156 "util.vala" + if (i >= va_length1) { +#line 631 "util.c" + result = FALSE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 157 "util.vala" + return result; +#line 637 "util.c" + } +#line 158 "util.vala" + vi = atoi (va[i]); +#line 159 "util.vala" + wi = atoi (wa[i]); +#line 160 "util.vala" + if (vi > wi) { +#line 645 "util.c" + result = TRUE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 161 "util.vala" + return result; +#line 651 "util.c" + } +#line 162 "util.vala" + if (wi > vi) { +#line 655 "util.c" + result = FALSE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 163 "util.vala" + return result; +#line 661 "util.c" + } + } + } + } + result = TRUE; + va = (_vala_array_free (va, va_length1, (GDestroyNotify) g_free), NULL); + wa = (_vala_array_free (wa, wa_length1, (GDestroyNotify) g_free), NULL); +#line 165 "util.vala" + return result; +#line 671 "util.c" +} + + +#line 168 "util.vala" +gboolean get_file_md5_checksum (const char* filename, char** checksum) { +#line 677 "util.c" + gboolean result = FALSE; + GError * _inner_error_; + char* new_filename; + gsize buffer_length = 0UL; +#line 168 "util.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 684 "util.c" + if (checksum != NULL) { + *checksum = NULL; + } + _inner_error_ = NULL; +#line 169 "util.vala" + new_filename = append_extension (filename, "md5"); +#line 691 "util.c" + { + char* _tmp1_; + char* _tmp0_ = NULL; +#line 173 "util.vala" + g_file_get_contents (new_filename, &_tmp0_, &buffer_length, &_inner_error_); +#line 173 "util.vala" + *checksum = (_tmp1_ = _tmp0_, _g_free0 (*checksum), _tmp1_); +#line 699 "util.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch2_g_file_error; + } + _g_free0 (new_filename); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + } + goto __finally2; + __catch2_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + result = FALSE; + _g_error_free0 (e); + _g_free0 (new_filename); +#line 175 "util.vala" + return result; +#line 722 "util.c" + } + } + __finally2: + if (_inner_error_ != NULL) { + _g_free0 (new_filename); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + result = buffer_length == 32; + _g_free0 (new_filename); +#line 178 "util.vala" + return result; +#line 736 "util.c" +} + + +#line 181 "util.vala" +void save_file_md5_checksum (const char* filename, const char* checksum) { +#line 742 "util.c" + GError * _inner_error_; + char* new_filename; +#line 181 "util.vala" + g_return_if_fail (filename != NULL); +#line 181 "util.vala" + g_return_if_fail (checksum != NULL); +#line 749 "util.c" + _inner_error_ = NULL; +#line 182 "util.vala" + new_filename = append_extension (filename, "md5"); +#line 753 "util.c" + { +#line 185 "util.vala" + g_file_set_contents (new_filename, checksum, -1, &_inner_error_); +#line 757 "util.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch3_g_file_error; + } + _g_free0 (new_filename); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } + goto __finally3; + __catch3_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 187 "util.vala" + g_error ("util.vala:187: Cannot save md5 file %s!\n", new_filename); +#line 777 "util.c" + _g_error_free0 (e); + } + } + __finally3: + if (_inner_error_ != NULL) { + _g_free0 (new_filename); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _g_free0 (new_filename); +} + + +#line 191 "util.vala" +gboolean md5_checksum_on_file (const char* filename, char** checksum) { +#line 794 "util.c" + gboolean result = FALSE; + GError * _inner_error_; + char* file_buffer; + gsize len = 0UL; + GChecksum* c; + char* _tmp2_; +#line 191 "util.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 803 "util.c" + if (checksum != NULL) { + *checksum = NULL; + } + _inner_error_ = NULL; + file_buffer = NULL; + { + char* _tmp1_; + char* _tmp0_ = NULL; +#line 196 "util.vala" + g_file_get_contents (filename, &_tmp0_, &len, &_inner_error_); +#line 196 "util.vala" + file_buffer = (_tmp1_ = _tmp0_, _g_free0 (file_buffer), _tmp1_); +#line 816 "util.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_FILE_ERROR) { + goto __catch4_g_file_error; + } + _g_free0 (file_buffer); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + } + goto __finally4; + __catch4_g_file_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + result = FALSE; + _g_error_free0 (e); + _g_free0 (file_buffer); +#line 198 "util.vala" + return result; +#line 839 "util.c" + } + } + __finally4: + if (_inner_error_ != NULL) { + _g_free0 (file_buffer); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } +#line 201 "util.vala" + c = g_checksum_new (G_CHECKSUM_MD5); +#line 202 "util.vala" + g_checksum_update (c, (guchar*) file_buffer, len); +#line 203 "util.vala" + *checksum = (_tmp2_ = g_strdup (g_checksum_get_string (c)), _g_free0 (*checksum), _tmp2_); +#line 855 "util.c" + result = TRUE; + _g_free0 (file_buffer); + _g_checksum_free0 (c); +#line 204 "util.vala" + return result; +#line 861 "util.c" +} + + +#line 239 "util.vala" +void parse_color (const char* color, GdkColor* result) { +#line 867 "util.c" + GdkColor c = {0}; +#line 239 "util.vala" + g_return_if_fail (color != NULL); +#line 241 "util.vala" + if (!gdk_color_parse (color, &c)) { +#line 242 "util.vala" + g_error ("util.vala:242: can't parse color"); +#line 875 "util.c" + } + *result = c; +#line 243 "util.vala" + return; +#line 880 "util.c" +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 246 "util.vala" +GtkWidget* get_widget (GtkUIManager* manager, const char* name) { +#line 891 "util.c" + GtkWidget* result = NULL; + GtkWidget* widget; +#line 246 "util.vala" + g_return_val_if_fail (GTK_IS_UI_MANAGER (manager), NULL); +#line 246 "util.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 247 "util.vala" + widget = _g_object_ref0 (gtk_ui_manager_get_widget (manager, name)); +#line 248 "util.vala" + if (widget == NULL) { +#line 249 "util.vala" + g_error ("util.vala:249: can't find widget"); +#line 904 "util.c" + } + result = widget; +#line 250 "util.vala" + return result; +#line 909 "util.c" +} + + +#line 262 "util.vala" +void draw_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height) { +#line 915 "util.c" + gboolean _tmp0_ = FALSE; + double x1; + double y1; + cairo_t* cairo_window; +#line 262 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 264 "util.vala" + if (width == 0) { +#line 264 "util.vala" + _tmp0_ = TRUE; +#line 926 "util.c" + } else { +#line 264 "util.vala" + _tmp0_ = height == 0; +#line 930 "util.c" + } +#line 264 "util.vala" + if (_tmp0_) { +#line 265 "util.vala" + return; +#line 936 "util.c" + } +#line 267 "util.vala" + x1 = (double) (x0 + width); +#line 268 "util.vala" + y1 = (double) (y0 + height); +#line 270 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 271 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 272 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 274 "util.vala" + if ((width / 2) < RADIUS) { +#line 275 "util.vala" + if ((height / 2) < RADIUS) { +#line 276 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 277 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 278 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 279 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 280 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 962 "util.c" + } else { +#line 282 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 283 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 284 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 285 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 286 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 287 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 976 "util.c" + } + } else { +#line 290 "util.vala" + if ((height / 2) < RADIUS) { +#line 291 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 292 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 293 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 294 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 295 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 296 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 297 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 995 "util.c" + } else { +#line 299 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 300 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 301 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 302 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 303 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 304 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 305 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 306 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 1013 "util.c" + } + } +#line 309 "util.vala" + cairo_close_path (cairo_window); +#line 311 "util.vala" + if (filled) { +#line 312 "util.vala" + cairo_fill (cairo_window); +#line 1022 "util.c" + } else { +#line 314 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 315 "util.vala" + cairo_stroke (cairo_window); +#line 1028 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 319 "util.vala" +void draw_right_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height) { +#line 1036 "util.c" + gboolean _tmp0_ = FALSE; + double x1; + double y1; + cairo_t* cairo_window; +#line 319 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 321 "util.vala" + if (width == 0) { +#line 321 "util.vala" + _tmp0_ = TRUE; +#line 1047 "util.c" + } else { +#line 321 "util.vala" + _tmp0_ = height == 0; +#line 1051 "util.c" + } +#line 321 "util.vala" + if (_tmp0_) { +#line 322 "util.vala" + return; +#line 1057 "util.c" + } +#line 324 "util.vala" + x1 = (double) (x0 + width); +#line 325 "util.vala" + y1 = (double) (y0 + height); +#line 327 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 328 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 329 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 331 "util.vala" + if ((width / 2) < RADIUS) { +#line 332 "util.vala" + if ((height / 2) < RADIUS) { +#line 333 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 334 "util.vala" + cairo_line_to (cairo_window, (x0 + x1) / 2, (double) y0); +#line 335 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 336 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 337 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 338 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1085 "util.c" + } else { +#line 340 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 341 "util.vala" + cairo_line_to (cairo_window, (x0 + x1) / 2, (double) y0); +#line 342 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 343 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 344 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, (x1 + x0) / 2, y1); +#line 345 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 346 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1101 "util.c" + } + } else { +#line 349 "util.vala" + if ((height / 2) < RADIUS) { +#line 350 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 351 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 352 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, (y0 + y1) / 2); +#line 353 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 354 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 355 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1118 "util.c" + } else { +#line 357 "util.vala" + cairo_move_to (cairo_window, (double) x0, (double) y0); +#line 358 "util.vala" + cairo_line_to (cairo_window, x1 - RADIUS, (double) y0); +#line 359 "util.vala" + cairo_curve_to (cairo_window, x1, (double) y0, x1, (double) y0, x1, y0 + RADIUS); +#line 360 "util.vala" + cairo_line_to (cairo_window, x1, y1 - RADIUS); +#line 361 "util.vala" + cairo_curve_to (cairo_window, x1, y1, x1, y1, x1 - RADIUS, y1); +#line 362 "util.vala" + cairo_line_to (cairo_window, (double) x0, y1); +#line 363 "util.vala" + cairo_line_to (cairo_window, (double) x0, (double) y0); +#line 1134 "util.c" + } + } +#line 366 "util.vala" + cairo_close_path (cairo_window); +#line 368 "util.vala" + if (filled) { +#line 369 "util.vala" + cairo_fill (cairo_window); +#line 1143 "util.c" + } else { +#line 371 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 372 "util.vala" + cairo_stroke (cairo_window); +#line 1149 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 376 "util.vala" +void draw_left_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height) { +#line 1157 "util.c" + gboolean _tmp0_ = FALSE; + double x1; + double y1; + cairo_t* cairo_window; +#line 376 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 378 "util.vala" + if (width == 0) { +#line 378 "util.vala" + _tmp0_ = TRUE; +#line 1168 "util.c" + } else { +#line 378 "util.vala" + _tmp0_ = height == 0; +#line 1172 "util.c" + } +#line 378 "util.vala" + if (_tmp0_) { +#line 379 "util.vala" + return; +#line 1178 "util.c" + } +#line 381 "util.vala" + x1 = (double) (x0 + width); +#line 382 "util.vala" + y1 = (double) (y0 + height); +#line 384 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 385 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 386 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 388 "util.vala" + if ((width / 2) < RADIUS) { +#line 389 "util.vala" + if ((height / 2) < RADIUS) { +#line 390 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 391 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 392 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 393 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 394 "util.vala" + cairo_line_to (cairo_window, (x1 + x0) / 2, y1); +#line 395 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 1206 "util.c" + } else { +#line 397 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 398 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, (x0 + x1) / 2, (double) y0); +#line 399 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 400 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 401 "util.vala" + cairo_line_to (cairo_window, (x1 + x0) / 2, y1); +#line 402 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 1220 "util.c" + } + } else { +#line 405 "util.vala" + if ((height / 2) < RADIUS) { +#line 406 "util.vala" + cairo_move_to (cairo_window, (double) x0, (y0 + y1) / 2); +#line 407 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 408 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 409 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 410 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 411 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, (y0 + y1) / 2); +#line 1237 "util.c" + } else { +#line 413 "util.vala" + cairo_move_to (cairo_window, (double) x0, y0 + RADIUS); +#line 414 "util.vala" + cairo_curve_to (cairo_window, (double) x0, (double) y0, (double) x0, (double) y0, x0 + RADIUS, (double) y0); +#line 415 "util.vala" + cairo_line_to (cairo_window, x1, (double) y0); +#line 416 "util.vala" + cairo_line_to (cairo_window, x1, y1); +#line 417 "util.vala" + cairo_line_to (cairo_window, x0 + RADIUS, y1); +#line 418 "util.vala" + cairo_curve_to (cairo_window, (double) x0, y1, (double) x0, y1, (double) x0, y1 - RADIUS); +#line 1251 "util.c" + } + } +#line 421 "util.vala" + cairo_close_path (cairo_window); +#line 423 "util.vala" + if (filled) { +#line 424 "util.vala" + cairo_fill (cairo_window); +#line 1260 "util.c" + } else { +#line 426 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 427 "util.vala" + cairo_stroke (cairo_window); +#line 1266 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 431 "util.vala" +void draw_square_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x, gint y, gint width, gint height) { +#line 1274 "util.c" + gboolean _tmp0_ = FALSE; + cairo_t* cairo_window; +#line 431 "util.vala" + g_return_if_fail (GDK_IS_WINDOW (window)); +#line 433 "util.vala" + if (width == 0) { +#line 433 "util.vala" + _tmp0_ = TRUE; +#line 1283 "util.c" + } else { +#line 433 "util.vala" + _tmp0_ = height == 0; +#line 1287 "util.c" + } +#line 433 "util.vala" + if (_tmp0_) { +#line 434 "util.vala" + return; +#line 1293 "util.c" + } +#line 436 "util.vala" + cairo_window = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 437 "util.vala" + gdk_cairo_set_source_color (cairo_window, color); +#line 438 "util.vala" + cairo_set_antialias (cairo_window, ANTIALIAS); +#line 440 "util.vala" + cairo_rectangle (cairo_window, (double) x, (double) y, (double) width, (double) height); +#line 442 "util.vala" + if (filled) { +#line 443 "util.vala" + cairo_fill (cairo_window); +#line 1307 "util.c" + } else { +#line 445 "util.vala" + cairo_set_line_width (cairo_window, LINE_WIDTH); +#line 446 "util.vala" + cairo_stroke (cairo_window); +#line 1313 "util.c" + } + _cairo_destroy0 (cairo_window); +} + + +#line 452 "util.vala" +gboolean is_drop_frame_rate (Fraction* r) { +#line 1321 "util.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + gboolean _tmp1_ = FALSE; +#line 453 "util.vala" + if ((*r).numerator == 2997) { +#line 453 "util.vala" + _tmp1_ = (*r).denominator == 100; +#line 1329 "util.c" + } else { +#line 453 "util.vala" + _tmp1_ = FALSE; +#line 1333 "util.c" + } +#line 453 "util.vala" + if (_tmp1_) { +#line 453 "util.vala" + _tmp0_ = TRUE; +#line 1339 "util.c" + } else { + gboolean _tmp2_ = FALSE; +#line 454 "util.vala" + if ((*r).numerator == 30000) { +#line 454 "util.vala" + _tmp2_ = (*r).denominator == 1001; +#line 1346 "util.c" + } else { +#line 454 "util.vala" + _tmp2_ = FALSE; +#line 1350 "util.c" + } +#line 454 "util.vala" + _tmp0_ = _tmp2_; +#line 1354 "util.c" + } + result = _tmp0_; +#line 453 "util.vala" + return result; +#line 1359 "util.c" +} + + +#line 457 "util.vala" +gint64 frame_to_time_with_rate (gint frame, Fraction* rate) { +#line 1365 "util.c" + gint64 result = 0LL; + gint64 time; +#line 458 "util.vala" + time = (gint64) gst_util_uint64_scale ((guint64) frame, (guint64) (GST_SECOND * (*rate).denominator), (guint64) (*rate).numerator); +#line 1370 "util.c" + result = time; +#line 459 "util.vala" + return result; +#line 1374 "util.c" +} + + +#line 462 "util.vala" +gint time_to_frame_with_rate (gint64 time, Fraction* rate) { +#line 1380 "util.c" + gint result = 0; + gint frame; + gint _tmp0_ = 0; +#line 463 "util.vala" + frame = (gint) gst_util_uint64_scale ((guint64) time, (guint64) (*rate).numerator, (guint64) (GST_SECOND * (*rate).denominator)); +#line 469 "util.vala" + if (time >= frame_to_time_with_rate (frame + 1, rate)) { +#line 469 "util.vala" + _tmp0_ = frame + 1; +#line 1390 "util.c" + } else { +#line 469 "util.vala" + _tmp0_ = frame; +#line 1394 "util.c" + } + result = _tmp0_; +#line 469 "util.vala" + return result; +#line 1399 "util.c" +} + + +#line 472 "util.vala" +void frame_to_time (gint frame, Fraction* rate, TimeCode* result) { +#line 1405 "util.c" + gint frame_rate; + TimeCode _tmp0_ = {0}; + TimeCode t; + gint64 secs; +#line 473 "util.vala" + frame_rate = 0; +#line 475 "util.vala" + t = (_tmp0_); +#line 477 "util.vala" + t.drop_code = FALSE; +#line 478 "util.vala" + if ((*rate).denominator == 1) { +#line 479 "util.vala" + frame_rate = (*rate).numerator; +#line 1420 "util.c" + } else { +#line 480 "util.vala" + if (is_drop_frame_rate (rate)) { +#line 1424 "util.c" + gint FRAMES_PER_MINUTE; + gint FRAMES_PER_10_MINUTES; + gint block; + gint minute_in_block; + gint minutes; +#line 481 "util.vala" + t.drop_code = TRUE; +#line 482 "util.vala" + frame_rate = 30; +#line 485 "util.vala" + FRAMES_PER_MINUTE = (30 * 60) - 2; +#line 486 "util.vala" + FRAMES_PER_10_MINUTES = (10 * FRAMES_PER_MINUTE) + 2; +#line 488 "util.vala" + block = frame / FRAMES_PER_10_MINUTES; +#line 489 "util.vala" + minute_in_block = ((frame % FRAMES_PER_10_MINUTES) - 2) / FRAMES_PER_MINUTE; +#line 490 "util.vala" + minutes = (10 * block) + minute_in_block; +#line 491 "util.vala" + frame = frame + ((2 * minutes) - (2 * block)); +#line 1446 "util.c" + } else { +#line 495 "util.vala" + frame_rate = (*rate).numerator / (*rate).denominator; +#line 1450 "util.c" + } + } +#line 498 "util.vala" + t.frame = frame % frame_rate; +#line 500 "util.vala" + secs = (gint64) (frame / frame_rate); +#line 501 "util.vala" + t.hour = ((gint) secs) / 3600; +#line 502 "util.vala" + t.minute = (((gint) secs) % 3600) / 60; +#line 503 "util.vala" + t.second = (((gint) secs) % 3600) % 60; +#line 1463 "util.c" + *result = t; +#line 505 "util.vala" + return; +#line 1467 "util.c" +} + + +#line 508 "util.vala" +char* frame_to_string (gint frame, Fraction* rate) { +#line 1473 "util.c" + char* result = NULL; + TimeCode _tmp1_; + TimeCode _tmp0_ = {0}; + result = time_code_to_string ((_tmp1_ = (frame_to_time (frame, rate, &_tmp0_), _tmp0_), &_tmp1_)); +#line 509 "util.vala" + return result; +#line 1480 "util.c" +} + + +#line 512 "util.vala" +void breakup_time (gint64 time, gint* hours, gint* minutes, double* seconds) { +#line 1486 "util.c" + gint64 the_time; + gint64 minute; + gint64 hour; +#line 513 "util.vala" + the_time = time; +#line 514 "util.vala" + minute = (gint64) (GST_SECOND * 60); +#line 515 "util.vala" + hour = minute * 60; +#line 516 "util.vala" + *hours = (gint) (the_time / hour); +#line 517 "util.vala" + the_time = the_time % hour; +#line 518 "util.vala" + *minutes = (gint) (the_time / minute); +#line 519 "util.vala" + the_time = the_time % minute; +#line 520 "util.vala" + *seconds = ((double) the_time) / GST_SECOND; +#line 1506 "util.c" +} + + +#line 523 "util.vala" +char* time_to_HHMMSS (gint64 time) { +#line 1512 "util.c" + char* result = NULL; + gint hours = 0; + gint minutes = 0; + double seconds = 0.0; +#line 528 "util.vala" + breakup_time (time, &hours, &minutes, &seconds); +#line 1519 "util.c" + result = g_strdup_printf ("%02d:%02d:%05.2lf", hours, minutes, seconds); +#line 529 "util.vala" + return result; +#line 1523 "util.c" +} + + +#line 532 "util.vala" +char* time_to_string (gint64 time) { +#line 1529 "util.c" + char* result = NULL; + gint hours = 0; + gint minutes = 0; + double seconds = 0.0; + char* return_value; + gboolean _tmp0_ = FALSE; +#line 537 "util.vala" + breakup_time (time, &hours, &minutes, &seconds); +#line 538 "util.vala" + return_value = g_strdup_printf ("%1.2lfs", seconds); +#line 539 "util.vala" + if (hours > 0) { +#line 539 "util.vala" + _tmp0_ = TRUE; +#line 1544 "util.c" + } else { +#line 539 "util.vala" + _tmp0_ = minutes > 0; +#line 1548 "util.c" + } +#line 539 "util.vala" + if (_tmp0_) { +#line 1552 "util.c" + char* _tmp2_; + char* _tmp1_; +#line 540 "util.vala" + return_value = (_tmp2_ = g_strconcat (_tmp1_ = g_strdup_printf ("%dm ", minutes), return_value, NULL), _g_free0 (return_value), _tmp2_); +#line 1557 "util.c" + _g_free0 (_tmp1_); + } +#line 543 "util.vala" + if (hours > 0) { +#line 1562 "util.c" + char* _tmp4_; + char* _tmp3_; +#line 544 "util.vala" + return_value = (_tmp4_ = g_strconcat (_tmp3_ = g_strdup_printf ("%dh ", hours), return_value, NULL), _g_free0 (return_value), _tmp4_); +#line 1567 "util.c" + _g_free0 (_tmp3_); + } + result = return_value; +#line 547 "util.vala" + return result; +#line 1573 "util.c" +} + + +#line 550 "util.vala" +GstElement* make_element_with_name (const char* element_name, const char* display_name, GError** error) { +#line 1579 "util.c" + GstElement* result = NULL; + GError * _inner_error_; + GstElement* e; +#line 550 "util.vala" + g_return_val_if_fail (element_name != NULL, NULL); +#line 1585 "util.c" + _inner_error_ = NULL; +#line 552 "util.vala" + e = gst_element_factory_make (element_name, display_name); +#line 553 "util.vala" + if (e == NULL) { +#line 1591 "util.c" + char* _tmp0_; + GError* _tmp1_; + _inner_error_ = (_tmp1_ = g_error_new_literal (MEDIA_ERROR, MEDIA_ERROR_MISSING_PLUGIN, _tmp0_ = g_strdup_printf ("Could not create element %s(%s)", element_name, display_name)), _g_free0 (_tmp0_), _tmp1_); + { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (e); + return NULL; + } + } + result = e; +#line 557 "util.vala" + return result; +#line 1604 "util.c" +} + + +#line 560 "util.vala" +GstElement* make_element (const char* name, GError** error) { +#line 1610 "util.c" + GstElement* result = NULL; + GError * _inner_error_; + GstElement* _tmp0_; +#line 560 "util.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 1616 "util.c" + _inner_error_ = NULL; +#line 561 "util.vala" + _tmp0_ = make_element_with_name (name, NULL, &_inner_error_); +#line 1620 "util.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return NULL; + } + result = _tmp0_; +#line 561 "util.vala" + return result; +#line 1628 "util.c" +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/test/debug/util.o b/src/test/debug/util.o new file mode 100644 index 0000000000000000000000000000000000000000..53e874233eba3dbd72fcd7462ce088f88c3b20b0 GIT binary patch literal 69276 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%0DH9p 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 z⁡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 Z_^@6{9 literal 0 HcmV?d00001 diff --git a/src/test/marina/ProjectLoading.vala b/src/test/marina/ProjectLoading.vala new file mode 100644 index 0000000..488fac2 --- /dev/null +++ b/src/test/marina/ProjectLoading.vala @@ -0,0 +1,162 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +namespace Model { + +public class ClipFetcher { + public string error_string; + public ClipFile clipfile; + string filename; + + public ClipFetcher(string filename) { + this.filename = filename; + } + public string get_filename() { + return filename; + } + public signal void ready(ClipFetcher fetcher); +} + +public class ClipFile { + public string filename; +} +} + +// Describes an XML Document and if the test should consider it a valid or an invalid document +struct ValidDocument { + public bool valid; + public string document; + public ValidDocument(bool valid, string document) { + this.valid = valid; + this.document = document; + } +} + +ValidDocument[] project_documents; // The set of documents for building the test suite +int current_document; // Index of the document for the test we are currently building + +// StateChangeFixture holds the root of an XML tree describing a project, the TreeBuilder +// and if the XML tree is expected to be valid or not +struct StateChangeFixture { + public Model.XmlElement root; + public Model.ProjectBuilder project_builder; + public bool valid; +} + +void state_change_fixture_buildup(void *fixture) { + StateChangeFixture* state_change_fixture = (StateChangeFixture*)fixture; + Model.XmlTreeLoader tree_loader = new Model.XmlTreeLoader(project_documents[current_document].document); + state_change_fixture->root = tree_loader.root; + state_change_fixture->project_builder = new Model.ProjectBuilder(new Model.LoaderHandler()); + state_change_fixture->valid = project_documents[current_document].valid; + ++current_document; +} + +void state_change_fixture_teardown(void *fixture) { + StateChangeFixture* state_change_fixture = (StateChangeFixture*)fixture; + state_change_fixture->root = null; + state_change_fixture->project_builder = null; +} + +bool document_valid; // if a document is invalid, on_error_occurred will set this variable to false + +void on_error_occurred(string? message) { + Test.message("received error: %s", message); + document_valid = false; +} + +// The actual test code. It builds the given document and then asserts that the result is what +// was expected. +void check_document(void *fixture) { + StateChangeFixture* state_change_fixture = (StateChangeFixture*)fixture; + + Test.message("checking document expecting to be %s", + state_change_fixture->valid ? "valid" : "invalid"); + + Model.XmlElement root = state_change_fixture->root; + Model.ProjectBuilder project_builder = state_change_fixture->project_builder; + + document_valid = true; + project_builder.error_occurred.connect(on_error_occurred); + + // We call check project to check the integrity of the file skeleton. + // If it's good, then we can load all the pieces of the file (library, tracks). + if (project_builder.check_project(root)) + project_builder.build_project(root); + assert(document_valid == state_change_fixture->valid); + Test.message("finished executing check document"); +} + + +class ProjectLoaderSuite : TestSuite { + public ProjectLoaderSuite() { + base("ProjectLoaderSuite"); + + current_document = 0; + project_documents = { + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + +""), + ValidDocument(true, ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(true, "" + + ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, "" + + ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, ""), + ValidDocument(false, "" + + ""), + ValidDocument(false, ""), + ValidDocument(false, "" + +""), + ValidDocument(false, "") + }; + + int length = project_documents.length; + + for (int i = 0; i < length; ++i) { + if (Test.thorough() || project_documents[i].valid) { + add(new TestCase("Document%d".printf(i), state_change_fixture_buildup, + check_document, state_change_fixture_teardown, sizeof(StateChangeFixture))); + } + } + } +} + diff --git a/src/test/sources.mk b/src/test/sources.mk new file mode 100644 index 0000000..7806b8e --- /dev/null +++ b/src/test/sources.mk @@ -0,0 +1,4 @@ +$(SRC_PREFIX)SRC_FILES += \ + test.vala \ + marina/ProjectLoading.vala \ + diff --git a/src/test/test.vala b/src/test/test.vala new file mode 100644 index 0000000..2546341 --- /dev/null +++ b/src/test/test.vala @@ -0,0 +1,12 @@ +/* Copyright 2009 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + + +void main(string[] args) { + Test.init(ref args); + TestSuite.get_root().add_suite(new ProjectLoaderSuite()); + Test.run(); +} diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..d230976 --- /dev/null +++ b/www/index.html @@ -0,0 +1,11 @@ + + +Fillmore multitrack recorder for N900 + + +

Fillmore multitrack recorder

+

A port to maemo 5 for the N900

+

Coming soon...

+

Meanwhile visit https://garage.maemo.org/projects/fillmore/ for more information.

+ + -- 1.7.9.5

(O?*QWxxQzMhy_|0TKv`3QhtE7YPt^ zK@`O(;i7^>E*6y|qotKrs?lTaMCpLWqD$8Wk)kVZhDq%? z=llNu{rl~C_Osr1z3W}?y6nr^Gb4D1V1wXl!F7Tg1-A-r7krB7FpQ@KpC$eP?@x++ zpYS(?zc2i-@K)g`gnuFYjPUp|y58pzVfTFD0|c)U94+z*!lw(rQFtY>)G#&*f0PKn z9~XR*2>VZq{6B?1FZ?y(2ZaAY_=mzj68?$se+b5n)piqzI6tQdW(nqr{A%IjgijJa zg9yLx7QTiEzaJ3XK!o30Mg9ZfJB9y3_+H`rgufyDec^|N9~b;w(*GvhIZpfENAMCN z%Dr6p5aCw|A5DbcRl-*YJ|Or*!JiRPpI-_-M}*zih))^DA0_=m!Q+CT2%aYH#QShW zE;B@yAa`T4*BJ8~?cv#X~iSXm3@Gpt* zNMy-&2CmN&0>w`pp61?-Nnp9|b=o zBHuBQ|5f;D;b(=rra%wnClOKa3xr=J{4yf!3>Pet^y`Tz|7PKpM3lcka1jytmWsSV z_$uL>1$PKOEAl_Z?5z}BLxjC1kv}SYyYL?ie@6JP ziKx#$;qMB6U-+Mhu=lCpKPA2ERHUO`9wO>}J`sNO73@buz6_BM7Cub)2;pOhC?9|F zq3ql!+%J3q5q6dd-cLk14+?&ti1MEl{v*MsCH%qAlLaN$=Aj+FEwBFeu>aFL`hBchDEh2Kwv-3J9X z5|QsQk^fNmPlWFg{+#fA!ru`7JK=|gw+VhJXkG{V@H<^FhX{X$2+t?Np8~-`BK(;o z^6Q1q6h2q@LgDqoR}f+6UcrZmXs^cvcMxIsr-CmK;n(X#^f#>Odvu(S@1j}^!tkZQsJ4xbBWN; z6U-O+Xpt8SpDBDE5&8=Smxz3s$nO=tL2$FA2LzuH{3Q`~o)dhL2tQvF`9a~oCnCOo zmh_Xt+l8MYB47Ls8ZRIs9_d8%+be_*CZfEdf>#ldZaIdM$ zAe_HPM1S8Fen$8=!qZ`sa{itc6}1#MB2Ad_&DMGT_Vb> zgs&C8PWW!&>U)py|A_FQ$iES8#OeB_5n<0OybIeA9~OF~U8my*`zDny#-IDvWG~6_ zdIt^88=g1JH#Bz`j(t9#?Q`hRT(39Rhu<9aaw|)?dvwtllV8M@&BQ;)gc;g$juOP> zD#*Zhjr$m`-C1phFVJf2UVqf>YiKhLK5*1!jfcwkASm z6a?@U&xWJ_JbU&N(L8ffDjm9?WbLxho7)V}_jMT!#Yg+`*E@WaZ_;U~H{Li^$IHCi+mUhi#^86a-qwp>MHYF<$W!8^*;bXh6L&j>@!dI_i+#tmA8Xw;WIO zY&lLFChWU>Yuen#>NeKD(B^cgvw!G7JS z`VI9dr@kApPpn?w=4n{prgV|tg`Ii4wmfNU*Yz)+*lDYm{gC}c#T4-`E#9tum$Aye zVfZ#Vu5Q`7vU` z7`w|>h59Ofp`$fAHf5+|nX2O&#AZ#f&=wo&Gymsj&-RIo)w#OiSe+~5^;Yy|@3SUi zRaR`pN}prmSReFT!gBDnQ@Cm{Rj2#)8$C>zXkKHDjJcndhO- z^HEQiSDpJ>Ok>;ec<36ITSwl-JuV{JTd(MA#GEzZr>abg4JRYP;@{N;r$-PhNl zAFK=Ru=)HY&Ii>tpLuAHUE}{Eb{NR2?c4=&K1LlZ-&Fn4zJ?Ka-!uaIV#Rj9%}>gg z+5G%};iFO9nV-{x@UdqsACLVzJ{AXBb`)4+V0tUhO?nLQS|#=v2+gO`AKbXE=`4;W zbP&f;@NZmadR-8E#yqkP`dVQ`zsPgJ)=uKQ?SIi1x}q+LtYqJ9 z9ffPA#AcK&^V()yymYpO#(r6#WnFc+J$W96A2_%Cd+nLTHYjEr$h8LI&R8)<-03S~ z(Q10u1aa>YI@d;yA$?A~QTixl4N;CqUpq8KT{~!>|Bbl-Z8;b|tA2s|u>Ve7uRy+V zyBG6XA=PSIroWFiG#ZNeHI)Qwu3+DZM<4&LIb}cMWJ;W@GA!Ih8RLgOWu;l?JYIJ+ zLEhxmI=n`iZN(9?I>?rFBKt0%eE-5HUPDCtL|+;^>2vn}#`E{5)&KK8hp!jov{>4D zF_8D6Ci*_x(~UmM`JLC?s(o#J(K^5L+S!UBkFCDS>pZq4>%?}@{bPD7`l8#?XTQvc zUcN1!w^*@;jMoV1HW_W(<-w>vP5S>bE}Rqo|B6fPcf`dm|Cez=TQ-$heMR3p{ddMX z&yk(=a~+#4YCgr-!W^|4V{B!cy}iTteER<9E?d1CquUernS9oy`VRU7pFdgLN;7+y zmn8S>=1lIJ+`~N2^x&DCBi-oM?V4^*H~wi*4&k*c#c(EH)$M!T#^cs4&NRpOG;z?S zzcIdNPB%P**P8gz!|uq9|KTQ3HQ`ct)vdQVFp>I+anQ%g_oWJwnXC=r9e4^nJyA+N z9ys@q;^LTkUQg4R+^ri*kE4;ENg-GGlh(b?kC65bOY!QS5SXFr`7SeTCN%?Q(s07K z;C!9hjmGs9_B3hN&>)LUT~h>0M@YyFo?r zvN&T9s&IKXbc6FCz9LugOwC!ltZ+%JT{bMb839xlW#+JGs^KdX_VhtvY8ZoQVtmis zL>jnKyzIt?4~GXoVQ=*=+8rXLq6d-U&vGoOVGI-7BFhU?thj~(7G?h`yC7Wb_ZSXR z1O%NnKiiO2v1K=mtHZ^!3fBll46aRNUp3ytojY!7vAN8B@Yj49r`Rj-XjLU4Jlq_v zIQ)r+;dI4M$AcZG*#+kbfcr6AMmrsGe*w7o3wN%|ra{~3h@XUc#q~Oqb1RwRj>BD* z;W~tpTtjYCDe+^N5`gQjk(o$|+lG%vuy^6d`9{1e9wqdF-060`3g6u>rz`HqwD2DM zjLW9J>v@zK=i9}@t5BV|L6`8*&D6nf^6&;s1#v?^#v#0a6W+W0IF1{}B3&=g(C~Ox z#^vHq-@C5CaokluppZY=7B}f9JY0$5<0j`o*3~rxp9x)E`G9WbID95vfDZ^Js}#SL zVkK81A?X)NLw`~|+2rSHOBcCW8x;bs_^1%{GrF@fU0qKhB}vtmzbxA2(qDml9zkHt zuC84;MtqXNdb|OLq+EisU$@-Y>gT>G_R3Rkk?9}??cFQoT1p=iX==(#bbY(4NJ-Ps@!0e|_>U>^&pL(zdc2P_ zPW-R+F)rV6=5%rd^x&@)#$TzAJJ?_&oipK3SJ!NOb~9`7nW#QwsIUv1?}~3!wNKpw zW~QoNJWUbU8@F7FVw_cM|CxR-1TbwoIo?Xm;QyR97^un)KD^!*S)NYsoR)(`!_t~ z0CV3F8es0_DwJ_kq5Lj(HDj2#0!Ucb9h#|&VcJZ65bfnieFgrzQjg%%ow^GF^rU8> zA9zz&p)TIkInZe~Qct3jH{ic+Ux23xTWQi&iE275_{f{90~7g=IQA{h&w(cH<>{jDMg$-+aqqP_R#i+qZB>yDB>rtb zj5r3klyiw^v~zC5^CWyVT|a>Bq)bjDeQ!gNo}|p>I8Hf*DkLp6=@#dtcxv5dUPspk zBpR+&$eWbC8k(M=P%&Lx{ZE?meVTa}?(|BU@=D0e)8=R#hs^9UXDTxu!}Vj-KB?p# zn%SYu%))2Vfj`sCU2M3d1EZmrq28212uad)LemWw`*6}b{F4|@J(?LOCf2{Ji|%)Iv2@q@2zBxWwK(jX z&k>k>!B249lOakTVh?rlQ1#LSLd|$34^uxii?fq!3sw94k`_8(*PYzw&$KWK$I0L0 zT*dy#hsVkJ4Tv5Z%W(Y;wMy=bZ?&}5gTnYb^3v}g-p14afl1Cg;Rdw}j zV3v`ql?9YKm42sR0qS`hho);g8aO#8p9%lOhv_=N?1LxaxNlEHJ|lTBUDh=l!~O}s z5CuBh&AbDmM1CNJKi=EbwHTzU>wVNB&5zbHpVY4cq(Oz-9*8fz7!iYj)0$aqT-2X2 z{*|dNBB+;({R-?yq1#XC{z^@TczF!H-TWH0HLrD;RAYP=V80M`>Bqqc0jHA9Nb7$S z6$>16@8{q~+6S!hQ>MvW>#)CyeJpdTLY`6%bs){S*z_U_<}ioyiK@G>J7M_VP(i~~ zLD@(fpbE-U1sQ4I(u-$IlR4N3Mc^+m*9N-tjH=0PNbARv!5M}7!HtW`SmryXnw6Pz zCQ^4|zZ4m@i|?r1y!h<51nmlC&J~}LyKo){=S<%n@$B~!T0`Vn-~)P~oy~Vm+Cuv< zCKvq^hvo~qJeE}qy@}X)6|2j8L3y{7_EdQqriP1eu(4hp(-JL>Pa&gAjH0bfANF~husy6i?s?9MB|i_Krr z|H~Ze8jFr{oiq_KxHl1flpbe5&Ah_FOU2864t_ab7OKF01%KrjzroIzgP3bLH2P=2 z4>QNXE;9^Pj4VG}Bh$h2a-5UiXO%I6mpkY~994|0naFKsIevhf3`scxp_%RA|DWg- zBW*S;m=`-t7L|^C6R`95jkED5brdl4{C#!ZYX(TK;Tt>V1rC!rc+s>8`%&cTr~1|f zO6w)08EH?^QIA7iS}j8^zFU-t;Pi9i00JJzBOT%6lytFq0ei-AJ-nEKR|%J3e}tJ- z&p)oZ6|ebn#vvpB%}KR{c|x^BdKnV?_oSHrqA!MBWDEf0UzY|*O0Seai`e^ z8~oKsGtLPihwbC2jd|8ISv+4j`U&uH*wikZRfd0$w0;ecLy^Py3-CcpswxcAP!Y)C zBGmw7((aiKc9ircCMx$#2S<~3%~Xxs1LHxvW;(QMnfXYn#$Fq;<5G4mr(h=b{ukiG zbUAp9HyVf9o=e%A0j}-2EPJ%I4Ey?!y*Oo02jOuYgmn0bAk1ZdIfW?^0mwubT#9@@ zz}rAN2&YsKob_*lM zF#l|tyilb}pJLyHjMY659bT$J$UF3xkk;=x2!$UZ|2ZcsEsuk!-yFLAXH_^ZKa2}` zaSN`lZXYrR@J7S@i%HX&yz=4f=LgZX3fda;Ztdd^`qUF}Zo7G284-1%2z+!1o?PUTh~$h2E`DPyC+bLPW?O;FSkSfSl&2)VUF zxm6BL?bZtARvox@YlYpdYVFoBx^-nAMBX{v9NAMlbOuiS2eK*7G2k4|bHp3ihp4{x zB_$t`mT~&{>P;ANAydv)IK!ugLwVYC4!;EH>AR6OgcF!^IOi{3rw-#(?HtaT`f|`b z&IHckwu$;W?VSq>Xi;8L4mZ1^yEtc|P4RC*$g~$FPXnH$)5^(NbaDlfbl~PF)t{56 zpj@*;)$c>_oHtG-JC@?6H%IWbC%7`h1$(bC>WPyu#j%1 znjuYhFI-5d>7$!UFs?G$`fMz;pNpawDwi zkd9QodJtXh>qz>#4SL$wk@WRhQ0?nT?Q5nR)i`e7{o=5y>M!$EU+fqnyW>1qyC)#T-=c5NW5Sp+@p+CWy*52{@oXls^>wQD=IYwd9; zv%g8VGBHhVLY6qRn|7@~U3&>h+O__4?FguL?MHMi4t2^o12;~GTs) zmB@xui5KIHjN`C6uY;82B0TY-}K8L2m zxCw_2^Xud!2-Fh=a5JaAwkBu6;yG3I6_q*jsus-78l3G@2Zjx4 zQ15wlw^vuzYW;Z?<#pxw2XAGSL-$H1tar}EcUSI(g;C=m?+=g|G0aGE(;IXTXrbBmm-&3gx3kv(YT zN@weexk#Ppe9)XQ=!!{2&d*m&0M8nHMUL~rxxUOnS4dvGf5`MXZ=di- z=Tmn>K5u-E%jx{$PInzVTJN0etas;6D1x#2$`75d8~4s_Y$%%Oz8aPhnK8~EF^>|v zum8}wD9* z**=hO&Fmpsd*UAvfP0bjnB&(-`RJ|*&Kn%*rg&JHQ{n94o-twWgltD{&y^D=K7V>U zboVMpn^(+r|LpX3XN`Lo72H2Xklgh&Wj+p5M^`-Vyu*=UM#>&kvcE!BPniw`dq>V3 z_jKevX-x1T^On1_S=}#;2@VIwIOYNL$3;sjDy#fzIQZvP*7@r(0R4;f7n9gu?ee@nt@^39V6oD)>_^DyMwDEQCO?N$bOE~jbMntAmjXJGFR1lbEU2lw zJ(hnge@=Z(P32tTHg)E%eW+sw`g|J0BV$RCKKT zm5VFZE4<~k-pSL8ittEzF*Fxccy-x$|LRT z_-TH-r{0X(%Bs2IuksXQq1>CHeepBpU)f|mZ6VD@Sk!4aM*p*oV=2^o_0`@nBZ{Vt zmbhny7-F-t#gfQb=;~hjq!!l(&YoxibIpqJJ*)w4{uZol}@Ox%8D0h-1x+t^^NjJ z=~({oiTW|6%PMlpI`Sv{R)$nt^1;FS!Jq6y#GSa zi*mT}F=!(&mj7NVVB<5%&UCEu_<(RPbPJRJb0kTJXAir-!xkSAH2)hh=k0W=((611ys!N(9o}H>>BJ|FTW-7u z^Z*N!)mT(lGzq9v61gm_^`};V|xU5ji9r#&RaBjogbJssu)qs>ED%9I47t zZ5qY+R2x9206TJfh#XJ$f~YzUJ8}~!HjPqzs%<7dE3n&aQ=?8L%_7{19k$&> z&OdhBR9%MMmYXU~DrpvB8+Lj|+@+4g^`dG3J8}~!ws}UnTP4jR?8Qz)#6#*hY>29R zu-n{V(%UMjguom&+oXq8(k#NK*kL=B$m!2sMXH{`4%@j9C~_^`c&<}j*1do5ZjuX+I&_7Hwc;7=?0N! z7P}#;=3<8-0>!q7k#1EVrk)}FS(k#Mh?5quuCqKIrRCVFW z18fo~HjU|4iD79;SQ_ePsmPG7^Aa-DVTlh=pi>(FP5RKXSO!`VnZ)O*M+M1b`R@9px9QIu(TvB4UNc5WXRKb3Hj=(As0LQ36a+n_G(eJ5IdY8P;Bcb zVQEQN8md+`l?jlu7 zu_HHuV%zu+OG_vXC~4`QkYcIjT3B%^6}6ercnM3Vg{3pByj1Q`mS+)8V`o5#ysoo* zOH~7DtSg{E9hO!AsA-FB87PyX*Z|;ei%%w~FEYss%4BGTr6qYtDU4KPL7P?5EW%do z^p?mgOuM&K-GLo83CGl7sT*3>}<%Ji1VYhAmyR2_#MHVG8lrimS(d$jZffV<7b0H}IBFMKYqL(;NH zt@)r#M#iwTqyZ`GA{ANoH!5is!N3(ay(aSN+wL`0x%vv5gqiBFva&4wT6#EG#YILhjBeMflyMe4jOh%{!ot!LuGcn2D((e+Au?$f zD3g&lEG^;s?;DYdbc6SOm?;P@>}&xd?=0<=r)n>yT1=qW)&gN^38nLuV(I>nV(6Sv zg(N210#^W9sFI4U%IAVI85IaiONx*(Q>O+2r}d$gN8Ji5uV$qJ(v<&qr4o4uY_AJd zGqJ-wfnr--!qO5-8QdIb&N-$^^0pN z=c*T>V+biajQK5wh>uYDMAkSD<6g_vbLexIYWS+DUE$od8omi?*EnajhHnUV;)Asu z!?*RcN@puFOVJ-XF%nvn;VWyM=!Di~#v#m|=%`2ddd-DzCB@L9hH+i*m@?bS3*WDa zk=wTR!k1uTXhg5R@O_aOYUeJ%@a>Hlih2cx?@z=KVsX2+uBLuYoqE3^hQi{?+f@Hc z!zb>nvGMj$Z|tqs#&>_ks8xKfe!c@SZZX+0xT&>Ai4+#rI*o*m>V(ZT57ZExiD@6XUQK zVdveCwb|3>+tQnH{08>7vGZ2M+U)5kZ0XT5w0D;jdd%J;-lZ>xi)?54DzUt%Z-RtQ;{La|zarix$+@71u0S zT3%P#SvG6VXRex>^4slM)S4|8=@-;VZhcl#Gqb!rfCW(XMvYz*HFS|anv}hCYZpSgfou(13g| zAf&11dHc2#}NY+ax##R}f2DOjAII(<~B?sWJm zf^#JPDU*wCF#PlUvzIL4>kEinjo(#OPv4iNv`s`7cYhHY`$SRC22Y7Kc&!e50xE#qmt)sWHe zaai>!8Zm=Q?&Awbl#ZV=8M&_G3t@)tALn!)YozFAR^8qnU%fP6I(|f{8nFJw3+5~| zY|GWU_Zog3AIn`__W2C|q^N$17FQR15rZH`U_+C@Yz!uUh-nY!)>KwnVUeL@y^#?$ z$&4|Pr%H&Gb857!5UN&Htr41Or`ui~fwq2Q zDMnkId!477HKrjod=V=(fMqrg`(}BJX{LOUe?f(s?5x>WI`=5uSI7FNjUPLCM3H~; z6#vxGqoz;AYZdeGP7%)}OZ_sdF2w*^QZCa)jJbcF7LT1g-8;&gn>{#tkTFlqbACNX z*xoS;y^u848eO4=9$UyMc%DoNu^OD$s4*g^hB#^|v#NGpcZ^V%mN~nsaxvZo9Tb|8 zrj8y_sE3=HI8{ta_4&aH%!pBHaEAglb^2ugnDJAm$@Dg8C|(}r$wf~)Ikx7`#(BxV z1ZM)(!Tp$zD{BzcdZm8Om>s2JUX9bKHK)pHB%)+Y!li}|H~Nw-u(1NeevV04yQf~! zi|F|hH@|=Bk}AApgp*>7;M(qEVvY_&%~RHCT2Hi*13Tn@;poy4|5|QFW&aDpSxq2v)v8O({q@8T=J5~ z&@&QGo7Tw#FL0HPALSoeG=1twnZZlL@8XS;R|Y3V&+JjzCy$skS|(>+g7A%|I=K!} zSuHz}mjHSi)E7caL)Q-TR0Km;5>k7sX;q$BO{Yhin)zhD&>^*o)&bK+M)W_PV8qwx z(Wg!#Vol8?p-zN(YTT456Q>#a`b%H=s_Ty!4Wn;~`KlUT`Kzd0Chlur&UtiETfVfi z0%MhmxR4On{4y_f)|Vn?9h{Od!_~8yOL;|pow^{14E|gML9WhF7_P-)IIbV{=u@I0 zmlgA@ma$p{uSG7xtjsPa7od`&>lbld*l8oEc8jUe!QHi_df#`uiUc65$YtG-2v2%{f&7Nbi`Z}5+qK3Sbs z{J8OA7ttB4hE++pt78w0=(3>;Ve8%M#r|r1v7rjrWwrQ;gi)ie!fT?Fr(Y%~;Sqyz z*I8a!K6`;-X5cVx)Rd{Eqi1A|$TPYm#E)>B=ec^Bz0LETsrWWtA4gy3MGhmo_Vz`X z7=U#(8s}R_HI-G_b(PENjBIt0l|38R2-y{tv+L*i%V*E7sa$GgQ$?q!o^9h*xc`8B ziO#C@aJp9tHA}L2VOeE~S@fXnT)VZoxR611Z5qmUS#|wvUi!h8aOt@4!MnL3_aYh0 z8`->o#u?ejUc98PG8;k5!s!-Q+}R_hPRcH?tE*WsyS@$<{_PFFXO4%z>XiwVCl{ag z2WQr^Ec^z#VS8?4?7{CQ%)rATrZYeFxZHb*aJ*EawmjQII3`%n+OEJc_3e7()@GIK zLxPouGTIw$WwOae+K#Dr7oJ}7p|rJGHm*T}y&j2c@PGt1Sr0x}v+6Mw$5tL38pUwr zs~F`@hRkj+|505p+GBkzdpF~l_V7GWZQ~GVk42DT)%O-0Q_m`D#!x(vQ91O7r8gJU zUTz`E<*F3Rl?R8$Fxca-ky)E1`x6p)>=VI;Y52;u z?ZF*o+)oIKn(^Cm{DhfBY_iX6#}v0h&%V(XH-47|?o?~0^{%uC<#Nmz+1xf#W+QHv z(5A;ETlkIL^YEY?9f}Xw@4(KuFiwn}-Cm$pKa@qX+H9t+q;t|;#%E{kLTAWZo$8Dz zf#tFE@aE*xb=&4tBRHJkL=WLQDL49$Z~horidi3~YA?#L{-EU70U1n7pLJ#*&A`t5 zj{^^3Un_hcuryRz(|8S>Zy%l(Im;v0n`ux#KNMi?4;Lit^0#gL6a+!=LZIb8x!z2p zD{S+vK>AEM?XLybn`vAQIbZfWh6F1=xh1E5StzX9AHLIPmj`W}_2CP3cKN5FW{~)X z7AUkosi6f0(-;ST__kLg3|Rh<+wJYJahAsyv+VK=4t%xg@^WpQ^*LhW%3m9&yfHNJ zb$-72qc`nuMrgsoH0HtIT=4x+u>2*r>wjwFERS!w*yTGz3k@pJ4p0d?znUP0Q_gjAy-E9oCLnD;)5aOEgEr3mTr}1j zf@9m9_<8IHBa#x-TfbCcmoXuyz3`S`@VDV8yAV6&e*{m*@kPS<>r;g`c{lX^3UGbh zl3-i{-e}|3g6{yg^4|cyAKZ(b_G`h9+4y>J{xZctkv|2_pMbbn_{-qM;G7?r|3h#t zCR+Bt1m|L+#k)JPNCZAW^e+SF*T(gAQGziF{4_W(O=!=)IdSHm1$lVuX3P_wjzkmk zePJPvx)}|SQ|84^xqWjQNk$;TUXt-c@QjdBlJOJpnKu3`c$tmw0bge0&w=wAKyOI~ ze>Ey#QIxk2e7B9i0p4um?|^?}RQgmVq|1?0*BEXX6eR7Q1YmZ$i(v@qJcSg)So*^6-Z5LSh9&i40Wr~YeE@;^rL)+qi(6z>{3cj)U1{=%HKv3&kWD9?{g zIA(d{qvSV7@%kvfK8pW1ia#I4{}9FbbBESOf6UOiP5aBYu&s^qE28+dQM@FI^Ou9I zjrs45;*UjfzQJv6)PED4=j%EgGd>?h$6d%-(!%<|PmyeLqf8ah{Ne|+FPKU@0z z@hEGf{=z7J4>-@i&5+SPe{9s+sQ+RV=MO#ce0)gi%O9S!HtK&C#m@^}D`@}t12)!1 z{n99YR}|kA#rdKH&-c5Lm;Sy5&hvY-_;Vsk|C=c8v7JI#ekM52|EZFHN|byNIM4r< zd?Pr|_j{!Lr=#@W1P?+^+w||FDEYVGd}FMa$RoZWYptK@heZ)jQPl&y^zw-3L=g)A z-g7|P!&v*nz6eXUMea^@?8|BC6`gw(@vJM>GrrK$O^ioup$Gh`@-Y-_&!l5W?T`Os zh+{on%r3&$t;bE7Iv7hj_Qmw*hq>8<1`QuJ43F;4dC&(*-jKXbB*XFh|DEI+HnbDT zFs}c_EN58mkWM6dS9WS`FxHV{S{pjNvvP*yUD;WlVVznV)L9I2hYaq-+K}ANtPSxE z?<7xdr>&5CrO&XM6AP6Q&B>>hstK{G7a@?Rv|Jig@*yxWigrc~;>TcqT*(hSwk#T@ zq(gZ$j30UY7|xGDI*ZCPNM#zNa-sPtRr#=@$YYfg!QwIV>i&lxx%oF1@|26Yu~Z{g zD`J?^3lDgpTeoDV@G{HN zN=tjr{K`2C5kkF=>z`AObwHG>78UUtfDVr;FQh}Kxda@3ql(X|8TfE@uxM7!#eDUu zia)$2ZfR=EIwDq@tt>q?>XU+c4Jp!HEf!yub2Pb(~*75{syBpvSS&c0ZF&Ir%H-&Fsg)yC&h-b*>Wi zGDWC|S1wvm=bwGMU*;?R$V?4?F2s)or&|2)I%db}npm~8y%P|lZ`t0ehzw$Rb#;~X zdqP%p7FE{F>%8`yRAZD7`-O^F(FxBW_K}InHTs8tVw9p6*gI<&{xng{;Dle*u*NG^ zG3)rAjJ)#_qbRyL4%fzgm*cqt@lJg&)fW$z1LQ04LN@U(13%!bF^_mRo=XrL^z-El z?!mePcf27`o z=P=|q;8`-T?<(Av5Le?nVZ=4KPa>|x^EBdpc&-Jcy@SBiMYx9|&cX}QM67=tAzq97 zJz!tlK%ODqk9!Fx@Byrq5RpEPh=&R@iR*DMOMFm2$EN*t;C(jWK9JaidqK({Lit4G z=QE?e8*v{(+=S{34 z(|!k#_D>UG{|s?9?(>M{xc9>SI_>j2-z=|KIKR)$^7yT7mbZlv)ng`DEG9W z2lwXWd`7@>(||13OGLTpM3kFBM7ae(mRn6kIopWH&*%5dzZ1y(yNGjePfI!UJBZLv zb8CG*&!>JSkovsmr#|oXsXvqWIMy+U+c9p4=tsK+4-!!>pZn8J5ZEVxb^+4f31S7} z1*AQGWtim`5T8W9C&FGa@dtRGLWDi86VTpTAnmLp!mj}3u){C&(hl#@Y3DQ%cFquC zCoKU8J6umt^#iK<5n+d4a-bc4y_R;?5@BaE@qUauBJAuY{!stV1Jn1D{|NOY!amm@ zXuktU`=^Pp&o4#LejX9_ONl$t4~ZC04MgPMO8ha}3rIV=fV8ul2s?X-l^Ab8+T%A- zX)iGmxDD+^d>Z8tVRt5R7seIwe)JFGPf<_eGx|HG%+GI?_QiPKLwpwfk%;^U1%t#L zs1I>B$|XL5`6Eg5JRd2QVGPU*g$uci=A6lZf*96SaN+6Xg+6el8Jl7$>}#xB+n>!mqW0TZyo< zg9tmjh_KU4gq=5tuyaH>*O6GC6F}DIQzGKmL1e!oqF!f+x4=IS@}qtQMAVO8@$9=7 zeh^XaG9t=tAfn#ugl{Fnk6pyw=-0#zhyxM+pAqEaZ~Ein^D6k^Cc=+IBK+_W7h-$? z=?A~1Nk91YO!~pEdD4$2BK+7&gdaPE?jZBSM3+!@7YW`Wc(>qoK}=0b?^!`~ZN+~h_?F=B1%ra81V0!2RxrWT`MV4D5#+zv zv7SE_+$;E+-~mCdDN?UhkYD^G|EFLQVx!_Ec&XqZL0&ge&cCN4P8Gaa@D{<_1lI^| z5)26L7JNbQO+j8S(e81_^&C0>wUoF|@Lj<}f`1YGMDQPiUEMk#*LIkHpx{u!F@hz63k2%~8w4K| z+$Q+6;C~9fBFO7Omh%_Ej|IOHQA|EMyyzuEn=-nVVOXPD!eyi}M!ue0HEcXE-@@){@M1-H)M9%+| zBHtzaSHfQu&NU|He@F1QBIh5f(SDookA;6J{2#*Oa6L-<2}J1k7S8{}CC?HZPDD9Z z3yvTn-vp6Q7k;DgO5wK%uNQuY@KwU^C)T6>lK!ZqKOy`Vg3W>-2!2F_KOYOW6XDO- zMA+l?HRT>b{?7)vSMV|->X%DIKK`jM`B>sq+}8-dfrz>GX5kA(&g*jO^M4N=*BHi1 z;rxeEma{={6A|{G65K^ZzUKsACPM#J!8eJ}|DDMHB)nDlCq(G~RqzXu^ZK54xADVd@d1wEfu^^($(+Rp#F~u{{a!@Jtg=w z5&8Cr{5Qh+g>RPso^akbu>6yf{-yAL2=9UGd)nds1MO!B4kE(N)xt*zj*;{dBJ!0B z@)u^9pI;0o-a|zG2L&G?qCNrPJBiTSCAgaid(VlSzb`}nrf_~)oxF{R`m{^>KZKtZ zp3+_GT}FicEWx2f_%l-Y7{Q5>ejO3^=L+5~^1B3A6On(D;NwKphxai|=Y0&z+by_< z2zxJzocA^4?+8CE{7*#G=Oan~T=?IFJ8<8@eCG*XLPU8!BFY~od=wGoj}@FqM7~my z`-N8sUn0DYi1P1}^!tQADEtv3?EF}e_eCuKbt1}tSNI1+l>cYJqeSHUMC4xy|5|vL z9$Maw2zx2Q`wG8Q_!Yvh5*$NBITHk@NqU*!LL&THCY<+M)L$#Oj(DqKY$2lDfbbs* z=lvJuza%0qFG>1a!rv4A0r6JMlY-w$x*PXFEWbMu_WKf1em}thMC9Z94U`WP&igd- zvBHapD1W-7mkXaO{8l3D+#|SI(zg>){tt!kCZha3f_sU`_p-;OZovK>>ebd{NGD@i{Pgs z|BQ(8z7+hY$lbkl{__PhiO};277*drL?YrgL%3h$a|GuR;YYQ|?+|`Bu^!`3(l-g; zD*QRlJa=sQj9<0DMZw#pQK+dJV*F&BJzzByiw9CiSVaNcrB6j6kJY3 zzDAKhD14Lf{}BG9@Lj@xMub1Vmh@MJza{(-5q4Vzzm#;oCQ5(eiKt&P5&oPfm_kIp zej>k2cs3E`4U_bd!p90PAtGOyV2z~Xw;@$|jlwq&QQjuO?-P+PAo8CGe^&Slg0B;i z?||TYMC5x0558EBUlVcN`y1i&`Md}ExXd&h&`l$vjlIOFxGp2&9x;Q6Yw%1Wlzl|p zYvdBINBNyzXjl%hT80zm7 zzDqdQ52=4pIM)x!xqe9fM3?3sA~+tq7!G_`=#jYB<5vi>m*jY@ZP4Jn;d#S+Lv!=I z-a$T}&-OWVXs*{gbok&r0JgG(yGIv|(SJDxW7tgeK7=>49sadCjAP$p&%Ds+qmG&q z;@gkk(b4YOoz-USUVpSH;rw>v-~&eu_lqYkI-ApSezy^yzP|i#?Z&vQla2?nP9;Jo z^@>rSQtzK<&wkRB(53yOJAT#v#_~Pwo_~DSj?p&FGyZi&-3KVOkvYL+QrqHW&1n?tqRHI?PX-`CgruGV7RmUA8<%bD%Y` zd3BrHySlA|v3={&@A=$WC#~`v1*Jh}@vA{M{CoAW zf@VXY^`f#s>nmN#f=$!r1RMG@z74@W&~x}k9o^XTmEgX9h`0CN;K<(PK@&2Mn`NyE zc0sJ;#Qs{}_O?x)eL=>x88LMERw8DBmVK|z4jRpC+7br`S`yP?+dD_)bAUU2vxB85 z$JIP1xH12g;M<6QBFcGX@SLE_x2DYrUz}HJy+q%fpc`pyYfl60dDgUbJn-TPr?L42 z)7ZB@KwLJs0(FZr-+t)TUp)EHeQVdQ?U<5va#z9jHZNi{W}4BOcyQ8DMdrf^z_JyEk^Tt73*|kds~;X4M99r52m7iY2LnVham4L zct_R61HY>=u6R!8=0!h%-Ig@ubNY}EW#b7~kaJQOW1DU(=<}Sdw_?P1YERA+?7y5R z*oVzB#8K6;gmwLZe!9#p$IXJqqnsa+H(?m&+b%|F%Nf)=PGYOZIBc;z##+s%QJiJ5 zoK#ypj#NuL5Q9)WP-b*I_M%?#)f<9`E=G)uH9?k<>g%i8BrVwYRo1}^e>X!f8EtOq zupby+6>k+c_BqREYkp&V4Wp#BOL5@0m@7Ugg$*k|$C}Cy`>I|A0n}aklb{PS+U&)? z#5M`i-p#F;lRn_s*sTK|{*<`55eJv&p%cv*=dWN4c6i^xINaX0?c#l^elFNkam3u& zF+S^LDq`0QdFB^j?3Qh8b2QMmjcpHCydGr!(+d8IBX>_);7z9h*M6Y7dmp zW7>heRvw!-et4>F`QCO1km+qWPa4bDpK{*u*r}#Fa6Y~XvW4qU9fywVruC=Jzhc^_ z%Dyq96_>IJVV_FX7`Hfl{y5jOy)75*VtQ5u9o|*C?@7Fr59nX17=M;e#7}vyz)35- zbzIvqDeGi1u1!kOju}=Q8!$fwbR2g~i;QDp*<)@0omk$;Sb7-ClGa%`HjL|9v6h_> z@4F}HLVD9xUD{3W>flG8=ZU+XofAj#_ z>%jU`snRa)<<}@Vx$)TgQ;rALpK<}+*trYwnzDRV)d92#xLoM$U#c7Xn z7vye~X8>ut3wFz%sVqUBes*eD;R9oepIOE-LA zJKq0q`pGzV7T-U>h91Y+1sa3bZpGvo-t^c`#MmzCWNc^re>Jub=&}71jIsY4WBb6r z7~7U?4*D|ZSdMM;7Cry2L;36r7jSIK*y_4GU&WZ5W0+%;ZRB2fwMtJDUB>~8b?9^f zc3XaFyVaJIvyIr_RbQnZ+S`rY8oR1I;XGD-1GX$V5$?9;*v2x?ThU|tPK@n4ZDTuE z#&!|Lc48-E+lmL?FS>E!)A<<3@u7GyHqr5*Z;XKzANNgHw_hV;B~~or7hcltUa0G0 zADf4x&OL9Tzecx5blF`O=C==!vRFRHq17JUmg}()%Ll71CSvT-f2AX1?csl;T*k#} z6P9;WjV;VEY739Av>4;dgYh-9lkw#){okEC(T79l&bc_|xw8UjojW~O>2v36>fDL> z`Ro7wd6V;~b?&6S*Ou>XFS~MkTMC|2ye8vp0{RZm8Pw%D*3!$1(t7}U<}Ht%dJX;R zWt_*YIk-FK;6#iqH4i^+n}`3!`84r)oKK$*j}dhaeGFp^yWyzOmy7l+TUr7{L*Vhnn0V=y{aiGw3!+F->B z^U+eP&zA*SyD!XZXTN9c&PN*@x^;WoM~J5Zzd3h|J#dY>HcDAIR?Q>UT;_O8&rfdF z>-pgkv9rdEHQ%UsL62js(^wve9m~Gf{3Wrq<}(%VrzH=3>4Kf*J%zEP#uoaHE9!jx zBgjl#3%`ySFkUAxXRzNXeZ->6^Lgza#NlA|_BQq@<9Qte+U<&Sc!tC+Rty-!^AV%5 z2d+KmT+Vsi4O{m5+hfCPKJrk%vg-8-V*GWuUq#d%c~rkby{)>>kC;b-*YX{{@YaD# zx$FWpUQmCwH)D|I>(|D1w_?Dy_f_|6i^sJ9%ZvYTxate^kA1-MLDdCitGYd~{?wS~ zuW9e{p{_?4Z=fX}<2Dpq$`Kc~rM=!N@6-Q{xI8a){vx@qWTMw7Ju}?YQCLvy75f+*`Wya9@)Qe;wX+K|Z%=kozg#cX~Z|exvSt z*5STqU9d{VA7w@1;D(N@`+IeNSR811p)5Qn^I68feJ@j8d=$$Kn1iRc_Le!qdY;2) z5WJ^kEP0Ik?bI3Yk-j@{Z{rgGA^*4#{ue6$SHu6+!DZrqJkDFZPfv$DL*%@Fx9gBo z=bU?Y)Rxb6ST>*SRHKf(C+D+N){)OrQ}K+;i#-iH?=8Ir6LFs(zUM{POo+$xvv_0G z3F|pdCj6l9^nrDw|7q|q&E|ij_|NB%I5$OXytgdG{ADx*S_(}4tc1@et>+kqXRB`W zvOo*gbNYCn*pAoC)*xP6)qN|+g9mABJNjxpzLz&zPXWyd3nryRvyMorJ)S# z*vjMavizxBic8pqdNH5rSrfEu(}s1N7-ioDd-Q{Sz_Mr8x0l6xu433fju_UgXV-xOWeS+K0C1+Cnbcl=tv1FMLDWr=zWNvHP%RV&`*CmfPLfbHa;f zdx^n7OLya$6MVLkXyCjqa;`u4(9hU@>{D#BQnaHNw)wmZ^=>ucQ+jc?wz2F>0X!4J z*iH8Wi|^^3;KMUj&%~o%$TP6BOvWRlp|3jj8hjR2+?tNOMnRKqYdpJSJGh}oeQyDE zHY?c>JO?*?>+w8wbK61R_BK2RXmxqlx4nUW==80@I9h|R8?DE)CsCePCWtMj zrJ+u22bN90SUw`C#;jE)^-d$sET7LB(!KBj?PK{*eX_XtDBIRmupx-GEA>J~LMwv9jX9dm7F?>ktpd%=D~Q*Ob(wKF6OG zZ^qcl$MMDI`&OKJ%shOa6+NH6Aa$WG_3ZO0=UC2VmX4Zpp|d|!%kTl8ZK^(6zP*jl zIQfjxgiowD?xj?nxrUO~fO)hB;!@4I19N?KhUyobuMBUn)$Icohx>Fq`Z-n)(eHKN zMoe0;G#=_R_J045!Qp+^@z?^zeC-&=9Ao}XHA_SEK*QJQJ|Rd+T?^yVH4w{>7MQSmqaq7w28Jl^1@Z zkMzWO+G+J`#@V_KU^|?UHelXk$jkQ%Vr?9!4GrjzWqO>t8#V;7zM{rv6>M^hnVz+b zxgMXeH~;U}oVG>9iPvQ8zfSMg<9t@n{_}n4u;0)>o~x{}rRTM^=qqc3W}1H1Xvynh zILPab6S_;#vs>UtUk(kp=t?TjLpY+tz%Ee+C@Spe9JU2pLsSP&%iO> zFbHzqqhEYpZ0WZnMl)iRZ~E>z%5^}l0doD%XhJ(w8`k0+C$THQb+x3k-1vgkN+-dX(c&sweU$678E9k1%?PYSf7k1JoZAiL z<-Fd@&~rK0Ydk@$Pc*aKU!F*W+!I{a*4@}~g6C#6kK6L0-{^CI5B}r2&1tN}uJx=n z!Y)R`3Hur#W6yrga|&b5H95{{c*Rl8XB-GBC#?8d{em(}N3}cJ ztiZFqt-#AUVkP>;%HZgJx?jYV1zNsDyYL!b_nWZXvf+Xb=k?7|ZO65YRJJ>Owyz^9 z-%uvs1L4LwW^)1Ri1QTt7td9WfL?Fnc}eMGY{1tZxE@F)=ea)KtLN#ND1&{9>DIcA z3$jqX(N31H9QVBbQ@S`-*B7XpzCY3D*0EA|j&sV_X*WZk>n^B<8^IU&Z?SgW6 zu1w@LRROMdP>!qMVl_TJp1y4^td(J$^s%nhEdS^m#)<7ZUB`Hm_(3_Z)n|r0K+G^_ z7`~FDZIZnX{%5_ot_UHR(_YUO4+LuJK^gX zeXgQUB~nk8^Mb98)*;7!V}G;}>&ciS-VU$6N8c`a?R51&*~X-h4w)Y{fs z+iFW&TWL#MKX}%*^!5Myotb<0Ccyju{}(1_&dixJXU?4YxN~P_e})~TY)9XO?SCCQ z`R;UlqX}bM+$F~HUvWMc0L1rleuMmt37w2F9(r$#G;;6I^#|aJJMAI6dlEN4hG5&E5St+b+ z%w#he7eHLVW^qZ95alz?>WNIAGTo@2SdfBEaViJH7&ieTV6*5%@SUHEUHHT)L)zpK z8DE-V&P*kX%Y0yg+tp_Xz~LS{Ps)=)DwWkFT_7K+Cp)F^kw;Jqhd8F1;&qiGlmkgJ zp|GiQB?ovV2TeQ8))O`+>%t4mE0Qd+ZDgWiC^6HM46rHPYnMvmvP3SQtz8^VvMV7a zWn4;X3Z=U$V&0f4!9JEPEcGzMrzoX#GaZT)Qm}Rx_*u>zQ0W@+V7p;%iNhYp`7{S8 zn{l&~aonVu=Ry&iuTjY^;?6FaS%DKQawa42i>0;(nG>#iQ>9TE7pIsl2%Y0jolIMj zEGN^>b)|)rxCGGVjQztYu<*;!7)xDgKy*z6Du;$gNp)>9Sg8~Sj?K8q(4-L8Pcw@q zw)j`3+=Tw`2A@#`)!tYFKus-B*;3tQEDAjflX6k&a!Or2u_TrB70Ddz%BgaAM7%d9Zp@U((xMpB}qXkMh#`e0X|nvBgN8)q3y|KEjX5nR%k49 z<%Y7>JNzW;h9rtbCl-oot)6&eDqC)o4nQeXK(jl5vKnP`vGrBDD6h$5@#Z0H>Z?Rr zK5t#6pvUXO)nSG;4XFRMdHCz~jxjF-81)0VVUi)<9w65Ju(H5XW?=o5 z(yaIsyc4|dvuA1Zw!^R%+C>~qPC4B)JPN&dG$@5%BaxuhI|(#Ou|Ln7;G#H568CX){#d}>PgelociOj5Ed6chgv*jUO{ zEC87J2VoW|k{7Ei!=zx3fl^6mp$9gsDp4`dZ(7w)BX0Zv*2|%J(oOIll)vAXzsvA< z($!Rf-~1K)lfMmHDFng~twEmnv&NcVfT$=<5N|?;m13&mgoF371gU1V2!=uDKapSR zbu>`xEvPwlH*3k74CzzvC%Xw=R*l$86HuwOF$ld0$V92NGbr1*8C}4AZ$rJQ<7VuG zUvxTdmRw%}o2{A(qS=g~I<^tZQy6~c!g~wCr+CLlz781rEW3ozO=x;%C*Ue=9)ej< zDuRDvugP0UCS8hVIdOye68KI22-0|g$aP)F(wKO+`Co`YO&gOwkCYRK%(Em6z%so+ zE`>-IR6@>nmRZ0Sd?N3hR8?y2cV67c&w@F)E& zlYxzY3Tiw3uT0B2T?(zFf5<}9#4VohOMiwOtmE)zWZn(0?;f%c^@bP4o z1gGPTA>+#$Ee#HWD&s2}ogaK22AXlmne8Q5ONQ60M`$g^)5&*|7$ z@JbXV<9Qw18TW^gB@ zojgUO;oy39PE$3S9oz~1OwQD3PLMy}FnO9r^MY4G<&&>4--7(C;#rKHZvH{glHg*L zeR7sAQE8A<<;gQOIzRXzDsghIIa3O_AlS^b`DT|Czasc;)am4id4r&ff;>_TKSeG-P~$^3q+vfW!TV!ywf>20r{p|~0N& z@tPp#H=)BO0-)8-;ICm7p{I5K)g7DwlL!6g~7Fgz|=dhIE0@ zYp{;A&_;+K4lRP!9Wz2%Ai{L&tB_^b6FLnu9`=UzA#OMjdLPYYI4#6AmEmwGjG_!9 zMHGfGj3i$|a~VdOy-bQkw=)q^O++TcNOqc>k#4iZBO&ji8fHpf3I&fR^q-If9&e}v zp4$y8K^1JK8pGacW2JP#x6yr1OVI;1tU7JlB_?k%na*Y~E!E@=C|A&`r;RtKK_uuR zv+M!t;x_OxLf3<*8Itqvm|(N^E16t==q7Xdf5JP#`xX4nFqw$clgs4K_vxe6AfC5W zPVoLx{>EU=FjV+4Sy;i@O~{WwMrbzd(+tVQ3Zc)Ulfz3^C+8lkeg#h9w2b32%LtBv znlfJ0vm_%p6B1>d(7j9m#mo4nxdQy8cp2X@v1F!-m+_J+-URRMC?(zuVb&A*x@DEa z;w~Q=0O9y6@W;F|264QX|IvIDSm$ZIS$(yWiC@jtYG^#f1n+i+!{|&m$ z(pnGtUqfrkdQq&zI80PbsT@f-SkfJhHquDLR(?K=oq0L43+njG;zC%-xPsLLM;d~ zLw|>kJfUn@nm2SmEGZDW9k!YlDnsIMh}WMSGeR|xVb~01!D7&Ry^G34-*qdf(d`YW z&XN}vq0_?$CiZOMP!)-WhmrU?=?~feabW~uNc%_F<-cASK7~a)-WU>ofcL{p@UpE< z@X~4~c=_f%!Al#Q;H8~o(3TLkp()-g^JtQxYtiB`M?gtY#-)(t%7Qk8Pw{4#vf4v@ zuR>SA_zE*>H-tcf8(H}`ZU?>9g%ZvvdJ$gVcTmx3Gm8EKznIm` zoB2-4v5k|znXP@`i~-%S9!Hv-tN#wVtc57xJD!}YO;n*I%Bj(nmEPWAGjf^~dd~Fop1Yi8g&y(v`_Q6uS`>QL z<8P%X%N2Ua^7lcEoRw6nm37AQm!WgXxk;fPT7F(xk#qBZqu!9O*UuZaa>QIQ`SSXY zp>}h`UNQH=iV`X@C;Fcvu)CKHie$@ z`a3CeOrdAJ{>RZwa^ecz>GS8Ju5#KH`moRc1c^IpST|XReEu?)s8gYbeg3~u$d7(a zq&njBFM$>3^swbvStotc;B)#E`if6_keplDgIHOw`uw~JC8xhZ(ARzbpFm4F14%T$73n zvYv%zD$JZ~{s)LyMD7iC@5DEm+=c4hCDs2DsxG%&t`$K~&AQ30pfsMWZ2v}5E}D!m z%=u_ZxrIK@E>Y+^rc`ilty0H9k5q8(QiUG!`1c{N z+oXs3X&V8gSNcKO$JRe-nBBu~PCYkr%>QfBCVbE9D^#To?vKCj6M~ z(~iF8!dC!imFxHkUbf>2UUmT!ysW_~-rTw8KoGhFBAB5&V1Ay^RS?`8nu}s!jOM*% zx!3+2G-D||>&(uL2`RM3tyJiA)~AaR;_E{T3C#L53*qOKV%8I^7ix@CidhE~hV_?4 z(DJO$9A%rm1?*?%-pb@3!Vptu=N@448_;ddu2hOsUDfPGYM$@){}OgId$GbGEAI}= zEBP;S*o;P)mRIryIq)qy?^@eRZ$ePs4S&L4>Fg$fFz@QOfsU_5)5NriX|Sq^zt$A+ z_fGLbH@@xg2E0@9;rFj+aE@J~C!r{Bu2Z5ga`R@EGR*`OF5R2?Nv6pJKX1OBW(NxF zjp#If-hJmSP*}jvo3_1$3QP4b#Tel&QZK7%s4s8ULtqzbf>!X6(VUDr@GUbz zaK`6Q3%;c$7n^51k7|H_H8{?A1oZG<#dI^x7Nj#%%~wz>e8Tb8Odf5OR!XAA&WC`d|~++*v!H=ZN$;b zH4hd@kOm<6!nI1$p_>1O63sNfz&S;;h(tbxpyO0z3T;(*HIvtUPV$cksSz=M0%|jE zGQn}U$Ke{BL~(k*hoD(psW#)AL5zJ6v@V*_O!E+!n!_RrQ|F)oWWhZ{4nL7NCaFWv ztfMeFbC_s5(HqgZDs&rARi@LzC|@qJ`MpU}qrjX^O&m8Riu`xNJq~vj_I?!hGm0hq zp2H;9$66{9ZO;-vFQm@j$eF@y!HdbbXgx+I&wL5E0v3WV!Dcm;__}E_i$e(Gd(9t^ zO$iMe5v;pTgq6IY2$}K6iL*u!Pi^rRXyi)q#|MdpE1UHc1yzi8g^y(i@&HA1fEZcpFcsHPkB8LD7p-^FV7zFvk<(V z)HFOM3&5WOIR)5_Z<-}iABKk+rXajzBIE%f*F?&RlaIzJap_(N2%Kp>_Zvmo%<^TC zcNo$6>;OF97d)R`gXb0T(=?!_YxpY*o?HE*Gm3E-?f~2&iW23#?^Zuwbbf@eBDs>T z-_Mr)E^yTPIM#ZKN0x?}G>qz-02jR6E=h`%*)g^lV-Q11^BV&6Sc3v#5t_glj-Hs@<$)C2w_dX%|xC+9R}{sNXbqgK~zH zCo1Kcu|~zP?q~d+I*RgYmlcNv~mDI$jAw>cWF^P9|XKO8?2jk&_s%sS!pBEm|9 z+d4nFy+vF&t`m+CWOO|Rh4N8N{u?&Jf5STdiQ><^KG5%lyKx6Fvl&El%x^+Po*$bg z^E?b!3m(PHmwf~xXu%s12GRgYH<%{Lj>FxJ;MET425EIqk+i^kjU8FKsw|T7C7Hj@ zGA|6yVs`0LS??oERo366vWld#{w}qXf{G}T+WLp!Wx!Q+owKW}=-U_!JpYuWcOY6d ztpAlJydVd>d6Rh>@>Fd*%};~aN50bdFBO~%KE}LmQ0}8NugiQvVv0VAD9=>!zep;S zjBjV=cTDMvSSkbIKZUzDjFL&O@Ex&mFW9JF;X9%j-Vv@!+M-$rwcuHWu3}*{njp@l-D`kf9gU*nR}!N0+K-C)Y6(*KP~Ujwm|LN3bI3GV?0x7D`LnT? zWI;SB`j8a;a|lyKACjWKOk9dSBt_@X(i9FAk`GHa7X4Y_CI`&{stT{7*ASP&D||0- zRroul@C%2E49~}dHmQ~Ua7&S92pP@d+J{-pnL2M# zmX`R&90d8SZYHcai0;5MV99P5^D{^>Lk5}wOIEWnlSYM`ADDa{B;Q@=i5>%^RWrbQ z1G|zBxbS}xL9_U7ZhpY5c#(3EOoBICOv#Is^X1nNwg_H^X^T+|7P-=~e1L3?;vmBE zq+j`f-O3E4sg!Qz1L;+OE|Om51L_^y-&ni=#NlnQ=3i^T?S{L_NXocPDQAe35i`Nw z{4XYj4?~>w;PoU6ApPoJDDhqd&5}vtU)alXGgnoc;c2t@`s=xWl`!p6Om~p!O!Hr; z8nZ`DOu%#})bJ{j9h?bHGNJF`Sp6>qsd47tgmfW(ztiwMB>rj0NsVcr6?_qKne{#_ zc#QZH(5mO(1;2y1jE9d1z7Kf*{iq<%qk=(uj&-Ee^U$vCo#!65MpS2q}=IPvPHPg&P$<4b(*;D}c za;-*!JE?>m5Sy^rk1p#o;jgu$AE&IYO~ZMKL%NL)-WPjKG7tjsdsBXbq0mx#n2Wt_|n3j|+G z)ubca9ClE<*CFE@{sTcbdu^s?EuaHEM*Zx_?&2J4$Mc% z`gxJHgSg20gvh!X_}pD+Or8TC-2|#v!9+bTdNPq=^>Z}zS3L{hFB^g+uON42=!Yf! zz2qk~^_1XG12+~hDU+N5H4XiQ4yjbh{wk!`17C<=yEZ%@3jPts-*O4W{hM?@J;0UC{9V?kl$8Gv|Hl|7HgrzX zN@MUVp*T7j6`NB~MJv>@hV=p@nej3jfVJGD|2i4Lt(7u@v#EXyf&A@A^p5=5HqXzH z5Ca5Dau{w8vb!N4`>x?j^t7Izo6J$qr)Qc)sZe0Hl#JPxhVkYA;+YXBa0N7CX45qOiJ)2k1M$pkj+9f; zI%n~7wwcXMN7n#V%V@tMajw+quf;1jY5#_^>|6^}p0~t14zD4e-;!VvUY&m@VWQHv z8CHCVD^EPr%&*+M^U(W~PNA_9qag#4HpsPmsUpa)}7@JK`c{jpR20 z-I1D?)JnWrFFnOcl{vQ@Vuk#VRQm&_bOzR&$Wg73e@a%!>tHARr7&}$NudsBL0mBX zK@sXy>|`PBSsPF+0)qO!Ohb zE|fr&@~*P53Myr$`B48zFr-Rr=w-q31zYE&|r8PqC2*T6kX6^jx~ zN<4Mq|07vQ*R@RO{+BE^f1z4_>6U?kNb8tp^ag*4j0D&RV|`ACv@-$jU_aH)Z-lv%D}4HTGP z=A>h@8i=TVo} z%$46A*`fy`SS7ke4&<_nl`om{(JsZ9coKdIq=87_6l3DA>_85>5}0O8{J;+6v{V8w zGbX0MFEPnz&K@K>!PVw~WSo0i))N;Ft4jIdDV)=7*1~?g;kC~?TjvEo8DJD*X-#CgH zi^upeTZ#FP@#BycmP$Z_{{@2s{RLe;ZQX;hctJ;Z*V_EzNTGO)^{xF~J*|eD!YCMM z>u*i8b*}9lDroCn-`CY0?;j{=8z?R;oOkP-d@^V&j?B$(?O#8yU~N}VK_pUuu!4@Z zwgQCZ_w@F}^Sirx28Z%HdIsaIYr6_cBE^v+TLhJxq_Abt!i|svtP=wxLz1%huKj4d zEioz zNd7*jlQp1&(clIWF_amhs3-Vi@pkypdPJ$cJ?&i`zeY}V4VA?26S1-IM7)oe+Q3*~W z5CL7^)zdX9sI9xVjb%~&N06s8Fk($NMU%DbU!V6e5@L1X=`8(Y_QQxwK0gePm00-;Alh*K7Y4kR`S zxx)I%S$Q{h#X3awnhwfqOLX=2I0S=T>sxzJ2dq)j4EA)j^~Q89V3>gQ;0+|j^m?p& zO%n%(-`loC{7c~faN8a5-zVYkZd=kWNaT6Myu0m@iTO2!2>60Y%DZoGFZfyk(7QZ= z-N65~^^Vto?eeq(xpUiV1^JPJ9aXgj@q)ngctK4y;{MYULEN9VE(sh2_O9m+VE1jk z!#eJ1pBS$puTP9&*k6a*zh+H*Bxv0hDS?ZuuP(fM>FlD#Mb;&OL}wLc`1%;i@WN0; z{A6qUnZ4~FK@-@6n8QO6>(cj%XBE$i)Gewj=%^~#epDF#Y)oJ!%Kc2n?48r04PxK+vpn}~dIbKn{zu?{Xw#DI)-$)icE=-2 zmIO9DR*;W>tgb>y_5M!+HwCWWzJ0qDdasrYUJ?d(3WIb0XTadGP3=DkOwX@*pHve9 z;qBJi_P}&2EfB6jNMIiPkKG=4>tg)3=Wl=33I*oBzx__h;2z1~>yp7S$>0~8+F#Fq zf4em?kl1dmX@B3k^cfiA)9+jRZVw!Ev#nJHg}@a0{r9bDO6KqRSm=-4#zGGZ%ZG1k zN2&5V^Yc6N3gCMm>@TJ0(e~$NFP*(TaAg(BW2L`mZSq`czMfZ@SCe0x|7`x!SZy96 z-nTxs4XVXJ_t+1u<7ObSq#cU>64?LKOT*opik~dkeMjpe6i%yCo8M5EM&D@aGhmGE|eGga@rV z0(-2D6!WKB+N-S@o;(w>v#3Wzo8J*po)#HL`HR|$Kz7s{(Na!XQVli-Hk0pnyfpu( zH%F}7mRJLx2$>>ySojQ!Y;OM!Z-hrKetpF8RlTWjJ+HBumLzDhG1ov9M=R0dbKH{jwM=g*pSyD*C-GTPNcdbj9=dU+L ztg&cKh(g4^0A>BvM*1JseirXP0+AkT6Wh+uH{M}=YD-`xawX9_W(2(#E$&m>*w+6n zV(r-$$!9D2CorEifnC;zTi=6sCv@(yZY86g+o<>th5lpP+O5}&!0vWs56@fe?^jdi z<6G{iDX6ZuHbrWX_^^zgFKr{ErzG7=+uGS~{%$S#$>ZSq6C}B7%QFc1jp->dQ8}wA zV;1XgH8ajyV*6&@Q3LNv240Dp^Q2+6&Z$OpfYZBpv>#Ig%uKuE81W^%JKmm%_V*6< z#Nshmti<(qb#z`R(oTDRGNTWZ{zNnuUpv@gU{VrQa}!RY`Um1snJF3TV{@bS^fB7o z6K%(90B0bir#~7WO2m5xFoVIT?Y_QvPs|;H`C#jYxFU3Oa-|;`Y;+CucDE)}k{->rj$Nz&%#9Rxw=*nOa8-=3hyeq@*N1@ub_!fvQ4_6hims@x zt5~)ooU^g3C)T?$7kr_c@bv4$buG2Eq<7vCuAN(QZTPAIhOq<}rYSDD=Gt&uYtPI? zxE&nBcJ1J^XS3wjQXO4dR#&#TvN4>a=Zv|A)S8Q7GSA|YVw;~-a9C9^g}`%F1m)I{ z_;ql^S;wPgWEjN1HjKABcw*Ov2Ycc}eX!PeEG%y$EL}L~s)0Pj=GyN)u&YF;OEkkV z9amrkdD`~o3Z@;p^jB0m@7i#AYfn#aB1{VlBN|!~v3Qgb@5f#1t)(~rt8a`OUS z?8eu}V_mIL5j9qU^!)GTP<0{4nm}(VMr85H08Mq3#m80_GhvPkr z8y{qvyR46U@AU2PS1~PCc;(?Do8p`LN%Kz64y$>jJX|(g1Il{Mo3ioYYF7@@R*esn z_a`vQ-sSta|IRTx0>VE>k;%@_WAImu&nDg7)+f9>eRugkKIYEAj!T3xS$6JhWI61z zhvDbLEsNcN730&%t*csEW0(=8>x5qnfzwOvby9OQBVAIBz^MveWTDh zI?KW?ZmFk>_l;rX!-wAlb^?wn+e+12W5YY*Ok*_xyDE>d)k_!_|7I_M^H7bZQE%g6 zc=9A@H9;X9QU?gxX~CaH7!!YzQyBPsIKNTsBtUepzYC196NVF@|Rx`ibvzjV47l7!zMk(yvW98w1fkBdJk4oR!v zkeYzerm%u0CghaKEh0%d z{M(gB|0%(jODmx>w*#qmh6lrg5`dfLA59i9lz%(vD68b*3;?Mpy!W zsSCI1m~IFTRzR=?j#fa(DW1C=Bprr>stFhk(QHP$f$meWhn!ePT_iptv8xG=!XcY< zLe3K1*^u-dI9pwI2Ba&2V|xXdFUhtB2sxQ_vmj|693&;E5br9R5vf;6&}xDh9ApU+ z?iYWu;ghrv4vYvG?Xs?9Yy)G5Bz8H$Zt*q{@PGNpEQQ0*Q4<{0!GvUoU|a0dNX3+c>|CGuMCcw`X8d_{s*6TAvXbrSNu!L1OI zo`M5Ig0pa=jhZA3Hw|Z0BNs0m?3^GVOt)qd4vRloUnDJov$@i*X&h@OO(qhXfc@Ye8517%s2a7;Q;9Mdn2^&aAJ}x6l z#x^Enoq;MD+mwuTs+6$@kT0u_keO3NTL^|zmMvLn{4Ff(3-nepleya#pW$q<{>swC~rp#8`QS{-83QneHfIwiw5@F^T#g15w5 zPoQLR?1Z;(h2c;;odDg+YjaEkN(#g#2^(?{vPOk6A61QxoiKy_Qg^Efc)O=C|Mjk;Y|$Z;7~giNL~d8ubulD z#E=3(Nx}v%h~_Io=A)|7Ny7~Is>&eMP6$)sU?-=< zv=Ty!M8R#*7)}u{RG>bU&P%A%1zhR8u5^y|FuzijE1#9+cTQoQ8^ETRMh#-ymr3AFgAZT0NZA}9MUW<{!Gh)ugENqY+{I{JXu zMXN(>T2?IOM~&Jwgvz_1#pbSQWWNgD(gcyoVGeAsv?KI@NTY^>- z?1e*F(h0e)>MjdOPr!lwS%6eT!|P_m(?FPx5-_preTQha1g$10h2!u+$Yoh~HY6>C z18)LGyBc^cf(}XSa-Qv%16sy%`}CY^vUmVQ2ZgZyFu)PzwWaL?IwV02I{|i$jAaJo z4tC6d++CdaBUW*4I12Bvk!b@UPLl);VSsG$I$Ej)+N@$@0G%UaS=L<=w3=Wy9JG{1 z$i->5mPmR8&Q$}+pa#2`O!byfttL1FN3|1j72C~_qs-o`XXP3A{qsOpq$x27(e5x(|Sd z|IqJ}>FeTcAYk^c-Z+S$`EVX%XbT~!A>A4~(>xvKG6Hfa5iY9<=EJcf3Hdd~T{e>T z!J!nZ5S4&)6^OAbCANWpM`Mr;Px8$d!WJIrYgS$+=P?zR9Hb{Pf=Ewdcu7xUcu7x* zTxmLyhOzDBT$Bk4gnFd{fD-sJ|UNa^Z|&LM^lgqcpPV>f3J^P!5hg?I%h`M3<> z41(SnNyS`vR1nizf?7C;8YJYWvJs*Je;CfSE<=)|611A&7#vb(6PAWYrY7l0ILJ@H zXw$gK7M8I*V*}m;3El2*Y% zFoIR$Z6+Y4%dUtfBxp6k7C7=G+$;VhPm&J9fhPf@UDZJJVF_AIun!K5yo86upJYV* zFdV9f;Fv^j4HEJTp}TrWdJ>Kb26#)nEoq=4rK=oC!Uht)Dum4huZy>V;2jmpJL|+Yq#}mdqdYpP z{&JXYw|2JyXcP#nPliN*(nWg3e0X#&ZCMN^5K4LnlFt9YmH@ zLbaNp8II;j$Pc~l5|cCr2Vn@h#oJ6Uq(XN9>{6i*12DbIev`=?m|Vp=axg6&nC}H( zdU%fjC_<;u2?UYQWAtw!BqgNmvkOG>lW?d)g4ZQ_YnYIS|J(&4>05Bfh=9>9gHOgb zFxD%vO~U{WE3chn8qjnJswW_Y%Mt=kkW>B4=!j6QCO8HMoo5sBL%3T+lD-ZH5eZI< zx0&EW6?!Ba4B(*Xvj9x*(s?p@1CyVUG%W;Y#oIuTC&^oOI-FX_>70Z%5GbZjRWVCC z$n*{XiQ&ye&SA;DegS|=Ag6s4Izf)vGdG?X zM5Pn(LKbK=NXSEjZjBxXeiF_#9+_T}@Tr`uPOG)HXiBT`}9>eICkuH8>cWkb%J{0*gZRt!1m9C+^v|vUO;STjm4v~YnA&!v8fS9vy2s( zvq@}MPqZIfZR2t&V%I=4*5BKQouk;CiSR^R?lDwoqBqJEa^>J!Yyn(1*rx&xP1C$U zQB}2cX;YKjgXc(vV7&{KcgQ7WYVVK7<$5=VQbKr(n-C?_%?nE*A(IwDZGsg6??s$V zt^}10vJ&?`;x4?em^Y36UptF=9oPT4yO@_!DT4EMCG%1y_YPxTEaci{%-e(98;yAx zPf{t#Lh~*iNAp^Nyko|_Z`j$G9Lja=EOxe+8ob8jyv@nHi{v7^lX>xnv%%S&kzBiR z-WKKW=D9^@LY_I3yB^wl`!+@8;GW#WkSrjt6X=b&jFtgUxdXU)S#AtS_$|VI+~Mi2@Z(skJPG$I9M`1n#~uC-;_N3o4Lv_x2^`l9?Z+Kn?+QPX zfq@3@IGn7Z=>+cZQ;4%4-u83`E-#2Y;CO$s0cbygDR?`DE|$iZ6aDbLgEy7L;JV@X?y(BaemLcS1MU=DcGwPuOu)~=eFztHh4W&9m2j)r z*}&P)#lkbu=h#CghcWy4{~NvrX}jSPa9dn_E*4%38pid(F^&CPES%#Z57O^}dl-&m z;!ZgG!4cR&oOHm@vz8}c4KxmR8;fJ>7MB|XUALi|Hxixr%i$)vxQxetW$%Aud30e} zQ>C=GrOPVjs3x|ydoUgy=yeb>*XfF=zU{b?Av$3+a67{L7u@5tkcztoLJYylg6lVS`de`n66qxHA`PxiLQ2<e~5U8_kwmo?o~R~~I@ zE^BPY>5-n;h!QkaE?!z$*Q}%6)zj2mSs$%fR#$2C46es-nhxN+H%=g_11MCu(z0kr z)k;f!Wuq!13thXcyhdTp@FMdb$lX%CR2_k~D+VW!TB)mMwhvX2%Fxdnilc3V{XDre zxW31TZm{d-yitvcb8;~jLm0Tq<&}E0vPWF%D%#POR2~`+Yj4P|z2tZsv{tmTlb zBie!&U|A&SYFmo_Xec?{vt>u4J$<-ctGlZX>m+UVlOvYVR9%W5kP6nJfKFAiPxpkn%?t{x;g+0)Yk z);C0r;q*K5EV^1M0C!ZZL%XzR4oTIsDMayW9~YU-scseBEJSC2L9G-;QLuqxDoz>f zfD!9mPaBg{Kt?C-Y%o;UsXGg|>7%)_QJ{-J4M&Bufj(kA4No8Er}1^e{1W|`xfP14 z&{J10s&<;dKw>FoV9V467UgBtjmx5Cb z-9lTKb4H`}jg`&KH$@k<)RnV0jzV)%G{rpzy8hlxGU7eG5id0>XbRuNLp@r7pA8*%X(Ssg_sSQc9Oqxr78#K)B59Qz_lr#SRp4M)(FzgWDDwbh3Tf3}r1h2-*hL%dy zf|S^3>+b4H_Ub$}#<8ZoYY0qb1YOivhLJ5QePDH6OEVh8VqN53%G47Q>v5Qq0B|=J*=OTW&}5(D?xfWeLAnsA4PsZ_w7t8v19CfAX&eTC$=8UNCKhLI6#awrxvc|j(5b;c=!~L$y#uOF+;gMF z73>(gdfIzc2ZkS_XBRGlD*YF06-Nh(qz`g+m^7#Aa_Kh>%*5E|p@_DfMa!$o>M%KK zYAG*=5{&3z&)`5jR;>GFnFUbbtD~yWp;l9UMkGuwu~0sW;9CtD3~TK^lvUZ^ zF0GiGG-db7k}R#bJD1AFMk)!~pQpN#<#LP6h)$yxy<=VZO(XhH-RVYq+uLy~k71v1 z9?%oZ|Gx(i1iN^uvadSDK;-Y!d*uALC6Aqu@g(x)fQbZ<2xp* zoZE_CmQ~oMh`Oy*N2}FXhQ$XKr8ElDLKo|5<1#g-7M(7^9)aZsAB@CqtyI@7T4sz` zDC6YIJvAMO%9(1P#fBd3F0dk}77}E%;|)t{g1)q}qPi?96@gx`sj0ed zakRd+WpOpSe62C|P?V2@XGP<(dU@kfvq_fs8dlvvLifyz%Q?}Ba;YVTw=s5ox{peB z%JYyQvCi(woxb`SSEH@3ExQS#jL^%9vc@`wMe8xu>1ETbh~vhsu09#GI--M#_R{FU zx~@KBDA~`l&MvaT!i$%BFmA+T!aDM$Na{tzbWbudwK{*ajP`cNY)c%u!lS0LPKO#r z!-;Wfh|8=oq2#0hZ$B8urGIo!sqK$daCW$2Ba*G0Z4$W%BM@56g-ho1Se$za6eWCt3Ewh#8S;niAJ z#8k%vvG9&Ag z)USCm6;rBFgO1(#mdoo}?J~S8$Xh*cei*SZnrt(itZ|mYyR~q+#DIEz!UR(_Q8tzp zYMgf_hJ3M57PF|fY%$)4%Uc?o`09Vbwt<`EWacepQLn$cFVmIp>b;w)%8ED!>PfFL zdZNwO6SQwsRgnV43d~WUM1i^brBf}844^D%OtEzp`dTn*HTgCvJsDOQ@FoR%&JuWo zT@)|%(f*FL6b7xpo_Hp$zrL)csj`9-KNuu>TQwmOX3nPz_Ooia{k$7O>~t7J5};v%MafiDT1boIB1@yevudD)GwC;NW9W56)&u_T7dl+_ez|7;d& z){V@IFmm)`W)i;@ETJ%&6{*>o(+rd4(_=_9x`7vfz`l&d)fk?!Y}LJ~rH6}CYFu&K zcvM~>Ms%x9&5bSP&FDY$OvxVRN>sn#{^Ed|U|Yh9LbOdL-5q_s(kH6UMNjx-QeJJp zJgV0XyzBK*y<%GSs3}E(+Ld0DUtip>OR`EJ6KnMnrYlRP647S6z1#O+(5`e-8R+Ic zDr$N+%7PN>%DNr3w|B+6u@n<^y-K*-d08FiPOdrC!j?sgDjPWraS_Yasg7)#t`xHD zgF3)s5e#c-FBUbr;{Eb6spl~e&snKM^TDhJBd7G#Bbbh!Jh&n2pAJv^%cohsn?ugr(N_S)7qe#n!>F)X6? z_9xiLkx=z7dM%5WIU=$o^3v+qk@^sv z{C@1twyeIs7Gt_BC&#)5`np>;shW}%KDJzp@3?sgWy6Yr%FXT!F7kO(&qmPJHYE57 z%$_va-2jZ3waNJhm)X^js9rkt3bJa)O;|ImQcH$La>(q&ORPb&Kn+M2b^dir&csL> zA27}##cyXPra9shdUBqm`$G=U_PUFH-&l(!aI9}~4V*1QCf76#rqydA=ws2p$~z%C zPJHg90y=bw)V$;wrc+V3)+2g*U=m0Jn zVyA;fNc+b~iDuG+S8ep&c+=LMq<){AH}ZY5L%KOtqZhd^i)_xHl-4cdLKr@0)~cz1 z^IlzDfo?{P2F2&iF6y{E-tSu1O}5d-%Cd@^WFn|ny&UBw&7v{h*S(2v_WfGL%JxTe zqnP${b~j={+n!vgTTE3qh+aZEH+^xcnnhgXKC$F9mh*e*HrUIEWjh-sq~g`w-*B&c z3z>Wn!aCeWu61*5R;__K_C&r;!{uAJ5$_x5Li-kz<1mNr&uuIi)+@`F%351XlbE8j z@+{57xK&LFU5gv?;yH3ESUmS?7?<3xiZ&VFpgvi!Z0Nx8H`)PXMn@3u$9EK&zhfOz zKHR{J)OrS@+Y3eAjcsadkU_aKE+0QI(Sgl(a0yb1&b1q3ae4W*;T(Lt$<^O(%JB8v zXyuK_hKWrGhOc~CBR=rtmz5g+v17^t=2*{V-gGm=oNNWnDP{=2S#!C^hzx96kDdlF z(XU{q?dy+sM`VR5B3g*7#gbe^y}h-r#k=p`IxJraL4R+A zO}E>QX4XZK5;r%Q?bw-t*d5n5xRwI|WJ%`UD%)%v@kU}`Z$xm{G_MmjBDiEL9)a5O z(E>1VMamkNMzGS|-?dg|$o6N{|96P*&DeA#=emWs6n{^VC@ET{L*l2(=oc3eK)gi#m@8J|v z%0+(Eht2O6_?ZU#G~_wB4j;g6CJ3>M^ilX3Z0jYw{=#}`2aP-5{jPi|rk(Fr&94}c zPagQ~u!R6lI_9@qLjZXW_2Pp(6`~(ozFolG`5r{Rr@)Wp#X&BpHUBe8g1Ur%oTS4es{jR#wYcBDdOz%9&@FE*Ld_H!wA!(A3Lw3z}@`z zfFJjjupBsm=kWVJ{B|06jTgZ0b(j9^xHmN&?Um1Gpn$i@Oh2TfJFTG(Hnx4uFmPti zd2D{~BE|rZ?b{y$kX7BKzj%=GE?YBU8sm%nq?Im;-&sg&UHvCLb z8<8GF9Q8~+QFm^B^-$F2u?W|EMC>uIsqsX7}IgXGjp4S7ZN5vm=;pETTc--;(9L1>gyy(Rp zzs4zsDQ$)quT+4*gZ#;lxO!B6L8q81KJ3CNZ}$De||*|;R7!O5f2 z=cFfb#`CnSdQ|*wXTz7`&l8;P_@PNjoauRHQavht8aIW>qtf%Rqm8qCea?n470)w$ z?)WNfxV3Te=NUB{XZqJ&IOBOhOg$?96HdRO`12r@J3eh%5@&jzOHz+Yzs1>*rqc6V zjypcgL0=vfU*f_k-#!;k{yfm49>sqZjZ7Yup2sI_oauMDaHi+M0`;i$C08bK##gv- zra$V!8P7fM>QU+UWhHTu&xJF6#Z@EYxer@CD*Y=i+>Rl%jIoA2PO9*+a@`vJG!YZ= z%K=&4+?Yw69WSS>tODY91G4SWWQgwv?1rO>6Mr6X2##_Re;sfKoE`rj{JY_3vW!nP zu|X4lj!DF40O#1n{+##%;IF`M=XW#k)4*+cWsZR`oBm$-)8VK$rau6GCY+uA8}OIF zajz!hd0SZp98Hw?2k@_fv-u&|c`THQKSKL z0Y7G=h_3@q{i|o3(G2{ojUxVL;2*m1HNc@r{fsl(fd^c8H*nUudd3<3z|&m#5b$gl zz72S@3+LQ!l?%Tcc()7R4Sd*ze;W7>7ydBty)OK5;19d-1HgHkoh{#&fxqg)4+DS8 zg+BxQtP4K|JOF2>e-Zw$3qJ|}0vG;6_<8G`P0zU(H$2<;FW~3qXB&SD{!SM@(jL9W zADlR*@ET_|?geH7p9B-7-^NL0KbDNvHpc!UEs4NqNvlW(S<-6VxHAw*pe3!;9nYR6 z`B>5_-S`w^o^C>61YZV;%Yf5gq47H4G5E7J&R-GR2|vR~zZUoz_-*=)!0m^nxeGYw zJA2?K{bRt71Gm$E1$Yj0wnoQ)1GxP#{r5-VzXZM$^qfFY+tw*cRdc&2513^=brv+;i5yx5FwkntZImHr;! zoFB1IVf^Pt#Xn0N^PgcI|0Cd>4^?P>zaK^KMPBwp8Lk+G&mDy)=Wa^o)=}|WM&Y|h z;rmA6UmS&hZ4~~)QTW@V@Uy@aaHXJjF?;4f^w1@1554UmQjM%~AN9qwqff=X}t%{|`pR z`%$-H43?d`enZaOSCu~tIOl^ab^ddJ^InE6n!aij{i;!T?ni zZWR8bQTT6wbAGy8%lpBocpsIkAKL4sz~yEH_*oxUj*8C(&iN|GB*rfo72gb;^VOJ+ z|0r#Hwu3UIOnUwn*K|p;=eHp|LG|FgHd<@FS4a!IL(hg^ve0}4vkND zEfTQ&vw`=4K1auw0^bW9RV?LQ1pE+i&e2%@x>4!*^Sky#e*E!M&Yx|5w~vbF?{;$j zd3vf z^s2pCMu*1Hgwg&m+UieW*{w!4b_cn(!|G3ua;E3aDCh?V2>H`GSv7M2up z`@wlzZ4onPF7_8)IHu@gX^Qz7C2g^!Eta%%B<&nYi#iA897#Jz($0~zb0qB? zrd4)Zq(1)0MwIh5YD7w|x#pUylizbLNC5W9PqQPwNy?!b=VOrmifjLZi+jUmG%DXr zqTR8s4cLm}5=pisxegkQ{8Dv+&4V_pF0ewyD!xR>S3YUj8)KZa9Vgh@{@CA_@gld;9!~uw9ix%N*M6|hVVQr;rQ*?5F4$gt_1hB9Z1qlb@wq?%=`inGH!3RSoAR~B)8TK!_8oVfl!614Frc$h%#WLLkb;tIfq*r?tz zr1nZEItC}tw5c$h?9#uMq;T%1&>Q6Seme-QH!F6vLTAu72*0`?9fT{>SWkY>_&xcGP1iD2aEV~IO;p>#eTc#B3lo{!tCE| z!uReDd`EVl#dU2{?MSSH0bn1weDrkH#`)oTW2^f^CwC$`zXT<|lA1TDH znvIBa(7`@@;gro@HUTr%^10}w!7)m<-z0Zm+goxI{rzp7{otJ3p?luhayCz#p1J6W zBwPL|uw(5&KCtx*FkNli3`)j17*!F|nRNR5mHFD29w7d+e zQ6ztti<<-GSi4pvdV+X6w^rFW&Qh_y&ObD2+k^gLFA8T@<3)CkurIWC53A#Gn;;=t zwQV}wuLS+!R1KBDUB9gz$Xpwkn`^Q}=N)Uoi86ed@9jo+s5Vxgf12Lu)t&0$u9}PN z=tk>5|GfNs%t5Cfpcf>pB)JO1cLHH=> zG|qQjraPx$5R+fxB^oXud<=7H!pE_Ghj-Vh`|(ZyIOTI#zXS}f#k!Ub=l2?h*D|~f z>uU^u0te1DJgVV2Lh$1|Hu;rkSV8zjtb-9E9WOQ~Oz3#tiq81mI-IwhGoIglnC~&b zU<~i^gmLJLupQs|0H=Nl?`LBaDknm}|>k%G-e1!P!xQp-^yr&aBi*ggn_ zL1zA|2$4T;O=kYQIhpzM5@zPVgAng%U(k0g_kH$FTD4cdf`RH)C+G3re1hcF!jPqhpCq}gwV?|LhyZ^ zkon`oJ@X4|SV)NQ1sYZnLN6-`p_fiV=w$~X^zsTJ%SDKEsrY^;{0LG0972@8mJoEj z?wEAD2$AnTjUU(X{NBv+o&{uiKO{tXc?kr|%X?*6US4U-^6n! z^3J~$5c$Rkk>3st_iK1u!;^$4=Np75=NUqjGjJIo$~i;`KKls4=MW*v@ruUZ(U8l& z3=b26u7nVJm`?~j3=x9QK^=cm!#4<#?wrOm(}5#>At3cp0!V$75<(wa7!N-C2|;(9 z5b592_*spoXQ=pWLd16yehcsPgeVukmx_G>hF*ky0S3F!FA*ZYeT1E8mw;1Gpgj^k ziFQ8;@H?AvDC7s6dJ=jk1fKxb z*~o|AW0^i3FxUe}i1e9+>!DY`sV}3w5Tc(<5PlK)5IzC^8t&2YymglGhjsW-4d2k= zr!{_-5d2buiatmPeqjyg6C%D|$FI`iyfl_{{7y`{6M(^9)H`7x^gwtkoceRv z3nBROQdPo}gwLq&-sJNJ@X#CRF94~Rw+O-KG~q_n_f*jT40PTY%(*jX=FY$_?=zs?9FXna z1MGnK-qf&{Pon*cz>Xi|dx87}<&g(54w3&te*$S|E0}#5zK_8UpTZC7<>+VB+u#S- z@iX*q68;<(6C=>{OB_og-3swN@(}u;_#^oh+VLctFGcK4qFzNJ?}MOUb3oQ-K6wf1 zLH-);2zLAi^#Pe~1H)HfKWF%N*iXr?u|JR)M-GwS!*3G)CUyaTK)aDBm-kK3&LA** zCH7AeO1WHoq;&)7pQvR8hZ}| z*;cwe8L;a!7M~UQQYn_lYqsRqqMK+n&%YUdqL?e5 zDHe+7ioEv9^h?Ec;`QPm#e2oa#NFaMV&^v24j%|ed*;1O;Be_8k=H&M&+~QiVsV{# zoycpPjDJGhExsduBz`TrNj80o$ZML+-$m>r4i?9XGsQBoL0lzn6mJ#p7k7$##1F*J z#lvE9vh|~b*i#%VjuS5s8^p`S>%=|c-^7o_Z^Zz<&{$v2ACM=AgT;|zk$ApXDPAnD z6R#7uiVui8#XaKR#J%Fb#UI4DRO?SzJW0$KCyD2Y4dSoFOU1R~dU2z8gSbV!UA#wp zP<&i`MtnhhP2@ZX+ikCSP&_35C~}^J=@P|Ev4hxE>@D^e$B32UrQ%v~y~wvT(f$_k zQ}K}ay?9s*VqS#l+lk%931WpJ}f>fz9oJrelNQ1RKD0z>?ximjuNMeC1SO>T)aa3Nc>bhBz`acEcU=W8vX7s z4izVgoUdbixmYV+B3>!pDBdA*o{sr;im!_AiwDJ@#5kN-GJU3aqL?cV7DtIw#S*bv zTrO@BIqyfi_ll2+&xvn||0Hov^r83(xgPWC;?E@PBz3TCOCo)Hu``MExnh43>CcoN zEn@e?ak1NWUPys_^~d=OprfC4NVu z{9hEGi1|M1R1$u46uXef*In#IB3*yQpD8_Dx={LTY0gJ7{{pd6@ePXqwKQMH#B#5a z-YES$>071m6*-T|^qj|}ea>T&oX4bp`$hiVkm~Mtn~3dldgS>3>T9Tl`6EgZWj~uY=f)guR|(9}@nYs`vuw zQPRcY9I;a5d#7mk8u11ac7G@So`l^y75|X*W75w`zbO5-^amvR+jk`F{YPwrd0Cd1 zNg}+h*q%f=T@>F(n)mxM{SXrA3&fF%pQ!j*(oyLPNu;k9>lD9C@oS|y-%R_QZzlhs zaLzMR|4Dj>^z-5y3V&DnLlWhEB61#@`Tt9zUQWd7WD+`)Wc|esitjG=C6R8h^e7VP z$B7daKSS{)(q+;YNiULKDQ*yNCSk8p+)ARndlbJz`bp{C(yvJWRXiYmC;m*ru6vSY z90|K=B-*3B^a;{ErE{eROOFw!i{~i5RQdwx2I-5X*NE3B{5lf-aErq4lHM-;I0^q= z5sQMMbO^=jTbj$B6mbkciKcZZDl9-BX(L_e?)REEZ=fey()6bglGa z>Gje#i@#U+-O~4ysOMt}e@^-(>32w!|FQTVg@?K#9Q8~lQI9YgzMQhKuV`Qk#cR`JWFS4yv!{;f2xGqAiz#3vN~y!6W?>iM?9_ep;&{S}G)ZjNOZ ziF%z#qMqHQb4k>*pLi;Xd_xsKUV5_hInq(-3#6BdeDMPFuUGtL>EB6jlfFm#FVb&_ z?<#!1^d}_hc}U@hrQL1_M}1OAl-EhjQ~2p5>N!lB*I8IkUS}bBorU?%R{T8a1=4jS z@-LOXLcBrTO2W=I@op0K9#Z_DrFTicD*dMP2htx(e@UXAKS~F?Tb)Rvp2v}}f0B3_ ziSo}73rVD#Ny6{*rArlGAuc3gXOZGpNUxT@TKf0WcayO9C+Vk1l>3bM90_}S6#rN0 z52U}7{z*FSWSc&TguiX2J4knv?j=1?`gG~h;uM9?AmPtB;ylIIkZ8}P(rXldxp=k0 zZxU}OQIC72A0uJ+De)P_zohtgr2j7cvGl*Ce-Pt)zz*u!PV7R$Zg;U4iE{fZ{!HoN z(uLAfq-RT)NLNZ*)jncP^_mC*}0qIAjpCZvt&nx^568^j^y|I*ESLN%~|G=}!^!NZ1{u_~FuHq~}PNO4mp?NUtDae~t8JajSU0_@wx<_$~=Q z{x1HLgdYbL|F!fF(rzysA5WrQnbOBgpCsK~x}SKa!iP&2lPGtFSgG*Ejl{g(9KN!Z^j{fYEv;vq3~3es^qlH)NyCw&r$ z{N2Q!B>d~A_#x86q$fxhNuMh{NBTnP8tGq2uaLf4ypBY6fHmCz1bc@e_rAPNJSalBnkq>7?E^eVTY23A-Ihr0*u(OM0O6C~>^Pr%RtBT_#?n z@I}%q#q}io*eHFQ_<;Db_#TP+{6pMJ!oSZ+w8t+B5A?C=(!}G$jwI^Qom`LmPoxKv zA)HT0PasjwWN|9F9{2r_$X_OXp>%`v#nP*!FO%LRZV~Sk9}-^>-y%_uze;~3ekmSS zyqjzNNG8|gJeP#OSz>#|_Y?;ze6V;XiF~6KKSlZ?>E$HsT`I0t{8fs-LHZHtr%0rK zMtn~3dldf<@n7PPVldCXu+x~FuW^ywt(Gfa9SiTX?tr<2HkzTzvStE87oUm|^(^i|R~NZ%rTxA+K&a-WiZ zP5h_$F$q6D6~7?i#}A5k`&ykQhDp@-MDY~yR1*2lkRB~PLHb-02-$Kp?7yZ$!c$>InS=_iq>_jKtJ67?<>D@fFP5s7lw zD*OuZdhsT4D+#;zk;wOu^fM&J(>Dg#_`Txi;!k42K*T?X^A{3!+LJ$Hep&hq@)vBE zAP7JC36!Ay$t!VB7m08T`$nUC8C@hjO?rWJrSvN4b<#IWH%jl6-X*!p`SUn$LJYB2wH=?A4>mVQn8Tj?LAv*K;}*(CCt`;}0?0_g>cuapLy0RDK)P(NE# zF~1bQVa4x$FU+mZi$wbN8-!n7G_KFTvQeLu*Cy_F<}~heS2XT>@FJTJ zXI393)Lgw6-7Lw;zwUtJO#P5`b@DeJ2s%akQn`+85ift7f};Jf+hIxOmIF&pVqMpw zu4_%1p-AJt0Mcc@Hevsv%bq;wZ7VNtR>6kY_Vemz(x45|k2*M!#t*+h`~1)O(0|~| zr?G8O(6}$dQ5mp_O9UOfa$;!^{`HX~xOz98WhQyyEz4|V-^sZC6WYsnR_youd>eUN zrgh2l;`==vix|o-F?UtLAjNKsEeGP~ zT)mguHs(`}`XAcH_J?ba*&n=i^ZLUO^oJp)KdeE2ShF{haj9uD+V=WGhI6fL3vF-q z?H_#GI{|6w+yAMbe1(0j_lgN{zV^7iLVt+pS&&dmNC+vez(NeIg+ zny{Z?ab8<702HOJd_wPd}vlIO4^2I@)$3FLA2HOc^H0#kRV?u0v`5yf{ zduPW3oeDZ0$U%O#>CO`y_w9-{?z_3mU-ljePL^hdNNH-lb6o_-#+#? zJ{A}sS0BU2UH_wxZb9Qd2W?pM|JsJww>XXtz;@&~z4dh!{`)=f$KJKfYjk1Ob0 zu%5`avH9?LBvS{|8}Pg%PtYcwF=UdehyhI!_rWmfxbT1!wk4iH70U;CT9X`_!d~Ny z!s$1THt`9$=i!XbosLdfhHb|Wf0EBnAQZ=Ug#=&67!`WwG=zjg33X_(kQ@IU(uUl` zyO1;#h|5GF!OsyC*YkWP3naL(7o3QlFm3=xp-^I65k|G(RVXWN;7Svcz{gewZ-pCi z!)ZJ&lmLr&nz+yioWK zd&HlL?_YYm6C(HnT#m=1udsR*N{b&HU>!oCK`j3QR4)GXTNt^T=_cOB)e1z#PwIt$ zgb;s;m6#AZ4QS(zz~7`S{6WMx6T*k}nh-DeUK7bQ!GRb863$=)1Ybq#By2E#zY4z- zt|>!;gb?eL%s;<_Oxc8$u2$dU=@XscDl}bU_Z1_z*8ZMwgJfV2{{M`D}q zUt>Kz9+7Q&vE)EkCw&Fj<`hN*x`t5HQ&>v~(QYU))DuZFGSC`H)$U~|HKPsJ>)g&j z=7~s?4KW5HeI7Pqa&;V5X_Q4IFJoAsYoe1e9=$TD-kplr<3=Nwn-M}ilNPz9v=fEl z5X4G|F!Ll`?#hspF%NY}THIXI3g3iQPI@wU#K^=jf9H_2GnkCc9q5`8=Cnc5)4_H| zW`yg|!b#5rS@A&EtnhcN*0Zvl9X<;-lAe?75Plh3HR<^v8Wo8$P<(m|n9e#+l*%JE7#CF0)KO43)9%2Fa1^U87 z#)W9Jq{r;~tF)C9WY5mn!czO&^^*~hG(4DxpoGvs{B7foX0-XEU4UCQAykauEN+rE z?mVX89|UKbNdC~Rjk|*3=8q!RARx=8sK#nrmlj!DlM1=7F`=yRa||_xKcm}5at(>t zLlZ)Oj3s52Z85EqzJaLY6O(J%58GXW7D}$$1sm=7@Yv*fCT|yJXv3piJr%oE@}j?S zbvi1RyttIBUtlXFFImjhsc9Vmkz!(!@=rO2E1A+x0J*zUQT`mN_KQ>Ol4e)rckWC}|C(H4~G z1pkAkNPYBiTHuV^$kay{qS3Zltpwvl{+2PG7G_}|rYD{$spGeEoUA8xB z9_9ntQ)el0PWTHZp6$*yu{bJP!jhg?0?TQ9bZ=tn6D%~`i^(cnZaF&79VPVwvj^D$ z`wk>(JHrZDu!Oxx@>}xdF4&EhklP4Lw zlrY9tO$ae<8+R~MG?h$=IF_9d!r+e-tiMemk47ONnccqBqTi5sK=E&qHgZhb6J?&~E8jk}2UuOx#v7Bm6zg zrXMev6)vUac9PlQedw3z*^-^Y@1nr;_L7nCPV7qQ9VK(ZVV2uTvPbwt^r-aClD)(H z6?FQEuKAH+*ZlBSdUcY^ccuio4hZvEOX*!zqe0DDHI~POA7kGB?lne^4d>IzAugXs9OzmUzJqy3 zxwo0Tv%=dcM@!BQKSDW1a!&Xu%CVC3!_QKVb9f(cuAvqz**WyQya(uN%A`J7-4k7Z9BG4p%dJe~a~S4!&(O z7P;Il*rU3E8H?Sw(RSG1onSmX&B#4MV})?j4W7n;$r*@Gy8so<%9zZrXlv#!_bDWd znYr8jyD^jD1mD0)#uOfHq+W|ZZtwya%Xn!f)_L*Q>5=i$Q&_iVrUc@!9y3!M*k@!` zcp17~#?-(Zvk9}q`Sf*KV3%pCPT^iCJ7c z7RucCTVr8l`jw2^w9Tlo>2D!<=Cv;vRhZ77d}dz97ssGer{h%C$-Mq&qoz5*3$U#+ zPj~_uQh&oL2YG=hv*#-;d^`donLTrn!&dE%W>ve>{I(HQn}}x1yemC}1!Sc2iD{X4 zM@<1)>HJ-L<~@5%`)6CH@3j@}18b8 z4I4K${ch~AnQz)&SeSk-H_ux(uE+@nxw+3Aiel3ONEgXGlMfNIt#H#PXcum7)0u7# z+S)k5^O@(YI_5bQ%{MFatgD#Ebdg5(MdZOrAPX9L17cDKVATzdp~u7TWVXv;Au)6K zo6L418*Zz0&q?PVmwB62At!i%Mn-%jmkVoN}Go5q?$3Z3*rIOmM3!>tNCxnT&&>{Hu3{f*{~P$` zwCDJZLp8qPBy;U}geQc!Pb7rcITJ#KaM^xs@wsV9{DV-oT|#IXL|d1(xO;eUn@#8* zr2C5(n#46^c*YpM7ov^Jy~bqmBKMf!A7a5=LmqxFCxkwRNC+MU103L?1f79kJ!kWQasuX4Kt zT&8TqatfAfkm7`g*>+t5T%Un3q-S3`aXYLBX1eYk1O;~?GV(iYk-!X>>nC-&8e23l z%X~XA%Zmu?a2b+zb(gWA+<-Z~Y(z*7?AL?SGqHX>((&Ww2abd8b_aC#tq9nG<>ZG= zY>$IjXRdst=s6tQ&+QlB;n5a^JG~a6-Q2tYONlV(;Zx31)JGzmK&prnOFY*;-w$Lw5HJlg&Bh2Q))4-5hW*|0*mz za(_Q&Bb_$7BiP#LE6_aGr= zw;trqho*MDwqB3WU|UlTt2Ywc{~6@s&ya0fw`Dthj-cL~FoFcz(#_+M(l*-|(`>f7 zV~v#oi0gG3JaWgmW*EI@R(LTqK)vNGKn{uUNnp|-409i**L zTUKZdq^(d}Uxngrg(9%wobn865FF#~!a6GxLWTLvngZ-PcAJgiHv1cbdh>icIHnXS ze}uG^xY^|7fnhIhQulXWC31HnT^_7hkH^sCy!Y_OdOL>Rj=*BQ9Yb$tKw59d_`Ln3 zooW68WJMQyosBxl6iQcle)MZ(+Z%It65YKMLDt<#baywTb@u_2(?LaZ4)#~$7e+ek-z56i9n$(Y$>-m0>)#xhb53~#e}Y5ZQh=^i!rRHnbyZuhHHVr# z071QXV`L5v-NlrU*1a_*=X21uHP@;&=j2A<*>YI1tvR$CvgHkmc{`Neet>M&+oAN9 zPr$L>4)uAv-+H?W`O%u+a^#q43Z<)j2uugKefsg9yEEzTCmIK7hQe@*fmv#4b zlk+C%F076FhH2eg-ow-rCakYBjjs!0zRskte?lJX>rDFk9HjMirq9>I*4M4p*H@4x zSZqq9pATaB53kk;3oCT9(__4R4%>k9bwcFfme<10rb+Y5^6 z>pJAIz82Hhn;@;P#Xeu(x4!POzTSW|!DO?q)6YUQGf!yOAW`qXAt0DcOJ5?WH;;RR z$vo~&MMTf zDYD5w`o@{}i;?Y5^smXG+Yn^WjhNekBR0c zG|`=$tj}W6W{s1sr=EwBGe72;yB%Op>l=q-ud8?>=enn5W0*<1TH-HApLu{oBs?^a z#d7u`U%>ruS}KC*HV%RCZP`#)n^#daud-o&Xlg6l^0^Dx9R66oP=yKbZu9x2Wr#WqPgkgX1`#aCPoyp;@g6?`p$ej>eTsA(h5B}x7`|i6>hXTPnFBucOsU~Hav<9 zn~W2mEx(0Txj9f4z}slim+=yj(#oi>hnVN}n^z)Wx5gvwTg78PsI+e?U>9l~@4aip z*f>f&A19ADPSoNR3V00y-no91G$uUuT9ejgRN++z%6wEGYVaQUit2{C|5F;g&H&HA zZ=T}Cr%zYsxUfkYIMf9k)tL@ zrxgzyF(J~UuC%hOr(<3L(WiQzX@&VXWGkt{`{N^Mm>m&0jD{3NqrAlOeMOj%Xo7ZQh$)6F0NYQ(fi54>IA0=%jODRF-49KpwR++}Ggsj>4#+Q0#yGcql7g*!4exf28MVc3;e zMy6$4;Lu=wz$FE8-o><#V$CHlt{)cotmfwl=vUgc<-O=sw zAbOKY7h$EA~{OW{NiOt%8N3(C4bXiQdCb&AZDo(yd5Y7(|A-94p+Nqfx9=iSC z((sUJ^D*pr?a9LyuKTvxSZ)t~_}6tflW)F20?zUfk7T%+1J18(8flyfF)2Z7NSZ-5 zn)T*Ma}ee_MFgW=hjZoT(}=%YvA_`V1Qr;|CfP0gWhO#rU~!!(h&3N3>0yG-BYI<@ z8{}BC-sA?84!{C82u8c+jlsqcWuXZ=kKj=_4Uz0!em9tO78V#H=9|@N!~z>C-%Q4J zCg?okN-VJ1iDXao+hiGySYVS#L9}ZpS!k>&b_!#e*=-uk4k75U$y=O{Z~FmQT&MUT zaM-T)M*4h{r`U6?DbMuYu{_h~VAUFrZJwrt)0z@an;%O!t+mA&^xm48;l;iT|6Vgb z79}EY3Kmqg02pak`6>`TUKXKy0Z!pz)yuvUS!n`6O_rvx(r870LKa(Ns(Kz#kA+Q6 za;Nq;Ig@V20-FS%8H@f93gNs5i?3@mC7i;9+f8h&ftY~{%tU}3ySf>;*{<#dKC-Jh zaDi_4YQ~>x>@`KlD*GBFgORE!c1j9NWLPs^tI*U~W9~en5DP0ya%A#XmPu={z$U?H zUkw>M8%w-XyfHL&V~FeXjh^vd`3+fXgIfDA@!=w=`ut_l5S0Bb^WAW<4btW_ZqkdkNmi1YOG+cc3 zDTFL)9#jCyV5Dk_oiYm{vzsTRS2vrW^N2<)s81Hj(cWJlCf$hzHi;pK_SL5;b_!#8 z$r7UjF$+t)Q?xNOrD>~VBaBPS@XwI-kS)X8fO{bsjAEN&r$mrB2aB&6=r2$IF-jBl zSWuO0l3z;xsxT?f`jMMpw67|RU4g~hG+bx0cxQ&`YF-wjXEs&Jd>O%1%St_nygRV? zeBB1gU<5VAPT7f&mzyV~YrI&4N)g#uSSgaTmBNif=1DaPht@hZi2Ci5!g zWocQdtw_VAWu;~zj5i|qDpd%{U<5VAPMMF8n&t`V+71(R9`OVgR*K};zQ0mT`Z5;S zBpB^FGrhji6g#CUHa6Vz^{ZTbF8&A`hpjo!#%GWWMyjURDIw%bX`Yv5^J&G{6vQkn z@H&I!{EFXeCY_B1HVH=iHpPEXG`8HeMNJ($#LeNqv7&lM-=j~;D~zs-430gil* zo~HS^4QDA^r}Le^a9*%=f)*z*oRDjssOb!blVGjm`BFK4>`@rkVncN7#!!ZC#j*p- zdsy~j;X&5RSiBGC?rz4y;|6}~@lb+SI=3Qh8^3JzX_=0P1DpScbS>?$EHCUmpM8J$ zE?;;hzAx&r@OOgz{_sBj@J+t(P8iy9u=K#f@!9+M!$ zu;{e2i$>WqS|?h!pt`nxZUf&QIt|lRBPvVk>YOpdF{3pab7++n7nhE1sG8^S)qhTO z++@7_ao&ZvD%850`X&_SEhwpV=2z6!;GL64N!ff_fJRY%w6qE@HXbv1F3(h*+R`$- zsIUR|I`do`?{O_DuXA)7tEv`O%&je{T{>=I4JuGti@Y;9$L5R~hY5j_s(Gd3a1w5O z$5}FbUQ}J#fLRJv)23Y%HSdLWOx4F#l~tQ6F0RFU`HVjeReV)!>3p2f*E`(XopQa? z(24D}rSoGOqo{b?jA7G8Ij~B9M~^EUeQv>flwEaQ7VIVFg<^|2%sYMoW3>>0c& zYF-EFl=E$>&X^)j8jd!0y^3;sIp`6!7hHLZk8$P$Pp>{4xDJ>nxw+z-- z*B)h4Sa;CyCbucw_5d?qiA_+m)X_E>;Z3v{Pn>ewa@@+5B}=3BwUBk_F5c@CtIAPd z+mm8j!uA@kdgCU|7*;rLWOOt-@~CJrTh6#K9UXn5eSN6I(H!Y(FgLPPUizkQ@P^4c z&e>Ks)SE45-hRoBWZkbXnTr?DT1Ts322)<>zI9IZ;wrpkl67|$@zsgAIe*Ng>5&l; zGiB|Rn{DfD=*sG<@`(Ab0(>Rz-Farm(tX zzUi&pN~X)jdXiVsic)P&W$|`s+mGir@b#uqwz{eFT+CzP9l&M><@-IGTC2LO3<0)t zoBlq{w1@GA1BH2ar}f-e;?%h5_T^|$w%j7~Cf}oU8-684`RdMUyq2>H?;fv>I%7=7 zX*OthgVfY%!={ZJ5uG${!~`{zdE+U23x<-IKcjKcLGd-Er5Ady4~=y|J2YWXn~NF0 zl6mzb@V-tA7HDs;g*cX&TG-aWe0r6`QBWDoK!}&LazD14eI9LMKeHnpUc_lSh4IMj z44&bIt>#Z-hZ%SQG2R1QU5m2H9n7efpiFNZYq8I?w$gl-l`om)@Y_0_^^?S2} z#hf?3uu1KJ82bt^EnHJy>s-W3A7-HEr6aHBq5HBKs>(4k9_0<@j%ni7RcvvrR5QO} z;lia3rbW$Q9yLSD#Fo>y_&P$X`^Px1T}DivG<90>^bymdlP49PZThzzDKR>upH)>m zO*=LR*cPTuXLf9}n_8NI!WlD?HI9yE_v3z!U9#qAo68$3ol5hLS~DEkB79?P>o#Dg zYJTA9z4Y4leQont-B1TJn)tuzy)GNA!nYnaz(oz%t1&zxP16oz9A`VI%g5fQ9UHk8 zRn%2*3~22nw_mhkew5#+810Y-@5$zl7%i)=U5NLCNAbqs`F$<=S@gFUU@@?1vzjh# zFM`>9&pQIJV-E({=pr+WM>U$6jlpK8_jMSeym7h;-|qHn&TLo>Vddsnq;)0uT@bY| z`aM>EEHT$M>>g?NrPc>g!={fMHyL|9;`J3hmAhW-o5GYHRjyXd=c79HD;`7^~PshQRUtmwZ}51 zp<36EyFkaZ-nZ`sP$5vwF+qJ0a^mvhZ6<$_d zWe$*Pki~!;bq@b9i4xe zam4QL&3cg8j@~(**R-Y$&G!u3q+}rmYnmtUkjAIq^ve!xG)&LRoHGw_PyXZSQsnbPS#laB}OGF2t7*h_|g9F7VcB zODl8hc|e(KzL;|7;_xkZe(BtX@@UE2xwwAq!50o9a)%X9%=PVQ-b}^+op?k$=I=NMYCi)2@5jsx@n*8{N(IL^1>)>J$6lym zIP)_dr$V|(WBST`ZuVzV93xJ_!u0-hzNwU0x%o)rn}Tv^?_tb!c^@xsc#Cw!xRA~% zNblpN%lhg>cLBOULLGEH|5~{5}vcZxJg*|+bgKD^`br2$Fq07 z@_4Rq=z%z20Zhlw1y~sD6}71+=Fk|SkC(0t+F$Nil#AI`QxDvM8!MOhP}3fFDt>mr zp1)$W$M_A+gPk3{>{U$!n~zs6?=|q3I}7FRMHuUwhK1=^@84nZRnK{_H}1ywZD23% z?iT454|JTL5$1ioblVW%FLzLNQ#)fCIacmYtb2K|>eQd=I1#Ss@*hXHTV)W-om+3|N(lN;EqfEDMBKD62JGVU+l@;Tzxd{UeWsDJ>EjO%IbR)VilIG!EVaJ`YOfdCTtUZIAcBIiQOt`^rx`yj)(qBvmS;cKeveo)xXwL@;PvF4pyv;@{n+$;PM@b) zUdS8#z54s~D~RXy&$mF&9<}{gdwjpAr)iHD89hz^L$Uqd`k&#`jNj(d%+E_-_G9f2 ziS4L1KQBRf@!lF4#N(nq_Xj}#ARPf+X!d!oca}Z{x&Z4D=~2*gu+Htv^ik+lSdU0A zh2DyFFaJj9UC<{fp3jOnh;?2IVt)T8=p;MOBfjaA?7S{*%S$%>&mZ5k&ibXAACfeM zr8-|CKlexbNp-%3Zu;6wb^Zg5p*I%)3v|9GVK0cCz0jw5d&q2`PK93P)5k$?^67Ta zJAJwnG_P;jPpZ=e`Xf)GJZ|r%PslvO)35s>JwG8VF8)q|=DMdD=Y4|a8^=>@pNtmv zn_7mcf(}Q)rccn}NZ<4cI=G1F`ve_a4)lG3zLsTh(81+E-zVs_cYY=R8O+i*wa|C8 z&`-C}??N{s-zqG}p#{Ef5uXs-_pSXCTIhi-^q3ZUZVP=OG{>8RSXkZ_E#hx)q5s@M zzuQ9d=63JH`tzO{??c_Ug&y8Q&u*bFY@wI8&{ww5ceT*FTId5UG#`@Sedu3$Y;3gc zdonb~NA`KP&x987CD0u2wkrM-XpV25-U7|>Y_sAYZ;}6v7WyDG$2X22EU(#(uk(&F z+2@@}*(sBplA|QCb1>%YJ!k$=;+sy_j&UmIJDEO43Oh~EISzk=&w!F~DiVey~k`d-lU#|7zpZ@%VGs?md1NrAv z{-LQ6gZO7K|Maz4n8!99ep}J%biCQTOY7)X)5Ub?w87rQv+X_hdXJgFQ3+YkmO3%gG(sEouMnr9pOO5Mai(-@Lrkk2sMP7f78VAdf zt9E|F(XJ9SpXzK@!=~M?E?R;DYfI}JYOA6ZWzn*dipuEXlG-X>ZYnQDDY2_yzSe3T zZsvcOzC;(pj+yaj32-UN&aKmeCrs1X4bJ&Ab6q8h%VE`3W?}=4YA)tueg~KHjjyqs z<{BLKPIDC{T8e8FmD*@cmSW8l)pRm0jo~sdCXX<2UsqRBj%)NwYP_r3xa`S02ck#0 zsO)pm*9|zchHC(&3oGiQb9Di`*?5ABxAhBb*{ypu4YjyZQ&%5tz~vBg%@h+`b(p<5 z+T|191b%C?EiQt!P7s@uR&#mPj#bQNv3pO;#J*WRTm|J_MG-6=anLk?EV9R{9jD-K zEomOBQCCVYk>)u}dz`#%0JDeN@2~6>`#qGMiu;ThjuZBsV8>~=^K$YN#rb?vq;aEt|!m7=Q^~r0y-P#(l;v| z?bwpS2{vsQiblvclep%yv0UjdtPj6#dU3;b%UH^t@@B z?K4uEkNRNy%poyXS4krM62)&IG1;_@L_Ho<{7%Kcr})oE)c;4thj4tt@;Z^o&vQ@K zvp2|k=98FY8$g~8zsNJtFUTS2zvP+l2V{MDOET;CAPGNTCND%kAW>hQtJ3~qkoI|s z&vxWJWX#W7fSG>3OuqqS`b{L#^WHM1=Y6(JpORqH_aIU3G;$%f6Uh8?K<1xM zB0ujbV}9P!%KYDwD39m1OrHoceF};6JwT?PMI!xX66txa%k+1HOuwB(`rVAb$lk8W z^jSCt>{yHTB$1Ejz|2t(#WTf1 zk>e8MIS!Ex;wo{Yc&m87xKrFCejt7;Iv6i#kH4EBvqg?u)SS8_lf~o3lSGaujOX*F z$l)TNk4imDTqdp**NIn&ydRb6ZxkEF+r@jths2%YOX9oY0r4Br#W+H{>0)Q`6mhUP zM&x5_nZ8=QSX?7=oMQZ~;{77WEr#=+Sn^%*W08;DWOxYsF3IOHl3m2UBIj@!K3U{L zhN!E=rQ&LFleiG$64NaaSBV?NTgCguo#Gzx1Mzc_cc{}IpXWq&5czObYTndNjuB^w zrDDCvM+Y(8Z^hq>+r>YNd{QUV@qv@%XX1awq$C^OUhE!NEWRin6u%LV zh^hDjp`DImPw_Nyv^YgPPrOiEDy|jzd@S1ggZO~>r1%$+55;3TK7*D#DDts|)O=iP>UTv8TvuS+sw; zI7*x3-N0b`TwiGsk& z(mhGEQ$K~DsqogY;qP#4ysM{4j}p+0rMAr;@OLx;R4NlcbBqnF=o4nmZrI$&smA;Zh`PVAEQTjIN`$*V*N_e<$J3KIzX$_;X17 zmPEdv6`z0;6zUWb^*mm>qjY!aQ>0HP;nxW1NzzlL&m&>4QoKarmyz&mgY-=#{MsV^ zfkeK$75}jGMczbO5-^xvdECgInY(mzQbk#2)aOSGRY_99W=fh7DIB0YwLUlYX1 zB=XHt{9NgB>5HTnNna|xM*6oT{JKf{cImsMA0lCYm-vpt_mS}Hp!7E+{Q5!sFNu61 zToPkF(n#pAbZ6-<(tV`+k?`jXg^!k=AU&Ogo%!M-gj4YJR8$5k=`uLc{avBA-z+2ue3S8 PMSMKV#UGCu^5g#lmpa~d literal 0 HcmV?d00001 diff --git a/src/marina/marina.h b/src/marina/marina.h new file mode 100644 index 0000000..7abc8f2 --- /dev/null +++ b/src/marina/marina.h @@ -0,0 +1,2142 @@ +/* marina.h generated by valac, the Vala compiler, do not modify */ + + +#ifndef __MARINA_H__ +#define __MARINA_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + + +#define TYPE_APP_DIRS (app_dirs_get_type ()) +#define APP_DIRS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_APP_DIRS, AppDirs)) +#define APP_DIRS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_APP_DIRS, AppDirsClass)) +#define IS_APP_DIRS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_APP_DIRS)) +#define IS_APP_DIRS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_APP_DIRS)) +#define APP_DIRS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_APP_DIRS, AppDirsClass)) + +typedef struct _AppDirs AppDirs; +typedef struct _AppDirsClass AppDirsClass; +typedef struct _AppDirsPrivate AppDirsPrivate; + +#define VIEW_TYPE_AUDIO_METER (view_audio_meter_get_type ()) +#define VIEW_AUDIO_METER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_AUDIO_METER, ViewAudioMeter)) +#define VIEW_AUDIO_METER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_AUDIO_METER, ViewAudioMeterClass)) +#define VIEW_IS_AUDIO_METER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_AUDIO_METER)) +#define VIEW_IS_AUDIO_METER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_AUDIO_METER)) +#define VIEW_AUDIO_METER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_AUDIO_METER, ViewAudioMeterClass)) + +typedef struct _ViewAudioMeter ViewAudioMeter; +typedef struct _ViewAudioMeterClass ViewAudioMeterClass; +typedef struct _ViewAudioMeterPrivate ViewAudioMeterPrivate; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ()) +#define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack)) +#define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) +#define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) + +typedef struct _ModelAudioTrack ModelAudioTrack; +typedef struct _ModelAudioTrackClass ModelAudioTrackClass; + +#define TYPE_TRACK_VIEW (track_view_get_type ()) +#define TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW, TrackView)) +#define IS_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW)) +#define TRACK_VIEW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRACK_VIEW, TrackViewIface)) + +typedef struct _TrackView TrackView; +typedef struct _TrackViewIface TrackViewIface; + +#define TYPE_CLIP_VIEW (clip_view_get_type ()) +#define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView)) +#define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass)) +#define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW)) +#define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW)) +#define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass)) + +typedef struct _ClipView ClipView; +typedef struct _ClipViewClass ClipViewClass; + +#define TYPE_CLASS_FACTORY (class_factory_get_type ()) +#define CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLASS_FACTORY, ClassFactory)) +#define CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLASS_FACTORY, ClassFactoryClass)) +#define IS_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLASS_FACTORY)) +#define IS_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLASS_FACTORY)) +#define CLASS_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLASS_FACTORY, ClassFactoryClass)) + +typedef struct _ClassFactory ClassFactory; +typedef struct _ClassFactoryClass ClassFactoryClass; +typedef struct _ClassFactoryPrivate ClassFactoryPrivate; + +#define TYPE_TIME_LINE (time_line_get_type ()) +#define TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TIME_LINE, TimeLine)) +#define TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TIME_LINE, TimeLineClass)) +#define IS_TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TIME_LINE)) +#define IS_TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TIME_LINE)) +#define TIME_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TIME_LINE, TimeLineClass)) + +typedef struct _TimeLine TimeLine; +typedef struct _TimeLineClass TimeLineClass; + +#define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ()) +#define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate)) +#define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE)) +#define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface)) + +typedef struct _TransportDelegate TransportDelegate; +typedef struct _TransportDelegateIface TransportDelegateIface; + +#define TYPE_CLIP_LIBRARY_VIEW (clip_library_view_get_type ()) +#define CLIP_LIBRARY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryView)) +#define CLIP_LIBRARY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewClass)) +#define IS_CLIP_LIBRARY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_LIBRARY_VIEW)) +#define IS_CLIP_LIBRARY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_LIBRARY_VIEW)) +#define CLIP_LIBRARY_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewClass)) + +typedef struct _ClipLibraryView ClipLibraryView; +typedef struct _ClipLibraryViewClass ClipLibraryViewClass; +typedef struct _ClipLibraryViewPrivate ClipLibraryViewPrivate; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define MODEL_TYPE_GAP (model_gap_get_type ()) +#define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap)) +#define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass)) +#define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP)) +#define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP)) +#define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass)) + +typedef struct _ModelGap ModelGap; +typedef struct _ModelGapClass ModelGapClass; +typedef struct _ModelGapPrivate ModelGapPrivate; +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define MODEL_TYPE_FETCHER (model_fetcher_get_type ()) +#define MODEL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER, ModelFetcher)) +#define MODEL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER, ModelFetcherClass)) +#define MODEL_IS_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER)) +#define MODEL_IS_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER)) +#define MODEL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER, ModelFetcherClass)) + +typedef struct _ModelFetcher ModelFetcher; +typedef struct _ModelFetcherClass ModelFetcherClass; +typedef struct _ModelFetcherPrivate ModelFetcherPrivate; + +#define MODEL_TYPE_CLIP_FETCHER (model_clip_fetcher_get_type ()) +#define MODEL_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcher)) +#define MODEL_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) +#define MODEL_IS_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_IS_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FETCHER)) +#define MODEL_CLIP_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass)) + +typedef struct _ModelClipFetcher ModelClipFetcher; +typedef struct _ModelClipFetcherClass ModelClipFetcherClass; +typedef struct _ModelClipFetcherPrivate ModelClipFetcherPrivate; + +#define MODEL_TYPE_THUMBNAIL_FETCHER (model_thumbnail_fetcher_get_type ()) +#define MODEL_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcher)) +#define MODEL_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass)) +#define MODEL_IS_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_THUMBNAIL_FETCHER)) +#define MODEL_IS_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_THUMBNAIL_FETCHER)) +#define MODEL_THUMBNAIL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass)) + +typedef struct _ModelThumbnailFetcher ModelThumbnailFetcher; +typedef struct _ModelThumbnailFetcherClass ModelThumbnailFetcherClass; +typedef struct _ModelThumbnailFetcherPrivate ModelThumbnailFetcherPrivate; + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_FETCHER_COMPLETION (model_fetcher_completion_get_type ()) +#define MODEL_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletion)) +#define MODEL_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass)) +#define MODEL_IS_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER_COMPLETION)) +#define MODEL_IS_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER_COMPLETION)) +#define MODEL_FETCHER_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass)) + +typedef struct _ModelFetcherCompletion ModelFetcherCompletion; +typedef struct _ModelFetcherCompletionClass ModelFetcherCompletionClass; +typedef struct _ModelFetcherCompletionPrivate ModelFetcherCompletionPrivate; + +#define MODEL_TYPE_COMMAND (model_command_get_type ()) +#define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand)) +#define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass)) +#define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND)) +#define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND)) +#define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass)) + +typedef struct _ModelCommand ModelCommand; +typedef struct _ModelCommandClass ModelCommandClass; +typedef struct _ModelCommandPrivate ModelCommandPrivate; + +#define MODEL_TYPE_PARAMETER (model_parameter_get_type ()) + +#define MODEL_TYPE_PARAMETER_COMMAND (model_parameter_command_get_type ()) +#define MODEL_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommand)) +#define MODEL_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass)) +#define MODEL_IS_PARAMETER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PARAMETER_COMMAND)) +#define MODEL_IS_PARAMETER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PARAMETER_COMMAND)) +#define MODEL_PARAMETER_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PARAMETER_COMMAND, ModelParameterCommandClass)) + +typedef struct _ModelParameterCommand ModelParameterCommand; +typedef struct _ModelParameterCommandClass ModelParameterCommandClass; +typedef struct _ModelParameterCommandPrivate ModelParameterCommandPrivate; + +#define MODEL_TYPE_CLIP_COMMAND (model_clip_command_get_type ()) +#define MODEL_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommand)) +#define MODEL_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass)) +#define MODEL_IS_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_COMMAND)) +#define MODEL_IS_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_COMMAND)) +#define MODEL_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_COMMAND, ModelClipCommandClass)) + +typedef struct _ModelClipCommand ModelClipCommand; +typedef struct _ModelClipCommandClass ModelClipCommandClass; +typedef struct _ModelClipCommandPrivate ModelClipCommandPrivate; + +#define MODEL_CLIP_COMMAND_TYPE_ACTION (model_clip_command_action_get_type ()) + +#define MODEL_TYPE_CLIP_ADD_COMMAND (model_clip_add_command_get_type ()) +#define MODEL_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommand)) +#define MODEL_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass)) +#define MODEL_IS_CLIP_ADD_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_ADD_COMMAND)) +#define MODEL_IS_CLIP_ADD_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_ADD_COMMAND)) +#define MODEL_CLIP_ADD_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_ADD_COMMAND, ModelClipAddCommandClass)) + +typedef struct _ModelClipAddCommand ModelClipAddCommand; +typedef struct _ModelClipAddCommandClass ModelClipAddCommandClass; +typedef struct _ModelClipAddCommandPrivate ModelClipAddCommandPrivate; + +#define MODEL_TYPE_CLIP_SPLIT_COMMAND (model_clip_split_command_get_type ()) +#define MODEL_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommand)) +#define MODEL_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass)) +#define MODEL_IS_CLIP_SPLIT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND)) +#define MODEL_IS_CLIP_SPLIT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_SPLIT_COMMAND)) +#define MODEL_CLIP_SPLIT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_SPLIT_COMMAND, ModelClipSplitCommandClass)) + +typedef struct _ModelClipSplitCommand ModelClipSplitCommand; +typedef struct _ModelClipSplitCommandClass ModelClipSplitCommandClass; +typedef struct _ModelClipSplitCommandPrivate ModelClipSplitCommandPrivate; + +#define MODEL_CLIP_SPLIT_COMMAND_TYPE_ACTION (model_clip_split_command_action_get_type ()) + +#define MODEL_TYPE_CLIP_FILE_DELETE_COMMAND (model_clip_file_delete_command_get_type ()) +#define MODEL_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommand)) +#define MODEL_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass)) +#define MODEL_IS_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND)) +#define MODEL_IS_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND)) +#define MODEL_CLIP_FILE_DELETE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass)) + +typedef struct _ModelClipFileDeleteCommand ModelClipFileDeleteCommand; +typedef struct _ModelClipFileDeleteCommandClass ModelClipFileDeleteCommandClass; +typedef struct _ModelClipFileDeleteCommandPrivate ModelClipFileDeleteCommandPrivate; + +#define MODEL_TYPE_CLIP_TRIM_COMMAND (model_clip_trim_command_get_type ()) +#define MODEL_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommand)) +#define MODEL_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass)) +#define MODEL_IS_CLIP_TRIM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND)) +#define MODEL_IS_CLIP_TRIM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_TRIM_COMMAND)) +#define MODEL_CLIP_TRIM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_TRIM_COMMAND, ModelClipTrimCommandClass)) + +typedef struct _ModelClipTrimCommand ModelClipTrimCommand; +typedef struct _ModelClipTrimCommandClass ModelClipTrimCommandClass; +typedef struct _ModelClipTrimCommandPrivate ModelClipTrimCommandPrivate; + +#define MODEL_TYPE_CLIP_REVERT_COMMAND (model_clip_revert_command_get_type ()) +#define MODEL_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommand)) +#define MODEL_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass)) +#define MODEL_IS_CLIP_REVERT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND)) +#define MODEL_IS_CLIP_REVERT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_REVERT_COMMAND)) +#define MODEL_CLIP_REVERT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_REVERT_COMMAND, ModelClipRevertCommandClass)) + +typedef struct _ModelClipRevertCommand ModelClipRevertCommand; +typedef struct _ModelClipRevertCommandClass ModelClipRevertCommandClass; +typedef struct _ModelClipRevertCommandPrivate ModelClipRevertCommandPrivate; + +#define MODEL_TYPE_TIME_SIGNATURE_COMMAND (model_time_signature_command_get_type ()) +#define MODEL_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommand)) +#define MODEL_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass)) +#define MODEL_IS_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND)) +#define MODEL_IS_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND)) +#define MODEL_TIME_SIGNATURE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass)) + +typedef struct _ModelTimeSignatureCommand ModelTimeSignatureCommand; +typedef struct _ModelTimeSignatureCommandClass ModelTimeSignatureCommandClass; +typedef struct _ModelTimeSignatureCommandPrivate ModelTimeSignatureCommandPrivate; + +#define MODEL_TYPE_BPM_COMMAND (model_bpm_command_get_type ()) +#define MODEL_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommand)) +#define MODEL_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass)) +#define MODEL_IS_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_BPM_COMMAND)) +#define MODEL_IS_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_BPM_COMMAND)) +#define MODEL_BPM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass)) + +typedef struct _ModelBpmCommand ModelBpmCommand; +typedef struct _ModelBpmCommandClass ModelBpmCommandClass; +typedef struct _ModelBpmCommandPrivate ModelBpmCommandPrivate; + +#define MODEL_TYPE_ADD_CLIP_COMMAND (model_add_clip_command_get_type ()) +#define MODEL_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommand)) +#define MODEL_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass)) +#define MODEL_IS_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_ADD_CLIP_COMMAND)) +#define MODEL_IS_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_ADD_CLIP_COMMAND)) +#define MODEL_ADD_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass)) + +typedef struct _ModelAddClipCommand ModelAddClipCommand; +typedef struct _ModelAddClipCommandClass ModelAddClipCommandClass; +typedef struct _ModelAddClipCommandPrivate ModelAddClipCommandPrivate; + +#define MODEL_TYPE_TRANSACTION_COMMAND (model_transaction_command_get_type ()) +#define MODEL_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommand)) +#define MODEL_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass)) +#define MODEL_IS_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRANSACTION_COMMAND)) +#define MODEL_IS_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRANSACTION_COMMAND)) +#define MODEL_TRANSACTION_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass)) + +typedef struct _ModelTransactionCommand ModelTransactionCommand; +typedef struct _ModelTransactionCommandClass ModelTransactionCommandClass; +typedef struct _ModelTransactionCommandPrivate ModelTransactionCommandPrivate; + +#define DIALOG_UTILS_TYPE_FILTER_DESCRIPTION_STRUCT (dialog_utils_filter_description_struct_get_type ()) +typedef struct _DialogUtilsfilter_description_struct DialogUtilsfilter_description_struct; + +#define TYPE_MULTI_FILE_PROGRESS_INTERFACE (multi_file_progress_interface_get_type ()) +#define MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterface)) +#define IS_MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE)) +#define MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterfaceIface)) + +typedef struct _MultiFileProgressInterface MultiFileProgressInterface; +typedef struct _MultiFileProgressInterfaceIface MultiFileProgressInterfaceIface; + +#define MODEL_TYPE_CLIP_IMPORTER (model_clip_importer_get_type ()) +#define MODEL_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporter)) +#define MODEL_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass)) +#define MODEL_IS_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_IMPORTER)) +#define MODEL_IS_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_IMPORTER)) +#define MODEL_CLIP_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass)) + +typedef struct _ModelClipImporter ModelClipImporter; +typedef struct _ModelClipImporterClass ModelClipImporterClass; +typedef struct _ModelClipImporterPrivate ModelClipImporterPrivate; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; +typedef struct _ModelLibraryImporterPrivate ModelLibraryImporterPrivate; + +#define MODEL_TYPE_TIMELINE_IMPORTER (model_timeline_importer_get_type ()) +#define MODEL_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporter)) +#define MODEL_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass)) +#define MODEL_IS_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIMELINE_IMPORTER)) +#define MODEL_IS_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIMELINE_IMPORTER)) +#define MODEL_TIMELINE_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass)) + +typedef struct _ModelTimelineImporter ModelTimelineImporter; +typedef struct _ModelTimelineImporterClass ModelTimelineImporterClass; +typedef struct _ModelTimelineImporterPrivate ModelTimelineImporterPrivate; + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +#define TYPE_PLAY_STATE (play_state_get_type ()) + +#define VIEW_TYPE_MEDIA_TRACK (view_media_track_get_type ()) +#define VIEW_MEDIA_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_TRACK, ViewMediaTrack)) +#define VIEW_MEDIA_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_TRACK, ViewMediaTrackClass)) +#define VIEW_IS_MEDIA_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_TRACK)) +#define VIEW_IS_MEDIA_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_TRACK)) +#define VIEW_MEDIA_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_TRACK, ViewMediaTrackClass)) + +typedef struct _ViewMediaTrack ViewMediaTrack; +typedef struct _ViewMediaTrackClass ViewMediaTrackClass; +typedef struct _ViewMediaTrackPrivate ViewMediaTrackPrivate; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define VIEW_TYPE_MEDIA_VIDEO_TRACK (view_media_video_track_get_type ()) +#define VIEW_MEDIA_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_VIDEO_TRACK, ViewMediaVideoTrack)) +#define VIEW_MEDIA_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_VIDEO_TRACK, ViewMediaVideoTrackClass)) +#define VIEW_IS_MEDIA_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_VIDEO_TRACK)) +#define VIEW_IS_MEDIA_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_VIDEO_TRACK)) +#define VIEW_MEDIA_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_VIDEO_TRACK, ViewMediaVideoTrackClass)) + +typedef struct _ViewMediaVideoTrack ViewMediaVideoTrack; +typedef struct _ViewMediaVideoTrackClass ViewMediaVideoTrackClass; +typedef struct _ViewMediaVideoTrackPrivate ViewMediaVideoTrackPrivate; + +#define VIEW_TYPE_CLICK_TRACK (view_click_track_get_type ()) +#define VIEW_CLICK_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_CLICK_TRACK, ViewClickTrack)) +#define VIEW_CLICK_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_CLICK_TRACK, ViewClickTrackClass)) +#define VIEW_IS_CLICK_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_CLICK_TRACK)) +#define VIEW_IS_CLICK_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_CLICK_TRACK)) +#define VIEW_CLICK_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_CLICK_TRACK, ViewClickTrackClass)) + +typedef struct _ViewClickTrack ViewClickTrack; +typedef struct _ViewClickTrackClass ViewClickTrackClass; +typedef struct _ViewClickTrackPrivate ViewClickTrackPrivate; + +#define VIEW_TYPE_MEDIA_AUDIO_TRACK (view_media_audio_track_get_type ()) +#define VIEW_MEDIA_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_AUDIO_TRACK, ViewMediaAudioTrack)) +#define VIEW_MEDIA_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_AUDIO_TRACK, ViewMediaAudioTrackClass)) +#define VIEW_IS_MEDIA_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_AUDIO_TRACK)) +#define VIEW_IS_MEDIA_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_AUDIO_TRACK)) +#define VIEW_MEDIA_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_AUDIO_TRACK, ViewMediaAudioTrackClass)) + +typedef struct _ViewMediaAudioTrack ViewMediaAudioTrack; +typedef struct _ViewMediaAudioTrackClass ViewMediaAudioTrackClass; +typedef struct _ViewMediaAudioTrackPrivate ViewMediaAudioTrackPrivate; + +#define VIEW_TYPE_MEDIA_CONNECTOR (view_media_connector_get_type ()) +#define VIEW_MEDIA_CONNECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_CONNECTOR, ViewMediaConnector)) +#define VIEW_MEDIA_CONNECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_CONNECTOR, ViewMediaConnectorClass)) +#define VIEW_IS_MEDIA_CONNECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_CONNECTOR)) +#define VIEW_IS_MEDIA_CONNECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_CONNECTOR)) +#define VIEW_MEDIA_CONNECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_CONNECTOR, ViewMediaConnectorClass)) + +typedef struct _ViewMediaConnector ViewMediaConnector; +typedef struct _ViewMediaConnectorClass ViewMediaConnectorClass; +typedef struct _ViewMediaConnectorPrivate ViewMediaConnectorPrivate; + +#define VIEW_MEDIA_CONNECTOR_TYPE_MEDIA_TYPES (view_media_connector_media_types_get_type ()) + +#define VIEW_TYPE_VIDEO_OUTPUT (view_video_output_get_type ()) +#define VIEW_VIDEO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_VIDEO_OUTPUT, ViewVideoOutput)) +#define VIEW_VIDEO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_VIDEO_OUTPUT, ViewVideoOutputClass)) +#define VIEW_IS_VIDEO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_VIDEO_OUTPUT)) +#define VIEW_IS_VIDEO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_VIDEO_OUTPUT)) +#define VIEW_VIDEO_OUTPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_VIDEO_OUTPUT, ViewVideoOutputClass)) + +typedef struct _ViewVideoOutput ViewVideoOutput; +typedef struct _ViewVideoOutputClass ViewVideoOutputClass; +typedef struct _ViewVideoOutputPrivate ViewVideoOutputPrivate; + +#define VIEW_TYPE_AUDIO_OUTPUT (view_audio_output_get_type ()) +#define VIEW_AUDIO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_AUDIO_OUTPUT, ViewAudioOutput)) +#define VIEW_AUDIO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_AUDIO_OUTPUT, ViewAudioOutputClass)) +#define VIEW_IS_AUDIO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_AUDIO_OUTPUT)) +#define VIEW_IS_AUDIO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_AUDIO_OUTPUT)) +#define VIEW_AUDIO_OUTPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_AUDIO_OUTPUT, ViewAudioOutputClass)) + +typedef struct _ViewAudioOutput ViewAudioOutput; +typedef struct _ViewAudioOutputClass ViewAudioOutputClass; +typedef struct _ViewAudioOutputPrivate ViewAudioOutputPrivate; + +#define VIEW_TYPE_OGG_VORBIS_EXPORT (view_ogg_vorbis_export_get_type ()) +#define VIEW_OGG_VORBIS_EXPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_OGG_VORBIS_EXPORT, ViewOggVorbisExport)) +#define VIEW_OGG_VORBIS_EXPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_OGG_VORBIS_EXPORT, ViewOggVorbisExportClass)) +#define VIEW_IS_OGG_VORBIS_EXPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_OGG_VORBIS_EXPORT)) +#define VIEW_IS_OGG_VORBIS_EXPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_OGG_VORBIS_EXPORT)) +#define VIEW_OGG_VORBIS_EXPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_OGG_VORBIS_EXPORT, ViewOggVorbisExportClass)) + +typedef struct _ViewOggVorbisExport ViewOggVorbisExport; +typedef struct _ViewOggVorbisExportClass ViewOggVorbisExportClass; +typedef struct _ViewOggVorbisExportPrivate ViewOggVorbisExportPrivate; +typedef struct _ViewMediaEnginePrivate ViewMediaEnginePrivate; + +#define TYPE_MULTI_FILE_PROGRESS (multi_file_progress_get_type ()) +#define MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgress)) +#define MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass)) +#define IS_MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS)) +#define IS_MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTI_FILE_PROGRESS)) +#define MULTI_FILE_PROGRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass)) + +typedef struct _MultiFileProgress MultiFileProgress; +typedef struct _MultiFileProgressClass MultiFileProgressClass; +typedef struct _MultiFileProgressPrivate MultiFileProgressPrivate; + +#define MODEL_TYPE_LOADER_HANDLER (model_loader_handler_get_type ()) +#define MODEL_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandler)) +#define MODEL_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) +#define MODEL_IS_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_IS_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LOADER_HANDLER)) +#define MODEL_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass)) + +typedef struct _ModelLoaderHandler ModelLoaderHandler; +typedef struct _ModelLoaderHandlerClass ModelLoaderHandlerClass; +typedef struct _ModelLoaderHandlerPrivate ModelLoaderHandlerPrivate; + +#define MODEL_TYPE_XML_TREE_LOADER (model_xml_tree_loader_get_type ()) +#define MODEL_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoader)) +#define MODEL_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) +#define MODEL_IS_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_IS_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_TREE_LOADER)) +#define MODEL_XML_TREE_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass)) + +typedef struct _ModelXmlTreeLoader ModelXmlTreeLoader; +typedef struct _ModelXmlTreeLoaderClass ModelXmlTreeLoaderClass; +typedef struct _ModelXmlTreeLoaderPrivate ModelXmlTreeLoaderPrivate; + +#define MODEL_TYPE_XML_ELEMENT (model_xml_element_get_type ()) +#define MODEL_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElement)) +#define MODEL_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) +#define MODEL_IS_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_IS_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_ELEMENT)) +#define MODEL_XML_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass)) + +typedef struct _ModelXmlElement ModelXmlElement; +typedef struct _ModelXmlElementClass ModelXmlElementClass; +typedef struct _ModelXmlElementPrivate ModelXmlElementPrivate; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; +typedef struct _ModelProjectLoaderPrivate ModelProjectLoaderPrivate; + +#define MODEL_TYPE_MEDIA_LOADER_HANDLER (model_media_loader_handler_get_type ()) +#define MODEL_MEDIA_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandler)) +#define MODEL_MEDIA_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerClass)) +#define MODEL_IS_MEDIA_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER)) +#define MODEL_IS_MEDIA_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_MEDIA_LOADER_HANDLER)) +#define MODEL_MEDIA_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerClass)) + +typedef struct _ModelMediaLoaderHandler ModelMediaLoaderHandler; +typedef struct _ModelMediaLoaderHandlerClass ModelMediaLoaderHandlerClass; +typedef struct _ModelMediaLoaderHandlerPrivate ModelMediaLoaderHandlerPrivate; + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_VIDEO_TRACK (model_video_track_get_type ()) +#define MODEL_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrack)) +#define MODEL_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) +#define MODEL_IS_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_IS_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_TRACK)) +#define MODEL_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass)) + +typedef struct _ModelVideoTrack ModelVideoTrack; +typedef struct _ModelVideoTrackClass ModelVideoTrackClass; + +#define VIEW_TYPE_RULER (view_ruler_get_type ()) +#define VIEW_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_RULER, ViewRuler)) +#define VIEW_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_RULER, ViewRulerClass)) +#define VIEW_IS_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_RULER)) +#define VIEW_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_RULER)) +#define VIEW_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_RULER, ViewRulerClass)) + +typedef struct _ViewRuler ViewRuler; +typedef struct _ViewRulerClass ViewRulerClass; +typedef struct _ViewRulerPrivate ViewRulerPrivate; + +#define VIEW_TYPE_STATUS_BAR (view_status_bar_get_type ()) +#define VIEW_STATUS_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_STATUS_BAR, ViewStatusBar)) +#define VIEW_STATUS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_STATUS_BAR, ViewStatusBarClass)) +#define VIEW_IS_STATUS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_STATUS_BAR)) +#define VIEW_IS_STATUS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_STATUS_BAR)) +#define VIEW_STATUS_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_STATUS_BAR, ViewStatusBarClass)) + +typedef struct _ViewStatusBar ViewStatusBar; +typedef struct _ViewStatusBarClass ViewStatusBarClass; +typedef struct _ViewStatusBarPrivate ViewStatusBarPrivate; + +#define TYPE_TRACK_CLIP_PAIR (track_clip_pair_get_type ()) +#define TRACK_CLIP_PAIR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_CLIP_PAIR, TrackClipPair)) +#define TRACK_CLIP_PAIR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_CLIP_PAIR, TrackClipPairClass)) +#define IS_TRACK_CLIP_PAIR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_CLIP_PAIR)) +#define IS_TRACK_CLIP_PAIR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_CLIP_PAIR)) +#define TRACK_CLIP_PAIR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_CLIP_PAIR, TrackClipPairClass)) + +typedef struct _TrackClipPair TrackClipPair; +typedef struct _TrackClipPairClass TrackClipPairClass; +typedef struct _TrackClipPairPrivate TrackClipPairPrivate; + +#define TYPE_CLIPBOARD (clipboard_get_type ()) +#define CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIPBOARD, Clipboard)) +#define CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIPBOARD, ClipboardClass)) +#define IS_CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIPBOARD)) +#define IS_CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIPBOARD)) +#define CLIPBOARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIPBOARD, ClipboardClass)) + +typedef struct _Clipboard Clipboard; +typedef struct _ClipboardClass ClipboardClass; +typedef struct _ClipboardPrivate ClipboardPrivate; +typedef struct _TimeLinePrivate TimeLinePrivate; + +#define MODEL_TYPE_TIME_SYSTEM_BASE (model_time_system_base_get_type ()) +#define MODEL_TIME_SYSTEM_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM_BASE, ModelTimeSystemBase)) +#define MODEL_TIME_SYSTEM_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIME_SYSTEM_BASE, ModelTimeSystemBaseClass)) +#define MODEL_IS_TIME_SYSTEM_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM_BASE)) +#define MODEL_IS_TIME_SYSTEM_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIME_SYSTEM_BASE)) +#define MODEL_TIME_SYSTEM_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIME_SYSTEM_BASE, ModelTimeSystemBaseClass)) + +typedef struct _ModelTimeSystemBase ModelTimeSystemBase; +typedef struct _ModelTimeSystemBaseClass ModelTimeSystemBaseClass; +typedef struct _ModelTimeSystemBasePrivate ModelTimeSystemBasePrivate; + +#define MODEL_TYPE_TIMECODE_TIME_SYSTEM (model_timecode_time_system_get_type ()) +#define MODEL_TIMECODE_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIMECODE_TIME_SYSTEM, ModelTimecodeTimeSystem)) +#define MODEL_TIMECODE_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIMECODE_TIME_SYSTEM, ModelTimecodeTimeSystemClass)) +#define MODEL_IS_TIMECODE_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIMECODE_TIME_SYSTEM)) +#define MODEL_IS_TIMECODE_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIMECODE_TIME_SYSTEM)) +#define MODEL_TIMECODE_TIME_SYSTEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIMECODE_TIME_SYSTEM, ModelTimecodeTimeSystemClass)) + +typedef struct _ModelTimecodeTimeSystem ModelTimecodeTimeSystem; +typedef struct _ModelTimecodeTimeSystemClass ModelTimecodeTimeSystemClass; +typedef struct _ModelTimecodeTimeSystemPrivate ModelTimecodeTimeSystemPrivate; + +#define MODEL_TYPE_BAR_BEAT_TIME_SYSTEM (model_bar_beat_time_system_get_type ()) +#define MODEL_BAR_BEAT_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, ModelBarBeatTimeSystem)) +#define MODEL_BAR_BEAT_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, ModelBarBeatTimeSystemClass)) +#define MODEL_IS_BAR_BEAT_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM)) +#define MODEL_IS_BAR_BEAT_TIME_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM)) +#define MODEL_BAR_BEAT_TIME_SYSTEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_BAR_BEAT_TIME_SYSTEM, ModelBarBeatTimeSystemClass)) + +typedef struct _ModelBarBeatTimeSystem ModelBarBeatTimeSystem; +typedef struct _ModelBarBeatTimeSystemClass ModelBarBeatTimeSystemClass; +typedef struct _ModelBarBeatTimeSystemPrivate ModelBarBeatTimeSystemPrivate; +typedef struct _ModelTrackPrivate ModelTrackPrivate; +typedef struct _ModelAudioTrackPrivate ModelAudioTrackPrivate; + +#define TYPE_GAP_VIEW (gap_view_get_type ()) +#define GAP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GAP_VIEW, GapView)) +#define GAP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GAP_VIEW, GapViewClass)) +#define IS_GAP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GAP_VIEW)) +#define IS_GAP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GAP_VIEW)) +#define GAP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_GAP_VIEW, GapViewClass)) + +typedef struct _GapView GapView; +typedef struct _GapViewClass GapViewClass; +typedef struct _GapViewPrivate GapViewPrivate; +typedef struct _ClipViewPrivate ClipViewPrivate; +typedef struct _ModelUndoManagerPrivate ModelUndoManagerPrivate; +typedef struct _ModelVideoTrackPrivate ModelVideoTrackPrivate; + +struct _AppDirs { + GTypeInstance parent_instance; + volatile int ref_count; + AppDirsPrivate * priv; +}; + +struct _AppDirsClass { + GTypeClass parent_class; + void (*finalize) (AppDirs *self); +}; + +struct _ViewAudioMeter { + GtkDrawingArea parent_instance; + ViewAudioMeterPrivate * priv; +}; + +struct _ViewAudioMeterClass { + GtkDrawingAreaClass parent_class; +}; + +struct _TrackViewIface { + GTypeInterface parent_iface; + void (*move_to_top) (TrackView* self, ClipView* clip_view); + void (*resize) (TrackView* self); + ModelTrack* (*get_track) (TrackView* self); + gint (*get_track_height) (TrackView* self); + GtkWidget* (*find_child) (TrackView* self, double x, double y); + void (*select_all) (TrackView* self); +}; + +struct _ClassFactory { + GTypeInstance parent_instance; + volatile int ref_count; + ClassFactoryPrivate * priv; +}; + +struct _ClassFactoryClass { + GTypeClass parent_class; + void (*finalize) (ClassFactory *self); + TrackView* (*get_track_view) (ClassFactory* self, ModelTrack* track, TimeLine* timeline); +}; + +struct _TransportDelegateIface { + GTypeInterface parent_iface; + gboolean (*is_playing) (TransportDelegate* self); + gboolean (*is_recording) (TransportDelegate* self); + gboolean (*is_stopped) (TransportDelegate* self); +}; + +struct _ClipLibraryView { + GtkEventBox parent_instance; + ClipLibraryViewPrivate * priv; +}; + +struct _ClipLibraryViewClass { + GtkEventBoxClass parent_class; +}; + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelGap { + GTypeInstance parent_instance; + volatile int ref_count; + ModelGapPrivate * priv; + gint64 start; + gint64 end; +}; + +struct _ModelGapClass { + GTypeClass parent_class; + void (*finalize) (ModelGap *self); +}; + +struct _ModelClipFile { + GObject parent_instance; + ModelClipFilePrivate * priv; + char* filename; + GstCaps* video_caps; + GstCaps* audio_caps; + GdkPixbuf* thumbnail; +}; + +struct _ModelClipFileClass { + GObjectClass parent_class; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelFetcher { + GObject parent_instance; + ModelFetcherPrivate * priv; + GstElement* filesrc; + GstElement* decodebin; + GstPipeline* pipeline; + ModelClipFile* clipfile; + char* error_string; +}; + +struct _ModelFetcherClass { + GObjectClass parent_class; + void (*on_pad_added) (ModelFetcher* self, GstPad* pad); + void (*on_state_change) (ModelFetcher* self, GstBus* bus, GstMessage* message); +}; + +struct _ModelClipFetcher { + ModelFetcher parent_instance; + ModelClipFetcherPrivate * priv; +}; + +struct _ModelClipFetcherClass { + ModelFetcherClass parent_class; +}; + +struct _ModelThumbnailFetcher { + ModelFetcher parent_instance; + ModelThumbnailFetcherPrivate * priv; +}; + +struct _ModelThumbnailFetcherClass { + ModelFetcherClass parent_class; +}; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +struct _ModelFetcherCompletion { + GTypeInstance parent_instance; + volatile int ref_count; + ModelFetcherCompletionPrivate * priv; +}; + +struct _ModelFetcherCompletionClass { + GTypeClass parent_class; + void (*finalize) (ModelFetcherCompletion *self); + void (*complete) (ModelFetcherCompletion* self, ModelFetcher* fetcher); +}; + +struct _ModelCommand { + GTypeInstance parent_instance; + volatile int ref_count; + ModelCommandPrivate * priv; +}; + +struct _ModelCommandClass { + GTypeClass parent_class; + void (*finalize) (ModelCommand *self); + void (*apply) (ModelCommand* self); + void (*undo) (ModelCommand* self); + gboolean (*merge) (ModelCommand* self, ModelCommand* command); + char* (*description) (ModelCommand* self); +}; + +typedef enum { + MODEL_PARAMETER_PAN, + MODEL_PARAMETER_VOLUME +} ModelParameter; + +struct _ModelParameterCommand { + ModelCommand parent_instance; + ModelParameterCommandPrivate * priv; +}; + +struct _ModelParameterCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipCommand { + ModelCommand parent_instance; + ModelClipCommandPrivate * priv; +}; + +struct _ModelClipCommandClass { + ModelCommandClass parent_class; +}; + +typedef enum { + MODEL_CLIP_COMMAND_ACTION_APPEND, + MODEL_CLIP_COMMAND_ACTION_DELETE +} ModelClipCommandAction; + +struct _ModelClipAddCommand { + ModelCommand parent_instance; + ModelClipAddCommandPrivate * priv; +}; + +struct _ModelClipAddCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipSplitCommand { + ModelCommand parent_instance; + ModelClipSplitCommandPrivate * priv; +}; + +struct _ModelClipSplitCommandClass { + ModelCommandClass parent_class; +}; + +typedef enum { + MODEL_CLIP_SPLIT_COMMAND_ACTION_SPLIT, + MODEL_CLIP_SPLIT_COMMAND_ACTION_JOIN +} ModelClipSplitCommandAction; + +struct _ModelClipFileDeleteCommand { + ModelCommand parent_instance; + ModelClipFileDeleteCommandPrivate * priv; +}; + +struct _ModelClipFileDeleteCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipTrimCommand { + ModelCommand parent_instance; + ModelClipTrimCommandPrivate * priv; +}; + +struct _ModelClipTrimCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelClipRevertCommand { + ModelCommand parent_instance; + ModelClipRevertCommandPrivate * priv; +}; + +struct _ModelClipRevertCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelTimeSignatureCommand { + ModelCommand parent_instance; + ModelTimeSignatureCommandPrivate * priv; +}; + +struct _ModelTimeSignatureCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelBpmCommand { + ModelCommand parent_instance; + ModelBpmCommandPrivate * priv; +}; + +struct _ModelBpmCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelAddClipCommand { + ModelCommand parent_instance; + ModelAddClipCommandPrivate * priv; +}; + +struct _ModelAddClipCommandClass { + ModelCommandClass parent_class; +}; + +struct _ModelTransactionCommand { + ModelCommand parent_instance; + ModelTransactionCommandPrivate * priv; +}; + +struct _ModelTransactionCommandClass { + ModelCommandClass parent_class; +}; + +struct _DialogUtilsfilter_description_struct { + char* name; + char* extension; +}; + +struct _MultiFileProgressInterfaceIface { + GTypeInterface parent_iface; + void (*cancel) (MultiFileProgressInterface* self); + void (*complete) (MultiFileProgressInterface* self); +}; + +struct _ModelClipImporter { + GObject parent_instance; + ModelClipImporterPrivate * priv; +}; + +struct _ModelClipImporterClass { + GObjectClass parent_class; +}; + +struct _ModelLibraryImporter { + GObject parent_instance; + ModelLibraryImporterPrivate * priv; + ModelProject* project; + ModelClipImporter* importer; +}; + +struct _ModelLibraryImporterClass { + GObjectClass parent_class; + void (*append_existing_clipfile) (ModelLibraryImporter* self, ModelClipFile* f); + void (*on_clip_complete) (ModelLibraryImporter* self, ModelClipFile* f); +}; + +struct _ModelTimelineImporter { + ModelLibraryImporter parent_instance; + ModelTimelineImporterPrivate * priv; +}; + +struct _ModelTimelineImporterClass { + ModelLibraryImporterClass parent_class; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +typedef enum { + PLAY_STATE_STOPPED, + PLAY_STATE_PRE_PLAY, + PLAY_STATE_PLAYING, + PLAY_STATE_PRE_RECORD_NULL, + PLAY_STATE_PRE_RECORD, + PLAY_STATE_RECORDING, + PLAY_STATE_POST_RECORD, + PLAY_STATE_PRE_EXPORT, + PLAY_STATE_EXPORTING, + PLAY_STATE_CANCEL_EXPORT, + PLAY_STATE_LOADING, + PLAY_STATE_CLOSING, + PLAY_STATE_CLOSED +} PlayState; + +struct _ViewMediaTrack { + GObject parent_instance; + ViewMediaTrackPrivate * priv; + ViewMediaEngine* media_engine; + GstBin* composition; + GstElement* default_source; + GstElement* sink; +}; + +struct _ViewMediaTrackClass { + GObjectClass parent_class; + GstElement* (*empty_element) (ViewMediaTrack* self, GError** error); + GstElement* (*get_element) (ViewMediaTrack* self); + void (*link_new_pad) (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); + void (*unlink_pad) (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +}; + +struct _ViewMediaVideoTrack { + ViewMediaTrack parent_instance; + ViewMediaVideoTrackPrivate * priv; +}; + +struct _ViewMediaVideoTrackClass { + ViewMediaTrackClass parent_class; +}; + +struct _ViewClickTrack { + GObject parent_instance; + ViewClickTrackPrivate * priv; +}; + +struct _ViewClickTrackClass { + GObjectClass parent_class; +}; + +struct _ViewMediaAudioTrack { + ViewMediaTrack parent_instance; + ViewMediaAudioTrackPrivate * priv; +}; + +struct _ViewMediaAudioTrackClass { + ViewMediaTrackClass parent_class; +}; + +struct _ViewMediaConnector { + GObject parent_instance; + ViewMediaConnectorPrivate * priv; + gint AudioIndex; + gint VideoIndex; +}; + +struct _ViewMediaConnectorClass { + GObjectClass parent_class; + void (*connect) (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); + void (*do_disconnect) (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +}; + +typedef enum { + VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio = 1, + VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video = 2 +} ViewMediaConnectorMediaTypes; + +struct _ViewVideoOutput { + ViewMediaConnector parent_instance; + ViewVideoOutputPrivate * priv; +}; + +struct _ViewVideoOutputClass { + ViewMediaConnectorClass parent_class; +}; + +struct _ViewAudioOutput { + ViewMediaConnector parent_instance; + ViewAudioOutputPrivate * priv; +}; + +struct _ViewAudioOutputClass { + ViewMediaConnectorClass parent_class; +}; + +struct _ViewOggVorbisExport { + ViewMediaConnector parent_instance; + ViewOggVorbisExportPrivate * priv; +}; + +struct _ViewOggVorbisExportClass { + ViewMediaConnectorClass parent_class; +}; + +struct _ViewMediaEngine { + GObject parent_instance; + ViewMediaEnginePrivate * priv; + GstPipeline* pipeline; + GstBin* record_bin; + GstElement* converter; + GstElement* adder; + GstState gst_state; + PlayState play_state; + gint64 position; + gboolean playing; + ModelAudioTrack* record_track; + ModelClip* record_region; +}; + +struct _ViewMediaEngineClass { + GObjectClass parent_class; + void (*do_null_state_export) (ViewMediaEngine* self, gint64 length); + void (*pause) (ViewMediaEngine* self); +}; + +struct _MultiFileProgress { + GtkWindow parent_instance; + MultiFileProgressPrivate * priv; +}; + +struct _MultiFileProgressClass { + GtkWindowClass parent_class; +}; + +struct _ModelLoaderHandler { + GObject parent_instance; + ModelLoaderHandlerPrivate * priv; +}; + +struct _ModelLoaderHandlerClass { + GObjectClass parent_class; + gboolean (*commit_library) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_marina) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_track) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clip) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_clipfile) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_time_signature_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_tempo_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_click) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + gboolean (*commit_library_preference) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); + void (*leave_library) (ModelLoaderHandler* self); + void (*leave_marina) (ModelLoaderHandler* self); + void (*leave_track) (ModelLoaderHandler* self); + void (*leave_clip) (ModelLoaderHandler* self); + void (*leave_clipfile) (ModelLoaderHandler* self); +}; + +struct _ModelXmlTreeLoader { + GTypeInstance parent_instance; + volatile int ref_count; + ModelXmlTreeLoaderPrivate * priv; + ModelXmlElement* root; +}; + +struct _ModelXmlTreeLoaderClass { + GTypeClass parent_class; + void (*finalize) (ModelXmlTreeLoader *self); +}; + +struct _ModelXmlElement { + GTypeInstance parent_instance; + volatile int ref_count; + ModelXmlElementPrivate * priv; + char** attribute_names; + gint attribute_names_length1; + char** attribute_values; + gint attribute_values_length1; +}; + +struct _ModelXmlElementClass { + GTypeClass parent_class; + void (*finalize) (ModelXmlElement *self); +}; + +struct _ModelProjectLoader { + GObject parent_instance; + ModelProjectLoaderPrivate * priv; +}; + +struct _ModelProjectLoaderClass { + GObjectClass parent_class; +}; + +struct _ModelMediaLoaderHandler { + ModelLoaderHandler parent_instance; + ModelMediaLoaderHandlerPrivate * priv; + ModelProject* the_project; + ModelTrack* current_track; +}; + +struct _ModelMediaLoaderHandlerClass { + ModelLoaderHandlerClass parent_class; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + +struct _ViewRuler { + GtkDrawingArea parent_instance; + ViewRulerPrivate * priv; +}; + +struct _ViewRulerClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ViewStatusBar { + GtkDrawingArea parent_instance; + ViewStatusBarPrivate * priv; +}; + +struct _ViewStatusBarClass { + GtkDrawingAreaClass parent_class; +}; + +struct _TrackClipPair { + GTypeInstance parent_instance; + volatile int ref_count; + TrackClipPairPrivate * priv; + ModelTrack* track; + ModelClip* clip; +}; + +struct _TrackClipPairClass { + GTypeClass parent_class; + void (*finalize) (TrackClipPair *self); +}; + +struct _Clipboard { + GTypeInstance parent_instance; + volatile int ref_count; + ClipboardPrivate * priv; + GeeArrayList* clips; +}; + +struct _ClipboardClass { + GTypeClass parent_class; + void (*finalize) (Clipboard *self); +}; + +struct _TimeLine { + GtkEventBox parent_instance; + TimeLinePrivate * priv; + ModelProject* project; + ModelTimeSystem* provider; + ViewRuler* ruler; + GeeArrayList* tracks; + GeeArrayList* selected_clips; + Clipboard* clipboard; +}; + +struct _TimeLineClass { + GtkEventBoxClass parent_class; +}; + +struct _ModelTimeSystemBase { + GObject parent_instance; + ModelTimeSystemBasePrivate * priv; + float pixel_percentage; + float pixels_per_second; + gint64 pixel_snap_time; +}; + +struct _ModelTimeSystemBaseClass { + GObjectClass parent_class; + gint* (*get_timeline_seconds) (ModelTimeSystemBase* self, int* result_length1); + gint (*correct_sub_second_value) (ModelTimeSystemBase* self, float seconds, gint div, gint fps); +}; + +struct _ModelTimecodeTimeSystem { + ModelTimeSystemBase parent_instance; + ModelTimecodeTimeSystemPrivate * priv; + Fraction frame_rate_fraction; +}; + +struct _ModelTimecodeTimeSystemClass { + ModelTimeSystemBaseClass parent_class; +}; + +struct _ModelBarBeatTimeSystem { + ModelTimeSystemBase parent_instance; + ModelBarBeatTimeSystemPrivate * priv; +}; + +struct _ModelBarBeatTimeSystemClass { + ModelTimeSystemBaseClass parent_class; +}; + +struct _ModelTrack { + GObject parent_instance; + ModelTrackPrivate * priv; + ModelProject* project; + GeeArrayList* clips; + char* display_name; +}; + +struct _ModelTrackClass { + GObjectClass parent_class; + char* (*name) (ModelTrack* self); + ModelMediaType (*media_type) (ModelTrack* self); + gboolean (*check) (ModelTrack* self, ModelClip* clip); + void (*on_clip_updated) (ModelTrack* self, ModelClip* clip); + void (*write_attributes) (ModelTrack* self, FILE* f); +}; + +struct _ModelAudioTrack { + ModelTrack parent_instance; + ModelAudioTrackPrivate * priv; +}; + +struct _ModelAudioTrackClass { + ModelTrackClass parent_class; +}; + +struct _GapView { + GtkDrawingArea parent_instance; + GapViewPrivate * priv; + ModelGap* gap; +}; + +struct _GapViewClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ClipView { + GtkDrawingArea parent_instance; + ClipViewPrivate * priv; + ModelClip* clip; + gint64 initial_time; + gboolean is_selected; + gint height; +}; + +struct _ClipViewClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ModelUndoManager { + GTypeInstance parent_instance; + volatile int ref_count; + ModelUndoManagerPrivate * priv; +}; + +struct _ModelUndoManagerClass { + GTypeClass parent_class; + void (*finalize) (ModelUndoManager *self); +}; + +typedef enum { + MEDIA_ERROR_MISSING_PLUGIN +} MediaError; +#define MEDIA_ERROR media_error_quark () +typedef enum { + GDK_Control_L, + GDK_Control_R, + GDK_Down, + GDK_equal, + GDK_Escape, + GDK_KP_Add, + GDK_KP_Enter, + GDK_KP_Subtract, + GDK_Left, + GDK_minus, + GDK_plus, + GDK_Return, + GDK_Right, + GDK_Shift_L, + GDK_Shift_R, + GDK_underscore, + GDK_Up +} KeySyms; + +struct _ModelVideoTrack { + ModelTrack parent_instance; + ModelVideoTrackPrivate * priv; +}; + +struct _ModelVideoTrackClass { + ModelTrackClass parent_class; +}; + + +gpointer app_dirs_ref (gpointer instance); +void app_dirs_unref (gpointer instance); +GParamSpec* param_spec_app_dirs (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_app_dirs (GValue* value, gpointer v_object); +void value_take_app_dirs (GValue* value, gpointer v_object); +gpointer value_get_app_dirs (const GValue* value); +GType app_dirs_get_type (void); +void app_dirs_init (const char* arg0, const char* program_name); +void app_dirs_terminate (void); +GFile* app_dirs_get_exec_dir (void); +GFile* app_dirs_get_resources_dir (void); +AppDirs* app_dirs_new (void); +AppDirs* app_dirs_construct (GType object_type); +GType view_audio_meter_get_type (void); +GType model_track_get_type (void); +GType model_audio_track_get_type (void); +ViewAudioMeter* view_audio_meter_new (ModelAudioTrack* track); +ViewAudioMeter* view_audio_meter_construct (GType object_type, ModelAudioTrack* track); +gboolean view_audio_meter_on_expose_event (ViewAudioMeter* self, GdkEventExpose* event); +void view_audio_meter_on_level_changed (ViewAudioMeter* self, double level_left, double level_right); +void view_audio_meter_on_channel_count_changed (ViewAudioMeter* self, gint number_of_channels); +GType clip_view_get_type (void); +GType track_view_get_type (void); +void track_view_move_to_top (TrackView* self, ClipView* clip_view); +void track_view_resize (TrackView* self); +ModelTrack* track_view_get_track (TrackView* self); +gint track_view_get_track_height (TrackView* self); +GtkWidget* track_view_find_child (TrackView* self, double x, double y); +void track_view_select_all (TrackView* self); +gpointer class_factory_ref (gpointer instance); +void class_factory_unref (gpointer instance); +GParamSpec* param_spec_class_factory (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_class_factory (GValue* value, gpointer v_object); +void value_take_class_factory (GValue* value, gpointer v_object); +gpointer value_get_class_factory (const GValue* value); +GType class_factory_get_type (void); +GType time_line_get_type (void); +ClassFactory* class_factory_get_class_factory (void); +TrackView* class_factory_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline); +void class_factory_set_class_factory (ClassFactory* class_factory); +GType transport_delegate_get_type (void); +void class_factory_set_transport_delegate (TransportDelegate* transport_delegate); +ClassFactory* class_factory_new (void); +ClassFactory* class_factory_construct (GType object_type); +GType clip_library_view_get_type (void); +extern GtkMenu* clip_library_view_context_menu; +GType model_project_get_type (void); +GType model_time_system_get_type (void); +ClipLibraryView* clip_library_view_new (ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions); +ClipLibraryView* clip_library_view_construct (GType object_type, ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions); +void clip_library_view_unselect_all (ClipLibraryView* self); +GType model_clip_file_get_type (void); +void clip_library_view_on_clipfile_removed (ClipLibraryView* self, ModelClipFile* f); +gboolean clip_library_view_has_selection (ClipLibraryView* self); +GeeArrayList* clip_library_view_get_selected_files (ClipLibraryView* self); +void clip_library_view_delete_selection (ClipLibraryView* self); +void clip_library_view_select_all (ClipLibraryView* self); +GType model_media_type_get_type (void); +gpointer model_gap_ref (gpointer instance); +void model_gap_unref (gpointer instance); +GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_gap (GValue* value, gpointer v_object); +void model_value_take_gap (GValue* value, gpointer v_object); +gpointer model_value_get_gap (const GValue* value); +GType model_gap_get_type (void); +ModelGap* model_gap_new (gint64 start, gint64 end); +ModelGap* model_gap_construct (GType object_type, gint64 start, gint64 end); +gboolean model_gap_is_empty (ModelGap* self); +ModelGap* model_gap_intersect (ModelGap* self, ModelGap* g); +ModelClipFile* model_clip_file_new (const char* filename, gint64 length); +ModelClipFile* model_clip_file_construct (GType object_type, const char* filename, gint64 length); +gboolean model_clip_file_is_online (ModelClipFile* self); +void model_clip_file_set_online (ModelClipFile* self, gboolean o); +void model_clip_file_set_thumbnail (ModelClipFile* self, GdkPixbuf* b); +gboolean model_clip_file_has_caps_structure (ModelClipFile* self, ModelMediaType m); +gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +gboolean model_clip_file_get_frame_rate (ModelClipFile* self, Fraction* rate); +gboolean model_clip_file_get_dimensions (ModelClipFile* self, gint* w, gint* h); +gboolean model_clip_file_get_sample_rate (ModelClipFile* self, gint* rate); +gboolean model_clip_file_get_video_format (ModelClipFile* self, guint32* fourcc); +gboolean model_clip_file_get_num_channels (ModelClipFile* self, gint* channels); +gboolean model_clip_file_get_num_channels_string (ModelClipFile* self, char** s); +gint64 model_clip_file_get_length (ModelClipFile* self); +void model_clip_file_set_length (ModelClipFile* self, gint64 value); +GType model_fetcher_get_type (void); +void model_fetcher_on_pad_added (ModelFetcher* self, GstPad* pad); +void model_fetcher_on_state_change (ModelFetcher* self, GstBus* bus, GstMessage* message); +void model_fetcher_do_error (ModelFetcher* self, const char* _error_); +void model_fetcher_on_warning (ModelFetcher* self, GstBus* bus, GstMessage* message); +void model_fetcher_on_error (ModelFetcher* self, GstBus* bus, GstMessage* message); +ModelFetcher* model_fetcher_construct (GType object_type); +GType model_clip_fetcher_get_type (void); +ModelClipFetcher* model_clip_fetcher_new (const char* filename, GError** error); +ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename, GError** error); +char* model_clip_fetcher_get_filename (ModelClipFetcher* self); +GType model_thumbnail_fetcher_get_type (void); +ModelThumbnailFetcher* model_thumbnail_fetcher_new (ModelClipFile* f, gint64 time, GError** error); +ModelThumbnailFetcher* model_thumbnail_fetcher_construct (GType object_type, ModelClipFile* f, gint64 time, GError** error); +GType model_clip_get_type (void); +ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +void model_clip_gnonlin_connect (ModelClip* self); +void model_clip_gnonlin_disconnect (ModelClip* self); +gboolean model_clip_overlap_pos (ModelClip* self, gint64 start, gint64 length); +gint64 model_clip_snap (ModelClip* self, ModelClip* other, gint64 pad); +gboolean model_clip_snap_coord (ModelClip* self, gint64* s, gint64 span); +ModelClip* model_clip_copy (ModelClip* self); +gboolean model_clip_is_trimmed (ModelClip* self); +void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge); +void model_clip_set_media_start_duration (ModelClip* self, gint64 media_start, gint64 duration); +void model_clip_save (ModelClip* self, FILE* f, gint id); +gint64 model_clip_get_start (ModelClip* self); +void model_clip_set_start (ModelClip* self, gint64 value); +gint64 model_clip_get_media_start (ModelClip* self); +gint64 model_clip_get_duration (ModelClip* self); +void model_clip_set_duration (ModelClip* self, gint64 value); +gint64 model_clip_get_end (ModelClip* self); +gpointer model_fetcher_completion_ref (gpointer instance); +void model_fetcher_completion_unref (gpointer instance); +GParamSpec* model_param_spec_fetcher_completion (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_fetcher_completion (GValue* value, gpointer v_object); +void model_value_take_fetcher_completion (GValue* value, gpointer v_object); +gpointer model_value_get_fetcher_completion (const GValue* value); +GType model_fetcher_completion_get_type (void); +ModelFetcherCompletion* model_fetcher_completion_new (void); +ModelFetcherCompletion* model_fetcher_completion_construct (GType object_type); +void model_fetcher_completion_complete (ModelFetcherCompletion* self, ModelFetcher* fetcher); +gpointer model_command_ref (gpointer instance); +void model_command_unref (gpointer instance); +GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_command (GValue* value, gpointer v_object); +void model_value_take_command (GValue* value, gpointer v_object); +gpointer model_value_get_command (const GValue* value); +GType model_command_get_type (void); +void model_command_apply (ModelCommand* self); +void model_command_undo (ModelCommand* self); +gboolean model_command_merge (ModelCommand* self, ModelCommand* command); +char* model_command_description (ModelCommand* self); +ModelCommand* model_command_construct (GType object_type); +GType model_parameter_get_type (void); +GType model_parameter_command_get_type (void); +ModelParameterCommand* model_parameter_command_new (ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value); +ModelParameterCommand* model_parameter_command_construct (GType object_type, ModelAudioTrack* target, ModelParameter parameter, double new_value, double old_value); +GType model_clip_command_get_type (void); +GType model_clip_command_action_get_type (void); +ModelClipCommand* model_clip_command_new (ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select); +ModelClipCommand* model_clip_command_construct (GType object_type, ModelClipCommandAction action, ModelTrack* track, ModelClip* clip, gint64 time, gboolean select); +GType model_clip_add_command_get_type (void); +ModelClipAddCommand* model_clip_add_command_new (ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start); +ModelClipAddCommand* model_clip_add_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 original_time, gint64 new_start); +GType model_clip_split_command_get_type (void); +GType model_clip_split_command_action_get_type (void); +ModelClipSplitCommand* model_clip_split_command_new (ModelClipSplitCommandAction action, ModelTrack* track, gint64 time); +ModelClipSplitCommand* model_clip_split_command_construct (GType object_type, ModelClipSplitCommandAction action, ModelTrack* track, gint64 time); +GType model_clip_file_delete_command_get_type (void); +ModelClipFileDeleteCommand* model_clip_file_delete_command_new (ModelProject* p, ModelClipFile* cf); +ModelClipFileDeleteCommand* model_clip_file_delete_command_construct (GType object_type, ModelProject* p, ModelClipFile* cf); +GType model_clip_trim_command_get_type (void); +ModelClipTrimCommand* model_clip_trim_command_new (ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +ModelClipTrimCommand* model_clip_trim_command_construct (GType object_type, ModelTrack* track, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +GType model_clip_revert_command_get_type (void); +ModelClipRevertCommand* model_clip_revert_command_new (ModelTrack* track, ModelClip* clip); +ModelClipRevertCommand* model_clip_revert_command_construct (GType object_type, ModelTrack* track, ModelClip* clip); +GType model_time_signature_command_get_type (void); +ModelTimeSignatureCommand* model_time_signature_command_new (ModelProject* project, Fraction* new_time_signature); +ModelTimeSignatureCommand* model_time_signature_command_construct (GType object_type, ModelProject* project, Fraction* new_time_signature); +GType model_bpm_command_get_type (void); +ModelBpmCommand* model_bpm_command_new (ModelProject* project, gint new_bpm); +ModelBpmCommand* model_bpm_command_construct (GType object_type, ModelProject* project, gint new_bpm); +GType model_add_clip_command_get_type (void); +ModelAddClipCommand* model_add_clip_command_new (ModelProject* project, ModelClipFile* clip_file); +ModelAddClipCommand* model_add_clip_command_construct (GType object_type, ModelProject* project, ModelClipFile* clip_file); +GType model_transaction_command_get_type (void); +ModelTransactionCommand* model_transaction_command_new (gboolean open, const char* transaction_description); +ModelTransactionCommand* model_transaction_command_construct (GType object_type, gboolean open, const char* transaction_description); +gboolean model_transaction_command_in_transaction (ModelTransactionCommand* self); +GType dialog_utils_filter_description_struct_get_type (void); +DialogUtilsfilter_description_struct* dialog_utils_filter_description_struct_dup (const DialogUtilsfilter_description_struct* self); +void dialog_utils_filter_description_struct_free (DialogUtilsfilter_description_struct* self); +void dialog_utils_filter_description_struct_copy (const DialogUtilsfilter_description_struct* self, DialogUtilsfilter_description_struct* dest); +void dialog_utils_filter_description_struct_destroy (DialogUtilsfilter_description_struct* self); +gboolean dialog_utils_open (GtkWindow* parent, DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, gboolean allow_multiple, gboolean allow_all, GSList** filenames); +gboolean dialog_utils_save (GtkWindow* parent, const char* title, gboolean create_directory, DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, char** filename); +void dialog_utils_warning (const char* major_message, const char* minor_message); +void dialog_utils_error (const char* major_message, const char* minor_message); +GtkResponseType dialog_utils_delete_keep (const char* message); +GtkResponseType dialog_utils_add_cancel (const char* message); +GtkResponseType dialog_utils_delete_cancel (const char* message); +gboolean dialog_utils_confirm_replace (GtkWindow* parent, const char* filename); +GtkResponseType dialog_utils_save_close_cancel (GtkWindow* parent, const char* title, const char* message); +void dialog_utils_show_clip_properties (GtkWindow* parent, ClipView* selected_clip, ModelClipFile* clip_file, Fraction* frames_per_second); +GType multi_file_progress_interface_get_type (void); +GType model_clip_importer_get_type (void); +ModelClipImporter* model_clip_importer_new (void); +ModelClipImporter* model_clip_importer_construct (GType object_type); +void model_clip_importer_add_filename (ModelClipImporter* self, const char* filename); +void model_clip_importer_start (ModelClipImporter* self, GError** error); +GType model_library_importer_get_type (void); +ModelLibraryImporter* model_library_importer_new (ModelProject* p); +ModelLibraryImporter* model_library_importer_construct (GType object_type, ModelProject* p); +void model_library_importer_append_existing_clipfile (ModelLibraryImporter* self, ModelClipFile* f); +void model_library_importer_on_clip_complete (ModelLibraryImporter* self, ModelClipFile* f); +void model_library_importer_add_file (ModelLibraryImporter* self, const char* filename, GError** error); +void model_library_importer_start (ModelLibraryImporter* self, GError** error); +GType model_timeline_importer_get_type (void); +ModelTimelineImporter* model_timeline_importer_new (ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks); +ModelTimelineImporter* model_timeline_importer_construct (GType object_type, ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_set_logging_level (LoggingLevel new_level); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +GType play_state_get_type (void); +#define CHANNELS_PER_TRACK_PLAYBACK 2 +#define CHANNELS_PER_TRACK_RECORD 1 +GType view_media_track_get_type (void); +GType view_media_engine_get_type (void); +ViewMediaTrack* view_media_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelTrack* track, GError** error); +GstElement* view_media_track_empty_element (ViewMediaTrack* self, GError** error); +GstElement* view_media_track_get_element (ViewMediaTrack* self); +void view_media_track_link_new_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +void view_media_track_unlink_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +GType view_media_video_track_get_type (void); +ViewMediaVideoTrack* view_media_video_track_new (ViewMediaEngine* media_engine, ModelTrack* track, GstElement* converter, GError** error); +ViewMediaVideoTrack* view_media_video_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelTrack* track, GstElement* converter, GError** error); +GType view_click_track_get_type (void); +ViewClickTrack* view_click_track_new (ViewMediaEngine* engine, ModelProject* project, GError** error); +ViewClickTrack* view_click_track_construct (GType object_type, ViewMediaEngine* engine, ModelProject* project, GError** error); +GType view_media_audio_track_get_type (void); +ViewMediaAudioTrack* view_media_audio_track_new (ViewMediaEngine* media_engine, ModelAudioTrack* track, GError** error); +ViewMediaAudioTrack* view_media_audio_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelAudioTrack* track, GError** error); +GType view_media_connector_get_type (void); +GType view_media_connector_media_types_get_type (void); +ViewMediaConnector* view_media_connector_construct (GType object_type, ViewMediaConnectorMediaTypes media_types); +gboolean view_media_connector_has_audio (ViewMediaConnector* self); +gboolean view_media_connector_has_video (ViewMediaConnector* self); +void view_media_connector_connect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +void view_media_connector_do_disconnect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +GType view_video_output_get_type (void); +ViewVideoOutput* view_video_output_new (GtkWidget* output_widget, GError** error); +ViewVideoOutput* view_video_output_construct (GType object_type, GtkWidget* output_widget, GError** error); +GType view_audio_output_get_type (void); +ViewAudioOutput* view_audio_output_new (GstCaps* caps, GError** error); +ViewAudioOutput* view_audio_output_construct (GType object_type, GstCaps* caps, GError** error); +GType view_ogg_vorbis_export_get_type (void); +ViewOggVorbisExport* view_ogg_vorbis_export_new (ViewMediaConnectorMediaTypes media_types, const char* filename, GstCaps* caps, GError** error); +ViewOggVorbisExport* view_ogg_vorbis_export_construct (GType object_type, ViewMediaConnectorMediaTypes media_types, const char* filename, GstCaps* caps, GError** error); +char* view_ogg_vorbis_export_get_filename (ViewOggVorbisExport* self); +ViewMediaEngine* view_media_engine_new (ModelProject* project, gboolean include_video, GError** error); +ViewMediaEngine* view_media_engine_construct (GType object_type, ModelProject* project, gboolean include_video, GError** error); +void view_media_engine_can_run (GError** error); +void view_media_engine_connect_output (ViewMediaEngine* self, ViewMediaConnector* connector); +void view_media_engine_disconnect_output (ViewMediaEngine* self, ViewMediaConnector* connector); +GstElement* view_media_engine_get_audio_silence (ViewMediaEngine* self, GError** error); +gint view_media_engine_get_sample_rate (ViewMediaEngine* self); +gint view_media_engine_get_sample_width (ViewMediaEngine* self); +gint view_media_engine_get_sample_depth (ViewMediaEngine* self); +PlayState view_media_engine_get_play_state (ViewMediaEngine* self); +void view_media_engine_set_play_state (ViewMediaEngine* self, PlayState play_state); +GstCaps* view_media_engine_build_audio_caps (ViewMediaEngine* self, gint num_channels); +GstCaps* view_media_engine_get_project_audio_caps (ViewMediaEngine* self); +GstCaps* view_media_engine_get_project_audio_export_caps (ViewMediaEngine* self); +gboolean view_media_engine_do_state_change (ViewMediaEngine* self); +void view_media_engine_do_null_state_export (ViewMediaEngine* self, gint64 length); +void view_media_engine_go (ViewMediaEngine* self, gint64 pos); +void view_media_engine_pause (ViewMediaEngine* self); +void view_media_engine_set_gst_state (ViewMediaEngine* self, GstState state); +void view_media_engine_do_play (ViewMediaEngine* self, PlayState new_state); +void view_media_engine_start_export (ViewMediaEngine* self, const char* filename); +void view_media_engine_on_load_complete (ViewMediaEngine* self); +void view_media_engine_on_callback_pulse (ViewMediaEngine* self); +void view_media_engine_close (ViewMediaEngine* self); +void view_media_engine_post_record (ViewMediaEngine* self); +void view_media_engine_record (ViewMediaEngine* self, ModelAudioTrack* track); +void view_media_engine_start_record (ViewMediaEngine* self, ModelClip* region, GError** error); +GstCaps* view_media_engine_get_record_audio_caps (ViewMediaEngine* self); +void view_media_engine_on_track_added (ViewMediaEngine* self, ModelTrack* track); +void multi_file_progress_interface_cancel (MultiFileProgressInterface* self); +void multi_file_progress_interface_complete (MultiFileProgressInterface* self); +GType multi_file_progress_get_type (void); +MultiFileProgress* multi_file_progress_new (GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider); +MultiFileProgress* multi_file_progress_construct (GType object_type, GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider); +GType model_loader_handler_get_type (void); +ModelLoaderHandler* model_loader_handler_new (void); +ModelLoaderHandler* model_loader_handler_construct (GType object_type); +gboolean model_loader_handler_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +gboolean model_loader_handler_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1); +void model_loader_handler_leave_library (ModelLoaderHandler* self); +void model_loader_handler_leave_marina (ModelLoaderHandler* self); +void model_loader_handler_leave_track (ModelLoaderHandler* self); +void model_loader_handler_leave_clip (ModelLoaderHandler* self); +void model_loader_handler_leave_clipfile (ModelLoaderHandler* self); +gpointer model_xml_tree_loader_ref (gpointer instance); +void model_xml_tree_loader_unref (gpointer instance); +GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_tree_loader (GValue* value, gpointer v_object); +void model_value_take_xml_tree_loader (GValue* value, gpointer v_object); +gpointer model_value_get_xml_tree_loader (const GValue* value); +GType model_xml_tree_loader_get_type (void); +gpointer model_xml_element_ref (gpointer instance); +void model_xml_element_unref (gpointer instance); +GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_xml_element (GValue* value, gpointer v_object); +void model_value_take_xml_element (GValue* value, gpointer v_object); +gpointer model_value_get_xml_element (const GValue* value); +GType model_xml_element_get_type (void); +ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document); +ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document); +ModelXmlElement* model_xml_element_new (const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent); +ModelXmlElement* model_xml_element_construct (GType object_type, const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent); +void model_xml_element_add_child (ModelXmlElement* self, ModelXmlElement* child_element); +const char* model_xml_element_get_name (ModelXmlElement* self); +GeeArrayList* model_xml_element_get_children (ModelXmlElement* self); +ModelXmlElement* model_xml_element_get_parent (ModelXmlElement* self); +GType model_project_loader_get_type (void); +ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name); +ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name); +void model_project_loader_load (ModelProjectLoader* self); +GType model_media_loader_handler_get_type (void); +ModelMediaLoaderHandler* model_media_loader_handler_new (ModelProject* the_project); +ModelMediaLoaderHandler* model_media_loader_handler_construct (GType object_type, ModelProject* the_project); +GType model_tempo_information_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +extern Fraction model_project_INVALID_FRAME_RATE; +#define MODEL_PROJECT_FILLMORE_FILE_EXTENSION "fill" +#define MODEL_PROJECT_FILLMORE_FILE_FILTER "*." MODEL_PROJECT_FILLMORE_FILE_EXTENSION +#define MODEL_PROJECT_LOMBARD_FILE_EXTENSION "lom" +#define MODEL_PROJECT_LOMBARD_FILE_FILTER "*." MODEL_PROJECT_LOMBARD_FILE_EXTENSION +void model_project_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result); +ModelProject* model_project_construct (GType object_type, const char* filename, gboolean include_video, GError** error); +void model_project_on_playstate_changed (ModelProject* self); +char* model_project_get_project_file (ModelProject* self); +ModelClipFile* model_project_get_clipfile (ModelProject* self, gint index); +gint model_project_get_clipfile_index (ModelProject* self, ModelClipFile* find); +ModelTrack* model_project_track_from_clip (ModelProject* self, ModelClip* clip); +void model_project_print_graph (ModelProject* self, GstBin* bin, const char* file_name); +gint64 model_project_get_length (ModelProject* self); +gint64 model_project_snap_clip (ModelProject* self, ModelClip* c, gint64 span); +void model_project_snap_coord (ModelProject* self, gint64* coord, gint64 span); +gboolean model_project_can_delete_gap (ModelProject* self, ModelGap* gap); +void model_project_delete_gap (ModelProject* self, ModelGap* gap); +void model_project_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); +void model_project_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile); +void model_project_add (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, gint64 time); +void model_project_on_clip_removed (ModelProject* self, ModelTrack* t, ModelClip* clip); +void model_project_split_at_playhead (ModelProject* self); +gboolean model_project_can_trim (ModelProject* self, gboolean* left); +void model_project_trim_to_playhead (ModelProject* self); +void model_project_transport_go (ModelProject* self, gint64 position); +gboolean model_project_transport_is_playing (ModelProject* self); +gboolean model_project_transport_is_recording (ModelProject* self); +gboolean model_project_playhead_on_clip (ModelProject* self); +gboolean model_project_playhead_on_contiguous_clip (ModelProject* self); +gboolean model_project_is_duplicate_track_name (ModelProject* self, ModelTrack* track, const char* new_name); +void model_project_add_track (ModelProject* self, ModelTrack* track); +void model_project_insert_track (ModelProject* self, gint index, ModelTrack* track); +void model_project_add_inactive_track (ModelProject* self, ModelTrack* track); +void model_project_remove_track (ModelProject* self, ModelTrack* track); +void model_project_remove_track_at (ModelProject* self, gint index); +void model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile); +void _model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile, GError** error); +gboolean model_project_clipfile_on_track (ModelProject* self, const char* filename); +void _model_project_remove_clipfile (ModelProject* self, ModelClipFile* cf); +void model_project_remove_clipfile (ModelProject* self, const char* filename); +ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename); +void model_project_reseek (ModelProject* self); +void model_project_go_start (ModelProject* self); +void model_project_go_end (ModelProject* self); +void model_project_go_previous (ModelProject* self); +void model_project_go_next (ModelProject* self); +gint64 model_project_transport_get_position (ModelProject* self); +void model_project_set_name (ModelProject* self, const char* filename); +void model_project_set_default_framerate (ModelProject* self, Fraction* rate); +char* model_project_get_file_display_name (ModelProject* self); +void model_project_clear (ModelProject* self); +gboolean model_project_can_export (ModelProject* self); +void model_project_on_load_started (ModelProject* self, const char* filename); +void model_project_load (ModelProject* self, const char* fname); +void model_project_on_error_occurred (ModelProject* self, const char* major_error, const char* minor_error); +gint model_project_get_file_version (ModelProject* self); +void model_project_save_library (ModelProject* self, FILE* f); +void model_project_save (ModelProject* self, const char* filename); +void model_project_close (ModelProject* self); +void model_project_on_importer_clip_complete (ModelProject* self, ModelClipFetcher* fetcher); +void model_project_create_clip_fetcher (ModelProject* self, ModelFetcherCompletion* fetcher_completion, const char* filename, GError** error); +gboolean model_project_is_project_extension (ModelProject* self, const char* filename); +void model_project_do_command (ModelProject* self, ModelCommand* the_command); +void model_project_undo (ModelProject* self); +void model_project_create_clip_importer (ModelProject* self, ModelTrack* track, gboolean timeline_add, gint64 time_to_add, gboolean both_tracks, GtkWindow* progress_window_parent, gint number); +char* model_project_get_version (ModelProject* self); +char* model_project_get_app_name (ModelProject* self); +char* model_project_get_license (ModelProject* self); +void model_project_set_time_signature (ModelProject* self, Fraction* time_signature); +void _model_project_set_time_signature (ModelProject* self, Fraction* time_signature); +void model_project_set_bpm (ModelProject* self, gint bpm); +void _model_project_set_bpm (ModelProject* self, gint bpm); +char* model_project_get_audio_path (ModelProject* self); +GType model_video_track_get_type (void); +ModelVideoTrack* model_project_find_video_track (ModelProject* self); +ModelAudioTrack* model_project_find_audio_track (ModelProject* self); +void model_project_load_complete (ModelProject* self); +GType view_ruler_get_type (void); +ViewRuler* view_ruler_new (ModelTimeSystem* provider, gint height); +ViewRuler* view_ruler_construct (GType object_type, ModelTimeSystem* provider, gint height); +GType view_status_bar_get_type (void); +ViewStatusBar* view_status_bar_new (ModelProject* p, ModelTimeSystem* provider, gint height); +ViewStatusBar* view_status_bar_construct (GType object_type, ModelProject* p, ModelTimeSystem* provider, gint height); +void view_status_bar_on_position_changed (ViewStatusBar* self, gint64 new_position); +gpointer track_clip_pair_ref (gpointer instance); +void track_clip_pair_unref (gpointer instance); +GParamSpec* param_spec_track_clip_pair (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_track_clip_pair (GValue* value, gpointer v_object); +void value_take_track_clip_pair (GValue* value, gpointer v_object); +gpointer value_get_track_clip_pair (const GValue* value); +GType track_clip_pair_get_type (void); +TrackClipPair* track_clip_pair_new (ModelTrack* track, ModelClip* clip); +TrackClipPair* track_clip_pair_construct (GType object_type, ModelTrack* track, ModelClip* clip); +gpointer clipboard_ref (gpointer instance); +void clipboard_unref (gpointer instance); +GParamSpec* param_spec_clipboard (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_clipboard (GValue* value, gpointer v_object); +void value_take_clipboard (GValue* value, gpointer v_object); +gpointer value_get_clipboard (const GValue* value); +GType clipboard_get_type (void); +void clipboard_select (Clipboard* self, GeeArrayList* selected_clips); +void clipboard_paste (Clipboard* self, ModelTrack* selected_track, gint64 time); +Clipboard* clipboard_new (void); +Clipboard* clipboard_construct (GType object_type); +#define TIME_LINE_BAR_HEIGHT 32 +#define TIME_LINE_BORDER 4 +#define TIME_LINE_RULER_HEIGHT 32 +TimeLine* time_line_new (ModelProject* p, ModelTimeSystem* provider, GdkDragAction actions); +TimeLine* time_line_construct (GType object_type, ModelProject* p, ModelTimeSystem* provider, GdkDragAction actions); +void time_line_zoom_to_project (TimeLine* self, double width); +void time_line_zoom (TimeLine* self, float inc); +void time_line_on_clip_view_added (TimeLine* self, ClipView* clip_view); +void time_line_deselect_all_clips (TimeLine* self); +void time_line_do_clip_move (TimeLine* self, ClipView* clip_view, gint64 delta); +void time_line_on_ruler_position_changed (TimeLine* self, gint x); +gboolean time_line_is_clip_selected (TimeLine* self); +gboolean time_line_gap_selected (TimeLine* self); +void time_line_delete_selection (TimeLine* self); +void time_line_do_cut (TimeLine* self); +void time_line_do_copy (TimeLine* self); +void time_line_paste (TimeLine* self); +void time_line_do_paste (TimeLine* self, gint64 pos); +void time_line_select_all (TimeLine* self); +void time_line_update_pos (TimeLine* self, gint event_x); +GtkWidget* time_line_find_child (TimeLine* self, double x, double y); +void model_time_system_calculate_pixel_step (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); +gint64 model_time_system_xpos_to_time (ModelTimeSystem* self, gint x); +gint64 model_time_system_xsize_to_time (ModelTimeSystem* self, gint x); +gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time); +gint64 model_time_system_get_pixel_snap_time (ModelTimeSystem* self); +gint model_time_system_time_to_xsize (ModelTimeSystem* self, gint64 time); +float model_time_system_get_pixel_percentage (ModelTimeSystem* self); +gint model_time_system_get_start_token (ModelTimeSystem* self, gint xsize); +gint model_time_system_get_next_position (ModelTimeSystem* self, gint token); +gint model_time_system_get_pixel_height (ModelTimeSystem* self, gint token); +char* model_time_system_get_display_string (ModelTimeSystem* self, gint token); +gint model_time_system_frame_to_xsize (ModelTimeSystem* self, gint frame); +gint model_time_system_xsize_to_frame (ModelTimeSystem* self, gint xsize); +char* model_time_system_get_time_string (ModelTimeSystem* self, gint64 time); +char* model_time_system_get_time_duration (ModelTimeSystem* self, gint64 time); +GType model_time_system_base_get_type (void); +#define MODEL_TIME_SYSTEM_BASE_PIXEL_SNAP_INTERVAL 10 +gint model_time_system_base_correct_seconds_value (ModelTimeSystemBase* self, float seconds, gint div, gint fps); +gint64 model_time_system_base_get_pixel_snap_time (ModelTimeSystemBase* self); +float model_time_system_base_get_pixel_percentage (ModelTimeSystemBase* self); +gint64 model_time_system_base_xpos_to_time (ModelTimeSystemBase* self, gint x); +gint64 model_time_system_base_xsize_to_time (ModelTimeSystemBase* self, gint size); +gint model_time_system_base_time_to_xsize (ModelTimeSystemBase* self, gint64 time); +gint model_time_system_base_time_to_xpos (ModelTimeSystemBase* self, gint64 time); +ModelTimeSystemBase* model_time_system_base_construct (GType object_type); +GType model_timecode_time_system_get_type (void); +ModelTimecodeTimeSystem* model_timecode_time_system_new (void); +ModelTimecodeTimeSystem* model_timecode_time_system_construct (GType object_type); +void model_tempo_information_get_time_signature (ModelTempoInformation* self, Fraction* result); +gint model_tempo_information_get_bpm (ModelTempoInformation* self); +GType model_bar_beat_time_system_get_type (void); +ModelBarBeatTimeSystem* model_bar_beat_time_system_new (ModelTempoInformation* tempo_information); +ModelBarBeatTimeSystem* model_bar_beat_time_system_construct (GType object_type, ModelTempoInformation* tempo_information); +ModelTrack* model_track_construct (GType object_type, ModelProject* project, const char* display_name); +char* model_track_name (ModelTrack* self); +ModelMediaType model_track_media_type (ModelTrack* self); +void model_track_hide (ModelTrack* self); +gboolean model_track_contains_clipfile (ModelTrack* self, ModelClipFile* f); +gboolean model_track_check (ModelTrack* self, ModelClip* clip); +gint64 model_track_get_time_from_pos (ModelTrack* self, ModelClip* clip, gboolean after); +gint64 model_track_snap_clip (ModelTrack* self, ModelClip* c, gint64 span); +gboolean model_track_snap_coord (ModelTrack* self, gint64* coord, gint64 span); +gboolean model_track_clip_is_near (ModelTrack* self, ModelClip* clip, gint64 range, gint64* adjustment); +ModelGap* model_track_find_first_gap (ModelTrack* self, gint64 start); +void model_track_find_containing_gap (ModelTrack* self, gint64 time, ModelGap** g); +ModelClip* model_track_find_overlapping_clip (ModelTrack* self, gint64 start, gint64 length); +ModelClip* model_track_find_nearest_clip_edge (ModelTrack* self, gint64 time, gboolean* after); +void model_track_move (ModelTrack* self, ModelClip* c, gint64 pos, gint64 original_time); +void _model_track_move (ModelTrack* self, ModelClip* c, gint64 pos); +void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select); +void model_track_on_clip_updated (ModelTrack* self, ModelClip* clip); +void model_track_do_clip_paste (ModelTrack* self, ModelClip* clip, gint64 position); +ModelClip* model_track_get_clip (ModelTrack* self, gint i); +gint model_track_get_clip_index (ModelTrack* self, ModelClip* c); +ModelClip* model_track_get_clip_by_position (ModelTrack* self, gint64 pos); +gint64 model_track_get_length (ModelTrack* self); +void _model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select); +void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select); +void model_track_delete_clip (ModelTrack* self, ModelClip* clip); +void _model_track_delete_clip (ModelTrack* self, ModelClip* clip); +void model_track_delete_gap (ModelTrack* self, ModelGap* g); +void model_track_remove_clip_from_array (ModelTrack* self, ModelClip* pos); +void model_track_delete_all_clips (ModelTrack* self); +void model_track_revert_to_original (ModelTrack* self, ModelClip* clip); +void _model_track_revert_to_original (ModelTrack* self, ModelClip* c); +gboolean model_track_are_contiguous_clips (ModelTrack* self, gint64 position); +void model_track_split_at (ModelTrack* self, gint64 position); +void _model_track_split_at (ModelTrack* self, gint64 position); +void model_track_join (ModelTrack* self, gint64 position); +void _model_track_join (ModelTrack* self, gint64 position); +void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +void _model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge); +gint64 model_track_previous_edit (ModelTrack* self, gint64 pos); +gint64 model_track_next_edit (ModelTrack* self, gint64 pos); +void model_track_write_attributes (ModelTrack* self, FILE* f); +void model_track_save (ModelTrack* self, FILE* f); +char* model_track_get_display_name (ModelTrack* self); +void model_track_set_display_name (ModelTrack* self, const char* new_display_name); +void model_track_set_selected (ModelTrack* self, gboolean is_selected); +gboolean model_track_get_is_selected (ModelTrack* self); +#define MODEL_AUDIO_TRACK_INVALID_CHANNEL_COUNT (-1) +ModelAudioTrack* model_audio_track_new (ModelProject* project, const char* display_name); +ModelAudioTrack* model_audio_track_construct (GType object_type, ModelProject* project, const char* display_name); +void model_audio_track_set_pan (ModelAudioTrack* self, double new_value); +void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value); +double model_audio_track_get_pan (ModelAudioTrack* self); +void model_audio_track_set_volume (ModelAudioTrack* self, double new_volume); +void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume); +double model_audio_track_get_volume (ModelAudioTrack* self); +void model_audio_track_set_default_num_channels (ModelAudioTrack* self, gint num); +gboolean model_audio_track_get_num_channels (ModelAudioTrack* self, gint* num); +void model_audio_track_on_level_changed (ModelAudioTrack* self, double level_left, double level_right); +gboolean transport_delegate_is_playing (TransportDelegate* self); +gboolean transport_delegate_is_recording (TransportDelegate* self); +gboolean transport_delegate_is_stopped (TransportDelegate* self); +GType gap_view_get_type (void); +GapView* gap_view_new (gint64 start, gint64 length, gint width, gint height); +GapView* gap_view_construct (GType object_type, gint64 start, gint64 length, gint width, gint height); +void gap_view_remove (GapView* self); +void gap_view_unselect (GapView* self); +extern GtkMenu* clip_view_context_menu; +#define CLIP_VIEW_SNAP_DELTA 10 +ClipView* clip_view_new (TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height); +ClipView* clip_view_construct (GType object_type, TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height); +void clip_view_adjust_size (ClipView* self, gint height); +void clip_view_on_clip_moved (ClipView* self, ModelClip* clip); +void clip_view_delete_clip (ClipView* self); +void clip_view_draw (ClipView* self); +void clip_view_select (ClipView* self); +void clip_view_snap (ClipView* self, gint64 amount); +ModelUndoManager* model_undo_manager_new (void); +ModelUndoManager* model_undo_manager_construct (GType object_type); +void model_undo_manager_reset (ModelUndoManager* self); +void model_undo_manager_mark_clean (ModelUndoManager* self); +void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description); +void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description); +void model_undo_manager_do_command (ModelUndoManager* self, ModelCommand* the_command); +void model_undo_manager_undo (ModelUndoManager* self); +char* model_undo_manager_get_undo_title (ModelUndoManager* self); +gboolean model_undo_manager_get_is_dirty (ModelUndoManager* self); +gboolean model_undo_manager_get_can_undo (ModelUndoManager* self); +gboolean model_undo_manager_get_in_undo (ModelUndoManager* self); +GQuark media_error_quark (void); +float float_abs (float f); +gboolean float_within (double f, double epsilon); +gint sign (gint x); +char** copy_array (char** source, int source_length1, int* result_length1); +extern gboolean debug_enabled; +void print_debug (const char* text); +void fraction_init (Fraction *self, gint numerator, gint denominator); +void fraction_init_from_string (Fraction *self, const char* s); +gboolean fraction_equal (Fraction *self, Fraction* f); +gint fraction_nearest_int (Fraction *self); +char* fraction_to_string (Fraction *self); +void time_code_get_from_length (TimeCode *self, gint64 length); +char* time_code_to_string (TimeCode *self); +gboolean time_in_range (gint64 time, gint64 center, gint64 delta); +char* isolate_filename (const char* path); +char* get_file_extension (const char* path); +char* append_extension (const char* path, const char* extension); +gboolean version_at_least (const char* v, const char* w); +gboolean get_file_md5_checksum (const char* filename, char** checksum); +void save_file_md5_checksum (const char* filename, const char* checksum); +gboolean md5_checksum_on_file (const char* filename, char** checksum); +extern GdkModifierType GDK_SHIFT_ALT_CONTROL_MASK; +void parse_color (const char* color, GdkColor* result); +GtkWidget* get_widget (GtkUIManager* manager, const char* name); +void draw_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_right_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_left_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height); +void draw_square_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x, gint y, gint width, gint height); +gboolean is_drop_frame_rate (Fraction* r); +gint64 frame_to_time_with_rate (gint frame, Fraction* rate); +gint time_to_frame_with_rate (gint64 time, Fraction* rate); +void frame_to_time (gint frame, Fraction* rate, TimeCode* result); +char* frame_to_string (gint frame, Fraction* rate); +char* time_to_HHMMSS (gint64 time); +char* time_to_string (gint64 time); +GstElement* make_element_with_name (const char* element_name, const char* display_name, GError** error); +GstElement* make_element (const char* name, GError** error); +ModelVideoTrack* model_video_track_new (ModelProject* project); +ModelVideoTrack* model_video_track_construct (GType object_type, ModelProject* project); +gint model_video_track_get_current_frame (ModelVideoTrack* self, gint64 time); +gint64 model_video_track_previous_frame (ModelVideoTrack* self, gint64 position); +gint64 model_video_track_next_frame (ModelVideoTrack* self, gint64 position); +gboolean model_video_track_get_framerate (ModelVideoTrack* self, Fraction* rate); + +extern const char* MODEL_PROJECT_authors[5]; +extern const GtkTargetEntry drag_target_entries[1]; + +G_END_DECLS + +#endif diff --git a/src/marina/marina/.stamp b/src/marina/marina/.stamp new file mode 100644 index 0000000..e69de29 diff --git a/src/marina/marina/AppDirs.c b/src/marina/marina/AppDirs.c new file mode 100644 index 0000000..5e7effa --- /dev/null +++ b/src/marina/marina/AppDirs.c @@ -0,0 +1,363 @@ +/* AppDirs.c generated by valac, the Vala compiler + * generated from AppDirs.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU LGPL (version 2.1 or later). + * See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include + + +#define TYPE_APP_DIRS (app_dirs_get_type ()) +#define APP_DIRS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_APP_DIRS, AppDirs)) +#define APP_DIRS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_APP_DIRS, AppDirsClass)) +#define IS_APP_DIRS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_APP_DIRS)) +#define IS_APP_DIRS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_APP_DIRS)) +#define APP_DIRS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_APP_DIRS, AppDirsClass)) + +typedef struct _AppDirs AppDirs; +typedef struct _AppDirsClass AppDirsClass; +typedef struct _AppDirsPrivate AppDirsPrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +typedef struct _ParamSpecAppDirs ParamSpecAppDirs; + +struct _AppDirs { + GTypeInstance parent_instance; + volatile int ref_count; + AppDirsPrivate * priv; +}; + +struct _AppDirsClass { + GTypeClass parent_class; + void (*finalize) (AppDirs *self); +}; + +struct _ParamSpecAppDirs { + GParamSpec parent_instance; +}; + + +static GFile* app_dirs_exec_dir; +static GFile* app_dirs_exec_dir = NULL; +static char* app_dirs_program_name; +static char* app_dirs_program_name = NULL; +static gpointer app_dirs_parent_class = NULL; + +gpointer app_dirs_ref (gpointer instance); +void app_dirs_unref (gpointer instance); +GParamSpec* param_spec_app_dirs (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_app_dirs (GValue* value, gpointer v_object); +void value_take_app_dirs (GValue* value, gpointer v_object); +gpointer value_get_app_dirs (const GValue* value); +GType app_dirs_get_type (void); +enum { + APP_DIRS_DUMMY_PROPERTY +}; +void app_dirs_init (const char* arg0, const char* program_name); +void app_dirs_terminate (void); +GFile* app_dirs_get_exec_dir (void); +static GFile* app_dirs_get_install_dir (void); +GFile* app_dirs_get_resources_dir (void); +AppDirs* app_dirs_new (void); +AppDirs* app_dirs_construct (GType object_type); +static void app_dirs_finalize (AppDirs* obj); + + + +#line 14 "AppDirs.vala" +void app_dirs_init (const char* arg0, const char* program_name) { +#line 78 "AppDirs.c" + char* _tmp0_; + GFile* _tmp1_; + GFile* exec_file; + GFile* _tmp2_; + char* _tmp3_; +#line 14 "AppDirs.vala" + g_return_if_fail (arg0 != NULL); +#line 14 "AppDirs.vala" + g_return_if_fail (program_name != NULL); +#line 15 "AppDirs.vala" + exec_file = (_tmp1_ = g_file_new_for_path (_tmp0_ = g_find_program_in_path (arg0)), _g_free0 (_tmp0_), _tmp1_); +#line 16 "AppDirs.vala" + app_dirs_exec_dir = (_tmp2_ = g_file_get_parent (exec_file), _g_object_unref0 (app_dirs_exec_dir), _tmp2_); +#line 17 "AppDirs.vala" + app_dirs_program_name = (_tmp3_ = g_strdup (program_name), _g_free0 (app_dirs_program_name), _tmp3_); +#line 94 "AppDirs.c" + _g_object_unref0 (exec_file); +} + + +#line 20 "AppDirs.vala" +void app_dirs_terminate (void) { +#line 101 "AppDirs.c" +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 23 "AppDirs.vala" +GFile* app_dirs_get_exec_dir (void) { +#line 112 "AppDirs.c" + GFile* result = NULL; + result = _g_object_ref0 (app_dirs_exec_dir); +#line 24 "AppDirs.vala" + return result; +#line 117 "AppDirs.c" +} + + +#line 27 "AppDirs.vala" +GFile* app_dirs_get_resources_dir (void) { +#line 123 "AppDirs.c" + GFile* result = NULL; + GFile* exec_dir; + GFile* install_dir; + GFile* return_value; +#line 28 "AppDirs.vala" + exec_dir = app_dirs_get_exec_dir (); +#line 29 "AppDirs.vala" + install_dir = app_dirs_get_install_dir (); +#line 132 "AppDirs.c" + return_value = NULL; +#line 31 "AppDirs.vala" + if (install_dir != NULL) { +#line 136 "AppDirs.c" + GFile* _tmp1_; + GFile* _tmp0_; +#line 32 "AppDirs.vala" + return_value = (_tmp1_ = g_file_get_child (_tmp0_ = g_file_get_child (install_dir, "share"), app_dirs_program_name), _g_object_unref0 (return_value), _tmp1_); +#line 141 "AppDirs.c" + _g_object_unref0 (_tmp0_); + } else { + GFile* _tmp2_; +#line 34 "AppDirs.vala" + return_value = (_tmp2_ = _g_object_ref0 (exec_dir), _g_object_unref0 (return_value), _tmp2_); +#line 147 "AppDirs.c" + } + result = g_file_get_child (return_value, "resources"); + _g_object_unref0 (exec_dir); + _g_object_unref0 (install_dir); + _g_object_unref0 (return_value); +#line 36 "AppDirs.vala" + return result; +#line 155 "AppDirs.c" +} + + +#line 39 "AppDirs.vala" +static GFile* app_dirs_get_install_dir (void) { +#line 161 "AppDirs.c" + GFile* result = NULL; + GFile* prefix_dir; + GFile* _tmp0_; +#line 40 "AppDirs.vala" + prefix_dir = g_file_new_for_path (_PREFIX); +#line 167 "AppDirs.c" + _tmp0_ = NULL; +#line 41 "AppDirs.vala" + if (g_file_has_prefix (app_dirs_exec_dir, prefix_dir)) { +#line 41 "AppDirs.vala" + _tmp0_ = prefix_dir; +#line 173 "AppDirs.c" + } else { +#line 41 "AppDirs.vala" + _tmp0_ = NULL; +#line 177 "AppDirs.c" + } + result = _g_object_ref0 (_tmp0_); + _g_object_unref0 (prefix_dir); +#line 41 "AppDirs.vala" + return result; +#line 183 "AppDirs.c" +} + + +#line 10 "AppDirs.vala" +AppDirs* app_dirs_construct (GType object_type) { +#line 189 "AppDirs.c" + AppDirs* self; + self = (AppDirs*) g_type_create_instance (object_type); + return self; +} + + +#line 10 "AppDirs.vala" +AppDirs* app_dirs_new (void) { +#line 10 "AppDirs.vala" + return app_dirs_construct (TYPE_APP_DIRS); +#line 200 "AppDirs.c" +} + + +static void value_app_dirs_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void value_app_dirs_free_value (GValue* value) { + if (value->data[0].v_pointer) { + app_dirs_unref (value->data[0].v_pointer); + } +} + + +static void value_app_dirs_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = app_dirs_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer value_app_dirs_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* value_app_dirs_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + AppDirs* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = app_dirs_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* value_app_dirs_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + AppDirs** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = app_dirs_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* param_spec_app_dirs (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ParamSpecAppDirs* spec; + g_return_val_if_fail (g_type_is_a (object_type, TYPE_APP_DIRS), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer value_get_app_dirs (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APP_DIRS), NULL); + return value->data[0].v_pointer; +} + + +void value_set_app_dirs (GValue* value, gpointer v_object) { + AppDirs* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APP_DIRS)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_APP_DIRS)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + app_dirs_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + app_dirs_unref (old); + } +} + + +void value_take_app_dirs (GValue* value, gpointer v_object) { + AppDirs* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APP_DIRS)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_APP_DIRS)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + app_dirs_unref (old); + } +} + + +static void app_dirs_class_init (AppDirsClass * klass) { + app_dirs_parent_class = g_type_class_peek_parent (klass); + APP_DIRS_CLASS (klass)->finalize = app_dirs_finalize; +} + + +static void app_dirs_instance_init (AppDirs * self) { + self->ref_count = 1; +} + + +static void app_dirs_finalize (AppDirs* obj) { + AppDirs * self; + self = APP_DIRS (obj); +} + + +GType app_dirs_get_type (void) { + static volatile gsize app_dirs_type_id__volatile = 0; + if (g_once_init_enter (&app_dirs_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { value_app_dirs_init, value_app_dirs_free_value, value_app_dirs_copy_value, value_app_dirs_peek_pointer, "p", value_app_dirs_collect_value, "p", value_app_dirs_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (AppDirsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) app_dirs_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AppDirs), 0, (GInstanceInitFunc) app_dirs_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType app_dirs_type_id; + app_dirs_type_id = g_type_register_fundamental (g_type_fundamental_next (), "AppDirs", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&app_dirs_type_id__volatile, app_dirs_type_id); + } + return app_dirs_type_id__volatile; +} + + +gpointer app_dirs_ref (gpointer instance) { + AppDirs* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void app_dirs_unref (gpointer instance) { + AppDirs* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + APP_DIRS_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + + + diff --git a/src/marina/marina/AppDirs.o b/src/marina/marina/AppDirs.o new file mode 100644 index 0000000000000000000000000000000000000000..17b4f6b9c1bc45e482091593a2950b91fe11bcb4 GIT binary patch literal 25236 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 E0K +#include +#include +#include +#include +#include +#include +#include +#include + + +#define VIEW_TYPE_AUDIO_METER (view_audio_meter_get_type ()) +#define VIEW_AUDIO_METER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_AUDIO_METER, ViewAudioMeter)) +#define VIEW_AUDIO_METER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_AUDIO_METER, ViewAudioMeterClass)) +#define VIEW_IS_AUDIO_METER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_AUDIO_METER)) +#define VIEW_IS_AUDIO_METER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_AUDIO_METER)) +#define VIEW_AUDIO_METER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_AUDIO_METER, ViewAudioMeterClass)) + +typedef struct _ViewAudioMeter ViewAudioMeter; +typedef struct _ViewAudioMeterClass ViewAudioMeterClass; +typedef struct _ViewAudioMeterPrivate ViewAudioMeterPrivate; +#define _cairo_surface_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL))) + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ()) +#define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack)) +#define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) +#define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) + +typedef struct _ModelAudioTrack ModelAudioTrack; +typedef struct _ModelAudioTrackClass ModelAudioTrackClass; +#define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL))) +#define _cairo_pattern_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_pattern_destroy (var), NULL))) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +struct _ViewAudioMeter { + GtkDrawingArea parent_instance; + ViewAudioMeterPrivate * priv; +}; + +struct _ViewAudioMeterClass { + GtkDrawingAreaClass parent_class; +}; + +struct _ViewAudioMeterPrivate { + cairo_surface_t* meter; + cairo_surface_t* silkscreen; + gboolean stereo; + double current_level_left; + double current_level_right; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +static gpointer view_audio_meter_parent_class = NULL; + +GType view_audio_meter_get_type (void); +#define VIEW_AUDIO_METER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_AUDIO_METER, ViewAudioMeterPrivate)) +enum { + VIEW_AUDIO_METER_DUMMY_PROPERTY +}; +#define VIEW_AUDIO_METER_minDB ((double) (-70)) +GType model_track_get_type (void); +GType model_audio_track_get_type (void); +gboolean model_audio_track_get_num_channels (ModelAudioTrack* self, gint* num); +gboolean view_audio_meter_on_expose_event (ViewAudioMeter* self, GdkEventExpose* event); +static gboolean _view_audio_meter_on_expose_event_gtk_widget_expose_event (GtkWidget* _sender, GdkEventExpose* event, gpointer self); +void view_audio_meter_on_level_changed (ViewAudioMeter* self, double level_left, double level_right); +static void _view_audio_meter_on_level_changed_model_audio_track_level_changed (ModelAudioTrack* _sender, double level_left, double level_right, gpointer self); +void view_audio_meter_on_channel_count_changed (ViewAudioMeter* self, gint number_of_channels); +static void _view_audio_meter_on_channel_count_changed_model_audio_track_channel_count_changed (ModelAudioTrack* _sender, gint channel_count, gpointer self); +ViewAudioMeter* view_audio_meter_new (ModelAudioTrack* track); +ViewAudioMeter* view_audio_meter_construct (GType object_type, ModelAudioTrack* track); +static void view_audio_meter_initialize_meter (ViewAudioMeter* self); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +static void view_audio_meter_finalize (GObject* obj); + + + +#line 64 "AudioMeter.vala" +static gboolean _view_audio_meter_on_expose_event_gtk_widget_expose_event (GtkWidget* _sender, GdkEventExpose* event, gpointer self) { +#line 126 "AudioMeter.c" + gboolean result; + result = view_audio_meter_on_expose_event (self, event); + return result; +} + + +#line 102 "AudioMeter.vala" +static void _view_audio_meter_on_level_changed_model_audio_track_level_changed (ModelAudioTrack* _sender, double level_left, double level_right, gpointer self) { +#line 135 "AudioMeter.c" + view_audio_meter_on_level_changed (self, level_left, level_right); +} + + +#line 110 "AudioMeter.vala" +static void _view_audio_meter_on_channel_count_changed_model_audio_track_channel_count_changed (ModelAudioTrack* _sender, gint channel_count, gpointer self) { +#line 142 "AudioMeter.c" + view_audio_meter_on_channel_count_changed (self, channel_count); +} + + +#line 19 "AudioMeter.vala" +ViewAudioMeter* view_audio_meter_construct (GType object_type, ModelAudioTrack* track) { +#line 149 "AudioMeter.c" + ViewAudioMeter * self; + gint number_of_channels = 0; +#line 19 "AudioMeter.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (track), NULL); +#line 154 "AudioMeter.c" + self = g_object_newv (object_type, 0, NULL); +#line 21 "AudioMeter.vala" + if (model_audio_track_get_num_channels (track, &number_of_channels)) { +#line 22 "AudioMeter.vala" + self->priv->stereo = number_of_channels < 1; +#line 160 "AudioMeter.c" + } +#line 25 "AudioMeter.vala" + GTK_WIDGET (self)->requisition.height = 10; +#line 26 "AudioMeter.vala" + g_signal_connect_object (GTK_WIDGET (self), "expose-event", (GCallback) _view_audio_meter_on_expose_event_gtk_widget_expose_event, self, 0); +#line 27 "AudioMeter.vala" + g_signal_connect_object (track, "level-changed", (GCallback) _view_audio_meter_on_level_changed_model_audio_track_level_changed, self, 0); +#line 28 "AudioMeter.vala" + g_signal_connect_object (track, "channel-count-changed", (GCallback) _view_audio_meter_on_channel_count_changed_model_audio_track_channel_count_changed, self, 0); +#line 170 "AudioMeter.c" + return self; +} + + +#line 19 "AudioMeter.vala" +ViewAudioMeter* view_audio_meter_new (ModelAudioTrack* track) { +#line 19 "AudioMeter.vala" + return view_audio_meter_construct (VIEW_TYPE_AUDIO_METER, track); +#line 179 "AudioMeter.c" +} + + +#line 31 "AudioMeter.vala" +static void view_audio_meter_initialize_meter (ViewAudioMeter* self) { +#line 185 "AudioMeter.c" + cairo_surface_t* _tmp0_; + cairo_t* context2; + cairo_pattern_t* pat; + cairo_surface_t* _tmp1_; + cairo_t* _tmp2_; +#line 31 "AudioMeter.vala" + g_return_if_fail (VIEW_IS_AUDIO_METER (self)); +#line 32 "AudioMeter.vala" + self->priv->meter = (_tmp0_ = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, GTK_WIDGET (self)->allocation.width, GTK_WIDGET (self)->allocation.height), _cairo_surface_destroy0 (self->priv->meter), _tmp0_); +#line 34 "AudioMeter.vala" + context2 = cairo_create (self->priv->meter); +#line 35 "AudioMeter.vala" + pat = cairo_pattern_create_linear ((double) 0, (double) 0, (double) GTK_WIDGET (self)->allocation.width, (double) 0); +#line 36 "AudioMeter.vala" + cairo_pattern_add_color_stop_rgb (pat, (double) 0, 0.1, (double) 1, 0.4); +#line 37 "AudioMeter.vala" + cairo_pattern_add_color_stop_rgb (pat, 0.8, (double) 1, (double) 1, (double) 0); +#line 38 "AudioMeter.vala" + cairo_pattern_add_color_stop_rgb (pat, (double) 1, (double) 1, (double) 0, (double) 0); +#line 39 "AudioMeter.vala" + cairo_set_source (context2, pat); +#line 40 "AudioMeter.vala" + cairo_rectangle (context2, (double) 0, (double) 0, (double) GTK_WIDGET (self)->allocation.width, (double) GTK_WIDGET (self)->allocation.height); +#line 41 "AudioMeter.vala" + cairo_fill (context2); +#line 43 "AudioMeter.vala" + self->priv->silkscreen = (_tmp1_ = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, GTK_WIDGET (self)->allocation.width, GTK_WIDGET (self)->allocation.height), _cairo_surface_destroy0 (self->priv->silkscreen), _tmp1_); +#line 45 "AudioMeter.vala" + context2 = (_tmp2_ = cairo_create (self->priv->silkscreen), _cairo_destroy0 (context2), _tmp2_); +#line 46 "AudioMeter.vala" + cairo_set_source_rgba (context2, (double) 0, (double) 0, (double) 0, (double) 0); +#line 47 "AudioMeter.vala" + cairo_rectangle (context2, (double) 0, (double) 0, (double) GTK_WIDGET (self)->allocation.width, (double) GTK_WIDGET (self)->allocation.height); +#line 48 "AudioMeter.vala" + cairo_fill (context2); +#line 221 "AudioMeter.c" + { + gint i; +#line 51 "AudioMeter.vala" + i = 0; +#line 226 "AudioMeter.c" + { + gboolean _tmp3_; +#line 51 "AudioMeter.vala" + _tmp3_ = TRUE; +#line 51 "AudioMeter.vala" + while (TRUE) { +#line 51 "AudioMeter.vala" + if (!_tmp3_) { +#line 51 "AudioMeter.vala" + i = i + 1; +#line 237 "AudioMeter.c" + } +#line 51 "AudioMeter.vala" + _tmp3_ = FALSE; +#line 51 "AudioMeter.vala" + if (!(i < 20)) { +#line 51 "AudioMeter.vala" + break; +#line 245 "AudioMeter.c" + } +#line 52 "AudioMeter.vala" + cairo_set_source_rgba (context2, (double) 0, (double) 0, (double) 0, (double) 1); +#line 53 "AudioMeter.vala" + cairo_rectangle (context2, (double) ((i * GTK_WIDGET (self)->allocation.width) / 20), (double) 0, (double) 3, (double) GTK_WIDGET (self)->allocation.height); +#line 54 "AudioMeter.vala" + cairo_fill (context2); +#line 253 "AudioMeter.c" + } + } + } +#line 58 "AudioMeter.vala" + cairo_set_line_width (context2, 1.1); +#line 59 "AudioMeter.vala" + cairo_set_source_rgba (context2, 0.9, 0.9, 0.9, 0.5); +#line 60 "AudioMeter.vala" + cairo_rectangle (context2, (double) 0, (double) 0, (double) GTK_WIDGET (self)->allocation.width, (double) GTK_WIDGET (self)->allocation.height); +#line 61 "AudioMeter.vala" + cairo_stroke (context2); +#line 265 "AudioMeter.c" + _cairo_destroy0 (context2); + _cairo_pattern_destroy0 (pat); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 64 "AudioMeter.vala" +gboolean view_audio_meter_on_expose_event (ViewAudioMeter* self, GdkEventExpose* event) { +#line 278 "AudioMeter.c" + gboolean result = FALSE; + GdkWindow* window; + cairo_t* context; + gint _tmp0_ = 0; + gint bar_height; + gint width; +#line 64 "AudioMeter.vala" + g_return_val_if_fail (VIEW_IS_AUDIO_METER (self), FALSE); +#line 65 "AudioMeter.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_expose_event"); +#line 66 "AudioMeter.vala" + window = _g_object_ref0 (gtk_widget_get_window (GTK_WIDGET (self))); +#line 67 "AudioMeter.vala" + context = gdk_cairo_create (GDK_DRAWABLE (window)); +#line 68 "AudioMeter.vala" + if (self->priv->meter == NULL) { +#line 69 "AudioMeter.vala" + view_audio_meter_initialize_meter (self); +#line 297 "AudioMeter.c" + } +#line 72 "AudioMeter.vala" + cairo_set_source_rgb (context, (double) 0, (double) 0, (double) 0); +#line 73 "AudioMeter.vala" + cairo_rectangle (context, (double) 0, (double) 0, (double) GTK_WIDGET (self)->allocation.width, (double) GTK_WIDGET (self)->allocation.height); +#line 74 "AudioMeter.vala" + cairo_fill (context); +#line 76 "AudioMeter.vala" + if (self->priv->stereo) { +#line 76 "AudioMeter.vala" + _tmp0_ = (GTK_WIDGET (self)->allocation.height / 2) - 1; +#line 309 "AudioMeter.c" + } else { +#line 76 "AudioMeter.vala" + _tmp0_ = GTK_WIDGET (self)->allocation.height - 2; +#line 313 "AudioMeter.c" + } +#line 76 "AudioMeter.vala" + bar_height = _tmp0_; +#line 78 "AudioMeter.vala" + if (self->priv->stereo) { +#line 79 "AudioMeter.vala" + cairo_set_source_rgb (context, (double) 1, (double) 1, (double) 1); +#line 80 "AudioMeter.vala" + cairo_rectangle (context, (double) 0, (double) (bar_height + 1), (double) GTK_WIDGET (self)->allocation.width, 0.3); +#line 81 "AudioMeter.vala" + cairo_fill (context); +#line 325 "AudioMeter.c" + } +#line 84 "AudioMeter.vala" + cairo_set_source_surface (context, self->priv->meter, (double) 0, (double) 0); +#line 85 "AudioMeter.vala" + width = (gint) (pow10 (self->priv->current_level_left / 40) * GTK_WIDGET (self)->allocation.width); +#line 86 "AudioMeter.vala" + cairo_rectangle (context, (double) 0, (double) 1, (double) width, (double) bar_height); +#line 88 "AudioMeter.vala" + if (self->priv->stereo) { +#line 89 "AudioMeter.vala" + width = (gint) (pow10 (self->priv->current_level_right / 40) * GTK_WIDGET (self)->allocation.width); +#line 90 "AudioMeter.vala" + cairo_rectangle (context, (double) 0, (double) (bar_height + 2), (double) width, (double) bar_height); +#line 339 "AudioMeter.c" + } +#line 93 "AudioMeter.vala" + cairo_clip (context); +#line 94 "AudioMeter.vala" + cairo_paint_with_alpha (context, (double) 1); +#line 96 "AudioMeter.vala" + cairo_set_source_surface (context, self->priv->silkscreen, (double) 0, (double) 0); +#line 97 "AudioMeter.vala" + cairo_paint_with_alpha (context, (double) 1); +#line 349 "AudioMeter.c" + result = TRUE; + _g_object_unref0 (window); + _cairo_destroy0 (context); +#line 99 "AudioMeter.vala" + return result; +#line 355 "AudioMeter.c" +} + + +#line 102 "AudioMeter.vala" +void view_audio_meter_on_level_changed (ViewAudioMeter* self, double level_left, double level_right) { +#line 361 "AudioMeter.c" + double _tmp0_ = 0.0; + double _tmp1_ = 0.0; + GdkWindow* window; +#line 102 "AudioMeter.vala" + g_return_if_fail (VIEW_IS_AUDIO_METER (self)); +#line 103 "AudioMeter.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_level_changed"); +#line 104 "AudioMeter.vala" + if (level_left < VIEW_AUDIO_METER_minDB) { +#line 104 "AudioMeter.vala" + _tmp0_ = VIEW_AUDIO_METER_minDB; +#line 373 "AudioMeter.c" + } else { +#line 104 "AudioMeter.vala" + _tmp0_ = level_left; +#line 377 "AudioMeter.c" + } +#line 104 "AudioMeter.vala" + self->priv->current_level_left = _tmp0_; +#line 105 "AudioMeter.vala" + if (level_right < VIEW_AUDIO_METER_minDB) { +#line 105 "AudioMeter.vala" + _tmp1_ = VIEW_AUDIO_METER_minDB; +#line 385 "AudioMeter.c" + } else { +#line 105 "AudioMeter.vala" + _tmp1_ = level_right; +#line 389 "AudioMeter.c" + } +#line 105 "AudioMeter.vala" + self->priv->current_level_right = _tmp1_; +#line 106 "AudioMeter.vala" + window = _g_object_ref0 (gtk_widget_get_window (GTK_WIDGET (self))); +#line 107 "AudioMeter.vala" + gdk_window_invalidate_rect (window, NULL, FALSE); +#line 397 "AudioMeter.c" + _g_object_unref0 (window); +} + + +#line 110 "AudioMeter.vala" +void view_audio_meter_on_channel_count_changed (ViewAudioMeter* self, gint number_of_channels) { +#line 110 "AudioMeter.vala" + g_return_if_fail (VIEW_IS_AUDIO_METER (self)); +#line 111 "AudioMeter.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_channel_count_changed"); +#line 112 "AudioMeter.vala" + self->priv->stereo = number_of_channels > 1; +#line 113 "AudioMeter.vala" + gdk_window_invalidate_rect (GTK_WIDGET (self)->window, NULL, FALSE); +#line 412 "AudioMeter.c" +} + + +static void view_audio_meter_class_init (ViewAudioMeterClass * klass) { + view_audio_meter_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewAudioMeterPrivate)); + G_OBJECT_CLASS (klass)->finalize = view_audio_meter_finalize; +} + + +static void view_audio_meter_instance_init (ViewAudioMeter * self) { + self->priv = VIEW_AUDIO_METER_GET_PRIVATE (self); + self->priv->meter = NULL; + self->priv->stereo = FALSE; + self->priv->current_level_left = (double) (-100); + self->priv->current_level_right = (double) (-100); +} + + +static void view_audio_meter_finalize (GObject* obj) { + ViewAudioMeter * self; + self = VIEW_AUDIO_METER (obj); + _cairo_surface_destroy0 (self->priv->meter); + _cairo_surface_destroy0 (self->priv->silkscreen); + G_OBJECT_CLASS (view_audio_meter_parent_class)->finalize (obj); +} + + +GType view_audio_meter_get_type (void) { + static volatile gsize view_audio_meter_type_id__volatile = 0; + if (g_once_init_enter (&view_audio_meter_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewAudioMeterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_audio_meter_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewAudioMeter), 0, (GInstanceInitFunc) view_audio_meter_instance_init, NULL }; + GType view_audio_meter_type_id; + view_audio_meter_type_id = g_type_register_static (GTK_TYPE_DRAWING_AREA, "ViewAudioMeter", &g_define_type_info, 0); + g_once_init_leave (&view_audio_meter_type_id__volatile, view_audio_meter_type_id); + } + return view_audio_meter_type_id__volatile; +} + + + + diff --git a/src/marina/marina/AudioMeter.o b/src/marina/marina/AudioMeter.o new file mode 100644 index 0000000000000000000000000000000000000000..8132bdc61bbb908767139f159333526c23b6e3cc GIT binary patch literal 55656 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 literal 0 HcmV?d00001 diff --git a/src/marina/marina/ClassFactory.c b/src/marina/marina/ClassFactory.c new file mode 100644 index 0000000..6761d41 --- /dev/null +++ b/src/marina/marina/ClassFactory.c @@ -0,0 +1,484 @@ +/* ClassFactory.c generated by valac, the Vala compiler + * generated from ClassFactory.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include + + +#define TYPE_TRACK_VIEW (track_view_get_type ()) +#define TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW, TrackView)) +#define IS_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW)) +#define TRACK_VIEW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRACK_VIEW, TrackViewIface)) + +typedef struct _TrackView TrackView; +typedef struct _TrackViewIface TrackViewIface; + +#define TYPE_CLIP_VIEW (clip_view_get_type ()) +#define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView)) +#define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass)) +#define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW)) +#define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW)) +#define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass)) + +typedef struct _ClipView ClipView; +typedef struct _ClipViewClass ClipViewClass; + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define TYPE_CLASS_FACTORY (class_factory_get_type ()) +#define CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLASS_FACTORY, ClassFactory)) +#define CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLASS_FACTORY, ClassFactoryClass)) +#define IS_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLASS_FACTORY)) +#define IS_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLASS_FACTORY)) +#define CLASS_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLASS_FACTORY, ClassFactoryClass)) + +typedef struct _ClassFactory ClassFactory; +typedef struct _ClassFactoryClass ClassFactoryClass; +typedef struct _ClassFactoryPrivate ClassFactoryPrivate; + +#define TYPE_TIME_LINE (time_line_get_type ()) +#define TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TIME_LINE, TimeLine)) +#define TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TIME_LINE, TimeLineClass)) +#define IS_TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TIME_LINE)) +#define IS_TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TIME_LINE)) +#define TIME_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TIME_LINE, TimeLineClass)) + +typedef struct _TimeLine TimeLine; +typedef struct _TimeLineClass TimeLineClass; + +#define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ()) +#define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate)) +#define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE)) +#define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface)) + +typedef struct _TransportDelegate TransportDelegate; +typedef struct _TransportDelegateIface TransportDelegateIface; + +#define TYPE_TRACK_VIEW_CONCRETE (track_view_concrete_get_type ()) +#define TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcrete)) +#define TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass)) +#define IS_TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW_CONCRETE)) +#define IS_TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_VIEW_CONCRETE)) +#define TRACK_VIEW_CONCRETE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass)) + +typedef struct _TrackViewConcrete TrackViewConcrete; +typedef struct _TrackViewConcreteClass TrackViewConcreteClass; +#define _class_factory_unref0(var) ((var == NULL) ? NULL : (var = (class_factory_unref (var), NULL))) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +typedef struct _ParamSpecClassFactory ParamSpecClassFactory; + +struct _TrackViewIface { + GTypeInterface parent_iface; + void (*move_to_top) (TrackView* self, ClipView* clip_view); + void (*resize) (TrackView* self); + ModelTrack* (*get_track) (TrackView* self); + gint (*get_track_height) (TrackView* self); + GtkWidget* (*find_child) (TrackView* self, double x, double y); + void (*select_all) (TrackView* self); +}; + +struct _ClassFactory { + GTypeInstance parent_instance; + volatile int ref_count; + ClassFactoryPrivate * priv; +}; + +struct _ClassFactoryClass { + GTypeClass parent_class; + void (*finalize) (ClassFactory *self); + TrackView* (*get_track_view) (ClassFactory* self, ModelTrack* track, TimeLine* timeline); +}; + +struct _TransportDelegateIface { + GTypeInterface parent_iface; + gboolean (*is_playing) (TransportDelegate* self); + gboolean (*is_recording) (TransportDelegate* self); + gboolean (*is_stopped) (TransportDelegate* self); +}; + +struct _ParamSpecClassFactory { + GParamSpec parent_instance; +}; + + +static ClassFactory* class_factory_class_factory; +static ClassFactory* class_factory_class_factory = NULL; +static TransportDelegate* class_factory_transport_delegate; +static TransportDelegate* class_factory_transport_delegate = NULL; +static gpointer class_factory_parent_class = NULL; + +GType clip_view_get_type (void); +GType model_track_get_type (void); +GType track_view_get_type (void); +void track_view_move_to_top (TrackView* self, ClipView* clip_view); +void track_view_resize (TrackView* self); +ModelTrack* track_view_get_track (TrackView* self); +gint track_view_get_track_height (TrackView* self); +GtkWidget* track_view_find_child (TrackView* self, double x, double y); +void track_view_select_all (TrackView* self); +gpointer class_factory_ref (gpointer instance); +void class_factory_unref (gpointer instance); +GParamSpec* param_spec_class_factory (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void value_set_class_factory (GValue* value, gpointer v_object); +void value_take_class_factory (GValue* value, gpointer v_object); +gpointer value_get_class_factory (const GValue* value); +GType class_factory_get_type (void); +GType time_line_get_type (void); +enum { + CLASS_FACTORY_DUMMY_PROPERTY +}; +GType transport_delegate_get_type (void); +ClassFactory* class_factory_get_class_factory (void); +TrackViewConcrete* track_view_concrete_new (TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline); +TrackViewConcrete* track_view_concrete_construct (GType object_type, TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline); +GType track_view_concrete_get_type (void); +TrackView* class_factory_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline); +static TrackView* class_factory_real_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline); +void class_factory_set_class_factory (ClassFactory* class_factory); +void class_factory_set_transport_delegate (TransportDelegate* transport_delegate); +ClassFactory* class_factory_new (void); +ClassFactory* class_factory_construct (GType object_type); +static void class_factory_finalize (ClassFactory* obj); + + + +#line 9 "ClassFactory.vala" +void track_view_move_to_top (TrackView* self, ClipView* clip_view) { +#line 9 "ClassFactory.vala" + TRACK_VIEW_GET_INTERFACE (self)->move_to_top (self, clip_view); +#line 168 "ClassFactory.c" +} + + +#line 10 "ClassFactory.vala" +void track_view_resize (TrackView* self) { +#line 10 "ClassFactory.vala" + TRACK_VIEW_GET_INTERFACE (self)->resize (self); +#line 176 "ClassFactory.c" +} + + +#line 11 "ClassFactory.vala" +ModelTrack* track_view_get_track (TrackView* self) { +#line 11 "ClassFactory.vala" + return TRACK_VIEW_GET_INTERFACE (self)->get_track (self); +#line 184 "ClassFactory.c" +} + + +#line 12 "ClassFactory.vala" +gint track_view_get_track_height (TrackView* self) { +#line 12 "ClassFactory.vala" + return TRACK_VIEW_GET_INTERFACE (self)->get_track_height (self); +#line 192 "ClassFactory.c" +} + + +#line 13 "ClassFactory.vala" +GtkWidget* track_view_find_child (TrackView* self, double x, double y) { +#line 13 "ClassFactory.vala" + return TRACK_VIEW_GET_INTERFACE (self)->find_child (self, x, y); +#line 200 "ClassFactory.c" +} + + +#line 14 "ClassFactory.vala" +void track_view_select_all (TrackView* self) { +#line 14 "ClassFactory.vala" + TRACK_VIEW_GET_INTERFACE (self)->select_all (self); +#line 208 "ClassFactory.c" +} + + +static void track_view_base_init (TrackViewIface * iface) { + static gboolean initialized = FALSE; + if (!initialized) { + initialized = TRUE; + g_signal_new ("clip_view_added", TYPE_TRACK_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_CLIP_VIEW); + } +} + + +GType track_view_get_type (void) { + static volatile gsize track_view_type_id__volatile = 0; + if (g_once_init_enter (&track_view_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (TrackViewIface), (GBaseInitFunc) track_view_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; + GType track_view_type_id; + track_view_type_id = g_type_register_static (G_TYPE_INTERFACE, "TrackView", &g_define_type_info, 0); + g_type_interface_add_prerequisite (track_view_type_id, GTK_TYPE_WIDGET); + g_once_init_leave (&track_view_type_id__volatile, track_view_type_id); + } + return track_view_type_id__volatile; +} + + +static gpointer _class_factory_ref0 (gpointer self) { + return self ? class_factory_ref (self) : NULL; +} + + +#line 21 "ClassFactory.vala" +ClassFactory* class_factory_get_class_factory (void) { +#line 241 "ClassFactory.c" + ClassFactory* result = NULL; + result = _class_factory_ref0 (class_factory_class_factory); +#line 22 "ClassFactory.vala" + return result; +#line 246 "ClassFactory.c" +} + + +#line 25 "ClassFactory.vala" +static TrackView* class_factory_real_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline) { +#line 252 "ClassFactory.c" + TrackView* result = NULL; +#line 25 "ClassFactory.vala" + g_return_val_if_fail (IS_CLASS_FACTORY (self), NULL); +#line 25 "ClassFactory.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 25 "ClassFactory.vala" + g_return_val_if_fail (IS_TIME_LINE (timeline), NULL); +#line 26 "ClassFactory.vala" + g_assert (class_factory_transport_delegate != NULL); +#line 262 "ClassFactory.c" + result = TRACK_VIEW (g_object_ref_sink (track_view_concrete_new (class_factory_transport_delegate, track, timeline))); +#line 27 "ClassFactory.vala" + return result; +#line 266 "ClassFactory.c" +} + + +#line 25 "ClassFactory.vala" +TrackView* class_factory_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline) { +#line 25 "ClassFactory.vala" + return CLASS_FACTORY_GET_CLASS (self)->get_track_view (self, track, timeline); +#line 274 "ClassFactory.c" +} + + +#line 30 "ClassFactory.vala" +void class_factory_set_class_factory (ClassFactory* class_factory) { +#line 280 "ClassFactory.c" + ClassFactory* _tmp0_; +#line 30 "ClassFactory.vala" + g_return_if_fail (IS_CLASS_FACTORY (class_factory)); +#line 31 "ClassFactory.vala" + class_factory_class_factory = (_tmp0_ = _class_factory_ref0 (class_factory), _class_factory_unref0 (class_factory_class_factory), _tmp0_); +#line 286 "ClassFactory.c" +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 34 "ClassFactory.vala" +void class_factory_set_transport_delegate (TransportDelegate* transport_delegate) { +#line 297 "ClassFactory.c" + TransportDelegate* _tmp0_; +#line 34 "ClassFactory.vala" + g_return_if_fail (IS_TRANSPORT_DELEGATE (transport_delegate)); +#line 35 "ClassFactory.vala" + class_factory_transport_delegate = (_tmp0_ = _g_object_ref0 (transport_delegate), _g_object_unref0 (class_factory_transport_delegate), _tmp0_); +#line 303 "ClassFactory.c" +} + + +#line 17 "ClassFactory.vala" +ClassFactory* class_factory_construct (GType object_type) { +#line 309 "ClassFactory.c" + ClassFactory* self; + self = (ClassFactory*) g_type_create_instance (object_type); + return self; +} + + +#line 17 "ClassFactory.vala" +ClassFactory* class_factory_new (void) { +#line 17 "ClassFactory.vala" + return class_factory_construct (TYPE_CLASS_FACTORY); +#line 320 "ClassFactory.c" +} + + +static void value_class_factory_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void value_class_factory_free_value (GValue* value) { + if (value->data[0].v_pointer) { + class_factory_unref (value->data[0].v_pointer); + } +} + + +static void value_class_factory_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = class_factory_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer value_class_factory_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* value_class_factory_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + ClassFactory* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = class_factory_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* value_class_factory_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + ClassFactory** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = class_factory_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* param_spec_class_factory (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + ParamSpecClassFactory* spec; + g_return_val_if_fail (g_type_is_a (object_type, TYPE_CLASS_FACTORY), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer value_get_class_factory (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLASS_FACTORY), NULL); + return value->data[0].v_pointer; +} + + +void value_set_class_factory (GValue* value, gpointer v_object) { + ClassFactory* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLASS_FACTORY)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_CLASS_FACTORY)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + class_factory_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + class_factory_unref (old); + } +} + + +void value_take_class_factory (GValue* value, gpointer v_object) { + ClassFactory* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLASS_FACTORY)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_CLASS_FACTORY)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + class_factory_unref (old); + } +} + + +static void class_factory_class_init (ClassFactoryClass * klass) { + class_factory_parent_class = g_type_class_peek_parent (klass); + CLASS_FACTORY_CLASS (klass)->finalize = class_factory_finalize; + CLASS_FACTORY_CLASS (klass)->get_track_view = class_factory_real_get_track_view; +} + + +static void class_factory_instance_init (ClassFactory * self) { + self->ref_count = 1; +} + + +static void class_factory_finalize (ClassFactory* obj) { + ClassFactory * self; + self = CLASS_FACTORY (obj); +} + + +GType class_factory_get_type (void) { + static volatile gsize class_factory_type_id__volatile = 0; + if (g_once_init_enter (&class_factory_type_id__volatile)) { + static const GTypeValueTable g_define_type_value_table = { value_class_factory_init, value_class_factory_free_value, value_class_factory_copy_value, value_class_factory_peek_pointer, "p", value_class_factory_collect_value, "p", value_class_factory_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (ClassFactoryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) class_factory_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ClassFactory), 0, (GInstanceInitFunc) class_factory_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + GType class_factory_type_id; + class_factory_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ClassFactory", &g_define_type_info, &g_define_type_fundamental_info, 0); + g_once_init_leave (&class_factory_type_id__volatile, class_factory_type_id); + } + return class_factory_type_id__volatile; +} + + +gpointer class_factory_ref (gpointer instance) { + ClassFactory* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void class_factory_unref (gpointer instance) { + ClassFactory* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + CLASS_FACTORY_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + + + diff --git a/src/marina/marina/ClassFactory.o b/src/marina/marina/ClassFactory.o new file mode 100644 index 0000000000000000000000000000000000000000..ec05091f83c0cf534afaaa9b52cf9af773ae81fb GIT binary patch literal 40284 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_CLIP_LIBRARY_VIEW (clip_library_view_get_type ()) +#define CLIP_LIBRARY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryView)) +#define CLIP_LIBRARY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewClass)) +#define IS_CLIP_LIBRARY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_LIBRARY_VIEW)) +#define IS_CLIP_LIBRARY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_LIBRARY_VIEW)) +#define CLIP_LIBRARY_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewClass)) + +typedef struct _ClipLibraryView ClipLibraryView; +typedef struct _ClipLibraryViewClass ClipLibraryViewClass; +typedef struct _ClipLibraryViewPrivate ClipLibraryViewPrivate; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define CLIP_LIBRARY_VIEW_TYPE_SORT_MODE (clip_library_view_sort_mode_get_type ()) + +#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ()) +#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem)) +#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM)) +#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface)) + +typedef struct _ModelTimeSystem ModelTimeSystem; +typedef struct _ModelTimeSystemIface ModelTimeSystemIface; + +#define CLIP_LIBRARY_VIEW_TYPE_COLUMN_TYPE (clip_library_view_column_type_get_type ()) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (gtk_tree_path_free (var), NULL))) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; +#define _g_free0(var) (var = (g_free (var), NULL)) +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; +#define __g_list_free_gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (_g_list_free_gtk_tree_path_free (var), NULL))) +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +struct _ClipLibraryView { + GtkEventBox parent_instance; + ClipLibraryViewPrivate * priv; +}; + +struct _ClipLibraryViewClass { + GtkEventBoxClass parent_class; +}; + +typedef enum { + CLIP_LIBRARY_VIEW_SORT_MODE_NONE, + CLIP_LIBRARY_VIEW_SORT_MODE_ABC +} ClipLibraryViewSortMode; + +struct _ModelTimeSystemIface { + GTypeInterface parent_iface; + void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div); + gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x); + gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x); + gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time); + gint64 (*get_pixel_snap_time) (ModelTimeSystem* self); + gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time); + float (*get_pixel_percentage) (ModelTimeSystem* self); + gint (*get_start_token) (ModelTimeSystem* self, gint xsize); + gint (*get_next_position) (ModelTimeSystem* self, gint token); + gint (*get_pixel_height) (ModelTimeSystem* self, gint token); + char* (*get_display_string) (ModelTimeSystem* self, gint token); + gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame); + gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize); + char* (*get_time_string) (ModelTimeSystem* self, gint64 time); + char* (*get_time_duration) (ModelTimeSystem* self, gint64 time); +}; + +struct _ClipLibraryViewPrivate { + ModelProject* project; + GtkTreeView* tree_view; + GtkTreeSelection* selection; + GtkLabel* label; + GtkListStore* list_store; + gint num_clipfiles; + GeeArrayList* files_dragging; + GtkIconTheme* icon_theme; + GdkPixbuf* default_audio_icon; + GdkPixbuf* default_video_icon; + GdkPixbuf* default_error_icon; + ClipLibraryViewSortMode sort_mode; + ModelTimeSystem* time_provider; +}; + +typedef enum { + CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL, + CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, + CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION, + CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME +} ClipLibraryViewColumnType; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + +struct _ModelClipFile { + GObject parent_instance; + ModelClipFilePrivate * priv; + char* filename; + GstCaps* video_caps; + GstCaps* audio_caps; + GdkPixbuf* thumbnail; +}; + +struct _ModelClipFileClass { + GObjectClass parent_class; +}; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + + +extern GtkMenu* clip_library_view_context_menu; +GtkMenu* clip_library_view_context_menu = NULL; +static gpointer clip_library_view_parent_class = NULL; + +GType clip_library_view_get_type (void); +GType model_project_get_type (void); +static GType clip_library_view_sort_mode_get_type (void) G_GNUC_UNUSED; +GType model_time_system_get_type (void); +#define CLIP_LIBRARY_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewPrivate)) +enum { + CLIP_LIBRARY_VIEW_DUMMY_PROPERTY +}; +static GType clip_library_view_column_type_get_type (void) G_GNUC_UNUSED; +static GtkTreeViewColumn* clip_library_view_add_column (ClipLibraryView* self, ClipLibraryViewColumnType c); +static gint clip_library_view_name_sort (ClipLibraryView* self, GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b); +static gint _clip_library_view_name_sort_gtk_tree_iter_compare_func (GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b, gpointer self); +void parse_color (const char* color, GdkColor* result); +GType model_clip_file_get_type (void); +static void clip_library_view_on_clipfile_added (ClipLibraryView* self, ModelClipFile* f); +static void _clip_library_view_on_clipfile_added_model_project_clipfile_added (ModelProject* _sender, ModelClipFile* c, gpointer self); +void clip_library_view_on_clipfile_removed (ClipLibraryView* self, ModelClipFile* f); +static void _clip_library_view_on_clipfile_removed_model_project_clipfile_removed (ModelProject* _sender, ModelClipFile* clip_file, gpointer self); +static void clip_library_view_on_remove_all_rows (ClipLibraryView* self); +static void _clip_library_view_on_remove_all_rows_model_project_cleared (ModelProject* _sender, gpointer self); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType model_tempo_information_get_type (void); +static void clip_library_view_on_time_signature_changed (ClipLibraryView* self, Fraction* time_signature); +static void _clip_library_view_on_time_signature_changed_model_tempo_information_time_signature_changed (ModelTempoInformation* _sender, Fraction* time_signature, gpointer self); +static void clip_library_view_on_drag_begin (ClipLibraryView* self, GdkDragContext* c); +static void _clip_library_view_on_drag_begin_gtk_widget_drag_begin (GtkWidget* _sender, GdkDragContext* context, gpointer self); +static void clip_library_view_on_drag_data_get (ClipLibraryView* self, GdkDragContext* context, GtkSelectionData* data, guint info, guint time); +static void _clip_library_view_on_drag_data_get_gtk_widget_drag_data_get (GtkWidget* _sender, GdkDragContext* context, GtkSelectionData* selection_data, guint info, guint time_, gpointer self); +static void clip_library_view_on_cursor_changed (ClipLibraryView* self); +static void _clip_library_view_on_cursor_changed_gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self); +static gboolean clip_library_view_on_button_pressed (ClipLibraryView* self, GdkEventButton* b); +static gboolean _clip_library_view_on_button_pressed_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); +static gboolean clip_library_view_on_button_released (ClipLibraryView* self, GdkEventButton* b); +static gboolean _clip_library_view_on_button_released_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); +ClipLibraryView* clip_library_view_new (ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions); +ClipLibraryView* clip_library_view_construct (GType object_type, ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions); +static GtkTreePath* clip_library_view_find_first_selected (ClipLibraryView* self); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +gboolean clip_library_view_has_selection (ClipLibraryView* self); +void clip_library_view_unselect_all (ClipLibraryView* self); +GType model_track_get_type (void); +void model_project_create_clip_importer (ModelProject* self, ModelTrack* track, gboolean timeline_add, gint64 time_to_add, gboolean both_tracks, GtkWindow* progress_window_parent, gint number); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType view_media_engine_get_type (void); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +GType model_library_importer_get_type (void); +void model_library_importer_add_file (ModelLibraryImporter* self, const char* filename, GError** error); +void model_library_importer_start (ModelLibraryImporter* self, GError** error); +static void clip_library_view_real_drag_data_received (GtkWidget* base, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time); +static void _vala_array_add1 (char*** array, int* length, int* size, char* value); +static void _g_list_free_gtk_tree_path_free (GList* self); +static gint clip_library_view_get_selected_rows (ClipLibraryView* self, GList** paths); +gboolean model_clip_file_is_online (ModelClipFile* self); +GType model_media_type_get_type (void); +gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t); +char* isolate_filename (const char* path); +char* model_time_system_get_time_duration (ModelTimeSystem* self, gint64 time); +gint64 model_clip_file_get_length (ModelClipFile* self); +static void clip_library_view_update_iter (ClipLibraryView* self, GtkTreeIter* it, ModelClipFile* clip_file); +static gint clip_library_view_find_clipfile (ClipLibraryView* self, ModelClipFile* f, GtkTreeIter* iter); +static gboolean clip_library_view_remove_row (ClipLibraryView* self, GtkTreeIter* it); +ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename); +gboolean model_project_clipfile_on_track (ModelProject* self, const char* filename); +GtkResponseType dialog_utils_delete_cancel (const char* message); +void model_project_remove_clipfile (ModelProject* self, const char* filename); +char* model_project_get_audio_path (ModelProject* self); +GtkResponseType dialog_utils_delete_keep (const char* message); +void model_undo_manager_reset (ModelUndoManager* self); +static void clip_library_view_delete_row (ClipLibraryView* self, GtkTreeModel* model, GtkTreePath* path); +GeeArrayList* clip_library_view_get_selected_files (ClipLibraryView* self); +void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description); +void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description); +void clip_library_view_delete_selection (ClipLibraryView* self); +void clip_library_view_select_all (ClipLibraryView* self); +gint stricmp (const char* str1, const char* str2); +static void clip_library_view_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); +static int _vala_strcmp0 (const char * str1, const char * str2); + +extern const GtkTargetEntry drag_target_entries[1]; + + +static GType clip_library_view_sort_mode_get_type (void) { + static volatile gsize clip_library_view_sort_mode_type_id__volatile = 0; + if (g_once_init_enter (&clip_library_view_sort_mode_type_id__volatile)) { + static const GEnumValue values[] = {{CLIP_LIBRARY_VIEW_SORT_MODE_NONE, "CLIP_LIBRARY_VIEW_SORT_MODE_NONE", "none"}, {CLIP_LIBRARY_VIEW_SORT_MODE_ABC, "CLIP_LIBRARY_VIEW_SORT_MODE_ABC", "abc"}, {0, NULL, NULL}}; + GType clip_library_view_sort_mode_type_id; + clip_library_view_sort_mode_type_id = g_enum_register_static ("ClipLibraryViewSortMode", values); + g_once_init_leave (&clip_library_view_sort_mode_type_id__volatile, clip_library_view_sort_mode_type_id); + } + return clip_library_view_sort_mode_type_id__volatile; +} + + +static GType clip_library_view_column_type_get_type (void) { + static volatile gsize clip_library_view_column_type_type_id__volatile = 0; + if (g_once_init_enter (&clip_library_view_column_type_type_id__volatile)) { + static const GEnumValue values[] = {{CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL", "thumbnail"}, {CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME", "name"}, {CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION", "duration"}, {CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME", "filename"}, {0, NULL, NULL}}; + GType clip_library_view_column_type_type_id; + clip_library_view_column_type_type_id = g_enum_register_static ("ClipLibraryViewColumnType", values); + g_once_init_leave (&clip_library_view_column_type_type_id__volatile, clip_library_view_column_type_type_id); + } + return clip_library_view_column_type_type_id__volatile; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 480 "ClipLibraryView.vala" +static gint _clip_library_view_name_sort_gtk_tree_iter_compare_func (GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b, gpointer self) { +#line 422 "ClipLibraryView.c" + gint result; + result = clip_library_view_name_sort (self, model, a, b); + return result; +} + + +#line 332 "ClipLibraryView.vala" +static void _clip_library_view_on_clipfile_added_model_project_clipfile_added (ModelProject* _sender, ModelClipFile* c, gpointer self) { +#line 431 "ClipLibraryView.c" + clip_library_view_on_clipfile_added (self, c); +} + + +#line 372 "ClipLibraryView.vala" +static void _clip_library_view_on_clipfile_removed_model_project_clipfile_removed (ModelProject* _sender, ModelClipFile* clip_file, gpointer self) { +#line 438 "ClipLibraryView.c" + clip_library_view_on_clipfile_removed (self, clip_file); +} + + +#line 394 "ClipLibraryView.vala" +static void _clip_library_view_on_remove_all_rows_model_project_cleared (ModelProject* _sender, gpointer self) { +#line 445 "ClipLibraryView.c" + clip_library_view_on_remove_all_rows (self); +} + + +#line 406 "ClipLibraryView.vala" +static void _clip_library_view_on_time_signature_changed_model_tempo_information_time_signature_changed (ModelTempoInformation* _sender, Fraction* time_signature, gpointer self) { +#line 452 "ClipLibraryView.c" + clip_library_view_on_time_signature_changed (self, time_signature); +} + + +#line 264 "ClipLibraryView.vala" +static void _clip_library_view_on_drag_begin_gtk_widget_drag_begin (GtkWidget* _sender, GdkDragContext* context, gpointer self) { +#line 459 "ClipLibraryView.c" + clip_library_view_on_drag_begin (self, context); +} + + +#line 239 "ClipLibraryView.vala" +static void _clip_library_view_on_drag_data_get_gtk_widget_drag_data_get (GtkWidget* _sender, GdkDragContext* context, GtkSelectionData* selection_data, guint info, guint time_, gpointer self) { +#line 466 "ClipLibraryView.c" + clip_library_view_on_drag_data_get (self, context, selection_data, info, time_); +} + + +#line 205 "ClipLibraryView.vala" +static void _clip_library_view_on_cursor_changed_gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) { +#line 473 "ClipLibraryView.c" + clip_library_view_on_cursor_changed (self); +} + + +#line 124 "ClipLibraryView.vala" +static gboolean _clip_library_view_on_button_pressed_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { +#line 480 "ClipLibraryView.c" + gboolean result; + result = clip_library_view_on_button_pressed (self, event); + return result; +} + + +#line 166 "ClipLibraryView.vala" +static gboolean _clip_library_view_on_button_released_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { +#line 489 "ClipLibraryView.c" + gboolean result; + result = clip_library_view_on_button_released (self, event); + return result; +} + + +#line 42 "ClipLibraryView.vala" +ClipLibraryView* clip_library_view_construct (GType object_type, ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions) { +#line 498 "ClipLibraryView.c" + GError * _inner_error_; + ClipLibraryView * self; + ModelProject* _tmp0_; + ModelTimeSystem* _tmp1_; + GtkIconTheme* _tmp2_; + GtkListStore* _tmp3_; + GtkTreeView* _tmp4_; + GtkTreeViewColumn* _tmp5_; + GtkTreeViewColumn* name_column; + GtkTreeViewColumn* _tmp6_; + GdkColor _tmp11_; + GdkColor _tmp10_ = {0}; + GdkColor _tmp13_; + GdkColor _tmp12_ = {0}; + GtkTreeSelection* _tmp14_; +#line 42 "ClipLibraryView.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (p), NULL); +#line 42 "ClipLibraryView.vala" + g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (time_provider), NULL); +#line 518 "ClipLibraryView.c" + _inner_error_ = NULL; + self = g_object_newv (object_type, 0, NULL); +#line 44 "ClipLibraryView.vala" + gtk_drag_dest_set (GTK_WIDGET (self), GTK_DEST_DEFAULT_ALL, drag_target_entries, G_N_ELEMENTS (drag_target_entries), GDK_ACTION_COPY); +#line 45 "ClipLibraryView.vala" + self->priv->project = (_tmp0_ = _g_object_ref0 (p), _g_object_unref0 (self->priv->project), _tmp0_); +#line 46 "ClipLibraryView.vala" + self->priv->time_provider = (_tmp1_ = _g_object_ref0 (time_provider), _g_object_unref0 (self->priv->time_provider), _tmp1_); +#line 48 "ClipLibraryView.vala" + self->priv->icon_theme = (_tmp2_ = _g_object_ref0 (gtk_icon_theme_get_default ()), _g_object_unref0 (self->priv->icon_theme), _tmp2_); +#line 50 "ClipLibraryView.vala" + self->priv->list_store = (_tmp3_ = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, -1, NULL), _g_object_unref0 (self->priv->list_store), _tmp3_); +#line 53 "ClipLibraryView.vala" + self->priv->tree_view = (_tmp4_ = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new_with_model (GTK_TREE_MODEL (self->priv->list_store))), _g_object_unref0 (self->priv->tree_view), _tmp4_); +#line 55 "ClipLibraryView.vala" + _tmp5_ = clip_library_view_add_column (self, CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL); +#line 535 "ClipLibraryView.c" + _g_object_unref0 (_tmp5_); +#line 56 "ClipLibraryView.vala" + name_column = clip_library_view_add_column (self, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME); +#line 57 "ClipLibraryView.vala" + _tmp6_ = clip_library_view_add_column (self, CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION); +#line 541 "ClipLibraryView.c" + _g_object_unref0 (_tmp6_); +#line 58 "ClipLibraryView.vala" + gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (self->priv->list_store), _clip_library_view_name_sort_gtk_tree_iter_compare_func, g_object_ref (self), g_object_unref); +#line 59 "ClipLibraryView.vala" + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (self->priv->list_store), gtk_tree_view_column_get_sort_column_id (name_column), GTK_SORT_ASCENDING); +#line 61 "ClipLibraryView.vala" + self->priv->num_clipfiles = 0; +#line 62 "ClipLibraryView.vala" + if (drag_message != NULL) { +#line 551 "ClipLibraryView.c" + GtkLabel* _tmp7_; + GdkColor _tmp9_; + GdkColor _tmp8_ = {0}; +#line 63 "ClipLibraryView.vala" + self->priv->label = (_tmp7_ = g_object_ref_sink ((GtkLabel*) gtk_label_new (drag_message)), _g_object_unref0 (self->priv->label), _tmp7_); +#line 64 "ClipLibraryView.vala" + gtk_widget_modify_fg (GTK_WIDGET (self->priv->label), GTK_STATE_NORMAL, (_tmp9_ = (parse_color ("#fff", &_tmp8_), _tmp8_), &_tmp9_)); +#line 559 "ClipLibraryView.c" + } +#line 67 "ClipLibraryView.vala" + gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, (_tmp11_ = (parse_color ("#444", &_tmp10_), _tmp10_), &_tmp11_)); +#line 68 "ClipLibraryView.vala" + gtk_widget_modify_base (GTK_WIDGET (self->priv->tree_view), GTK_STATE_NORMAL, (_tmp13_ = (parse_color ("#444", &_tmp12_), _tmp12_), &_tmp13_)); +#line 70 "ClipLibraryView.vala" + gtk_tree_view_set_headers_visible (self->priv->tree_view, FALSE); +#line 71 "ClipLibraryView.vala" + g_signal_connect_object (self->priv->project, "clipfile-added", (GCallback) _clip_library_view_on_clipfile_added_model_project_clipfile_added, self, 0); +#line 72 "ClipLibraryView.vala" + g_signal_connect_object (self->priv->project, "clipfile-removed", (GCallback) _clip_library_view_on_clipfile_removed_model_project_clipfile_removed, self, 0); +#line 73 "ClipLibraryView.vala" + g_signal_connect_object (self->priv->project, "cleared", (GCallback) _clip_library_view_on_remove_all_rows_model_project_cleared, self, 0); +#line 74 "ClipLibraryView.vala" + g_signal_connect_object (MODEL_TEMPO_INFORMATION (self->priv->project), "time-signature-changed", (GCallback) _clip_library_view_on_time_signature_changed_model_tempo_information_time_signature_changed, self, 0); +#line 76 "ClipLibraryView.vala" + gtk_drag_source_set (GTK_WIDGET (self->priv->tree_view), GDK_BUTTON1_MASK, drag_target_entries, G_N_ELEMENTS (drag_target_entries), actions); +#line 77 "ClipLibraryView.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "drag-begin", (GCallback) _clip_library_view_on_drag_begin_gtk_widget_drag_begin, self, 0); +#line 78 "ClipLibraryView.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "drag-data-get", (GCallback) _clip_library_view_on_drag_data_get_gtk_widget_drag_data_get, self, 0); +#line 79 "ClipLibraryView.vala" + g_signal_connect_object (self->priv->tree_view, "cursor-changed", (GCallback) _clip_library_view_on_cursor_changed_gtk_tree_view_cursor_changed, self, 0); +#line 81 "ClipLibraryView.vala" + self->priv->selection = (_tmp14_ = _g_object_ref0 (gtk_tree_view_get_selection (self->priv->tree_view)), _g_object_unref0 (self->priv->selection), _tmp14_); +#line 82 "ClipLibraryView.vala" + gtk_tree_selection_set_mode (self->priv->selection, GTK_SELECTION_MULTIPLE); +#line 83 "ClipLibraryView.vala" + if (self->priv->label != NULL) { +#line 84 "ClipLibraryView.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->label)); +#line 591 "ClipLibraryView.c" + } +#line 92 "ClipLibraryView.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "button-press-event", (GCallback) _clip_library_view_on_button_pressed_gtk_widget_button_press_event, self, 0); +#line 93 "ClipLibraryView.vala" + g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "button-release-event", (GCallback) _clip_library_view_on_button_released_gtk_widget_button_release_event, self, 0); +#line 597 "ClipLibraryView.c" + { + GdkPixbuf* _tmp15_; + GdkPixbuf* _tmp16_; + GdkPixbuf* _tmp17_; + GdkPixbuf* _tmp18_; + GdkPixbuf* _tmp19_; + GdkPixbuf* _tmp20_; +#line 97 "ClipLibraryView.vala" + _tmp15_ = gtk_icon_theme_load_icon (self->priv->icon_theme, "audio-x-generic", 32, (GtkIconLookupFlags) 0, &_inner_error_); +#line 607 "ClipLibraryView.c" + if (_inner_error_ != NULL) { + goto __catch0_g_error; + } +#line 96 "ClipLibraryView.vala" + self->priv->default_audio_icon = (_tmp16_ = _g_object_ref0 (_tmp15_), _g_object_unref0 (self->priv->default_audio_icon), _tmp16_); +#line 99 "ClipLibraryView.vala" + _tmp17_ = gtk_icon_theme_load_icon (self->priv->icon_theme, "video-x-generic", 32, (GtkIconLookupFlags) 0, &_inner_error_); +#line 615 "ClipLibraryView.c" + if (_inner_error_ != NULL) { + goto __catch0_g_error; + } +#line 98 "ClipLibraryView.vala" + self->priv->default_video_icon = (_tmp18_ = _g_object_ref0 (_tmp17_), _g_object_unref0 (self->priv->default_video_icon), _tmp18_); +#line 101 "ClipLibraryView.vala" + _tmp19_ = gtk_icon_theme_load_icon (self->priv->icon_theme, "error", 32, (GtkIconLookupFlags) 0, &_inner_error_); +#line 623 "ClipLibraryView.c" + if (_inner_error_ != NULL) { + goto __catch0_g_error; + } +#line 100 "ClipLibraryView.vala" + self->priv->default_error_icon = (_tmp20_ = _g_object_ref0 (_tmp19_), _g_object_unref0 (self->priv->default_error_icon), _tmp20_); +#line 629 "ClipLibraryView.c" + } + goto __finally0; + __catch0_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally0: + if (_inner_error_ != NULL) { + _g_object_unref0 (name_column); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } +#line 106 "ClipLibraryView.vala" + self->priv->sort_mode = CLIP_LIBRARY_VIEW_SORT_MODE_ABC; +#line 650 "ClipLibraryView.c" + _g_object_unref0 (name_column); + return self; +} + + +#line 42 "ClipLibraryView.vala" +ClipLibraryView* clip_library_view_new (ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions) { +#line 42 "ClipLibraryView.vala" + return clip_library_view_construct (TYPE_CLIP_LIBRARY_VIEW, p, time_provider, drag_message, actions); +#line 660 "ClipLibraryView.c" +} + + +#line 109 "ClipLibraryView.vala" +static GtkTreePath* clip_library_view_find_first_selected (ClipLibraryView* self) { +#line 666 "ClipLibraryView.c" + GtkTreePath* result = NULL; + GtkTreeIter it = {0}; + GtkTreeModel* model; + gboolean b; +#line 109 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), NULL); +#line 111 "ClipLibraryView.vala" + model = _g_object_ref0 (gtk_tree_view_get_model (self->priv->tree_view)); +#line 113 "ClipLibraryView.vala" + b = gtk_tree_model_get_iter_first (model, &it); +#line 114 "ClipLibraryView.vala" + while (TRUE) { +#line 679 "ClipLibraryView.c" + GtkTreePath* path; +#line 114 "ClipLibraryView.vala" + if (!b) { +#line 114 "ClipLibraryView.vala" + break; +#line 685 "ClipLibraryView.c" + } +#line 115 "ClipLibraryView.vala" + path = gtk_tree_model_get_path (model, &it); +#line 116 "ClipLibraryView.vala" + if (gtk_tree_selection_path_is_selected (self->priv->selection, path)) { +#line 691 "ClipLibraryView.c" + result = path; + _g_object_unref0 (model); +#line 117 "ClipLibraryView.vala" + return result; +#line 696 "ClipLibraryView.c" + } +#line 119 "ClipLibraryView.vala" + b = gtk_tree_model_iter_next (model, &it); +#line 700 "ClipLibraryView.c" + _gtk_tree_path_free0 (path); + } + result = NULL; + _g_object_unref0 (model); +#line 121 "ClipLibraryView.vala" + return result; +#line 707 "ClipLibraryView.c" +} + + +#line 124 "ClipLibraryView.vala" +static gboolean clip_library_view_on_button_pressed (ClipLibraryView* self, GdkEventButton* b) { +#line 713 "ClipLibraryView.c" + gboolean result = FALSE; + GtkTreePath* path; + gint cell_x = 0; + gint cell_y = 0; + GtkTreePath* _tmp1_; + GtkTreePath* _tmp0_ = NULL; + gboolean shift_pressed; + gboolean control_pressed; + gboolean _tmp2_ = FALSE; +#line 124 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE); +#line 125 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_button_pressed"); +#line 727 "ClipLibraryView.c" + path = NULL; +#line 131 "ClipLibraryView.vala" + gtk_tree_view_get_path_at_pos (self->priv->tree_view, (gint) (*b).x, (gint) (*b).y, &_tmp0_, NULL, &cell_x, &cell_y); +#line 131 "ClipLibraryView.vala" + path = (_tmp1_ = _tmp0_, _gtk_tree_path_free0 (path), _tmp1_); +#line 133 "ClipLibraryView.vala" + if (path == NULL) { +#line 134 "ClipLibraryView.vala" + gtk_tree_selection_unselect_all (self->priv->selection); +#line 737 "ClipLibraryView.c" + result = TRUE; + _gtk_tree_path_free0 (path); +#line 135 "ClipLibraryView.vala" + return result; +#line 742 "ClipLibraryView.c" + } +#line 138 "ClipLibraryView.vala" + shift_pressed = ((*b).state & GDK_SHIFT_MASK) != 0; +#line 139 "ClipLibraryView.vala" + control_pressed = ((*b).state & GDK_CONTROL_MASK) != 0; +#line 141 "ClipLibraryView.vala" + if (!control_pressed) { +#line 142 "ClipLibraryView.vala" + _tmp2_ = !shift_pressed; +#line 752 "ClipLibraryView.c" + } else { +#line 141 "ClipLibraryView.vala" + _tmp2_ = FALSE; +#line 756 "ClipLibraryView.c" + } +#line 141 "ClipLibraryView.vala" + if (_tmp2_) { +#line 143 "ClipLibraryView.vala" + if (!gtk_tree_selection_path_is_selected (self->priv->selection, path)) { +#line 144 "ClipLibraryView.vala" + gtk_tree_selection_unselect_all (self->priv->selection); +#line 764 "ClipLibraryView.c" + } + } else { +#line 146 "ClipLibraryView.vala" + if (shift_pressed) { +#line 769 "ClipLibraryView.c" + GtkTreePath* first; +#line 147 "ClipLibraryView.vala" + first = clip_library_view_find_first_selected (self); +#line 149 "ClipLibraryView.vala" + if (first != NULL) { +#line 150 "ClipLibraryView.vala" + gtk_tree_selection_select_range (self->priv->selection, first, path); +#line 777 "ClipLibraryView.c" + } + _gtk_tree_path_free0 (first); + } + } +#line 153 "ClipLibraryView.vala" + gtk_tree_selection_select_path (self->priv->selection, path); +#line 155 "ClipLibraryView.vala" + if ((*b).button == 3) { +#line 156 "ClipLibraryView.vala" + g_signal_emit_by_name (self, "selection-changed", TRUE); +#line 157 "ClipLibraryView.vala" + gtk_menu_shell_select_first (GTK_MENU_SHELL (clip_library_view_context_menu), TRUE); +#line 158 "ClipLibraryView.vala" + gtk_menu_popup (clip_library_view_context_menu, NULL, NULL, NULL, NULL, (guint) 0, (*b).time); +#line 792 "ClipLibraryView.c" + } else { +#line 160 "ClipLibraryView.vala" + gtk_menu_popdown (clip_library_view_context_menu); +#line 796 "ClipLibraryView.c" + } + result = TRUE; + _gtk_tree_path_free0 (path); +#line 163 "ClipLibraryView.vala" + return result; +#line 802 "ClipLibraryView.c" +} + + +#line 166 "ClipLibraryView.vala" +static gboolean clip_library_view_on_button_released (ClipLibraryView* self, GdkEventButton* b) { +#line 808 "ClipLibraryView.c" + gboolean result = FALSE; + GtkTreePath* path; + GtkTreeViewColumn* column; + gint cell_x = 0; + gint cell_y = 0; + GtkTreeViewColumn* _tmp3_; + GtkTreeViewColumn* _tmp2_ = NULL; + GtkTreePath* _tmp1_; + GtkTreePath* _tmp0_ = NULL; + gboolean _tmp4_ = FALSE; + gboolean shift_pressed; + gboolean control_pressed; + gboolean _tmp6_ = FALSE; +#line 166 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE); +#line 167 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_button_released"); +#line 826 "ClipLibraryView.c" + path = NULL; + column = NULL; +#line 174 "ClipLibraryView.vala" + (gtk_tree_view_get_path_at_pos (self->priv->tree_view, (gint) (*b).x, (gint) (*b).y, &_tmp0_, &_tmp2_, &cell_x, &cell_y), path = (_tmp1_ = _tmp0_, _gtk_tree_path_free0 (path), _tmp1_)); +#line 174 "ClipLibraryView.vala" + column = (_tmp3_ = _g_object_ref0 (_tmp2_), _g_object_unref0 (column), _tmp3_); +#line 185 "ClipLibraryView.vala" + if (path == NULL) { +#line 185 "ClipLibraryView.vala" + _tmp4_ = TRUE; +#line 837 "ClipLibraryView.c" + } else { + gboolean _tmp5_ = FALSE; +#line 186 "ClipLibraryView.vala" + if (cell_x == 0) { +#line 186 "ClipLibraryView.vala" + _tmp5_ = cell_y == 0; +#line 844 "ClipLibraryView.c" + } else { +#line 186 "ClipLibraryView.vala" + _tmp5_ = FALSE; +#line 848 "ClipLibraryView.c" + } +#line 186 "ClipLibraryView.vala" + _tmp4_ = _tmp5_; +#line 852 "ClipLibraryView.c" + } +#line 185 "ClipLibraryView.vala" + if (_tmp4_) { +#line 187 "ClipLibraryView.vala" + g_signal_emit_by_name (self, "selection-changed", FALSE); +#line 858 "ClipLibraryView.c" + result = TRUE; + _gtk_tree_path_free0 (path); + _g_object_unref0 (column); +#line 188 "ClipLibraryView.vala" + return result; +#line 864 "ClipLibraryView.c" + } +#line 191 "ClipLibraryView.vala" + shift_pressed = ((*b).state & GDK_SHIFT_MASK) != 0; +#line 192 "ClipLibraryView.vala" + control_pressed = ((*b).state & GDK_CONTROL_MASK) != 0; +#line 194 "ClipLibraryView.vala" + if (!control_pressed) { +#line 195 "ClipLibraryView.vala" + _tmp6_ = !shift_pressed; +#line 874 "ClipLibraryView.c" + } else { +#line 194 "ClipLibraryView.vala" + _tmp6_ = FALSE; +#line 878 "ClipLibraryView.c" + } +#line 194 "ClipLibraryView.vala" + if (_tmp6_) { +#line 196 "ClipLibraryView.vala" + if (gtk_tree_selection_path_is_selected (self->priv->selection, path)) { +#line 197 "ClipLibraryView.vala" + gtk_tree_selection_unselect_all (self->priv->selection); +#line 886 "ClipLibraryView.c" + } + } +#line 199 "ClipLibraryView.vala" + gtk_tree_selection_select_path (self->priv->selection, path); +#line 200 "ClipLibraryView.vala" + g_signal_emit_by_name (self, "selection-changed", TRUE); +#line 893 "ClipLibraryView.c" + result = TRUE; + _gtk_tree_path_free0 (path); + _g_object_unref0 (column); +#line 202 "ClipLibraryView.vala" + return result; +#line 899 "ClipLibraryView.c" +} + + +#line 205 "ClipLibraryView.vala" +static void clip_library_view_on_cursor_changed (ClipLibraryView* self) { +#line 205 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 206 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_cursor_changed"); +#line 207 "ClipLibraryView.vala" + g_signal_emit_by_name (self, "selection-changed", clip_library_view_has_selection (self)); +#line 911 "ClipLibraryView.c" +} + + +#line 210 "ClipLibraryView.vala" +void clip_library_view_unselect_all (ClipLibraryView* self) { +#line 210 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 211 "ClipLibraryView.vala" + gtk_tree_selection_unselect_all (self->priv->selection); +#line 212 "ClipLibraryView.vala" + g_signal_emit_by_name (self, "selection-changed", FALSE); +#line 923 "ClipLibraryView.c" +} + + +#line 215 "ClipLibraryView.vala" +static void clip_library_view_real_drag_data_received (GtkWidget* base, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time) { +#line 929 "ClipLibraryView.c" + ClipLibraryView * self; + GError * _inner_error_; + char** _tmp1_; + gint _a_size_; + gint a_length1; + char** _tmp0_; + char** a; + self = CLIP_LIBRARY_VIEW (base); +#line 215 "ClipLibraryView.vala" + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); +#line 215 "ClipLibraryView.vala" + g_return_if_fail (selection_data != NULL); +#line 942 "ClipLibraryView.c" + _inner_error_ = NULL; +#line 218 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drag_data_received"); +#line 946 "ClipLibraryView.c" + a = (_tmp1_ = _tmp0_ = gtk_selection_data_get_uris (selection_data), a_length1 = _vala_array_length (_tmp0_), _a_size_ = a_length1, _tmp1_); +#line 220 "ClipLibraryView.vala" + gtk_drag_finish (context, TRUE, FALSE, (guint32) time); +#line 222 "ClipLibraryView.vala" + model_project_create_clip_importer (self->priv->project, NULL, FALSE, (gint64) 0, FALSE, GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))), a_length1); +#line 952 "ClipLibraryView.c" + { + { + char** s_collection; + int s_collection_length1; + int s_it; +#line 225 "ClipLibraryView.vala" + s_collection = a; +#line 960 "ClipLibraryView.c" + s_collection_length1 = a_length1; + for (s_it = 0; s_it < a_length1; s_it = s_it + 1) { + char* s; + s = g_strdup (s_collection[s_it]); + { + char* filename; + filename = NULL; + { + char* _tmp2_; + char* _tmp3_; +#line 228 "ClipLibraryView.vala" + _tmp2_ = g_filename_from_uri (s, NULL, &_inner_error_); +#line 973 "ClipLibraryView.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_CONVERT_ERROR) { + goto __catch2_g_convert_error; + } + _g_free0 (s); + _g_free0 (filename); + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 228 "ClipLibraryView.vala" + filename = (_tmp3_ = _tmp2_, _g_free0 (filename), _tmp3_); +#line 987 "ClipLibraryView.c" + } + goto __finally2; + __catch2_g_convert_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + _g_free0 (s); + _g_free0 (filename); +#line 229 "ClipLibraryView.vala" + continue; +#line 1001 "ClipLibraryView.c" + } + } + __finally2: + if (_inner_error_ != NULL) { + _g_free0 (s); + _g_free0 (filename); + goto __catch1_g_error; + } +#line 230 "ClipLibraryView.vala" + model_library_importer_add_file (self->priv->project->importer, filename, &_inner_error_); +#line 1012 "ClipLibraryView.c" + if (_inner_error_ != NULL) { + _g_free0 (s); + _g_free0 (filename); + goto __catch1_g_error; + } + _g_free0 (s); + _g_free0 (filename); + } + } + } +#line 232 "ClipLibraryView.vala" + model_library_importer_start (self->priv->project->importer, &_inner_error_); +#line 1025 "ClipLibraryView.c" + if (_inner_error_ != NULL) { + goto __catch1_g_error; + } + } + goto __finally1; + __catch1_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 234 "ClipLibraryView.vala" + g_signal_emit_by_name (self->priv->project, "error-occurred", "Error importing", e->message); +#line 1039 "ClipLibraryView.c" + _g_error_free0 (e); + } + } + __finally1: + if (_inner_error_ != NULL) { + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL); +} + + +static void _vala_array_add1 (char*** array, int* length, int* size, char* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (char*, *array, (*size) + 1); + } + (*array)[(*length)++] = value; + (*array)[*length] = NULL; +} + + +#line 239 "ClipLibraryView.vala" +static void clip_library_view_on_drag_data_get (ClipLibraryView* self, GdkDragContext* context, GtkSelectionData* data, guint info, guint time) { +#line 1066 "ClipLibraryView.c" + GError * _inner_error_; + char* uri; + char** _tmp0_; + gint _uri_array_size_; + gint uri_array_length1; + char** uri_array; +#line 239 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 239 "ClipLibraryView.vala" + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); +#line 239 "ClipLibraryView.vala" + g_return_if_fail (data != NULL); +#line 1079 "ClipLibraryView.c" + _inner_error_ = NULL; +#line 241 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drag_data_get"); +#line 1083 "ClipLibraryView.c" + uri = NULL; + uri_array = (_tmp0_ = g_new0 (char*, 0 + 1), uri_array_length1 = 0, _uri_array_size_ = uri_array_length1, _tmp0_); + { + GeeIterator* _s_it; + _s_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->files_dragging)); +#line 245 "ClipLibraryView.vala" + while (TRUE) { +#line 1091 "ClipLibraryView.c" + char* s; +#line 245 "ClipLibraryView.vala" + if (!gee_iterator_next (_s_it)) { +#line 245 "ClipLibraryView.vala" + break; +#line 1097 "ClipLibraryView.c" + } +#line 245 "ClipLibraryView.vala" + s = (char*) gee_iterator_get (_s_it); +#line 1101 "ClipLibraryView.c" + { + char* _tmp1_; + char* _tmp2_; +#line 247 "ClipLibraryView.vala" + _tmp1_ = g_filename_to_uri (s, NULL, &_inner_error_); +#line 1107 "ClipLibraryView.c" + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_CONVERT_ERROR) { + goto __catch3_g_convert_error; + } + _g_free0 (s); + _g_object_unref0 (_s_it); + _g_free0 (uri); + uri_array = (_vala_array_free (uri_array, uri_array_length1, (GDestroyNotify) g_free), NULL); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 247 "ClipLibraryView.vala" + uri = (_tmp2_ = _tmp1_, _g_free0 (uri), _tmp2_); +#line 1122 "ClipLibraryView.c" + } + goto __finally3; + __catch3_g_convert_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + char* _tmp3_; +#line 249 "ClipLibraryView.vala" + uri = (_tmp3_ = g_strdup (s), _g_free0 (uri), _tmp3_); +#line 250 "ClipLibraryView.vala" + g_warning ("ClipLibraryView.vala:250: Cannot get URI for %s! (%s)\n", s, e->message); +#line 1136 "ClipLibraryView.c" + _g_error_free0 (e); + } + } + __finally3: + if (_inner_error_ != NULL) { + _g_free0 (s); + _g_object_unref0 (_s_it); + _g_free0 (uri); + uri_array = (_vala_array_free (uri_array, uri_array_length1, (GDestroyNotify) g_free), NULL); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 252 "ClipLibraryView.vala" + _vala_array_add1 (&uri_array, &uri_array_length1, &_uri_array_size_, g_strdup (uri)); +#line 1152 "ClipLibraryView.c" + _g_free0 (s); + } + _g_object_unref0 (_s_it); + } +#line 254 "ClipLibraryView.vala" + gtk_selection_data_set_uris (data, uri_array); +#line 256 "ClipLibraryView.vala" + gtk_drag_set_icon_default (context); +#line 1161 "ClipLibraryView.c" + _g_free0 (uri); + uri_array = (_vala_array_free (uri_array, uri_array_length1, (GDestroyNotify) g_free), NULL); +} + + +static void _g_list_free_gtk_tree_path_free (GList* self) { + g_list_foreach (self, (GFunc) gtk_tree_path_free, NULL); + g_list_free (self); +} + + +#line 259 "ClipLibraryView.vala" +static gint clip_library_view_get_selected_rows (ClipLibraryView* self, GList** paths) { +#line 1175 "ClipLibraryView.c" + gint result = 0; + GList* _tmp0_; +#line 259 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), 0); +#line 1180 "ClipLibraryView.c" + if (paths != NULL) { + *paths = NULL; + } +#line 260 "ClipLibraryView.vala" + *paths = (_tmp0_ = gtk_tree_selection_get_selected_rows (self->priv->selection, NULL), __g_list_free_gtk_tree_path_free0 (*paths), _tmp0_); +#line 1186 "ClipLibraryView.c" + result = (gint) g_list_length (*paths); +#line 261 "ClipLibraryView.vala" + return result; +#line 1190 "ClipLibraryView.c" +} + + +static gpointer _gtk_tree_path_copy0 (gpointer self) { + return self ? gtk_tree_path_copy (self) : NULL; +} + + +#line 264 "ClipLibraryView.vala" +static void clip_library_view_on_drag_begin (ClipLibraryView* self, GdkDragContext* c) { +#line 1201 "ClipLibraryView.c" + GList* paths; + GList* _tmp2_; + gint _tmp1_; + GList* _tmp0_ = NULL; +#line 264 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 264 "ClipLibraryView.vala" + g_return_if_fail (GDK_IS_DRAG_CONTEXT (c)); +#line 265 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drag_begin"); +#line 1212 "ClipLibraryView.c" + paths = NULL; +#line 267 "ClipLibraryView.vala" + if ((_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) > 0) { +#line 1216 "ClipLibraryView.c" + gboolean set_pixbuf; +#line 268 "ClipLibraryView.vala" + set_pixbuf = FALSE; +#line 269 "ClipLibraryView.vala" + gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->priv->files_dragging)); +#line 1222 "ClipLibraryView.c" + { + GList* t_collection; + GList* t_it; +#line 270 "ClipLibraryView.vala" + t_collection = paths; +#line 1228 "ClipLibraryView.c" + for (t_it = t_collection; t_it != NULL; t_it = t_it->next) { + GtkTreePath* t; +#line 270 "ClipLibraryView.vala" + t = _gtk_tree_path_copy0 ((GtkTreePath*) t_it->data); +#line 1233 "ClipLibraryView.c" + { + GtkTreeIter iter = {0}; + char* filename; +#line 272 "ClipLibraryView.vala" + gtk_tree_model_get_iter (GTK_TREE_MODEL (self->priv->list_store), &iter, t); +#line 1239 "ClipLibraryView.c" + filename = NULL; +#line 275 "ClipLibraryView.vala" + gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1, -1); +#line 276 "ClipLibraryView.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->files_dragging), filename); +#line 278 "ClipLibraryView.vala" + if (!set_pixbuf) { +#line 1247 "ClipLibraryView.c" + GdkPixbuf* pixbuf; + pixbuf = NULL; +#line 280 "ClipLibraryView.vala" + gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL, &pixbuf, -1, -1); +#line 282 "ClipLibraryView.vala" + gtk_drag_set_icon_pixbuf (c, pixbuf, 0, 0); +#line 283 "ClipLibraryView.vala" + set_pixbuf = TRUE; +#line 1256 "ClipLibraryView.c" + _g_object_unref0 (pixbuf); + } + _gtk_tree_path_free0 (t); + _g_free0 (filename); + } + } + } + } + __g_list_free_gtk_tree_path_free0 (paths); +} + + +#line 289 "ClipLibraryView.vala" +static GtkTreeViewColumn* clip_library_view_add_column (ClipLibraryView* self, ClipLibraryViewColumnType c) { +#line 1271 "ClipLibraryView.c" + GtkTreeViewColumn* result = NULL; + GtkTreeViewColumn* column; + GtkCellRenderer* renderer; +#line 289 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), NULL); +#line 290 "ClipLibraryView.vala" + column = g_object_ref_sink (gtk_tree_view_column_new ()); +#line 1279 "ClipLibraryView.c" + renderer = NULL; +#line 293 "ClipLibraryView.vala" + if (c == CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL) { +#line 1283 "ClipLibraryView.c" + GtkCellRenderer* _tmp0_; +#line 294 "ClipLibraryView.vala" + renderer = (_tmp0_ = GTK_CELL_RENDERER (g_object_ref_sink ((GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ())), _g_object_unref0 (renderer), _tmp0_); +#line 1287 "ClipLibraryView.c" + } else { + GtkCellRenderer* _tmp1_; + GdkColor _tmp2_ = {0}; + GdkColor color; +#line 296 "ClipLibraryView.vala" + renderer = (_tmp1_ = GTK_CELL_RENDERER (g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), _g_object_unref0 (renderer), _tmp1_); +#line 297 "ClipLibraryView.vala" + color = (parse_color ("#FFF", &_tmp2_), _tmp2_); +#line 298 "ClipLibraryView.vala" + g_object_set (G_OBJECT (renderer), "foreground-gdk", &color, NULL); +#line 1298 "ClipLibraryView.c" + } +#line 301 "ClipLibraryView.vala" + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), renderer, TRUE); +#line 302 "ClipLibraryView.vala" + gtk_tree_view_column_set_resizable (column, TRUE); +#line 304 "ClipLibraryView.vala" + if (c == CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL) { +#line 305 "ClipLibraryView.vala" + gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), renderer, "pixbuf", gtk_tree_view_append_column (self->priv->tree_view, column) - 1); +#line 1308 "ClipLibraryView.c" + } else { +#line 307 "ClipLibraryView.vala" + gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), renderer, "text", gtk_tree_view_append_column (self->priv->tree_view, column) - 1); +#line 1312 "ClipLibraryView.c" + } + result = column; + _g_object_unref0 (renderer); +#line 309 "ClipLibraryView.vala" + return result; +#line 1318 "ClipLibraryView.c" +} + + +#line 312 "ClipLibraryView.vala" +static void clip_library_view_update_iter (ClipLibraryView* self, GtkTreeIter* it, ModelClipFile* clip_file) { +#line 1324 "ClipLibraryView.c" + GdkPixbuf* icon; + char* _tmp5_; + char* _tmp4_; +#line 312 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 312 "ClipLibraryView.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (clip_file)); +#line 1332 "ClipLibraryView.c" + icon = NULL; +#line 315 "ClipLibraryView.vala" + if (model_clip_file_is_online (clip_file)) { +#line 316 "ClipLibraryView.vala" + if (clip_file->thumbnail == NULL) { +#line 1338 "ClipLibraryView.c" + GdkPixbuf* _tmp0_; + GdkPixbuf* _tmp1_; + _tmp0_ = NULL; +#line 317 "ClipLibraryView.vala" + if (model_clip_file_is_of_type (clip_file, MODEL_MEDIA_TYPE_VIDEO)) { +#line 318 "ClipLibraryView.vala" + _tmp0_ = self->priv->default_video_icon; +#line 1346 "ClipLibraryView.c" + } else { +#line 318 "ClipLibraryView.vala" + _tmp0_ = self->priv->default_audio_icon; +#line 1350 "ClipLibraryView.c" + } +#line 317 "ClipLibraryView.vala" + icon = (_tmp1_ = _g_object_ref0 (_tmp0_), _g_object_unref0 (icon), _tmp1_); +#line 1354 "ClipLibraryView.c" + } else { + GdkPixbuf* _tmp2_; +#line 320 "ClipLibraryView.vala" + icon = (_tmp2_ = _g_object_ref0 (clip_file->thumbnail), _g_object_unref0 (icon), _tmp2_); +#line 1359 "ClipLibraryView.c" + } + } else { + GdkPixbuf* _tmp3_; +#line 323 "ClipLibraryView.vala" + icon = (_tmp3_ = _g_object_ref0 (self->priv->default_error_icon), _g_object_unref0 (icon), _tmp3_); +#line 1365 "ClipLibraryView.c" + } +#line 326 "ClipLibraryView.vala" + gtk_list_store_set (self->priv->list_store, it, CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL, icon, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, _tmp4_ = isolate_filename (clip_file->filename), CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION, _tmp5_ = model_time_system_get_time_duration (self->priv->time_provider, model_clip_file_get_length (clip_file)), CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, clip_file->filename, -1, -1); +#line 1369 "ClipLibraryView.c" + _g_free0 (_tmp5_); + _g_free0 (_tmp4_); + _g_object_unref0 (icon); +} + + +#line 332 "ClipLibraryView.vala" +static void clip_library_view_on_clipfile_added (ClipLibraryView* self, ModelClipFile* f) { +#line 1378 "ClipLibraryView.c" + GtkTreeIter it = {0}; +#line 332 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 332 "ClipLibraryView.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 333 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_file_added"); +#line 336 "ClipLibraryView.vala" + if (clip_library_view_find_clipfile (self, f, &it) >= 0) { +#line 337 "ClipLibraryView.vala" + gtk_list_store_remove (self->priv->list_store, &it); +#line 1390 "ClipLibraryView.c" + } else { +#line 339 "ClipLibraryView.vala" + if (self->priv->num_clipfiles == 0) { +#line 340 "ClipLibraryView.vala" + if (self->priv->label != NULL) { +#line 341 "ClipLibraryView.vala" + gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (self->priv->label)); +#line 1398 "ClipLibraryView.c" + } +#line 343 "ClipLibraryView.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->tree_view)); +#line 344 "ClipLibraryView.vala" + gtk_widget_show (GTK_WIDGET (self->priv->tree_view)); +#line 1404 "ClipLibraryView.c" + } +#line 346 "ClipLibraryView.vala" + self->priv->num_clipfiles++; +#line 1408 "ClipLibraryView.c" + } +#line 349 "ClipLibraryView.vala" + gtk_list_store_append (self->priv->list_store, &it); +#line 350 "ClipLibraryView.vala" + clip_library_view_update_iter (self, &it, f); +#line 1414 "ClipLibraryView.c" +} + + +#line 353 "ClipLibraryView.vala" +static gint clip_library_view_find_clipfile (ClipLibraryView* self, ModelClipFile* f, GtkTreeIter* iter) { +#line 1420 "ClipLibraryView.c" + gint result = 0; + GtkTreeModel* model; + gboolean b; + gint i; +#line 353 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), 0); +#line 353 "ClipLibraryView.vala" + g_return_val_if_fail (MODEL_IS_CLIP_FILE (f), 0); +#line 354 "ClipLibraryView.vala" + model = _g_object_ref0 (gtk_tree_view_get_model (self->priv->tree_view)); +#line 356 "ClipLibraryView.vala" + b = gtk_tree_model_get_iter_first (model, iter); +#line 358 "ClipLibraryView.vala" + i = 0; +#line 359 "ClipLibraryView.vala" + while (TRUE) { +#line 1437 "ClipLibraryView.c" + char* filename; +#line 359 "ClipLibraryView.vala" + if (!b) { +#line 359 "ClipLibraryView.vala" + break; +#line 1443 "ClipLibraryView.c" + } + filename = NULL; +#line 361 "ClipLibraryView.vala" + gtk_tree_model_get (model, iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1); +#line 363 "ClipLibraryView.vala" + if (_vala_strcmp0 (filename, f->filename) == 0) { +#line 1450 "ClipLibraryView.c" + result = i; + _g_free0 (filename); + _g_object_unref0 (model); +#line 364 "ClipLibraryView.vala" + return result; +#line 1456 "ClipLibraryView.c" + } +#line 366 "ClipLibraryView.vala" + i++; +#line 367 "ClipLibraryView.vala" + b = gtk_tree_model_iter_next (model, iter); +#line 1462 "ClipLibraryView.c" + _g_free0 (filename); + } + result = -1; + _g_object_unref0 (model); +#line 369 "ClipLibraryView.vala" + return result; +#line 1469 "ClipLibraryView.c" +} + + +#line 372 "ClipLibraryView.vala" +void clip_library_view_on_clipfile_removed (ClipLibraryView* self, ModelClipFile* f) { +#line 1475 "ClipLibraryView.c" + GtkTreeIter it = {0}; +#line 372 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 372 "ClipLibraryView.vala" + g_return_if_fail (MODEL_IS_CLIP_FILE (f)); +#line 373 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_file_removed"); +#line 376 "ClipLibraryView.vala" + if (clip_library_view_find_clipfile (self, f, &it) >= 0) { +#line 377 "ClipLibraryView.vala" + clip_library_view_remove_row (self, &it); +#line 1487 "ClipLibraryView.c" + } +} + + +#line 381 "ClipLibraryView.vala" +static gboolean clip_library_view_remove_row (ClipLibraryView* self, GtkTreeIter* it) { +#line 1494 "ClipLibraryView.c" + gboolean result = FALSE; + gboolean b; +#line 381 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE); +#line 382 "ClipLibraryView.vala" + b = gtk_list_store_remove (self->priv->list_store, it); +#line 383 "ClipLibraryView.vala" + self->priv->num_clipfiles--; +#line 384 "ClipLibraryView.vala" + if (self->priv->num_clipfiles == 0) { +#line 385 "ClipLibraryView.vala" + gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (self->priv->tree_view)); +#line 386 "ClipLibraryView.vala" + if (self->priv->label != NULL) { +#line 387 "ClipLibraryView.vala" + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->label)); +#line 388 "ClipLibraryView.vala" + gtk_widget_show (GTK_WIDGET (self->priv->label)); +#line 1513 "ClipLibraryView.c" + } + } + result = b; +#line 391 "ClipLibraryView.vala" + return result; +#line 1519 "ClipLibraryView.c" +} + + +#line 394 "ClipLibraryView.vala" +static void clip_library_view_on_remove_all_rows (ClipLibraryView* self) { +#line 1525 "ClipLibraryView.c" + GtkTreeModel* model; + GtkTreeIter iter = {0}; + gboolean b; +#line 394 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 395 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_remove_all_rows"); +#line 396 "ClipLibraryView.vala" + model = _g_object_ref0 (gtk_tree_view_get_model (self->priv->tree_view)); +#line 399 "ClipLibraryView.vala" + b = gtk_tree_model_get_iter_first (model, &iter); +#line 401 "ClipLibraryView.vala" + while (TRUE) { +#line 401 "ClipLibraryView.vala" + if (!b) { +#line 401 "ClipLibraryView.vala" + break; +#line 1543 "ClipLibraryView.c" + } +#line 402 "ClipLibraryView.vala" + b = clip_library_view_remove_row (self, &iter); +#line 1547 "ClipLibraryView.c" + } + _g_object_unref0 (model); +} + + +#line 406 "ClipLibraryView.vala" +static void clip_library_view_on_time_signature_changed (ClipLibraryView* self, Fraction* time_signature) { +#line 1555 "ClipLibraryView.c" + GtkTreeIter iter = {0}; + gboolean more_items; +#line 406 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 407 "ClipLibraryView.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_time_signature_changed"); +#line 409 "ClipLibraryView.vala" + more_items = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->list_store), &iter); +#line 410 "ClipLibraryView.vala" + while (TRUE) { +#line 1566 "ClipLibraryView.c" + char* filename; + ModelClipFile* clip_file; + char* _tmp0_; +#line 410 "ClipLibraryView.vala" + if (!more_items) { +#line 410 "ClipLibraryView.vala" + break; +#line 1574 "ClipLibraryView.c" + } + filename = NULL; +#line 412 "ClipLibraryView.vala" + gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1, -1); +#line 413 "ClipLibraryView.vala" + clip_file = model_project_find_clipfile (self->priv->project, filename); +#line 414 "ClipLibraryView.vala" + gtk_list_store_set (self->priv->list_store, &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION, _tmp0_ = model_time_system_get_time_duration (self->priv->time_provider, model_clip_file_get_length (clip_file)), -1, -1); +#line 1583 "ClipLibraryView.c" + _g_free0 (_tmp0_); +#line 416 "ClipLibraryView.vala" + more_items = gtk_tree_model_iter_next (GTK_TREE_MODEL (self->priv->list_store), &iter); +#line 1587 "ClipLibraryView.c" + _g_free0 (filename); + _g_object_unref0 (clip_file); + } +} + + +#line 420 "ClipLibraryView.vala" +static void clip_library_view_delete_row (ClipLibraryView* self, GtkTreeModel* model, GtkTreePath* path) { +#line 1596 "ClipLibraryView.c" + GtkTreeIter it = {0}; +#line 420 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 420 "ClipLibraryView.vala" + g_return_if_fail (GTK_IS_TREE_MODEL (model)); +#line 420 "ClipLibraryView.vala" + g_return_if_fail (path != NULL); +#line 422 "ClipLibraryView.vala" + if (gtk_tree_model_get_iter (GTK_TREE_MODEL (self->priv->list_store), &it, path)) { +#line 1606 "ClipLibraryView.c" + char* filename; + char* _tmp1_; + char* _tmp0_; + gboolean _tmp2_; + filename = NULL; +#line 424 "ClipLibraryView.vala" + gtk_tree_model_get (model, &it, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1, -1); +#line 425 "ClipLibraryView.vala" + if (model_project_clipfile_on_track (self->priv->project, filename)) { +#line 426 "ClipLibraryView.vala" + if (dialog_utils_delete_cancel ("Clip is in use. Delete anyway?") != GTK_RESPONSE_YES) { +#line 1618 "ClipLibraryView.c" + _g_free0 (filename); +#line 428 "ClipLibraryView.vala" + return; +#line 1622 "ClipLibraryView.c" + } + } +#line 431 "ClipLibraryView.vala" + model_project_remove_clipfile (self->priv->project, filename); +#line 433 "ClipLibraryView.vala" + if ((_tmp2_ = _vala_strcmp0 (_tmp0_ = g_path_get_dirname (filename), _tmp1_ = model_project_get_audio_path (self->priv->project)) == 0, _g_free0 (_tmp1_), _g_free0 (_tmp0_), _tmp2_)) { +#line 434 "ClipLibraryView.vala" + if (dialog_utils_delete_keep ("Delete clip from disk? This action is not undoable.") == GTK_RESPONSE_YES) { +#line 436 "ClipLibraryView.vala" + if (g_unlink (filename) != 0) { +#line 437 "ClipLibraryView.vala" + g_signal_emit_by_name (self->priv->project, "error-occurred", "Could not delete %s", filename); +#line 1635 "ClipLibraryView.c" + } +#line 439 "ClipLibraryView.vala" + model_undo_manager_reset (self->priv->project->undo_manager); +#line 1639 "ClipLibraryView.c" + } + } + _g_free0 (filename); + } +} + + +#line 445 "ClipLibraryView.vala" +gboolean clip_library_view_has_selection (ClipLibraryView* self) { +#line 1649 "ClipLibraryView.c" + gboolean result = FALSE; + GList* paths; + GList* _tmp2_; + gint _tmp1_; + GList* _tmp0_ = NULL; +#line 445 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE); +#line 1657 "ClipLibraryView.c" + paths = NULL; + result = (_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) != 0; + __g_list_free_gtk_tree_path_free0 (paths); +#line 447 "ClipLibraryView.vala" + return result; +#line 1663 "ClipLibraryView.c" + __g_list_free_gtk_tree_path_free0 (paths); +} + + +#line 450 "ClipLibraryView.vala" +GeeArrayList* clip_library_view_get_selected_files (ClipLibraryView* self) { +#line 1670 "ClipLibraryView.c" + GeeArrayList* result = NULL; + GList* paths; + GeeArrayList* return_value; + GList* _tmp2_; + gint _tmp1_; + GList* _tmp0_ = NULL; +#line 450 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), NULL); +#line 1679 "ClipLibraryView.c" + paths = NULL; +#line 452 "ClipLibraryView.vala" + return_value = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL); +#line 453 "ClipLibraryView.vala" + if ((_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) != 0) { +#line 1685 "ClipLibraryView.c" + { + GList* path_collection; + GList* path_it; +#line 454 "ClipLibraryView.vala" + path_collection = paths; +#line 1691 "ClipLibraryView.c" + for (path_it = path_collection; path_it != NULL; path_it = path_it->next) { + GtkTreePath* path; +#line 454 "ClipLibraryView.vala" + path = _gtk_tree_path_copy0 ((GtkTreePath*) path_it->data); +#line 1696 "ClipLibraryView.c" + { + GtkTreeIter iter = {0}; +#line 456 "ClipLibraryView.vala" + if (gtk_tree_model_get_iter (GTK_TREE_MODEL (self->priv->list_store), &iter, path)) { +#line 1701 "ClipLibraryView.c" + char* name; + name = NULL; +#line 458 "ClipLibraryView.vala" + gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &name, -1, -1); +#line 459 "ClipLibraryView.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (return_value), name); +#line 1708 "ClipLibraryView.c" + _g_free0 (name); + } + _gtk_tree_path_free0 (path); + } + } + } + } + result = return_value; + __g_list_free_gtk_tree_path_free0 (paths); +#line 463 "ClipLibraryView.vala" + return result; +#line 1720 "ClipLibraryView.c" +} + + +#line 466 "ClipLibraryView.vala" +void clip_library_view_delete_selection (ClipLibraryView* self) { +#line 1726 "ClipLibraryView.c" + GList* paths; + GList* _tmp2_; + gint _tmp1_; + GList* _tmp0_ = NULL; +#line 466 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 1733 "ClipLibraryView.c" + paths = NULL; +#line 468 "ClipLibraryView.vala" + model_undo_manager_start_transaction (self->priv->project->undo_manager, "Delete Clips From Library"); +#line 469 "ClipLibraryView.vala" + if ((_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) > 0) { +#line 1739 "ClipLibraryView.c" + { + gint i; +#line 470 "ClipLibraryView.vala" + i = ((gint) g_list_length (paths)) - 1; +#line 1744 "ClipLibraryView.c" + { + gboolean _tmp3_; +#line 470 "ClipLibraryView.vala" + _tmp3_ = TRUE; +#line 470 "ClipLibraryView.vala" + while (TRUE) { +#line 470 "ClipLibraryView.vala" + if (!_tmp3_) { +#line 470 "ClipLibraryView.vala" + i--; +#line 1755 "ClipLibraryView.c" + } +#line 470 "ClipLibraryView.vala" + _tmp3_ = FALSE; +#line 470 "ClipLibraryView.vala" + if (!(i >= 0)) { +#line 470 "ClipLibraryView.vala" + break; +#line 1763 "ClipLibraryView.c" + } +#line 471 "ClipLibraryView.vala" + clip_library_view_delete_row (self, GTK_TREE_MODEL (self->priv->list_store), (GtkTreePath*) g_list_nth_data (paths, (guint) i)); +#line 1767 "ClipLibraryView.c" + } + } + } + } +#line 473 "ClipLibraryView.vala" + model_undo_manager_end_transaction (self->priv->project->undo_manager, "Delete Clips From Library"); +#line 1774 "ClipLibraryView.c" + __g_list_free_gtk_tree_path_free0 (paths); +} + + +#line 476 "ClipLibraryView.vala" +void clip_library_view_select_all (ClipLibraryView* self) { +#line 476 "ClipLibraryView.vala" + g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self)); +#line 477 "ClipLibraryView.vala" + gtk_tree_selection_select_all (self->priv->selection); +#line 1785 "ClipLibraryView.c" +} + + +#line 480 "ClipLibraryView.vala" +static gint clip_library_view_name_sort (ClipLibraryView* self, GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b) { +#line 1791 "ClipLibraryView.c" + gint result = 0; + char* left; + char* right; +#line 480 "ClipLibraryView.vala" + g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), 0); +#line 480 "ClipLibraryView.vala" + g_return_val_if_fail (GTK_IS_TREE_MODEL (model), 0); +#line 1799 "ClipLibraryView.c" + left = NULL; + right = NULL; +#line 483 "ClipLibraryView.vala" + gtk_tree_model_get (model, a, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, &left, -1); +#line 484 "ClipLibraryView.vala" + gtk_tree_model_get (model, b, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, &right, -1); +#line 1806 "ClipLibraryView.c" + result = stricmp (left, right); + _g_free0 (left); + _g_free0 (right); +#line 485 "ClipLibraryView.vala" + return result; +#line 1812 "ClipLibraryView.c" +} + + +static void clip_library_view_class_init (ClipLibraryViewClass * klass) { + clip_library_view_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ClipLibraryViewPrivate)); + GTK_WIDGET_CLASS (klass)->drag_data_received = clip_library_view_real_drag_data_received; + G_OBJECT_CLASS (klass)->finalize = clip_library_view_finalize; + g_signal_new ("selection_changed", TYPE_CLIP_LIBRARY_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); +} + + +static void clip_library_view_instance_init (ClipLibraryView * self) { + self->priv = CLIP_LIBRARY_VIEW_GET_PRIVATE (self); + self->priv->label = NULL; + self->priv->files_dragging = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL); +} + + +static void clip_library_view_finalize (GObject* obj) { + ClipLibraryView * self; + self = CLIP_LIBRARY_VIEW (obj); + _g_object_unref0 (self->priv->project); + _g_object_unref0 (self->priv->tree_view); + _g_object_unref0 (self->priv->selection); + _g_object_unref0 (self->priv->label); + _g_object_unref0 (self->priv->list_store); + _g_object_unref0 (self->priv->files_dragging); + _g_object_unref0 (self->priv->icon_theme); + _g_object_unref0 (self->priv->default_audio_icon); + _g_object_unref0 (self->priv->default_video_icon); + _g_object_unref0 (self->priv->default_error_icon); + _g_object_unref0 (self->priv->time_provider); + G_OBJECT_CLASS (clip_library_view_parent_class)->finalize (obj); +} + + +GType clip_library_view_get_type (void) { + static volatile gsize clip_library_view_type_id__volatile = 0; + if (g_once_init_enter (&clip_library_view_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ClipLibraryViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) clip_library_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ClipLibraryView), 0, (GInstanceInitFunc) clip_library_view_instance_init, NULL }; + GType clip_library_view_type_id; + clip_library_view_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "ClipLibraryView", &g_define_type_info, 0); + g_once_init_leave (&clip_library_view_type_id__volatile, clip_library_view_type_id); + } + return clip_library_view_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/marina/marina/ClipLibraryView.o b/src/marina/marina/ClipLibraryView.o new file mode 100644 index 0000000000000000000000000000000000000000..40c93caa570464c5803895ea2f30fc334d035914 GIT binary patch literal 126264 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%0ADfjnQ^E>`lrl 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define DIALOG_UTILS_TYPE_FILTER_DESCRIPTION_STRUCT (dialog_utils_filter_description_struct_get_type ()) +typedef struct _DialogUtilsfilter_description_struct DialogUtilsfilter_description_struct; +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define __g_slist_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_free (var), NULL))) + +#define DIALOG_UTILS_TYPE_BUTTON_STRUCT (dialog_utils_button_struct_get_type ()) +typedef struct _DialogUtilsButtonStruct DialogUtilsButtonStruct; + +#define TYPE_CLIP_VIEW (clip_view_get_type ()) +#define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView)) +#define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass)) +#define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW)) +#define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW)) +#define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass)) + +typedef struct _ClipView ClipView; +typedef struct _ClipViewClass ClipViewClass; +typedef struct _ClipViewPrivate ClipViewPrivate; + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +struct _DialogUtilsfilter_description_struct { + char* name; + char* extension; +}; + +struct _DialogUtilsButtonStruct { + char* title; + GtkResponseType type; +}; + +struct _ClipView { + GtkDrawingArea parent_instance; + ClipViewPrivate * priv; + ModelClip* clip; + gint64 initial_time; + gboolean is_selected; + gint height; +}; + +struct _ClipViewClass { + GtkDrawingAreaClass parent_class; +}; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +struct _ModelClipFile { + GObject parent_instance; + ModelClipFilePrivate * priv; + char* filename; + GstCaps* video_caps; + GstCaps* audio_caps; + GdkPixbuf* thumbnail; +}; + +struct _ModelClipFileClass { + GObjectClass parent_class; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + + + +GType dialog_utils_filter_description_struct_get_type (void); +DialogUtilsfilter_description_struct* dialog_utils_filter_description_struct_dup (const DialogUtilsfilter_description_struct* self); +void dialog_utils_filter_description_struct_free (DialogUtilsfilter_description_struct* self); +void dialog_utils_filter_description_struct_copy (const DialogUtilsfilter_description_struct* self, DialogUtilsfilter_description_struct* dest); +void dialog_utils_filter_description_struct_destroy (DialogUtilsfilter_description_struct* self); +GtkFileFilter* dialog_utils_add_filter (GtkFileChooserDialog* d, const char* name, const char* extension); +void dialog_utils_add_filters (DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, GtkFileChooserDialog* d, GeeArrayList* filters, gboolean allow_all); +static void _g_slist_free_g_free (GSList* self); +gboolean dialog_utils_open (GtkWindow* parent, DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, gboolean allow_multiple, gboolean allow_all, GSList** filenames); +void dialog_utils_error (const char* major_message, const char* minor_message); +char* append_extension (const char* path, const char* extension); +gboolean dialog_utils_confirm_replace (GtkWindow* parent, const char* filename); +gboolean dialog_utils_save (GtkWindow* parent, const char* title, gboolean create_directory, DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, char** filename); +char* dialog_utils_bold_message (const char* message); +void dialog_utils_warning (const char* major_message, const char* minor_message); +GType dialog_utils_button_struct_get_type (void); +DialogUtilsButtonStruct* dialog_utils_button_struct_dup (const DialogUtilsButtonStruct* self); +void dialog_utils_button_struct_free (DialogUtilsButtonStruct* self); +void dialog_utils_button_struct_copy (const DialogUtilsButtonStruct* self, DialogUtilsButtonStruct* dest); +void dialog_utils_button_struct_destroy (DialogUtilsButtonStruct* self); +GtkResponseType dialog_utils_run_dialog (GtkWindow* parent, GtkMessageType type, const char* title, const char* message, DialogUtilsButtonStruct* buttons, int buttons_length1); +GtkResponseType dialog_utils_two_button_dialog (const char* message, const char* first_button, const char* second_button); +GtkResponseType dialog_utils_delete_keep (const char* message); +GtkResponseType dialog_utils_add_cancel (const char* message); +GtkResponseType dialog_utils_delete_cancel (const char* message); +void dialog_utils_button_struct_init (DialogUtilsButtonStruct *self, const char* title, GtkResponseType type); +static void _vala_DialogUtilsButtonStruct_array_free (DialogUtilsButtonStruct* array, gint array_length); +GtkResponseType dialog_utils_save_close_cancel (GtkWindow* parent, const char* title, const char* message); +GtkAlignment* dialog_utils_get_aligned_label (float x, float y, float exp_x, float exp_y, const char* text, gboolean selectable); +void dialog_utils_add_label_to_table (GtkTable* t, const char* str, gint x, gint y, gint xpad, gint ypad, gboolean selectable); +GType clip_view_get_type (void); +GType model_clip_get_type (void); +GType model_clip_file_get_type (void); +GType model_media_type_get_type (void); +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +void frame_to_time (gint frame, Fraction* rate, TimeCode* result); +gint time_to_frame_with_rate (gint64 time, Fraction* rate); +gint64 model_clip_get_duration (ModelClip* self); +char* time_code_to_string (TimeCode *self); +gint64 model_clip_file_get_length (ModelClipFile* self); +char* time_to_string (gint64 time); +gboolean model_clip_is_trimmed (ModelClip* self); +gboolean model_clip_file_has_caps_structure (ModelClipFile* self, ModelMediaType m); +gboolean model_clip_file_get_dimensions (ModelClipFile* self, gint* w, gint* h); +gboolean model_clip_file_get_frame_rate (ModelClipFile* self, Fraction* rate); +gboolean model_clip_file_get_sample_rate (ModelClipFile* self, gint* rate); +gboolean model_clip_file_get_num_channels_string (ModelClipFile* self, char** s); +void dialog_utils_show_clip_properties (GtkWindow* parent, ClipView* selected_clip, ModelClipFile* clip_file, Fraction* frames_per_second); + + + +void dialog_utils_filter_description_struct_copy (const DialogUtilsfilter_description_struct* self, DialogUtilsfilter_description_struct* dest) { + dest->name = g_strdup (self->name); + dest->extension = g_strdup (self->extension); +} + + +void dialog_utils_filter_description_struct_destroy (DialogUtilsfilter_description_struct* self) { + _g_free0 (self->name); + _g_free0 (self->extension); +} + + +DialogUtilsfilter_description_struct* dialog_utils_filter_description_struct_dup (const DialogUtilsfilter_description_struct* self) { + DialogUtilsfilter_description_struct* dup; + dup = g_new0 (DialogUtilsfilter_description_struct, 1); + dialog_utils_filter_description_struct_copy (self, dup); + return dup; +} + + +void dialog_utils_filter_description_struct_free (DialogUtilsfilter_description_struct* self) { + dialog_utils_filter_description_struct_destroy (self); + g_free (self); +} + + +GType dialog_utils_filter_description_struct_get_type (void) { + static volatile gsize dialog_utils_filter_description_struct_type_id__volatile = 0; + if (g_once_init_enter (&dialog_utils_filter_description_struct_type_id__volatile)) { + GType dialog_utils_filter_description_struct_type_id; + dialog_utils_filter_description_struct_type_id = g_boxed_type_register_static ("DialogUtilsfilter_description_struct", (GBoxedCopyFunc) dialog_utils_filter_description_struct_dup, (GBoxedFreeFunc) dialog_utils_filter_description_struct_free); + g_once_init_leave (&dialog_utils_filter_description_struct_type_id__volatile, dialog_utils_filter_description_struct_type_id); + } + return dialog_utils_filter_description_struct_type_id__volatile; +} + + +#line 13 "DialogUtils.vala" +GtkFileFilter* dialog_utils_add_filter (GtkFileChooserDialog* d, const char* name, const char* extension) { +#line 242 "DialogUtils.c" + GtkFileFilter* result = NULL; + GtkFileFilter* filter; +#line 13 "DialogUtils.vala" + g_return_val_if_fail (GTK_IS_FILE_CHOOSER_DIALOG (d), NULL); +#line 13 "DialogUtils.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 14 "DialogUtils.vala" + filter = g_object_ref_sink (gtk_file_filter_new ()); +#line 15 "DialogUtils.vala" + gtk_file_filter_set_name (filter, name); +#line 16 "DialogUtils.vala" + if (extension != NULL) { +#line 255 "DialogUtils.c" + char* _tmp0_; +#line 17 "DialogUtils.vala" + gtk_file_filter_add_pattern (filter, _tmp0_ = g_strconcat ("*.", extension, NULL)); +#line 259 "DialogUtils.c" + _g_free0 (_tmp0_); + } else { +#line 19 "DialogUtils.vala" + gtk_file_filter_add_pattern (filter, "*"); +#line 264 "DialogUtils.c" + } +#line 21 "DialogUtils.vala" + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (d), filter); +#line 268 "DialogUtils.c" + result = filter; +#line 22 "DialogUtils.vala" + return result; +#line 272 "DialogUtils.c" +} + + +#line 25 "DialogUtils.vala" +void dialog_utils_add_filters (DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, GtkFileChooserDialog* d, GeeArrayList* filters, gboolean allow_all) { +#line 278 "DialogUtils.c" + gint length; + GtkFileFilter* _tmp2_; +#line 25 "DialogUtils.vala" + g_return_if_fail (GTK_IS_FILE_CHOOSER_DIALOG (d)); +#line 25 "DialogUtils.vala" + g_return_if_fail (GEE_IS_ARRAY_LIST (filters)); +#line 28 "DialogUtils.vala" + length = filter_descriptions_length1; +#line 287 "DialogUtils.c" + { + gint i; +#line 29 "DialogUtils.vala" + i = 0; +#line 292 "DialogUtils.c" + { + gboolean _tmp0_; +#line 29 "DialogUtils.vala" + _tmp0_ = TRUE; +#line 29 "DialogUtils.vala" + while (TRUE) { +#line 299 "DialogUtils.c" + GtkFileFilter* filter; +#line 29 "DialogUtils.vala" + if (!_tmp0_) { +#line 29 "DialogUtils.vala" + i = i + 1; +#line 305 "DialogUtils.c" + } +#line 29 "DialogUtils.vala" + _tmp0_ = FALSE; +#line 29 "DialogUtils.vala" + if (!(i < length)) { +#line 29 "DialogUtils.vala" + break; +#line 313 "DialogUtils.c" + } +#line 30 "DialogUtils.vala" + filter = dialog_utils_add_filter (d, filter_descriptions[i].name, filter_descriptions[i].extension); +#line 32 "DialogUtils.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (filters), filter); +#line 319 "DialogUtils.c" + _g_object_unref0 (filter); + } + } + } +#line 35 "DialogUtils.vala" + if (allow_all) { +#line 326 "DialogUtils.c" + GtkFileFilter* _tmp1_; +#line 36 "DialogUtils.vala" + _tmp1_ = dialog_utils_add_filter (d, "All files", NULL); +#line 330 "DialogUtils.c" + _g_object_unref0 (_tmp1_); + } +#line 40 "DialogUtils.vala" + g_assert (filter_descriptions_length1 == gee_collection_get_size (GEE_COLLECTION (filters))); +#line 42 "DialogUtils.vala" + gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (d), _tmp2_ = (GtkFileFilter*) gee_abstract_list_get (GEE_ABSTRACT_LIST (filters), 0)); +#line 337 "DialogUtils.c" + _g_object_unref0 (_tmp2_); +} + + +static void _g_slist_free_g_free (GSList* self) { + g_slist_foreach (self, (GFunc) g_free, NULL); + g_slist_free (self); +} + + +#line 45 "DialogUtils.vala" +gboolean dialog_utils_open (GtkWindow* parent, DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, gboolean allow_multiple, gboolean allow_all, GSList** filenames) { +#line 350 "DialogUtils.c" + gboolean result = FALSE; + gboolean return_value; + HildonFileChooserDialog* file_chooser; + GeeArrayList* filters; +#line 45 "DialogUtils.vala" + g_return_val_if_fail (GTK_IS_WINDOW (parent), FALSE); +#line 357 "DialogUtils.c" + if (filenames != NULL) { + *filenames = NULL; + } +#line 47 "DialogUtils.vala" + fprintf (stdout, "open called\n"); +#line 48 "DialogUtils.vala" + fflush (stdout); +#line 49 "DialogUtils.vala" + return_value = FALSE; +#line 50 "DialogUtils.vala" + file_chooser = g_object_ref_sink ((HildonFileChooserDialog*) hildon_file_chooser_dialog_new (parent, GTK_FILE_CHOOSER_ACTION_OPEN)); +#line 51 "DialogUtils.vala" + gtk_window_set_title (GTK_WINDOW (file_chooser), "Open Files"); +#line 55 "DialogUtils.vala" + hildon_file_chooser_dialog_set_show_upnp (file_chooser, TRUE); +#line 56 "DialogUtils.vala" + filters = gee_array_list_new (GTK_TYPE_FILE_FILTER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); +#line 57 "DialogUtils.vala" + dialog_utils_add_filters (filter_descriptions, filter_descriptions_length1, GTK_FILE_CHOOSER_DIALOG (file_chooser), filters, allow_all); +#line 58 "DialogUtils.vala" + gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (file_chooser), allow_multiple); +#line 59 "DialogUtils.vala" + if (gtk_dialog_run (GTK_DIALOG (file_chooser)) == GTK_RESPONSE_OK) { +#line 381 "DialogUtils.c" + GSList* _tmp0_; +#line 60 "DialogUtils.vala" + return_value = TRUE; +#line 61 "DialogUtils.vala" + *filenames = (_tmp0_ = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (file_chooser)), __g_slist_free_g_free0 (*filenames), _tmp0_); +#line 387 "DialogUtils.c" + } +#line 63 "DialogUtils.vala" + gtk_object_destroy (GTK_OBJECT (file_chooser)); +#line 391 "DialogUtils.c" + result = return_value; + _g_object_unref0 (file_chooser); + _g_object_unref0 (filters); +#line 64 "DialogUtils.vala" + return result; +#line 397 "DialogUtils.c" +} + + +#line 67 "DialogUtils.vala" +gboolean dialog_utils_save (GtkWindow* parent, const char* title, gboolean create_directory, DialogUtilsfilter_description_struct* filter_descriptions, int filter_descriptions_length1, char** filename) { +#line 403 "DialogUtils.c" + gboolean result = FALSE; + gboolean return_value; + HildonFileChooserDialog* file_chooser; + gint length; + GeeArrayList* filters; +#line 67 "DialogUtils.vala" + g_return_val_if_fail (GTK_IS_WINDOW (parent), FALSE); +#line 67 "DialogUtils.vala" + g_return_val_if_fail (title != NULL, FALSE); +#line 67 "DialogUtils.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 69 "DialogUtils.vala" + return_value = FALSE; +#line 72 "DialogUtils.vala" + file_chooser = g_object_ref_sink ((HildonFileChooserDialog*) hildon_file_chooser_dialog_new (parent, GTK_FILE_CHOOSER_ACTION_SAVE)); +#line 73 "DialogUtils.vala" + gtk_window_set_title (GTK_WINDOW (file_chooser), title); +#line 74 "DialogUtils.vala" + hildon_file_chooser_dialog_set_show_upnp (file_chooser, FALSE); +#line 75 "DialogUtils.vala" + if ((*filename) != NULL) { +#line 425 "DialogUtils.c" + char* _tmp0_; +#line 76 "DialogUtils.vala" + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_chooser), _tmp0_ = g_path_get_dirname (*filename)); +#line 429 "DialogUtils.c" + _g_free0 (_tmp0_); + } else { + } +#line 80 "DialogUtils.vala" + length = filter_descriptions_length1; +#line 81 "DialogUtils.vala" + filters = gee_array_list_new (GTK_TYPE_FILE_FILTER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); +#line 88 "DialogUtils.vala" + while (TRUE) { +#line 439 "DialogUtils.c" + char* local_filename; + GtkFileFilter* selected_filter; + gint i; + char* _tmp3_; + gboolean _tmp4_ = FALSE; +#line 88 "DialogUtils.vala" + if (!(gtk_dialog_run (GTK_DIALOG (file_chooser)) == GTK_RESPONSE_OK)) { +#line 88 "DialogUtils.vala" + break; +#line 449 "DialogUtils.c" + } +#line 89 "DialogUtils.vala" + local_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); +#line 90 "DialogUtils.vala" + if (create_directory) { +#line 455 "DialogUtils.c" + char* _tmp2_; + char* _tmp1_; +#line 91 "DialogUtils.vala" + if (g_mkdir (local_filename, 0777) != 0) { +#line 92 "DialogUtils.vala" + dialog_utils_error ("Could not create directory", g_strerror (errno)); +#line 462 "DialogUtils.c" + ; +#line 93 "DialogUtils.vala" + gtk_window_present (GTK_WINDOW (file_chooser)); +#line 466 "DialogUtils.c" + _g_free0 (local_filename); +#line 94 "DialogUtils.vala" + continue; +#line 470 "DialogUtils.c" + } +#line 96 "DialogUtils.vala" + local_filename = (_tmp2_ = g_build_filename (local_filename, _tmp1_ = g_path_get_basename (local_filename), NULL), _g_free0 (local_filename), _tmp2_); +#line 474 "DialogUtils.c" + _g_free0 (_tmp1_); + } +#line 100 "DialogUtils.vala" + selected_filter = gtk_file_chooser_get_filter (GTK_FILE_CHOOSER (file_chooser)); +#line 102 "DialogUtils.vala" + i = 0; +#line 481 "DialogUtils.c" + { + GeeIterator* _file_filter_it; + _file_filter_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (filters)); +#line 103 "DialogUtils.vala" + while (TRUE) { +#line 487 "DialogUtils.c" + GtkFileFilter* file_filter; +#line 103 "DialogUtils.vala" + if (!gee_iterator_next (_file_filter_it)) { +#line 103 "DialogUtils.vala" + break; +#line 493 "DialogUtils.c" + } +#line 103 "DialogUtils.vala" + file_filter = (GtkFileFilter*) gee_iterator_get (_file_filter_it); +#line 104 "DialogUtils.vala" + if (file_filter == selected_filter) { +#line 499 "DialogUtils.c" + _g_object_unref0 (file_filter); +#line 105 "DialogUtils.vala" + break; +#line 503 "DialogUtils.c" + } +#line 107 "DialogUtils.vala" + i = i + 1; +#line 507 "DialogUtils.c" + _g_object_unref0 (file_filter); + } + _g_object_unref0 (_file_filter_it); + } +#line 110 "DialogUtils.vala" + g_assert (i < length); +#line 112 "DialogUtils.vala" + local_filename = (_tmp3_ = append_extension (local_filename, filter_descriptions[i].extension), _g_free0 (local_filename), _tmp3_); +#line 113 "DialogUtils.vala" + if (!g_file_test (local_filename, G_FILE_TEST_EXISTS)) { +#line 113 "DialogUtils.vala" + _tmp4_ = TRUE; +#line 520 "DialogUtils.c" + } else { +#line 114 "DialogUtils.vala" + _tmp4_ = dialog_utils_confirm_replace (parent, local_filename); +#line 524 "DialogUtils.c" + } +#line 113 "DialogUtils.vala" + if (_tmp4_) { +#line 528 "DialogUtils.c" + char* _tmp5_; +#line 115 "DialogUtils.vala" + return_value = TRUE; +#line 116 "DialogUtils.vala" + *filename = (_tmp5_ = g_strdup (local_filename), _g_free0 (*filename), _tmp5_); +#line 534 "DialogUtils.c" + _g_free0 (local_filename); +#line 117 "DialogUtils.vala" + break; +#line 538 "DialogUtils.c" + } else { +#line 120 "DialogUtils.vala" + gtk_window_present (GTK_WINDOW (file_chooser)); +#line 542 "DialogUtils.c" + } + _g_free0 (local_filename); + } +#line 123 "DialogUtils.vala" + gtk_object_destroy (GTK_OBJECT (file_chooser)); +#line 548 "DialogUtils.c" + result = return_value; + _g_object_unref0 (file_chooser); + _g_object_unref0 (filters); +#line 124 "DialogUtils.vala" + return result; +#line 554 "DialogUtils.c" +} + + +#line 127 "DialogUtils.vala" +char* dialog_utils_bold_message (const char* message) { +#line 560 "DialogUtils.c" + char* result = NULL; +#line 127 "DialogUtils.vala" + g_return_val_if_fail (message != NULL, NULL); +#line 564 "DialogUtils.c" + result = g_strdup (message); +#line 128 "DialogUtils.vala" + return result; +#line 568 "DialogUtils.c" +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 131 "DialogUtils.vala" +void dialog_utils_warning (const char* major_message, const char* minor_message) { +#line 579 "DialogUtils.c" + char* message; + GtkWidget* banner; +#line 131 "DialogUtils.vala" + g_return_if_fail (major_message != NULL); +#line 132 "DialogUtils.vala" + message = dialog_utils_bold_message (major_message); +#line 133 "DialogUtils.vala" + if (minor_message != NULL) { +#line 588 "DialogUtils.c" + char* _tmp1_; + char* _tmp0_; +#line 134 "DialogUtils.vala" + message = (_tmp1_ = g_strconcat (_tmp0_ = g_strconcat (message, "\n\n", NULL), minor_message, NULL), _g_free0 (message), _tmp1_); +#line 593 "DialogUtils.c" + _g_free0 (_tmp0_); + } +#line 136 "DialogUtils.vala" + banner = _g_object_ref0 (hildon_banner_show_information_with_markup (NULL, NULL, message)); +#line 137 "DialogUtils.vala" + hildon_banner_set_timeout (HILDON_BANNER (banner), (guint) (1000 * 2)); +#line 600 "DialogUtils.c" + _g_free0 (message); + _g_object_unref0 (banner); +} + + +#line 140 "DialogUtils.vala" +void dialog_utils_error (const char* major_message, const char* minor_message) { +#line 608 "DialogUtils.c" + char* message; + GtkWidget* banner; +#line 140 "DialogUtils.vala" + g_return_if_fail (major_message != NULL); +#line 141 "DialogUtils.vala" + message = dialog_utils_bold_message (major_message); +#line 142 "DialogUtils.vala" + if (minor_message != NULL) { +#line 617 "DialogUtils.c" + char* _tmp1_; + char* _tmp0_; +#line 143 "DialogUtils.vala" + message = (_tmp1_ = g_strconcat (_tmp0_ = g_strconcat (message, "\n\n", NULL), minor_message, NULL), _g_free0 (message), _tmp1_); +#line 622 "DialogUtils.c" + _g_free0 (_tmp0_); + } +#line 145 "DialogUtils.vala" + banner = _g_object_ref0 (hildon_banner_show_information_with_markup (NULL, NULL, message)); +#line 146 "DialogUtils.vala" + hildon_banner_set_timeout (HILDON_BANNER (banner), (guint) (1000 * 2)); +#line 629 "DialogUtils.c" + _g_free0 (message); + _g_object_unref0 (banner); +} + + +#line 149 "DialogUtils.vala" +GtkResponseType dialog_utils_run_dialog (GtkWindow* parent, GtkMessageType type, const char* title, const char* message, DialogUtilsButtonStruct* buttons, int buttons_length1) { +#line 637 "DialogUtils.c" + GtkResponseType result = 0; + HildonDialog* dialog; + GtkVBox* content; + GtkLabel* label; + gint length; + GtkResponseType response; +#line 149 "DialogUtils.vala" + g_return_val_if_fail ((parent == NULL) || GTK_IS_WINDOW (parent), 0); +#line 149 "DialogUtils.vala" + g_return_val_if_fail (message != NULL, 0); +#line 152 "DialogUtils.vala" + if (NULL == title) { +#line 152 "DialogUtils.vala" + title = "Message"; +#line 652 "DialogUtils.c" + } +#line 153 "DialogUtils.vala" + dialog = g_object_ref_sink ((HildonDialog*) hildon_dialog_new ()); +#line 154 "DialogUtils.vala" + gtk_widget_set_parent (GTK_WIDGET (dialog), GTK_WIDGET (parent)); +#line 155 "DialogUtils.vala" + gtk_window_set_title (GTK_WINDOW (dialog), title); +#line 156 "DialogUtils.vala" + content = _g_object_ref0 (GTK_VBOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog)))); +#line 157 "DialogUtils.vala" + label = g_object_ref_sink ((GtkLabel*) gtk_label_new (message)); +#line 159 "DialogUtils.vala" + gtk_label_set_single_line_mode (label, FALSE); +#line 160 "DialogUtils.vala" + gtk_label_set_line_wrap (label, TRUE); +#line 162 "DialogUtils.vala" + gtk_container_add (GTK_CONTAINER (content), GTK_WIDGET (label)); +#line 164 "DialogUtils.vala" + length = buttons_length1; +#line 672 "DialogUtils.c" + { + gint i; +#line 165 "DialogUtils.vala" + i = 0; +#line 677 "DialogUtils.c" + { + gboolean _tmp0_; +#line 165 "DialogUtils.vala" + _tmp0_ = TRUE; +#line 165 "DialogUtils.vala" + while (TRUE) { +#line 165 "DialogUtils.vala" + if (!_tmp0_) { +#line 165 "DialogUtils.vala" + i = i + 1; +#line 688 "DialogUtils.c" + } +#line 165 "DialogUtils.vala" + _tmp0_ = FALSE; +#line 165 "DialogUtils.vala" + if (!(i < length)) { +#line 165 "DialogUtils.vala" + break; +#line 696 "DialogUtils.c" + } +#line 166 "DialogUtils.vala" + hildon_dialog_add_button (dialog, buttons[i].title, (gint) buttons[i].type); +#line 700 "DialogUtils.c" + } + } + } +#line 169 "DialogUtils.vala" + gtk_widget_show_all (GTK_WIDGET (dialog)); +#line 170 "DialogUtils.vala" + response = (GtkResponseType) gtk_dialog_run (GTK_DIALOG (dialog)); +#line 171 "DialogUtils.vala" + gtk_object_destroy (GTK_OBJECT (dialog)); +#line 710 "DialogUtils.c" + result = response; + _g_object_unref0 (dialog); + _g_object_unref0 (content); + _g_object_unref0 (label); +#line 173 "DialogUtils.vala" + return result; +#line 717 "DialogUtils.c" +} + + +#line 176 "DialogUtils.vala" +GtkResponseType dialog_utils_two_button_dialog (const char* message, const char* first_button, const char* second_button) { +#line 723 "DialogUtils.c" + GtkResponseType result = 0; + HildonDialog* d; + GtkVBox* contents; + GtkVBox* vbox; + GtkLabel* label; + GtkResponseType r; +#line 176 "DialogUtils.vala" + g_return_val_if_fail (message != NULL, 0); +#line 176 "DialogUtils.vala" + g_return_val_if_fail (first_button != NULL, 0); +#line 176 "DialogUtils.vala" + g_return_val_if_fail (second_button != NULL, 0); +#line 177 "DialogUtils.vala" + d = g_object_ref_sink ((HildonDialog*) hildon_dialog_new ()); +#line 179 "DialogUtils.vala" + contents = _g_object_ref0 (GTK_VBOX (gtk_dialog_get_content_area (GTK_DIALOG (d)))); +#line 180 "DialogUtils.vala" + vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (TRUE, 4)); +#line 181 "DialogUtils.vala" + label = g_object_ref_sink ((GtkLabel*) gtk_label_new (message)); +#line 182 "DialogUtils.vala" + gtk_label_set_use_markup (label, TRUE); +#line 183 "DialogUtils.vala" + gtk_label_set_single_line_mode (label, FALSE); +#line 184 "DialogUtils.vala" + gtk_label_set_line_wrap (label, TRUE); +#line 185 "DialogUtils.vala" + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (label), TRUE, TRUE, 0); +#line 186 "DialogUtils.vala" + gtk_container_add (GTK_CONTAINER (contents), GTK_WIDGET (vbox)); +#line 187 "DialogUtils.vala" + hildon_dialog_add_buttons (d, first_button, GTK_RESPONSE_NO, second_button, GTK_RESPONSE_YES, NULL); +#line 190 "DialogUtils.vala" + gtk_widget_show_all (GTK_WIDGET (d)); +#line 191 "DialogUtils.vala" + r = (GtkResponseType) gtk_dialog_run (GTK_DIALOG (d)); +#line 192 "DialogUtils.vala" + gtk_object_destroy (GTK_OBJECT (d)); +#line 762 "DialogUtils.c" + result = r; + _g_object_unref0 (d); + _g_object_unref0 (contents); + _g_object_unref0 (vbox); + _g_object_unref0 (label); +#line 194 "DialogUtils.vala" + return result; +#line 770 "DialogUtils.c" +} + + +#line 197 "DialogUtils.vala" +GtkResponseType dialog_utils_delete_keep (const char* message) { +#line 776 "DialogUtils.c" + GtkResponseType result = 0; +#line 197 "DialogUtils.vala" + g_return_val_if_fail (message != NULL, 0); +#line 780 "DialogUtils.c" + result = dialog_utils_two_button_dialog (message, "Keep", GTK_STOCK_DELETE); +#line 198 "DialogUtils.vala" + return result; +#line 784 "DialogUtils.c" +} + + +#line 201 "DialogUtils.vala" +GtkResponseType dialog_utils_add_cancel (const char* message) { +#line 790 "DialogUtils.c" + GtkResponseType result = 0; +#line 201 "DialogUtils.vala" + g_return_val_if_fail (message != NULL, 0); +#line 794 "DialogUtils.c" + result = dialog_utils_two_button_dialog (message, GTK_STOCK_CANCEL, GTK_STOCK_ADD); +#line 202 "DialogUtils.vala" + return result; +#line 798 "DialogUtils.c" +} + + +#line 205 "DialogUtils.vala" +GtkResponseType dialog_utils_delete_cancel (const char* message) { +#line 804 "DialogUtils.c" + GtkResponseType result = 0; +#line 205 "DialogUtils.vala" + g_return_val_if_fail (message != NULL, 0); +#line 808 "DialogUtils.c" + result = dialog_utils_two_button_dialog (message, GTK_STOCK_CANCEL, GTK_STOCK_DELETE); +#line 206 "DialogUtils.vala" + return result; +#line 812 "DialogUtils.c" +} + + +#line 209 "DialogUtils.vala" +gboolean dialog_utils_confirm_replace (GtkWindow* parent, const char* filename) { +#line 818 "DialogUtils.c" + gboolean result = FALSE; +#line 209 "DialogUtils.vala" + g_return_val_if_fail ((parent == NULL) || GTK_IS_WINDOW (parent), FALSE); +#line 209 "DialogUtils.vala" + g_return_val_if_fail (filename != NULL, FALSE); +#line 824 "DialogUtils.c" + result = GTK_RESPONSE_YES == dialog_utils_two_button_dialog ("A file named \"%s\" already exists. Do you want to replace it" \ +"?", "Cancel", "Replace"); +#line 210 "DialogUtils.vala" + return result; +#line 828 "DialogUtils.c" +} + + +#line 214 "DialogUtils.vala" +void dialog_utils_button_struct_init (DialogUtilsButtonStruct *self, const char* title, GtkResponseType type) { +#line 834 "DialogUtils.c" + char* _tmp0_; +#line 214 "DialogUtils.vala" + g_return_if_fail (title != NULL); +#line 838 "DialogUtils.c" + memset (self, 0, sizeof (DialogUtilsButtonStruct)); +#line 215 "DialogUtils.vala" + (*self).title = (_tmp0_ = g_strdup (title), _g_free0 ((*self).title), _tmp0_); +#line 216 "DialogUtils.vala" + (*self).type = type; +#line 844 "DialogUtils.c" +} + + +void dialog_utils_button_struct_copy (const DialogUtilsButtonStruct* self, DialogUtilsButtonStruct* dest) { + dest->title = g_strdup (self->title); + dest->type = self->type; +} + + +void dialog_utils_button_struct_destroy (DialogUtilsButtonStruct* self) { + _g_free0 (self->title); +} + + +DialogUtilsButtonStruct* dialog_utils_button_struct_dup (const DialogUtilsButtonStruct* self) { + DialogUtilsButtonStruct* dup; + dup = g_new0 (DialogUtilsButtonStruct, 1); + dialog_utils_button_struct_copy (self, dup); + return dup; +} + + +void dialog_utils_button_struct_free (DialogUtilsButtonStruct* self) { + dialog_utils_button_struct_destroy (self); + g_free (self); +} + + +GType dialog_utils_button_struct_get_type (void) { + static volatile gsize dialog_utils_button_struct_type_id__volatile = 0; + if (g_once_init_enter (&dialog_utils_button_struct_type_id__volatile)) { + GType dialog_utils_button_struct_type_id; + dialog_utils_button_struct_type_id = g_boxed_type_register_static ("DialogUtilsButtonStruct", (GBoxedCopyFunc) dialog_utils_button_struct_dup, (GBoxedFreeFunc) dialog_utils_button_struct_free); + g_once_init_leave (&dialog_utils_button_struct_type_id__volatile, dialog_utils_button_struct_type_id); + } + return dialog_utils_button_struct_type_id__volatile; +} + + +static void _vala_DialogUtilsButtonStruct_array_free (DialogUtilsButtonStruct* array, gint array_length) { + if (array != NULL) { + int i; + for (i = 0; i < array_length; i = i + 1) { + dialog_utils_button_struct_destroy (&array[i]); + } + } + g_free (array); +} + + +#line 223 "DialogUtils.vala" +GtkResponseType dialog_utils_save_close_cancel (GtkWindow* parent, const char* title, const char* message) { +#line 897 "DialogUtils.c" + GtkResponseType result = 0; + DialogUtilsButtonStruct* _tmp4_; + gint _buttons_size_; + gint buttons_length1; + DialogUtilsButtonStruct* _tmp3_ = NULL; + DialogUtilsButtonStruct _tmp0_ = {0}; + DialogUtilsButtonStruct _tmp1_ = {0}; + DialogUtilsButtonStruct _tmp2_ = {0}; + DialogUtilsButtonStruct* buttons; +#line 223 "DialogUtils.vala" + g_return_val_if_fail ((parent == NULL) || GTK_IS_WINDOW (parent), 0); +#line 223 "DialogUtils.vala" + g_return_val_if_fail (message != NULL, 0); +#line 911 "DialogUtils.c" + buttons = (_tmp4_ = (_tmp3_ = g_new0 (DialogUtilsButtonStruct, 3), _tmp3_[0] = (dialog_utils_button_struct_init (&_tmp0_, GTK_STOCK_CLOSE, GTK_RESPONSE_NO), _tmp0_), _tmp3_[1] = (dialog_utils_button_struct_init (&_tmp1_, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL), _tmp1_), _tmp3_[2] = (dialog_utils_button_struct_init (&_tmp2_, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT), _tmp2_), _tmp3_), buttons_length1 = 3, _buttons_size_ = buttons_length1, _tmp4_); + result = dialog_utils_run_dialog (parent, GTK_MESSAGE_WARNING, title, message, buttons, buttons_length1); + buttons = (_vala_DialogUtilsButtonStruct_array_free (buttons, buttons_length1), NULL); +#line 230 "DialogUtils.vala" + return result; +#line 917 "DialogUtils.c" +} + + +#line 233 "DialogUtils.vala" +GtkAlignment* dialog_utils_get_aligned_label (float x, float y, float exp_x, float exp_y, const char* text, gboolean selectable) { +#line 923 "DialogUtils.c" + GtkAlignment* result = NULL; + GtkLabel* l; + GtkAlignment* a; +#line 233 "DialogUtils.vala" + g_return_val_if_fail (text != NULL, NULL); +#line 235 "DialogUtils.vala" + l = g_object_ref_sink ((GtkLabel*) gtk_label_new (text)); +#line 236 "DialogUtils.vala" + gtk_label_set_line_wrap (l, TRUE); +#line 237 "DialogUtils.vala" + gtk_label_set_use_markup (l, TRUE); +#line 238 "DialogUtils.vala" + gtk_label_set_selectable (l, selectable); +#line 240 "DialogUtils.vala" + a = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new (x, y, exp_x, exp_y)); +#line 241 "DialogUtils.vala" + gtk_container_add (GTK_CONTAINER (a), GTK_WIDGET (l)); +#line 941 "DialogUtils.c" + result = a; + _g_object_unref0 (l); +#line 243 "DialogUtils.vala" + return result; +#line 946 "DialogUtils.c" +} + + +#line 246 "DialogUtils.vala" +void dialog_utils_add_label_to_table (GtkTable* t, const char* str, gint x, gint y, gint xpad, gint ypad, gboolean selectable) { +#line 952 "DialogUtils.c" + GtkAlignment* a; +#line 246 "DialogUtils.vala" + g_return_if_fail (GTK_IS_TABLE (t)); +#line 246 "DialogUtils.vala" + g_return_if_fail (str != NULL); +#line 248 "DialogUtils.vala" + a = dialog_utils_get_aligned_label (0.0f, 0.0f, 0.0f, 0.0f, str, selectable); +#line 249 "DialogUtils.vala" + gtk_table_attach (t, GTK_WIDGET (a), (guint) x, (guint) (x + 1), (guint) y, (guint) (y + 1), GTK_FILL, GTK_FILL, (guint) xpad, (guint) ypad); +#line 962 "DialogUtils.c" + _g_object_unref0 (a); +} + + +#line 252 "DialogUtils.vala" +void dialog_utils_show_clip_properties (GtkWindow* parent, ClipView* selected_clip, ModelClipFile* clip_file, Fraction* frames_per_second) { +#line 969 "DialogUtils.c" + HildonDialog* d; + GtkTable* t; + gint row; + gint tab_padding; + char* _tmp2_; +#line 252 "DialogUtils.vala" + g_return_if_fail (GTK_IS_WINDOW (parent)); +#line 252 "DialogUtils.vala" + g_return_if_fail ((selected_clip == NULL) || IS_CLIP_VIEW (selected_clip)); +#line 252 "DialogUtils.vala" + g_return_if_fail ((clip_file == NULL) || MODEL_IS_CLIP_FILE (clip_file)); +#line 254 "DialogUtils.vala" + d = g_object_ref_sink ((HildonDialog*) hildon_dialog_new_with_buttons ("Clip Properties", parent, GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL)); +#line 256 "DialogUtils.vala" + if (selected_clip != NULL) { +#line 257 "DialogUtils.vala" + clip_file = selected_clip->clip->clipfile; +#line 987 "DialogUtils.c" + } +#line 260 "DialogUtils.vala" + g_object_set (G_OBJECT (d), "has-separator", FALSE, NULL); +#line 262 "DialogUtils.vala" + t = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) 10, (guint) 2, FALSE)); +#line 263 "DialogUtils.vala" + row = 0; +#line 264 "DialogUtils.vala" + tab_padding = 25; +#line 997 "DialogUtils.c" + { + gint i; +#line 266 "DialogUtils.vala" + i = 0; +#line 1002 "DialogUtils.c" + { + gboolean _tmp0_; +#line 266 "DialogUtils.vala" + _tmp0_ = TRUE; +#line 266 "DialogUtils.vala" + while (TRUE) { +#line 266 "DialogUtils.vala" + if (!_tmp0_) { +#line 266 "DialogUtils.vala" + i++; +#line 1013 "DialogUtils.c" + } +#line 266 "DialogUtils.vala" + _tmp0_ = FALSE; +#line 266 "DialogUtils.vala" + if (!(i < 10)) { +#line 266 "DialogUtils.vala" + break; +#line 1021 "DialogUtils.c" + } +#line 267 "DialogUtils.vala" + gtk_table_set_row_spacing (t, (guint) i, (guint) 10); +#line 1025 "DialogUtils.c" + } + } + } +#line 269 "DialogUtils.vala" + row = 1; +#line 270 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Clip", 0, row++, 5, 0, FALSE); +#line 272 "DialogUtils.vala" + if (selected_clip != NULL) { +#line 1035 "DialogUtils.c" + char* _tmp1_; +#line 273 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Name:", 0, row, tab_padding, 0, FALSE); +#line 274 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp1_ = g_strdup_printf ("%s", selected_clip->clip->name), 1, row++, 5, 0, TRUE); +#line 1041 "DialogUtils.c" + _g_free0 (_tmp1_); + } +#line 277 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Location:", 0, row, tab_padding, 0, FALSE); +#line 278 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp2_ = g_strdup_printf ("%s", clip_file->filename), 1, row++, 5, 0, TRUE); +#line 1048 "DialogUtils.c" + _g_free0 (_tmp2_); +#line 280 "DialogUtils.vala" + if (selected_clip != NULL) { +#line 1052 "DialogUtils.c" + char* length_string; + char* actual_length; + gboolean _tmp3_ = FALSE; + char* _tmp10_; +#line 281 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Timeline length:", 0, row, tab_padding, 0, FALSE); +#line 283 "DialogUtils.vala" + length_string = g_strdup (""); +#line 284 "DialogUtils.vala" + actual_length = g_strdup (""); +#line 286 "DialogUtils.vala" + if (frames_per_second != NULL) { +#line 286 "DialogUtils.vala" + _tmp3_ = (*frames_per_second).numerator > 0; +#line 1067 "DialogUtils.c" + } else { +#line 286 "DialogUtils.vala" + _tmp3_ = FALSE; +#line 1071 "DialogUtils.c" + } +#line 286 "DialogUtils.vala" + if (_tmp3_) { +#line 1075 "DialogUtils.c" + TimeCode _tmp4_ = {0}; + TimeCode time; + char* _tmp5_; + TimeCode _tmp6_ = {0}; + char* _tmp7_; +#line 287 "DialogUtils.vala" + time = (frame_to_time (time_to_frame_with_rate (model_clip_get_duration (selected_clip->clip), frames_per_second), frames_per_second, &_tmp4_), _tmp4_); +#line 289 "DialogUtils.vala" + length_string = (_tmp5_ = time_code_to_string (&time), _g_free0 (length_string), _tmp5_); +#line 290 "DialogUtils.vala" + time = (frame_to_time (time_to_frame_with_rate (model_clip_file_get_length (selected_clip->clip->clipfile), frames_per_second), frames_per_second, &_tmp6_), _tmp6_); +#line 292 "DialogUtils.vala" + actual_length = (_tmp7_ = time_code_to_string (&time), _g_free0 (actual_length), _tmp7_); +#line 1089 "DialogUtils.c" + } else { + char* _tmp8_; + char* _tmp9_; +#line 294 "DialogUtils.vala" + length_string = (_tmp8_ = time_to_string (model_clip_get_duration (selected_clip->clip)), _g_free0 (length_string), _tmp8_); +#line 295 "DialogUtils.vala" + actual_length = (_tmp9_ = time_to_string (model_clip_file_get_length (selected_clip->clip->clipfile)), _g_free0 (actual_length), _tmp9_); +#line 1097 "DialogUtils.c" + } +#line 298 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp10_ = g_strdup_printf ("%s", length_string), 1, row++, 5, 0, TRUE); +#line 1101 "DialogUtils.c" + _g_free0 (_tmp10_); +#line 300 "DialogUtils.vala" + if (model_clip_is_trimmed (selected_clip->clip)) { +#line 1105 "DialogUtils.c" + char* _tmp11_; +#line 301 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Actual length:", 0, row, tab_padding, 0, FALSE); +#line 302 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp11_ = g_strdup_printf ("%s", actual_length), 1, row++, 5, 0, TRUE); +#line 1111 "DialogUtils.c" + _g_free0 (_tmp11_); + } + _g_free0 (length_string); + _g_free0 (actual_length); + } +#line 306 "DialogUtils.vala" + if (model_clip_file_has_caps_structure (clip_file, MODEL_MEDIA_TYPE_VIDEO)) { +#line 1119 "DialogUtils.c" + gint w = 0; + gint h = 0; + Fraction r = {0}; +#line 307 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Video", 0, row++, 5, 0, FALSE); +#line 310 "DialogUtils.vala" + if (model_clip_file_get_dimensions (clip_file, &w, &h)) { +#line 1127 "DialogUtils.c" + char* _tmp12_; +#line 311 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Dimensions:", 0, row, tab_padding, 0, FALSE); +#line 312 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp12_ = g_strdup_printf ("%d x %d", w, h), 1, row++, 5, 0, TRUE); +#line 1133 "DialogUtils.c" + _g_free0 (_tmp12_); + } +#line 316 "DialogUtils.vala" + if (model_clip_file_get_frame_rate (clip_file, &r)) { +#line 317 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Frame rate:", 0, row, tab_padding, 0, FALSE); +#line 319 "DialogUtils.vala" + if ((r.numerator % r.denominator) != 0) { +#line 1142 "DialogUtils.c" + char* _tmp13_; +#line 320 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp13_ = g_strdup_printf ("%.2f frames per second", (double) (r.numerator / ((float) r.denominator))), 1, row++, 5, 0, TRUE); +#line 1146 "DialogUtils.c" + _g_free0 (_tmp13_); + } else { + char* _tmp14_; +#line 324 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp14_ = g_strdup_printf ("%d frames per second", r.numerator / r.denominator), 1, row++, 5, 0, TRUE); +#line 1152 "DialogUtils.c" + _g_free0 (_tmp14_); + } + } + } +#line 330 "DialogUtils.vala" + if (model_clip_file_has_caps_structure (clip_file, MODEL_MEDIA_TYPE_AUDIO)) { +#line 1159 "DialogUtils.c" + gint rate = 0; + char* s; + char* _tmp18_; + gboolean _tmp17_; + char* _tmp16_ = NULL; +#line 331 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Audio", 0, row++, 5, 0, FALSE); +#line 334 "DialogUtils.vala" + if (model_clip_file_get_sample_rate (clip_file, &rate)) { +#line 1169 "DialogUtils.c" + char* _tmp15_; +#line 335 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Sample rate:", 0, row, tab_padding, 0, FALSE); +#line 336 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp15_ = g_strdup_printf ("%d Hz", rate), 1, row++, 5, 0, TRUE); +#line 1175 "DialogUtils.c" + _g_free0 (_tmp15_); + } + s = NULL; +#line 340 "DialogUtils.vala" + if ((_tmp17_ = model_clip_file_get_num_channels_string (clip_file, &_tmp16_), s = (_tmp18_ = _tmp16_, _g_free0 (s), _tmp18_), _tmp17_)) { +#line 1181 "DialogUtils.c" + char* _tmp19_; +#line 341 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, "Number of channels:", 0, row, tab_padding, 0, FALSE); +#line 342 "DialogUtils.vala" + dialog_utils_add_label_to_table (t, _tmp19_ = g_strdup_printf ("%s", s), 1, row++, 5, 0, TRUE); +#line 1187 "DialogUtils.c" + _g_free0 (_tmp19_); + } + _g_free0 (s); + } +#line 346 "DialogUtils.vala" + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (d)->vbox), GTK_WIDGET (t), FALSE, FALSE, (guint) 0); +#line 348 "DialogUtils.vala" + gtk_widget_show_all (GTK_WIDGET (d)); +#line 349 "DialogUtils.vala" + gtk_dialog_run (GTK_DIALOG (d)); +#line 350 "DialogUtils.vala" + gtk_object_destroy (GTK_OBJECT (d)); +#line 1200 "DialogUtils.c" + _g_object_unref0 (d); + _g_object_unref0 (t); +} + + + + diff --git a/src/marina/marina/DialogUtils.o b/src/marina/marina/DialogUtils.o new file mode 100644 index 0000000000000000000000000000000000000000..4540822c02b9e06c946ceea60c80b3fa4d2dd5eb GIT binary patch literal 70464 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 +#include +#include +#include +#include + + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + + +extern LoggingLevel logging_current_level; +LoggingLevel logging_current_level = LOGGING_LEVEL_HIGH; + +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_set_logging_level (LoggingLevel new_level); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); + +const LoggingLevel LOGGING_active_facility[6] = {LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL, LOGGING_LEVEL_CRITICAL}; +const char* LOGGING_facility_names[6] = {"SIGNAL_HANDLERS", "DEVELOPER_WARNINGS", "GRAPH", "LOADING", "IMPORT", "SINGLEDECODEBIN"}; + + +GType logging_facility_get_type (void) { + static volatile gsize logging_facility_type_id__volatile = 0; + if (g_once_init_enter (&logging_facility_type_id__volatile)) { + static const GEnumValue values[] = {{LOGGING_FACILITY_SIGNAL_HANDLERS, "LOGGING_FACILITY_SIGNAL_HANDLERS", "signal-handlers"}, {LOGGING_FACILITY_DEVELOPER_WARNINGS, "LOGGING_FACILITY_DEVELOPER_WARNINGS", "developer-warnings"}, {LOGGING_FACILITY_GRAPH, "LOGGING_FACILITY_GRAPH", "graph"}, {LOGGING_FACILITY_LOADING, "LOGGING_FACILITY_LOADING", "loading"}, {LOGGING_FACILITY_IMPORT, "LOGGING_FACILITY_IMPORT", "import"}, {LOGGING_FACILITY_SINGLEDECODEBIN, "LOGGING_FACILITY_SINGLEDECODEBIN", "singledecodebin"}, {0, NULL, NULL}}; + GType logging_facility_type_id; + logging_facility_type_id = g_enum_register_static ("LoggingFacility", values); + g_once_init_leave (&logging_facility_type_id__volatile, logging_facility_type_id); + } + return logging_facility_type_id__volatile; +} + + +GType logging_level_get_type (void) { + static volatile gsize logging_level_type_id__volatile = 0; + if (g_once_init_enter (&logging_level_type_id__volatile)) { + static const GEnumValue values[] = {{LOGGING_LEVEL_CRITICAL, "LOGGING_LEVEL_CRITICAL", "critical"}, {LOGGING_LEVEL_HIGH, "LOGGING_LEVEL_HIGH", "high"}, {LOGGING_LEVEL_MEDIUM, "LOGGING_LEVEL_MEDIUM", "medium"}, {LOGGING_LEVEL_LOW, "LOGGING_LEVEL_LOW", "low"}, {LOGGING_LEVEL_INFO, "LOGGING_LEVEL_INFO", "info"}, {LOGGING_LEVEL_VERBOSE, "LOGGING_LEVEL_VERBOSE", "verbose"}, {0, NULL, NULL}}; + GType logging_level_type_id; + logging_level_type_id = g_enum_register_static ("LoggingLevel", values); + g_once_init_leave (&logging_level_type_id__volatile, logging_level_type_id); + } + return logging_level_type_id__volatile; +} + + +#line 46 "Logging.vala" +void logging_set_logging_level (LoggingLevel new_level) { +#line 79 "Logging.c" + gboolean _tmp0_ = FALSE; +#line 47 "Logging.vala" + if (new_level <= LOGGING_LEVEL_VERBOSE) { +#line 47 "Logging.vala" + _tmp0_ = new_level >= LOGGING_LEVEL_CRITICAL; +#line 85 "Logging.c" + } else { +#line 47 "Logging.vala" + _tmp0_ = FALSE; +#line 89 "Logging.c" + } +#line 47 "Logging.vala" + if (_tmp0_) { +#line 48 "Logging.vala" + logging_current_level = new_level; +#line 95 "Logging.c" + } +} + + +#line 52 "Logging.vala" +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message) { +#line 102 "Logging.c" + gboolean _tmp0_ = FALSE; +#line 52 "Logging.vala" + g_return_if_fail (G_IS_OBJECT (object)); +#line 52 "Logging.vala" + g_return_if_fail (message != NULL); +#line 53 "Logging.vala" + if (level <= logging_current_level) { +#line 53 "Logging.vala" + _tmp0_ = TRUE; +#line 112 "Logging.c" + } else { +#line 53 "Logging.vala" + _tmp0_ = level <= LOGGING_active_facility[facility]; +#line 116 "Logging.c" + } +#line 53 "Logging.vala" + if (_tmp0_) { +#line 54 "Logging.vala" + fprintf (stderr, "%s(%s): %s\n", g_type_name (G_TYPE_FROM_INSTANCE (object)), LOGGING_facility_names[facility], message); +#line 122 "Logging.c" + } +} + + + + diff --git a/src/marina/marina/Logging.o b/src/marina/marina/Logging.o new file mode 100644 index 0000000000000000000000000000000000000000..711e114c73a3cc33034fa8e9b9d31c75f538d074 GIT binary patch literal 12044 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 RF3?y8#Xrp&)bj=Y{{uG{_k92W literal 0 HcmV?d00001 diff --git a/src/marina/marina/MediaEngine.c b/src/marina/marina/MediaEngine.c new file mode 100644 index 0000000..47ab326 --- /dev/null +++ b/src/marina/marina/MediaEngine.c @@ -0,0 +1,5111 @@ +/* MediaEngine.c generated by valac, the Vala compiler + * generated from MediaEngine.vala, do not modify */ + +/* Copyright 2009-2010 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_PLAY_STATE (play_state_get_type ()) + +#define VIEW_TYPE_MEDIA_CLIP (view_media_clip_get_type ()) +#define VIEW_MEDIA_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_CLIP, ViewMediaClip)) +#define VIEW_MEDIA_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_CLIP, ViewMediaClipClass)) +#define VIEW_IS_MEDIA_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_CLIP)) +#define VIEW_IS_MEDIA_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_CLIP)) +#define VIEW_MEDIA_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_CLIP, ViewMediaClipClass)) + +typedef struct _ViewMediaClip ViewMediaClip; +typedef struct _ViewMediaClipClass ViewMediaClipClass; +typedef struct _ViewMediaClipPrivate ViewMediaClipPrivate; + +#define MODEL_TYPE_CLIP (model_clip_get_type ()) +#define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip)) +#define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass)) +#define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP)) +#define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP)) +#define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass)) + +typedef struct _ModelClip ModelClip; +typedef struct _ModelClipClass ModelClipClass; +#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL))) +typedef struct _ModelClipPrivate ModelClipPrivate; + +#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ()) +#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile)) +#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) +#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE)) +#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE)) +#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass)) + +typedef struct _ModelClipFile ModelClipFile; +typedef struct _ModelClipFileClass ModelClipFileClass; + +#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ()) + +#define LOGGING_TYPE_FACILITY (logging_facility_get_type ()) + +#define LOGGING_TYPE_LEVEL (logging_level_get_type ()) + +#define TYPE_SINGLE_DECODE_BIN (single_decode_bin_get_type ()) +#define SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBin)) +#define SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) +#define IS_SINGLE_DECODE_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SINGLE_DECODE_BIN)) +#define IS_SINGLE_DECODE_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SINGLE_DECODE_BIN)) +#define SINGLE_DECODE_BIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SINGLE_DECODE_BIN, SingleDecodeBinClass)) + +typedef struct _SingleDecodeBin SingleDecodeBin; +typedef struct _SingleDecodeBinClass SingleDecodeBinClass; +#define _gst_caps_unref0(var) ((var == NULL) ? NULL : (var = (gst_caps_unref (var), NULL))) + +#define VIEW_TYPE_MEDIA_AUDIO_CLIP (view_media_audio_clip_get_type ()) +#define VIEW_MEDIA_AUDIO_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_AUDIO_CLIP, ViewMediaAudioClip)) +#define VIEW_MEDIA_AUDIO_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_AUDIO_CLIP, ViewMediaAudioClipClass)) +#define VIEW_IS_MEDIA_AUDIO_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_AUDIO_CLIP)) +#define VIEW_IS_MEDIA_AUDIO_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_AUDIO_CLIP)) +#define VIEW_MEDIA_AUDIO_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_AUDIO_CLIP, ViewMediaAudioClipClass)) + +typedef struct _ViewMediaAudioClip ViewMediaAudioClip; +typedef struct _ViewMediaAudioClipClass ViewMediaAudioClipClass; +typedef struct _ViewMediaAudioClipPrivate ViewMediaAudioClipPrivate; + +#define VIEW_TYPE_MEDIA_VIDEO_CLIP (view_media_video_clip_get_type ()) +#define VIEW_MEDIA_VIDEO_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_VIDEO_CLIP, ViewMediaVideoClip)) +#define VIEW_MEDIA_VIDEO_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_VIDEO_CLIP, ViewMediaVideoClipClass)) +#define VIEW_IS_MEDIA_VIDEO_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_VIDEO_CLIP)) +#define VIEW_IS_MEDIA_VIDEO_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_VIDEO_CLIP)) +#define VIEW_MEDIA_VIDEO_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_VIDEO_CLIP, ViewMediaVideoClipClass)) + +typedef struct _ViewMediaVideoClip ViewMediaVideoClip; +typedef struct _ViewMediaVideoClipClass ViewMediaVideoClipClass; +typedef struct _ViewMediaVideoClipPrivate ViewMediaVideoClipPrivate; + +#define VIEW_TYPE_MEDIA_TRACK (view_media_track_get_type ()) +#define VIEW_MEDIA_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_TRACK, ViewMediaTrack)) +#define VIEW_MEDIA_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_TRACK, ViewMediaTrackClass)) +#define VIEW_IS_MEDIA_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_TRACK)) +#define VIEW_IS_MEDIA_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_TRACK)) +#define VIEW_MEDIA_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_TRACK, ViewMediaTrackClass)) + +typedef struct _ViewMediaTrack ViewMediaTrack; +typedef struct _ViewMediaTrackClass ViewMediaTrackClass; +typedef struct _ViewMediaTrackPrivate ViewMediaTrackPrivate; + +#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ()) +#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine)) +#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) +#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE)) +#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass)) + +typedef struct _ViewMediaEngine ViewMediaEngine; +typedef struct _ViewMediaEngineClass ViewMediaEngineClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define MODEL_TYPE_TRACK (model_track_get_type ()) +#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack)) +#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass)) +#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK)) +#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK)) +#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass)) + +typedef struct _ModelTrack ModelTrack; +typedef struct _ModelTrackClass ModelTrackClass; + +#define TYPE_MULTI_FILE_PROGRESS_INTERFACE (multi_file_progress_interface_get_type ()) +#define MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterface)) +#define IS_MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE)) +#define MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterfaceIface)) + +typedef struct _MultiFileProgressInterface MultiFileProgressInterface; +typedef struct _MultiFileProgressInterfaceIface MultiFileProgressInterfaceIface; +typedef struct _ViewMediaEnginePrivate ViewMediaEnginePrivate; + +#define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ()) +#define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack)) +#define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) +#define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK)) +#define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass)) + +typedef struct _ModelAudioTrack ModelAudioTrack; +typedef struct _ModelAudioTrackClass ModelAudioTrackClass; +typedef struct _ModelClipFilePrivate ModelClipFilePrivate; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +#define VIEW_TYPE_MEDIA_VIDEO_TRACK (view_media_video_track_get_type ()) +#define VIEW_MEDIA_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_VIDEO_TRACK, ViewMediaVideoTrack)) +#define VIEW_MEDIA_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_VIDEO_TRACK, ViewMediaVideoTrackClass)) +#define VIEW_IS_MEDIA_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_VIDEO_TRACK)) +#define VIEW_IS_MEDIA_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_VIDEO_TRACK)) +#define VIEW_MEDIA_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_VIDEO_TRACK, ViewMediaVideoTrackClass)) + +typedef struct _ViewMediaVideoTrack ViewMediaVideoTrack; +typedef struct _ViewMediaVideoTrackClass ViewMediaVideoTrackClass; +typedef struct _ViewMediaVideoTrackPrivate ViewMediaVideoTrackPrivate; + +#define VIEW_TYPE_CLICK_TRACK (view_click_track_get_type ()) +#define VIEW_CLICK_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_CLICK_TRACK, ViewClickTrack)) +#define VIEW_CLICK_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_CLICK_TRACK, ViewClickTrackClass)) +#define VIEW_IS_CLICK_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_CLICK_TRACK)) +#define VIEW_IS_CLICK_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_CLICK_TRACK)) +#define VIEW_CLICK_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_CLICK_TRACK, ViewClickTrackClass)) + +typedef struct _ViewClickTrack ViewClickTrack; +typedef struct _ViewClickTrackClass ViewClickTrackClass; +typedef struct _ViewClickTrackPrivate ViewClickTrackPrivate; + +#define MODEL_TYPE_PROJECT (model_project_get_type ()) +#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject)) +#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass)) +#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT)) +#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT)) +#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass)) + +typedef struct _ModelProject ModelProject; +typedef struct _ModelProjectClass ModelProjectClass; + +#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ()) +#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation)) +#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION)) +#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface)) + +typedef struct _ModelTempoInformation ModelTempoInformation; +typedef struct _ModelTempoInformationIface ModelTempoInformationIface; + +#define TYPE_FRACTION (fraction_get_type ()) +typedef struct _Fraction Fraction; +typedef struct _ModelProjectPrivate ModelProjectPrivate; + +#define TYPE_TIME_CODE (time_code_get_type ()) +typedef struct _TimeCode TimeCode; + +#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ()) +#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader)) +#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) +#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER)) +#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass)) + +typedef struct _ModelProjectLoader ModelProjectLoader; +typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass; + +#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ()) +#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager)) +#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) +#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER)) +#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass)) + +typedef struct _ModelUndoManager ModelUndoManager; +typedef struct _ModelUndoManagerClass ModelUndoManagerClass; + +#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ()) +#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter)) +#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) +#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER)) +#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass)) + +typedef struct _ModelLibraryImporter ModelLibraryImporter; +typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass; +#define __g_list_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_list_free_g_free (var), NULL))) + +#define VIEW_TYPE_MEDIA_AUDIO_TRACK (view_media_audio_track_get_type ()) +#define VIEW_MEDIA_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_AUDIO_TRACK, ViewMediaAudioTrack)) +#define VIEW_MEDIA_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_AUDIO_TRACK, ViewMediaAudioTrackClass)) +#define VIEW_IS_MEDIA_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_AUDIO_TRACK)) +#define VIEW_IS_MEDIA_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_AUDIO_TRACK)) +#define VIEW_MEDIA_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_AUDIO_TRACK, ViewMediaAudioTrackClass)) + +typedef struct _ViewMediaAudioTrack ViewMediaAudioTrack; +typedef struct _ViewMediaAudioTrackClass ViewMediaAudioTrackClass; +typedef struct _ViewMediaAudioTrackPrivate ViewMediaAudioTrackPrivate; + +#define MODEL_TYPE_PARAMETER (model_parameter_get_type ()) + +#define VIEW_TYPE_MEDIA_CONNECTOR (view_media_connector_get_type ()) +#define VIEW_MEDIA_CONNECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_CONNECTOR, ViewMediaConnector)) +#define VIEW_MEDIA_CONNECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_CONNECTOR, ViewMediaConnectorClass)) +#define VIEW_IS_MEDIA_CONNECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_CONNECTOR)) +#define VIEW_IS_MEDIA_CONNECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_CONNECTOR)) +#define VIEW_MEDIA_CONNECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_CONNECTOR, ViewMediaConnectorClass)) + +typedef struct _ViewMediaConnector ViewMediaConnector; +typedef struct _ViewMediaConnectorClass ViewMediaConnectorClass; +typedef struct _ViewMediaConnectorPrivate ViewMediaConnectorPrivate; + +#define VIEW_MEDIA_CONNECTOR_TYPE_MEDIA_TYPES (view_media_connector_media_types_get_type ()) + +#define VIEW_TYPE_VIDEO_OUTPUT (view_video_output_get_type ()) +#define VIEW_VIDEO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_VIDEO_OUTPUT, ViewVideoOutput)) +#define VIEW_VIDEO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_VIDEO_OUTPUT, ViewVideoOutputClass)) +#define VIEW_IS_VIDEO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_VIDEO_OUTPUT)) +#define VIEW_IS_VIDEO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_VIDEO_OUTPUT)) +#define VIEW_VIDEO_OUTPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_VIDEO_OUTPUT, ViewVideoOutputClass)) + +typedef struct _ViewVideoOutput ViewVideoOutput; +typedef struct _ViewVideoOutputClass ViewVideoOutputClass; +typedef struct _ViewVideoOutputPrivate ViewVideoOutputPrivate; + +#define VIEW_TYPE_AUDIO_OUTPUT (view_audio_output_get_type ()) +#define VIEW_AUDIO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_AUDIO_OUTPUT, ViewAudioOutput)) +#define VIEW_AUDIO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_AUDIO_OUTPUT, ViewAudioOutputClass)) +#define VIEW_IS_AUDIO_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_AUDIO_OUTPUT)) +#define VIEW_IS_AUDIO_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_AUDIO_OUTPUT)) +#define VIEW_AUDIO_OUTPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_AUDIO_OUTPUT, ViewAudioOutputClass)) + +typedef struct _ViewAudioOutput ViewAudioOutput; +typedef struct _ViewAudioOutputClass ViewAudioOutputClass; +typedef struct _ViewAudioOutputPrivate ViewAudioOutputPrivate; + +#define VIEW_TYPE_OGG_VORBIS_EXPORT (view_ogg_vorbis_export_get_type ()) +#define VIEW_OGG_VORBIS_EXPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_OGG_VORBIS_EXPORT, ViewOggVorbisExport)) +#define VIEW_OGG_VORBIS_EXPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_OGG_VORBIS_EXPORT, ViewOggVorbisExportClass)) +#define VIEW_IS_OGG_VORBIS_EXPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_OGG_VORBIS_EXPORT)) +#define VIEW_IS_OGG_VORBIS_EXPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_OGG_VORBIS_EXPORT)) +#define VIEW_OGG_VORBIS_EXPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_OGG_VORBIS_EXPORT, ViewOggVorbisExportClass)) + +typedef struct _ViewOggVorbisExport ViewOggVorbisExport; +typedef struct _ViewOggVorbisExportClass ViewOggVorbisExportClass; +typedef struct _ViewOggVorbisExportPrivate ViewOggVorbisExportPrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) +typedef struct _ModelTrackPrivate ModelTrackPrivate; + +typedef enum { + PLAY_STATE_STOPPED, + PLAY_STATE_PRE_PLAY, + PLAY_STATE_PLAYING, + PLAY_STATE_PRE_RECORD_NULL, + PLAY_STATE_PRE_RECORD, + PLAY_STATE_RECORDING, + PLAY_STATE_POST_RECORD, + PLAY_STATE_PRE_EXPORT, + PLAY_STATE_EXPORTING, + PLAY_STATE_CANCEL_EXPORT, + PLAY_STATE_LOADING, + PLAY_STATE_CLOSING, + PLAY_STATE_CLOSED +} PlayState; + +struct _ViewMediaClip { + GObject parent_instance; + ViewMediaClipPrivate * priv; + GstElement* file_source; +}; + +struct _ViewMediaClipClass { + GObjectClass parent_class; +}; + +struct _ViewMediaClipPrivate { + ModelClip* clip; + GstBin* composition; +}; + +typedef enum { + MODEL_MEDIA_TYPE_AUDIO, + MODEL_MEDIA_TYPE_VIDEO +} ModelMediaType; + +struct _ModelClip { + GObject parent_instance; + ModelClipPrivate * priv; + ModelClipFile* clipfile; + ModelMediaType type; + gboolean is_recording; + char* name; +}; + +struct _ModelClipClass { + GObjectClass parent_class; +}; + +typedef enum { + LOGGING_FACILITY_SIGNAL_HANDLERS, + LOGGING_FACILITY_DEVELOPER_WARNINGS, + LOGGING_FACILITY_GRAPH, + LOGGING_FACILITY_LOADING, + LOGGING_FACILITY_IMPORT, + LOGGING_FACILITY_SINGLEDECODEBIN +} LoggingFacility; + +typedef enum { + LOGGING_LEVEL_CRITICAL, + LOGGING_LEVEL_HIGH, + LOGGING_LEVEL_MEDIUM, + LOGGING_LEVEL_LOW, + LOGGING_LEVEL_INFO, + LOGGING_LEVEL_VERBOSE +} LoggingLevel; + +struct _ViewMediaAudioClip { + ViewMediaClip parent_instance; + ViewMediaAudioClipPrivate * priv; +}; + +struct _ViewMediaAudioClipClass { + ViewMediaClipClass parent_class; +}; + +struct _ViewMediaVideoClip { + ViewMediaClip parent_instance; + ViewMediaVideoClipPrivate * priv; +}; + +struct _ViewMediaVideoClipClass { + ViewMediaClipClass parent_class; +}; + +struct _ViewMediaTrack { + GObject parent_instance; + ViewMediaTrackPrivate * priv; + ViewMediaEngine* media_engine; + GstBin* composition; + GstElement* default_source; + GstElement* sink; +}; + +struct _ViewMediaTrackClass { + GObjectClass parent_class; + GstElement* (*empty_element) (ViewMediaTrack* self, GError** error); + GstElement* (*get_element) (ViewMediaTrack* self); + void (*link_new_pad) (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); + void (*unlink_pad) (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +}; + +struct _ViewMediaTrackPrivate { + GeeArrayList* clips; +}; + +struct _MultiFileProgressInterfaceIface { + GTypeInterface parent_iface; + void (*cancel) (MultiFileProgressInterface* self); + void (*complete) (MultiFileProgressInterface* self); +}; + +struct _ViewMediaEngine { + GObject parent_instance; + ViewMediaEnginePrivate * priv; + GstPipeline* pipeline; + GstBin* record_bin; + GstElement* converter; + GstElement* adder; + GstState gst_state; + PlayState play_state; + gint64 position; + gboolean playing; + ModelAudioTrack* record_track; + ModelClip* record_region; +}; + +struct _ViewMediaEngineClass { + GObjectClass parent_class; + void (*do_null_state_export) (ViewMediaEngine* self, gint64 length); + void (*pause) (ViewMediaEngine* self); +}; + +struct _ModelClipFile { + GObject parent_instance; + ModelClipFilePrivate * priv; + char* filename; + GstCaps* video_caps; + GstCaps* audio_caps; + GdkPixbuf* thumbnail; +}; + +struct _ModelClipFileClass { + GObjectClass parent_class; +}; + +struct _ViewMediaVideoTrack { + ViewMediaTrack parent_instance; + ViewMediaVideoTrackPrivate * priv; +}; + +struct _ViewMediaVideoTrackClass { + ViewMediaTrackClass parent_class; +}; + +struct _ViewMediaVideoTrackPrivate { + GstElement* converter; +}; + +struct _ViewClickTrack { + GObject parent_instance; + ViewClickTrackPrivate * priv; +}; + +struct _ViewClickTrackClass { + GObjectClass parent_class; +}; + +struct _ViewClickTrackPrivate { + GstController* click_controller; + GstController* volume_controller; + GstElement* audio_source; + GstElement* audio_convert; + GstElement* volume; + ModelProject* project; +}; + +struct _Fraction { + gint numerator; + gint denominator; +}; + +struct _ModelTempoInformationIface { + GTypeInterface parent_iface; + void (*get_time_signature) (ModelTempoInformation* self, Fraction* result); + gint (*get_bpm) (ModelTempoInformation* self); +}; + +struct _TimeCode { + gint hour; + gint minute; + gint second; + gint frame; + gboolean drop_code; +}; + +struct _ModelProject { + GObject parent_instance; + ModelProjectPrivate * priv; + GeeArrayList* tracks; + GeeArrayList* inactive_tracks; + GeeArrayList* clipfiles; + ViewMediaEngine* media_engine; + char* project_file; + ModelProjectLoader* loader; + ModelUndoManager* undo_manager; + ModelLibraryImporter* importer; + Fraction default_framerate; + gboolean click_during_play; + gboolean click_during_record; + double click_volume; + gboolean library_visible; + gint library_width; + gboolean snap_to_clip; +}; + +struct _ModelProjectClass { + GObjectClass parent_class; + void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result); + char* (*get_project_file) (ModelProject* self); + void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time); + void (*add_track) (ModelProject* self, ModelTrack* track); + void (*insert_track) (ModelProject* self, gint index, ModelTrack* track); + void (*load) (ModelProject* self, const char* fname); + void (*save) (ModelProject* self, const char* filename); + char* (*get_app_name) (ModelProject* self); + void (*load_complete) (ModelProject* self); +}; + +struct _ViewMediaAudioTrack { + ViewMediaTrack parent_instance; + ViewMediaAudioTrackPrivate * priv; +}; + +struct _ViewMediaAudioTrackClass { + ViewMediaTrackClass parent_class; +}; + +struct _ViewMediaAudioTrackPrivate { + GstElement* audio_convert; + GstElement* audio_resample; + GstElement* level; + GstElement* pan; + GstElement* volume; + GstPad* adder_pad; +}; + +typedef enum { + MODEL_PARAMETER_PAN, + MODEL_PARAMETER_VOLUME +} ModelParameter; + +struct _ViewMediaConnector { + GObject parent_instance; + ViewMediaConnectorPrivate * priv; + gint AudioIndex; + gint VideoIndex; +}; + +struct _ViewMediaConnectorClass { + GObjectClass parent_class; + void (*connect) (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); + void (*do_disconnect) (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +}; + +typedef enum { + VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio = 1, + VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video = 2 +} ViewMediaConnectorMediaTypes; + +struct _ViewMediaConnectorPrivate { + ViewMediaConnectorMediaTypes media_types; +}; + +struct _ViewVideoOutput { + ViewMediaConnector parent_instance; + ViewVideoOutputPrivate * priv; +}; + +struct _ViewVideoOutputClass { + ViewMediaConnectorClass parent_class; +}; + +struct _ViewVideoOutputPrivate { + GstElement* sink; + GtkWidget* output_widget; +}; + +struct _ViewAudioOutput { + ViewMediaConnector parent_instance; + ViewAudioOutputPrivate * priv; +}; + +struct _ViewAudioOutputClass { + ViewMediaConnectorClass parent_class; +}; + +struct _ViewAudioOutputPrivate { + GstElement* audio_sink; + GstElement* capsfilter; +}; + +struct _ViewOggVorbisExport { + ViewMediaConnector parent_instance; + ViewOggVorbisExportPrivate * priv; +}; + +struct _ViewOggVorbisExportClass { + ViewMediaConnectorClass parent_class; +}; + +struct _ViewOggVorbisExportPrivate { + GstElement* capsfilter; + GstElement* export_sink; + GstElement* mux; + GstElement* file_sink; + GstElement* video_export_sink; +}; + +struct _ViewMediaEnginePrivate { + guint callback_id; + GstElement* audio_in; + GstElement* record_capsfilter; + GstElement* wav_encoder; + GstElement* record_sink; + ModelProject* project; + GeeArrayList* tracks; +}; + +typedef enum { + MEDIA_ERROR_MISSING_PLUGIN +} MediaError; +#define MEDIA_ERROR media_error_quark () +struct _ModelTrack { + GObject parent_instance; + ModelTrackPrivate * priv; + ModelProject* project; + GeeArrayList* clips; + char* display_name; +}; + +struct _ModelTrackClass { + GObjectClass parent_class; + char* (*name) (ModelTrack* self); + ModelMediaType (*media_type) (ModelTrack* self); + gboolean (*check) (ModelTrack* self, ModelClip* clip); + void (*on_clip_updated) (ModelTrack* self, ModelClip* clip); + void (*write_attributes) (ModelTrack* self, FILE* f); +}; + + +static gpointer view_media_clip_parent_class = NULL; +static gpointer view_media_audio_clip_parent_class = NULL; +static gpointer view_media_video_clip_parent_class = NULL; +static gpointer view_media_track_parent_class = NULL; +static gpointer view_media_video_track_parent_class = NULL; +static gpointer view_click_track_parent_class = NULL; +static gpointer view_media_audio_track_parent_class = NULL; +static gpointer view_media_connector_parent_class = NULL; +static gpointer view_video_output_parent_class = NULL; +static gpointer view_audio_output_parent_class = NULL; +static gpointer view_ogg_vorbis_export_parent_class = NULL; +static gpointer view_media_engine_parent_class = NULL; +static MultiFileProgressInterfaceIface* view_media_engine_multi_file_progress_interface_parent_iface = NULL; + +GType play_state_get_type (void); +#define CHANNELS_PER_TRACK_PLAYBACK 2 +#define CHANNELS_PER_TRACK_RECORD 1 +GType view_media_clip_get_type (void); +GType model_clip_get_type (void); +#define VIEW_MEDIA_CLIP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_MEDIA_CLIP, ViewMediaClipPrivate)) +enum { + VIEW_MEDIA_CLIP_DUMMY_PROPERTY +}; +GstElement* make_element (const char* name, GError** error); +GType model_clip_file_get_type (void); +GType model_media_type_get_type (void); +static void view_media_clip_on_duration_changed (ViewMediaClip* self, gint64 duration); +static void _view_media_clip_on_duration_changed_model_clip_duration_changed (ModelClip* _sender, gint64 duration, gpointer self); +static void view_media_clip_on_media_start_changed (ViewMediaClip* self, gint64 media_start); +static void _view_media_clip_on_media_start_changed_model_clip_media_start_changed (ModelClip* _sender, gint64 media_start, gpointer self); +static void view_media_clip_on_start_changed (ViewMediaClip* self, gint64 start); +static void _view_media_clip_on_start_changed_model_clip_start_changed (ModelClip* _sender, gint64 start, gpointer self); +gint64 model_clip_get_start (ModelClip* self); +gint64 model_clip_get_media_start (ModelClip* self); +gint64 model_clip_get_duration (ModelClip* self); +void view_media_clip_on_clip_removed (ViewMediaClip* self); +static void _view_media_clip_on_clip_removed_model_clip_removed (ModelClip* _sender, ModelClip* clip, gpointer self); +ViewMediaClip* view_media_clip_new (GstBin* composition, ModelClip* clip, GError** error); +ViewMediaClip* view_media_clip_construct (GType object_type, GstBin* composition, ModelClip* clip, GError** error); +GType logging_facility_get_type (void); +GType logging_level_get_type (void); +void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message); +SingleDecodeBin* single_decode_bin_new (GstCaps* caps, const char* name, const char* uri, GError** error); +SingleDecodeBin* single_decode_bin_construct (GType object_type, GstCaps* caps, const char* name, const char* uri, GError** error); +GType single_decode_bin_get_type (void); +void model_clip_file_set_online (ModelClipFile* self, gboolean o); +void view_media_clip_add_single_decode_bin (ViewMediaClip* self, const char* filename, const char* caps, GError** error); +gboolean view_media_clip_is_equal (ViewMediaClip* self, ModelClip* clip); +static void view_media_clip_finalize (GObject* obj); +GType view_media_audio_clip_get_type (void); +enum { + VIEW_MEDIA_AUDIO_CLIP_DUMMY_PROPERTY +}; +ViewMediaAudioClip* view_media_audio_clip_new (GstBin* composition, ModelClip* clip, const char* filename, GError** error); +ViewMediaAudioClip* view_media_audio_clip_construct (GType object_type, GstBin* composition, ModelClip* clip, const char* filename, GError** error); +GType view_media_video_clip_get_type (void); +enum { + VIEW_MEDIA_VIDEO_CLIP_DUMMY_PROPERTY +}; +ViewMediaVideoClip* view_media_video_clip_new (GstBin* composition, ModelClip* clip, const char* filename, GError** error); +ViewMediaVideoClip* view_media_video_clip_construct (GType object_type, GstBin* composition, ModelClip* clip, const char* filename, GError** error); +GType view_media_track_get_type (void); +GType view_media_engine_get_type (void); +#define VIEW_MEDIA_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_MEDIA_TRACK, ViewMediaTrackPrivate)) +enum { + VIEW_MEDIA_TRACK_DUMMY_PROPERTY +}; +static void view_media_track_on_clip_added (ViewMediaTrack* self, ModelClip* clip); +GType model_track_get_type (void); +static void _view_media_track_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self); +static void view_media_track_on_track_removed (ViewMediaTrack* self, ModelTrack* track); +static void _view_media_track_on_track_removed_model_track_track_removed (ModelTrack* _sender, ModelTrack* track, gpointer self); +static void view_media_track_on_pre_export (ViewMediaTrack* self, gint64 length); +static void _view_media_track_on_pre_export_view_media_engine_pre_export (ViewMediaEngine* _sender, gint64 length, gpointer self); +static void view_media_track_on_post_export (ViewMediaTrack* self, gboolean deleted); +static void _view_media_track_on_post_export_view_media_engine_post_export (ViewMediaEngine* _sender, gboolean canceled, gpointer self); +GstElement* make_element_with_name (const char* element_name, const char* display_name, GError** error); +GstElement* view_media_track_empty_element (ViewMediaTrack* self, GError** error); +GType multi_file_progress_interface_get_type (void); +GType model_audio_track_get_type (void); +static void view_media_track_on_pad_added (ViewMediaTrack* self, GstPad* pad); +static void _view_media_track_on_pad_added_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self); +static void view_media_track_on_pad_removed (ViewMediaTrack* self, GstPad* pad); +static void _view_media_track_on_pad_removed_gst_element_pad_removed (GstElement* _sender, GstPad* pad, gpointer self); +ViewMediaTrack* view_media_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelTrack* track, GError** error); +static GstElement* view_media_track_real_empty_element (ViewMediaTrack* self, GError** error); +GstElement* view_media_track_get_element (ViewMediaTrack* self); +static GstElement* view_media_track_real_get_element (ViewMediaTrack* self); +void view_media_track_link_new_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +static void view_media_track_real_link_new_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +void view_media_track_unlink_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +static void view_media_track_real_unlink_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element); +static void view_media_track_on_clip_updated (ViewMediaTrack* self, ModelClip* clip); +static void _view_media_track_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self); +gboolean model_clip_file_is_online (ModelClipFile* self); +static void view_media_track_on_media_clip_removed (ViewMediaTrack* self, ViewMediaClip* clip); +static void _view_media_track_on_media_clip_removed_view_media_clip_clip_removed (ViewMediaClip* _sender, ViewMediaClip* clip, gpointer self); +static void view_media_track_finalize (GObject* obj); +GType view_media_video_track_get_type (void); +#define VIEW_MEDIA_VIDEO_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_MEDIA_VIDEO_TRACK, ViewMediaVideoTrackPrivate)) +enum { + VIEW_MEDIA_VIDEO_TRACK_DUMMY_PROPERTY +}; +ViewMediaVideoTrack* view_media_video_track_new (ViewMediaEngine* media_engine, ModelTrack* track, GstElement* converter, GError** error); +ViewMediaVideoTrack* view_media_video_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelTrack* track, GstElement* converter, GError** error); +static GstElement* view_media_video_track_real_get_element (ViewMediaTrack* base); +static GstElement* view_media_video_track_real_empty_element (ViewMediaTrack* base, GError** error); +static void view_media_video_track_real_link_new_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element); +static void view_media_video_track_real_unlink_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element); +static void view_media_video_track_finalize (GObject* obj); +GType view_click_track_get_type (void); +GType model_project_get_type (void); +#define VIEW_CLICK_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_CLICK_TRACK, ViewClickTrackPrivate)) +enum { + VIEW_CLICK_TRACK_DUMMY_PROPERTY +}; +GType fraction_get_type (void); +Fraction* fraction_dup (const Fraction* self); +void fraction_free (Fraction* self); +GType model_tempo_information_get_type (void); +GType time_code_get_type (void); +TimeCode* time_code_dup (const TimeCode* self); +void time_code_free (TimeCode* self); +GType model_project_loader_get_type (void); +gpointer model_undo_manager_ref (gpointer instance); +void model_undo_manager_unref (gpointer instance); +GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void model_value_set_undo_manager (GValue* value, gpointer v_object); +void model_value_take_undo_manager (GValue* value, gpointer v_object); +gpointer model_value_get_undo_manager (const GValue* value); +GType model_undo_manager_get_type (void); +GType model_library_importer_get_type (void); +static void view_click_track_on_playstate_changed (ViewClickTrack* self); +static void _view_click_track_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self); +static void _g_list_free_g_free (GList* self); +ViewClickTrack* view_click_track_new (ViewMediaEngine* engine, ModelProject* project, GError** error); +ViewClickTrack* view_click_track_construct (GType object_type, ViewMediaEngine* engine, ModelProject* project, GError** error); +static void view_click_track_clear_controllers (ViewClickTrack* self); +PlayState view_media_engine_get_play_state (ViewMediaEngine* self); +static void view_click_track_setup_clicks (ViewClickTrack* self, gint bpm, Fraction* time_signature); +gint model_tempo_information_get_bpm (ModelTempoInformation* self); +void model_tempo_information_get_time_signature (ModelTempoInformation* self, Fraction* result); +static void view_click_track_finalize (GObject* obj); +GType view_media_audio_track_get_type (void); +#define VIEW_MEDIA_AUDIO_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_MEDIA_AUDIO_TRACK, ViewMediaAudioTrackPrivate)) +enum { + VIEW_MEDIA_AUDIO_TRACK_DUMMY_PROPERTY +}; +GType model_parameter_get_type (void); +static void view_media_audio_track_on_parameter_changed (ViewMediaAudioTrack* self, ModelParameter parameter, double new_value); +static void _view_media_audio_track_on_parameter_changed_model_audio_track_parameter_changed (ModelAudioTrack* _sender, ModelParameter parameter, double new_value, gpointer self); +double model_audio_track_get_pan (ModelAudioTrack* self); +double model_audio_track_get_volume (ModelAudioTrack* self); +static void view_media_audio_track_on_level_changed (ViewMediaAudioTrack* self, GstObject* source, double level_left, double level_right); +static void _view_media_audio_track_on_level_changed_view_media_engine_level_changed (ViewMediaEngine* _sender, GstObject* source, double level_left, double level_right, gpointer self); +void model_audio_track_on_level_changed (ModelAudioTrack* self, double level_left, double level_right); +static void _model_audio_track_on_level_changed_view_media_audio_track_level_changed (ViewMediaAudioTrack* _sender, double level_left, double level_right, gpointer self); +ViewMediaAudioTrack* view_media_audio_track_new (ViewMediaEngine* media_engine, ModelAudioTrack* track, GError** error); +ViewMediaAudioTrack* view_media_audio_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelAudioTrack* track, GError** error); +GstElement* view_media_engine_get_audio_silence (ViewMediaEngine* self, GError** error); +static GstElement* view_media_audio_track_real_empty_element (ViewMediaTrack* base, GError** error); +static void view_media_audio_track_real_link_new_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element); +static void view_media_audio_track_real_unlink_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element); +static GstElement* view_media_audio_track_real_get_element (ViewMediaTrack* base); +static void view_media_audio_track_finalize (GObject* obj); +GType view_media_connector_get_type (void); +GType view_media_connector_media_types_get_type (void); +#define VIEW_MEDIA_CONNECTOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_MEDIA_CONNECTOR, ViewMediaConnectorPrivate)) +enum { + VIEW_MEDIA_CONNECTOR_DUMMY_PROPERTY +}; +ViewMediaConnector* view_media_connector_construct (GType object_type, ViewMediaConnectorMediaTypes media_types); +gboolean view_media_connector_has_audio (ViewMediaConnector* self); +gboolean view_media_connector_has_video (ViewMediaConnector* self); +void view_media_connector_connect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_media_connector_real_connect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +void view_media_connector_do_disconnect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_media_connector_real_do_disconnect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_media_connector_finalize (GObject* obj); +GType view_video_output_get_type (void); +#define VIEW_VIDEO_OUTPUT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_VIDEO_OUTPUT, ViewVideoOutputPrivate)) +enum { + VIEW_VIDEO_OUTPUT_DUMMY_PROPERTY +}; +ViewVideoOutput* view_video_output_new (GtkWidget* output_widget, GError** error); +ViewVideoOutput* view_video_output_construct (GType object_type, GtkWidget* output_widget, GError** error); +static void view_video_output_real_connect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_video_output_real_do_disconnect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_video_output_finalize (GObject* obj); +GType view_audio_output_get_type (void); +#define VIEW_AUDIO_OUTPUT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_AUDIO_OUTPUT, ViewAudioOutputPrivate)) +enum { + VIEW_AUDIO_OUTPUT_DUMMY_PROPERTY +}; +ViewAudioOutput* view_audio_output_new (GstCaps* caps, GError** error); +ViewAudioOutput* view_audio_output_construct (GType object_type, GstCaps* caps, GError** error); +static void view_audio_output_real_connect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_audio_output_real_do_disconnect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_audio_output_finalize (GObject* obj); +GType view_ogg_vorbis_export_get_type (void); +#define VIEW_OGG_VORBIS_EXPORT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_OGG_VORBIS_EXPORT, ViewOggVorbisExportPrivate)) +enum { + VIEW_OGG_VORBIS_EXPORT_DUMMY_PROPERTY +}; +ViewOggVorbisExport* view_ogg_vorbis_export_new (ViewMediaConnectorMediaTypes media_types, const char* filename, GstCaps* caps, GError** error); +ViewOggVorbisExport* view_ogg_vorbis_export_construct (GType object_type, ViewMediaConnectorMediaTypes media_types, const char* filename, GstCaps* caps, GError** error); +char* view_ogg_vorbis_export_get_filename (ViewOggVorbisExport* self); +static void view_ogg_vorbis_export_real_connect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_ogg_vorbis_export_real_do_disconnect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1); +static void view_ogg_vorbis_export_finalize (GObject* obj); +#define VIEW_MEDIA_ENGINE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEnginePrivate)) +enum { + VIEW_MEDIA_ENGINE_DUMMY_PROPERTY +}; +#define VIEW_MEDIA_ENGINE_MIN_GNONLIN "0.10.11" +#define VIEW_MEDIA_ENGINE_MIN_GST_PLUGINS_GOOD "0.10.15" +#define VIEW_MEDIA_ENGINE_MIN_GST_PLUGINS_BASE "0.10.15" +void model_project_on_playstate_changed (ModelProject* self); +static void _model_project_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self); +static void view_media_engine_on_error (ViewMediaEngine* self, GstBus* bus, GstMessage* message); +static void _view_media_engine_on_error_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void view_media_engine_on_warning (ViewMediaEngine* self, GstBus* bus, GstMessage* message); +static void _view_media_engine_on_warning_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void view_media_engine_on_eos (ViewMediaEngine* self, GstBus* bus, GstMessage* message); +static void _view_media_engine_on_eos_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void view_media_engine_on_state_change (ViewMediaEngine* self, GstBus* bus, GstMessage* message); +static void _view_media_engine_on_state_change_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +static void view_media_engine_on_element (ViewMediaEngine* self, GstBus* bus, GstMessage* message); +static void _view_media_engine_on_element_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self); +ViewMediaEngine* view_media_engine_new (ModelProject* project, gboolean include_video, GError** error); +ViewMediaEngine* view_media_engine_construct (GType object_type, ModelProject* project, gboolean include_video, GError** error); +static void view_media_engine_check_version (GstRegistry* registry, const char* plugin_name, const char* package_name, const char* min_version, GError** error); +void view_media_engine_can_run (GError** error); +GQuark media_error_quark (void); +gboolean version_at_least (const char* v, const char* w); +void view_media_engine_connect_output (ViewMediaEngine* self, ViewMediaConnector* connector); +void view_media_engine_disconnect_output (ViewMediaEngine* self, ViewMediaConnector* connector); +GstCaps* view_media_engine_get_project_audio_caps (ViewMediaEngine* self); +gint view_media_engine_get_sample_rate (ViewMediaEngine* self); +gint view_media_engine_get_sample_width (ViewMediaEngine* self); +gint view_media_engine_get_sample_depth (ViewMediaEngine* self); +void view_media_engine_set_play_state (ViewMediaEngine* self, PlayState play_state); +GstCaps* view_media_engine_build_audio_caps (ViewMediaEngine* self, gint num_channels); +GstCaps* view_media_engine_get_project_audio_export_caps (ViewMediaEngine* self); +void model_project_print_graph (ModelProject* self, GstBin* bin, const char* file_name); +static GValue* _gst_value_dup (GValue* self); +gboolean view_media_engine_do_state_change (ViewMediaEngine* self); +void view_media_engine_go (ViewMediaEngine* self, gint64 pos); +static void view_media_engine_do_paused_state_export (ViewMediaEngine* self); +static void view_media_engine_end_export (ViewMediaEngine* self, gboolean deleted); +void view_media_engine_close (ViewMediaEngine* self); +void view_media_engine_start_record (ViewMediaEngine* self, ModelClip* region, GError** error); +void view_media_engine_do_play (ViewMediaEngine* self, PlayState new_state); +void view_media_engine_set_gst_state (ViewMediaEngine* self, GstState state); +void view_media_engine_post_record (ViewMediaEngine* self); +void view_media_engine_do_null_state_export (ViewMediaEngine* self, gint64 length); +static void view_media_engine_real_do_null_state_export (ViewMediaEngine* self, gint64 length); +static gboolean view_media_engine_on_callback (ViewMediaEngine* self); +static gboolean _view_media_engine_on_callback_gsource_func (gpointer self); +gint64 model_project_get_length (ModelProject* self); +void view_media_engine_pause (ViewMediaEngine* self); +gboolean model_project_transport_is_recording (ModelProject* self); +static void view_media_engine_real_pause (ViewMediaEngine* self); +static void view_media_engine_seek (ViewMediaEngine* self, GstSeekFlags flags, gint64 pos); +static void view_media_engine_play (ViewMediaEngine* self); +void view_media_engine_start_export (ViewMediaEngine* self, const char* filename); +static void view_media_engine_real_cancel (MultiFileProgressInterface* base); +static void view_media_engine_real_complete (MultiFileProgressInterface* base); +void view_media_engine_on_load_complete (ViewMediaEngine* self); +void model_clip_set_duration (ModelClip* self, gint64 value); +void view_media_engine_on_callback_pulse (ViewMediaEngine* self); +void _model_track_delete_clip (ModelTrack* self, ModelClip* clip); +static char* view_media_engine_new_audio_filename (ViewMediaEngine* self, ModelTrack* track); +ModelClipFile* model_clip_file_new (const char* filename, gint64 length); +ModelClipFile* model_clip_file_construct (GType object_type, const char* filename, gint64 length); +ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording); +void view_media_engine_record (ViewMediaEngine* self, ModelAudioTrack* track); +gboolean model_project_transport_is_playing (ModelProject* self); +void _model_track_move (ModelTrack* self, ModelClip* c, gint64 pos); +GstCaps* view_media_engine_get_record_audio_caps (ViewMediaEngine* self); +char* model_project_get_audio_path (ModelProject* self); +static char* view_media_engine_generate_base (ViewMediaEngine* self, const char* name); +ModelMediaType model_track_media_type (ModelTrack* self); +static ViewMediaTrack* view_media_engine_create_audio_track (ViewMediaEngine* self, ModelTrack* track, GError** error); +static void view_media_engine_on_track_removed (ViewMediaEngine* self, ViewMediaTrack* track); +static void _view_media_engine_on_track_removed_view_media_track_track_removed (ViewMediaTrack* _sender, ViewMediaTrack* track, gpointer self); +static void view_media_engine_on_error_occurred (ViewMediaEngine* self, const char* major_message, const char* minor_message); +static void _view_media_engine_on_error_occurred_view_media_track_error_occurred (ViewMediaTrack* _sender, const char* major_message, const char* minor_message, gpointer self); +void view_media_engine_on_track_added (ViewMediaEngine* self, ModelTrack* track); +static void view_media_engine_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static int _vala_strcmp0 (const char * str1, const char * str2); + + +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); +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); +static void g_cclosure_user_marshal_VOID__INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); +static void g_cclosure_user_marshal_VOID__OBJECT_DOUBLE_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); + +GType play_state_get_type (void) { + static volatile gsize play_state_type_id__volatile = 0; + if (g_once_init_enter (&play_state_type_id__volatile)) { + static const GEnumValue values[] = {{PLAY_STATE_STOPPED, "PLAY_STATE_STOPPED", "stopped"}, {PLAY_STATE_PRE_PLAY, "PLAY_STATE_PRE_PLAY", "pre-play"}, {PLAY_STATE_PLAYING, "PLAY_STATE_PLAYING", "playing"}, {PLAY_STATE_PRE_RECORD_NULL, "PLAY_STATE_PRE_RECORD_NULL", "pre-record-null"}, {PLAY_STATE_PRE_RECORD, "PLAY_STATE_PRE_RECORD", "pre-record"}, {PLAY_STATE_RECORDING, "PLAY_STATE_RECORDING", "recording"}, {PLAY_STATE_POST_RECORD, "PLAY_STATE_POST_RECORD", "post-record"}, {PLAY_STATE_PRE_EXPORT, "PLAY_STATE_PRE_EXPORT", "pre-export"}, {PLAY_STATE_EXPORTING, "PLAY_STATE_EXPORTING", "exporting"}, {PLAY_STATE_CANCEL_EXPORT, "PLAY_STATE_CANCEL_EXPORT", "cancel-export"}, {PLAY_STATE_LOADING, "PLAY_STATE_LOADING", "loading"}, {PLAY_STATE_CLOSING, "PLAY_STATE_CLOSING", "closing"}, {PLAY_STATE_CLOSED, "PLAY_STATE_CLOSED", "closed"}, {0, NULL, NULL}}; + GType play_state_type_id; + play_state_type_id = g_enum_register_static ("PlayState", values); + g_once_init_leave (&play_state_type_id__volatile, play_state_type_id); + } + return play_state_type_id__volatile; +} + + +static gpointer _gst_object_ref0 (gpointer self) { + return self ? gst_object_ref (self) : NULL; +} + + +#line 69 "MediaEngine.vala" +static void _view_media_clip_on_duration_changed_model_clip_duration_changed (ModelClip* _sender, gint64 duration, gpointer self) { +#line 970 "MediaEngine.c" + view_media_clip_on_duration_changed (self, duration); +} + + +#line 64 "MediaEngine.vala" +static void _view_media_clip_on_media_start_changed_model_clip_media_start_changed (ModelClip* _sender, gint64 media_start, gpointer self) { +#line 977 "MediaEngine.c" + view_media_clip_on_media_start_changed (self, media_start); +} + + +#line 76 "MediaEngine.vala" +static void _view_media_clip_on_start_changed_model_clip_start_changed (ModelClip* _sender, gint64 start, gpointer self) { +#line 984 "MediaEngine.c" + view_media_clip_on_start_changed (self, start); +} + + +#line 58 "MediaEngine.vala" +static void _view_media_clip_on_clip_removed_model_clip_removed (ModelClip* _sender, ModelClip* clip, gpointer self) { +#line 991 "MediaEngine.c" + view_media_clip_on_clip_removed (self); +} + + +#line 30 "MediaEngine.vala" +ViewMediaClip* view_media_clip_construct (GType object_type, GstBin* composition, ModelClip* clip, GError** error) { +#line 998 "MediaEngine.c" + GError * _inner_error_; + ViewMediaClip * self; + GstBin* _tmp0_; + GstElement* _tmp1_; + GstElement* _tmp2_; +#line 30 "MediaEngine.vala" + g_return_val_if_fail (GST_IS_BIN (composition), NULL); +#line 30 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 1008 "MediaEngine.c" + _inner_error_ = NULL; +#line 30 "MediaEngine.vala" + self = (ViewMediaClip*) g_object_new (object_type, NULL); +#line 31 "MediaEngine.vala" + self->priv->clip = clip; +#line 32 "MediaEngine.vala" + self->priv->composition = (_tmp0_ = _gst_object_ref0 (composition), _gst_object_unref0 (self->priv->composition), _tmp0_); +#line 33 "MediaEngine.vala" + _tmp1_ = make_element ("gnlsource", &_inner_error_); +#line 1018 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 33 "MediaEngine.vala" + self->file_source = (_tmp2_ = _tmp1_, _gst_object_unref0 (self->file_source), _tmp2_); +#line 34 "MediaEngine.vala" + if (!clip->is_recording) { +#line 35 "MediaEngine.vala" + g_signal_connect_object (clip, "duration-changed", (GCallback) _view_media_clip_on_duration_changed_model_clip_duration_changed, self, 0); +#line 36 "MediaEngine.vala" + g_signal_connect_object (clip, "media-start-changed", (GCallback) _view_media_clip_on_media_start_changed_model_clip_media_start_changed, self, 0); +#line 37 "MediaEngine.vala" + g_signal_connect_object (clip, "start-changed", (GCallback) _view_media_clip_on_start_changed_model_clip_start_changed, self, 0); +#line 39 "MediaEngine.vala" + gst_bin_add (composition, _gst_object_ref0 (self->file_source)); +#line 41 "MediaEngine.vala" + view_media_clip_on_start_changed (self, model_clip_get_start (clip)); +#line 42 "MediaEngine.vala" + view_media_clip_on_media_start_changed (self, model_clip_get_media_start (clip)); +#line 43 "MediaEngine.vala" + view_media_clip_on_duration_changed (self, model_clip_get_duration (clip)); +#line 1042 "MediaEngine.c" + } +#line 45 "MediaEngine.vala" + g_signal_connect_object (clip, "removed", (GCallback) _view_media_clip_on_clip_removed_model_clip_removed, self, 0); +#line 1046 "MediaEngine.c" + return self; +} + + +#line 30 "MediaEngine.vala" +ViewMediaClip* view_media_clip_new (GstBin* composition, ModelClip* clip, GError** error) { +#line 30 "MediaEngine.vala" + return view_media_clip_construct (VIEW_TYPE_MEDIA_CLIP, composition, clip, error); +#line 1055 "MediaEngine.c" +} + + +#line 58 "MediaEngine.vala" +void view_media_clip_on_clip_removed (ViewMediaClip* self) { +#line 58 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CLIP (self)); +#line 59 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_removed"); +#line 60 "MediaEngine.vala" + gst_bin_remove (self->priv->composition, GST_ELEMENT (GST_BIN (self->file_source))); +#line 61 "MediaEngine.vala" + g_signal_emit_by_name (self, "clip-removed", self); +#line 1069 "MediaEngine.c" +} + + +#line 64 "MediaEngine.vala" +static void view_media_clip_on_media_start_changed (ViewMediaClip* self, gint64 media_start) { +#line 64 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CLIP (self)); +#line 65 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_media_start_changed"); +#line 66 "MediaEngine.vala" + g_object_set (G_OBJECT (self->file_source), "media-start", media_start, NULL); +#line 1081 "MediaEngine.c" +} + + +#line 69 "MediaEngine.vala" +static void view_media_clip_on_duration_changed (ViewMediaClip* self, gint64 duration) { +#line 69 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CLIP (self)); +#line 70 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_duration_changed"); +#line 71 "MediaEngine.vala" + g_object_set (G_OBJECT (self->file_source), "duration", duration, NULL); +#line 73 "MediaEngine.vala" + g_object_set (G_OBJECT (self->file_source), "media-duration", duration, NULL); +#line 1095 "MediaEngine.c" +} + + +#line 76 "MediaEngine.vala" +static void view_media_clip_on_start_changed (ViewMediaClip* self, gint64 start) { +#line 76 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CLIP (self)); +#line 77 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_start_changed"); +#line 78 "MediaEngine.vala" + g_object_set (G_OBJECT (self->file_source), "start", start, NULL); +#line 1107 "MediaEngine.c" +} + + +#line 81 "MediaEngine.vala" +void view_media_clip_add_single_decode_bin (ViewMediaClip* self, const char* filename, const char* caps, GError** error) { +#line 1113 "MediaEngine.c" + GError * _inner_error_; + GstCaps* _tmp0_; + GstElement* _tmp1_; + GstElement* sbin; +#line 81 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CLIP (self)); +#line 81 "MediaEngine.vala" + g_return_if_fail (filename != NULL); +#line 81 "MediaEngine.vala" + g_return_if_fail (caps != NULL); +#line 1124 "MediaEngine.c" + _inner_error_ = NULL; +#line 82 "MediaEngine.vala" + sbin = (_tmp1_ = GST_ELEMENT (single_decode_bin_new (_tmp0_ = gst_caps_from_string (caps), "singledecoder", filename, &_inner_error_)), _gst_caps_unref0 (_tmp0_), _tmp1_); +#line 1128 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 84 "MediaEngine.vala" + if (gst_bin_add (GST_BIN (self->file_source), _gst_object_ref0 (sbin))) { +#line 85 "MediaEngine.vala" + if (!gst_element_sync_state_with_parent (self->file_source)) { +#line 86 "MediaEngine.vala" + model_clip_file_set_online (self->priv->clip->clipfile, FALSE); +#line 1139 "MediaEngine.c" + } + } + _gst_object_unref0 (sbin); +} + + +#line 91 "MediaEngine.vala" +gboolean view_media_clip_is_equal (ViewMediaClip* self, ModelClip* clip) { +#line 1148 "MediaEngine.c" + gboolean result = FALSE; +#line 91 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_CLIP (self), FALSE); +#line 91 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), FALSE); +#line 1154 "MediaEngine.c" + result = clip == self->priv->clip; +#line 92 "MediaEngine.vala" + return result; +#line 1158 "MediaEngine.c" +} + + +static void view_media_clip_class_init (ViewMediaClipClass * klass) { + view_media_clip_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewMediaClipPrivate)); + G_OBJECT_CLASS (klass)->finalize = view_media_clip_finalize; + g_signal_new ("clip_removed", VIEW_TYPE_MEDIA_CLIP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, VIEW_TYPE_MEDIA_CLIP); +} + + +static void view_media_clip_instance_init (ViewMediaClip * self) { + self->priv = VIEW_MEDIA_CLIP_GET_PRIVATE (self); +} + + +static void view_media_clip_finalize (GObject* obj) { + ViewMediaClip * self; + self = VIEW_MEDIA_CLIP (obj); + { + guint _tmp0_; +#line 49 "MediaEngine.vala" + g_signal_parse_name ("removed", MODEL_TYPE_CLIP, &_tmp0_, NULL, FALSE); +#line 49 "MediaEngine.vala" + g_signal_handlers_disconnect_matched (self->priv->clip, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _view_media_clip_on_clip_removed_model_clip_removed, self); +#line 50 "MediaEngine.vala" + if (!self->priv->clip->is_recording) { +#line 1186 "MediaEngine.c" + guint _tmp1_; + guint _tmp2_; + guint _tmp3_; +#line 51 "MediaEngine.vala" + g_signal_parse_name ("duration-changed", MODEL_TYPE_CLIP, &_tmp1_, NULL, FALSE); +#line 51 "MediaEngine.vala" + g_signal_handlers_disconnect_matched (self->priv->clip, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _view_media_clip_on_duration_changed_model_clip_duration_changed, self); +#line 52 "MediaEngine.vala" + g_signal_parse_name ("media-start-changed", MODEL_TYPE_CLIP, &_tmp2_, NULL, FALSE); +#line 52 "MediaEngine.vala" + g_signal_handlers_disconnect_matched (self->priv->clip, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _view_media_clip_on_media_start_changed_model_clip_media_start_changed, self); +#line 53 "MediaEngine.vala" + g_signal_parse_name ("start-changed", MODEL_TYPE_CLIP, &_tmp3_, NULL, FALSE); +#line 53 "MediaEngine.vala" + g_signal_handlers_disconnect_matched (self->priv->clip, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp3_, 0, NULL, (GCallback) _view_media_clip_on_start_changed_model_clip_start_changed, self); +#line 1202 "MediaEngine.c" + } +#line 55 "MediaEngine.vala" + gst_element_set_state (self->file_source, GST_STATE_NULL); +#line 1206 "MediaEngine.c" + } + _gst_object_unref0 (self->file_source); + _gst_object_unref0 (self->priv->composition); + G_OBJECT_CLASS (view_media_clip_parent_class)->finalize (obj); +} + + +GType view_media_clip_get_type (void) { + static volatile gsize view_media_clip_type_id__volatile = 0; + if (g_once_init_enter (&view_media_clip_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaClipClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_clip_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaClip), 0, (GInstanceInitFunc) view_media_clip_instance_init, NULL }; + GType view_media_clip_type_id; + view_media_clip_type_id = g_type_register_static (G_TYPE_OBJECT, "ViewMediaClip", &g_define_type_info, 0); + g_once_init_leave (&view_media_clip_type_id__volatile, view_media_clip_type_id); + } + return view_media_clip_type_id__volatile; +} + + +#line 97 "MediaEngine.vala" +ViewMediaAudioClip* view_media_audio_clip_construct (GType object_type, GstBin* composition, ModelClip* clip, const char* filename, GError** error) { +#line 1228 "MediaEngine.c" + GError * _inner_error_; + ViewMediaAudioClip * self; +#line 97 "MediaEngine.vala" + g_return_val_if_fail (GST_IS_BIN (composition), NULL); +#line 97 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 97 "MediaEngine.vala" + g_return_val_if_fail (filename != NULL, NULL); +#line 1237 "MediaEngine.c" + _inner_error_ = NULL; +#line 98 "MediaEngine.vala" + self = (ViewMediaAudioClip*) view_media_clip_construct (object_type, composition, clip, error); +#line 99 "MediaEngine.vala" + if (!clip->is_recording) { +#line 100 "MediaEngine.vala" + view_media_clip_add_single_decode_bin (VIEW_MEDIA_CLIP (self), filename, "audio/x-raw-float;audio/x-raw-int", &_inner_error_); +#line 1245 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } + } + return self; +} + + +#line 97 "MediaEngine.vala" +ViewMediaAudioClip* view_media_audio_clip_new (GstBin* composition, ModelClip* clip, const char* filename, GError** error) { +#line 97 "MediaEngine.vala" + return view_media_audio_clip_construct (VIEW_TYPE_MEDIA_AUDIO_CLIP, composition, clip, filename, error); +#line 1260 "MediaEngine.c" +} + + +static void view_media_audio_clip_class_init (ViewMediaAudioClipClass * klass) { + view_media_audio_clip_parent_class = g_type_class_peek_parent (klass); +} + + +static void view_media_audio_clip_instance_init (ViewMediaAudioClip * self) { +} + + +GType view_media_audio_clip_get_type (void) { + static volatile gsize view_media_audio_clip_type_id__volatile = 0; + if (g_once_init_enter (&view_media_audio_clip_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaAudioClipClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_audio_clip_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaAudioClip), 0, (GInstanceInitFunc) view_media_audio_clip_instance_init, NULL }; + GType view_media_audio_clip_type_id; + view_media_audio_clip_type_id = g_type_register_static (VIEW_TYPE_MEDIA_CLIP, "ViewMediaAudioClip", &g_define_type_info, 0); + g_once_init_leave (&view_media_audio_clip_type_id__volatile, view_media_audio_clip_type_id); + } + return view_media_audio_clip_type_id__volatile; +} + + +#line 106 "MediaEngine.vala" +ViewMediaVideoClip* view_media_video_clip_construct (GType object_type, GstBin* composition, ModelClip* clip, const char* filename, GError** error) { +#line 1287 "MediaEngine.c" + GError * _inner_error_; + ViewMediaVideoClip * self; +#line 106 "MediaEngine.vala" + g_return_val_if_fail (GST_IS_BIN (composition), NULL); +#line 106 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL); +#line 106 "MediaEngine.vala" + g_return_val_if_fail (filename != NULL, NULL); +#line 1296 "MediaEngine.c" + _inner_error_ = NULL; +#line 107 "MediaEngine.vala" + self = (ViewMediaVideoClip*) view_media_clip_construct (object_type, composition, clip, error); +#line 108 "MediaEngine.vala" + view_media_clip_add_single_decode_bin (VIEW_MEDIA_CLIP (self), filename, "video/x-raw-yuv; video/x-raw-rgb", &_inner_error_); +#line 1302 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } + return self; +} + + +#line 106 "MediaEngine.vala" +ViewMediaVideoClip* view_media_video_clip_new (GstBin* composition, ModelClip* clip, const char* filename, GError** error) { +#line 106 "MediaEngine.vala" + return view_media_video_clip_construct (VIEW_TYPE_MEDIA_VIDEO_CLIP, composition, clip, filename, error); +#line 1316 "MediaEngine.c" +} + + +static void view_media_video_clip_class_init (ViewMediaVideoClipClass * klass) { + view_media_video_clip_parent_class = g_type_class_peek_parent (klass); +} + + +static void view_media_video_clip_instance_init (ViewMediaVideoClip * self) { +} + + +GType view_media_video_clip_get_type (void) { + static volatile gsize view_media_video_clip_type_id__volatile = 0; + if (g_once_init_enter (&view_media_video_clip_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaVideoClipClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_video_clip_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaVideoClip), 0, (GInstanceInitFunc) view_media_video_clip_instance_init, NULL }; + GType view_media_video_clip_type_id; + view_media_video_clip_type_id = g_type_register_static (VIEW_TYPE_MEDIA_CLIP, "ViewMediaVideoClip", &g_define_type_info, 0); + g_once_init_leave (&view_media_video_clip_type_id__volatile, view_media_video_clip_type_id); + } + return view_media_video_clip_type_id__volatile; +} + + +#line 169 "MediaEngine.vala" +static void _view_media_track_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self) { +#line 1343 "MediaEngine.c" + view_media_track_on_clip_added (self, clip); +} + + +#line 216 "MediaEngine.vala" +static void _view_media_track_on_track_removed_model_track_track_removed (ModelTrack* _sender, ModelTrack* track, gpointer self) { +#line 1350 "MediaEngine.c" + view_media_track_on_track_removed (self, track); +} + + +#line 221 "MediaEngine.vala" +static void _view_media_track_on_pre_export_view_media_engine_pre_export (ViewMediaEngine* _sender, gint64 length, gpointer self) { +#line 1357 "MediaEngine.c" + view_media_track_on_pre_export (self, length); +} + + +#line 227 "MediaEngine.vala" +static void _view_media_track_on_post_export_view_media_engine_post_export (ViewMediaEngine* _sender, gboolean canceled, gpointer self) { +#line 1364 "MediaEngine.c" + view_media_track_on_post_export (self, canceled); +} + + +#line 206 "MediaEngine.vala" +static void _view_media_track_on_pad_added_gst_element_pad_added (GstElement* _sender, GstPad* pad, gpointer self) { +#line 1371 "MediaEngine.c" + view_media_track_on_pad_added (self, pad); +} + + +#line 211 "MediaEngine.vala" +static void _view_media_track_on_pad_removed_gst_element_pad_removed (GstElement* _sender, GstPad* pad, gpointer self) { +#line 1378 "MediaEngine.c" + view_media_track_on_pad_removed (self, pad); +} + + +#line 123 "MediaEngine.vala" +ViewMediaTrack* view_media_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelTrack* track, GError** error) { +#line 1385 "MediaEngine.c" + GError * _inner_error_; + ViewMediaTrack * self; + GeeArrayList* _tmp0_; + GstElement* _tmp1_; + GstBin* _tmp2_; + GstElement* _tmp3_; + GstElement* _tmp4_; + GstBin* default_source_bin; + GstElement* _tmp5_; +#line 123 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine), NULL); +#line 123 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 1399 "MediaEngine.c" + _inner_error_ = NULL; +#line 123 "MediaEngine.vala" + self = (ViewMediaTrack*) g_object_new (object_type, NULL); +#line 124 "MediaEngine.vala" + self->priv->clips = (_tmp0_ = gee_array_list_new (VIEW_TYPE_MEDIA_CLIP, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL), _g_object_unref0 (self->priv->clips), _tmp0_); +#line 125 "MediaEngine.vala" + self->media_engine = media_engine; +#line 126 "MediaEngine.vala" + g_signal_connect_object (track, "clip-added", (GCallback) _view_media_track_on_clip_added_model_track_clip_added, self, 0); +#line 127 "MediaEngine.vala" + g_signal_connect_object (track, "track-removed", (GCallback) _view_media_track_on_track_removed_model_track_track_removed, self, 0); +#line 129 "MediaEngine.vala" + g_signal_connect_object (media_engine, "pre-export", (GCallback) _view_media_track_on_pre_export_view_media_engine_pre_export, self, 0); +#line 130 "MediaEngine.vala" + g_signal_connect_object (media_engine, "post-export", (GCallback) _view_media_track_on_post_export_view_media_engine_post_export, self, 0); +#line 132 "MediaEngine.vala" + _tmp1_ = make_element ("gnlcomposition", &_inner_error_); +#line 1417 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 132 "MediaEngine.vala" + self->composition = (_tmp2_ = GST_BIN (_tmp1_), _gst_object_unref0 (self->composition), _tmp2_); +#line 134 "MediaEngine.vala" + _tmp3_ = make_element_with_name ("gnlsource", "track_default_source", &_inner_error_); +#line 1427 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 134 "MediaEngine.vala" + self->default_source = (_tmp4_ = _tmp3_, _gst_object_unref0 (self->default_source), _tmp4_); +#line 135 "MediaEngine.vala" + default_source_bin = _gst_object_ref0 (GST_BIN (self->default_source)); +#line 136 "MediaEngine.vala" + _tmp5_ = view_media_track_empty_element (self, &_inner_error_); +#line 1439 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (default_source_bin); + g_object_unref (self); + return NULL; + } +#line 136 "MediaEngine.vala" + if (!gst_bin_add (default_source_bin, _tmp5_)) { +#line 137 "MediaEngine.vala" + g_error ("MediaEngine.vala:137: can't add empty element"); +#line 1450 "MediaEngine.c" + } +#line 142 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "priority", 1, NULL); +#line 143 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "start", 0 * GST_SECOND, NULL); +#line 144 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "duration", 1000000 * GST_SECOND, NULL); +#line 145 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "media-start", 0 * GST_SECOND, NULL); +#line 146 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "media-duration", 1000000 * GST_SECOND, NULL); +#line 148 "MediaEngine.vala" + if (!gst_bin_add (self->composition, _gst_object_ref0 (self->default_source))) { +#line 149 "MediaEngine.vala" + g_error ("MediaEngine.vala:149: can't add default source"); +#line 1466 "MediaEngine.c" + } +#line 152 "MediaEngine.vala" + gst_bin_add (GST_BIN (media_engine->pipeline), _gst_object_ref0 (GST_ELEMENT (self->composition))); +#line 153 "MediaEngine.vala" + g_signal_connect_object (GST_ELEMENT (self->composition), "pad-added", (GCallback) _view_media_track_on_pad_added_gst_element_pad_added, self, 0); +#line 154 "MediaEngine.vala" + g_signal_connect_object (GST_ELEMENT (self->composition), "pad-removed", (GCallback) _view_media_track_on_pad_removed_gst_element_pad_removed, self, 0); +#line 1474 "MediaEngine.c" + _gst_object_unref0 (default_source_bin); + return self; +} + + +#line 163 "MediaEngine.vala" +static GstElement* view_media_track_real_empty_element (ViewMediaTrack* self, GError** error) { +#line 1482 "MediaEngine.c" + g_return_val_if_fail (VIEW_IS_MEDIA_TRACK (self), NULL); + g_critical ("Type `%s' does not implement abstract method `view_media_track_empty_element'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return NULL; +} + + +#line 163 "MediaEngine.vala" +GstElement* view_media_track_empty_element (ViewMediaTrack* self, GError** error) { +#line 163 "MediaEngine.vala" + return VIEW_MEDIA_TRACK_GET_CLASS (self)->empty_element (self, error); +#line 1493 "MediaEngine.c" +} + + +#line 164 "MediaEngine.vala" +static GstElement* view_media_track_real_get_element (ViewMediaTrack* self) { +#line 1499 "MediaEngine.c" + g_return_val_if_fail (VIEW_IS_MEDIA_TRACK (self), NULL); + g_critical ("Type `%s' does not implement abstract method `view_media_track_get_element'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return NULL; +} + + +#line 164 "MediaEngine.vala" +GstElement* view_media_track_get_element (ViewMediaTrack* self) { +#line 164 "MediaEngine.vala" + return VIEW_MEDIA_TRACK_GET_CLASS (self)->get_element (self); +#line 1510 "MediaEngine.c" +} + + +#line 166 "MediaEngine.vala" +static void view_media_track_real_link_new_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element) { +#line 1516 "MediaEngine.c" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); + g_critical ("Type `%s' does not implement abstract method `view_media_track_link_new_pad'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 166 "MediaEngine.vala" +void view_media_track_link_new_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element) { +#line 166 "MediaEngine.vala" + VIEW_MEDIA_TRACK_GET_CLASS (self)->link_new_pad (self, pad, track_element); +#line 1527 "MediaEngine.c" +} + + +#line 167 "MediaEngine.vala" +static void view_media_track_real_unlink_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element) { +#line 1533 "MediaEngine.c" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); + g_critical ("Type `%s' does not implement abstract method `view_media_track_unlink_pad'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 167 "MediaEngine.vala" +void view_media_track_unlink_pad (ViewMediaTrack* self, GstPad* pad, GstElement* track_element) { +#line 167 "MediaEngine.vala" + VIEW_MEDIA_TRACK_GET_CLASS (self)->unlink_pad (self, pad, track_element); +#line 1544 "MediaEngine.c" +} + + +#line 175 "MediaEngine.vala" +static void _view_media_track_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self) { +#line 1550 "MediaEngine.c" + view_media_track_on_clip_updated (self, clip); +} + + +#line 169 "MediaEngine.vala" +static void view_media_track_on_clip_added (ViewMediaTrack* self, ModelClip* clip) { +#line 169 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 169 "MediaEngine.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 170 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_added"); +#line 171 "MediaEngine.vala" + g_signal_connect_object (clip, "updated", (GCallback) _view_media_track_on_clip_updated_model_clip_updated, self, 0); +#line 172 "MediaEngine.vala" + view_media_track_on_clip_updated (self, clip); +#line 1567 "MediaEngine.c" +} + + +#line 200 "MediaEngine.vala" +static void _view_media_track_on_media_clip_removed_view_media_clip_clip_removed (ViewMediaClip* _sender, ViewMediaClip* clip, gpointer self) { +#line 1573 "MediaEngine.c" + view_media_track_on_media_clip_removed (self, clip); +} + + +#line 175 "MediaEngine.vala" +static void view_media_track_on_clip_updated (ViewMediaTrack* self, ModelClip* clip) { +#line 1580 "MediaEngine.c" + GError * _inner_error_; +#line 175 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 175 "MediaEngine.vala" + g_return_if_fail (MODEL_IS_CLIP (clip)); +#line 1586 "MediaEngine.c" + _inner_error_ = NULL; +#line 176 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_updated"); +#line 177 "MediaEngine.vala" + if (model_clip_file_is_online (clip->clipfile)) { +#line 1592 "MediaEngine.c" + { + ViewMediaClip* media_clip; + media_clip = NULL; +#line 180 "MediaEngine.vala" + if (clip->type == MODEL_MEDIA_TYPE_AUDIO) { +#line 1598 "MediaEngine.c" + ViewMediaAudioClip* _tmp0_; + ViewMediaClip* _tmp1_; +#line 181 "MediaEngine.vala" + _tmp0_ = view_media_audio_clip_new (self->composition, clip, clip->clipfile->filename, &_inner_error_); +#line 1603 "MediaEngine.c" + if (_inner_error_ != NULL) { + _g_object_unref0 (media_clip); + goto __catch9_g_error; + } +#line 181 "MediaEngine.vala" + media_clip = (_tmp1_ = VIEW_MEDIA_CLIP (_tmp0_), _g_object_unref0 (media_clip), _tmp1_); +#line 1610 "MediaEngine.c" + } else { + ViewMediaVideoClip* _tmp2_; + ViewMediaClip* _tmp3_; +#line 183 "MediaEngine.vala" + _tmp2_ = view_media_video_clip_new (self->composition, clip, clip->clipfile->filename, &_inner_error_); +#line 1616 "MediaEngine.c" + if (_inner_error_ != NULL) { + _g_object_unref0 (media_clip); + goto __catch9_g_error; + } +#line 183 "MediaEngine.vala" + media_clip = (_tmp3_ = VIEW_MEDIA_CLIP (_tmp2_), _g_object_unref0 (media_clip), _tmp3_); +#line 1623 "MediaEngine.c" + } +#line 185 "MediaEngine.vala" + g_signal_connect_object (media_clip, "clip-removed", (GCallback) _view_media_track_on_media_clip_removed_view_media_clip_clip_removed, self, 0); +#line 187 "MediaEngine.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->clips), media_clip); +#line 1629 "MediaEngine.c" + _g_object_unref0 (media_clip); + } + goto __finally9; + __catch9_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { +#line 189 "MediaEngine.vala" + g_signal_emit_by_name (self, "error-occurred", "Could not create clip", e->message); +#line 1641 "MediaEngine.c" + _g_error_free0 (e); + } + } + __finally9: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + } else { + { + GeeIterator* _media_clip_it; + _media_clip_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->clips)); +#line 192 "MediaEngine.vala" + while (TRUE) { +#line 1657 "MediaEngine.c" + ViewMediaClip* media_clip; +#line 192 "MediaEngine.vala" + if (!gee_iterator_next (_media_clip_it)) { +#line 192 "MediaEngine.vala" + break; +#line 1663 "MediaEngine.c" + } +#line 192 "MediaEngine.vala" + media_clip = (ViewMediaClip*) gee_iterator_get (_media_clip_it); +#line 193 "MediaEngine.vala" + if (view_media_clip_is_equal (media_clip, clip)) { +#line 194 "MediaEngine.vala" + view_media_clip_on_clip_removed (media_clip); +#line 1671 "MediaEngine.c" + } + _g_object_unref0 (media_clip); + } + _g_object_unref0 (_media_clip_it); + } + } +} + + +#line 200 "MediaEngine.vala" +static void view_media_track_on_media_clip_removed (ViewMediaTrack* self, ViewMediaClip* clip) { +#line 1683 "MediaEngine.c" + guint _tmp0_; +#line 200 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 200 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CLIP (clip)); +#line 201 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_media_clip_removed"); +#line 202 "MediaEngine.vala" + g_signal_parse_name ("clip-removed", VIEW_TYPE_MEDIA_CLIP, &_tmp0_, NULL, FALSE); +#line 202 "MediaEngine.vala" + g_signal_handlers_disconnect_matched (clip, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _view_media_track_on_media_clip_removed_view_media_clip_clip_removed, self); +#line 203 "MediaEngine.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->clips), clip); +#line 1697 "MediaEngine.c" +} + + +#line 206 "MediaEngine.vala" +static void view_media_track_on_pad_added (ViewMediaTrack* self, GstPad* pad) { +#line 1703 "MediaEngine.c" + GstElement* _tmp0_; +#line 206 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 206 "MediaEngine.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 207 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pad_added"); +#line 208 "MediaEngine.vala" + view_media_track_link_new_pad (self, pad, _tmp0_ = view_media_track_get_element (self)); +#line 1713 "MediaEngine.c" + _gst_object_unref0 (_tmp0_); +} + + +#line 211 "MediaEngine.vala" +static void view_media_track_on_pad_removed (ViewMediaTrack* self, GstPad* pad) { +#line 1720 "MediaEngine.c" + GstElement* _tmp0_; +#line 211 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 211 "MediaEngine.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 212 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pad_removed"); +#line 213 "MediaEngine.vala" + view_media_track_unlink_pad (self, pad, _tmp0_ = view_media_track_get_element (self)); +#line 1730 "MediaEngine.c" + _gst_object_unref0 (_tmp0_); +} + + +#line 216 "MediaEngine.vala" +static void view_media_track_on_track_removed (ViewMediaTrack* self, ModelTrack* track) { +#line 216 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 216 "MediaEngine.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 217 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_removed"); +#line 218 "MediaEngine.vala" + g_signal_emit_by_name (self, "track-removed", self); +#line 1745 "MediaEngine.c" +} + + +#line 221 "MediaEngine.vala" +static void view_media_track_on_pre_export (ViewMediaTrack* self, gint64 length) { +#line 221 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 222 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pre_export"); +#line 223 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "duration", length, NULL); +#line 224 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "media-duration", length, NULL); +#line 1759 "MediaEngine.c" +} + + +#line 227 "MediaEngine.vala" +static void view_media_track_on_post_export (ViewMediaTrack* self, gboolean deleted) { +#line 227 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (self)); +#line 228 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_post_export"); +#line 229 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "duration", 1000000 * GST_SECOND, NULL); +#line 230 "MediaEngine.vala" + g_object_set (G_OBJECT (self->default_source), "media-duration", 1000000 * GST_SECOND, NULL); +#line 1773 "MediaEngine.c" +} + + +static void view_media_track_class_init (ViewMediaTrackClass * klass) { + view_media_track_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewMediaTrackPrivate)); + VIEW_MEDIA_TRACK_CLASS (klass)->empty_element = view_media_track_real_empty_element; + VIEW_MEDIA_TRACK_CLASS (klass)->get_element = view_media_track_real_get_element; + VIEW_MEDIA_TRACK_CLASS (klass)->link_new_pad = view_media_track_real_link_new_pad; + VIEW_MEDIA_TRACK_CLASS (klass)->unlink_pad = view_media_track_real_unlink_pad; + G_OBJECT_CLASS (klass)->finalize = view_media_track_finalize; + g_signal_new ("track_removed", VIEW_TYPE_MEDIA_TRACK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, VIEW_TYPE_MEDIA_TRACK); + g_signal_new ("error_occurred", VIEW_TYPE_MEDIA_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); +} + + +static void view_media_track_instance_init (ViewMediaTrack * self) { + self->priv = VIEW_MEDIA_TRACK_GET_PRIVATE (self); +} + + +static void view_media_track_finalize (GObject* obj) { + ViewMediaTrack * self; + self = VIEW_MEDIA_TRACK (obj); + { + gboolean _tmp4_ = FALSE; +#line 158 "MediaEngine.vala" + if (self->composition != NULL) { +#line 158 "MediaEngine.vala" + _tmp4_ = !gst_bin_remove (GST_BIN (self->media_engine->pipeline), GST_ELEMENT (self->composition)); +#line 1804 "MediaEngine.c" + } else { +#line 158 "MediaEngine.vala" + _tmp4_ = FALSE; +#line 1808 "MediaEngine.c" + } +#line 158 "MediaEngine.vala" + if (_tmp4_) { +#line 159 "MediaEngine.vala" + g_error ("MediaEngine.vala:159: couldn't remove composition"); +#line 1814 "MediaEngine.c" + } + } + _g_object_unref0 (self->priv->clips); + _gst_object_unref0 (self->composition); + _gst_object_unref0 (self->default_source); + _gst_object_unref0 (self->sink); + G_OBJECT_CLASS (view_media_track_parent_class)->finalize (obj); +} + + +GType view_media_track_get_type (void) { + static volatile gsize view_media_track_type_id__volatile = 0; + if (g_once_init_enter (&view_media_track_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaTrack), 0, (GInstanceInitFunc) view_media_track_instance_init, NULL }; + GType view_media_track_type_id; + view_media_track_type_id = g_type_register_static (G_TYPE_OBJECT, "ViewMediaTrack", &g_define_type_info, G_TYPE_FLAG_ABSTRACT); + g_once_init_leave (&view_media_track_type_id__volatile, view_media_track_type_id); + } + return view_media_track_type_id__volatile; +} + + +#line 237 "MediaEngine.vala" +ViewMediaVideoTrack* view_media_video_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelTrack* track, GstElement* converter, GError** error) { +#line 1839 "MediaEngine.c" + ViewMediaVideoTrack * self; +#line 237 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine), NULL); +#line 237 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 237 "MediaEngine.vala" + g_return_val_if_fail (GST_IS_ELEMENT (converter), NULL); +#line 239 "MediaEngine.vala" + self = (ViewMediaVideoTrack*) view_media_track_construct (object_type, media_engine, track, error); +#line 240 "MediaEngine.vala" + self->priv->converter = converter; +#line 1851 "MediaEngine.c" + return self; +} + + +#line 237 "MediaEngine.vala" +ViewMediaVideoTrack* view_media_video_track_new (ViewMediaEngine* media_engine, ModelTrack* track, GstElement* converter, GError** error) { +#line 237 "MediaEngine.vala" + return view_media_video_track_construct (VIEW_TYPE_MEDIA_VIDEO_TRACK, media_engine, track, converter, error); +#line 1860 "MediaEngine.c" +} + + +#line 243 "MediaEngine.vala" +static GstElement* view_media_video_track_real_get_element (ViewMediaTrack* base) { +#line 1866 "MediaEngine.c" + ViewMediaVideoTrack * self; + GstElement* result = NULL; + self = VIEW_MEDIA_VIDEO_TRACK (base); +#line 247 "MediaEngine.vala" + g_assert (self->priv->converter != NULL); +#line 248 "MediaEngine.vala" + g_assert (gst_element_sync_state_with_parent (self->priv->converter)); +#line 1874 "MediaEngine.c" + result = _gst_object_ref0 (self->priv->converter); +#line 249 "MediaEngine.vala" + return result; +#line 1878 "MediaEngine.c" +} + + +#line 252 "MediaEngine.vala" +static GstElement* view_media_video_track_real_empty_element (ViewMediaTrack* base, GError** error) { +#line 1884 "MediaEngine.c" + ViewMediaVideoTrack * self; + GstElement* result = NULL; + GError * _inner_error_; + GstElement* blackness; + self = VIEW_MEDIA_VIDEO_TRACK (base); + _inner_error_ = NULL; +#line 253 "MediaEngine.vala" + blackness = make_element ("videotestsrc", &_inner_error_); +#line 1893 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return NULL; + } +#line 254 "MediaEngine.vala" + g_object_set (G_OBJECT (blackness), "pattern", 2, NULL); +#line 1900 "MediaEngine.c" + result = blackness; +#line 255 "MediaEngine.vala" + return result; +#line 1904 "MediaEngine.c" +} + + +#line 258 "MediaEngine.vala" +static void view_media_video_track_real_link_new_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element) { +#line 1910 "MediaEngine.c" + ViewMediaVideoTrack * self; + GstPad* _tmp0_; + gboolean _tmp1_; + self = VIEW_MEDIA_VIDEO_TRACK (base); +#line 258 "MediaEngine.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 258 "MediaEngine.vala" + g_return_if_fail (GST_IS_ELEMENT (track_element)); +#line 259 "MediaEngine.vala" + if ((_tmp1_ = gst_pad_link (pad, _tmp0_ = gst_element_get_static_pad (track_element, "sink")) != GST_PAD_LINK_OK, _gst_object_unref0 (_tmp0_), _tmp1_)) { +#line 260 "MediaEngine.vala" + g_error ("MediaEngine.vala:260: couldn't link pad to converter"); +#line 1923 "MediaEngine.c" + } +} + + +#line 264 "MediaEngine.vala" +static void view_media_video_track_real_unlink_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element) { +#line 1930 "MediaEngine.c" + ViewMediaVideoTrack * self; + GstPad* _tmp0_; + self = VIEW_MEDIA_VIDEO_TRACK (base); +#line 264 "MediaEngine.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 264 "MediaEngine.vala" + g_return_if_fail (GST_IS_ELEMENT (track_element)); +#line 265 "MediaEngine.vala" + gst_pad_unlink (pad, _tmp0_ = gst_element_get_static_pad (track_element, "sink")); +#line 1940 "MediaEngine.c" + _gst_object_unref0 (_tmp0_); +} + + +static void view_media_video_track_class_init (ViewMediaVideoTrackClass * klass) { + view_media_video_track_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewMediaVideoTrackPrivate)); + VIEW_MEDIA_TRACK_CLASS (klass)->get_element = view_media_video_track_real_get_element; + VIEW_MEDIA_TRACK_CLASS (klass)->empty_element = view_media_video_track_real_empty_element; + VIEW_MEDIA_TRACK_CLASS (klass)->link_new_pad = view_media_video_track_real_link_new_pad; + VIEW_MEDIA_TRACK_CLASS (klass)->unlink_pad = view_media_video_track_real_unlink_pad; + G_OBJECT_CLASS (klass)->finalize = view_media_video_track_finalize; +} + + +static void view_media_video_track_instance_init (ViewMediaVideoTrack * self) { + self->priv = VIEW_MEDIA_VIDEO_TRACK_GET_PRIVATE (self); +} + + +static void view_media_video_track_finalize (GObject* obj) { + ViewMediaVideoTrack * self; + self = VIEW_MEDIA_VIDEO_TRACK (obj); + G_OBJECT_CLASS (view_media_video_track_parent_class)->finalize (obj); +} + + +GType view_media_video_track_get_type (void) { + static volatile gsize view_media_video_track_type_id__volatile = 0; + if (g_once_init_enter (&view_media_video_track_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaVideoTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_video_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaVideoTrack), 0, (GInstanceInitFunc) view_media_video_track_instance_init, NULL }; + GType view_media_video_track_type_id; + view_media_video_track_type_id = g_type_register_static (VIEW_TYPE_MEDIA_TRACK, "ViewMediaVideoTrack", &g_define_type_info, 0); + g_once_init_leave (&view_media_video_track_type_id__volatile, view_media_video_track_type_id); + } + return view_media_video_track_type_id__volatile; +} + + +#line 302 "MediaEngine.vala" +static void _view_click_track_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self) { +#line 1982 "MediaEngine.c" + view_click_track_on_playstate_changed (self); +} + + +static void _g_list_free_g_free (GList* self) { + g_list_foreach (self, (GFunc) g_free, NULL); + g_list_free (self); +} + + +#line 277 "MediaEngine.vala" +ViewClickTrack* view_click_track_construct (GType object_type, ViewMediaEngine* engine, ModelProject* project, GError** error) { +#line 1995 "MediaEngine.c" + GError * _inner_error_; + ViewClickTrack * self; + GstElement* _tmp0_; + GstElement* _tmp1_; + GstElement* _tmp2_; + GstElement* _tmp3_; + GstElement* _tmp4_; + GstElement* _tmp5_; + GList* list; + GstController* _tmp6_; + GstController* _tmp7_; +#line 277 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (engine), NULL); +#line 277 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 2011 "MediaEngine.c" + _inner_error_ = NULL; +#line 277 "MediaEngine.vala" + self = (ViewClickTrack*) g_object_new (object_type, NULL); +#line 278 "MediaEngine.vala" + self->priv->project = project; +#line 279 "MediaEngine.vala" + _tmp0_ = make_element ("audiotestsrc", &_inner_error_); +#line 2019 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 279 "MediaEngine.vala" + self->priv->audio_source = (_tmp1_ = _tmp0_, _gst_object_unref0 (self->priv->audio_source), _tmp1_); +#line 280 "MediaEngine.vala" + _tmp2_ = make_element ("audioconvert", &_inner_error_); +#line 2029 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 280 "MediaEngine.vala" + self->priv->audio_convert = (_tmp3_ = _tmp2_, _gst_object_unref0 (self->priv->audio_convert), _tmp3_); +#line 281 "MediaEngine.vala" + _tmp4_ = make_element ("volume", &_inner_error_); +#line 2039 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 281 "MediaEngine.vala" + self->priv->volume = (_tmp5_ = _tmp4_, _gst_object_unref0 (self->priv->volume), _tmp5_); +#line 282 "MediaEngine.vala" + list = NULL; +#line 283 "MediaEngine.vala" + list = g_list_append (list, g_strdup ("freq")); +#line 284 "MediaEngine.vala" + self->priv->click_controller = (_tmp6_ = gst_controller_new_list (G_OBJECT (self->priv->audio_source), list), _g_object_unref0 (self->priv->click_controller), _tmp6_); +#line 285 "MediaEngine.vala" + list = g_list_remove_all (list, "freq"); +#line 286 "MediaEngine.vala" + list = g_list_append (list, g_strdup ("mute")); +#line 287 "MediaEngine.vala" + self->priv->volume_controller = (_tmp7_ = gst_controller_new_list (G_OBJECT (self->priv->volume), list), _g_object_unref0 (self->priv->volume_controller), _tmp7_); +#line 288 "MediaEngine.vala" + gst_bin_add_many (GST_BIN (engine->pipeline), _gst_object_ref0 (self->priv->audio_source), _gst_object_ref0 (self->priv->volume), _gst_object_ref0 (self->priv->audio_convert), NULL); +#line 289 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->audio_source), "volume", project->click_volume, NULL); +#line 291 "MediaEngine.vala" + gst_element_link_many (self->priv->audio_source, self->priv->audio_convert, self->priv->volume, engine->adder, NULL); +#line 292 "MediaEngine.vala" + g_signal_connect_object (engine, "playstate-changed", (GCallback) _view_click_track_on_playstate_changed_view_media_engine_playstate_changed, self, 0); +#line 2067 "MediaEngine.c" + __g_list_free_g_free0 (list); + return self; +} + + +#line 277 "MediaEngine.vala" +ViewClickTrack* view_click_track_new (ViewMediaEngine* engine, ModelProject* project, GError** error) { +#line 277 "MediaEngine.vala" + return view_click_track_construct (VIEW_TYPE_CLICK_TRACK, engine, project, error); +#line 2077 "MediaEngine.c" +} + + +#line 295 "MediaEngine.vala" +static void view_click_track_clear_controllers (ViewClickTrack* self) { +#line 295 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_CLICK_TRACK (self)); +#line 296 "MediaEngine.vala" + gst_controller_unset_all (self->priv->volume_controller, "mute"); +#line 297 "MediaEngine.vala" + gst_controller_unset_all (self->priv->click_controller, "freq"); +#line 298 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->volume), "mute", TRUE, NULL); +#line 299 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->volume), "volume", 0.0, NULL); +#line 2093 "MediaEngine.c" +} + + +#line 302 "MediaEngine.vala" +static void view_click_track_on_playstate_changed (ViewClickTrack* self) { +#line 302 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_CLICK_TRACK (self)); +#line 303 "MediaEngine.vala" + switch (view_media_engine_get_play_state (self->priv->project->media_engine)) { +#line 2103 "MediaEngine.c" + case PLAY_STATE_PRE_EXPORT: + case PLAY_STATE_STOPPED: + { +#line 306 "MediaEngine.vala" + view_click_track_clear_controllers (self); +#line 307 "MediaEngine.vala" + break; +#line 2111 "MediaEngine.c" + } + case PLAY_STATE_PLAYING: + { + { +#line 309 "MediaEngine.vala" + if (self->priv->project->click_during_play) { +#line 2118 "MediaEngine.c" + Fraction _tmp1_; + Fraction _tmp0_ = {0}; +#line 310 "MediaEngine.vala" + view_click_track_setup_clicks (self, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (self->priv->project)), (_tmp1_ = (model_tempo_information_get_time_signature (MODEL_TEMPO_INFORMATION (self->priv->project), &_tmp0_), _tmp0_), &_tmp1_)); +#line 2123 "MediaEngine.c" + } else { +#line 312 "MediaEngine.vala" + view_click_track_clear_controllers (self); +#line 2127 "MediaEngine.c" + } + } +#line 315 "MediaEngine.vala" + break; +#line 2132 "MediaEngine.c" + } + case PLAY_STATE_PRE_RECORD: + { + { +#line 317 "MediaEngine.vala" + if (self->priv->project->click_during_record) { +#line 2139 "MediaEngine.c" + Fraction _tmp3_; + Fraction _tmp2_ = {0}; +#line 318 "MediaEngine.vala" + view_click_track_setup_clicks (self, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (self->priv->project)), (_tmp3_ = (model_tempo_information_get_time_signature (MODEL_TEMPO_INFORMATION (self->priv->project), &_tmp2_), _tmp2_), &_tmp3_)); +#line 2144 "MediaEngine.c" + } else { + Fraction _tmp5_; + Fraction _tmp4_ = {0}; +#line 322 "MediaEngine.vala" + view_click_track_setup_clicks (self, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (self->priv->project)), (_tmp5_ = (model_tempo_information_get_time_signature (MODEL_TEMPO_INFORMATION (self->priv->project), &_tmp4_), _tmp4_), &_tmp5_)); +#line 323 "MediaEngine.vala" + view_click_track_clear_controllers (self); +#line 2152 "MediaEngine.c" + } + } +#line 326 "MediaEngine.vala" + break; +#line 2157 "MediaEngine.c" + } + } +} + + +#line 330 "MediaEngine.vala" +static void view_click_track_setup_clicks (ViewClickTrack* self, gint bpm, Fraction* time_signature) { +#line 2165 "MediaEngine.c" + GValue double_value = {0}; + GValue bool_value = {0}; + GstClockTime time; + gint64 conversion; + guint64 current_time; +#line 330 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_CLICK_TRACK (self)); +#line 331 "MediaEngine.vala" + view_click_track_clear_controllers (self); +#line 332 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->volume), "volume", self->priv->project->click_volume / 10, NULL); +#line 2177 "MediaEngine.c" + memset (&double_value, 0, sizeof (GValue)); +#line 335 "MediaEngine.vala" + g_value_init (&double_value, g_type_from_name ("gdouble")); +#line 2181 "MediaEngine.c" + memset (&bool_value, 0, sizeof (GValue)); +#line 337 "MediaEngine.vala" + g_value_init (&bool_value, g_type_from_name ("gboolean")); +#line 339 "MediaEngine.vala" + time = (GstClockTime) 0; +#line 340 "MediaEngine.vala" + g_value_set_boolean (&bool_value, TRUE); +#line 341 "MediaEngine.vala" + gst_controller_set (self->priv->volume_controller, "volume", time, &bool_value); +#line 343 "MediaEngine.vala" + conversion = (gint64) ((GST_SECOND * 60) / bpm); +#line 344 "MediaEngine.vala" + current_time = (guint64) 0; +#line 2195 "MediaEngine.c" + { + gint i; +#line 346 "MediaEngine.vala" + i = 0; +#line 2200 "MediaEngine.c" + { + gboolean _tmp0_; +#line 346 "MediaEngine.vala" + _tmp0_ = TRUE; +#line 346 "MediaEngine.vala" + while (TRUE) { +#line 346 "MediaEngine.vala" + if (!_tmp0_) { +#line 346 "MediaEngine.vala" + i = i + 1; +#line 2211 "MediaEngine.c" + } +#line 346 "MediaEngine.vala" + _tmp0_ = FALSE; +#line 346 "MediaEngine.vala" + if (!(current_time < ((GST_SECOND * 60) * 10))) { +#line 346 "MediaEngine.vala" + break; +#line 2219 "MediaEngine.c" + } +#line 347 "MediaEngine.vala" + current_time = (guint64) (i * conversion); +#line 348 "MediaEngine.vala" + if (i > 0) { +#line 349 "MediaEngine.vala" + time = (GstClockTime) (current_time - (GST_SECOND / 10)); +#line 350 "MediaEngine.vala" + g_value_set_boolean (&bool_value, TRUE); +#line 351 "MediaEngine.vala" + gst_controller_set (self->priv->volume_controller, "mute", time, &bool_value); +#line 2231 "MediaEngine.c" + } +#line 353 "MediaEngine.vala" + time = (GstClockTime) current_time; +#line 354 "MediaEngine.vala" + if ((i % (*time_signature).numerator) == 0) { +#line 355 "MediaEngine.vala" + g_value_set_double (&double_value, 880.0); +#line 2239 "MediaEngine.c" + } else { +#line 357 "MediaEngine.vala" + g_value_set_double (&double_value, 440.0); +#line 2243 "MediaEngine.c" + } +#line 359 "MediaEngine.vala" + gst_controller_set (self->priv->click_controller, "freq", time, &double_value); +#line 360 "MediaEngine.vala" + g_value_set_boolean (&bool_value, FALSE); +#line 361 "MediaEngine.vala" + gst_controller_set (self->priv->volume_controller, "mute", time, &bool_value); +#line 363 "MediaEngine.vala" + time = (GstClockTime) (current_time + (GST_SECOND / 10)); +#line 364 "MediaEngine.vala" + g_value_set_boolean (&bool_value, TRUE); +#line 365 "MediaEngine.vala" + gst_controller_set (self->priv->volume_controller, "mute", time, &bool_value); +#line 2257 "MediaEngine.c" + } + } + } +} + + +static void view_click_track_class_init (ViewClickTrackClass * klass) { + view_click_track_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewClickTrackPrivate)); + G_OBJECT_CLASS (klass)->finalize = view_click_track_finalize; +} + + +static void view_click_track_instance_init (ViewClickTrack * self) { + self->priv = VIEW_CLICK_TRACK_GET_PRIVATE (self); +} + + +static void view_click_track_finalize (GObject* obj) { + ViewClickTrack * self; + self = VIEW_CLICK_TRACK (obj); + _g_object_unref0 (self->priv->click_controller); + _g_object_unref0 (self->priv->volume_controller); + _gst_object_unref0 (self->priv->audio_source); + _gst_object_unref0 (self->priv->audio_convert); + _gst_object_unref0 (self->priv->volume); + G_OBJECT_CLASS (view_click_track_parent_class)->finalize (obj); +} + + +GType view_click_track_get_type (void) { + static volatile gsize view_click_track_type_id__volatile = 0; + if (g_once_init_enter (&view_click_track_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewClickTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_click_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewClickTrack), 0, (GInstanceInitFunc) view_click_track_instance_init, NULL }; + GType view_click_track_type_id; + view_click_track_type_id = g_type_register_static (G_TYPE_OBJECT, "ViewClickTrack", &g_define_type_info, 0); + g_once_init_leave (&view_click_track_type_id__volatile, view_click_track_type_id); + } + return view_click_track_type_id__volatile; +} + + +#line 426 "MediaEngine.vala" +static void _view_media_audio_track_on_parameter_changed_model_audio_track_parameter_changed (ModelAudioTrack* _sender, ModelParameter parameter, double new_value, gpointer self) { +#line 2302 "MediaEngine.c" + view_media_audio_track_on_parameter_changed (self, parameter, new_value); +} + + +#line 438 "MediaEngine.vala" +static void _view_media_audio_track_on_level_changed_view_media_engine_level_changed (ViewMediaEngine* _sender, GstObject* source, double level_left, double level_right, gpointer self) { +#line 2309 "MediaEngine.c" + view_media_audio_track_on_level_changed (self, source, level_left, level_right); +} + + +#line 610 "track.vala" +static void _model_audio_track_on_level_changed_view_media_audio_track_level_changed (ViewMediaAudioTrack* _sender, double level_left, double level_right, gpointer self) { +#line 2316 "MediaEngine.c" + model_audio_track_on_level_changed (self, level_left, level_right); +} + + +#line 378 "MediaEngine.vala" +ViewMediaAudioTrack* view_media_audio_track_construct (GType object_type, ViewMediaEngine* media_engine, ModelAudioTrack* track, GError** error) { +#line 2323 "MediaEngine.c" + GError * _inner_error_; + ViewMediaAudioTrack * self; + GstElement* _tmp0_; + GstElement* _tmp1_; + GstElement* _tmp2_; + GstElement* _tmp3_; + GstElement* _tmp4_; + GstElement* _tmp5_; + GstElement* _tmp6_; + GstElement* _tmp7_; + GstElement* _tmp8_; + GstElement* _tmp9_; + GValue _tmp10_ = {0}; + GValue the_level; + GValue _tmp11_ = {0}; + GValue true_value; +#line 378 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine), NULL); +#line 378 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (track), NULL); +#line 2344 "MediaEngine.c" + _inner_error_ = NULL; +#line 379 "MediaEngine.vala" + self = (ViewMediaAudioTrack*) view_media_track_construct (object_type, media_engine, MODEL_TRACK (track), error); +#line 380 "MediaEngine.vala" + g_signal_connect_object (track, "parameter-changed", (GCallback) _view_media_audio_track_on_parameter_changed_model_audio_track_parameter_changed, self, 0); +#line 382 "MediaEngine.vala" + _tmp0_ = make_element ("audioconvert", &_inner_error_); +#line 2352 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 382 "MediaEngine.vala" + self->priv->audio_convert = (_tmp1_ = _tmp0_, _gst_object_unref0 (self->priv->audio_convert), _tmp1_); +#line 383 "MediaEngine.vala" + _tmp2_ = make_element ("audioresample", &_inner_error_); +#line 2362 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 383 "MediaEngine.vala" + self->priv->audio_resample = (_tmp3_ = _tmp2_, _gst_object_unref0 (self->priv->audio_resample), _tmp3_); +#line 384 "MediaEngine.vala" + _tmp4_ = make_element ("level", &_inner_error_); +#line 2372 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 384 "MediaEngine.vala" + self->priv->level = (_tmp5_ = _tmp4_, _gst_object_unref0 (self->priv->level), _tmp5_); +#line 386 "MediaEngine.vala" + _tmp6_ = make_element ("audiopanorama", &_inner_error_); +#line 2382 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 386 "MediaEngine.vala" + self->priv->pan = (_tmp7_ = _tmp6_, _gst_object_unref0 (self->priv->pan), _tmp7_); +#line 387 "MediaEngine.vala" + view_media_audio_track_on_parameter_changed (self, MODEL_PARAMETER_PAN, model_audio_track_get_pan (track)); +#line 388 "MediaEngine.vala" + _tmp8_ = make_element ("volume", &_inner_error_); +#line 2394 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 388 "MediaEngine.vala" + self->priv->volume = (_tmp9_ = _tmp8_, _gst_object_unref0 (self->priv->volume), _tmp9_); +#line 389 "MediaEngine.vala" + view_media_audio_track_on_parameter_changed (self, MODEL_PARAMETER_VOLUME, model_audio_track_get_volume (track)); +#line 391 "MediaEngine.vala" + the_level = (g_value_init (&_tmp10_, G_TYPE_UINT64), g_value_set_uint64 (&_tmp10_, (guint64) (GST_SECOND / 30)), _tmp10_); +#line 392 "MediaEngine.vala" + g_object_set_property (G_OBJECT (self->priv->level), "interval", &the_level); +#line 393 "MediaEngine.vala" + true_value = (g_value_init (&_tmp11_, G_TYPE_BOOLEAN), g_value_set_boolean (&_tmp11_, TRUE), _tmp11_); +#line 394 "MediaEngine.vala" + g_object_set_property (G_OBJECT (self->priv->level), "message", &true_value); +#line 396 "MediaEngine.vala" + if (!gst_bin_add (GST_BIN (media_engine->pipeline), _gst_object_ref0 (self->priv->audio_convert))) { +#line 397 "MediaEngine.vala" + g_error ("MediaEngine.vala:397: could not add audio_convert"); +#line 2416 "MediaEngine.c" + } +#line 400 "MediaEngine.vala" + if (!gst_bin_add (GST_BIN (media_engine->pipeline), _gst_object_ref0 (self->priv->audio_resample))) { +#line 401 "MediaEngine.vala" + g_error ("MediaEngine.vala:401: could not add audio_resample"); +#line 2422 "MediaEngine.c" + } +#line 404 "MediaEngine.vala" + if (!gst_bin_add (GST_BIN (media_engine->pipeline), _gst_object_ref0 (self->priv->level))) { +#line 405 "MediaEngine.vala" + g_error ("MediaEngine.vala:405: could not add level"); +#line 2428 "MediaEngine.c" + } +#line 408 "MediaEngine.vala" + if (!gst_bin_add (GST_BIN (media_engine->pipeline), _gst_object_ref0 (self->priv->pan))) { +#line 409 "MediaEngine.vala" + g_error ("MediaEngine.vala:409: could not add pan"); +#line 2434 "MediaEngine.c" + } +#line 412 "MediaEngine.vala" + if (!gst_bin_add (GST_BIN (media_engine->pipeline), _gst_object_ref0 (self->priv->volume))) { +#line 413 "MediaEngine.vala" + g_error ("MediaEngine.vala:413: could not add volume"); +#line 2440 "MediaEngine.c" + } +#line 415 "MediaEngine.vala" + g_signal_connect_object (media_engine, "level-changed", (GCallback) _view_media_audio_track_on_level_changed_view_media_engine_level_changed, self, 0); +#line 416 "MediaEngine.vala" + g_signal_connect_object (self, "level-changed", (GCallback) _model_audio_track_on_level_changed_view_media_audio_track_level_changed, track, 0); +#line 2446 "MediaEngine.c" + G_IS_VALUE (&the_level) ? (g_value_unset (&the_level), NULL) : NULL; + G_IS_VALUE (&true_value) ? (g_value_unset (&true_value), NULL) : NULL; + return self; +} + + +#line 378 "MediaEngine.vala" +ViewMediaAudioTrack* view_media_audio_track_new (ViewMediaEngine* media_engine, ModelAudioTrack* track, GError** error) { +#line 378 "MediaEngine.vala" + return view_media_audio_track_construct (VIEW_TYPE_MEDIA_AUDIO_TRACK, media_engine, track, error); +#line 2457 "MediaEngine.c" +} + + +#line 426 "MediaEngine.vala" +static void view_media_audio_track_on_parameter_changed (ViewMediaAudioTrack* self, ModelParameter parameter, double new_value) { +#line 426 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_AUDIO_TRACK (self)); +#line 427 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_parameter_changed"); +#line 428 "MediaEngine.vala" + switch (parameter) { +#line 2469 "MediaEngine.c" + case MODEL_PARAMETER_PAN: + { + GValue _tmp1_; + GValue _tmp0_ = {0}; +#line 430 "MediaEngine.vala" + g_object_set_property (G_OBJECT (self->priv->pan), "panorama", (_tmp1_ = (g_value_init (&_tmp0_, G_TYPE_DOUBLE), g_value_set_double (&_tmp0_, new_value), _tmp0_), &_tmp1_)); +#line 431 "MediaEngine.vala" + break; +#line 2478 "MediaEngine.c" + } + case MODEL_PARAMETER_VOLUME: + { + GValue _tmp3_; + GValue _tmp2_ = {0}; +#line 433 "MediaEngine.vala" + g_object_set_property (G_OBJECT (self->priv->volume), "volume", (_tmp3_ = (g_value_init (&_tmp2_, G_TYPE_DOUBLE), g_value_set_double (&_tmp2_, new_value), _tmp2_), &_tmp3_)); +#line 434 "MediaEngine.vala" + break; +#line 2488 "MediaEngine.c" + } + } +} + + +#line 438 "MediaEngine.vala" +static void view_media_audio_track_on_level_changed (ViewMediaAudioTrack* self, GstObject* source, double level_left, double level_right) { +#line 438 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_AUDIO_TRACK (self)); +#line 438 "MediaEngine.vala" + g_return_if_fail (GST_IS_OBJECT (source)); +#line 439 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_level_changed"); +#line 440 "MediaEngine.vala" + if (source == GST_OBJECT (self->priv->level)) { +#line 441 "MediaEngine.vala" + g_signal_emit_by_name (self, "level-changed", level_left, level_right); +#line 2506 "MediaEngine.c" + } +} + + +#line 445 "MediaEngine.vala" +static GstElement* view_media_audio_track_real_empty_element (ViewMediaTrack* base, GError** error) { +#line 2513 "MediaEngine.c" + ViewMediaAudioTrack * self; + GstElement* result = NULL; + GError * _inner_error_; + GstElement* _tmp0_; + self = VIEW_MEDIA_AUDIO_TRACK (base); + _inner_error_ = NULL; +#line 446 "MediaEngine.vala" + _tmp0_ = view_media_engine_get_audio_silence (VIEW_MEDIA_TRACK (self)->media_engine, &_inner_error_); +#line 2522 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return NULL; + } + result = _tmp0_; +#line 446 "MediaEngine.vala" + return result; +#line 2530 "MediaEngine.c" +} + + +#line 449 "MediaEngine.vala" +static void view_media_audio_track_real_link_new_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element) { +#line 2536 "MediaEngine.c" + ViewMediaAudioTrack * self; + GstBin* bin; + GstPad* volume_pad; + GstPad* _tmp0_; + self = VIEW_MEDIA_AUDIO_TRACK (base); +#line 449 "MediaEngine.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 449 "MediaEngine.vala" + g_return_if_fail (GST_IS_ELEMENT (track_element)); +#line 450 "MediaEngine.vala" + bin = _gst_object_ref0 (GST_BIN (gst_pad_get_parent_element (pad))); +#line 451 "MediaEngine.vala" + if (!gst_element_link_many (GST_ELEMENT (bin), self->priv->audio_convert, self->priv->audio_resample, self->priv->level, self->priv->pan, self->priv->volume, NULL)) { +#line 452 "MediaEngine.vala" + fprintf (stderr, "could not link_new_pad for audio track"); +#line 2552 "MediaEngine.c" + } +#line 455 "MediaEngine.vala" + volume_pad = gst_element_get_pad (self->priv->volume, "src"); +#line 456 "MediaEngine.vala" + self->priv->adder_pad = (_tmp0_ = _gst_object_ref0 (GST_ELEMENT_GET_CLASS (track_element)->request_new_pad (track_element, gst_element_get_compatible_pad_template (track_element, gst_pad_get_pad_template (volume_pad)), NULL)), _gst_object_unref0 (self->priv->adder_pad), _tmp0_); +#line 459 "MediaEngine.vala" + if (gst_pad_link (volume_pad, self->priv->adder_pad) != GST_PAD_LINK_OK) { +#line 460 "MediaEngine.vala" + g_error ("MediaEngine.vala:460: could not link to adder %s->%s\n", gst_object_get_name (GST_OBJECT (self->priv->volume)), gst_object_get_name (GST_OBJECT (track_element))); +#line 2562 "MediaEngine.c" + } + _gst_object_unref0 (bin); + _gst_object_unref0 (volume_pad); +} + + +#line 464 "MediaEngine.vala" +static void view_media_audio_track_real_unlink_pad (ViewMediaTrack* base, GstPad* pad, GstElement* track_element) { +#line 2571 "MediaEngine.c" + ViewMediaAudioTrack * self; + GstBin* bin; + self = VIEW_MEDIA_AUDIO_TRACK (base); +#line 464 "MediaEngine.vala" + g_return_if_fail (GST_IS_PAD (pad)); +#line 464 "MediaEngine.vala" + g_return_if_fail (GST_IS_ELEMENT (track_element)); +#line 465 "MediaEngine.vala" + bin = _gst_object_ref0 (GST_BIN (gst_pad_get_parent_element (pad))); +#line 466 "MediaEngine.vala" + gst_element_unlink_many (GST_ELEMENT (bin), self->priv->audio_convert, self->priv->audio_resample, self->priv->level, self->priv->pan, self->priv->volume, track_element, NULL); +#line 467 "MediaEngine.vala" + gst_element_release_request_pad (track_element, self->priv->adder_pad); +#line 2585 "MediaEngine.c" + _gst_object_unref0 (bin); +} + + +#line 470 "MediaEngine.vala" +static GstElement* view_media_audio_track_real_get_element (ViewMediaTrack* base) { +#line 2592 "MediaEngine.c" + ViewMediaAudioTrack * self; + GstElement* result = NULL; + self = VIEW_MEDIA_AUDIO_TRACK (base); + result = _gst_object_ref0 (VIEW_MEDIA_TRACK (self)->media_engine->adder); +#line 471 "MediaEngine.vala" + return result; +#line 2599 "MediaEngine.c" +} + + +static void view_media_audio_track_class_init (ViewMediaAudioTrackClass * klass) { + view_media_audio_track_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewMediaAudioTrackPrivate)); + VIEW_MEDIA_TRACK_CLASS (klass)->empty_element = view_media_audio_track_real_empty_element; + VIEW_MEDIA_TRACK_CLASS (klass)->link_new_pad = view_media_audio_track_real_link_new_pad; + VIEW_MEDIA_TRACK_CLASS (klass)->unlink_pad = view_media_audio_track_real_unlink_pad; + VIEW_MEDIA_TRACK_CLASS (klass)->get_element = view_media_audio_track_real_get_element; + G_OBJECT_CLASS (klass)->finalize = view_media_audio_track_finalize; + g_signal_new ("level_changed", VIEW_TYPE_MEDIA_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); +} + + +static void view_media_audio_track_instance_init (ViewMediaAudioTrack * self) { + self->priv = VIEW_MEDIA_AUDIO_TRACK_GET_PRIVATE (self); +} + + +static void view_media_audio_track_finalize (GObject* obj) { + ViewMediaAudioTrack * self; + self = VIEW_MEDIA_AUDIO_TRACK (obj); + { + guint _tmp5_; +#line 420 "MediaEngine.vala" + g_signal_parse_name ("level-changed", VIEW_TYPE_MEDIA_ENGINE, &_tmp5_, NULL, FALSE); +#line 420 "MediaEngine.vala" + g_signal_handlers_disconnect_matched (VIEW_MEDIA_TRACK (self)->media_engine, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp5_, 0, NULL, (GCallback) _view_media_audio_track_on_level_changed_view_media_engine_level_changed, self); +#line 421 "MediaEngine.vala" + gst_bin_remove_many (GST_BIN (VIEW_MEDIA_TRACK (self)->media_engine->pipeline), self->priv->audio_convert, self->priv->audio_resample, self->priv->pan, self->priv->volume, self->priv->level, NULL); +#line 2631 "MediaEngine.c" + } + _gst_object_unref0 (self->priv->audio_convert); + _gst_object_unref0 (self->priv->audio_resample); + _gst_object_unref0 (self->priv->level); + _gst_object_unref0 (self->priv->pan); + _gst_object_unref0 (self->priv->volume); + _gst_object_unref0 (self->priv->adder_pad); + G_OBJECT_CLASS (view_media_audio_track_parent_class)->finalize (obj); +} + + +GType view_media_audio_track_get_type (void) { + static volatile gsize view_media_audio_track_type_id__volatile = 0; + if (g_once_init_enter (&view_media_audio_track_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaAudioTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_audio_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaAudioTrack), 0, (GInstanceInitFunc) view_media_audio_track_instance_init, NULL }; + GType view_media_audio_track_type_id; + view_media_audio_track_type_id = g_type_register_static (VIEW_TYPE_MEDIA_TRACK, "ViewMediaAudioTrack", &g_define_type_info, 0); + g_once_init_leave (&view_media_audio_track_type_id__volatile, view_media_audio_track_type_id); + } + return view_media_audio_track_type_id__volatile; +} + + +GType view_media_connector_media_types_get_type (void) { + static volatile gsize view_media_connector_media_types_type_id__volatile = 0; + if (g_once_init_enter (&view_media_connector_media_types_type_id__volatile)) { + static const GEnumValue values[] = {{VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio, "VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio", "audio"}, {VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video, "VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video", "video"}, {0, NULL, NULL}}; + GType view_media_connector_media_types_type_id; + view_media_connector_media_types_type_id = g_enum_register_static ("ViewMediaConnectorMediaTypes", values); + g_once_init_leave (&view_media_connector_media_types_type_id__volatile, view_media_connector_media_types_type_id); + } + return view_media_connector_media_types_type_id__volatile; +} + + +#line 483 "MediaEngine.vala" +ViewMediaConnector* view_media_connector_construct (GType object_type, ViewMediaConnectorMediaTypes media_types) { +#line 2669 "MediaEngine.c" + ViewMediaConnector * self; +#line 483 "MediaEngine.vala" + self = (ViewMediaConnector*) g_object_new (object_type, NULL); +#line 484 "MediaEngine.vala" + self->priv->media_types = media_types; +#line 2675 "MediaEngine.c" + return self; +} + + +#line 487 "MediaEngine.vala" +gboolean view_media_connector_has_audio (ViewMediaConnector* self) { +#line 2682 "MediaEngine.c" + gboolean result = FALSE; +#line 487 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_CONNECTOR (self), FALSE); +#line 2686 "MediaEngine.c" + result = (self->priv->media_types & VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio) == VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio; +#line 488 "MediaEngine.vala" + return result; +#line 2690 "MediaEngine.c" +} + + +#line 491 "MediaEngine.vala" +gboolean view_media_connector_has_video (ViewMediaConnector* self) { +#line 2696 "MediaEngine.c" + gboolean result = FALSE; +#line 491 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_CONNECTOR (self), FALSE); +#line 2700 "MediaEngine.c" + result = (self->priv->media_types & VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video) == VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video; +#line 492 "MediaEngine.vala" + return result; +#line 2704 "MediaEngine.c" +} + + +#line 495 "MediaEngine.vala" +static void view_media_connector_real_connect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 2710 "MediaEngine.c" + g_return_if_fail (VIEW_IS_MEDIA_CONNECTOR (self)); + g_critical ("Type `%s' does not implement abstract method `view_media_connector_connect'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 495 "MediaEngine.vala" +void view_media_connector_connect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 495 "MediaEngine.vala" + VIEW_MEDIA_CONNECTOR_GET_CLASS (self)->connect (self, media_engine, pipeline, elements, elements_length1); +#line 2721 "MediaEngine.c" +} + + +#line 497 "MediaEngine.vala" +static void view_media_connector_real_do_disconnect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 2727 "MediaEngine.c" + g_return_if_fail (VIEW_IS_MEDIA_CONNECTOR (self)); + g_critical ("Type `%s' does not implement abstract method `view_media_connector_do_disconnect'", g_type_name (G_TYPE_FROM_INSTANCE (self))); + return; +} + + +#line 497 "MediaEngine.vala" +void view_media_connector_do_disconnect (ViewMediaConnector* self, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 497 "MediaEngine.vala" + VIEW_MEDIA_CONNECTOR_GET_CLASS (self)->do_disconnect (self, media_engine, pipeline, elements, elements_length1); +#line 2738 "MediaEngine.c" +} + + +static void view_media_connector_class_init (ViewMediaConnectorClass * klass) { + view_media_connector_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewMediaConnectorPrivate)); + VIEW_MEDIA_CONNECTOR_CLASS (klass)->connect = view_media_connector_real_connect; + VIEW_MEDIA_CONNECTOR_CLASS (klass)->do_disconnect = view_media_connector_real_do_disconnect; + G_OBJECT_CLASS (klass)->finalize = view_media_connector_finalize; +} + + +static void view_media_connector_instance_init (ViewMediaConnector * self) { + self->priv = VIEW_MEDIA_CONNECTOR_GET_PRIVATE (self); + self->AudioIndex = 0; + self->VideoIndex = 1; +} + + +static void view_media_connector_finalize (GObject* obj) { + ViewMediaConnector * self; + self = VIEW_MEDIA_CONNECTOR (obj); + G_OBJECT_CLASS (view_media_connector_parent_class)->finalize (obj); +} + + +GType view_media_connector_get_type (void) { + static volatile gsize view_media_connector_type_id__volatile = 0; + if (g_once_init_enter (&view_media_connector_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaConnectorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_connector_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaConnector), 0, (GInstanceInitFunc) view_media_connector_instance_init, NULL }; + GType view_media_connector_type_id; + view_media_connector_type_id = g_type_register_static (G_TYPE_OBJECT, "ViewMediaConnector", &g_define_type_info, G_TYPE_FLAG_ABSTRACT); + g_once_init_leave (&view_media_connector_type_id__volatile, view_media_connector_type_id); + } + return view_media_connector_type_id__volatile; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +#line 505 "MediaEngine.vala" +ViewVideoOutput* view_video_output_construct (GType object_type, GtkWidget* output_widget, GError** error) { +#line 2784 "MediaEngine.c" + GError * _inner_error_; + ViewVideoOutput * self; + GstElement* _tmp0_; + GstElement* _tmp1_; + GtkWidget* _tmp2_; +#line 505 "MediaEngine.vala" + g_return_val_if_fail (GTK_IS_WIDGET (output_widget), NULL); +#line 2792 "MediaEngine.c" + _inner_error_ = NULL; +#line 506 "MediaEngine.vala" + self = (ViewVideoOutput*) view_media_connector_construct (object_type, VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Video); +#line 507 "MediaEngine.vala" + _tmp0_ = make_element ("xvimagesink", &_inner_error_); +#line 2798 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 507 "MediaEngine.vala" + self->priv->sink = (_tmp1_ = _tmp0_, _gst_object_unref0 (self->priv->sink), _tmp1_); +#line 508 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->sink), "force-aspect-ratio", TRUE, NULL); +#line 509 "MediaEngine.vala" + self->priv->output_widget = (_tmp2_ = _g_object_ref0 (output_widget), _g_object_unref0 (self->priv->output_widget), _tmp2_); +#line 2810 "MediaEngine.c" + return self; +} + + +#line 505 "MediaEngine.vala" +ViewVideoOutput* view_video_output_new (GtkWidget* output_widget, GError** error) { +#line 505 "MediaEngine.vala" + return view_video_output_construct (VIEW_TYPE_VIDEO_OUTPUT, output_widget, error); +#line 2819 "MediaEngine.c" +} + + +#line 512 "MediaEngine.vala" +static void view_video_output_real_connect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 2825 "MediaEngine.c" + ViewVideoOutput * self; + XID xid; + GstXOverlay* overlay; + self = VIEW_VIDEO_OUTPUT (base); +#line 512 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine)); +#line 512 "MediaEngine.vala" + g_return_if_fail (GST_IS_PIPELINE (pipeline)); +#line 514 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_GRAPH, LOGGING_LEVEL_INFO, "connecting"); +#line 516 "MediaEngine.vala" + xid = gdk_x11_drawable_get_xid (GDK_DRAWABLE (self->priv->output_widget->window)); +#line 517 "MediaEngine.vala" + overlay = _gst_object_ref0 (GST_X_OVERLAY (self->priv->sink)); +#line 518 "MediaEngine.vala" + gst_x_overlay_set_xwindow_id (overlay, (gulong) xid); +#line 522 "MediaEngine.vala" + GTK_WIDGET_UNSET_FLAGS (self->priv->output_widget, GTK_DOUBLE_BUFFERED); +#line 524 "MediaEngine.vala" + if (!gst_bin_add (GST_BIN (pipeline), _gst_object_ref0 (self->priv->sink))) { +#line 525 "MediaEngine.vala" + g_error ("MediaEngine.vala:525: could not add sink"); +#line 2848 "MediaEngine.c" + } +#line 527 "MediaEngine.vala" + if (!gst_element_link (elements[VIEW_MEDIA_CONNECTOR (self)->VideoIndex], self->priv->sink)) { +#line 528 "MediaEngine.vala" + g_error ("MediaEngine.vala:528: can't link converter with video sink!"); +#line 2854 "MediaEngine.c" + } + _gst_object_unref0 (overlay); +} + + +#line 532 "MediaEngine.vala" +static void view_video_output_real_do_disconnect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 2862 "MediaEngine.c" + ViewVideoOutput * self; + self = VIEW_VIDEO_OUTPUT (base); +#line 532 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine)); +#line 532 "MediaEngine.vala" + g_return_if_fail (GST_IS_PIPELINE (pipeline)); +#line 534 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_GRAPH, LOGGING_LEVEL_INFO, "disconnecting"); +#line 535 "MediaEngine.vala" + gst_element_unlink (elements[VIEW_MEDIA_CONNECTOR (self)->VideoIndex], self->priv->sink); +#line 536 "MediaEngine.vala" + gst_bin_remove (GST_BIN (pipeline), self->priv->sink); +#line 2875 "MediaEngine.c" +} + + +static void view_video_output_class_init (ViewVideoOutputClass * klass) { + view_video_output_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewVideoOutputPrivate)); + VIEW_MEDIA_CONNECTOR_CLASS (klass)->connect = view_video_output_real_connect; + VIEW_MEDIA_CONNECTOR_CLASS (klass)->do_disconnect = view_video_output_real_do_disconnect; + G_OBJECT_CLASS (klass)->finalize = view_video_output_finalize; +} + + +static void view_video_output_instance_init (ViewVideoOutput * self) { + self->priv = VIEW_VIDEO_OUTPUT_GET_PRIVATE (self); +} + + +static void view_video_output_finalize (GObject* obj) { + ViewVideoOutput * self; + self = VIEW_VIDEO_OUTPUT (obj); + _gst_object_unref0 (self->priv->sink); + _g_object_unref0 (self->priv->output_widget); + G_OBJECT_CLASS (view_video_output_parent_class)->finalize (obj); +} + + +GType view_video_output_get_type (void) { + static volatile gsize view_video_output_type_id__volatile = 0; + if (g_once_init_enter (&view_video_output_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewVideoOutputClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_video_output_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewVideoOutput), 0, (GInstanceInitFunc) view_video_output_instance_init, NULL }; + GType view_video_output_type_id; + view_video_output_type_id = g_type_register_static (VIEW_TYPE_MEDIA_CONNECTOR, "ViewVideoOutput", &g_define_type_info, 0); + g_once_init_leave (&view_video_output_type_id__volatile, view_video_output_type_id); + } + return view_video_output_type_id__volatile; +} + + +#line 544 "MediaEngine.vala" +ViewAudioOutput* view_audio_output_construct (GType object_type, GstCaps* caps, GError** error) { +#line 2916 "MediaEngine.c" + GError * _inner_error_; + ViewAudioOutput * self; + GstElement* _tmp0_; + GstElement* _tmp1_; + GstElement* _tmp2_; + GstElement* _tmp3_; +#line 544 "MediaEngine.vala" + g_return_val_if_fail (GST_IS_CAPS (caps), NULL); +#line 2925 "MediaEngine.c" + _inner_error_ = NULL; +#line 545 "MediaEngine.vala" + self = (ViewAudioOutput*) view_media_connector_construct (object_type, VIEW_MEDIA_CONNECTOR_MEDIA_TYPES_Audio); +#line 546 "MediaEngine.vala" + _tmp0_ = make_element ("autoaudiosink", &_inner_error_); +#line 2931 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 546 "MediaEngine.vala" + self->priv->audio_sink = (_tmp1_ = _tmp0_, _gst_object_unref0 (self->priv->audio_sink), _tmp1_); +#line 547 "MediaEngine.vala" + _tmp2_ = make_element ("capsfilter", &_inner_error_); +#line 2941 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 547 "MediaEngine.vala" + self->priv->capsfilter = (_tmp3_ = _tmp2_, _gst_object_unref0 (self->priv->capsfilter), _tmp3_); +#line 548 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->capsfilter), "caps", caps, NULL); +#line 2951 "MediaEngine.c" + return self; +} + + +#line 544 "MediaEngine.vala" +ViewAudioOutput* view_audio_output_new (GstCaps* caps, GError** error) { +#line 544 "MediaEngine.vala" + return view_audio_output_construct (VIEW_TYPE_AUDIO_OUTPUT, caps, error); +#line 2960 "MediaEngine.c" +} + + +#line 551 "MediaEngine.vala" +static void view_audio_output_real_connect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 2966 "MediaEngine.c" + ViewAudioOutput * self; + self = VIEW_AUDIO_OUTPUT (base); +#line 551 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine)); +#line 551 "MediaEngine.vala" + g_return_if_fail (GST_IS_PIPELINE (pipeline)); +#line 553 "MediaEngine.vala" + gst_bin_add_many (GST_BIN (pipeline), _gst_object_ref0 (self->priv->capsfilter), _gst_object_ref0 (self->priv->audio_sink), NULL); +#line 555 "MediaEngine.vala" + if (!gst_element_link_many (elements[VIEW_MEDIA_CONNECTOR (self)->AudioIndex], self->priv->capsfilter, self->priv->audio_sink, NULL)) { +#line 556 "MediaEngine.vala" + g_warning ("MediaEngine.vala:556: could not link audio_sink"); +#line 2979 "MediaEngine.c" + } +} + + +#line 560 "MediaEngine.vala" +static void view_audio_output_real_do_disconnect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 2986 "MediaEngine.c" + ViewAudioOutput * self; + self = VIEW_AUDIO_OUTPUT (base); +#line 560 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine)); +#line 560 "MediaEngine.vala" + g_return_if_fail (GST_IS_PIPELINE (pipeline)); +#line 562 "MediaEngine.vala" + gst_element_unlink_many (elements[VIEW_MEDIA_CONNECTOR (self)->AudioIndex], self->priv->capsfilter, self->priv->audio_sink, NULL); +#line 563 "MediaEngine.vala" + gst_bin_remove_many (GST_BIN (pipeline), self->priv->capsfilter, self->priv->audio_sink, NULL); +#line 2997 "MediaEngine.c" +} + + +static void view_audio_output_class_init (ViewAudioOutputClass * klass) { + view_audio_output_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewAudioOutputPrivate)); + VIEW_MEDIA_CONNECTOR_CLASS (klass)->connect = view_audio_output_real_connect; + VIEW_MEDIA_CONNECTOR_CLASS (klass)->do_disconnect = view_audio_output_real_do_disconnect; + G_OBJECT_CLASS (klass)->finalize = view_audio_output_finalize; +} + + +static void view_audio_output_instance_init (ViewAudioOutput * self) { + self->priv = VIEW_AUDIO_OUTPUT_GET_PRIVATE (self); +} + + +static void view_audio_output_finalize (GObject* obj) { + ViewAudioOutput * self; + self = VIEW_AUDIO_OUTPUT (obj); + _gst_object_unref0 (self->priv->audio_sink); + _gst_object_unref0 (self->priv->capsfilter); + G_OBJECT_CLASS (view_audio_output_parent_class)->finalize (obj); +} + + +GType view_audio_output_get_type (void) { + static volatile gsize view_audio_output_type_id__volatile = 0; + if (g_once_init_enter (&view_audio_output_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewAudioOutputClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_audio_output_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewAudioOutput), 0, (GInstanceInitFunc) view_audio_output_instance_init, NULL }; + GType view_audio_output_type_id; + view_audio_output_type_id = g_type_register_static (VIEW_TYPE_MEDIA_CONNECTOR, "ViewAudioOutput", &g_define_type_info, 0); + g_once_init_leave (&view_audio_output_type_id__volatile, view_audio_output_type_id); + } + return view_audio_output_type_id__volatile; +} + + +#line 574 "MediaEngine.vala" +ViewOggVorbisExport* view_ogg_vorbis_export_construct (GType object_type, ViewMediaConnectorMediaTypes media_types, const char* filename, GstCaps* caps, GError** error) { +#line 3038 "MediaEngine.c" + GError * _inner_error_; + ViewOggVorbisExport * self; + GstElement* _tmp0_; + GstElement* _tmp1_; + GstElement* _tmp2_; + GstElement* _tmp3_; +#line 574 "MediaEngine.vala" + g_return_val_if_fail (filename != NULL, NULL); +#line 574 "MediaEngine.vala" + g_return_val_if_fail (GST_IS_CAPS (caps), NULL); +#line 3049 "MediaEngine.c" + _inner_error_ = NULL; +#line 576 "MediaEngine.vala" + self = (ViewOggVorbisExport*) view_media_connector_construct (object_type, media_types); +#line 578 "MediaEngine.vala" + _tmp0_ = make_element ("filesink", &_inner_error_); +#line 3055 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 578 "MediaEngine.vala" + self->priv->file_sink = (_tmp1_ = _tmp0_, _gst_object_unref0 (self->priv->file_sink), _tmp1_); +#line 579 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->file_sink), "location", filename, NULL); +#line 580 "MediaEngine.vala" + _tmp2_ = make_element ("oggmux", &_inner_error_); +#line 3067 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 580 "MediaEngine.vala" + self->priv->mux = (_tmp3_ = _tmp2_, _gst_object_unref0 (self->priv->mux), _tmp3_); +#line 582 "MediaEngine.vala" + if (view_media_connector_has_audio (VIEW_MEDIA_CONNECTOR (self))) { +#line 3077 "MediaEngine.c" + GstElement* _tmp4_; + GstElement* _tmp5_; + GstElement* _tmp6_; + GstElement* _tmp7_; +#line 583 "MediaEngine.vala" + _tmp4_ = make_element ("capsfilter", &_inner_error_); +#line 3084 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 583 "MediaEngine.vala" + self->priv->capsfilter = (_tmp5_ = _tmp4_, _gst_object_unref0 (self->priv->capsfilter), _tmp5_); +#line 584 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->capsfilter), "caps", caps, NULL); +#line 585 "MediaEngine.vala" + _tmp6_ = make_element ("vorbisenc", &_inner_error_); +#line 3096 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 585 "MediaEngine.vala" + self->priv->export_sink = (_tmp7_ = _tmp6_, _gst_object_unref0 (self->priv->export_sink), _tmp7_); +#line 3104 "MediaEngine.c" + } +#line 588 "MediaEngine.vala" + if (view_media_connector_has_video (VIEW_MEDIA_CONNECTOR (self))) { +#line 3108 "MediaEngine.c" + GstElement* _tmp8_; + GstElement* _tmp9_; +#line 589 "MediaEngine.vala" + _tmp8_ = make_element ("theoraenc", &_inner_error_); +#line 3113 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 589 "MediaEngine.vala" + self->priv->video_export_sink = (_tmp9_ = _tmp8_, _gst_object_unref0 (self->priv->video_export_sink), _tmp9_); +#line 3121 "MediaEngine.c" + } + return self; +} + + +#line 574 "MediaEngine.vala" +ViewOggVorbisExport* view_ogg_vorbis_export_new (ViewMediaConnectorMediaTypes media_types, const char* filename, GstCaps* caps, GError** error) { +#line 574 "MediaEngine.vala" + return view_ogg_vorbis_export_construct (VIEW_TYPE_OGG_VORBIS_EXPORT, media_types, filename, caps, error); +#line 3131 "MediaEngine.c" +} + + +#line 593 "MediaEngine.vala" +char* view_ogg_vorbis_export_get_filename (ViewOggVorbisExport* self) { +#line 3137 "MediaEngine.c" + char* result = NULL; + char* filename; +#line 593 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_OGG_VORBIS_EXPORT (self), NULL); +#line 3142 "MediaEngine.c" + filename = NULL; +#line 595 "MediaEngine.vala" + g_object_get (G_OBJECT (self->priv->file_sink), "location", &filename, NULL); +#line 3146 "MediaEngine.c" + result = filename; +#line 596 "MediaEngine.vala" + return result; +#line 3150 "MediaEngine.c" +} + + +#line 599 "MediaEngine.vala" +static void view_ogg_vorbis_export_real_connect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 3156 "MediaEngine.c" + ViewOggVorbisExport * self; + self = VIEW_OGG_VORBIS_EXPORT (base); +#line 599 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine)); +#line 599 "MediaEngine.vala" + g_return_if_fail (GST_IS_PIPELINE (pipeline)); +#line 601 "MediaEngine.vala" + gst_bin_add_many (GST_BIN (pipeline), _gst_object_ref0 (self->priv->mux), _gst_object_ref0 (self->priv->file_sink), NULL); +#line 602 "MediaEngine.vala" + gst_element_link (self->priv->mux, self->priv->file_sink); +#line 604 "MediaEngine.vala" + if (view_media_connector_has_audio (VIEW_MEDIA_CONNECTOR (self))) { +#line 605 "MediaEngine.vala" + gst_bin_add_many (GST_BIN (pipeline), _gst_object_ref0 (self->priv->capsfilter), _gst_object_ref0 (self->priv->export_sink), NULL); +#line 606 "MediaEngine.vala" + gst_element_link_many (elements[VIEW_MEDIA_CONNECTOR (self)->AudioIndex], self->priv->capsfilter, self->priv->export_sink, self->priv->mux, NULL); +#line 3173 "MediaEngine.c" + } +#line 609 "MediaEngine.vala" + if (view_media_connector_has_video (VIEW_MEDIA_CONNECTOR (self))) { +#line 610 "MediaEngine.vala" + gst_bin_add (GST_BIN (pipeline), _gst_object_ref0 (self->priv->video_export_sink)); +#line 612 "MediaEngine.vala" + if (!gst_element_link (elements[VIEW_MEDIA_CONNECTOR (self)->VideoIndex], self->priv->video_export_sink)) { +#line 613 "MediaEngine.vala" + g_error ("MediaEngine.vala:613: could not link converter to video_export_sink"); +#line 3183 "MediaEngine.c" + } +#line 616 "MediaEngine.vala" + if (!gst_element_link (self->priv->video_export_sink, self->priv->mux)) { +#line 617 "MediaEngine.vala" + g_error ("MediaEngine.vala:617: could not link video_export with mux"); +#line 3189 "MediaEngine.c" + } + } +} + + +#line 622 "MediaEngine.vala" +static void view_ogg_vorbis_export_real_do_disconnect (ViewMediaConnector* base, ViewMediaEngine* media_engine, GstPipeline* pipeline, GstElement** elements, int elements_length1) { +#line 3197 "MediaEngine.c" + ViewOggVorbisExport * self; + self = VIEW_OGG_VORBIS_EXPORT (base); +#line 622 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (media_engine)); +#line 622 "MediaEngine.vala" + g_return_if_fail (GST_IS_PIPELINE (pipeline)); +#line 624 "MediaEngine.vala" + if (view_media_connector_has_audio (VIEW_MEDIA_CONNECTOR (self))) { +#line 625 "MediaEngine.vala" + gst_element_unlink_many (elements[VIEW_MEDIA_CONNECTOR (self)->AudioIndex], self->priv->capsfilter, self->priv->export_sink, self->priv->mux, NULL); +#line 626 "MediaEngine.vala" + gst_bin_remove_many (GST_BIN (pipeline), self->priv->capsfilter, self->priv->export_sink, NULL); +#line 3210 "MediaEngine.c" + } +#line 629 "MediaEngine.vala" + if (view_media_connector_has_video (VIEW_MEDIA_CONNECTOR (self))) { +#line 630 "MediaEngine.vala" + gst_element_unlink_many (elements[VIEW_MEDIA_CONNECTOR (self)->VideoIndex], self->priv->video_export_sink, self->priv->mux, NULL); +#line 631 "MediaEngine.vala" + gst_bin_remove (GST_BIN (pipeline), self->priv->video_export_sink); +#line 3218 "MediaEngine.c" + } +#line 634 "MediaEngine.vala" + gst_element_unlink (self->priv->mux, self->priv->file_sink); +#line 635 "MediaEngine.vala" + gst_bin_remove_many (GST_BIN (pipeline), self->priv->mux, self->priv->file_sink, NULL); +#line 3224 "MediaEngine.c" +} + + +static void view_ogg_vorbis_export_class_init (ViewOggVorbisExportClass * klass) { + view_ogg_vorbis_export_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewOggVorbisExportPrivate)); + VIEW_MEDIA_CONNECTOR_CLASS (klass)->connect = view_ogg_vorbis_export_real_connect; + VIEW_MEDIA_CONNECTOR_CLASS (klass)->do_disconnect = view_ogg_vorbis_export_real_do_disconnect; + G_OBJECT_CLASS (klass)->finalize = view_ogg_vorbis_export_finalize; +} + + +static void view_ogg_vorbis_export_instance_init (ViewOggVorbisExport * self) { + self->priv = VIEW_OGG_VORBIS_EXPORT_GET_PRIVATE (self); +} + + +static void view_ogg_vorbis_export_finalize (GObject* obj) { + ViewOggVorbisExport * self; + self = VIEW_OGG_VORBIS_EXPORT (obj); + _gst_object_unref0 (self->priv->capsfilter); + _gst_object_unref0 (self->priv->export_sink); + _gst_object_unref0 (self->priv->mux); + _gst_object_unref0 (self->priv->file_sink); + _gst_object_unref0 (self->priv->video_export_sink); + G_OBJECT_CLASS (view_ogg_vorbis_export_parent_class)->finalize (obj); +} + + +GType view_ogg_vorbis_export_get_type (void) { + static volatile gsize view_ogg_vorbis_export_type_id__volatile = 0; + if (g_once_init_enter (&view_ogg_vorbis_export_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewOggVorbisExportClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_ogg_vorbis_export_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewOggVorbisExport), 0, (GInstanceInitFunc) view_ogg_vorbis_export_instance_init, NULL }; + GType view_ogg_vorbis_export_type_id; + view_ogg_vorbis_export_type_id = g_type_register_static (VIEW_TYPE_MEDIA_CONNECTOR, "ViewOggVorbisExport", &g_define_type_info, 0); + g_once_init_leave (&view_ogg_vorbis_export_type_id__volatile, view_ogg_vorbis_export_type_id); + } + return view_ogg_vorbis_export_type_id__volatile; +} + + +#line 397 "project.vala" +static void _model_project_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self) { +#line 3268 "MediaEngine.c" + model_project_on_playstate_changed (self); +} + + +#line 799 "MediaEngine.vala" +static void _view_media_engine_on_error_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 3275 "MediaEngine.c" + view_media_engine_on_error (self, _sender, message); +} + + +#line 791 "MediaEngine.vala" +static void _view_media_engine_on_warning_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 3282 "MediaEngine.c" + view_media_engine_on_warning (self, _sender, message); +} + + +#line 808 "MediaEngine.vala" +static void _view_media_engine_on_eos_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 3289 "MediaEngine.c" + view_media_engine_on_eos (self, _sender, message); +} + + +#line 833 "MediaEngine.vala" +static void _view_media_engine_on_state_change_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 3296 "MediaEngine.c" + view_media_engine_on_state_change (self, _sender, message); +} + + +#line 814 "MediaEngine.vala" +static void _view_media_engine_on_element_gst_bus_message (GstBus* _sender, GstMessage* message, gpointer self) { +#line 3303 "MediaEngine.c" + view_media_engine_on_element (self, _sender, message); +} + + +#line 680 "MediaEngine.vala" +ViewMediaEngine* view_media_engine_construct (GType object_type, ModelProject* project, gboolean include_video, GError** error) { +#line 3310 "MediaEngine.c" + GError * _inner_error_; + ViewMediaEngine * self; + GeeArrayList* _tmp0_; + GstPipeline* _tmp1_; + GstElement* silence; + GstElement* _tmp4_; + GstElement* _tmp5_; + GstElement* audio_convert; + GstBus* bus; +#line 680 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL); +#line 3322 "MediaEngine.c" + _inner_error_ = NULL; +#line 680 "MediaEngine.vala" + self = (ViewMediaEngine*) g_object_new (object_type, NULL); +#line 681 "MediaEngine.vala" + self->priv->tracks = (_tmp0_ = gee_array_list_new (VIEW_TYPE_MEDIA_TRACK, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL), _g_object_unref0 (self->priv->tracks), _tmp0_); +#line 682 "MediaEngine.vala" + self->priv->project = project; +#line 683 "MediaEngine.vala" + g_signal_connect_object (self, "playstate-changed", (GCallback) _model_project_on_playstate_changed_view_media_engine_playstate_changed, project, 0); +#line 684 "MediaEngine.vala" + self->pipeline = (_tmp1_ = (GstPipeline*) gst_pipeline_new ("pipeline"), _gst_object_unref0 (self->pipeline), _tmp1_); +#line 685 "MediaEngine.vala" + gst_pipeline_set_auto_flush_bus (self->pipeline, FALSE); +#line 687 "MediaEngine.vala" + if (include_video) { +#line 3338 "MediaEngine.c" + GstElement* _tmp2_; + GstElement* _tmp3_; +#line 688 "MediaEngine.vala" + _tmp2_ = make_element ("ffmpegcolorspace", &_inner_error_); +#line 3343 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 688 "MediaEngine.vala" + self->converter = (_tmp3_ = _tmp2_, _gst_object_unref0 (self->converter), _tmp3_); +#line 689 "MediaEngine.vala" + gst_bin_add (GST_BIN (self->pipeline), _gst_object_ref0 (self->converter)); +#line 3353 "MediaEngine.c" + } +#line 692 "MediaEngine.vala" + silence = view_media_engine_get_audio_silence (self, &_inner_error_); +#line 3357 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + g_object_unref (self); + return NULL; + } +#line 694 "MediaEngine.vala" + _tmp4_ = make_element ("adder", &_inner_error_); +#line 3365 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (silence); + g_object_unref (self); + return NULL; + } +#line 694 "MediaEngine.vala" + self->adder = (_tmp5_ = _tmp4_, _gst_object_unref0 (self->adder), _tmp5_); +#line 696 "MediaEngine.vala" + audio_convert = make_element_with_name ("audioconvert", "projectconvert", &_inner_error_); +#line 3376 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (silence); + g_object_unref (self); + return NULL; + } +#line 697 "MediaEngine.vala" + gst_bin_add_many (GST_BIN (self->pipeline), _gst_object_ref0 (silence), _gst_object_ref0 (audio_convert), _gst_object_ref0 (self->adder), NULL); +#line 699 "MediaEngine.vala" + if (!gst_element_link_many (silence, audio_convert, self->adder, NULL)) { +#line 700 "MediaEngine.vala" + g_error ("MediaEngine.vala:700: silence: couldn't link"); +#line 3389 "MediaEngine.c" + } +#line 703 "MediaEngine.vala" + bus = gst_pipeline_get_bus (self->pipeline); +#line 705 "MediaEngine.vala" + gst_bus_add_signal_watch (bus); +#line 706 "MediaEngine.vala" + g_signal_connect_object (bus, "message::error", (GCallback) _view_media_engine_on_error_gst_bus_message, self, 0); +#line 707 "MediaEngine.vala" + g_signal_connect_object (bus, "message::warning", (GCallback) _view_media_engine_on_warning_gst_bus_message, self, 0); +#line 708 "MediaEngine.vala" + g_signal_connect_object (bus, "message::eos", (GCallback) _view_media_engine_on_eos_gst_bus_message, self, 0); +#line 709 "MediaEngine.vala" + g_signal_connect_object (bus, "message::state-changed", (GCallback) _view_media_engine_on_state_change_gst_bus_message, self, 0); +#line 710 "MediaEngine.vala" + g_signal_connect_object (bus, "message::element", (GCallback) _view_media_engine_on_element_gst_bus_message, self, 0); +#line 3405 "MediaEngine.c" + _gst_object_unref0 (silence); + _gst_object_unref0 (audio_convert); + _gst_object_unref0 (bus); + return self; +} + + +#line 680 "MediaEngine.vala" +ViewMediaEngine* view_media_engine_new (ModelProject* project, gboolean include_video, GError** error) { +#line 680 "MediaEngine.vala" + return view_media_engine_construct (VIEW_TYPE_MEDIA_ENGINE, project, include_video, error); +#line 3417 "MediaEngine.c" +} + + +#line 713 "MediaEngine.vala" +void view_media_engine_can_run (GError** error) { +#line 3423 "MediaEngine.c" + GError * _inner_error_; + GstRegistry* registry; + _inner_error_ = NULL; +#line 714 "MediaEngine.vala" + registry = _gst_object_ref0 (gst_registry_get_default ()); +#line 715 "MediaEngine.vala" + view_media_engine_check_version (registry, "adder", "gst-plugins-base", VIEW_MEDIA_ENGINE_MIN_GST_PLUGINS_BASE, &_inner_error_); +#line 3431 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (registry); + return; + } +#line 716 "MediaEngine.vala" + view_media_engine_check_version (registry, "level", "gst-plugins-good", VIEW_MEDIA_ENGINE_MIN_GST_PLUGINS_GOOD, &_inner_error_); +#line 3439 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (registry); + return; + } +#line 717 "MediaEngine.vala" + view_media_engine_check_version (registry, "gnonlin", "gnonlin", VIEW_MEDIA_ENGINE_MIN_GNONLIN, &_inner_error_); +#line 3447 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (registry); + return; + } + _gst_object_unref0 (registry); +} + + +#line 720 "MediaEngine.vala" +static void view_media_engine_check_version (GstRegistry* registry, const char* plugin_name, const char* package_name, const char* min_version, GError** error) { +#line 3459 "MediaEngine.c" + GError * _inner_error_; + GstPlugin* plugin; + char* version; +#line 720 "MediaEngine.vala" + g_return_if_fail (GST_IS_REGISTRY (registry)); +#line 720 "MediaEngine.vala" + g_return_if_fail (plugin_name != NULL); +#line 720 "MediaEngine.vala" + g_return_if_fail (package_name != NULL); +#line 720 "MediaEngine.vala" + g_return_if_fail (min_version != NULL); +#line 3471 "MediaEngine.c" + _inner_error_ = NULL; +#line 722 "MediaEngine.vala" + plugin = gst_registry_find_plugin (registry, plugin_name); +#line 723 "MediaEngine.vala" + if (plugin == NULL) { +#line 3477 "MediaEngine.c" + char* _tmp0_; + GError* _tmp1_; + _inner_error_ = (_tmp1_ = g_error_new_literal (MEDIA_ERROR, MEDIA_ERROR_MISSING_PLUGIN, _tmp0_ = g_strdup_printf ("You must install %s to use this program", package_name)), _g_free0 (_tmp0_), _tmp1_); + { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (plugin); + return; + } + } +#line 728 "MediaEngine.vala" + version = g_strdup (gst_plugin_get_version (plugin)); +#line 729 "MediaEngine.vala" + if (!version_at_least (version, min_version)) { +#line 3491 "MediaEngine.c" + char* _tmp2_; + GError* _tmp3_; + _inner_error_ = (_tmp3_ = g_error_new_literal (MEDIA_ERROR, MEDIA_ERROR_MISSING_PLUGIN, _tmp2_ = g_strdup_printf ("You have %s version %s, but this program requires at least version %s", package_name, version, min_version)), _g_free0 (_tmp2_), _tmp3_); + { + g_propagate_error (error, _inner_error_); + _gst_object_unref0 (plugin); + _g_free0 (version); + return; + } + } + _gst_object_unref0 (plugin); + _g_free0 (version); +} + + +#line 736 "MediaEngine.vala" +void view_media_engine_connect_output (ViewMediaEngine* self, ViewMediaConnector* connector) { +#line 3509 "MediaEngine.c" + gint _tmp1__length1; + GstElement** _tmp1_; + GstElement** _tmp0_ = NULL; +#line 736 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 736 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CONNECTOR (connector)); +#line 737 "MediaEngine.vala" + view_media_connector_connect (connector, self, self->pipeline, (_tmp1_ = (_tmp0_ = g_new0 (GstElement*, 2 + 1), _tmp0_[0] = _gst_object_ref0 (self->adder), _tmp0_[1] = _gst_object_ref0 (self->converter), _tmp0_), _tmp1__length1 = 2, _tmp1_), 2); +#line 3519 "MediaEngine.c" + _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) gst_object_unref), NULL); +} + + +#line 740 "MediaEngine.vala" +void view_media_engine_disconnect_output (ViewMediaEngine* self, ViewMediaConnector* connector) { +#line 3526 "MediaEngine.c" + gint _tmp1__length1; + GstElement** _tmp1_; + GstElement** _tmp0_ = NULL; +#line 740 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 740 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_CONNECTOR (connector)); +#line 741 "MediaEngine.vala" + gst_element_seek_simple (GST_ELEMENT (self->pipeline), GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, (gint64) 0); +#line 742 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_NULL); +#line 743 "MediaEngine.vala" + view_media_connector_do_disconnect (connector, self, self->pipeline, (_tmp1_ = (_tmp0_ = g_new0 (GstElement*, 2 + 1), _tmp0_[0] = _gst_object_ref0 (self->adder), _tmp0_[1] = _gst_object_ref0 (self->converter), _tmp0_), _tmp1__length1 = 2, _tmp1_), 2); +#line 3540 "MediaEngine.c" + _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) gst_object_unref), NULL); +} + + +#line 746 "MediaEngine.vala" +GstElement* view_media_engine_get_audio_silence (ViewMediaEngine* self, GError** error) { +#line 3547 "MediaEngine.c" + GstElement* result = NULL; + GError * _inner_error_; + GstElement* silence; + GstCaps* audio_cap; +#line 746 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 3554 "MediaEngine.c" + _inner_error_ = NULL; +#line 747 "MediaEngine.vala" + silence = make_element ("audiotestsrc", &_inner_error_); +#line 3558 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return NULL; + } +#line 748 "MediaEngine.vala" + g_object_set (G_OBJECT (silence), "wave", 4, NULL); +#line 749 "MediaEngine.vala" + audio_cap = view_media_engine_get_project_audio_caps (self); +#line 3567 "MediaEngine.c" + { + GList* pad_collection; + GList* pad_it; +#line 750 "MediaEngine.vala" + pad_collection = silence->pads; +#line 3573 "MediaEngine.c" + for (pad_it = pad_collection; pad_it != NULL; pad_it = pad_it->next) { + GstPad* pad; +#line 750 "MediaEngine.vala" + pad = _gst_object_ref0 ((GstPad*) pad_it->data); +#line 3578 "MediaEngine.c" + { +#line 751 "MediaEngine.vala" + gst_pad_set_caps (pad, audio_cap); +#line 3582 "MediaEngine.c" + _gst_object_unref0 (pad); + } + } + } + result = silence; + _gst_caps_unref0 (audio_cap); +#line 753 "MediaEngine.vala" + return result; +#line 3591 "MediaEngine.c" +} + + +#line 756 "MediaEngine.vala" +gint view_media_engine_get_sample_rate (ViewMediaEngine* self) { +#line 3597 "MediaEngine.c" + gint result = 0; +#line 756 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), 0); +#line 3601 "MediaEngine.c" + result = 48000; +#line 757 "MediaEngine.vala" + return result; +#line 3605 "MediaEngine.c" +} + + +#line 760 "MediaEngine.vala" +gint view_media_engine_get_sample_width (ViewMediaEngine* self) { +#line 3611 "MediaEngine.c" + gint result = 0; +#line 760 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), 0); +#line 3615 "MediaEngine.c" + result = 16; +#line 761 "MediaEngine.vala" + return result; +#line 3619 "MediaEngine.c" +} + + +#line 764 "MediaEngine.vala" +gint view_media_engine_get_sample_depth (ViewMediaEngine* self) { +#line 3625 "MediaEngine.c" + gint result = 0; +#line 764 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), 0); +#line 3629 "MediaEngine.c" + result = 16; +#line 765 "MediaEngine.vala" + return result; +#line 3633 "MediaEngine.c" +} + + +#line 768 "MediaEngine.vala" +PlayState view_media_engine_get_play_state (ViewMediaEngine* self) { +#line 3639 "MediaEngine.c" + PlayState result = 0; +#line 768 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), 0); +#line 3643 "MediaEngine.c" + result = self->play_state; +#line 769 "MediaEngine.vala" + return result; +#line 3647 "MediaEngine.c" +} + + +#line 772 "MediaEngine.vala" +void view_media_engine_set_play_state (ViewMediaEngine* self, PlayState play_state) { +#line 772 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 773 "MediaEngine.vala" + self->play_state = play_state; +#line 3657 "MediaEngine.c" +} + + +#line 776 "MediaEngine.vala" +GstCaps* view_media_engine_build_audio_caps (ViewMediaEngine* self, gint num_channels) { +#line 3663 "MediaEngine.c" + GstCaps* result = NULL; + char* caps; + char* _tmp0_; +#line 776 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 777 "MediaEngine.vala" + caps = g_strdup ("audio/x-raw-int,rate=%d,channels=%d,width=%d,depth=%d"); +#line 778 "MediaEngine.vala" + caps = (_tmp0_ = g_strdup_printf (caps, view_media_engine_get_sample_rate (self), num_channels, view_media_engine_get_sample_width (self), view_media_engine_get_sample_depth (self)), _g_free0 (caps), _tmp0_); +#line 3673 "MediaEngine.c" + result = gst_caps_from_string (caps); + _g_free0 (caps); +#line 779 "MediaEngine.vala" + return result; +#line 3678 "MediaEngine.c" +} + + +#line 782 "MediaEngine.vala" +GstCaps* view_media_engine_get_project_audio_caps (ViewMediaEngine* self) { +#line 3684 "MediaEngine.c" + GstCaps* result = NULL; +#line 782 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 3688 "MediaEngine.c" + result = view_media_engine_build_audio_caps (self, CHANNELS_PER_TRACK_PLAYBACK); +#line 783 "MediaEngine.vala" + return result; +#line 3692 "MediaEngine.c" +} + + +#line 786 "MediaEngine.vala" +GstCaps* view_media_engine_get_project_audio_export_caps (ViewMediaEngine* self) { +#line 3698 "MediaEngine.c" + GstCaps* result = NULL; +#line 786 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 3702 "MediaEngine.c" + result = gst_caps_from_string ("audio/x-raw-float,rate=48000,channels=2,width=32"); +#line 787 "MediaEngine.vala" + return result; +#line 3706 "MediaEngine.c" +} + + +#line 791 "MediaEngine.vala" +static void view_media_engine_on_warning (ViewMediaEngine* self, GstBus* bus, GstMessage* message) { +#line 3712 "MediaEngine.c" + GError* _error_; + char* text; + char* _tmp3_; + char* _tmp2_ = NULL; + GError* _tmp1_; + GError* _tmp0_ = NULL; +#line 791 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 791 "MediaEngine.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 791 "MediaEngine.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 792 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_warning"); +#line 3727 "MediaEngine.c" + _error_ = NULL; + text = NULL; +#line 795 "MediaEngine.vala" + (gst_message_parse_warning (message, &_tmp0_, &_tmp2_), _error_ = (_tmp1_ = _tmp0_, _g_error_free0 (_error_), _tmp1_)); +#line 795 "MediaEngine.vala" + text = (_tmp3_ = _tmp2_, _g_free0 (text), _tmp3_); +#line 796 "MediaEngine.vala" + g_warning ("MediaEngine.vala:796: %s", text); +#line 3736 "MediaEngine.c" + _g_error_free0 (_error_); + _g_free0 (text); +} + + +#line 799 "MediaEngine.vala" +static void view_media_engine_on_error (ViewMediaEngine* self, GstBus* bus, GstMessage* message) { +#line 3744 "MediaEngine.c" + GError* _error_; + char* text; + char* _tmp3_; + char* _tmp2_ = NULL; + GError* _tmp1_; + GError* _tmp0_ = NULL; +#line 799 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 799 "MediaEngine.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 799 "MediaEngine.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 800 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error"); +#line 3759 "MediaEngine.c" + _error_ = NULL; + text = NULL; +#line 803 "MediaEngine.vala" + (gst_message_parse_error (message, &_tmp0_, &_tmp2_), _error_ = (_tmp1_ = _tmp0_, _g_error_free0 (_error_), _tmp1_)); +#line 803 "MediaEngine.vala" + text = (_tmp3_ = _tmp2_, _g_free0 (text), _tmp3_); +#line 804 "MediaEngine.vala" + g_warning ("MediaEngine.vala:804: %s", text); +#line 805 "MediaEngine.vala" + model_project_print_graph (self->priv->project, GST_BIN (self->pipeline), "bus_error"); +#line 3770 "MediaEngine.c" + _g_error_free0 (_error_); + _g_free0 (text); +} + + +#line 808 "MediaEngine.vala" +static void view_media_engine_on_eos (ViewMediaEngine* self, GstBus* bus, GstMessage* message) { +#line 808 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 808 "MediaEngine.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 808 "MediaEngine.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 809 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_eos"); +#line 810 "MediaEngine.vala" + if (self->play_state == PLAY_STATE_EXPORTING) { +#line 811 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_NULL); +#line 3790 "MediaEngine.c" + } +} + + +#line 1168 "glib-2.0.vapi" +static const char* string_to_string (const char* self) { +#line 3797 "MediaEngine.c" + const char* result = NULL; +#line 1168 "glib-2.0.vapi" + g_return_val_if_fail (self != NULL, NULL); +#line 3801 "MediaEngine.c" + result = self; +#line 1169 "glib-2.0.vapi" + return result; +#line 3805 "MediaEngine.c" +} + + +static GValue* _gst_value_dup (GValue* self) { + GValue* dup; + dup = g_new0 (GValue, 1); + memcpy (dup, self, sizeof (GValue)); + return dup; +} + + +static gpointer __gst_value_dup0 (gpointer self) { + return self ? _gst_value_dup (self) : NULL; +} + + +#line 814 "MediaEngine.vala" +static void view_media_engine_on_element (ViewMediaEngine* self, GstBus* bus, GstMessage* message) { +#line 3824 "MediaEngine.c" + const GstStructure* structure; + gboolean _tmp0_ = FALSE; +#line 814 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 814 "MediaEngine.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 814 "MediaEngine.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 815 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_element"); +#line 816 "MediaEngine.vala" + structure = gst_message_get_structure (message); +#line 818 "MediaEngine.vala" + if (self->play_state == PLAY_STATE_PLAYING) { +#line 818 "MediaEngine.vala" + _tmp0_ = _vala_strcmp0 (string_to_string (gst_structure_get_name (structure)), "level") == 0; +#line 3841 "MediaEngine.c" + } else { +#line 818 "MediaEngine.vala" + _tmp0_ = FALSE; +#line 3845 "MediaEngine.c" + } +#line 818 "MediaEngine.vala" + if (_tmp0_) { +#line 3849 "MediaEngine.c" + GValue* rms; + guint size; + GValue* temp; + double level_left; + double level_right; +#line 819 "MediaEngine.vala" + rms = __gst_value_dup0 (gst_structure_get_value (structure, "rms")); +#line 820 "MediaEngine.vala" + size = gst_value_list_get_size (rms); +#line 821 "MediaEngine.vala" + temp = __gst_value_dup0 (gst_value_list_get_value (rms, (guint) 0)); +#line 822 "MediaEngine.vala" + level_left = g_value_get_double (temp); +#line 823 "MediaEngine.vala" + level_right = level_left; +#line 825 "MediaEngine.vala" + if (size > 1) { +#line 3867 "MediaEngine.c" + GValue* _tmp1_; +#line 826 "MediaEngine.vala" + temp = (_tmp1_ = __gst_value_dup0 (gst_value_list_get_value (rms, (guint) 1)), _g_free0 (temp), _tmp1_); +#line 827 "MediaEngine.vala" + level_right = g_value_get_double (temp); +#line 3873 "MediaEngine.c" + } +#line 829 "MediaEngine.vala" + g_signal_emit_by_name (self, "level-changed", message->src, level_left, level_right); +#line 3877 "MediaEngine.c" + _g_free0 (rms); + _g_free0 (temp); + } +} + + +#line 833 "MediaEngine.vala" +static void view_media_engine_on_state_change (ViewMediaEngine* self, GstBus* bus, GstMessage* message) { +#line 3886 "MediaEngine.c" + GstState old_state = 0; + GstState new_state = 0; + GstState pending = 0; + char* _tmp2_; +#line 833 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 833 "MediaEngine.vala" + g_return_if_fail (GST_IS_BUS (bus)); +#line 833 "MediaEngine.vala" + g_return_if_fail (GST_IS_MESSAGE (message)); +#line 834 "MediaEngine.vala" + if (message->src != GST_OBJECT (self->pipeline)) { +#line 3899 "MediaEngine.c" + char* _tmp1_; + char* _tmp0_; +#line 835 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_GRAPH, LOGGING_LEVEL_VERBOSE, _tmp1_ = g_strdup_printf ("on_state_change returning. message from %s", _tmp0_ = gst_object_get_name (message->src))); +#line 3904 "MediaEngine.c" + _g_free0 (_tmp1_); + _g_free0 (_tmp0_); +#line 837 "MediaEngine.vala" + return; +#line 3909 "MediaEngine.c" + } +#line 844 "MediaEngine.vala" + gst_message_parse_state_changed (message, &old_state, &new_state, &pending); +#line 846 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_GRAPH, LOGGING_LEVEL_INFO, _tmp2_ = g_strdup_printf ("on_state_change old(%s) new(%s) pending(%s)", gst_element_state_get_name (old_state), gst_element_state_get_name (new_state), gst_element_state_get_name (pending))); +#line 3915 "MediaEngine.c" + _g_free0 (_tmp2_); +#line 849 "MediaEngine.vala" + if (new_state == self->gst_state) { +#line 850 "MediaEngine.vala" + return; +#line 3921 "MediaEngine.c" + } +#line 852 "MediaEngine.vala" + self->gst_state = new_state; +#line 853 "MediaEngine.vala" + view_media_engine_do_state_change (self); +#line 3927 "MediaEngine.c" +} + + +#line 856 "MediaEngine.vala" +gboolean view_media_engine_do_state_change (ViewMediaEngine* self) { +#line 3933 "MediaEngine.c" + gboolean result = FALSE; + GError * _inner_error_; +#line 856 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), FALSE); +#line 3938 "MediaEngine.c" + _inner_error_ = NULL; +#line 857 "MediaEngine.vala" + g_signal_emit_by_name (self, "playstate-changed"); +#line 858 "MediaEngine.vala" + switch (self->play_state) { +#line 3944 "MediaEngine.c" + case PLAY_STATE_STOPPED: + { +#line 860 "MediaEngine.vala" + if (self->gst_state != GST_STATE_PAUSED) { +#line 861 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_PAUSED); +#line 3951 "MediaEngine.c" + } else { +#line 863 "MediaEngine.vala" + view_media_engine_go (self, self->position); +#line 3955 "MediaEngine.c" + } + result = TRUE; +#line 865 "MediaEngine.vala" + return result; +#line 3960 "MediaEngine.c" + } + case PLAY_STATE_PRE_EXPORT: + { +#line 867 "MediaEngine.vala" + if (self->gst_state != GST_STATE_PAUSED) { +#line 3966 "MediaEngine.c" + result = FALSE; +#line 868 "MediaEngine.vala" + return result; +#line 3970 "MediaEngine.c" + } +#line 870 "MediaEngine.vala" + view_media_engine_do_paused_state_export (self); +#line 3974 "MediaEngine.c" + result = TRUE; +#line 871 "MediaEngine.vala" + return result; +#line 3978 "MediaEngine.c" + } + case PLAY_STATE_EXPORTING: + { +#line 873 "MediaEngine.vala" + if (self->gst_state != GST_STATE_NULL) { +#line 3984 "MediaEngine.c" + result = FALSE; +#line 874 "MediaEngine.vala" + return result; +#line 3988 "MediaEngine.c" + } +#line 875 "MediaEngine.vala" + view_media_engine_end_export (self, FALSE); +#line 3992 "MediaEngine.c" + result = TRUE; +#line 876 "MediaEngine.vala" + return result; +#line 3996 "MediaEngine.c" + } + case PLAY_STATE_CANCEL_EXPORT: + { +#line 878 "MediaEngine.vala" + if (self->gst_state != GST_STATE_NULL) { +#line 4002 "MediaEngine.c" + result = FALSE; +#line 879 "MediaEngine.vala" + return result; +#line 4006 "MediaEngine.c" + } +#line 880 "MediaEngine.vala" + view_media_engine_end_export (self, TRUE); +#line 4010 "MediaEngine.c" + result = TRUE; +#line 881 "MediaEngine.vala" + return result; +#line 4014 "MediaEngine.c" + } + case PLAY_STATE_CLOSING: + { +#line 883 "MediaEngine.vala" + view_media_engine_close (self); +#line 4020 "MediaEngine.c" + result = TRUE; +#line 884 "MediaEngine.vala" + return result; +#line 4024 "MediaEngine.c" + } + case PLAY_STATE_PRE_RECORD_NULL: + { +#line 886 "MediaEngine.vala" + if (self->gst_state == GST_STATE_NULL) { +#line 4030 "MediaEngine.c" + { +#line 888 "MediaEngine.vala" + view_media_engine_start_record (self, self->record_region, &_inner_error_); +#line 4034 "MediaEngine.c" + if (_inner_error_ != NULL) { + goto __catch10_g_error; + } + } + goto __finally10; + __catch10_g_error: + { + GError * _error_; + _error_ = _inner_error_; + _inner_error_ = NULL; + { +#line 890 "MediaEngine.vala" + g_signal_emit_by_name (self, "error-occurred", "An error occurred starting the recording.", NULL); +#line 891 "MediaEngine.vala" + g_warning ("MediaEngine.vala:891: An error occurred starting the recording: %s", _error_->message); +#line 4050 "MediaEngine.c" + _g_error_free0 (_error_); + } + } + __finally10: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return FALSE; + } + result = TRUE; +#line 893 "MediaEngine.vala" + return result; +#line 4063 "MediaEngine.c" + } +#line 895 "MediaEngine.vala" + break; +#line 4067 "MediaEngine.c" + } + case PLAY_STATE_PRE_RECORD: + { +#line 897 "MediaEngine.vala" + if (self->gst_state == GST_STATE_PAUSED) { +#line 898 "MediaEngine.vala" + view_media_engine_do_play (self, PLAY_STATE_RECORDING); +#line 4075 "MediaEngine.c" + result = TRUE; +#line 899 "MediaEngine.vala" + return result; +#line 4079 "MediaEngine.c" + } +#line 901 "MediaEngine.vala" + break; +#line 4083 "MediaEngine.c" + } + case PLAY_STATE_POST_RECORD: + { +#line 903 "MediaEngine.vala" + if (self->gst_state != GST_STATE_NULL) { +#line 904 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_NULL); +#line 4091 "MediaEngine.c" + } else { +#line 906 "MediaEngine.vala" + view_media_engine_post_record (self); +#line 907 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_PAUSED); +#line 908 "MediaEngine.vala" + self->play_state = PLAY_STATE_STOPPED; +#line 4099 "MediaEngine.c" + } + result = TRUE; +#line 910 "MediaEngine.vala" + return result; +#line 4104 "MediaEngine.c" + } + } + result = FALSE; +#line 912 "MediaEngine.vala" + return result; +#line 4110 "MediaEngine.c" +} + + +#line 915 "MediaEngine.vala" +static void view_media_engine_real_do_null_state_export (ViewMediaEngine* self, gint64 length) { +#line 915 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 916 "MediaEngine.vala" + g_signal_emit_by_name (self, "pre-export", length); +#line 917 "MediaEngine.vala" + self->play_state = PLAY_STATE_PRE_EXPORT; +#line 918 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_PAUSED); +#line 4124 "MediaEngine.c" +} + + +#line 915 "MediaEngine.vala" +void view_media_engine_do_null_state_export (ViewMediaEngine* self, gint64 length) { +#line 915 "MediaEngine.vala" + VIEW_MEDIA_ENGINE_GET_CLASS (self)->do_null_state_export (self, length); +#line 4132 "MediaEngine.c" +} + + +#line 952 "MediaEngine.vala" +static gboolean _view_media_engine_on_callback_gsource_func (gpointer self) { +#line 4138 "MediaEngine.c" + gboolean result; + result = view_media_engine_on_callback (self); + return result; +} + + +#line 921 "MediaEngine.vala" +static void view_media_engine_do_paused_state_export (ViewMediaEngine* self) { +#line 921 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 922 "MediaEngine.vala" + self->play_state = PLAY_STATE_EXPORTING; +#line 924 "MediaEngine.vala" + if (self->priv->callback_id == 0) { +#line 925 "MediaEngine.vala" + self->priv->callback_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 50, _view_media_engine_on_callback_gsource_func, g_object_ref (self), g_object_unref); +#line 4155 "MediaEngine.c" + } +#line 926 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_PLAYING); +#line 4159 "MediaEngine.c" +} + + +#line 929 "MediaEngine.vala" +static void view_media_engine_end_export (ViewMediaEngine* self, gboolean deleted) { +#line 929 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 930 "MediaEngine.vala" + self->play_state = PLAY_STATE_STOPPED; +#line 932 "MediaEngine.vala" + self->priv->callback_id = (guint) 0; +#line 933 "MediaEngine.vala" + g_signal_emit_by_name (self, "post-export", deleted); +#line 4173 "MediaEngine.c" +} + + +#line 936 "MediaEngine.vala" +void view_media_engine_go (ViewMediaEngine* self, gint64 pos) { +#line 936 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 937 "MediaEngine.vala" + if (self->position == pos) { +#line 938 "MediaEngine.vala" + gst_element_seek_simple (GST_ELEMENT (self->pipeline), GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, self->position); +#line 939 "MediaEngine.vala" + return; +#line 4187 "MediaEngine.c" + } +#line 941 "MediaEngine.vala" + if (pos < 0) { +#line 942 "MediaEngine.vala" + self->position = (gint64) 0; +#line 4193 "MediaEngine.c" + } else { +#line 944 "MediaEngine.vala" + self->position = pos; +#line 4197 "MediaEngine.c" + } +#line 948 "MediaEngine.vala" + gst_element_seek_simple (GST_ELEMENT (self->pipeline), GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, self->position); +#line 949 "MediaEngine.vala" + g_signal_emit_by_name (self, "position-changed", self->position); +#line 4203 "MediaEngine.c" +} + + +#line 952 "MediaEngine.vala" +static gboolean view_media_engine_on_callback (ViewMediaEngine* self) { +#line 4209 "MediaEngine.c" + gboolean result = FALSE; + gboolean _tmp0_ = FALSE; + gboolean _tmp1_ = FALSE; + GstFormat format; + gint64 time; + gboolean _tmp2_ = FALSE; +#line 952 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), FALSE); +#line 953 "MediaEngine.vala" + if (self->play_state == PLAY_STATE_STOPPED) { +#line 953 "MediaEngine.vala" + _tmp1_ = !self->playing; +#line 4222 "MediaEngine.c" + } else { +#line 953 "MediaEngine.vala" + _tmp1_ = FALSE; +#line 4226 "MediaEngine.c" + } +#line 953 "MediaEngine.vala" + if (_tmp1_) { +#line 953 "MediaEngine.vala" + _tmp0_ = TRUE; +#line 4232 "MediaEngine.c" + } else { +#line 954 "MediaEngine.vala" + _tmp0_ = self->play_state == PLAY_STATE_POST_RECORD; +#line 4236 "MediaEngine.c" + } +#line 953 "MediaEngine.vala" + if (_tmp0_) { +#line 955 "MediaEngine.vala" + self->priv->callback_id = (guint) 0; +#line 4242 "MediaEngine.c" + result = FALSE; +#line 956 "MediaEngine.vala" + return result; +#line 4246 "MediaEngine.c" + } +#line 959 "MediaEngine.vala" + format = GST_FORMAT_TIME; +#line 960 "MediaEngine.vala" + time = (gint64) 0; +#line 961 "MediaEngine.vala" + if (gst_element_query_position (GST_ELEMENT (self->pipeline), &format, &time)) { +#line 961 "MediaEngine.vala" + _tmp2_ = format == GST_FORMAT_TIME; +#line 4256 "MediaEngine.c" + } else { +#line 961 "MediaEngine.vala" + _tmp2_ = FALSE; +#line 4260 "MediaEngine.c" + } +#line 961 "MediaEngine.vala" + if (_tmp2_) { +#line 962 "MediaEngine.vala" + self->position = time; +#line 963 "MediaEngine.vala" + g_signal_emit_by_name (self, "callback-pulse"); +#line 965 "MediaEngine.vala" + if (self->play_state == PLAY_STATE_PLAYING) { +#line 966 "MediaEngine.vala" + if (self->position >= model_project_get_length (self->priv->project)) { +#line 967 "MediaEngine.vala" + view_media_engine_go (self, model_project_get_length (self->priv->project)); +#line 968 "MediaEngine.vala" + view_media_engine_pause (self); +#line 4276 "MediaEngine.c" + } +#line 970 "MediaEngine.vala" + g_signal_emit_by_name (self, "position-changed", time); +#line 4280 "MediaEngine.c" + } else { +#line 971 "MediaEngine.vala" + if (self->play_state == PLAY_STATE_EXPORTING) { +#line 972 "MediaEngine.vala" + if (time > model_project_get_length (self->priv->project)) { +#line 973 "MediaEngine.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "fraction-updated", 1.0); +#line 4288 "MediaEngine.c" + } else { +#line 976 "MediaEngine.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "fraction-updated", time / ((double) model_project_get_length (self->priv->project))); +#line 4292 "MediaEngine.c" + } + } else { +#line 977 "MediaEngine.vala" + if (self->play_state == PLAY_STATE_RECORDING) { +#line 978 "MediaEngine.vala" + g_signal_emit_by_name (self, "position-changed", time); +#line 4299 "MediaEngine.c" + } + } + } + } + result = TRUE; +#line 981 "MediaEngine.vala" + return result; +#line 4307 "MediaEngine.c" +} + + +#line 984 "MediaEngine.vala" +static void view_media_engine_real_pause (ViewMediaEngine* self) { +#line 984 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 985 "MediaEngine.vala" + if (model_project_transport_is_recording (self->priv->project)) { +#line 986 "MediaEngine.vala" + gst_element_send_event (GST_ELEMENT (self->record_bin), gst_event_new_eos ()); +#line 987 "MediaEngine.vala" + self->play_state = PLAY_STATE_POST_RECORD; +#line 4321 "MediaEngine.c" + } else { +#line 989 "MediaEngine.vala" + if (!self->playing) { +#line 990 "MediaEngine.vala" + return; +#line 4327 "MediaEngine.c" + } +#line 992 "MediaEngine.vala" + self->play_state = PLAY_STATE_STOPPED; +#line 4331 "MediaEngine.c" + } +#line 994 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_PAUSED); +#line 995 "MediaEngine.vala" + self->playing = FALSE; +#line 4337 "MediaEngine.c" +} + + +#line 984 "MediaEngine.vala" +void view_media_engine_pause (ViewMediaEngine* self) { +#line 984 "MediaEngine.vala" + VIEW_MEDIA_ENGINE_GET_CLASS (self)->pause (self); +#line 4345 "MediaEngine.c" +} + + +#line 999 "MediaEngine.vala" +void view_media_engine_set_gst_state (ViewMediaEngine* self, GstState state) { +#line 999 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1000 "MediaEngine.vala" + if (gst_element_set_state (GST_ELEMENT (self->pipeline), state) == GST_STATE_CHANGE_FAILURE) { +#line 1001 "MediaEngine.vala" + g_error ("MediaEngine.vala:1001: can't set state"); +#line 4357 "MediaEngine.c" + } +} + + +#line 1004 "MediaEngine.vala" +static void view_media_engine_seek (ViewMediaEngine* self, GstSeekFlags flags, gint64 pos) { +#line 1004 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1008 "MediaEngine.vala" + gst_element_seek_simple (GST_ELEMENT (self->pipeline), GST_FORMAT_TIME, flags, pos); +#line 4368 "MediaEngine.c" +} + + +#line 1011 "MediaEngine.vala" +void view_media_engine_do_play (ViewMediaEngine* self, PlayState new_state) { +#line 1011 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1012 "MediaEngine.vala" + view_media_engine_seek (self, GST_SEEK_FLAG_FLUSH, self->position); +#line 1013 "MediaEngine.vala" + self->play_state = new_state; +#line 1014 "MediaEngine.vala" + view_media_engine_play (self); +#line 4382 "MediaEngine.c" +} + + +#line 1017 "MediaEngine.vala" +static void view_media_engine_play (ViewMediaEngine* self) { +#line 1017 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1018 "MediaEngine.vala" + if (self->playing) { +#line 1019 "MediaEngine.vala" + return; +#line 4394 "MediaEngine.c" + } +#line 1021 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_PLAYING); +#line 1022 "MediaEngine.vala" + if (self->priv->callback_id == 0) { +#line 1023 "MediaEngine.vala" + self->priv->callback_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 50, _view_media_engine_on_callback_gsource_func, g_object_ref (self), g_object_unref); +#line 4402 "MediaEngine.c" + } +#line 1024 "MediaEngine.vala" + self->playing = TRUE; +#line 4406 "MediaEngine.c" +} + + +#line 1027 "MediaEngine.vala" +void view_media_engine_start_export (ViewMediaEngine* self, const char* filename) { +#line 1027 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1027 "MediaEngine.vala" + g_return_if_fail (filename != NULL); +#line 1028 "MediaEngine.vala" + g_signal_emit_by_name (MULTI_FILE_PROGRESS_INTERFACE (self), "file-updated", filename, 0); +#line 1029 "MediaEngine.vala" + view_media_engine_do_null_state_export (self, model_project_get_length (self->priv->project)); +#line 4420 "MediaEngine.c" +} + + +#line 1032 "MediaEngine.vala" +static void view_media_engine_real_cancel (MultiFileProgressInterface* base) { +#line 4426 "MediaEngine.c" + ViewMediaEngine * self; + self = VIEW_MEDIA_ENGINE (base); +#line 1033 "MediaEngine.vala" + self->play_state = PLAY_STATE_CANCEL_EXPORT; +#line 1034 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_NULL); +#line 4433 "MediaEngine.c" +} + + +#line 1037 "MediaEngine.vala" +static void view_media_engine_real_complete (MultiFileProgressInterface* base) { +#line 4439 "MediaEngine.c" + ViewMediaEngine * self; + self = VIEW_MEDIA_ENGINE (base); +#line 1038 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_NULL); +#line 4444 "MediaEngine.c" +} + + +#line 1041 "MediaEngine.vala" +void view_media_engine_on_load_complete (ViewMediaEngine* self) { +#line 1041 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1042 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_complete"); +#line 1043 "MediaEngine.vala" + self->play_state = PLAY_STATE_STOPPED; +#line 1044 "MediaEngine.vala" + gst_element_set_state (GST_ELEMENT (self->pipeline), GST_STATE_PAUSED); +#line 4458 "MediaEngine.c" +} + + +#line 1047 "MediaEngine.vala" +void view_media_engine_on_callback_pulse (ViewMediaEngine* self) { +#line 1047 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1048 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_callback_pulse"); +#line 1049 "MediaEngine.vala" + if (self->record_region != NULL) { +#line 1050 "MediaEngine.vala" + model_clip_set_duration (self->record_region, self->position - model_clip_get_start (self->record_region)); +#line 4472 "MediaEngine.c" + } +} + + +#line 1054 "MediaEngine.vala" +void view_media_engine_close (ViewMediaEngine* self) { +#line 1054 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1055 "MediaEngine.vala" + if (self->gst_state != GST_STATE_NULL) { +#line 1056 "MediaEngine.vala" + self->play_state = PLAY_STATE_CLOSING; +#line 1057 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_NULL); +#line 4487 "MediaEngine.c" + } else { +#line 1059 "MediaEngine.vala" + self->play_state = PLAY_STATE_CLOSED; +#line 4491 "MediaEngine.c" + } +#line 1061 "MediaEngine.vala" + g_signal_emit_by_name (self, "playstate-changed"); +#line 4495 "MediaEngine.c" +} + + +#line 1064 "MediaEngine.vala" +void view_media_engine_post_record (ViewMediaEngine* self) { +#line 4501 "MediaEngine.c" + GstBin* _tmp0_; + ModelClip* _tmp1_; + ModelAudioTrack* _tmp2_; + GstElement* _tmp4_; + GstElement* _tmp3_; + GstElement* _tmp6_; + GstElement* _tmp5_; +#line 1064 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1065 "MediaEngine.vala" + g_assert (self->gst_state == GST_STATE_NULL); +#line 1067 "MediaEngine.vala" + _model_track_delete_clip (MODEL_TRACK (self->record_track), self->record_region); +#line 1069 "MediaEngine.vala" + gst_element_unlink_many (self->priv->audio_in, self->priv->record_capsfilter, self->priv->wav_encoder, self->priv->record_sink, NULL); +#line 1070 "MediaEngine.vala" + gst_bin_remove_many (self->record_bin, self->priv->audio_in, self->priv->record_capsfilter, self->priv->wav_encoder, self->priv->record_sink, NULL); +#line 1071 "MediaEngine.vala" + gst_bin_remove (GST_BIN (self->pipeline), GST_ELEMENT (self->record_bin)); +#line 1072 "MediaEngine.vala" + g_signal_emit_by_name (self, "record-completed"); +#line 1073 "MediaEngine.vala" + self->record_bin = (_tmp0_ = NULL, _gst_object_unref0 (self->record_bin), _tmp0_); +#line 1074 "MediaEngine.vala" + self->record_region = (_tmp1_ = NULL, _g_object_unref0 (self->record_region), _tmp1_); +#line 1075 "MediaEngine.vala" + self->record_track = (_tmp2_ = NULL, _g_object_unref0 (self->record_track), _tmp2_); +#line 1076 "MediaEngine.vala" + self->priv->audio_in = (_tmp4_ = _gst_object_ref0 (self->priv->record_capsfilter = (_tmp3_ = NULL, _gst_object_unref0 (self->priv->record_capsfilter), _tmp3_)), _gst_object_unref0 (self->priv->audio_in), _tmp4_); +#line 1077 "MediaEngine.vala" + self->priv->wav_encoder = (_tmp6_ = _gst_object_ref0 (self->priv->record_sink = (_tmp5_ = NULL, _gst_object_unref0 (self->priv->record_sink), _tmp5_)), _gst_object_unref0 (self->priv->wav_encoder), _tmp6_); +#line 1078 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_PAUSED); +#line 4535 "MediaEngine.c" +} + + +#line 1081 "MediaEngine.vala" +void view_media_engine_record (ViewMediaEngine* self, ModelAudioTrack* track) { +#line 4541 "MediaEngine.c" + ModelAudioTrack* _tmp0_; + char* filename; + ModelClipFile* clip_file; + ModelClip* _tmp1_; +#line 1081 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1081 "MediaEngine.vala" + g_return_if_fail (MODEL_IS_AUDIO_TRACK (track)); +#line 1082 "MediaEngine.vala" + g_assert (self->gst_state != GST_STATE_NULL); +#line 1083 "MediaEngine.vala" + self->play_state = PLAY_STATE_PRE_RECORD_NULL; +#line 1084 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_NULL); +#line 1085 "MediaEngine.vala" + self->record_track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->record_track), _tmp0_); +#line 1087 "MediaEngine.vala" + filename = view_media_engine_new_audio_filename (self, MODEL_TRACK (track)); +#line 1088 "MediaEngine.vala" + clip_file = model_clip_file_new (filename, 0); +#line 1089 "MediaEngine.vala" + self->record_region = (_tmp1_ = model_clip_new (clip_file, MODEL_MEDIA_TYPE_AUDIO, "", self->position, (gint64) 0, (gint64) 1, TRUE), _g_object_unref0 (self->record_region), _tmp1_); +#line 4564 "MediaEngine.c" + _g_free0 (filename); + _g_object_unref0 (clip_file); +} + + +#line 1092 "MediaEngine.vala" +void view_media_engine_start_record (ViewMediaEngine* self, ModelClip* region, GError** error) { +#line 4572 "MediaEngine.c" + GError * _inner_error_; + GstBin* _tmp0_; + GstElement* _tmp1_; + GstElement* _tmp2_; + GValue _tmp4_; + GValue _tmp3_ = {0}; + GstElement* _tmp5_; + GstElement* _tmp6_; + GstCaps* _tmp7_; + GstElement* _tmp8_; + GstElement* _tmp9_; + GstElement* _tmp10_; + GstElement* _tmp11_; +#line 1092 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1092 "MediaEngine.vala" + g_return_if_fail (MODEL_IS_CLIP (region)); +#line 4590 "MediaEngine.c" + _inner_error_ = NULL; +#line 1093 "MediaEngine.vala" + if (model_project_transport_is_recording (self->priv->project)) { +#line 1094 "MediaEngine.vala" + return; +#line 4596 "MediaEngine.c" + } +#line 1096 "MediaEngine.vala" + if (model_project_transport_is_playing (self->priv->project)) { +#line 1097 "MediaEngine.vala" + g_error ("MediaEngine.vala:1097: can't switch from playing to recording"); +#line 4602 "MediaEngine.c" + } +#line 1099 "MediaEngine.vala" + if (self->gst_state != GST_STATE_NULL) { +#line 1100 "MediaEngine.vala" + g_error ("MediaEngine.vala:1100: can't record now: %s", gst_element_state_get_name (self->gst_state)); +#line 4608 "MediaEngine.c" + } +#line 1101 "MediaEngine.vala" + self->record_bin = (_tmp0_ = (GstBin*) gst_bin_new ("recordingbin"), _gst_object_unref0 (self->record_bin), _tmp0_); +#line 1102 "MediaEngine.vala" + _model_track_move (MODEL_TRACK (self->record_track), self->record_region, self->position); +#line 1103 "MediaEngine.vala" + g_signal_emit_by_name (MODEL_TRACK (self->record_track), "clip-added", self->record_region, TRUE); +#line 1104 "MediaEngine.vala" + _tmp1_ = make_element ("pulsesrc", &_inner_error_); +#line 4618 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 1104 "MediaEngine.vala" + self->priv->audio_in = (_tmp2_ = _tmp1_, _gst_object_unref0 (self->priv->audio_in), _tmp2_); +#line 1105 "MediaEngine.vala" + g_object_set_property (G_OBJECT (self->priv->audio_in), "device", (_tmp4_ = (g_value_init (&_tmp3_, G_TYPE_STRING), g_value_set_string (&_tmp3_, "source.hw0"), _tmp3_), &_tmp4_)); +#line 1106 "MediaEngine.vala" + _tmp5_ = make_element ("capsfilter", &_inner_error_); +#line 4629 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 1106 "MediaEngine.vala" + self->priv->record_capsfilter = (_tmp6_ = _tmp5_, _gst_object_unref0 (self->priv->record_capsfilter), _tmp6_); +#line 1107 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->record_capsfilter), "caps", _tmp7_ = view_media_engine_get_record_audio_caps (self), NULL); +#line 4638 "MediaEngine.c" + _gst_caps_unref0 (_tmp7_); +#line 1108 "MediaEngine.vala" + _tmp8_ = make_element ("filesink", &_inner_error_); +#line 4642 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 1108 "MediaEngine.vala" + self->priv->record_sink = (_tmp9_ = _tmp8_, _gst_object_unref0 (self->priv->record_sink), _tmp9_); +#line 1109 "MediaEngine.vala" + g_object_set (G_OBJECT (self->priv->record_sink), "location", self->record_region->clipfile->filename, NULL); +#line 1110 "MediaEngine.vala" + _tmp10_ = make_element ("wavenc", &_inner_error_); +#line 4653 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + return; + } +#line 1110 "MediaEngine.vala" + self->priv->wav_encoder = (_tmp11_ = _tmp10_, _gst_object_unref0 (self->priv->wav_encoder), _tmp11_); +#line 1112 "MediaEngine.vala" + gst_bin_add_many (self->record_bin, _gst_object_ref0 (self->priv->audio_in), _gst_object_ref0 (self->priv->record_capsfilter), _gst_object_ref0 (self->priv->wav_encoder), _gst_object_ref0 (self->priv->record_sink), NULL); +#line 1113 "MediaEngine.vala" + if (!gst_element_link_many (self->priv->audio_in, self->priv->record_capsfilter, self->priv->wav_encoder, self->priv->record_sink, NULL)) { +#line 1114 "MediaEngine.vala" + g_error ("MediaEngine.vala:1114: audio_in: couldn't link"); +#line 4666 "MediaEngine.c" + } +#line 1115 "MediaEngine.vala" + gst_bin_add (GST_BIN (self->pipeline), _gst_object_ref0 (GST_ELEMENT (self->record_bin))); +#line 1117 "MediaEngine.vala" + self->play_state = PLAY_STATE_PRE_RECORD; +#line 1118 "MediaEngine.vala" + view_media_engine_set_gst_state (self, GST_STATE_PAUSED); +#line 4674 "MediaEngine.c" +} + + +#line 1121 "MediaEngine.vala" +GstCaps* view_media_engine_get_record_audio_caps (ViewMediaEngine* self) { +#line 4680 "MediaEngine.c" + GstCaps* result = NULL; +#line 1121 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 4684 "MediaEngine.c" + result = view_media_engine_build_audio_caps (self, CHANNELS_PER_TRACK_RECORD); +#line 1122 "MediaEngine.vala" + return result; +#line 4688 "MediaEngine.c" +} + + +#line 1125 "MediaEngine.vala" +static char* view_media_engine_new_audio_filename (ViewMediaEngine* self, ModelTrack* track) { +#line 4694 "MediaEngine.c" + char* result = NULL; + gint i; + char* base_path; + char* _tmp0_; + char* _tmp1_; + char* base_name; +#line 1125 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 1125 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 1126 "MediaEngine.vala" + i = 1; +#line 1127 "MediaEngine.vala" + base_path = model_project_get_audio_path (self->priv->project); +#line 1128 "MediaEngine.vala" + g_mkdir (base_path, 0777); +#line 1129 "MediaEngine.vala" + base_name = (_tmp1_ = g_build_filename (base_path, _tmp0_ = view_media_engine_generate_base (self, track->display_name), NULL), _g_free0 (_tmp0_), _tmp1_); +#line 1130 "MediaEngine.vala" + while (TRUE) { +#line 4715 "MediaEngine.c" + char* name; +#line 1131 "MediaEngine.vala" + name = g_strdup_printf ("%s_%d.wav", base_name, i); +#line 1132 "MediaEngine.vala" + if (!g_file_test (name, G_FILE_TEST_EXISTS)) { +#line 4721 "MediaEngine.c" + result = name; + _g_free0 (base_path); + _g_free0 (base_name); +#line 1133 "MediaEngine.vala" + return result; +#line 4727 "MediaEngine.c" + } +#line 1135 "MediaEngine.vala" + i = i + 1; +#line 4731 "MediaEngine.c" + _g_free0 (name); + } + _g_free0 (base_path); + _g_free0 (base_name); +} + + +#line 1139 "MediaEngine.vala" +static char* view_media_engine_generate_base (ViewMediaEngine* self, const char* name) { +#line 4741 "MediaEngine.c" + char* result = NULL; + char* base_name; +#line 1139 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 1139 "MediaEngine.vala" + g_return_val_if_fail (name != NULL, NULL); +#line 1140 "MediaEngine.vala" + base_name = g_utf8_strdown (name, -1); +#line 1141 "MediaEngine.vala" + g_strcanon (base_name, "abcdefghijklmnopqrstuvwxyz1234567890", '_'); +#line 4752 "MediaEngine.c" + result = base_name; +#line 1142 "MediaEngine.vala" + return result; +#line 4756 "MediaEngine.c" +} + + +#line 1180 "MediaEngine.vala" +static void _view_media_engine_on_track_removed_view_media_track_track_removed (ViewMediaTrack* _sender, ViewMediaTrack* track, gpointer self) { +#line 4762 "MediaEngine.c" + view_media_engine_on_track_removed (self, track); +} + + +#line 1185 "MediaEngine.vala" +static void _view_media_engine_on_error_occurred_view_media_track_error_occurred (ViewMediaTrack* _sender, const char* major_message, const char* minor_message, gpointer self) { +#line 4769 "MediaEngine.c" + view_media_engine_on_error_occurred (self, major_message, minor_message); +} + + +#line 1145 "MediaEngine.vala" +void view_media_engine_on_track_added (ViewMediaEngine* self, ModelTrack* track) { +#line 4776 "MediaEngine.c" + GError * _inner_error_; + ViewMediaTrack* media_track; +#line 1145 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1145 "MediaEngine.vala" + g_return_if_fail (MODEL_IS_TRACK (track)); +#line 4783 "MediaEngine.c" + _inner_error_ = NULL; +#line 1146 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_added"); +#line 1147 "MediaEngine.vala" + media_track = NULL; +#line 4789 "MediaEngine.c" + { +#line 1149 "MediaEngine.vala" + switch (model_track_media_type (track)) { +#line 4793 "MediaEngine.c" + case MODEL_MEDIA_TYPE_AUDIO: + { + ViewMediaTrack* _tmp0_; + ViewMediaTrack* _tmp1_; +#line 1151 "MediaEngine.vala" + _tmp0_ = view_media_engine_create_audio_track (self, track, &_inner_error_); +#line 4800 "MediaEngine.c" + if (_inner_error_ != NULL) { + goto __catch11_g_error; + } +#line 1151 "MediaEngine.vala" + media_track = (_tmp1_ = _tmp0_, _g_object_unref0 (media_track), _tmp1_); +#line 1152 "MediaEngine.vala" + break; +#line 4808 "MediaEngine.c" + } + case MODEL_MEDIA_TYPE_VIDEO: + { + ViewMediaVideoTrack* _tmp2_; + ViewMediaTrack* _tmp3_; +#line 1154 "MediaEngine.vala" + _tmp2_ = view_media_video_track_new (self, track, self->converter, &_inner_error_); +#line 4816 "MediaEngine.c" + if (_inner_error_ != NULL) { + goto __catch11_g_error; + } +#line 1154 "MediaEngine.vala" + media_track = (_tmp3_ = VIEW_MEDIA_TRACK (_tmp2_), _g_object_unref0 (media_track), _tmp3_); +#line 1155 "MediaEngine.vala" + break; +#line 4824 "MediaEngine.c" + } + } + } + goto __finally11; + __catch11_g_error: + { + GError * _error_; + _error_ = _inner_error_; + _inner_error_ = NULL; + { +#line 1158 "MediaEngine.vala" + g_signal_emit_by_name (self, "error-occurred", "An error occurred adding the track.", NULL); +#line 1159 "MediaEngine.vala" + g_warning ("MediaEngine.vala:1159: An error occurred adding the track: %s", _error_->message); +#line 4839 "MediaEngine.c" + _g_error_free0 (_error_); + _g_object_unref0 (media_track); +#line 1160 "MediaEngine.vala" + return; +#line 4844 "MediaEngine.c" + } + } + __finally11: + if (_inner_error_ != NULL) { + _g_object_unref0 (media_track); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +#line 1163 "MediaEngine.vala" + g_signal_connect_object (media_track, "track-removed", (GCallback) _view_media_engine_on_track_removed_view_media_track_track_removed, self, 0); +#line 1164 "MediaEngine.vala" + g_signal_connect_object (media_track, "error-occurred", (GCallback) _view_media_engine_on_error_occurred_view_media_track_error_occurred, self, 0); +#line 1166 "MediaEngine.vala" + gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->tracks), media_track); +#line 4860 "MediaEngine.c" + _g_object_unref0 (media_track); +} + + +#line 1169 "MediaEngine.vala" +static ViewMediaTrack* view_media_engine_create_audio_track (ViewMediaEngine* self, ModelTrack* track, GError** error) { +#line 4867 "MediaEngine.c" + ViewMediaTrack* result = NULL; + GError * _inner_error_; + ModelTrack* _tmp0_; + ModelAudioTrack* model_track; + ViewMediaAudioTrack* audio_track; +#line 1169 "MediaEngine.vala" + g_return_val_if_fail (VIEW_IS_MEDIA_ENGINE (self), NULL); +#line 1169 "MediaEngine.vala" + g_return_val_if_fail (MODEL_IS_TRACK (track), NULL); +#line 4877 "MediaEngine.c" + _inner_error_ = NULL; +#line 1170 "MediaEngine.vala" + model_track = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL)); +#line 1171 "MediaEngine.vala" + audio_track = NULL; +#line 1172 "MediaEngine.vala" + if (model_track != NULL) { +#line 4885 "MediaEngine.c" + ViewMediaAudioTrack* _tmp1_; + ViewMediaAudioTrack* _tmp2_; +#line 1173 "MediaEngine.vala" + _tmp1_ = view_media_audio_track_new (self, model_track, &_inner_error_); +#line 4890 "MediaEngine.c" + if (_inner_error_ != NULL) { + g_propagate_error (error, _inner_error_); + _g_object_unref0 (model_track); + _g_object_unref0 (audio_track); + return NULL; + } +#line 1173 "MediaEngine.vala" + audio_track = (_tmp2_ = _tmp1_, _g_object_unref0 (audio_track), _tmp2_); +#line 4899 "MediaEngine.c" + } else { +#line 1175 "MediaEngine.vala" + g_assert (FALSE); +#line 4903 "MediaEngine.c" + } + result = VIEW_MEDIA_TRACK (audio_track); + _g_object_unref0 (model_track); +#line 1177 "MediaEngine.vala" + return result; +#line 4909 "MediaEngine.c" +} + + +#line 1180 "MediaEngine.vala" +static void view_media_engine_on_track_removed (ViewMediaEngine* self, ViewMediaTrack* track) { +#line 1180 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1180 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_TRACK (track)); +#line 1181 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_removed"); +#line 1182 "MediaEngine.vala" + gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->tracks), track); +#line 4923 "MediaEngine.c" +} + + +#line 1185 "MediaEngine.vala" +static void view_media_engine_on_error_occurred (ViewMediaEngine* self, const char* major_message, const char* minor_message) { +#line 1185 "MediaEngine.vala" + g_return_if_fail (VIEW_IS_MEDIA_ENGINE (self)); +#line 1185 "MediaEngine.vala" + g_return_if_fail (major_message != NULL); +#line 1186 "MediaEngine.vala" + logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error_occurred"); +#line 1187 "MediaEngine.vala" + g_signal_emit_by_name (self, "error-occurred", major_message, minor_message); +#line 4937 "MediaEngine.c" +} + + +static void view_media_engine_class_init (ViewMediaEngineClass * klass) { + view_media_engine_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (ViewMediaEnginePrivate)); + VIEW_MEDIA_ENGINE_CLASS (klass)->do_null_state_export = view_media_engine_real_do_null_state_export; + VIEW_MEDIA_ENGINE_CLASS (klass)->pause = view_media_engine_real_pause; + G_OBJECT_CLASS (klass)->finalize = view_media_engine_finalize; + g_signal_new ("playstate_changed", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("position_changed", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); + g_signal_new ("pre_export", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); + g_signal_new ("post_export", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + g_signal_new ("callback_pulse", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("level_changed", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_DOUBLE_DOUBLE, G_TYPE_NONE, 3, GST_TYPE_OBJECT, G_TYPE_DOUBLE, G_TYPE_DOUBLE); + g_signal_new ("record_completed", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("link_for_playback", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); + g_signal_new ("link_for_export", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); + g_signal_new ("prepare_window", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_signal_new ("error_occurred", VIEW_TYPE_MEDIA_ENGINE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); +} + + +static void view_media_engine_multi_file_progress_interface_interface_init (MultiFileProgressInterfaceIface * iface) { + view_media_engine_multi_file_progress_interface_parent_iface = g_type_interface_peek_parent (iface); + iface->cancel = view_media_engine_real_cancel; + iface->complete = view_media_engine_real_complete; +} + + +static void view_media_engine_instance_init (ViewMediaEngine * self) { + self->priv = VIEW_MEDIA_ENGINE_GET_PRIVATE (self); + self->play_state = PLAY_STATE_STOPPED; +} + + +static void view_media_engine_finalize (GObject* obj) { + ViewMediaEngine * self; + self = VIEW_MEDIA_ENGINE (obj); + _gst_object_unref0 (self->pipeline); + _gst_object_unref0 (self->record_bin); + _gst_object_unref0 (self->converter); + _gst_object_unref0 (self->adder); + _g_object_unref0 (self->record_track); + _g_object_unref0 (self->record_region); + _gst_object_unref0 (self->priv->audio_in); + _gst_object_unref0 (self->priv->record_capsfilter); + _gst_object_unref0 (self->priv->wav_encoder); + _gst_object_unref0 (self->priv->record_sink); + _g_object_unref0 (self->priv->tracks); + G_OBJECT_CLASS (view_media_engine_parent_class)->finalize (obj); +} + + +GType view_media_engine_get_type (void) { + static volatile gsize view_media_engine_type_id__volatile = 0; + if (g_once_init_enter (&view_media_engine_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (ViewMediaEngineClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) view_media_engine_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ViewMediaEngine), 0, (GInstanceInitFunc) view_media_engine_instance_init, NULL }; + static const GInterfaceInfo multi_file_progress_interface_info = { (GInterfaceInitFunc) view_media_engine_multi_file_progress_interface_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType view_media_engine_type_id; + view_media_engine_type_id = g_type_register_static (G_TYPE_OBJECT, "ViewMediaEngine", &g_define_type_info, 0); + g_type_add_interface_static (view_media_engine_type_id, TYPE_MULTI_FILE_PROGRESS_INTERFACE, &multi_file_progress_interface_info); + g_once_init_leave (&view_media_engine_type_id__volatile, view_media_engine_type_id); + } + return view_media_engine_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + +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) { + typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2); + register GMarshalFunc_VOID__STRING_STRING callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2); +} + + +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) { + typedef void (*GMarshalFunc_VOID__DOUBLE_DOUBLE) (gpointer data1, double arg_1, double arg_2, gpointer data2); + register GMarshalFunc_VOID__DOUBLE_DOUBLE callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 3); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__DOUBLE_DOUBLE) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_double (param_values + 1), g_value_get_double (param_values + 2), data2); +} + + +static void g_cclosure_user_marshal_VOID__INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__INT64) (gpointer data1, gint64 arg_1, gpointer data2); + register GMarshalFunc_VOID__INT64 callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 2); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__INT64) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_int64 (param_values + 1), data2); +} + + +static void g_cclosure_user_marshal_VOID__OBJECT_DOUBLE_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { + typedef void (*GMarshalFunc_VOID__OBJECT_DOUBLE_DOUBLE) (gpointer data1, gpointer arg_1, double arg_2, double arg_3, gpointer data2); + register GMarshalFunc_VOID__OBJECT_DOUBLE_DOUBLE callback; + register GCClosure * cc; + register gpointer data1, data2; + cc = (GCClosure *) closure; + g_return_if_fail (n_param_values == 4); + if (G_CCLOSURE_SWAP_DATA (closure)) { + data1 = closure->data; + data2 = param_values->data[0].v_pointer; + } else { + data1 = param_values->data[0].v_pointer; + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__OBJECT_DOUBLE_DOUBLE) (marshal_data ? marshal_data : cc->callback); + callback (data1, g_value_get_object (param_values + 1), g_value_get_double (param_values + 2), g_value_get_double (param_values + 3), data2); +} + + + diff --git a/src/marina/marina/MediaEngine.o b/src/marina/marina/MediaEngine.o new file mode 100644 index 0000000000000000000000000000000000000000..881eb6fd61b360d810caf3d68790286ffca9e679 GIT binary patch literal 290856 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

kQJ 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 z zTv@qv*&dz$-Z1{-Hai4|eTA3XAvmEgjQqb&i<>J8+phUQdNY*Ko7b9)7%r#nX!$(m z7&p&M!>)w=#dKF@dX^j*F0KQc9qqj=Wmy@gb? ze2-jrC;A?Gm$<93-MHD>ZG)lsWH--QQfowGzMYp6fU@wwgq-f=`H{XI9#L3^$aUd? zX96;BHdAEK!bxtLCot#&%Q<2WwuN#`xCIQ%md6w3q~3?X6U9*S?0B*T>iA+;!s9WV zKF#jldEd#MlCCz8FRRAl{4qUgBh-bS7gx@UO>lT#WS}CCY9I}8VXoK`714Y5hc6m!^Vv-!rxi;@9f;)Ij8wM z_bdF{^#AkUL+5|#9glqYoICe@jXqH#W^QeR`C@YeUyU5@E^o%X7vb*jR=k{S>-Tvs z5YKnr9&pab_tWpt@5Kn`qIab@o9y=!A=vD@Cwx4BxL^D({XY5aA$;rQ=bA5?bIlES z-i+Uc_+5tI;`!%FY8PFiPnYy(Uw*FHim*L4{02Px|7C-D8sT$zzuAW0is$stZ7|Ow zypQ)g@w*$p_u|+8=mzrzgg=P)NAPz3x3YW zcZT0~8@}n`4dy(APuOqAvQk=_dm=MK(+wr{zzZ>wIwy?PeHkdc# zy@p>OzdLRC13!Xtv+3T8um@~-^8*{q^r+H**oHa!9pFETu*dNGIDSvz_t57--_m&o z-~77_^*!<18%)iHe}UmBp9}H3`?pY@wygHxIbq+Q_-pWE-*3gUW8YW*YJ<7czTb=I zgZBO7pV?p@aqoCOW#6|W{4@6b8T)knKgaJ^p*-=s5WkD?n||L0vk%V+{Nld{?gKwI z?9KMMiszF*xWV-CyaPWz@5S#v{Pz6j2J;Y}597xte~;n!^sj9&pF(*&fp`8rg(ts1 z_6OQ7@81Afu(0M2pKJJiuZ2DOA2rT%grlAE@4+9|c%OQSexGH-3Hz9Zq00T=Bd^@( z-{anXFIe7a9$(pHKE1TjH1Ylr zeqY4<4Up@bYx?{o!s5ERubtAUH8+~AtD8&)dJ`uC%%vGWM}hkoeqX?E8b7A<%$h!H zc*b?P^^QPm8bqG>R{f6i^O^rU;AFu0>`!ep4>uI!{%Q10uRqtY7$3#^JqK03@hN|C zp0+<0=rH`#KfTf113F?@xA+sk5^yqvW%irAxxahD8kKsp}AII~v_{D#5-rw8}yk7vMtE2A+?f{?oF)xqd z`APhk?$dZaiyvct0nZEGuIXNe=RW+H?jbzy>6~lM!TYUvKZzf?co&{`w9hq^@cZ%p zD1I--`{Q^%jUS!Pp23rOc?sUlw_)6P1;!`5UV!&!Uz+A6u9sWCE9B({;P0{DwYP=v z82^qx4B?cGL-sqyx$L(C4(s}c-_q{{=XX+^r=Kk1eD?QJoCoYT%XSWB$ac=MJ&E^x zJCEz@U9CWevfBJh{f>3xPrZ~?kN+-s-Ift{=;>5c86W^q?N%TJa-ka$+^Z4Lv0*vtd-)a=F^~!*IGs2&_ zLcj0d6~ga`@ISRPgtLA>^P~Emp<=fGqQ2K23ph^zXZ4r$`wmu~{i}U8;7lOw$-mL> z4sh=NoW5W5Y`}Q{;a~WB{bpNmf7`zpaG3Y!&N2JX%O>n!sOeto>N@4WBd^m#YZ-h{A60NeAgXPL_^{GNYT z`1!z#<^Hj`kVb|yZk^We3A~?wOMv0C@E6nBHyd!b0`si5>h~R%9wW0X9%=+UhUNca znxBejjso$rHH~}UOrSyeaDR8aCxlZDF0|bI2mv{r}Ue3>Hfa(y8(y%-240b zea|ODIP2`tUxjZMH-5&l_0Zo0T=H|$e#bbEzL-6&{vE>OUi%%(R`dLTa~^QM`0{hi z7dxBGQ|Fyy4!!go^Dg|J!#ibS&&%}rFv1@H_0Z?WoYTMhA;)}HUv?|V_V z56_)rK8xSOc$fa?jru$v&sbh>eP2prE56^{-(=$c``HhsIQRd6ezOm9fA>F<;;h>5 zIIYV*8gSVDzwqceW*^du>D=?H0f%{7wcnpXnit)7j(G$>^Mjg~C*QBn$H4O=fcF8r z;D^pJPvV_`%$M1SNq`|arwcqz&oYpJz_K*#GB7#we;NPbh1{>0Pf0UW` zzZ&LCJU{bxeLicSXXEk-hG+J9t$i-o=WX_R!anb|&mXeSpR&)#?ekOi`5F6s&OTrK z4x5gBUS*$?_IZ8PM=&$(xD*V0{zst_wAn)h>yD_i8_l5ZHtMQ~v{`;4{)V}B6 zjQJ9tOz&Ad&;Lhb{uiDvaTSd4)BQaM`E`F+BY!XaUMPbXWZ(rEctHkUkbxIu-~}0Y zK?Yusffr=p1sQlj240YX7i8cC8F)bkUXX$RlQQ6JQP1bO@6+qsFrN>t|C6{kyl0cx zOP_la*23S6^?Lj={I=pZir-m32){!7Ch+Uv$3NN|&B5{Uz1db=rM@lOvjbPizYy|5 zX*>@}piNp$!n72te{JV$Gt_?K}0o5JZQ`}p_f;qSO`gN4(#?E*RZM{zX%8%{Vl z{n0LXRX+aP|JA|i3%31bdH7Rr-Dv645A4~n#345Ijph{(JNWsxz`u$PA@)zxfBXv$ z{^Sz;dkXNMe({Se{R`ofb(SWI05MbH4p!# zi_fz3FL?Qj%*QUx!#{e&!JpjyB6I%LdHByf;^0r;_98PK+3=OW>5n-$eIp+DNIw4R z_nz(Q2YwP)bJL{#)A;ZB3kNql&N7F-$3b2Ge)~V1W8)u!FT+LK^Y9OS+QI3^a9N># z{urxCDnImPuuGjnMAN_URtKm5z|A-1>EHGb4o)9|Coj*#pSygMr9av~+dT26JiPf% z2j}|w+$;0&&41+JTvxxD3s?3}`8)5=9Q=X*_iS@@L4H4U&5LdNTnj&o3o%Lj+ZP=C z)8Bj!d}$rjmG3X#?ciJkUoFVzrXO|iQLK61GntQn&*vQcvG<;1o;r|+|Lf#t%inwd z1eFsFiPs{pDo$+U|Kl>Z15$4yusb4TUu&PYwEheBHt1H%6afdzwQ(uo@9r!Ihb<6q z7%j)Z*~#W_Jxs|}+(qMdcbc5Z?02faY`3E{9Gg3Oh3}7Eae8F3V9>P7@`tT*HWjy1 zt|n#tL6qG_!=k(MFR;)D0@xhi3JpNueB7w$?E+1{j^sPFo(5l*P|!GDW_S?M1^z~Nc!V#aC6(|-~PN_WsQvww;U z5qP49!XLt?AYK7kgMjE+j4Qayd(})bh^I2*h(aFQv4Zb*ho{^1L{PU%JLfq4Z5)mx@aXC zqOv#^5bj%0lx8TwEpINzVC?xAmS)SR{M2w9lHlLWMmB2dEW6)@6H8Xy3GaeRPP@9XWp5F6P17eSsEXe+&3*7^Q|`mNw*qCU2dqRV>gw;Llzz^ zM__6{c5`W5mJm+U{zEj_l9YM6gJ$0>q0tV(&;t@aSB_A_(V4jMM28gf4z%JDDi(<& zggGD0umnX)GTHEIequPLY+`k+?|sW~igLiz2P>rr$UW|<=ilS_Z8V%~?42>@lLv7! zYQxHObir4ssJBcF!3b6L{lidLS!cg~NPH;;wq+el_Dm1KW5sEsbjN9!XCx1t5B)S^ zeFU0dqgFZ5?jFP4e{xMmg(pl>c027(WzY$^`8DMCG`M;Uh+eQ^W)Gbaz7?!5oE|%r z+N)78r(wl4tx;)OoZo%!d?;b($|+DhYa1uj*Sl*t{0qnGzkE{^JZRyxAJdJ481NjF zZX6(`QGJ6x3wsE{;V=$vzRL&8xt2cs-t!zfi^>OoKPHqMAnirhKKyl<=(>++aVR2VguXl1oC&Uw&;FjwtH?cwrvIl1!uD@pZ10?Vacm z^X4vi+l8Zk(unW=1_xsnQ`k!{O6n*D{w#n=NK{+T7GSKht>2iBVH>O7_yCpBUit6| zAZi;SIJ^vb`n#>}c-kfHK14|Jc-#SD?KX(N?SODmxzM z{C&5U;jlC`J)CIHBg}ecYrPB+gC$cS3YwFuKh>jUnC`*@sg^H7-yhvqOvoKqeeya73s(+>viWxpEn(4@;LBd;XhcO- zj9|X{h7^w-RtegLV<{TbDM9-Yj~10{3EtFxN3ICOjdv%^vPY2C*e-COU0<@^4dq$iaCkdV?JFDeakp{h}TsNmivP)jI^*# z=F!MNa&zq`G4`Df$z6f*Cm8+8aP?{dz53WZit(=usaNGtQbEhCo9|vN$Ejh;*Ww); zJ#$y197V1OP%29pN%JYO7=4YKN1Ejr(t_&d&b1<##mx3qH(v$&NkpEMqs}8#*5fH2 zO{6&LIEf3Q3`TTw_-zR!h|6j>0Z{xtp9aZ2PItoq6LBR{Pu!2^!s~q;Nfg`RJ`bfo zj%X1Wmw$iyB5D;}p!%09jQPoLgc(sR&K2GY(yQR+;67TO3Kvfo?|0j$aH_<*Xh(6- zpE>uNayVcaLtcDBd7kWR&pe7GQOV<{+)BB9uz=HU)=;6n9xTV^**tVOlS1tZXyr-y zuw7M~IIkK?WwW{j%j@6dQFtJyfW%H+U24|NC$b!w-fH`V-bewXh%>@}__7>Un!Os# z7N5(b4CkNdOIy~Z=zGyWTpv$nk}I#u(dwUQJ8`j#7MER~LxI%ej@vcpdoThm*Ub}o z1gr1k29RYG z>yZt7tIYPf!u)R-8<&u<_6BaAh7<1ET{cWuB6!VL{UmO{p)rp`AJV9s_YaSQu0cjf zw<>1t@Uw~neb3d$y{0d5Jp-Xne5Kd!Qw&ey@>!RS6hXDMU-Qrc6N+%}8_T2HT2R&H zqIri@pyKe%Cp=Ed2Yc7Q_OL?ykkf}2Tp~PxkmFCKq&)uAYf%MKOlk9x;Y56q{U?}) zwdRW{xxwH!ATJvYy$#-Xt}(xG7S9Y_!3p{+s{Pn^U19pW2wKN!+U5_>4(NgsCMq|b z6F^vKYT$_cQvrHC(sJpz8;~>&xCNN$*@FkC4j-&kaX3Ej1+&r3cSJB3DE3kei1>Tu zW@d$s5f}ZDF&{!Pi$TIpqr|u>Gf8*yruoY<6qX)L5IphKoR3N<&_IpBN{fqsG4(b# zm0=91RU8xe2U0ksfNH$1nu$Wc2^AS75fGpkM|yuZMXR?^MRhJ2w+2{bg@|L8k3&Au ztj$lAqIRl-UfsM0{Xv`>*MPmad;ltP9?01@F6L^QKZ63C2fD7nnN0q+n&4O_(Zg1_ zw0Q+I-IzjL6sl~P-OzRgMVE|2Z_=I0+srIV%iw96<_KVIQQ ztQ0%*i%@fmso8a*&!cG;ftc&kZY>TZPxQ+$WN4$cLoPePq7(q3tsKX_Lu z09?EEC#@}QFfx}iw|#qA9Og7sl=-((B-T%a^xk)uQ6iF^7uD*W{;GM+cbo9`?ICEDjl}!e)GG^$f0_)KeATGx$iB* zl0vgfqEV`UJrr4ydbBb?jlB5#EK#&6$i14=L*snrKPGAB!L9cuU~S)dq^G_=K>~5x zb(3{jxp?ajBp9w!_STw;c2K7AgJpP@phN24XOS@EV&Sg4#I9F*^w2{u{m{BNRNce` zbItoKo)((zCq3U6zrPI3j_Hqo*g}#H)<^u+50rr!@yGwOh3IG-3X8@HA!crPa2*t3 z)Li@_i&89uP`9TZ8j3_to^s$kCsq%Dg}E0>^sPT`iN$i{^Ly)0l|Y%uhaDhRE_}2f z{jiOuP&W?xVQlk9%HX7XOA68IQ^EAq|K-0Vv16Q2NaH^@6p88l&d(>{xB>Wd{_K~A z;*i9*Kc0ZYV5IC~*o6t?-rq@(G#wcReKKG3iD4*ArISK6vnhdp9*RN&{Cft!jfNhv zUki=z7Y;!y9yI$6y;&AR!U|TuBAK}Ta5;k5@1b`_j(!);mZOG>cyz8DgS^eWu^bi> z@{_FNr$^O^Ec5$`7c;-~@SXlqoCR_vQsG(ge)MD6OBr%nV6O2qFE=_8?%riOxLQC# zC$E!7^ZNxDH7*eX^U|yGN$VA#7JPF7EC+7?Uxi?qTz{evOg_1oE`8pQ?aim5 zw^Y(1;J}V+70q{JJ*5Q1f(f^Mn(X>A+8B9Y!mOJUuPcMvD}>FJP7q@m#;-A z+C5zAiuKl0Y(t4m1w@Qn)P|sPn|HoGk47pKJ;^`rHm;vEe>0s&lJ)JVUo)>_i%gOe zl&IS>=dqn7C?Xx=q}HiIky>U8N)RB!XkT*q`m~?8JGplP@=v9ZoP2x$-AYPZuPD}5 z=4SWiZJ3#*Xma=D;*I%W7NOOR{0+_K8*a*@sULu|*?hhL_XQ16(FS?kFQhp7F{5@# z#{4E`iMd9hQ#@aFX7H9gGZsVBx%sVmFj#Qqprzuwwrer7OiM+T|6eMEi`mYaL(Bty z;lyPn<^VT$oAKp5;aK|2KNrA>46BYyDSj(vl_`VB3`IOvb8F^jFr`ebjy`s8ROPPC(33Cr=>( zUyNB?ngGG@v{D0&*7;eO$fZaSW0;`PP0~6cNZQT(!XS^yywG`*cgJJw>^D{h?EzM~ zAlv4h$JfOsO7%n@B~&HmgU=PfD=?g(WtrcATSdw&MKc-<914W1yzZIsc&$Dwbn2in(rDe%2;WcZva~t|^c?ju7s+JCD!{OXo*0 z|4d^mkoEn(_vB%*WBhkxTAIcT>ezSQ<6x?ra|DGUJY0(8OikB*_qvE|h%yKK&HLBI zqnh_hC}Al-Q-^WK?$ku(058|9%#Y!M%Bz8-H=MZZc&dZ`YP*Y;hrcd<8x8klJ&kqh zw?Wk@n6$#2rVD+f2o7cNHT%opY)|+@4IowS^txgUTZo`4iMfT{9vbIT zHF8eB6&g|=$X?Pa4AujwX6C?K9xrhABR3SGPKn2e0%o|a?0Tei&Nc9e^L`A-?Xi&m zQ(!a)3rT#m2y`ht`y!^mjcM~R9~_$j6{>+^p$`Q92XqlOs--sfwW#mY9Hs%G=n|bJ|wLGavP1^pugM=qJ? zVyF**L8r#ikKR2mfps?kB1g!JFn$LB&6`rR-;Y5%1Z&uZ7^p*-Xt14A=KV=1z0#c9 zquKtpI070s^B2IsmVj;FtdXhb-+_)NO>WRPUrGYe%JtHtLR)_deODTpNpmDJcf*hx zfiOaHUkaTng}djHK=4#km3Nb;ok(l)+kD54hLVRtA8Iq5ZqWtQ zVEAM6HFtgEIuYD>`|}BstkcAG5W1BAnIKkd9r^0{g>NcLOu+2Sz2DWptdEBUDXRW- z{?MU2X2w^aOsY-06iL08yfpk|DH8c|s=Q6|uZJRP#aYMhOS3Z0NRNuGA9zh=D4yu6 z5UykJGNrbv>~W2&-^<$Uc84cBr7$5<$2jzyp}+Xrk@b;ig_<}G zj;0QmBPd?*_PfKQm+}|d%4>GGv`Z1$3Eu2cm`I`B`Mg$kI#Q*0u0MV8x$IB5IsYU^ z_fw%i4SSn@EEgE;^5ze6Ah~MKygc-{LdA^+I<(fzdvov;-3CV7Y9CD)?o)93|BldO z34u^Rw|~9Ql|X!Ud6Kg>{KyU!D)pICFc?!W2wnNAneVx%j7n^lOB^&W_FY>(QM;w; zV?eNmnHYlvEymk?w-zHXTi5_*Hlc4B5})8-@m)_GIh0mt)-jw_-}8+thA`PAgG-kU zD-X;5wk^XD$lu?;%0X3mBYkKzUe|f|&cX)I?vsMKq4khwPW5R#}&_ZNNh)ok3>hC{-?11a|CG zDQI^a@B)Ev#&?IdX;Eb3j%a!^wXb%&STFC4rmRLY@i*=&1(AZ8*j)+>y4p8iks?^H zGTUpK(LE`cZA*PrNP- zl(|L=212;zYUFwiYTS#*O3>`?0^U(7sOASS`HzcSCoV9#;Wz>!(Qxw;ze1ozA~^8k zL~;b5J(-da{?QJ}l6ezM2r>Q0qI31ZG7v@V9asWLib~qarw`{sr8Is6^W-=I+NXXV zw*4f&Z#}oo=O8)ZybaUqm>Q)+Mq6n&R6qWCF~vZ4$gLsNh&;Ki4>fpil z5~pB(D2E`M^b(8@yeuWbaX3M^@_dI72aDKZFBHSflO83qXvNs(_*V@jLL;F3Y(L{q5V=y(H}5P5hBol?_7c zVi5m*NaImh*{Upwtk&x^jD$w%pibQu$%W10_}wvu`Z{dj)UBI2j2+ub>D!F zi?ex|u249ox3)^fO%4iaL7p)({yaihqu6Hw%qk+vLiiSF=YEz>dggBtvV;Rvj^UI9 z33vnwx1(HT@nS}*hiyASCU^{I;7rJxcN%pGjMv%{vguKNeg?LwGIVLJB8D;Q$ z0CTA;qXG7hfYs2yReEsGh2BHE3o;8~{2X*~fi&w!;n>$k6=SDLfWP=s3y1o+T83~L zv~(d*jQcw1=epD)Cl8q)#5c-*NE&pvdSW$sGz9ef~af?iuddHK_tavV&TByv^^`i?sWBJt+bjSj-smJe(3qgE(fkJ# zR(k3@uyg8;8SiB8yayX|j=C!{Z}J>eS06;zKB4sL&PjZuB;#!m;ssK^?hKw)U&6%R zJ7$6vG3MRaSvE#s!XD2OuiDRLXm<5IDOdnkmZljk(SQ5)I%(pFe*OE5oY-UF$ca6N z3?4ar$iRt%dW<;9=!j(a$xM7`W)Y=eJ8==eB*uR~qbX5j!i_~ zjtA@Gla-UG&RQ1_vB&eo?hhzlV|_fBHs(_c3(Zg!kEM+n;>$M8^vPc`9SeaM#3OBE zA+ZQ}DW*g|gJ1AlGsrMriw_~*X%n7Vn!CdI^8`ABu@Q+^G{!z}I?QWKJAsa?c~ck7 zR$u%wmd2~CMnudj8@-(SHJ%s~sb5=7iq|qm=Nw>fylye-v3h?SPir*pptGxCifb>p z9j>Gri{nEC4+^Mh%ZW@|F*N9TGxos#Ldayqe{WvRV9#Mf?SK6RYga^g&8o`s)^H~l zIU&9wqxiVY_zP)Q#`j?qmx?8^iRTGby*<9;qL}r{e|1y>q@8n-0U~2(-0;fNx;+=x}9^txiBBy4a1moxU-pa9=Uo34^ zd~2oAbS#$Gwebc?Yz7h&dn^W=gTSiG{wvSIP~M1aWFmt8cV>3OQE`qF958N+zcZAo z6JaOtP=t%nsgoPKXFT@=1kn?dnem!N{}X3B zvA4&yoH-y?%!y1ai~nx7IUw_mJdIpOrnJlyJweFoE*|3CP!gu(Ws@!J1j zL&u#u$Eb~uL4RE+o58r{{{<60&Pa-nTz@U?xQ@q}$qM82|CNc~j8n6i6~;UNgBR+e zQhnmX;a{r}ySjV%UVL2nT9~$cyZ@U> z8GiWx=23R<86T35EAZIRe@C2U`MkOD39O!Q1meRq)0W_y0qO{Id}m@wll0i+my;4F zK5!qOlc@*)YihikJQE*(8x4HN$ueFD#_Xw?H~=2c^J;tuJ~j{@&vQzA0B$rO9?x_w z)?vEwj!VJd7@J3(jiuOM^RR2*8BaZ~HR81{i4XU&L$V&{u_ElkSP?N6b!`l7a*StQ ze55?CAZl?zJTWG~V~T6>aC|^Kj)U2MjwjL#u{MwAEsYP6$F-ZsX;j9C$EIx-OYc?@ zt6$UhilrZnryti=F^2i^Ve@zek%6~_C&q`&;~A#%8*Sh*{_|g1)S~Xv_@LTYf*O?6 zSKh|PN65zM$J(d9d#sL)(`nsDS5cE97`Seb3ON z8skU&H$EzK(Fv)Zx9~qTSYcNdgB8DDo`Sa_1}vwxR`nsHxYqC2G@&1}#bvNnqYNyQ z|9*uZVT%<1EO9;naW00f9}ufH&chE8;3p3F&u96$zhqK{X0O3949jZPBaL}%ens69 z34iB*KL5KIAMh1C{Q7RY31ss%%Z4oTC8Q>FVn%ZWRyPS{XEHIte?GQF&3;Lsbh%Vf znpHrmxt2Wjiv1Vt*d}bd1Bw2h0R|Jcy#m<&1uN%-Yb&9iFJ#znW9K&ECMNho2}UzF zVMhW|5_l0k;W~oNudsk$-ma`7eULNw1)KB49dnaByo$=0X{b~4K~%i*uIRHx4^W&30T%;V3B>&f74o$ZJD?nD?*956{%!9E>LpLDUt674JL)0b#0*%s)oNtbFY z-Toa~C9T((YyZO!>@tmI+Xq}*(a~JwYO6V05b^;Wpgg>PgeguL)8(>0eVJqmbN=j`~Qfdb#&@}_r-@zWR=quTl zQ#}@Rd0_z3WD*+1CqKp0lJDYeP=XA@ZpktNI|n5vXa@{=Fy=hG@y@~yA_(? zu3Hc01LgsRCc1tExs1onqY6!SPeFw;o-j?-;nUp@;fonhd6HfC8#r;sArEciW?umG zu=$3{o9%vo4bW#y0o8n=ppm%&Zk@4GWFy(R3~&$#E91UFsT-^u#b~&DY4OWF)N+4E zSI)T7s#B>6?h-gn#wKgDLKEF(%)8mrQ774b`esz_YHPJhO?NH$YsNM&)pcLlgw!3@ zEh;q|?wADIWq!f(cKR|<$IL%yy^6+V+xC76Dlrcgp)qK5{oadB2wSr>Bx>xD>amXNuKzT5nJ)Gc!{duj8lQRU1f zWN-d2^o`7=*APsGu`*BJPjC#uWeZVW^GnfTGMArAu$tLc{DTaM@ZQWb{!MTOglC?q zjML&S6c_=nMrDC;;9fEts5}h;Qpmp})h9==hsc4TB*-?iU`U%5Q(5r z13zCS409id?pBI4pMp;Ao^t^D4+4z1dt7*$-3I1xpJt=5uSOpghWo5`8Oz?b9cf3Y z0eY_e9Q?_BPItyc`%X~Z=QWmW_dW#dC7mzbo`m4&zN|6Vo{u=?zH+yU2HEzy&cI%! z?cn+LYp8(xH;v_^S(ZR*3)-R+bo1sWt(k1{dqb`F)Pn540AOP4JxgQixBfn+K83gb zk$D-zS#ay0bioL051@{%_pYLZ-2i*F-Wz4ORL+D}}j&_wssJwOMFSqe>dXRyFQVwXbG-FGekI@m*9HwW>f^>AUqjJ{B| zd&U5uqePZMgD(4i>jsZG-%WtIT8|TXDixzPzn$HBUpGkhpARsh^*$ErE<6bGY{8bK z^4;JBtxr`wN)Ijb!IUc2;hCl$G^Oqr%mRa#;=h2kNwHDyMr^w4X|@Ly!xJ$E^gW7u zi#S~%P01w+VYF(%B5$hrgB-_7CW24KTE6edv*PV&jn&o!S;|uk2&&7C<)k)MUw2%7%)#xnxD#?A_f52C=O2rt3_H%P7szzL)L=AOa z#DuKgf^&0UsKL!8+Q&o3xrIdgdgvs#Bhh{yI?XL3+Ful@a%Z{E_7q0eNuJJg-B;1t zS%buQRqjF~coV`{*1i4!{3bE$A)3MNin&+T9&HiKq$zH%Hi%`&0a z=6ZnXatMDbK#RFkYy&+m<}R^EiAgrhAhj750-BVowD}Z_^4T&F{Qm?Pk=yv~lK`&G$^IGb=01ctmUFY{fFXc2Tmfg# zxlQaW$qMsNX|VTTIt>cuAH47 zTH~IJ{+hE(tV8X5p}M>&xFei%pWs59U12C(Bj*9J4p#Jq`neS#=R7FdphmvXP`4E2 z=R7P%sB#xmpaSMCHk0`I@djn z;GA>7tIy4}qV~nK zr+FbLxet^hlm7yMk=zIF2W->Kxd%OWw7bD@xrcQNC)$a`o{`GN$!bW?^@j9xdl}Tt zJsKOD?-(MC+~+6|Ba#~KbD!6Z5wvGQx!jjH7GrURMrVr#tS*ph{)EDVk!PsWj{uW{ zkpK*9=b^oVm&L|n>J+?O>!ha=!7DgSa4JFB!A)8=de0)XQeN@7Fo}5qIPz*25_|x5 z$?HWXGXb*lzNkha{$>Do<$bXnS(LBk9rLxbk)C&}&=rrkHu_!O9fGPc&hi9P-kly= z>F$T(d3SkeoqG@S-tD3N+`BMx41qzpCpjcMDoE?;+0<=eq6D@_7$?sSDjnuxH*QLYrxc`vpRF-aZdq?oMRh zM?G|wY zbns(Z_sjEuCw&AEox2#kZG(AFihDr}F|6es)G*s9?77 z)o;hBKEu2gUA}GGPeJit12Da9+iKLxzG%KM+Mc8*jC!KkcCg+pvFvg*YTIFH@E>}| z^VDg?8U!4~R^=;gM`>S4Mh^;MJ&KPAIgUoO#RDoczFQ528fOTHtMn} zCQ5tC({Plmy_D zgJE0%mNWpIW0+BJ6r4#j=350VRPEg1D7~Pi7xLk`$py{DpHQ=a-LD`~90VLR3|QrO<_c!w0GFm7qY2S# zkj@!rz?uQQ0@hf_gS!I8a5IMEqwERqGh`I9g`CNTmsbMDw(l)yft+!(z>}Yxb5M;_ z?ha-J0LAcLx2&eLKeU{$@GXLa=g)mdKS)S)HOrfg?%}h7ijc4VIQJ4r)l&iVfO`F;Udls z%+PJZP6kl8n6)xPcL~+a3QvCl>YAZlLiMx4Xg6Zc63XiOG?J4R14I;M%>vd( z%s&^(hr^$M;GYBV({Oko>X^>&oQC_5gVmk`XAk$+#UBuM7&Q!^#9(TMjtKi>SRp)6 zqc3W0!b8Th!9s6nZNkH}Hg7?jUhvg$yD>;k>Io3qut4)sGXqo;0s}?X_%DP42zu`R!9dUVpVgLVx_eb8pcnY{>dH0D4(KT3M$T)7*78pV*bq4{4GpOkvzsc` z%)d+(o#=jZ7m7~sG)ZbgT=-AGIS$trKQTU(C2iJsa)_qj)a zw(_5+QuE!0RX~&c>l7MsAIt|D@L#DcP~?s-0h;XZmCd>oyHB8BMpFEABVVY}-G;6d zN%hbgcifdg)BJqXff=b=jj$6*_fq@0d(ifg48IQGFlQAA`-4ou-s z0yrzO=5dm`B6VC(D1Q(zcgd#j0idA6IBUcN|u45$XS@LI=9nw+EWz z|3jfe-G7le*WX4p#7K89)?AUGzeJ%8?%kCrD9=O3xm#IKTTk*NHbB z8aJ}(D7F0nU@)?&6iVwx%rl#KS6j2KGG?N?>tkdJnc9Dn-Oo^`NWRHIn%-5BiXsX; z)ODvkiPS>#Y&8pj+gxJ;zo{0bBy9&M%$bcahSjikF!YPw{!ww2R63z;3aHGRi$P-Q|hd zNQK!+F}v=j&ZtMFS*Flz_de>~)vI*SFb5L9&z7jiNvaN3`Sl$8?e@B zR8x&cn{}Q>s*o{WA<1f>jx?B=DmC5xeFaoF+0<_8y4=)@jP+E2DW78hcx4?`I0#Uf z^QhBXS5t+#023o`y&6|xis?=0U2d*LrkeMFgPSXyi$tcGeN>s)UR#frioE?Ugc=~a-mp7Nsj_{fjkqJWU8I8 zc)YT#)moAciGC{<5>>b+a|VKYeIJmL09a(^V-gbC@B5wF7zJ-lhgr$JR;1sa_0WSzx91j8(gIvI3hzMBhV5y=3{AqlEa+#tJ1d=M) zsT4h}N+(Xke*ufVCt%U@@h$|)1g!Q7UVhSlzu{$)s$HTo2|YAm*+D+rL0-VxrzrHURBu(6jbS^DC^%fjeHoBkwRy{7 zR&gQiUcjk>BdyN&3wU+rY3Q423n2hphZPqG;A31M|67qc5Nk3At29bLngwdA;Ha$A zC=TSHB6IvzWKb#qW2%i@0qZsO{1i`f6^vqM%|N369DvDo)@6Wg`nFv{_dx$q6I?sG zET0(mUlLKioqaX)v;>%FXFtF^4Bd7)hXUj=%x;Jjwmd+t8i2{R{E=MOX9&DJr}mW0 z8KhmUqorjt^w>2t2D^;84|TC4J{0Tck6TQ#BOL&1-RkIzaou{Hg#_$FW5tCL%5GQA zJS6~U+3kigkJ7C-XO2p@1;}i-A4e`uc`ds=D`(%&TKCtXj&@?T0u}{??_dae-zRwF z=r*i#`R{HdMBYMvBoOXEB6hw2w(A4;_l*&1083n}9!qbG**5H-YiKEcA5 zV4 zA{!4+jkd2QHP@YSb@F1vOFZL z!IqhLSm&DopA(OG0xyOyi^DoW2|uFY{*?5zC*0^Z0xCa>mKT2W0AJY$tRt{QyS22J zZ7K&94?%VhbwRJC_kRf7Xy=t1YI zM1r}nGq1>W{s@n{1`z6h0rU!3>TTG&r4K+VfHD9jIRNV02UGBLRh>(*0btx{s?P#23_wX3Ky*9uG4HF)Q3eXP8tdx- z+(@2*0E`}s@Ei&u=K4Mx06vJ6&TE*0;%0&Fz)~fzq42s@Eb2o*pHU1yq>=zzfo&@i zI*{!)&`NgWVMJ>d3S%VxP9c3NNX0Qq$pT>YXW)^A>?P-u-6*D>AK|b55b$0~F37c8 zsM%n_W?Q*L7*mjt(mvL7gV}VKg4CVC+#LK%5I;o+R7Zm+1v_zcE3&?bKLgox?-~rU zQB3+i{Pk76Y%qJ-)5zOT^|Zn4X>S45y>0OQ$Zu#TJzG2Jr*zW(+Y!~w0cw<`dVBEa zN6t}k6$enoVvw{>4=SCC${<-hq_P<1lvga5S~&>YDN5|kLRmzn9Zpr{P0jCx&0yH@DQ)=EpW-qaz+y3(SzpM;;b zW2)*>pF_R}Yc&U{OkMyK41irtR9&1Yx(-7W5EqK7b`YpW5@e)pjjHMsD1%O*oJWd^ zpAEVQ)t^olRIg|qj3UNrSVgl_bWN(RL@FcLSxOb%Bvq?-VzFxGOUQJ6y6SaZ^nvsh*H`ac^lfOdk-}2h~4Rk zeZi+4u{#}cI#BJ1-L)eQT94K?(EZIG*FsX~>xd4b*A7(cQM!6*Qr z_fKFbL+1M7!1AGX$pirPr{d8->~sJ|G5JU0uVgJzuM^#-TP&L`RyznjXwDF9qipN| zoQ}LtvYk|Tp1}^p^{5WdGw7tx0M+3+MTO^2ffw&W_P6k-+rw31nYPp}*4oEo8E}l9 z=m}0mCQj}RNn0pP@rDMSUbX-C) zCE$ZC#*i6c;^=rCknR*=7ITiiKQ6twmabf`g>Zvt)XPT>Tw;ip9#Yr45_Mtm0dcr`@HP?(!8-?JmWQ;?`_!@?Og1kJ5*C3hHhk;P9Z>H`HHEB6kw( z2@*OJC*ecIHmqmN20_-Z@i!T1FLVaG>PZdkNtb}6qi_S4^{71gO@$L2DizisIJdZ+}xc#iTF6pSFUM6==~!R$HJ=WT`2}5N(CI zw8Aj433C%Oq}qV>GR_jlNyv6mF)H&M)H6fW>U5B__l4+v3{Bmq%tZ_dwL@*V^Dtb^ z6+WOL#F*lJE48S;Dl&Y*dE$#;s#dN1Z|#S}L={~~m(6nX@%JUTE@atiCZY;!-Lgqx z6+n&JU(vw+lLWI=;%^j)`lns`C1((OF2$ZJI-1?#+(wO zjb7&X_mo;8(LOaeY~KNyFGKAHafNgQI*Y?Yfa(R(9xxrnUu=Q&o0n-WIQssZ%umy( zqani>&RsEaNH34pVtF)NEsu`q)zK=hj%vqYkQ4g^%Y6%fvytx*L=91kqkRo92$M;M@jxl~R9w!a z_^u#zH^6LWRso#?v|6?BRg}_KIsDc1|BI2LyTdka(cMnQU#b0eqS0a$F$;e;LA;I@ znQZi8(nsP?H&!Ma{xGuYhR>v}-UO-}KC@A*>!KTLx9;Wr(Y~H5vmOWVXQJhdGAMt{ zcRPX9$ae=4J?6WoGQ&{uAg2}M1Vwy}MZyiB{+(i2X>%O=|8pRfs@38rYKHP2@R8F~ zQPrPCKC+A)2ZHeX2>1RJrnv(7b)Cnt&UFSt%<$EynmLa36=QU5$Fa7F$+6mw^W41V zT!apY+65`4%HCh8KFbdv8BwM*;O_`hIcfT}(WGglw$VpwJhcu+o9@7ZqPDZ+l zDCRgul(Rwds>vvEIpwP(YwQ^6U`0C|j0UWTYyd^L9Bt_T*F?K!X22wny?atQJlQ9tyK5J{MQjw_rv_x_aw-d+Ws2`5aj(Z|BV9y8ZBz@?25mZ zeEh$;A2tGf>VBC2o>Kwp`(gfjZUn6EhxzYSAn%9y?>koV{l`k)eXL}54OOytKg{k# zeaw`TQPehS3iAhv*zxeRaukSBpSl{HA%D4qrrTGP3+FVIaMiuZ_PA--AR^WfBX z(3%zg2w2^9X;#z$;Ru;r-a%{DF%=0sjjisWHH-L==vQ~pnnlQ{?w~cRENPslYb;Md zy{8FStd7ZXCZX^GT99|png<6_l)8h~Jjf$Y>JD1-{0c2f-9c+!z;;0K>JD1-LaiFl z(Ov|u)}oD|XueU^w()MJDL>LT)A#~2b~BB90qa)vd`3O%@yzgUrtu0=X6$B~0~d3= zn`sB2GL7inOw*MMI!8!O6cd$#IOEQnX)UVR3)RiE78{gf@n%|!%PB5k(f?GZ7z|Xo zW=P``Vt6j%Bm^j?#W7+UvaSGgj?7#%t zj<>;D7HN#OI~#O$8!WN#C4k;-Fkb#@Rrmo2`tnz+!j>3ol;BoP1h?wI1o}k4dL8Tm zi;a|R1**BN`Tza$7q7`B9%hq(xzz4MO~6g zm`mQrjv|lFz$hSJnGG@WuEDUKJQ;5lEO~NoXeM{|gHH0no_yDnoChB_%rY<~Ra4o3 zMVqL5ZOMhT5UKCAB^UB|n7Y@N++H_~q3*RM#~Y3J+LDX3v$4?*!P4F}wv5ei)szL| z0VtQjYiuct#nq6PsjjgBIY{A{L>Z|I&IL#_eK{4_%4LY^jOQ7=#+I@~yogkNjV*)M z*iudxA5f0E#s-9w0*7)^E)t#~Bje&~;LAiy_+jQnfD?dJ0MU%s#uyzQc1YRbp_Y-s z>u)Kz{>FUj`Wq1bM7P81Zz&tazc_4$P$OP{OTqOwGOFuuK$1aoc>OKqVRH!-0;9w0 zZz=msu5;1!4zItZJZf@Pgep4g)`R(g*$fL9G`_>@Zz+$PX$nntc>OKq3A49yqIBm& z%nehX@+7+sufL@n^3XO8ufL@nHgi?pY=_t1Ql2p___ zDfMOtlo7B>@Jto;c&4cbYYQ^{C8MYkjDvKhBVoV|3dTV|u&2|4sbU#(@_|g;zzSG% zfTW6zq^pOQcr^&=n&UixdSIXx6c_T{tf(}^o1`ki>|JRJB?KmRoPhO6oRy}~#hk#( zO^Rj-sf*a9)a|;|#SA;@c3tWcva8#5sY^KqtJ`&{ryHd5c3tYS%Tb=XU6;E2MuNOu zm%2idfw${Y&*)5$mPkEQ8LdT26m%i})WE^pb!nFz0s8;%c3s+5id47j()PRqP~Wag z+r!sp>ULe)(`+n;5FW%ydse%WjGy(q7W}^zFK| zmo=tu*QLF}V8|oA~gYE{b^PI2q81@+hz;wYLEzdAd9R#$2 z(<^iRGJsQ_L`uMV8qZYmCZ1~Iltu_-S{AQ=RU&m%^hSL}^*ENKr(0QU986BYpKWC< z9e^D2H54f1n?=xB-ZzlL76R%4>=lan!| zSTYskaf0lP0XA9g$0kBhU!lz0b1wMx70S##djTsS&HO&*qipxgAE`R6$t#qZKWXp6 zu>1hrEOYNcN>EoQGxwgJg!sxUl$lk6!456t@Cs#SH{s239A2T!>?vvxS2?Uipm%0J z@h@cLu)-^pnFGZW3Qcx+g)(!HXrY+X9Ud3U9PFX4!z+}T!^H%Zn(eTqGDnG}3Jp5E zLYdj%G3PtHLYX;EoT*YVy&MEz%Y2yCH~AUU%tu%cb+IyY-xdhg7b`ROQ5A<5D>G*c zc4AhE7b`PQRlyWyL5m#$Q>yq7&ouR5JL+a;7BH|`0@hcGjkRgSrlYQAOGZ+v$c`}} z>{47garXW+C6_3KU4oQ=MP3~GiRI87L|LfvzIw$$tLQ>Kji!O1djG`$RPVP9^NgXW zY|Um+l2!l|W+h^PGw47P8clS(`+yJMH#E3oR3ucgreresJO5Bcn$(v?{=X04**Qg z?tLm?7q{mQ>SYOT6&l%3Y1p#&WAx8Hq_G4$a1XG<8pFw^gEN2*U5fkx>r6b8o&-Ud zuVLuQJ_WJGFvr7nvnOp~Y2yGUW>0zxu>JBRL{YIm?8*P6yln)tCs$!Etj;*ez6=VGXV+sKlmk31?fR9%kSBePX(&z? z+iUwFZSXe=OSi8^FqcF1(1auR{CSV;sl6f5p93&4d+JI`=S7{I(g_?gApIi@Q#oZZ z`^;MotczzK!}MW%%${~3B?y4Q>}kBIrS!{vET&%&V{Go@G5vNx+uSEKmTYfs59~>e zrQ2Ih0p_)fYhTq1*r5ug2M!wZNAt3$f5);m0xZj({$RRSRGkyb-bLZJ!Qoq)v0~3t_OlQL*Y3RR9~K z-7#q2I|o>UPRqBaoDS?{jYaHDOjEAy3l-V7GR<4f7u#KW#ofiS|Uthm_&14#B91)hzuHhZoD zFM>kZ^L_$@e;vS~+4J^edafKUR2;L?PV6j%O7%KE(SEiYuriG$+YgKZ*7Zk>C^!ji z7xo2K)eM&7eD_wSRr6>KzW_99F|clWzFTBR`va?;tnwAxyCwsx3oFjD+#7ZQt0$)= za&eWzUUU)&y>!+ZyCd8q)LVaMQEy^>^P27 zM|s6O123dxeL4Q~$vy}=t8mM04E{@yKg_~^$ugXS|AO-6PWW#Xfa@R~05U&>UJnTQ zC!#DumRyh2KObB5p5HL%qH@_+4s#fFFF_>4L0EJW^PiAcQ0T*C(fJjLcPO>GsXgvS5_PT)TD@urUYJ=$LJ9 zss+~Y8pLxQGXtDn1mHJup639%g`Ktmc9$-mZWNB+hnjLQn}@4tg%h|s#&q1BH+i{HI8kHx0>Ma( z35A_+p@b0tiwZlJAe(BV!fCNK;ySi)re1+2+7$xWtl>&}vV9a@TR3~U!qV;U+d|x_ zy8T>xAVP29Tpd-i?V-fx9afw{yK@xS0-cs`ml9j}oJxzpo`uzvFE^l@pf%9ALM9+w z`s9WnOl6qgbp?MNRRwQPmM(vsOWxc2kas4W3YRNq^#E7j@tSJ@?IAxeBNq=32{`~y zpM1WAE!0f)p0h@?g>FMvvE_Mi*=Bf|I1@5PoQJ#tiwzR63h*@V7=)9uo!=d$ zaA!9Q^IZ;Z;g;f;LK++M>dD|r6xwGo->m`K%KKgi<_;s^TH)dlGWv%D%nuh|6c>`( zR7hG=A?Yz8PU1Gm$Pk=Rae1}31<*_}Dnc~d;jfd09ihz}#7i0UuW-pGmiPz2#Bj+A z@e;F}mMEK+m=i0}FngjGgrjd#NIg45I2yvvrLKFZsgV4pLJDF+oSPBW!-XOUe^x8? zuP{`EOFKc1|4V>%;nL6JGCMStS=3Z!$GFVdIEoVPBy`_SY`Yu{Bs@oNy8?#x5Z9q6 zhD*dL%1A-2OH}ASmhbd#pell{hx;?mzAB()LXRs&&WCWua2HQhvGXB9UmUH(`id=H z_8-<`1;Dy++5MP1XxmgZtw(j!dek(nN4LiHsBK)2?oI1a*R&oz;`R6qjvcP|P_G_6 zo7SUO(|W{E)ME`ga=6QW=&o)~)`h#wMSsxs=-;#+1De+3q^9*4*ti~p8rNfRydKIK zhIpC=ol$Inp@PS3G0N)(80IM+(G4)Xsp2sdihqp$8ZKW3W&Ixk%nz3rVXmPSAJbIv zhNg<2+*I+gF~zlioZ_jM>@XsS$9ZVF!`BYs@m?2moioM)ogj3u%yte1!8}o5MuEBn zogF6uorIHcMB9d{>VZyHqAbx242JnP1h8;L1$6em3NSHTaZX(SWli;8-cy$CuOHFiCS3A|SP%^vP zoLFnJtIhS0pl+>s9*V|ecbOk=JPsb=1!A9S=}M=~Wk_8pc#7H=s&V#J13gXX(WFi{ z!y?b_y$th(LL_&cjH>vb2bdl1`bxZ7=QOR>s;1Ri9jg`SK;We>VHq84miifM-Vd3`ybi-A>^I|q#*R=49nihU>tZ?TRa0=^)WXy%#}6Zt{#d!{xbmv!_|L_mw08<5;rz2aZ|iR?6eu-&G8cZj)TZ89-8c2 zOntU`Xu8(tDo-ER*)$BPSBuq3TP*gf5g@}g?@^yBfWdGL4=`%4+R;>>>ze9weO#X- z24vje$xL+8FntQ&DEh0ooa`uVZ)&Q~&2fFMn*ruqJQVu8z^Kt}A$0IR4=_F4?MPgo zdz$LAv#CD2;`*p2xYv`Js3XsPUgW`K>An6aqV^RQ@h-qfxV9=3tMWrli`dh&h`sS5 zveBu-567Ee;&7mkh#v%fAlcz=cKCppsVtC=Fw9DJ?~PLY=K*xX-5-gU_xasSi?^Xy`zUB7GgLE*I&XS765d^_20#dc&%v>uQx5?jd&3bChXzA zd(kM-;ZLiC-}KOAr{83t|M2pn;aZ;zyw@KnCD{eoFWjqHAx0xLKm0DV)#ZN@uMk$Eko=oq&nlQUf0_~gU9bz}+icT61f4Vgnq`3h6!eq)vc7-~ z9~%@iXBs`*3NPXGSVm#7b7av{q{zK!Hz9|ifOQFT2zj~njlMdtA*-vQ8|>A zr**{+o9qh7x$<_D9+VID!sdYd63f-La!nm}4`d;tWxip)k0Qg{TA{wE_amI`$^+PV z!AIZPv&O5j>cBc>DU=C6=0_^Hp5VMkF6}|Cp2{wNK!{KNeGKekm?qQ@AMT)eU*=FL zQ;=fFeF&aHKHizUyHKDh&xYMBxdD+1YxMh3negAo=zQ;U#Fe!@nQu9oRLD74f1nK1 z)s&ObGL{^p^IZvn;ZHBq`MzNvmc!6Xg?wQsb0nd~EjeQfTjhc7wDq9Aw8%%Zx$A&U zG{%pg59{o|v46@-@i62$%PHhqEZTfV#s{!y*bp{S3azlIMgVzpJ^4ytNFl4xP~iI> znuVK*j^GPe+*=G-oZ#aNb*+(*9^NM|LsG#MBmAhCY5`hog!gOOTv%A_V9_n+;Xz1k zOE))K@YoTfqr&;J=SK&c@51UZRB!-v|4x93p#pA6*+rNLg(jW~V{_}ZfY`K+3bX7# z`vIG|TVV-CiwjT=H?EXiVYJ{fkh@AToU1Z!Pa(kwd_3R2ZUCIv2~;85-wW80VzInlmmMlCB1|#WQ&D zPpOy-Dz~2l)>8o(h~HU^RJ@PW*mo8`LxoIZCazeu`-$W~XQ1uOy8a-vZw`k~>JCt3 zTkVU2=matdKQiPr_=`{WRetn4`jjpITtIIc3BPP1??-B)oIH{}`ek@Yvit^pGgbD3 zr>4vD-t4)P5kp+LWdeKa)##7e@_b0nk?Y_sLHSD`_R0?c=gW5EPe7z|&r) zp{yb~9X+U%+!@8uX?Y#!QMq*>Hmqdb5WJg{43T z&6v|aVaSQV4jS?XIQ$_)E-1w@c0+y)$A89@I=M7mk9Tyu6Ij|7F&}qok zh{>-Sax1F-nj!yz;Qt1;Jc@DZ!jNy(;F5|V??8rk5IMRS#(Ve@+HCyBtReS6^hbt# z9RcwZLw*ZWe`?4U=q;b&LxY12;|oJpb~B7Gp%P60wIOeTiN7`EwW#s;=znOS{}}QE zxa?1cJR2eK7Zijz_8ShQq38W!$oo$>xMlbt%yq7i7OcER$c2!3fsh}ddH23o|FZ=b@* zHUKS+=(!Z;&Fj8NmC<47FU+?ShBst6niM-pXds{L1?!peI~dQB9~P*555VC&jCoGy zJ1q)fav~Hl|1~6m~6|LuE z5b((r7?Vsn_cZ2vcog!Jm#&I&SIg3c%8Xc)l9w8g>?8_UU%XUIDz zG3{T2s9*@jF=bn5gVSv9quw1>C^5)$sVHTh!)QW7Ho!hYPKM!p@~IxkV`Q8U9Xnhh zQosc6Tf|IqUx${)yEoOWl~BhgJA-1%dUQSPh8l42qMAkE^#6&HgGDv30Jizj%c7HF zdzp!qU>cDzH4MAW-^f`uf`*S#a(NN9l+Hb)riiS->N!VAz#|I&~ zsP-L}wFZyGqFNV8_6n3+G(+bx?71Kn&GdF_b7!0cY!=h3WE`l${@*TmRZ;g4xcoZ- zrWbV|3)tl(u4or^=MZxb+Pdgo9yj3zd2h5}(S7>FFTYYqyWqSbi9$W+!;p4n|RCy>@47By}NGV>{rJtcYvY! z8uYl1n|J`V`FR94bKGctFO1)D3m5y%FGRQKxRt|W^9u-GMWZ!u2?y$UwK^Qug5WlI zAAXl)D8TLN7}#b~ui=EC`5eTTj@Po9&0j{59e1!Q&A&wV=y)CVX>S^_rrfZVw_0?_{uz`D-GTL3GwckV*-vh;TmHak~% zo0;~8(|}cK%(Zz|rE^z}1?`tG3F};?v50-=Vqn!8E4FJV1FO+kCCZm9|K|}H^~!Gp znD-OFuYJYkJ5g7qKyj?wxHD!N#X}mpP@6<|3Xq{1>1R)wi2TEdnV~hpu1AT*!!>$9 z;N`G1Y4m%a{U4NDJX)i>OnVjfbBi1JLdgt$VcMAp zOT{N^^e5B46QQ+u?56=$u4O-o3KXk1pZKz%Wq*|oRK5Ddmj!Y54mB^HI7=zH!Lrja z)D%zB=uMWLI|}Gzjqb7R5)8$~Q#5+ivhS(`I#r|ZS@s49DW0a$?=5>c0&DSfjjr|E zy0Z*Rs>SUi(6D12GaZ$ANdFP^2*-G2MsN}#7MS6c1y+e4-RolmznLr4AU z6?gGMjlSqt@2ZPWD}OjFZydm0qPXjgnD!`-D5;GF zQm(N}>UAVZw9kSfB|Tq;NSklJ*lKG+ZbDX^rVu08dMHH_*{cTw9igiPKVuC` zMrm}PFLx-WiY4lu8r}w*p#vBUF9E5z>K;@x>0*Gwd;w!zaqq`K@IMc*rnomXQQv%x z?um8FzHs*FV~7Q+*4)O99vrH$RC@=pqZ&(7aX0#^wpO}bg64_7y-^v#wWlrs_WmTy zZuyFP6GnpQ#~T%vZ}SaO^mF|JsZ0%J(XXyn`6`VT>upf&q(fkFu?jE{DM^A704Ocmb5c>o&NvCEIkugxoMYPJ-F0 zZUIjVR)h^2E14O;J%(pnrCZv==VX7xQ$zkFDRJ$olz7=}IHBAPyI67x#&EyU;OnI{8%O}GC@?QuG zQm#PFbL74AxxD`YJvS)-0W0LmRykZqJdbiivKXoPG99y=0=Wa_7Rq-q`3uY6F$6_q zr{!4j$oF92_Ob}2bdVu5XOZlKI(C#7qZXayAJDC{e6csYO!l7%!^#^_->5tb@=N8w zkz9Tl(4>o8eHs@b4})GIKR%sHkt-mrtGpLZT_wLou4?%%YF#6Dqh8(QWRy}X9oV_M ztU${hKm)*~AIFE~(MhmUc^yINNkbOEE?BTwsKirvX${L@-Lic=u8JD+n!#%MG5}S3 z+K?API#w}HVD9-WR^(_SEM{Z{E^Qie6*R?~=JG|j+K%;3P%Uk26#kMS|5l(@IQ!wl zuV8YC7QjMhLY-m!&5&!*W?1j+fB{}NWHLhE8*q#*Xxq|n=t+fEX*02aK9oIzK2$rE zKJ+UD<72jM=|eYzV#%#w@ylmXb6XBZt2D#)0yJi6vgm@8jH{5jw41mPaOPIP`9S^v z;&4`2xD>`WuGRXH}GecgFaD?gkkfm^!sdb>6E-VqKS*wg1z;rvE?sE2pmxgU`8(^_?cpQt2CgPIru@(No1u3g7B;%1#D8PaIJA zcAsc9&ix4b(QV=; zg&*`eo7sDIh=&z^#OLHp0)B&dN#RF*PDk?JB)(Aii$3QL`sZz;RUhi}s?T|h_PE3I z=Qn&#o9V!JiEb+WEuWLm`aUGoEsoH8KBtuU9uNP>=hPG5>*1eb{`VFg?3#Pvwn_g0 zD9na_AYA(x2>vkuH%71Rj5c@qUGMVB^FU!_Y8Dhmd6k~k^|N=O5z4DIHqbs?0IWu1 zL+#JuK;_*uHq!nb#g}*2^SB1P|7>7&8XISyk4Z>*558*jg(lgrle7L4g-x^hrPK1B zdNw%A=3#>JUSFuRx%PM6f%QQ#$hRdhHgei((x+E-J48n9p@TZZ`ht`~_v!s%6 zI|kTtyN8m!HOcA@$k&t(fkVFXApf&xT?@0$v}zt_toJuhR3Zl~T@JVSK;Em! z9Je%?N`d^MB6GOXWG-z${-+{y)Y9b5Xa$h}P-G5Xn#@ffkTXC?Rb!YYd-qt1KyIU6 zv~oCWlA~uli6fa#;wCGEO^7FPP}51A<05HAJn8m$5+NkhK_LtLP+9EU_627S`Ush5JD2)?gp%` zafStP20}>UD_{IBM4VwmoPiLMMhE#kGtO{toPiLM_@Wp-5NCKf&OiuBuP6zR#u>hg zGY|p;Un2*scj64`h%VX=gpkDd$pP!nI762>10f{wr8ho=3q;#tbew?@lK2)nVD*SI zEQ>P`LK0s`;{(V*QpL6LLWm5YsaCrQ938gY3ku|<{~{+4X}U7bwa8A^1F1Eu_R$j*Ba;B}&+{6S3S)sm&6KNn8W#Kq6Y8x;eeLjtxgefA^- zg^Ix%{n}^OfnG7>U6qP$&lMwqjxaE%Fhf82>`z&XQJVQTpWVI((9xMHb(LvPm=Q;xH6UQx7l7_e8Dn-W}vrLG4u{D6c3AE1=m`8*;j&hpT|~F&NsY4;!!^ zv1~TrHfoK{>NF`S8-!GR!l^M?-+XL*nX*E0v9`xDYc6$J-5Wo~Bi)=Z1{)_O>jC=5 z1MF8>@(^JAZ*Ymqa@LFf^Yc!87_L(LPcOqP>W0MV6X4710Ps3d8GVPD?p+OfH~Jqk z8Rlf9m6!aBY?A;U5#=S@Feg)N<;z$MWoN@#%Fi$du%WIq?fUsZSLP`6Cez-J^;`L> zVujvj+Hb<4%U5gkF4Nu)Ez8&TRjJq)Z_5eNMLKo2ZshVyb-V4+jab2h+9O zPt|)ByH!VJtpnCwc%}+gG>ti9f#h4jI?}PyI>{T4n}d)lSRX}(jC@65g*Br$rk8_| zZFQ~MivQ&r*!mp#Z8<)%CA(lkb(VC{dsoWl^YCd#d8EcL&X9M5vO?b2*)W#Nz1S98 zCNr=wKV4pcsxCFm9dOaEBL_j6|5~)>bzLWZ4p{BEcAdsLvEkN@1=CDA1y|m7JM^Kh zvowldA^I^%7+vRRbUWs56AG~@SMnc<91pNxRY`x$D^;ATDv!mfw`PHrMlY%s^pQm$tbzHyAFkzg*W6r zj3sGxohD!w-jKU@3J6{}#VoubcVT-Fyh~P?g*W65Tn2&{PB9B_$bA-_q1p?lZ9p*0 zTfkBiErgQ(n*r{siGDu_HF^_z)^w-o*aQpb0PCT(9%nBFb4|U*CfNhV1M9{2roPZL zdnU#8*2}C}_F1q|O&<#Mh34Atp?)=e`SuUX4*N9psT#HX;naS`Okjhx%;om?aQvE~ z8e3_vECn`BVN5sIdL}A#hnZ%17+`+Lc!$2qN z)Z0YvG8mv{s@GinQLEfH>p_|3wU?qKph;`I1&vgcn@547Ry3B#R+P#~ps00>C9)J{ zA^KB|TFO|WjiQWT0lb6G0R@C71&6PCD_lxS8GRU zEYS{)JvB&PUrE;8m}?0tO*+P%9^M# zudGQL^U9j+m1T3`TRVkz=bkLacT_N7or|Y=`^k8T5IsmOZUZ>5do&R*ZdAPKUKtxT z8E?8*$KuVAEx>A~pha>M|X8YQ*A@wHsy!tK6NDy#Q6CFX;NLua=`AC1(#v1JI=>B!pJf7pjX$F(O zrqZMRc`WM}x>1kzcTs(wXy_4tkICOP>QVP75|kS~!#qU~0Zn=uAl!&~@Pn9mnthhy zJI&Eo0s4CboKznT4}-wDbs(R~u|p}}8Q59BVFv&fP`lyv>za)qHqibjIWM_PDcE3_ zzyS4^@pO+;w|@@MF8>c_XC5C#l|1n7>6syfkPMJ85ePvp0|W?=Nw|cNAtX!!ggaa& zM8t52C{d%L;=v^%prUw!0t%jZqk^EK0-~U@E($7&2QDJ0tgz_H?_2d|LhJ9p&F9mT zs(MxR>UytV-(At@D+2W9hX#rEui07U=gGA^v|G+%=7Id2GU2)n(3_t#OSrzh9dg0> zF|NsdKy$Abu8RP@`MLKBSH@b%k#LObl<4ZdMz~I@uI^ieOKLcOh?zy{@n$B+{2n`n z>n1>Nevfa3tM4etBc4z{;gXws^Lri_u3rEX@_U{~lm9XCc+9hg%U}E`*w~j9^ZH9j zcfQVWdIQR4vAI`Q8hx7p6Y_ga5e?(BAXh}KF&<1b9(euo2K9VBt)m*=6B~M0i-w(Q zLvJz9U%eXg#ZM(^1dWEOzi5~ulbLAXn1iJkw_moC-#__n=FPuEa+$VXYC7#0PTOgZ zVUj0p?uEFW_Et+ml6FHHeWuBKzWr%a;Hi@~rv+DHEN2?B`B!b`w@yO-oGR*|t|s(G zshql+wVNc(bu~3NOD^m7pp5fxk%ZONAkUSo)YVANlhD_d%TxLDCBAicPlR`Y1j=%{ zGZ?~MXVHf*7qBecb?AubIm>Wv?3|^i2Bse79Ac5b=Vf5E=PZ}7(g;T%s4h*H_p5}@ zE&)cQH=Ix^`f84U!qFot_V^>xhfanNT>`MjACVryw{Ua`aE=g0 zacVqVVD=`QnH!P*iRc($2tgsVXF!Fc=Q0~ZATtt2CvF-Cf?1Wg=&J)bzJJyRU|rSp z4+#h3Mb|O?bB#7#$DC?|RChzrb-C%>KD0kaJ#wEK|Zpj2RF;uqg6N1_nekP@)Tw z0nr6tsefxeZP5kaFkQ|Jh@CY~?_5mV*?g3xKTf0uoXtmB`k*ohXY)~(-Wq2IxR+%0 z7>)znOR`t8A-I-g{<%0*V{%HK=c`k8%Im47KCqa@#8)BQ&;0t*{#roWmoQPSUF)#)FQ zfs*KepoDAEA7&~li4F)#xF$W9$dyD-?o+}w=^u*0(Ubcu#cR?hP>&@MQ}qnYn)Km0 z5Q+_ffmxGY&uFIJshC(C}d zWLP$#)%(KMFin=|+b(pSJeH}yL|=Cy>txG`r%+3}bb>pvE+D&INs9B28N3p_lRS~@ z+Y7jKP^SuDzo!f2ZjxNh=suJU?lMid{s}mKaF=<)B?l3MbD{?kJO;^V8PaK)a5VzV z9@42lYZ_e*4Cx)aqh~@tn4(u^0{%p1o*~gIGs*skFl`q0oHfWC6T5ko_djYZ)<7%D@1#&$%3E5Xh;#uoX{rG$s} zF<41@ZWWlB$UIay`=S~M(H#o~U7B7q48qxotTa7A2xlj<()68S2qps_>bEp~Q#S}_ zcPyp;wUpG*qH0SV9ER;bi|t1lyTitA#9rTzfHQ}UmDjAP?ZYZ!)58`{3)6<(wg>aQ25WMMl_7v_o z4>Nv;XWxN0zEyyM;n}Z=XOiaOJ>3UE!~5)_L6^gOnQe#XyaSr}F(7FcnI!Lgex1pU z$ZeBD(s&V|op^@ov7JpxkTXw1_Pque7?IhA?t-%H9&u&u9XB#R@O=|M$3)uGf)wyh zS#T!K2eh3>>O&aP4}$Muz~m7_rq`-@!ajz2$}*^Gp0pEG4RzTs7Et{&r?Dpci91|oP7@K@saJtyR?ZEiIw)Ip8%(AJ%`4$ zhv>ygdn|$VxaD*b>$4=D&U`4NUc431HxDpl)Qfd+LeD0Q+7_$(^9kIj*o(yc34-n1 zsOb;rQTM3mdpwi97vqhO!@bRYYs8>};)FPra5sW*f&d zf_}zb+2gjDCa=OfNWGLj5kq3WgDVZJU%EdK;qLirlX4BEG#a2A^LD_Rq!4XTlR9a5~l~-llih&qpdT86~wdb zHQR)#I{0HU=%y%I6D$|m%~5oAaM%#g*R>-#n-^T2PsdyArV|MfU!)KAqn^sP+E?ST zEKFMV%O7Z!y<;E3dUJ99TZ!&Z{{&C`29Uvh3%uvGD0|EHp`^9UM`ha#e6c8d+pY(l zyi2^}#Y5>#Z=7|Y3PIn}*d<2gZj^@@@?%=|hT?k=FnLVNCBS;u-I!wcqa0%fn@2&s z{v47zW~iK5<2cs;0l646TyBSEZq-^D6MeB+fDtsd{X?ir>qV4Vdc8wd$7V_gj(q2C z?By>=zjBG7#n{X1R7U$9dwZ;3smif;xT|vPa?vOK-pe#Lc183iM(ua({ntU`PC$HJ z4;Lroq^G6S&bV`$qusXzuyouxa(u00a@?%w%;*1{Ty?Jt!-KUmXy=DYs_fK_P-=;v&~59?mtQN$6aTz-ufxjadTc$xjeOS+>Pg|^<44U zO4!CVc>zljw*cBsAAZL-eOt^tA24rx)4~fe^Epf&|9c}+Co3bFEXMyCn=JNX%J?(# zp*gu#RPK-&@3HG^f2qNNRK$44UX4ji5G`k2exWs@F&sMc&3&h@P|zdbiU4WSX?odeNIF?G>5x(jF$zacS~xgg{y^%DzR~6?C_i2ZS+j zj-8f;bHt=SLH@uu}e`<%G6ZyBa@0%_Mb;9rZh5|qwC!oy@Qulu@$dYXfbBccd3 z5Fw;S+44V-Cf})_gWM51)i;HGPmgm%ax_K)c+v(lGXe0jF#sO+>k7yCYbA{ByyN55 zyWlW-A73vz&ssrw=h(>Y z(b+8y_eQ>DcfBa;-pC#HVT9Gak?$Gzxc!4gf%6;YPsk0!>H9a})(N={CsTb3yW7@; zO5u>|+k+VsE|%e_2Uc=6c0$!wjM57b?Mc{#Df6&hFF;&ExF$>!-}M4Sm~>B=ZkV|M zQ5QQW%#bs|dI4gYFkfm=EXbidX1pNEGR6w74lwA#+a5~6THi9z=mYc3e_ELxma`;0Xg3^mpq zz?%Nl>ILndpgB=qwvRQ^p|hEkmxta2^lbucRvv0{adaJ9ev>b{aL@&4`OUu7my2Bq zLHRIJ`7OSImkG*iWCnxI_07`O1Zy(^K^2rYZ>(N2^ zFrS<-sx^MN?;f?b$V7ESG^!=RA6KJer0>7lNoi1?>MbATdr+B21b==KUq(k`UKV^& zQcxB}#|LMYfR6FW0}Gy36_#_M*fV1tHY8R8+Rn=65H5WMg6|=~~#%lj(UDJeg^-0HRw-KG$EKKt;eD$MQ9k z2$OGj{ntS2`>xj3*1@tlpozX4 z6wL^})EYF&H&RPKGdQXXXux*@3uW>6ruf<*T4CLT_cMo+5kDU<{CIiNmKh}O4sd}pp{Xs2W{>6A~iUxCuN18^M3w;)FHSX9yq9^*Kp{CE`g@=Y8W-6`YP z2ba&bPm1(d-~b3`Afhgu{;LbWJLel0_(qC^>w3F0tckY*+bOU6pv<@XL20}hI2B}3 zttLlbxL!L`c)j6hFm(R)d1Ldh)}-G%#00}iX)2Yp(7s3dX##AgJR%`~+FmdHJPe!% zGVPL>#drO+pXJ^mTI>nI&l@1dcS2NgAehcEN%=kAb~5HM4qmD`jRH_*?c>IMDb~-~h<#T5m@F)tgb?bB#Av${jM*ylp=NYvMAQ zYf>Iahw`cYhG@DUI2EMcj96SQ{;Q@c?|IR6i|WNkk;d0)hU+C1Ov4QoHCR!X{9{Hr}tG&NU?JFxF4 z|HGaon%V<516f(CY0+Ob-R2z_)3m80a(~)Sh^E(o?UXqIC}-@=Lb(ChPIMg2S5gZ zm{I=CUjzHC_hL0O!AcpMh+K|mm}nXUY$w*eK=e%$V!^VIgn= z$jh}oJn#Fe#JD`*uLc$V)u1BZB4dzQOAU^ZHp`H2H#qC+*)%4NlrN_D0?``L?%DxX<;z zEZptEt+Y>>?(DP+2#Y6e1e30lwi|hG+V51Ca<|t>DeV}$ZXWTJ@TCPX*^~Aq_B&~* z%AG-l`O@OpC;QWKID+6MUGyK9wvQu%x@j--8=rQZ{_3Tz1txF5AyD334Iy6YmrPN- z4}k%Njk9!+r!~D&`rAybJ+#S`z^&T)`>g)TVm!$!dsQ-`6d6U_`LDm%u`o{ZCMrBr zf2DM}w5yr1^>>Q?%E;hmc!d}1?@IlBmR~2GbXK%_hYIvH2TZ7F^%bz5^{Y5Px{$D( z`*PrF^P_Ox3pk>pP2X8Du6+6E3KN+B!u~K7+(JI&&b})I8(^>^|9rs;4OZgs#JH{~ zGFU11XrgQ4brF7jC-^Cuc-^d+_K7#guBOPkd*ZxXXka;SIg6NvC*E*9XyUDa6tKu7 zdBra0X>6=)bw8l*DZo{gtquX}m9WZ7V)s3Y!pa$guY{k8%rE=Z%1cKm%Aw+a2Gct8 z9}=Qga^GXcQ1I42q2}Cj!0mQr>-cJP%Du9c)pFY`A+VeuM668;ExyBmGb`KNeueZr z8gk88luMva4*|QnLNTv@;p23C&1A*m{Ic?|yw)uI6a2rRw{o`Jd?$~ZcB3FFubZx% z$^M0+<$Ag9BvJqML2JM z9$lVR+5RD7{w;EsfxJV$Fa$Q&V7>hp_5hnFH(YQo-T!ZFs+@1I{{G_gz!n&+$lnn6 zD;FB9#D4|rrpj9lR_ebr6Ks*eM)*5Ya+SB;N>t_g@vq~+78|R_`zNsYuDtytXr5LT z{9xw8OcDk3iC%y(~JDpjjRCa${2%P|J zr^Q4FMXw1V9nf}eZ3bc3E+H%gw4GGI%JHA`>kIM|s2uO7GgCp!Ut=6d9<_q*zFw{1 z6!l2PS>=QVpuQ1+BPu6kii}pseKM-FLN1dKUyw^nqTI`8JNvpqs45b|KLM#^DJ(v2 zM!$UAOec<&3d>;{FOVve--~C+Z<_u}H|_6WF=Y1+*z(QUW^8K$mh~hJ9rU})y#oUC zUfv|{N9bz5S@x_s0b4jHvF(QY034b6q4%7Cz^9?XFOGK{z+CGYZRK|n-OAU1swu#4Reo9(=S-Wx9+9cD{yz?g)k>({7Gl@#R%CV+Q4 z0iIn2$85Hc4T;;ZpNvXf3!0nCLe1_UkW;l`v{>C|Q2%znfb{5dma?+$uAjpW2R=C{ zlrcr0fyX%v+=Ld%>eNoW_4^QkKZztG@0NtU%4 zyr+IdyL~`DYh;helI+?Y0-`BPBb}*{CI~VucCi~3GApF|Yze<~JBe*SYDP-e@7K{r z>Du2grl6@&(96Df_*qdAt6@6_w)UT()6Pw@g|LsUKg4@Q-*FD%X%P5QXc+M{1FVO9 z-`zgu(J!M4{|UCmw7)MhYVRGQI6(o#^)^uPtodISBd$a_ZHvPOi`f`3$Mu zNJNJvNo&BwVPzGGMgtRwt24l|eYWUb#kK~yM?|+emF<%gf4iYs9h
Gi@$P6Z+G@}dmXsj3;cx3poF#qh4#wNm;Chq7eAhBtNNeN|C4e~(CsO< z9dsE=;m6884EiHm$Ptvk_HPbB^}f2c*td;sJbn7EjfHq$U3o@gJ~T?bZ#ArwlXR#H z>m(AqmZk?`*P&h`W>zH?ft#Ve9j*gxv7w%Tgh)+>BlpK#xTht_;MgM_bPu+LaB-3u z>MLr8`jn(k4$4s9&QR}OuLnF+llCj+M;ZL>|2z*;VUjJ1|KR!JpHTJ>I_ReZxiCov z@;NE!*PF2NcO(XwsPV0&5rrsSGg;pS?v$9PqI5D*}@fA zY+G}nb{0;ZQadFH{Dg3_5=L{6{v}jEBcD#G!atL32krAkMqV66qpZ14Kr>UzIog}4 z(k4l=2hUn5A#JL#)gx&X8k3Ah(YB7QVPnR5t;QtPcs?|vF~Oy=epJiR%h6KLXb}wu z*~TH!=(?C)^;FBeS}kW1C1%Dh%V=r8Z9H0RpDogxZf9u1{i0})DAOPkyP=s$#rDZG za8z)eR197($PJ1sXjp@w8DX}s4G|1)fS7wDrH7_`riXTL4k$0L7F-IZ5WH`B`Q?I3 zoT8J{z=K4~=hVmuY@asHSSZ%*VY?QYr0cQZT@)fGXISLu%5C8*g1ao-rMU4(X3#Ie ztwOs91&6%0eLdQMX9*s)Obic$7m4== zqDt(go`GrLqi6_kM0U%TkpntvX^SWW%7OyRK zWpKLSQ`%pc6YG16Mn%3ko2!xOmN+CZbz3qTxJUYux=<;x*vZ$hFO5(8#g_H^Zy55Hvjnd|IJ6wmEVecLk>{){&MbO*HY zAY`AjL96B;olRyWE4|r{!uZpiSk-LNs*xwPO_glXFSd68XMvD07139{wuogcx2-;q zZ@e+a`l=>%iinCoFiOGQ0bVc@e`dmHlJu%ck}MKTq+iu|ZGh7x=~a!_2jC`Vueyi8 z^TwH7>WrTWRV)%~db4?&Q4L~|j^$U?nU2shvzh#(7Uc=9L*P|)ZaBDAII9eXX^h>n zn_^>knmW|!0@f$AtO`+)?PxSkOmmOjY3cyRlI&@&WKWA4o>wSxW0_#>L-qICz$`;7 z`x}K#j-LBMbM%e6wXM<^BQBNP&3+LRottBBP4mj#gv-PYd8b;`wl%eGO;fjC2G5sR ztRl|#H=b_a0vCVEk3BNy1r#Ts_*3kPbmB*z4vF*x_#D6rZ$u{a8@%B?KoN(AcI;RrOm`Fym>TP?Q5-PRbRiMk#g>CbUFXJXEYmB8>Jy=vp^~XJRSjMwp`H{KvNN1+ z7lVgO@jg@|P!&-Bxj^=a$TI%TM<(?nAF_acntV8OPch$8LdO9Bb=#tgXwj zwl2rox*h9zP-9oBjy0WRx)7&Ut+1{8Fd%6jj>xWszGYYQHZiBTis_&U&fQ9P#ag3?&zlFc2}UD# zFdDgn(a05yM$us8-Hlw|i!8gjsx_l2%LHe(24~Y1#vBREr2B2_cdQ-0AQqfP8l1K* zV!>&o!RY~BBoQ2sP=AE%kf&Q)@NoA!INcSf1eQU40CvGLXh0Om5o|A820erpLAAma zbpVG0hHHQ#6+krzN2UYZ4G^jU(7(c)!q{4m(0zco30*x6o!Jl7)BTXCp?@dH5;t!% zj3#XL++nNd3R^u_*y_1!=;tp8z0X;pVLHxUMY@&{_2%5?3s_dQkg({^w4UyDzJzA> zI>wS;1lOHuJq=snT*4-?t&S?OJ3HMj0WY4&k3BLh_s4~<1`cl*=vILa0!8itYK3%U zH9!tP=otY0YyaL=SZ1;Cz^XM5a@mmPe~D$G>b1=9OQwr`MWeJd8|q+)3aCABdYK>iBHo=4B8aBdRa8Rt$J=Y~Tt&Yf~Qcgp45DVKAn+|K=K zBLAa0clsjJg*fJ2XuRb$7z;{pN$3+Bh$@+asiJ|fOxO#mY+<1N5?e#9>bqn?SI$4`wf%IO= zb`Hbi4zWPJKCWK(hi1G!u3nFpA=ExD(@2WcB(|wgcZsBWeO$d>{x`{WBH3eq7|Fek zo|X~GnUC1kYqVUyB-YPf_53@LK4zGu&D&PmQ#eN0>+ImPO-pcdvaZC;&w}r_$?2d3 zdB4XL!Eazvum@}V9fIpo?hwT{fEOGlh;wfzvU+$tUK_%x%w4(D*_YXs39^#-08V&| zAipoXaxxwx#G7!1@ZRWCf=nkr!fUdySF>;i++<;IGz&Q!ar!u08cw-&WlO^WHn+YE z2EJS00Pw%*6J1#kGid&M++hRxfK>l@2rtm`#oouL)%!_am#n0i=mLUtUY z$=!MlSs9!rXzMj-)4)y8*1Jdea%22-HU8$l#sca66q|h1r&=sf=bJ9Xu)IfY>m52yyfbFp zgKFH*wZ=WD#(6uizZ4JFMTP8-?c%=Ryr{N&JbT1a;BYBWWCBnS_Q(`~_5h(P0OYUm zpyYHp&Rs@##<}Ijxe5rzx#e!>mb;u=?s9Iq+qoZ%bKBIpx2jDS;@CHA!!h7Ut#ixO zx$B{s$S+stmVp;Z1WKYp_Aa})892^WiE|x+!*j&Bo2K86Y$aK%HyRlb)C1 z+~B)n&Mh;}oe#k{x6JL_GM979T+S_XJNKe-Zl5~$948K>3vsOaF;2i^z)qB#F|kaY ztH=J$IJZolYYtu{5jY+dvNzZR{{t?s)d;T;_u^3z-XQJ;frdbjv;wFE2z3Tf_dYD9 z@5Q*+ae2(W#m2p65R7|^-R>=RxwqKm-eR|V-x&9PRQL8yGF^ykC)gHYz+)&k?k!gL zUV>)aTdeNw056gl%!vxwZ`;NDz{%Zqaqb7;@Ii6zH=qNsM?B~}1`tXFQ0JWX^t=$~ z;_r?*x6nBEpIYY@x}96-a&Do^xrJ`$b{pq-?2LgB$~9exW7X@p)ZLMfO3|BfZlO9C zhGv{wsLqW7FOmpY2#63Lt1NyI9Oq7nbMF9$1NHFfW1uOpN4^A@4G=m4pw2ztg`Vf) z-1oK4%{9(_0>NZ%uG_h}F6ZXDoSW-*Zl`fBS)IGAwdq1^Ji)dW118=Rb8fCWw+EVW zZmv3a2)sxlFefTxzib!Z0giJSxD;9q9L^KxHURwwdt?(p-A=S^2avz^AITzitYb^B z3EVH!mDWSjvmW@3RX-;{D=0(JM>H6J$Ev^KnGnrfKURId7EUwQk5#{K2RGB{Shw#R zjPI?*_l~Q@f=aV2v`4Lo)la2%Z7zLf*87s>U0wl=ru#~FxGP=Zu5^XF(%t26Ul16d z(_OmkamDDfU5e8i*iJ4>x}z)1~y0g zY6@N?(Mv_)8a6xEDgHM&DOn&XvFRYZPN0SYZ3T*?1NA^K(g9#JKqwbL|Jnx%Om@V; zU2Jn`?r|?h=uUjB*2NRhV%d`8&ey@M!v9tvIgFy+3cJ}=4AY2q+S^=PB%)^V>(rAw zGP3jxnpfexXAm-x9_EhpFju69xgtHx9qA`baz|)kr(JH$5aZ)`xZ*>MyZAl~*5eFg z(I4V~%c`WTm_x%f${oRr#Os47`Q{0t`bT`X;o!xE{BShAPr_IZoCjxQ8bAd=I5mM- z&ISu-0Yw%9%@Ky>0Cxg}9tP0A!piQLnM1T@+#icpj;TLAowhPwPN!v+7Sr9T__s=d zx26L>954J?dvVf!Bwj8%l*nGeekH!7H;0k-j`+O);H-&cjysY$u1My%B5CRfPg;p$ zJ!p9%UQcRjdY&|}9w#8nUC8T}!!1@Fj*Vo_?UQQ8R2M5$0a`9yGy zQjzLE0dAr+(0CY^NM2B4JZx$_Yyr`D*i=1im>u)5se0H3+<4g3Jt>tLi`R+8g@-Dz zxQfw!80}_mtWp#69;@xH$~{`ET%)zhHCn5pUF5wja_Y+{Jt{SRjMm+jmG{qDt=Fkm zGxBc!g3$V$O*&5&%F+#!BzV>fwlx?xu3Sj~b)KwpzA`1+73fR1F@k0*l-Tv=a8nVu0-cp?d*nog=MJ0{<+;jY_l%-^j(96arLt zRV+X$8lX-GnrqA1okv#u*_}rh18W6$)tu&?!VZ(a6n8*VTmemS1vJH-v&&7+_Gy6P zW*UrGt4#L(3gfI2s zSoj*4`lX%pzW5A`4#GI>dR>RPY zbM@7^L*PXc0Sf^UvhT8sSApZ)OmXg6;P3)*?scHwV2|tss7tAbJ^_%w!V1pbIDVY_ zi0;hH;5W{_0l{R>?{?1ba?bB^&hK`vopG+WI`^BL*rW@wap}t}xG|t;b<8=xIyV8D zan7&K%>>Vv2&}?>`v$xCI$)_;aqM>B@E&pOexRFSjXVZ$H$dol0CnstnO{zOxUq6g z%(2rRxkh4^gQq=bNAy>9&yMJ?70!Dd`;7CaJ#EkzJ#}*0bM`vQY0uf~C`KDglM^C$ z;u~x|uD3Iqeaz1W)}_cVb+u!iGJaLMnH*c2kdAq1^zX{rp6}=jS#^Ordav7J-IWh?*5ZPl}o~06Rr!1AzV&272MhuVkSM zXEsfF{i<2WYXQMT_*Zv?e|1IpS6768)qF+w#$gkyTQpW}%S{&&r%A8c)~{Ib7|PAW z@T*6zR5kAri_NbZn=at_63`7eV9&FQ4*(OE?c&){;P655>@-k+SR;P)jRpuc1dzYN z8?L0+&u}dJ(U@bOneys%x3*}ObqPDCt~_dx*8oQ2@Mms^KXWI!3wxWDT)4w^9aTf|JceCClSl%If>>9Xy0!L?jI(~ukh zFOs-bN0r#udb+&0I#O9R5=6&FTyap^SQ6KsOEL;W_IRbPH4Uv-o^?TChz`)t( zNtiQ}Ez%e~hX(m8+&=issH(G#?f@jb?FO>D;VaO6tm^%jW1~kfzHVHw-qgE)<6- zY~?+RlpK9rtVWt_JZuW`1<3~AjGV##>b@byMajp;*KKPczCXH-nCmgcPA$u7XeI|c zH3##-^CfXJiK%_RUHmIBp>74L#h0*%b%=VxR?vjIX2gmf1_UWO@`E@2I2f`%6WMS1|Wq#;rOPz(?n3ZQ=- zw{c+T+~6_y!0$(WpBlmCfY6-4m=~w8MtZ)&oMunxhtyn;E%C_S%3cel2iM19Fjp(! z322$UMse+HuBzJsZf%Qq?tm~$W zvEH-$oU!g33r?Ep;IK{y*LO5sNQm>^u&wK`XEVypbTHN{)4@7uru4?@O%|_#7fCMi zqC$4Hr}!su%5M*W3Y`HC9|npfpy~tIBdGvC0)$!v$X{>UCv`E^V@tQUy~$IX=d+r6 zBG%PZ&2R~{%qiCr!Kt2QNKFOLeRv{Wm1(vf5xnL?@G*+N2X3-C)?`y&jx!CVCRkHV zHd7&*Y);i|eu0$9=2Xq*&)_DTQ{B6g8xLx3ymiP;Z~L1Gn18Lu7SprdV$I!$Q)IQ~ zU#sR9Kr6_ix1VZFxYn3ZRBOVuYQlwZ8WXNn6Rrd|CS2<_VV*IenV8UizU<9HUR!$K z&bAVn8=s5?Fr<~TQ!J>UvzauQAcV|qDK)hggtTf7*IE$L%K5$4f{?p<`Wg$e)q=~~ z8VjWN18lAPTGne~fgYHJ^d`O`&`kA&w0bJRt@cYg7)g;j&UOXVe~Y9}c_F=_W!2v# zpBKsA_ERkpo#?Seto7SmVS>EjsaPiyHSqrxQLUSaS~pGe$oOrUYoaFX1~iz2P1JwVL_JHmfpv|!zPPYicdXGBp#I92+=US~Cl4Ey&WE zd7##UEO*U(Xe^j57W7EY$AT3ez0pA|Xu+4~-$t&{GsHokKUv|C)62)9nbXTFJo16A z&dBA;BE;SmCu{RTg6rw!_cd)df?MrN(~W6$fQobl=Dl$te@=ujq zB$F+X5vd}!2J|^!B();5v?6;$b4v~Z=Lw`M&qH*$$CmpqM0CMU9wDV^@P-)sa82!E zXvSnuobbK`UeJP=)`!ugdbmk-_u4=Y*HnKAr>VB#n(AM`O{#}SQ(aJs$oc5W%?%Nw zI&pI2e$)Q4s}@~yhlrh^y-fc#US$`kV!#guL)+dO` zc~91wdc=LGcf@t5cf@t5cf@_D7c||i(@LBi?c?J%d?A&&J|?L=W{ogJ$A= zL=W|j3XeqfuBedR&@*s6xK)6oOK~((1=d`!jbNdx!NPllJ`bo1^vE3m{Q*J`0q9@h z=Q0`X!1J%@-*~>mcrG{E*zFSJMw=`RVS9~&iAV<%k=GG2$=l(M$PQOTcDN$4BN~ys zJtC*8{$6@NjaeQxJg6zzrZGy(Hik)j=Ir8L7VN(Bxmb*LXpB}sGcnqsF?s^LNCH_J z72*S1#iPL4J0F%vR06*aQ)C8!d>J%y4Zt@5IdSySjID}3B5y(UkR;COq!6w}py52A z$O@no8X{`|G5|sw0Q9f$qE1+x&T9Rg=VPHv*V^xMmC$8icY12M^2o>DWGR@gYqvgE z$DmG2rfd5{B)d~khE}>q4!S$(d~V>pZm2gwPuCIC**wLRuA_yK!Tk#9I#SFiNso?_ zylMZV-0J^P?!~{!nIy0HLX&(@lU&uxgiI3b{lMl`%1nkYl2o0tOw49O%XG!Tybt8#vgxUs`k$yNpItJpp(11YFemX~4`VSGq00(be;RdIPFFraxX1uv2^N{%YA z=lQ#J1Rr=VKNr$ka5#nQ=%|f64dq5C;jG4BuYqj^gQE(3F&v>j(86=1wHW9Gt&!0H zbq3OQApnOpW%N_S7P=C=7K_{rmIYg62|!r*?^k}@Tu_XghizM2+^~mxhiU!rWpPW~ zIBd&a{vK$V@Kpov4{0h;yiFOc^J)1k9#pR0YkU`O;@%woMLn9yWns7 zF8hD_^q#tv2X!iFt%*N03rBkL*dm=A_>gnE$PC{Yi%3sho$Y~Eun*(&X)qr3G^?}Y zwI21<)!9$A7WCBBnN1jtM?KxEv;M|{{%XMtO3fMIwWasjAKO-YWC~u1Suj8?7%8;4 zAP00t;L_ zZWXoIt{CeK`m1CU zaBhwkN%AaG8`(NS{k68wp4w+wtz=K_bDBzaX=fxwY8Tt}P&>XF>$9i!x&CjGn^bc3 za3ouMY>^6l#;Z4=e*Rj_y4E^Lo`#k?vVw#)uOp)=l@XMi!*H?F74I(is&*u}h2ocyc^&djk)w2i!s7TsspuQ{i((e$`a)j)rg5CBU5weB(6W z&PL`tfwL4IiA+HSMfNm-GL_fbEYNFeE3dWgG-knRW{=jo<5&i6D!6rY=aJKUAB#A) zUFb5SCcn-sM#-zNnq|S7gY@ikrb}HG4rV|(Cpr03vMIJFJE_C3({IhSMc!+d*NaAD z*hw7{(RI*C9S#`4I_RVh1!K%f_b@0m`J804R8x|7mK-p>m@uxdZb%`iBrkFq+Y z;I7^q3$By(NiEU7;6+kXEuu>7Cq3Oxf)^j*hxO-Dq85rnYj_<{Bn4;~GLdruW&(sd z0?1!)y9cG{%=X%1%R#n#X`Zn;*57Q6#5QP|Ql2nMxqb~^uocY{U^G#gZ6=C+wdtCz zk+Fux(luM7(;VDH$Y_ctWc@)+$Qq5%3zr&;#F`Uqg~)6ai*%xx?Uh$4T@KA{(Okhb zLbEkOE5NP7Bx37SliKrMkEOQSq*k4&R%h}W(`cNicBi)5mD*}oYK>IX@OMpWcd6km z<*WnUiP0|{u&pOB;w6+D!|8b@k7m>wZuI<6Yk0L9US}Ao6>q&L5GD2zPq&Z2i{Igg z%ZSG%wTFPi^2V~raiAv1ME(Hi4iJi?NBJxK2bj}@CEA27G4Gq0C7QfSmzHstQ`pHg z8tum8nyrQF=mRhFMMuW6EQn=Yb_F2dyVWJMC{ZBZrmGyZOSz>Bx>V~;9mL9Bkl;?P&%;qDT-pMdrt7dZ{^ z6F|rh1FfaBhRy*FR|#KRpdfR4q$@ysfKVUhBf`zD!t{6|{2un2Gto94EE8O#9k0=T20T9%i{=m?`v!lvuE51@`C;l=Au;O%{3cul`@kln zJ~RYM__(x<2l|?}NELv^PCryFfR&x_g>7ZBh313TVv)PR+QAlC1<+ggp9IjqLV4Y) z<0S!kZ^jbfbtS-SO8g`Sn4o*zLHD|X?sWy-8w+}8l>QHL8uW`y&@(jXeR~@-CE%q8 zZR;YuNO~(4bgu?|DKrywWA$pmpT1oMWzKy=a7}_&ldu;&UosbW4soyXcY7YV_%VLC z`KAT5&#^wV4LsZ(Eb<|ceB~|jIe>2@Z9f1I=;>&`jV<&Ccr6yGD-ne)k^<0A_|FB9 zzrvO5?42{VZNG#MrtHt?K}4tSUA0Az{Vt)=MDL6q2t@aoXY?Sz>@m;i0f5;boYBJy zhRE9gO-`eJy@`6BM!jr`F;gO5_7%^F;lyRzVo^V1%iT=Np_!w*GkR8Wo#Jv>bVgsN z^$vKEq^csS#D3M&tsQuA8b5NI6R|BsX{aZ7xJn{j2=pm(k>LO*0Yc>fw9cV5bh+@Y z5WX9LT8si%1kep2bdU0(@Yq01KS_jB-;PE2q=~Q|iJnwj^LEp(iSS8xgipF6e9{%+ zld%ZbLFxY>rxCu|M0mVL_~A*$Oo{F{Uvr`xC;o}@=vqc2JRh2gu(A3+#U;WgHNqRg z^Cc}Ch>88Yr`san;v4uOy4#_xMPcXx@bE#2+Ipb(kcqqq@B={T4FD>414is&3+)B3 z#UfvUH5?89QGhl8q5mj9QGT&K=Kn&Jd%hEk@-G_Yymk;wgnn^H_7_)Ve{n_jmuO@) zLJdrWsx?BBvrHEfodt)uqYeY!LAi<0FScCvyBb=iyfhhGmf^{5g6l~CMI*EZyhy_O zV^oQKlV{+!;BV0oK1EPMzk!7VP4Ln|`6tjLNdPARLQMhWuh3gX7e{fo-McY&j~aJV zAsBa$y4^kMa`&jq-J@=IA2jaXrS6W)HC>3Sncwh?VHx+Xpxn4iZ>)fdpc(g$s(a(W zizFs@MTP9oJ;i&$S?pxsQs`UYaGp5#3(ySMBYy(i1`vuzxjOd@Q=79N=lt7a&h0nO z{kzt={ch*>yPVtaa&Eudxef<0gE#7^bD6D87vk79wihvA4!xPf(EYZY1~~}LIJaM& z`xU%MBG5f5WOwouKMRg?W#ZhMz~PzV+-@NM7=Zl%=KzGh2TgXKsB8kSHsE~c0r}%bo99qcx-aTW0NZ$ zo1*c^YfEQYdU5BJPfsG6D-!?p$!^U={7(bx5%!tr8_4peik#j<7SuD2S$c*h)h}mg zqC3AGuD*A;`rhHr#knRI$2AxJG!p{J!}jlO>uVx(!+Wt@Y|>oR9~;ZXCe1|)@FGcA zbyUc1;VGU6&aLqKB>Hy%M;_v*8=R5H0j>imnAwz-F1jPXLRktWEbnTHSormsFeU&T z1qh`Az<-d|F#Ms{;18b?-t9p3#sTaFXbuoM2taFq5{`60u25QY0mcGkZ}^T$n=R5G z$|cfN3NS|m#{=kJ;Sc8%gU2a@n|8&@;Bi+Otap{c`$H!5VG z<0)PYP8pPvj?lfpk+uAshBNdmK*3??P0$-T4c31=iOZk>BX#iUcCbhz0Qn4KC>;R) zGFk_~A9@r1u)MrKvKwfN@a_lrNO->opml+?c17-YY3&1$IDryK_ssRf%p-h42$s7(i21x)D`Ek(OnI{~%<^jCcLkTPO@qs6 z>~F!%mEk2m(dAq~vR-GEZ7)^4V0#*)0;Q&6R%^wC4?{GkKUZt!a*;A8p;l}5BH(5f zyE>Y|oEnVWz;^TBbY)A!18i=6Re#fW?f=uKD+}vOt%wY*h+i_W{+QR6Nc{LCmvxcJ z-yMs_F+I)k8MMsV5{+Yes^b)RmUTN-ydiND3sZA;?Ab&)zNlADI^&vi@fIb<`(x&u zP78>}+GBc3q&b|%`(t`qq!8SAZ+eNI8i_a7_Eu{H#9gcvORb~i51HG;o?ht(0|gweqMG>#5TAdaYWnD{JW#;wEZ z)){dl^=6V_G&ih>xpi3G$^y@qSac`O_C20%j{*<8kDo9t;Zmrf=LB0I&|3nn0*dSb zng~ba0Kg3Zp~C?B$7_i%#;_%}EjOo%VOhs{T_`;N`Y_h{5*;reLo?&yeEmqyAA-Lp z!Rw=M*Ug$pu6ZeLU!7McgB5I~^Yc+-?td7dbK?>k!Ut(E_dgWt#CHrL{8l>exPae; za)}vH@}6f?Q%iJ2wW^HO)Dj(0Ip8K8OJXCc;ur@RY@dp*1MM+!lA4&in||$!6fQ?B zoP}0~rI;t)?h`7(G)`Xt9jJR!eY>C%hKXc0zjIVwa zi`iDaS)u8LDAOAj;`N4w9)jylmG$)gg3;gwRrGi*g2wBudc#6^POaBl^`?a@;4~v? ztKPV<0Ni-JHG1_;Z)~vya`i_#-OT zu^ol&g!rT5ZmYgwMLtev#@SZAv7rOF)qZa@5+b#Utq;^rAH%5^UAF2i5mWvqIa?)% z)zD`R@3ce8`>Sm&fqGCRbu8Ct-MtFUnE!)*3TB_+8pD5irDl%^t~=2qURiei30|;* z@a;yCiD`|gqz$z(tDEG@AS0LdhjBNb}CBtpv1nvZnx9m#Xs@G zi@CNFuZSO$H^CWc2yg%(+`R=8NGq^#DNrN}=nrA&4bWsVZAAe3*YSg?nCbWF++yE| zedZL9U*Gv_?lk^c-%Xk~lSUI6zrNQux(fE|JAFwC7ft;7K3|g{zx!RjNhUHUBr-$n zb1tDzbIc==>7C%Q!dNx>Q*OV}x2*5J$A z?2g>a?zy(iyc0T4hqXQ06ktF7B-BorO@Zb+a`EVM!S$+G*pZJ&90xa7#`-IsrB}uZ z9Qm?Cu3i}%px@d$hl$u+9V>L?dj`4S=IU6H;#qoiY@lh=t78#Iz9Uf~e0qhfSn=F3 z(@9^6BiH5^iq83h4{~IY^O*3yo((?Ok%(l?ppfh#j(qn!>oegib>yN+ZYfc;hdOc; z{qm?gf zy1-?Qe9Iztd0XHy&V|S%Rl)bLw2jrtCbvlu@Hl4*Z3CpON@nu$j$HlCy-wf>+BQbo z&Io>iX}h`uaJjZkm$sYxfmaxvUGsq_YTFIcc7x!RrtOfx7i!xb(v}kjpJdve7Wg7< zTPtmk^ar18+I|!GVr|j-W z@9)re3f=Nn{nxgJ$s|$5uysECaUaXq7NFq;;Gs;Q?Ee4eAsn{Q`G3J8V3AS$lwe}0 z5;msD z_k!7%2Ri!sH*#pPBz8f-s_(IeW=aB91o8x4LiO4o29gtj`wRWEKnsCGOt$u!K&HUm zgB4w4P7>_qPARve0Sj zvn4Iv8+oidX&v%;Y%kW-CtuQd9hym1Q=g>jd%-nTO*K`1Vrf!!Rg&~DTyRZQO_HRl z5tG@_UXqk0Ni_k2@5t=7GHI{Cr>HUeyNU-`K zD~WfsSf-)UEJ}|bB%VGexn3PYW$&vXZV{h8sU#)v0NYA<*GU=Z2#sjkcS191k7(3? z05=PaAptq%**&=_YD>+xZ$_ZFgA98VONvD4b~brt`+HG*v`8DJtsAt=jxrUPj)sC; z@x4(g5AEo;&6`-sB9+WdIHpC;>uXChE7=BC_O>x%s+HV0MwCNDsoEeu#!7TOKlkC9SGVIu#$`ZA|p@QYfF18xe{2rke56tG1*GKDn^v&w3XP@O1=$P zoiMRe%T=%Zs0w+j$1 zNcfErQWR%XViampYdbZv+DWYqRWbc-tmHD_WQndxyeiZ_C3?m#DIKjJtwC4E5*(vI zZPSj`Hf>Nb4U6VdO{icjCI{l8e#!{dSR`1<2Z4u=;sCJn5qXynkF@eNmf`swAgq>; z5BZ$Cgb+C&!WzSI8-)0G2QwzWit1@)b+2Cm!wx$F$>#(rr9iUnQNzTim2xhMX>S$58TB+f=*ov>+Jdr1!Zn56 z$Hg%X9&2>hN;tOL*N6s$sxf^uu(ch>J(j$M)oai7&{%j44{_mwOm7F$Jl3REFnE1a zW^h0?3<2*aT!*u~-a7pnF~wzEMEKh>*&*)V&)(4~ZVBbQaY~8%R47aHp=7WZwY(nR zmyMxV80TwugHq}=qci727=4{Yvori0!0ZR4G0r!)K9r(FD50m7QYTlsT_8O9%6^(1 zr0@RsX!QLDu!Zmb6Tp7?0GaQhF+@bZw)S~E*cxe&?{3#g^{teukDEDhlI2?^VBI^2 zxbNYxfTiTX_eey*y;$p8T>@wZY!4tUd-hzQ%5EocG*@JpbeMdVRNIZ{o+e z$EVna!|V)BMZ?om0Rw{o<9tuA2Cnd!B9g1YO_82@$j1+G?tIC`-N^WRinUH7oc0eAYn`3Q`3IN6m*gGAZ-XT7 z1pYO&r|{cIMllVSDrHWLV#v-|+Um4j1l5Nx+&ka)1z^7fs7~f#K=PM7{h}FGosM#s z6Q5DHoQFwgos2CavkEY-PKGf0{a9P4`%i9}9x<6DuSAe9;L+;b02tSHo?7K&iI-wK zdx@S?q$!(`3^*_idg3L3WU>x$lD8qhjbEn59KYQQIQSB97RZ$#so!9T6K`)tDHf;x z{wrub9&Hk|Me26QPJ&%d$9zZ8a(<-7>h_W%cOE2mb(d=1x~2dw6Lm>mNw2)K*c9G# z(6sOxS+p3>wq9lf$#xTZHGfJ!R-N1>L+Ak7= z#-A~q6KC1ap)dF;a4N_FQQnQ#q)YDu6tAUfl4dVqHj{DQ_ z@k;x&==m407bHmPQ$Z9foUv;W6NDArI z7Pghh3*=SKo0>ZbbhFb)(YVxwx5K>ENmn!>)yL3He8cIWXdrbQ1)BJ#Q=m1GoO&n$ z^zEqT)YP9Tyu^2+Xp_`tjEBT`om`b|mU`kr(4CHaY=8o`8XsZDns}|9jfug30VjZ5 zD)uHMW6{@+?D56k{|trikTYFTZ)zMFN&H67{c1{-4E!X2Zn$qphi_A1|kMr8kY3ds;Q4=6<3W8viK$J>wZos2cx?afz=QxP~E_*xHeK ztnql6+`Ae0xq86)PMALU@-V**?Xmne(x2#rC-u@elO22FAS1N>Jm4~glf2i%-c%yk z&|V^v@`J8Nu_noTGe|@GNuldcwDCCzO%2EWfX(z;tVBV%klU|Bv-gnCiqOT`oha?g@NOnkD;^y7v)^q-tTW`-5n^Vuw%z1TpDK z))Q9U(E?tzjQ;8_W*jHgtQN4Bh+WO9!m69V;7Gcrvw)K+)1+%PXz>hNYbBdbcHHFS z4cvARwE1PM671%m0(zPcmx0^71WH`FqzHNXRfsIS(+24dT1$IcXWD1cBx`FphDS7?(Gerk>i3L=z|9$E# z@V=QN68ujf9QeRs0e`_eU>_Q}WPb${YTzS-rTS+u{RTdk$&iZkFYFAqS7OJ&@_!-@ z{KH_aNy`!XikDcdMZHFWJ^s`|>{H9mKs`q|o%y7t;YN7{xNja{Lc@(GW1ciT5%Wa) zX?Su24YCUm8ycQ6HpE%J7bv{`4PRN$5KO&;B|yWTwu}QA!Sd14hUeSSDL(Zc_RtN( z_NCZK3{o?;f)?4$6irAyyb-j-mhWlvnc>vQ(#s(Gd~Hom{bC;I;3%4!+MMaB;V^rd zwl+(>CIULrmbZnd|zgQkMNDn2_++5x^ME<5w2!%aKs z-ZvL8uHhyzC3WUD$Wv^|uefwRrO|Mzjx)2@`W>c*c4Krm(jSSc87(408eZgIlD8!c z4b>tSn;DRXEvyVfVtN>nqHc=dQW%X?ub?Q~LZ3-q;caLy5{|Py3rd^xo#eejIV38E zBWlq-5VSB}2hhUs!z_!X#;ebR_X6)88WP)9%C7wL4358Ad?kbffUIFY0rs^d>nl<^ zJ;g9gy^qpvTwhOTNQgdWI5lo)-@{-fM5!yOiN=khXk4o2|JZx;_$aFEeYkFSb+H)I zF^Qp|lA@a=-2nngXD8{bgb?<95kc8O0ofH8R8&-O#SsN}RNNiGQAbo%+;!ZY8J8LT zy07E7%;>o5`#k4XHz~ir_mB7e^ZmSkq;t->=bn4+TDNXhJqIH{FV|x;Y=@;D;jvlv zeCEyb*j&3F-JI9kV{Lme7VA9QWAp7Fu%hPm@z{v{CQUgWTVy|kX`7etu_g8qXvDk% zk1e%VqJi@Isei)%Kw-IEI~8nHeI;y_JsJyrUZGc`I{OFII4|z8N!x)|-T-x~RItT9 zl}-*;+yf)zxP2NfFnL4NNMSqdcj-o%`c^EDu>XPKlvk;`ArB&m+x=)Ni34b|6Korc zN#1Y?2#ZkEc0aNm9y`m9ksaZ&bL_!nJ3V%RT}5^zKXHPoCH6DeS?7)Rd|qb%6+>8z4Psi$V&EPq7Teri-GvNc z^IvEeIeuVuWFS$>F(J}|lr(MxA9it>9$o@T=pe|f-ouXtjey0yALC^J<0f~5(fe^t zo7RI^4k4}|TLgB(TI3I#8}Xa@C3b*t|ZR^6zSR+xHR8Wm%UD1ox=sa;=?5f%E#swk~Z4_e4MO zBi{&qUVyR|{Tuc({{>P7%U40LIEe8QDg)Wxd-1!VrE#3`slr(qXX1J>l40?l#+j5V zeC+^mlb7LIj7^qx#X@jXbee6QwF2B!&E;FAwcw`f4vbiQqTtNXX+_q&6Tls*xf1JQ zrpaIk6qZ^yGHsSlE4N-72X40Js;qTrN{3;?P&xlNaO>n;pm0|J`?lVzI5gb7D9>~-fLMj(l=N+NFj=$ax>8Q z0r$~S+}C}Can;?e#AM5I&&KqQxPxcOj_&u%xubL2YVa@Mc3^I9HeCbFxw*Uh%@X{} za^o)kMckK%;NNBtyI~!~LBqWVlLHj;AA_<;neO>W{q>>EZ-k&rnIN)zgH*=reAeLJ{GJe=bSvJ!>$ zn=)L|axFdx?l)C)w$+4{uitb%X7a6zo50QZ3Ff&goHiNUk(w*A_*zWAnVKuH4#(BD z-z+`!OJ!B+H%G5ZphfIAV58FYK0qfPfZv|`BZU57R>g3Xwa{gT~~D{OYh*a|Ki z1gnFmK@eIBvU_CkDWI+8+aR8<2P)33uvdx9VBd2m7JME}5*czf^E?OAjtqGibndz} z3ysL^caNZ!k-PlZuG(nx7=tQc1edfzYsBeVYZTkV{bv=mnz1G;cNAA<_xS{SsGH25lcuqUZo*Wt z+|w~+yBWb*i(zB(&Bz-z*&$(bG=77(jKy+LX68ZvW{?@tvL?_rm;C5qDuQM})7xX` zLMub*F^g?s5^OJp>aZ&?qcOCi8lzmeRO5j*2@*f>IQ-@%*t zdwYV-Q@<-Dn{S_22DZ06&f_^m@K?;QXySgB_zTF4XyTi6iTVB#3;ZRzsS=IgFwBBz zh0z;E+CXMSD@KCWbuaWADe@aBP8qSU$Fd%csSar<>~FqU3chj*ZGH~2C0cnn_R!kq zAivF0zs4pQDg@4o>J?J>5^kr+*=Q>Bq2+LsFNw6Vw@K7+0( z4n3SU+6S-}M5~m(u9VvEq4%QIo~d&CJuH1`w$2D{WRF+n!}rhzkS)(SJ;9?kxGwD{}Mny$xB7}(J^kM-&?%wLaoe?3wx>ahhK6Rm!q^*9}5 zOSJm;eNy!p>95Bqe?3O~>oKNlJ;rve$GCJoWH5|RANNjW2TV|_Wo#7b4w&dUUZOi- zlHc(Z3&%gee2vyz31>s^gDi^HOu~w}t1ak+&WZgcR%mLXMt=r_J znq-mRfmzrVAR6EXVp)5|drK#TJR9ogT5#3wMJr2iF!^LX)y zu2AnvPuJOfFF@)_b&Ie``#=NORq}3Vps+=E!)mYH+wtmP49P>!LRCV~gUpW({XSi- zQ~cH1?620TscO;j)4Zye zXg$of`3pbWU-&tx!tEQPuyL;9O(B4G~vn;ClL`J=b;V6*i0 zNEFfZJ&Sk?WJ$DX4mJt8ho4)WbcuZXD*C?qo7nV**@s>ov-AZ02!XHY z0G@Jif~MF!BbZ>TwtPkh%B59X+HvcqtNgs*ffxJ^yqI?2trpmLNku&e0`*{D_E@y) z*H|2*t>a-f^dFG9(bgN&MLg~=;t78dPo|6D9zXh&8sQbe4Qupi@8AnXtc3s3wm-6n z6>Ps~Tc1d(7O(h=c-3FTYw03-kAscZz11kg9y$o@-#s?V?wkwuA6{N`96u9{wilt4 zEE{BJw0&?CS0mXUekLUr&pjRs&cD?6*jg6N#-1nox#AwOXeQ||6t{v!_rpN+OT|rE z(KF?szf#<570I>z-->&rq8+GK^goLGjN+vWVe@OnYjx3j?5U&QC|*8_E@T7zSMgF< z^kNn0ZxycrMKa~TQ(QQUWV(H?xQ-PuQf~AI#TBOLUXIuw6=!$R%?+S`Qk+@E3yxo4 zM1NLuV7ka+pZ=maIE$`45%jN$LS%l+J&QF_F^hudoR zbKI`>cek_{Mxh(SYFT6i-$9Yl%PZkJ>U}?VyY4}pwixcjfvoYVxa+`u$~rg`eP|F; zq4fy&J?^?zY7LWi`2|J-?(5UhE=Dj2_oGiv)VeS8Qt2L!6vI7$#Z$Qtmr<7?Y=iE} zXgAZ{j+F}c=y#$r(brGX`QG6b*KHcceCyGr%3XSbl!3Yi-MMp_Z@SKR5e!B@zFX(} zigVbVh*_%K7bY-ACIqItXdZjz?q;_2Saf;Beg9aVI^g7N2C{$uFP;4-&QJF|RLXEq zSx+NZ;ifHMXh`MOqobhrH9U)UQdl)_W_5fE$;rUd) zAP1iBD@Jz|e+YSKFUX97;sT5}s}vidf@8LW3kAFlqQ0*gTH;ez%bM1`K1qC75HT+pk6P-Hy>zxc+pVZ_g{t*Be@fd;KcrJ08iHk6SU# z3vXiV>6lr#M)kmKa_2&3xVO%s+9zXaz7T^t==M*-ypi_~N-x}?-a($=Uodcs$|J}X zdKqL^QTbHR7T5lwv%PmDb@CY-|F5pB#O!sZe9E$Lo#9c|?7t9q z#j%2JK~oo9%vXDQoKEr*c3_V?A|QA245!Cg3qkJUIPGyJ$xC?-)#EVKwdgW=X5EwI z#ka%T2ex*FtFtY(jw%Ryevs`U7L3dr5`r$+-Td&9+$;%PHR zL-Euj;acc^kQ0ihUIp5^<5Y+j-Q`vMiAr!w??M8eJXy=uf;(Pwoz~6Wl~KI@2}v7+ znL~LFOU$`|KlC1rM5Eb?T9O9IeV~KiV-FFlc@<>zJCI)nVm1FWz-#x|Xzwg6chO=a zHvWV`((JkOz)a9gr#0^wi zGqyTM*w;eVb!?3_A4zMx5weD`Q%|@-EWaJH9%Di4`EWj1_UugFZ%dtyo`lPLeAuTj$bq_Hm#v$&nQA)XaJr9PyF5`|naRIO3x;`=yc&j*rpJaa%w- zI6hXh`vTSjSS;fcbd~N3Sf^q=j8E28!Z>3M<5M+zAP|{wG*~%Y#$%CS;X$l@FHA$7 zhrfwxhMotRj16bO7T+Bz+0R9Wi_Zv*?UIKu^`w$Kz9}IRA-HVoYI4tNE=QKRlE3Q4 z$+Z&bjgmM2D0Q~2`76M^v%ZY^aD=}I+y}P_S7hWrQo z`W#tuRWkKe>XI%z-~3~jd+A}5^Ehm7#`F)H&tigyP4;7f8Lxf|YVLh2xvH;#J2+s* zxHa9rL$IMSf`jLved-^CPES^WJ(ntz8GE9yJ-)yku(J)B+>uMs4(@jaw7B&+TD;&` zj5hZ!w20}>Uid9C}w33zkd{XMJ= zb??CFt#|*8Tn+A9sCCl43-xMr=c1G*w>R3k*{ww<97G3TWIt@U&tNt@Vz{qj^?B5A z2{QGV;hLz#<9JMimU+T(ub2%m3d6l}9NyYC+)=37(}sICtpC|?AHm-E8SFvPN6#8= zL9JmtXSkc;>GOtrA+BsM814rVAnO>eg~DGl+`nPuy==G-V)XvSa0BRpzZ&k*E!bZg z?iTdfD~5YD8sJsK&B7Y@8V1Hr^zDGJIFe%KfNtt6xbNmq<``<4&oT5P3;FnMJd1e`J74c$t7Gk)npypoad#?FB5FXT`({inu=&eDm+`XgW@SFp6EV(p^(xRV(T&7Ac zy}t@YbB|N<19xTgoPZN0zvzd46YNt*fHS<4z$x~lg^W~Q1$_gk&?Lj zM)=*z9=QViK=C$MxCiN&$|a>LtA^#@q-=)mE-6=oguhMMpG-t`D%2R^_bEHVOHP%? z-=*wRE1+MamP`76WgldEojPCm1IpgZwyRfrg+Hk5KVkHgBt8ByWjA7Ml{BdrCH*O7 z_isabi~36VXO+F5^>6d|7nObU0PyW98*2`>IcQI;fF&Is|C+LUC%|{AN=bi1*_W{2 zN2w{ozpdJ)*xkV9&u-rev1KZwc5>js$ve8SwEnxo-t|}#` zs6R>izJUD%rfA6)^|tVL1?=;wzs=+K2kfKpwL{5vl?6A0g$DxmH1_93*ddZX7_jfe zqF-{kY8C#mfPD#P&((@?5rc(K1#EW?_-obi!ap0Z2UCBK+9v#q0s9t?&zsaO!v8g3 zKLn!W7H>Si7O?wryzEndm-IIRb`k4)kK$Xd!NRu#b|v}!9{+y8ZX*w! zCvj!bNj&*QQXT}_U`INM6q0z38#WVZg~e$FQb^+AZrGfZR^SPRHckpjJQWU`Ytjlg zrxi#ciO0-gb4Oa?&uIlxNaFDV-rP+q{4=dU3Q0Uv#+$Hdg$ztx?E@(!@uWFyew$Vp zoK_%(Bpx}3@fAj@9mb^j2$+wNGrUYRv?8Wp0(psfV9GY(h8)I#KUjgQlu4fu|(*0AcZ8Jf``ptp^&W_ z(uqRJwBZjF?vVi>fkL({W7+?2tGooiBCDu~D?Ro^{dk zirx*W9*SJwx}us4TH#Q2X)}ij z(By_JZ0-XS`~k~PY4txrhQ0^cURr%D&P1#S&xg34_mJGJeTGXzX;R;vCL{AZz%|h; zGb;E95bZi##Ejmb*Vgi(c(iIz7EntyY{CmRt>T zOj*U(pmXP~SZ|co(s9xH-3Dk?{t7m_5#(-FR>?Od#aLOAzKYtg6L6!Sh#@7^2C}6* zF`inSI^{K~sdE-~edTrfU^o2i;U>>mWdn;BwF6-sVw5rtYUqBDSyiRO zLEF5vR-KT(^L_}uR&}C^G&2|8ecO5j_#qRZnRymS6}+|=1mow@%rzi$tHz(3Hgl_D z!6?lZGqG(e32F#kOsU91#TdToN^H@CYd?g$FbA4ed^KT&WNQm_h zn{+>Hvh-m1Fr4t@H-Zdhg4|l2zZjFj=J{gv_3Bd4tlNejU~f`!EJAz-?|BpKt!e-o z4zIS`i{M4|ZQd&k<@Su8VE>@bm%LT>yb##iJ+{ui9kZf(ug50s)B1wlr@qB1jfJ)U zyme~;;;0@Jw%wkfkb1ZJwvDNsb}edO{U^0m+?ZfjqWtRnyqCFV*zL`LZn__^PgI^| zzmtX3177MJ`+c$xc&Q8Q{O({M^ir4D{m4G#r7p9dbif|;YP8ZOvQG80Y9JQuK;e2E zhg1(_?cBK-9ypb<(6sKsK1g)0LMcJ_#td9-jNlM@U(WUno&`zG-FrZW&IDOfb9WS# zkYn7M$5IC{jcB-<)Hfzp2Dv{MN^P>_;I_v5k}uaf5$@JJtB-MQImW4Zjs|&f%O_Da z&z}j;aQI^_hI2J9=^4#0^4OzzN(-w&eo|UnQip7zZ$W0&mYhVNqUf*M3sT?R(WlxA zd12;vceGvmdtMpwWK3+=UaW0n-mJzbuPeU}1qaWBeqGarB=1JM)U{J7*d4a&KD(I( zb_2Pu?z0cku`<@`4vn>wF;eSpRJ!6NwuKp2cZ;HH{7UL=jF-AwJ+{t%5RTW~=CLjI z?accJkL|Q?v%%i(u@mgPIbipCojk+-5~H|opErtU*?j50?oLm6j=csR*WKm4P_o3{ ziH@zi#~X>u?1AX{y8FD;mG&I8XWjkY>u783&vL;Y@YwbCG0gjb$8NGGjR*Un6eLG8 z*R`SGhg9`2G!c(tTG3^72h~NWF)rV#e{0)FqwWdyGunzDE8w_{t^4^`;4|L`iD`Wm zbmNh_M^!%eze zW>EdW{V?Y?AS-J01bVf;lm!IO2!dSwJjl=%kdgY;(RQ!g`twuea#Ys;zU!#0znJz| z?xk49>UVj^m{M;2wI|Ku;C&}E4TWi-VGad4Xdm_F>RBcDRtJjX#Iwh zG?%p4KMk8-lzc7XVZ*5n;ytz-2hnT|eV>OXnGbu|CcmCe z{x}$2hXq;|i{vk<#p17UCHbpfo^$2puw+2Rr99gnX(2JFu7gWhAo{OaJ>N*0O0OOz zcILfEwNxC%acSqumkg`Xx{m0#@OHjJu{(@yvxeX{S;NHtM&%FkX-`yo@MwZ)v zVIOhVp}2#1DF!{ZS-AzM`sRRJge&l7)2)Z~&E4G(FikgSxhEfve-U>KjBZAb02X_G z;<6m;(PrccGAlA2&P>QPP4R!0yN;HT@1H1CzK;0_C2nTU>2MN6z#WH`2?Rc{0da~E ztbj)HcWlN1X0oT$&YpzQlZSarK4w!^vWHsUfyXPHe#s0~0lJ8@DVeD_oX{2xty>{< zlc>4jz6UpzyB0GaljkcedJV&wJ@|K2qhZ=rAj9S!{N^iW;sq{8ejX#mQG@isXm!9( z$nR*hDuyd)TyCcG`sfbB=);Rzu#HbD;4Yp+fW}Km{D{7K)+^8%kX8MdT&HY)n^^sX zcbzqCerHqtl()KdNA;>7RbxhY)vJD51wc#ns-Mx-3!4?(AN&{YH`dNZYUmq~2ODck zJ2CpU)hVNK9yK`nUW6Nsi#Z*+fLYuOH!k6InCq7{5FOTd?3wUgzO`D8=4xEZy5k^G zS;NrXjmxz1E@kzApN+@AC8n-W)`e7Fq1oNadV=1p((E2(jeuI?YVHnrhHPb_cN^ER zR>8vCluWb66B^+zo^dOgXN~JQ&w_<_Va-`fTSIG+oVf-hR#DarhaSwo3@zFep8`Q> zDaenT;`f1;oo`bIHCXMX80<|Wb@2z46-N!5MsqR6iK4PTKr1wj(d>)bo2K#4z)G<2 zHSJB)MD5KR@TR>RvS>f&;gM7&DB*Sy**>|X(4apAY0Go z(?k6x)2|Hs2E0Pjyd^Ys5?Q=DJr3*{p)Z8ZwJ*iCr1{LyPIQkv0vUv{*WBC;v!Q_? zBhAgnrHi;I^b(3jU3C#VLd8-9UpGD(xkjvmW@bG|75r{J1f6Hn%(oyT&7F*VYJc)G z#IFPhOF}cxtwrIl29BCYw!8h>(MWwQuw2*-`@{7}eLb*E*ev^!bzuJ<;Nwj`^s2^g zu=yW>hlI85>qmlp!^;bg#?OMSiTrRVG!Ep9=84CHmhE-(4I%k>ELD#iLxZFqEjB}? zHQy9^Q`)B8-cSej=Fo-cN$xlMuRsyE2rMB#jphTaW*sacP&ma1mW~B~)CQI~2xLa{ zQFo?Gd^_Onpll)+G`|zLQrg?p4f$^1aj6BKX&2)DrFqtaG}0erM)R!iXoR;#%^wC* zFb2dPX#ObhrsOj1S2uzEI6w?5G@}t5UJrhDa5Q?O9i$4rj&5sSlnX)VHINIM7hMWk zH^!t8@BGr8IysahjnS#c%@l9kjIlqv4mPHSdPpG?>|;y8P7C!B>>$8opNCsJaDE~2|< zGs~`3u+bwujz8K1wx`G9Bcj8=9u|5=^5)w__H54ZMtQ`3?tZYnLf=Sgkv(HG*v!z6 z!j{;7Dgql0F`ynVdeahMvqJ6YQ*JpQ!NsciaBmdU*_R&a%RCnM zI{#wwOJ^|GXCNcZFMY;bywz@=>UVrvaG2-##bt19dazO0EZL|u&j=O^n`{5P0jWm{ z&@Ufy^ND!#Os|%3{Bd^pU%o{tnSB3I%;6iXLY*RP0oW8u`VDYE!SBbw=K1?Dv{~RohU3%u_(4 zM>v|R0+&P5dnV{CFi)oI_rAY=ADHjy`WbmMS%sRwUufw_&?;{!ZI23kK*@1p`|NB; zrUkyG?QNhlz*I~~wcVW|-|~A`$hZ979pal$TsiZ;9RxGS1)7kv_kTgRgE=m3Chos( zl!TPzYrzYqi;!#d@T- zs%02?52B-*&kOty%Xt8_%3E_HBYj!EYf?7=I?u8@VEd=Xv}QRl-0y7#U|5mpX!BL0<4S`KRg)5 zXbYQMUh%k2e0~^t!Y0?Pu*roZY;w}$%tY+|Ebp`Ql|I0C5XD$}c z_Db1Y4#FlkeE=E}4>*DF1X6zah6o;|2u(~g^caQ(UZ<1aP4fG`{Bml9&Hu`8cWI%% z@>`1E;K$gowe;b~!=aBzw)9yFTHdQ{spcsy7CYHax71uPg3ah7q9({? zs-^GmnTZ>hmU-{OpXc@s_ zEn2TtK&!lrTCal4YAK&VEpcEp2U^;JF_$Ajj)c#{&a5RdpLxy&nbDFsnR%rA3EcFF zWwjAn72A-KX@JBYo-GnK=_?@8ARkx&_tgbT@JMq4#)_4A*$whR3{0UeAc>Dr!zR~{ z(qSk`ZC2_HD1M2*%b@%XGzN?EW<^@GS<8V}((>7gigs?mcpS=wQ}LML4XnHBY?5C> z1l#P|(#lPcZd8h@OYj$51t44Kl!^LAMS2Ki&}ZwEt4%N;sFX6PzaD>Mkp6q>336Q} z&t^`9C?W10C#pt8M^6lb=}Jz@f)7EvvcQ34nj&455Tx)K3Y!rr>v0JC+zql?-N@Px zLm(@dWoh;i0po0#pEu1gYFO;nC=`aPUf^r@fUnyGt?l?5dIvb10Uh*m4T46)Ef^50 zQ>@+1dL?_Y1=iDDyE?kuVbShPakTOV!nO&%U_Lm9FbloEmkACBOo(M zKV&IIN>QtOUcgug>A$Hd-BYAUZ>MJ1(I0W9TFI*xOg*9R_}n(0;PM? z`35rIQiz(@Ly;@`HZUz4JSK3VH#EXxFj0k$Ras)sXez*b3G|mEQW{R;?JK94clhILyRDoIfjrKII?CV2U)!m;J_Pavh;f}^3}YymKpy8r3~c)` z$E*g+{TZq@*)oiA7^;9oo)yP#vRrM)fD3d}Tvq5_C;rAGTL)c~N!yKW81OsRLFH-gO_h|$>*QjHj^(Rn43w7)U>Th%Il#^@)Uf{!s;*8at`f1NM=KhGm| zD$;e@!a5D?w?TYkRa*K4jPv086*EyChG`1K*y8&k(k(8oK0{Vlf~RbsfE~#OnBiGa zH`X2vwstap>aT$C0RGm(-DT13N!GR zTF-pNKj7dDJ>kCNY^SF;0H&Bn=Uc8Olhvbc1OR}XJY4+j?h2L7%_ z<_TXo$a}TGZ>q`gM*3V`Er*ijYCqf#^pZKt9Qy#5_h;lPo|PIzz39a^5Dnp#HqeWm z;GPH{Wv1TFp_2sLdNtJ4UZ%FSVpOYr9Bm7cGVwdq{6`e5M-*S&HAZLkhn|e8UK~~H zp{GZ`6n6<&J-T}7(KWUP`Ad)|keLh5CXE355R~+^7^;WRZF*XCLtA+@Vr`zq-^);) z#2Ou{!q3cItxo1ryhUG!s5vD+U^rNAUxT(>hdNQHI#XQ?UiaIJ(0U(#sea2v4(7TO z8Vye&tJ*4qpaZ0loJ#v=c-NtW>Fdy0-gT%-cijhcSzmr>Y6L@>eKizFr?6#wzue+^^qXeH=d)-#0yRDvfy2I;V zeq)RBul=@m`fc6vTU)YNEYUsvEPL7^RgT`|MS1ua4j3K13<&VZDV3#bT- z45taSQ-W1h)M;5#1_JR7^tcc%h%Hk%OG3e$IOY1B41ql33I*??;4x}UB)0(2Ox;3;G9Nn_wTSvF!Jsg;@p-_VJg)0>&}8 z5dZ&J_Nl&9Ug!M(SoZ(lz_Jhir8jPpBRz2>8G0FHMvq7T+#gbS%<+GN<26FLW)rpCJ*dQjb z>cqr9tW(wO*t&BGh` zXxTX{jP=UNJOV1t$M`j!w{Y9j-HBth%5qAurbV2!@aUl7oP&MYX63wr>TNOvR6jHJ z7Hnux{mfV%`qLt)e&#^!y&<6bndzGG^PS8tp!#jd+!a(m+yzuWyhb&^o(9zivyjFs z(Fa*8h<(pyBce;zrc>df9RD?f2(MMEkeYu8R6l%zI-Pa|R3FT4FaoL{K3jQ)G&p{E zy}FHx0*(*nX(|#NKfFURf)h&A;P~MU>TgsOaC|Tupd;Y;VLv#2_(1S*$)~~b!w&=t zgw^2q;e){e!fJ5*@Wa7sVKq2@*bj~$_JiYx{owfFCxfk$SA*jtKGku;MvOe7+J`r( zGvJ~|wFkq>2&#Q}yLpx<8a7ew!xwt2Mzs%LWZo>P8r430vH6g&8r44RN3{=MW_~KE z8r44RN3{=MZHA?nh-!Z#+D=gI!(CAA!(CAA!(CAA!(CAA!)?K_CKv1AH&I9Sn_L;R6E#%%SQm#ht zQ!0k}21t&uq@ctR8a5wKtFp?vnE$2vC6u~#&sxo~E9muEhtTV@4x!g)9YU|qI)q-I zb>f96PtfbL)?Y`G==E8L(Cf1fq1R`5==DdSpbPOQ%aStsn%U>R4Av3!dPmUfoypmp z{eoWa2ztFE==IK3C?eu$^m-?m%QZlw*JtmdNkOmA-v2R3jb5L<|5Pj#f?l8fG&_ZJ zl}~)KedzVs&(Z_TTtTnTeojwDjb5Mqyyi4|eYOw1KHG<0pZyoEI(%17Q00B-_1Rs} z>)%9K@?O+V_$IC3q1Wfk;I-%wdVTKxKSD#J*XQp4Bvq5#uTwQ)Il13niv%v#M6b{N zPWym|w|8UU<=*=>E!+jNJ@?)lFarh1KDS7?OWi7|C58am=ibNa3y^*8{j7%o+2pp>n0U^_>CWDe*Vi7c2XH{xH|><5Kx@u-WMo|{^&MHI%Q>|k=z+#>QEBl;C` zvM_c4Wrj`aW~;5#I8-uOq|x25xmq;XDq4e5h<89BW8{7iGDZLN+U;d~}C5gy<1!{a;I>MaanG`zs$J2@V!;qjeZkJa$_ z&JiA~;qje3kJa$_PH&IZ@c54Hu^JxV>Ep2)9^Y|1R>R{v_zp$f(D3+9fyZiie5apk zg8zK@NO*iFs@jFs@c51&9^di9<2wV?(_*J@tsP=XOMgc zgz)%IQvFp-X?T3c50CHo;qe_mJigLbQ-x;gsNVy(7zT?5;JNK{|1Rmen zuUkaJ<2(222GQ{NP8WE5;^BwQ7K{YBdu4TGcv8wSA<~s8sRxgrKm2!)Xn6em;Riqi z9zVYeJbu0p9zWj)kDvdf-iYH>;KvqWKQ-Y=KNC|63xvSq7x>`u3w-eS1%7z^e1XK*@c8+2&!s&+)hQUkWrG(K!s8eC z;PDGaH{#;N&&0QOB5m9-;WRvcfgc_}fBsHb)bRNE^Pi`6LI}B)dt=%<;qhG`JihCP z$IoBzIxPr1e*S`bY@fuxeh;PmBRqb;hrL#`2#??I5zT3M{C+-o{C+-o{C-bt6+iH1 z#KkMn`U{7{erN~Cs{Dm~1}tSohNa4)?~xIIlROzx`$(s*eU`O$0IuF6cjd5Nx$+f% z#A`KMzT%IJ)?Vcc7EEN!TIsJy?!1*NjmTKd^#`}ih>X)*k@fT(*c`99Snl$L%Z-TF zz9j-76Pcv_*C5~#?^WS)4fdbECh-Vns)t2?4Ep#uR$OrZ^Op)q-2eP#LK62sfB7gVXx#t&<$OI- zTB)!+)k?(uFRauzUK;nmuu5|p_rGxH$YMPRVk4kgf2434_rI{=Sm8A8f1wZezp&}f zBIeV$|Aj3ZL{sDb7ycIaztD&KUpQQw)wutK9h&Pjg7Yvr@{e~=2@m%_|M=5WH7ZKg zNO1p)evA8GRFxs)T;u*1Rg;ri3We!pDqhc)iMqjCQojr;Ft z+pk*W!k4cRL;{F#;ScIE-&KKhT7yEGki>IuTG>!XTJXLcV_rG|$9y1#E zzj#K8XlmU5;v+SuasP{FYEI++7yEGki_^IOea+$l)N=&)-;q~09l`x~1oz(&+<#|3 zo*G0n?tgJPtAu=&tbrrA|4z3B>=nWNcLev}>4iaQI)eM}biw^EPF5lp-m>6qS~dvJ z)&`#jfyVuh4Zan$;Qq&axc{*k?0arp1@}KTtqu7E}AMt)D=EMDuE!hJ#UcLz396R>U!fD+9m=E_q z=EMDuE$<^=2v@;8$?}<7MSAsd4|~WygV*Hwoj1sWFAp^n&{z&ro{IYTW<$Z*c$PPA@wHST}>H@N@t#78Xg7fiK`cp_@2+|Kux zSl}=5H@N@tic)0Mxc~8rb!j7oej`PGBYxcfcucL9hQh|}3tTngm78hvbC50Z%Emq^ z#|HUrmile_asT68asT68asT6f-2Zq&{XrT@W>FbKd{g3-`|I@68 z`ya3Bgzp;nKVB8WqZ2(Y>izX-@YlnS`ycO$`ycO$`ycn?{>NMV_3-2V$Njkf@nQaY zq=5c){DOFj^>F{=)miXeQuG{>QuG{>S~e|8YO=e|&V+>iSo_v8M@{kZ>eKkk40f8+kgYq!B?jr$+3eJSn#iGKgr`~COf{>OiV z`ya1+gC+&{KVElJeyT|p`AshNoAl%U$B*?=HF$WuEAD^1EAD^XkNY3@4b z@zdnxAFQ4IHymO#?tk2m`yc-e?ti?#90h9J|9Jh*bm80lg`e#&+>iSoKUeW?mrFN6 z=i`3d|M+ik|KknUvP8lCk2i3?rmK6Azr-E>68*UU@k`Pr64@-i(_=O6e|(q6YTW<0 zANN0gnfi-(i<`X$T$|&`3izOL|KrJf(*9iS_h+}?pKDUhF9Dt7*LpTJ?tlC`b-4@& zjr$+pdKi+h1x`=!HMeO$%;m7@t-RxF95BERbyptuKz6iC6 zH}}E@NLT6|e~ItDRy9M_@{*&U&65Rjz&x%t(aR1}KC=O1+ z{g3~uI8FrjKW+rrq1ZXI(fgY5wcH*%6?5@PtRuMpj^O?~6U(s>Iy;~gbk+>#9h2bx zJN=Ku9f?y0c{fLJ|DBChc#!1GL2vhT1oz(&+<#{xW>YVxZ6S_q9Kro}wqUSjIfDD| z2=2clxc`pe{yT#E?+EU{Be?&L;Ql+09gmZ3M{xfg!Tomx_umoRe@Aft9l`x~1oz(& z+xHU$642k7IOsm z-x1t@=k@7w=M&_b{p3kn_hnuxox_o0ID-4{2=2clxc|<{XgAa8g8LtT{brr-9bR#r zreVw{xc`pe{yVQvW7`YvzcU?+9k7py`yc=K9i8th&S6Jz{~f{ocLev}5!`=AaQ~gL zIIxL0?;p#j@EZ3&{(T>0L)Cub{B#8O-x1t@rwi_X+)zZvjG6JETmc-x{dW=*d8^h1 z_dniEodP`_EiZ-p&)eR3Zv23H2T8#Fk3XP34T4%@#2?hMWk&oV^%YVz?msCxmiBP} zxjG8ZHxEYQ{#tPV3yZTM*SP?-#n=GlX>6Y@$+mX-#PM6RDZrNp$9;x8DvU7ft9`(n;x^iwAA|5@A zEkUH_KBR_C9&7eBqjfx_btKGy(_BGa2{YhGm;pz^3^-lF3`Cnhlrjdb8qItXX23aW z9P|BdAa|Y12)&}M~9&{a(&fr*K`Kx($6` zeo3ITOW=mm8?S>BCw{OH{aTtB%ls0!p)_#<^YfX|;F)~J z&ZUEpHiPHVd2IeMDp^F>q^l*}ORu9X1a2tZ!&d-!iU&ZqE`b|LFKQTwre@%V(nEn8 zN)H8YC_NOoq4ZGThSEcU8%hraZYVtzxS{k=;D*vefg4H>1#T$4npKg&4W)+yH;Nvx?12+s_f2X7|a0BHz zEHP&jf4rAhXf#_NICtd@o?gP|ZcGmzu%VYp%q)bq%-%&6QhCbHODwSBLWNW%<`&NS9T&qs-85 zkXdEb=Yh7{hC+Okcb93{`4}8!H+!tve=R=6D!avFyW9Vsgw$J8x1>54MOn=**ztl< zl+|2~YmSViveDiFEkg*Djqk*j8bgU81j;68MhBxPn@BF03Pw>jNwWuaFp9Ftn)QNF zlugmB7mT88s%E`l6lK#i>jk4Io5AD$bTEptBQ@&D%dFz`Yz7)99vo$3XnC|jsmFBnDHBF%ci zD9RS|`j!qxQMN?0UNDNXe=v$Ne=v%&ReX||4n|S7dXunTFp9D@x;4CD z6lEu@7t3$!U=(HR`GQS47)9BJlO@#)Mp3p=r>25YlnuQFgTM<$Q8tu-=`te9o4Ov^ zm-~WIln*-qlRUC#FpBbadXox9QQq;aq)9M}@)7J~FBnC6r)JhmFpBb#y8FFg6y>8d z>jk4I_XndW_XndWpP;Mc1*0gRtgGY&qbQ%M*#iLyMp5n$Mse=Zm=*O`p_-ZJfK(El zqHOqH2y}Fcvf=bZAe0jOQ&XMMDH0E@l@&J2x_$&WUv!FuFFHlS7o8&U<`!uL9i1Za z&L}Ked~u7>DH0!?ES!!`k@%-R-q+D75?`Dx`4F9gbAdxm_D+aS!GX1;3x67TjsY({ zY;t0U&CLP+a^(PS4=UK#EU&%;YK}ywa8|5PT@#&3P++-I1-)0k?0hTM5k~hI)!5|<>md!F}%D>bPDHu ztfm>x-d0}TB|3#8(J35>PT@#&3WwiCXFC#|!jb3{jzp($_>EnjBhe|GchDBLBhe`w ziB922bP7kJQ#cZx!jb3{jzp($Bszuj5A3_5PA?Z<4LTB?!jb3{jzp($`2BZG@T=mE zM5k~hI)(E#Hbes*iB922bPA_q8Lmisxfq@8NOTHEqEk2$ox+jm z6plova3nf~Bhe`wiB922bP7kJQ#fy7u}?Y@ox+jm6plovaCCGEM@Oe{baV(J34qox=Gb!srx^ zj!xm|=oHR_xQP7)yG3jw{%SZ!w=g<|qoY$eIy!}uHSbV#ii)o|l452>H+3Y(kVL0& zn&xvuCDAFIi~3^;b0j*2Bhe`wiB92kiB3_GrTQVWM5m}|RI5Pi=oDZ+1|!iaDpn|O z9h2x375?ZH75?ZH6>F3$(@{sKs938w!ihk^=oA&}RFR}l&r1o0gR6goOZMYH;v zE=Y6=FtjAFhLwX;D=DK>RF=JW7;SQ&wh;PZlfL#f6LXr8!I9_`PM7EuiTMK|m*^CU zOQwR<(J2y_aN&^mS`s(vmo0R3iiAHpMPer(=Sg&m#I7C8F3~9xyMk57&gc|X4f@nr zN2jPtYEDO|sA|-lj!seKi%wD1JOwk27XiNBUe%(V(9tQXT6vEt&`gX@k+?JyrFqdQ z5|^G=hobr2dEy6dJ-L-)bc%#8Iz<9t4p_bbQY6tS65Z59+~}mDQzUw-`NHbx6p6z; zR!65uWO%HOPLb&4u{t_MBGY4abc#gSV|8?jM3%?u=oE>=Jyu7jNaU!^Qm&3pkvKwW zu;a}-Iz^(lx(mtNA4znIL?88x@PI_LG2#=B$DgaCQzQ!1yOO?LN2f^iQ{M~kMW;wa zRaTPryyz5(LKPR@i%yY*y4Tf#PjCIz^&X&6f0=baaYDxmqv$Z8|zdqC#CN z{5~boDH2s4??tCb)TsL;-HT3G;e^5uKNF+Vpi%yYfQU#6l|0x}v zBGICngnw2?r%1GU{EIp|MWS6DBk5jribRLUd(kNpor)N}!9p)OMPih?M)M6mEn9i1XEMZG7y7o8$8&Evi36p0xg??tCb z%v5F*^KTAFbc)0*kN2WeB#u_alI}&PNX$_k!h6vv67xKNyyz5(1!}RRd(kNp$Eov$ z_o7oImaAKY_o7oIR;h=D->sulB-VJm7o8%pUVS9#UUZ7YMlaoqPLVi81#xSFEvt@B zk=UXJ3-3jzNNn?XFFHkHyP7TOUUZ7YMQV-k2X%Cc#O3OI;l1b-iL2Ef;l1b-iEGvU z!h6vv5_{Au!h6vv5;v)Dh4-RUByRD>vlpEru}{TuZ9)I*=oE>26yIVG7QU^cQzZ6# zyceA!aj(bY69$P+k+_l<6E8Z&j84qRt8RuMG#%uQ#8rJT`2--Zx^8)!UYWW@fXG{~ zKgjB|_Te0~x2(AUALm(Kl34&p*6&H8~4i9Gqs>! zpm1%3t4Q^1EpRDlIU0hawV;54SuO;}XhA*&MCGoYqXiBHKV#2ZJx>Hdn*!i48`TR% z5XzyTgRQw(XUV4E=5-J((SpMvu#&jJu0D=}K;e4pq+`G>)!Zg4Zx*;^?@I*AmL_@E0dkXE=Wtw0J% zeENkusI#IxxD{b!i1s zNa9nsuvwT^I5Mq33Q2qv7dG3|3LDc3q>#jCa@b*}6$mJ=eISJ-KET5mNGlvjE097G zpXA{Dz)K45e^w4@bC zA&E~1!{(s0!rZh1DJ1oZ@OKOteEO136iTKIf1t2U2K;hS;}ukUkyeAo4oTzHRHyMN z4#fLJ%!}wDaZWm4>J;%w(c-1Fikdv?Z1IP<3fDhY8T+y#OLRLtg@;)Ku3&t^=dgRR0OI#9*kY=kWz^ z6c`w#CaEu^IxtGjZv&&${5CL3&2Iyv)ciIuO3nWYj8aqcFbekqqtw*wZuM?iYDV(L ziKpmu7c4Mp#@vI1bYPU4ahml4qtuLlT2j5hC^eHm71j%kQZrR6dx24ErWtKCwOI#7 zshQyj>jg%sncXU^7Z{~x-eO_Bz$i5f^)AQ@j8d~mvtD47n#G#+0;AL{(d-orjB*D& z%8?&$l^={+$px_$;16)o2Gw_07lsT+ax;L+28UXoZ3QU^w)7nOkKV&k3-(ZwhS1<^7=GP!q@C0rgD&L17 zv<_rebtQLma&TIGMe24x6Uo(A@i0=~?q4Nio%Vr!$E;Uj!?wHb7`|dG(P`@zP=#)8 zn`szzi|J;t5CGEy`hi`dSpZBkl1SZB&0c}s#L?L24Na_unb2&IokJ6k(dD!_OG&&)>*s@9S)a(k z?!{V$#;LE9*Q4R^ie2Emjd5qh*$OVn)xr#5J2xis=WP&p@nf)^8xxth2m(EG6}EF@ zB6pktL9=90*v^fK^gj)P77=heHzx84{qW{?Zwmf>9t7T(7TfXVA>q(ZnSj$cs;5XSih&u33_|K#JZjpn>0|YEHi@Dr-Q9>!Dd#0#B=Iw7zvwf zQ+!2@R+eZz4Hc~rgd|!|L&Y}GGLReUQUiH!)G!(v^hXOiT2F&7T2F)5+B#ZK2L@@f zVh2qQ2RSEM@exh350k%3_2FF@Zpo7lj9{HQ1!W+)?MdOrSRYaI+_y2h*cORua2N0) zG@_Ik!I2nD$?AX8dM8LTS>3Ax*5AcoPPXuDS|-tXNKe+-NC}+_(oEJ=QtJb>U2^#O zDXm4gTqbLqsI?HJnXEmMS|!&*JZeWu>pR-2TR^RE#a7)Z)LOC-;_S1i!ZY+CS%qAo zKZ_4Zx@WDu4&udc9wsfQEiCa_I5y=&*wmqJXT~^;mg2XsnOx4kbZ(w!;P(quS~)ku zrGRtBd{o0bjwI?F6qR1y>#fQ z963Ft*G^+M_mHkRoqgG3D9(SATi9Veq>;~Huk?_XJd;h|gKyI%&tm)bcwsJdx3Zy( zVBH#^+*MSfj8HAe8I2W(kM!=u8*5W{;(_%9yVrNdomM?=Asf?o;um1GYVlOh-rQ3TJxI;bF z9(j;Oc+HNUYL7IX3xRirfu3rQjGwS%s&T_P;@uTQa;)}JCQ z_OG9^rkk!17W>zi$ZkF$EcUMq-Pd}$-gILB%FunSTQrOPtA*93^$g8!XCxnv#IX4S zezVnR*vR1zByWqn8BDgKBO=c!ga1gJE@C>Q#eDGy;^RepNm@(_;-MIeVex1 zhOxcYo41Cq;&Sj9b@H zYK=o?iCfoEngA{6^BpIopUFKGgw}~F8`o3rktJ?j$B-m6yTq;Q7(bR~uIYtKLdW>^ zX*0K~AGH$_kfH<6G{g*E(q`Pcj)|w!Oh5W0aqBvs*+DZBx31%vAJb+g2HHTQF51kb zfGcKn+`0~b+`0~b+`0~b+`5k6#I5Ui&Vs2_+&VTMBJ!dvge{g|`XJHkM&y@4QAe*E zk$>a_G!#QPjksQ&1DdWedfkYdRG*1tb@aLsx2mORzEt$O5&r0PBmST^OI{tlZp7{X z7jthOA4QeLkJjy~?gR*QLqa8xP$Zp&5VDd$LIOz$1d@=DG+~JXvWS4Ph=42(Y7{}- zQ2}vBMa5+h6%`c~1rZhZ4M*H@#)VPlH#+0)`+m=@?xdaf-skiFdwf1A&bjy8bI(2Z z+@)?+*Vkn=dfnIuTvnskjoqcb!rG4+IY{)nu@9+T!fN!ov5zPXXQ9#S#y+af5i>M; z-PmaKy0K3xy(!h`bz`H^>&8Ci=4$l1vC-&tW1n$zHG19HeQG_%E9OSQa2k79rQjA1 z2ea7QjLl)|l4oJkGm@Y4p^uaI;b6~`Ea-K~ozUyX7Sf-BURU?X7LXdfuI`a|G(ukU zs5=n8VVSik|n;rur!Ky80;ey86xfb7~kpM6YY;K(A}) zK(A})K(A{!ej_Us^ty)QN3hG2SZnBrwexyG&D}~jT%*@D+^c9BKVm}kx`z8)R-@N7 z-0!j)y{_S}F00Y&8g{y@Mz3pl!0lv>Ue~b8jbe>n*YL0_tkLTlqS5Ob9&;m6qt`V= zqt`V=qt`V=qt`V=qt`V&EfsMAO(J?-!!v3?EBYjiUe~ZstwW0==yeST714+E@jcP& z8onjgLm0hoBV-4pHtbhDp+wN@8V+cB9)h#sd6kHC^gI3Cm9AuE@@fs&JSNB&ct(U% z@x1C54Eb@vI;3dyx^cl9LCdS7jNAoVuhcrhA-cLmVaM<9h$c-FKLb6iuO9B9|*bxnO9VNIO+nwGgUpP<(@ zt=KE`kw&j;TB$=*qt`X9UMG1Py{;(=y{;(=y{_q8Zkf0V<+9V%{+yoj#KNWv^2B
rhy255nI8{b1QoZyS5k>}7Cf?k*WIm}eaozUx= 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