mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 11:46:25 +01:00
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
This commit is contained in:
parent
7ff7f4013d
commit
13151b43f0
8 changed files with 73 additions and 15 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 ();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -112,6 +125,47 @@ MidiRegionView::midi_region() const
|
|||
return boost::dynamic_pointer_cast<MidiRegion>(_region);
|
||||
}
|
||||
|
||||
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 ()
|
||||
{
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -58,6 +58,8 @@ class MidiRegionView : public RegionView
|
|||
|
||||
boost::shared_ptr<ARDOUR::MidiRegion> midi_region() const;
|
||||
|
||||
void set_y_position_and_height (double, double);
|
||||
|
||||
void show_region_editor ();
|
||||
|
||||
GhostRegion* add_ghost (AutomationTimeAxisView&);
|
||||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ();
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ MidiModel::append(double time, size_t size, Byte* in_buffer)
|
|||
{
|
||||
assert(_events.empty() || time >= _events.back().time);
|
||||
|
||||
cerr << "Model event: time = " << time << endl;
|
||||
//cerr << "Model event: time = " << time << endl;
|
||||
|
||||
Byte* my_buffer = new Byte[size];
|
||||
memcpy(my_buffer, in_buffer, size);
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ SMFSource::init (string pathstr, bool must_exist)
|
|||
int
|
||||
SMFSource::open()
|
||||
{
|
||||
cerr << "Opening SMF file " << path() << " writeable: " << writable() << endl;
|
||||
//cerr << "Opening SMF file " << path() << " writeable: " << writable() << endl;
|
||||
|
||||
assert(writable()); // FIXME;
|
||||
|
||||
|
|
@ -149,7 +149,7 @@ SMFSource::open()
|
|||
uint32_t track_size_be = 0;
|
||||
fread(&track_size_be, 4, 1, _fd);
|
||||
_track_size = GUINT32_FROM_BE(track_size_be);
|
||||
cerr << "SMF - read track size " << _track_size << endl;
|
||||
//cerr << "SMF - read track size " << _track_size << endl;
|
||||
|
||||
// We're making a new file
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue