X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Foutline.cc;h=9416859e59b0a8ef9269c042b211076f01731884;hb=6f7112547658b01594d8cd81a0f52c4edc017e1d;hp=4b2fc39cb8d058b24fa7409686f4381c8f44a60c;hpb=84fb0a8dceda063d58b946cb891c3e21214c8f75;p=ardour.git diff --git a/libs/canvas/outline.cc b/libs/canvas/outline.cc index 4b2fc39cb8..9416859e59 100644 --- a/libs/canvas/outline.cc +++ b/libs/canvas/outline.cc @@ -1,57 +1,74 @@ +/* + Copyright (C) 2011-2013 Paul Davis + Author: Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + #include -#include "pbd/xml++.h" #include "pbd/compose.h" #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