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;
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 ();
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;
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 ()
{
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) {
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 ();
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;
};
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));
TimeAxisViewItem::Visibility);
virtual void region_resized (ARDOUR::Change);
- void region_moved (void *);
virtual void region_muted ();
void region_locked ();
void region_opacity ();
{
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);
int
SMFSource::open()
{
- cerr << "Opening SMF file " << path() << " writeable: " << writable() << endl;
+ //cerr << "Opening SMF file " << path() << " writeable: " << writable() << endl;
assert(writable()); // FIXME;
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 {