X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Fflag.cc;h=742516604328b1cf555dcc4c0f3ad72c5b7f3e04;hb=305af7a5ceaf650972c991022f5860872cc4ab06;hp=d71dcca36ba5754b6e23b81e508478ac769cec67;hpb=30968b854257cb5f9159ca59589f783c85615601;p=ardour.git diff --git a/libs/canvas/flag.cc b/libs/canvas/flag.cc index d71dcca36b..7425166043 100644 --- a/libs/canvas/flag.cc +++ b/libs/canvas/flag.cc @@ -1,3 +1,22 @@ +/* + 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 "canvas/flag.h" #include "canvas/text.h" #include "canvas/rectangle.h" @@ -6,11 +25,24 @@ using namespace std; using namespace ArdourCanvas; -Flag::Flag (Group* parent, Distance height, Color outline_color, Color fill_color, Duple position) - : Group (parent) - , _height (height) +Flag::Flag (Canvas* canvas, Distance height, Color outline_color, Color fill_color, Duple position) + : Container (canvas) + , _outline_color (outline_color) + , _fill_color (fill_color) +{ + setup (height, position); +} + +Flag::Flag (Item* parent, Distance height, Color outline_color, Color fill_color, Duple position) + : Container (parent) , _outline_color (outline_color) , _fill_color (fill_color) +{ + setup (height, position); +} + +void +Flag::setup (Distance height, Duple position) { _text = new Text (this); _text->set_alignment (Pango::ALIGN_CENTER); @@ -18,7 +50,7 @@ Flag::Flag (Group* parent, Distance height, Color outline_color, Color fill_colo _line = new Line (this); _line->set_outline_color (_outline_color); - set_height (_height); + set_height (height); _rectangle = new Rectangle (this); _rectangle->set_outline_color (_outline_color); @@ -29,6 +61,12 @@ Flag::Flag (Group* parent, Distance height, Color outline_color, Color fill_colo set_position (position); } +void +Flag::set_font_description (Pango::FontDescription font_description) +{ + _text->set_font_description (font_description); +} + void Flag::set_text (string const & text) { @@ -36,14 +74,24 @@ Flag::set_text (string const & text) boost::optional bbox = _text->bounding_box (); assert (bbox); - Duple flag_size (bbox.get().width() + 10, bbox.get().height() + 3); + Duple flag_size (bbox.get().width() + 10, bbox.get().height() + 4); - _text->set_position (flag_size / 2); + _text->set_position (Duple (5, 2)); _rectangle->set (Rect (0, 0, flag_size.x, flag_size.y)); } void -Flag::set_height (Distance) +Flag::set_height (Distance h) { - _line->set (Duple (0, 0), Duple (0, _height)); + _line->set (Duple (0, 0), Duple (0, h)); +} + +bool +Flag::covers (Duple const & point) const +{ + if (_rectangle) { + return _rectangle->covers (point); + } + + return false; }