summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-06-09 06:10:30 +0000
committerDavid Robillard <d@drobilla.net>2007-06-09 06:10:30 +0000
commit13151b43f058ae97408a39b4c5160974c512c9ae (patch)
tree538375aa592eda4fd4bd828ff726a73f97f84d61 /gtk2_ardour
parent7ff7f4013dfbbf18d08e397230ad2486fa7ff58f (diff)
Redraw MIDI region views on zoom and track height changes.
Disable excessive/old debug prints. Fix region view heights. git-svn-id: svn://localhost/ardour2/trunk@1982 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_region_view.cc2
-rw-r--r--gtk2_ardour/audio_region_view.h1
-rw-r--r--gtk2_ardour/midi_region_view.cc68
-rw-r--r--gtk2_ardour/midi_region_view.h8
-rw-r--r--gtk2_ardour/region_view.cc2
-rw-r--r--gtk2_ardour/region_view.h1
6 files changed, 70 insertions, 12 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index bc0e3671c3..3fb1a016e4 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -400,7 +400,7 @@ AudioRegionView::region_muted ()
void
AudioRegionView::set_y_position_and_height (double y, double h)
{
- RegionView::set_y_position_and_height(y, h - 2);
+ RegionView::set_y_position_and_height(y, h - 1);
_y_position = y;
_height = h;
diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h
index e581e01146..1facc652a9 100644
--- a/gtk2_ardour/audio_region_view.h
+++ b/gtk2_ardour/audio_region_view.h
@@ -147,7 +147,6 @@ class AudioRegionView : public RegionView
void fade_out_active_changed ();
void region_resized (ARDOUR::Change);
- void region_moved (void *);
void region_muted ();
void region_scale_amplitude_changed ();
void region_renamed ();
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index 1750ece8a4..678f97b6c6 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -89,14 +89,27 @@ MidiRegionView::init (Gdk::Color& basic_color, bool wfd)
if (wfd) {
midi_region()->midi_source(0)->load_model();
-
- begin_write();
- for (size_t i=0; i < midi_region()->midi_source(0)->model()->n_events(); ++i)
- add_event(midi_region()->midi_source(0)->model()->event_at(i));
- end_write();
+ display_events();
}
}
+
+void
+MidiRegionView::display_events()
+{
+ for (std::vector<ArdourCanvas::Item*>::iterator i = _events.begin(); i != _events.end(); ++i)
+ delete *i;
+
+ _events.clear();
+ begin_write();
+
+ for (size_t i=0; i < midi_region()->midi_source(0)->model()->n_events(); ++i)
+ add_event(midi_region()->midi_source(0)->model()->event_at(i));
+
+ end_write();
+}
+
+
MidiRegionView::~MidiRegionView ()
{
in_destructor = true;
@@ -113,6 +126,47 @@ MidiRegionView::midi_region() const
}
void
+MidiRegionView::region_resized (Change what_changed)
+{
+ RegionView::region_resized(what_changed);
+
+ if (what_changed & ARDOUR::PositionChanged) {
+
+ display_events();
+
+ } else if (what_changed & Change (StartChanged)) {
+
+ //cerr << "MIDI RV START CHANGED" << endl;
+
+ } else if (what_changed & Change (LengthChanged)) {
+
+ //cerr << "MIDI RV LENGTH CHANGED" << endl;
+
+ }
+}
+
+void
+MidiRegionView::reset_width_dependent_items (double pixel_width)
+{
+ RegionView::reset_width_dependent_items(pixel_width);
+ assert(_pixel_width == pixel_width);
+
+ display_events();
+}
+
+void
+MidiRegionView::set_y_position_and_height (double y, double h)
+{
+ RegionView::set_y_position_and_height(y, h - 1);
+
+ display_events();
+
+ if (name_text) {
+ name_text->raise_to_top();
+ }
+}
+
+void
MidiRegionView::show_region_editor ()
{
cerr << "No MIDI region editor." << endl;
@@ -150,11 +204,11 @@ MidiRegionView::end_write()
void
MidiRegionView::add_event (const MidiEvent& ev)
{
- printf("Event, time = %f, size = %zu, data = ", ev.time, ev.size);
+ /*printf("Event, time = %f, size = %zu, data = ", ev.time, ev.size);
for (size_t i=0; i < ev.size; ++i) {
printf("%X ", ev.buffer[i]);
}
- printf("\n\n");
+ printf("\n\n");*/
double y1 = trackview.height / 2.0;
if ((ev.buffer[0] & 0xF0) == MIDI_CMD_NOTE_ON) {
diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h
index 597ae646bf..4a00102cec 100644
--- a/gtk2_ardour/midi_region_view.h
+++ b/gtk2_ardour/midi_region_view.h
@@ -57,6 +57,8 @@ class MidiRegionView : public RegionView
virtual void init (Gdk::Color& base_color, bool wait_for_data = false);
boost::shared_ptr<ARDOUR::MidiRegion> midi_region() const;
+
+ void set_y_position_and_height (double, double);
void show_region_editor ();
@@ -82,13 +84,17 @@ class MidiRegionView : public RegionView
Gdk::Color& basic_color,
TimeAxisViewItem::Visibility);
- void region_moved (void *);
+ void region_resized (ARDOUR::Change);
void set_flags (XMLNode *);
void store_flags ();
+
+ void reset_width_dependent_items (double pixel_width);
private:
+ void display_events();
+
std::vector<ArdourCanvas::Item*> _events;
ArdourCanvas::SimpleRect** _active_notes;
};
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index 9ee64d27d7..2d3346df56 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -137,7 +137,7 @@ RegionView::init (Gdk::Color& basic_color, bool wfd)
reset_width_dependent_items ((double) _region->length() / samples_per_unit);
- set_y_position_and_height (0, trackview.height);
+ set_y_position_and_height (0, trackview.height - 2);
_region->StateChanged.connect (mem_fun(*this, &RegionView::region_changed));
diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h
index c444d19fdc..6277354519 100644
--- a/gtk2_ardour/region_view.h
+++ b/gtk2_ardour/region_view.h
@@ -100,7 +100,6 @@ class RegionView : public TimeAxisViewItem
TimeAxisViewItem::Visibility);
virtual void region_resized (ARDOUR::Change);
- void region_moved (void *);
virtual void region_muted ();
void region_locked ();
void region_opacity ();