X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Foutline.cc;h=fcb7b75d40c85779a3727aa4b541c2d129196dc8;hb=d2371a6a903e226466fa4bdba2c6cb0b7f390664;hp=8db2c27f8fec9ac3f27de1bb5f5d7495136c27c7;hpb=30968b854257cb5f9159ca59589f783c85615601;p=ardour.git diff --git a/libs/canvas/outline.cc b/libs/canvas/outline.cc index 8db2c27f8f..fcb7b75d40 100644 --- a/libs/canvas/outline.cc +++ b/libs/canvas/outline.cc @@ -1,80 +1,77 @@ +/* + 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) +Outline::set_outline_color (Gtkmm2ext::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 Outline::setup_outline_context (Cairo::RefPtr context) const { - set_source_rgba (context, _outline_color); + Gtkmm2ext::set_source_rgba (context, _outline_color); context->set_line_width (_outline_width); } -void -Outline::add_outline_state (XMLNode* node) const -{ - node->add_property ("outline-color", string_compose ("%1", _outline_color)); - node->add_property ("outline", _outline ? "yes" : "no"); - node->add_property ("outline-width", string_compose ("%1", _outline_width)); -} - -void -Outline::set_outline_state (XMLNode const * node) -{ - _outline_color = atoll (node->property("outline-color")->value().c_str()); - _outline = PBD::string_is_affirmative (node->property("outline")->value().c_str()); - _outline_width = atof (node->property("outline-width")->value().c_str()); - - _bounding_box_dirty = true; -}