#include "pbd/convert.h"
#include "ardour/utils.h"
+
+#include "canvas/item.h"
#include "canvas/outline.h"
#include "canvas/utils.h"
#include "canvas/debug.h"
using namespace ArdourCanvas;
-Outline::Outline (Group* parent)
- : Item (parent)
+Outline::Outline (Item& self)
+ : _self (self)
, _outline_color (0x000000ff)
- , _outline_width (0.5)
+ , _outline_width (1.0)
, _outline (true)
{
-
}
void
Outline::set_outline_color (Color color)
{
- begin_change ();
-
- _outline_color = color;
-
- end_change ();
+ if (color != _outline_color) {
+ _self.begin_visual_change ();
+ _outline_color = color;
+ _self.end_visual_change ();
+ }
}
void
Outline::set_outline_width (Distance width)
{
- begin_change ();
-
- _outline_width = width;
-
- _bounding_box_dirty = true;
- end_change ();
-
- DEBUG_TRACE (PBD::DEBUG::CanvasItemsDirtied, "canvas item dirty: outline width change\n");
+ if (width != _outline_width) {
+ _self.begin_change ();
+ _outline_width = width;
+ _self._bounding_box_dirty = true;
+ _self.end_change ();
+ }
}
void
Outline::set_outline (bool outline)
{
- begin_change ();
-
- _outline = outline;
-
- _bounding_box_dirty = true;
- end_change ();
+ if (outline != _outline) {
+ _self.begin_change ();
+ _outline = outline;
+ _self._bounding_box_dirty = true;
+ _self.end_change ();
+ }
}
void