18#ifndef FLOWCANVAS_ITEM_HPP
19#define FLOWCANVAS_ITEM_HPP
26#include <boost/enable_shared_from_this.hpp>
27#include <boost/shared_ptr.hpp>
29#include <libgnomecanvasmm.h>
42class Item :
public Gnome::Canvas::Group
43 ,
public boost::enable_shared_from_this<Item>
47 const std::string&
name,
61 virtual void move(
double dx,
double dy) = 0;
63 virtual void zoom(
double z) {}
70 _menu->popup(button, activate_time);
90 bool is_within(
const Gnome::Canvas::Rect& rect)
const;
149typedef std::list<boost::shared_ptr<Item> >
ItemList;
157 return (x > property_x() && x < property_x() +
_width
158 && y > property_y() && y < property_y() +
_height);
165 const double x1 = rect.property_x1();
166 const double y1 = rect.property_y1();
167 const double x2 = rect.property_x2();
168 const double y2 = rect.property_y2();
170 if (x1 < x2 && y1 < y2) {
171 return (property_x() > x1
173 && property_x() +
width() < x2
174 && property_y() +
height() < y2);
175 }
else if (x2 < x1 && y2 < y1) {
176 return (property_x() > x2
178 && property_x() +
width() < x1
179 && property_y() +
height() < y1);
180 }
else if (x1 < x2 && y2 < y1) {
181 return (property_x() > x1
183 && property_x() +
width() < x2
184 && property_y() +
height() < y1);
185 }
else if (x2 < x1 && y1 < y2) {
186 return (property_x() > x2
188 && property_x() +
width() < x1
189 && property_y() +
height() < y2);
An item on a Canvas.
Definition: Item.hpp:44
virtual void set_border_color(uint32_t c)
Definition: Item.hpp:97
virtual void set_minimum_width(double w)
Definition: Item.hpp:57
void set_menu(Gtk::Menu *m)
Definition: Item.hpp:80
boost::weak_ptr< Item > partner()
Definition: Item.hpp:110
const boost::weak_ptr< Canvas > _canvas
Definition: Item.hpp:134
boost::weak_ptr< Item > _partner
Definition: Item.hpp:136
void set_partner(boost::shared_ptr< Item > partner)
Set the partner of this node.
Definition: Item.hpp:109
double _height
Definition: Item.hpp:142
virtual void set_base_color(uint32_t c)
Definition: Item.hpp:98
bool point_is_within(double x, double y) const
Returns whether or not the point x, y (world units) is within the item.
Definition: Item.hpp:155
double _minimum_width
Definition: Item.hpp:140
sigc::signal< void, double, double > signal_dropped
Definition: Item.hpp:121
double _width
Definition: Item.hpp:141
sigc::signal< void, double, double > signal_dragged
Definition: Item.hpp:120
virtual void select_tick()=0
Gtk::Menu * _menu
Definition: Item.hpp:138
virtual void create_menu()
Definition: Item.hpp:77
sigc::signal< void > signal_pointer_entered
Definition: Item.hpp:112
bool on_event(GdkEvent *event)
virtual void on_double_click(GdkEventButton *ev)
Gtk::Menu * menu() const
Definition: Item.hpp:79
virtual void zoom(double z)
Definition: Item.hpp:63
virtual void set_default_base_color()=0
virtual ~Item()
Definition: Item.hpp:52
virtual void set_width(double w)=0
const std::string & name() const
Definition: Item.hpp:93
virtual void set_height(double h)=0
sigc::signal< void > signal_selected
Definition: Item.hpp:114
sigc::signal< void, GdkEventButton * > signal_double_clicked
Definition: Item.hpp:118
virtual void store_location()
Definition: Item.hpp:88
virtual void on_drag(double dx, double dy)
uint32_t _border_color
Definition: Item.hpp:143
bool selected() const
Definition: Item.hpp:54
uint32_t _color
Definition: Item.hpp:144
sigc::signal< void > signal_pointer_exited
Definition: Item.hpp:113
bool _selected
Definition: Item.hpp:145
bool popup_menu(guint button, guint32 activate_time)
Definition: Item.hpp:66
sigc::signal< void, GdkEventButton * > signal_clicked
Definition: Item.hpp:117
virtual void move(double dx, double dy)=0
uint32_t base_color() const
Definition: Item.hpp:96
double width() const
Definition: Item.hpp:82
sigc::signal< void > signal_unselected
Definition: Item.hpp:115
bool is_within(const Gnome::Canvas::Rect &rect) const
Definition: Item.hpp:163
double height() const
Definition: Item.hpp:83
boost::weak_ptr< Canvas > canvas() const
Definition: Item.hpp:64
Item(boost::shared_ptr< Canvas > canvas, const std::string &name, double x, double y, uint32_t color)
std::string _name
Definition: Item.hpp:139
virtual void on_click(GdkEventButton *ev)
virtual void set_selected(bool s)
virtual void set_name(const std::string &n)
Definition: Item.hpp:94
virtual void load_location()
Definition: Item.hpp:87
FlowCanvas namespace, everything is defined under this.
Definition: Canvas.hpp:38
std::list< boost::shared_ptr< Item > > ItemList
Definition: Item.hpp:149