projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix crash on clear option for automation tracks (#3195). Also fix state change signa...
[ardour.git]
/
gtk2_ardour
/
crossfade_view.cc
diff --git
a/gtk2_ardour/crossfade_view.cc
b/gtk2_ardour/crossfade_view.cc
index 63868ca8955e83f847ab8f4996909c62a1741bd8..823934ef4ed81f821f2d3624a8d5e4225c54d6ea 100644
(file)
--- a/
gtk2_ardour/crossfade_view.cc
+++ b/
gtk2_ardour/crossfade_view.cc
@@
-25,6
+25,7
@@
#include "canvas-simplerect.h"
#include "canvas-curve.h"
#include "crossfade_view.h"
#include "canvas-simplerect.h"
#include "canvas-curve.h"
#include "crossfade_view.h"
+#include "gui_thread.h"
#include "rgb_macros.h"
#include "audio_time_axis.h"
#include "public_editor.h"
#include "rgb_macros.h"
#include "audio_time_axis.h"
#include "public_editor.h"
@@
-39,7
+40,7
@@
using namespace Editing;
using namespace Gnome;
using namespace Canvas;
using namespace Gnome;
using namespace Canvas;
-
boost::signals2::signal<void(CrossfadeView*)> CrossfadeView::GoingAway
;
+
PBD::Signal1<void,CrossfadeView*> CrossfadeView::CatchDeletion
;
CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
RouteTimeAxisView &tv,
CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
RouteTimeAxisView &tv,
@@
-54,8
+55,7
@@
CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
xf->length(), false, TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowFrame)),
crossfade (xf),
left_view (lview),
xf->length(), false, TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowFrame)),
crossfade (xf),
left_view (lview),
- right_view (rview)
-
+ right_view (rview)
{
_valid = true;
_visible = true;
{
_valid = true;
_visible = true;
@@
-68,28
+68,28
@@
CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
fade_out->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeLine.get();
fade_out->property_width_pixels() = 1;
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 */
/* no frame around the xfade or overlap rects */
frame->property_outline_what() = 0;
/* never show the vestigial frame */
-
vestigial_frame->hide();
show_vestigial = false;
group->signal_event().connect (sigc::bind (sigc::mem_fun (tv.editor(), &PublicEditor::canvas_crossfade_view_event), group, this));
vestigial_frame->hide();
show_vestigial = false;
group->signal_event().connect (sigc::bind (sigc::mem_fun (tv.editor(), &PublicEditor::canvas_crossfade_view_event), group, this));
- crossfade_changed (Change (~0));
+ PropertyChange all_crossfade_properties;
+ all_crossfade_properties.add (ARDOUR::Properties::active);
+ all_crossfade_properties.add (ARDOUR::Properties::follow_overlap);
+ crossfade_changed (all_crossfade_properties);
- crossfade->
StateChanged.connect (sigc::mem_fun(*this, &CrossfadeView::crossfade_changed
));
+ crossfade->
PropertyChanged.connect (*this, invalidator (*this), ui_bind (&CrossfadeView::crossfade_changed, this, _1), gui_context(
));
ColorsChanged.connect (sigc::mem_fun (*this, &CrossfadeView::color_handler));
}
CrossfadeView::~CrossfadeView ()
{
ColorsChanged.connect (sigc::mem_fun (*this, &CrossfadeView::color_handler));
}
CrossfadeView::~CrossfadeView ()
{
-
GoingAway
(this) ; /* EMIT_SIGNAL */
+
CatchDeletion
(this) ; /* EMIT_SIGNAL */
}
void
}
void
@@
-106,27
+106,25
@@
CrossfadeView::reset_width_dependent_items (double pixel_width)
}
void
}
void
-CrossfadeView::set_height (double h
eight
)
+CrossfadeView::set_height (double h)
{
{
- double h = 0;
- if (height <= TimeAxisView::hSmaller) {
- h = height - 3;
+ if (h <= TimeAxisView::preset_height (HeightSmall)) {
+ h -= 3.0;
} else {
} else {
- h
= height - NAME_HIGHLIGHT_SIZE - 3
;
+ h
-= NAME_HIGHLIGHT_SIZE + 3.0
;
}
TimeAxisViewItem::set_height (h);
}
TimeAxisViewItem::set_height (h);
- _height = h;
redraw_curves ();
}
void
redraw_curves ();
}
void
-CrossfadeView::crossfade_changed (
Change
what_changed)
+CrossfadeView::crossfade_changed (
const PropertyChange&
what_changed)
{
bool need_redraw_curves = false;
{
bool need_redraw_curves = false;
- if (what_changed
& BoundsChanged
) {
+ if (what_changed
.contains (ARDOUR::bounds_change)
) {
set_position (crossfade->position(), this);
set_duration (crossfade->length(), this);
set_position (crossfade->position(), this);
set_duration (crossfade->length(), this);
@@
-135,11
+133,11
@@
CrossfadeView::crossfade_changed (Change what_changed)
need_redraw_curves = false;
}
need_redraw_curves = false;
}
- if (what_changed
& Crossfade::FollowOverlapChanged
) {
+ if (what_changed
.contains (ARDOUR::Properties::follow_overlap)
) {
need_redraw_curves = true;
}
need_redraw_curves = true;
}
- if (what_changed
& Crossfade::ActiveChanged
) {
+ if (what_changed
.contains (ARDOUR::Properties::active)
) {
/* calls redraw_curves */
active_changed ();
} else if (need_redraw_curves) {
/* calls redraw_curves */
active_changed ();
} else if (need_redraw_curves) {
@@
-188,14
+186,17
@@
CrossfadeView::redraw_curves ()
p.set_x(i);
p.set_y(2.0 + _height - (_height * vec[i]));
}
p.set_x(i);
p.set_y(2.0 + _height - (_height * vec[i]));
}
+
fade_in->property_points() = *points;
crossfade->fade_out().curve().get_vector (0, crossfade->length(), vec, npoints);
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]));
}
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]));
}
+
fade_out->property_points() = *points;
delete [] vec;
fade_out->property_points() = *points;
delete [] vec;
@@
-262,4
+263,3
@@
CrossfadeView::fake_hide ()
{
group->hide();
}
{
group->hide();
}
-