xf->length(), false, TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowFrame)),
crossfade (xf),
left_view (lview),
- right_view (rview)
-
+ right_view (rview)
{
_valid = true;
_visible = true;
fade_out->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeLine.get();
fade_out->property_width_pixels() = 1;
- set_height (get_time_axis_view().current_height());
-
/* no frame around the xfade or overlap rects */
frame->property_outline_what() = 0;
/* never show the vestigial frame */
-
vestigial_frame->hide();
show_vestigial = false;
all_crossfade_properties.add (ARDOUR::Properties::follow_overlap);
crossfade_changed (all_crossfade_properties);
- crossfade->PropertyChanged.connect (*this, ui_bind (&CrossfadeView::crossfade_changed, this, _1), gui_context());
+ crossfade->PropertyChanged.connect (*this, invalidator (*this), ui_bind (&CrossfadeView::crossfade_changed, this, _1), gui_context());
+ crossfade->FadesChanged.connect (*this, invalidator (*this), ui_bind (&CrossfadeView::crossfade_fades_changed, this), gui_context());
ColorsChanged.connect (sigc::mem_fun (*this, &CrossfadeView::color_handler));
}
}
void
-CrossfadeView::set_height (double height)
+CrossfadeView::set_height (double h)
{
- double h = 0;
- if (height <= TimeAxisView::hSmaller) {
- h = height - 3;
- } else {
- h = height - NAME_HIGHLIGHT_SIZE - 3;
+ if (h > TimeAxisView::preset_height (HeightSmall)) {
+ h -= NAME_HIGHLIGHT_SIZE;
}
TimeAxisViewItem::set_height (h);
- _height = h;
redraw_curves ();
}
for (int i = 0, pci = 0; i < npoints; ++i) {
Art::Point &p = (*points)[pci++];
- p.set_x(i);
- p.set_y(2.0 + _height - (_height * vec[i]));
+ p.set_x (i + 1);
+ p.set_y (_height - ((_height - 2) * vec[i]));
}
+
fade_in->property_points() = *points;
crossfade->fade_out().curve().get_vector (0, crossfade->length(), vec, npoints);
+
for (int i = 0, pci = 0; i < npoints; ++i) {
Art::Point &p = (*points)[pci++];
- p.set_x(i);
- p.set_y(2.0 + _height - (_height * vec[i]));
+ p.set_x (i + 1);
+ p.set_y (_height - ((_height - 2) * vec[i]));
}
+
fade_out->property_points() = *points;
delete [] vec;
group->hide();
}
+void
+CrossfadeView::crossfade_fades_changed ()
+{
+ redraw_curves ();
+}