summaryrefslogtreecommitdiff
path: root/gtk2_ardour/tape_region_view.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-08-01 17:19:38 +0000
committerDavid Robillard <d@drobilla.net>2006-08-01 17:19:38 +0000
commit79fc27de2ef9db51a8c7c69764b663a9921c5a40 (patch)
tree09d5e86fa212f2b8dde0811b2c9e8cc7cfbc7136 /gtk2_ardour/tape_region_view.cc
parent9d5d82b4df5b3510177fd31557ac765f46778fe8 (diff)
Mostly Cosmetic/Design changes to bring trunk and midi branch closer
git-svn-id: svn://localhost/ardour2/branches/midi@733 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/tape_region_view.cc')
-rw-r--r--gtk2_ardour/tape_region_view.cc101
1 files changed, 101 insertions, 0 deletions
diff --git a/gtk2_ardour/tape_region_view.cc b/gtk2_ardour/tape_region_view.cc
new file mode 100644
index 0000000000..bd5ce8af02
--- /dev/null
+++ b/gtk2_ardour/tape_region_view.cc
@@ -0,0 +1,101 @@
+/*
+ Copyright (C) 2006 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 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 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ $Id$
+*/
+
+#include <cmath>
+#include <algorithm>
+
+#include <gtkmm.h>
+
+#include <gtkmm2ext/gtk_ui.h>
+
+#include <ardour/playlist.h>
+#include <ardour/audioregion.h>
+#include <ardour/audiosource.h>
+#include <ardour/audio_diskstream.h>
+
+#include "tape_region_view.h"
+#include "audio_time_axis.h"
+#include "gui_thread.h"
+
+#include "i18n.h"
+
+using namespace sigc;
+using namespace ARDOUR;
+using namespace PBD;
+using namespace Editing;
+using namespace ArdourCanvas;
+
+const TimeAxisViewItem::Visibility TapeAudioRegionView::default_tape_visibility
+ = TimeAxisViewItem::Visibility (
+ TimeAxisViewItem::ShowNameHighlight |
+ TimeAxisViewItem::ShowFrame |
+ TimeAxisViewItem::HideFrameRight |
+ TimeAxisViewItem::FullWidthNameHighlight);
+
+TapeAudioRegionView::TapeAudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv,
+ AudioRegion& r,
+ double spu,
+ Gdk::Color& basic_color)
+
+ : AudioRegionView (parent, tv, r, spu, basic_color,
+ TimeAxisViewItem::Visibility ((r.position() != 0) ? default_tape_visibility :
+ TimeAxisViewItem::Visibility (default_tape_visibility|TimeAxisViewItem::HideFrameLeft)))
+{
+}
+
+void
+TapeAudioRegionView::init (Gdk::Color& basic_color, bool wfw)
+{
+ AudioRegionView::init(basic_color, wfw);
+
+ /* every time the wave data changes and peaks are ready, redraw */
+
+ for (uint32_t n = 0; n < audio_region().n_channels(); ++n) {
+ audio_region().source(n).PeaksReady.connect (bind (mem_fun(*this, &TapeAudioRegionView::update), n));
+ }
+
+}
+
+TapeAudioRegionView::~TapeAudioRegionView()
+{
+}
+
+void
+TapeAudioRegionView::update (uint32_t n)
+{
+ /* check that all waves are build and ready */
+
+ if (!tmp_waves.empty()) {
+ return;
+ }
+
+ ENSURE_GUI_THREAD (bind (mem_fun(*this, &TapeAudioRegionView::update), n));
+
+ /* this triggers a cache invalidation and redraw in the waveview */
+
+ waves[n]->property_data_src() = &_region;
+}
+
+void
+TapeAudioRegionView::set_frame_color ()
+{
+ fill_opacity = 255;
+ TimeAxisViewItem::set_frame_color ();
+}