*/
#include "control_point.h"
-#include "diamond.h"
#include "automation_line.h"
#include "ardour_ui.h"
#include "public_editor.h"
+#include "canvas/rectangle.h"
+
#include "i18n.h"
using namespace std;
-using namespace sigc;
using namespace ARDOUR;
using namespace PBD;
-using namespace Gnome; // for Canvas
+
+PBD::Signal1<void, ControlPoint *> ControlPoint::CatchDeletion;
ControlPoint::ControlPoint (AutomationLine& al)
: _line (al)
_y = 0;
_shape = Full;
_size = 4.0;
- _selected = false;
-
- _item = new Canvas::SimpleRect (_line.canvas_group());
- _item->property_draw() = true;
- _item->property_fill() = false;
- _item->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_ControlPointFill.get();
- _item->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_ControlPointOutline.get();
- _item->property_outline_pixels() = 1;
+
+ _item = new ArdourCanvas::Rectangle (&_line.canvas_group());
+ _item->set_fill (true);
+ _item->set_fill_color (ARDOUR_UI::config()->color ("control point fill"));
+ _item->set_outline_color (ARDOUR_UI::config()->color ("control point outline"));
_item->set_data ("control_point", this);
- _item->signal_event().connect (mem_fun (this, &ControlPoint::event_handler));
+ _item->Event.connect (sigc::mem_fun (this, &ControlPoint::event_handler));
hide ();
- set_visible (false);
}
ControlPoint::ControlPoint (const ControlPoint& other, bool /*dummy_arg_to_force_special_copy_constructor*/)
_y = other._y;
_shape = other._shape;
_size = other._size;
- _selected = false;
- _item = new Canvas::SimpleRect (_line.canvas_group());
- _item->property_fill() = false;
- _item->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_ControlPointOutline.get();
- _item->property_outline_pixels() = 1;
+ _item = new ArdourCanvas::Rectangle (&_line.canvas_group());
+ _item->set_fill (true);
+ _item->set_outline_color (ARDOUR_UI::config()->color ("control point outline"));
/* NOTE: no event handling in copied ControlPoints */
hide ();
- set_visible (false);
}
ControlPoint::~ControlPoint ()
{
+ CatchDeletion (this); /* EMIT SIGNAL */
+
delete _item;
}
_item->show();
}
-void
-ControlPoint::set_visible (bool yn)
+bool
+ControlPoint::visible () const
{
- _item->property_draw() = (gboolean) yn;
+ return _item->visible ();
}
void
}
void
-ControlPoint::show_color (bool entered, bool hide_too)
+ControlPoint::set_color ()
{
- uint32_t color = 0;
-
- if (entered) {
- if (_selected) {
- color = ARDOUR_UI::config()->canvasvar_EnteredControlPointSelected.get();
- set_visible(true);
- } else {
- color = ARDOUR_UI::config()->canvasvar_EnteredControlPointOutline.get();
- if (hide_too) {
- set_visible(false);
- }
- }
-
+ if (_selected) {
+ _item->set_outline_color(ARDOUR_UI::config()->color ("control point selected outline"));;
+ _item->set_fill_color(ARDOUR_UI::config()->color ("control point selected fill"));
} else {
- if (_selected) {
- color = ARDOUR_UI::config()->canvasvar_ControlPointSelected.get();
- set_visible(true);
- } else {
- color = ARDOUR_UI::config()->canvasvar_ControlPointOutline.get();
- if (hide_too) {
- set_visible(false);
- }
- }
+ _item->set_outline_color(ARDOUR_UI::config()->color ("control point outline"));
+ _item->set_fill_color(ARDOUR_UI::config()->color ("control point fill"));
}
-
- _item->property_outline_color_rgba() = color;
- _item->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_ControlPointFill.get();
}
void
ControlPoint::set_size (double sz)
{
_size = sz;
-
-#if 0
- if (_size > 6.0) {
- item->property_fill() = (gboolean) TRUE;
- } else {
- item->property_fill() = (gboolean) FALSE;
- }
-#endif
-
move_to (_x, _y, _shape);
}
break;
}
- _item->property_x1() = x1;
- _item->property_x2() = x2;
- _item->property_y1() = y - half_size;
- _item->property_y2() = y + half_size;
+ _item->set (ArdourCanvas::Rect (x1, y - half_size, x2, y + half_size));
_x = x;
_y = y;
_shape = shape;
}
+ArdourCanvas::Item&
+ControlPoint::item() const
+{
+ return *_item;
+}