00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef FLOWCANVAS_ELLIPSE_HPP
00019 #define FLOWCANVAS_ELLIPSE_HPP
00020
00021 #include <string>
00022 #include <map>
00023 #include <algorithm>
00024 #include <boost/shared_ptr.hpp>
00025 #include <libgnomecanvasmm.h>
00026 #include <flowcanvas/Connectable.hpp>
00027 #include <flowcanvas/Item.hpp>
00028
00029 namespace FlowCanvas {
00030
00031 class Canvas;
00032
00033
00041 class Ellipse : public Item, public Connectable
00042 {
00043 public:
00044 Ellipse(boost::shared_ptr<Canvas> canvas,
00045 const std::string& name,
00046 double x,
00047 double y,
00048 double x_radius,
00049 double y_radius,
00050 bool show_title = true);
00051
00052 virtual ~Ellipse();
00053
00054 Gnome::Art::Point src_connection_point() {
00055 return Gnome::Art::Point(property_x(), property_y());
00056 }
00057
00058 Gnome::Art::Point dst_connection_point(const Gnome::Art::Point& src);
00059
00060 void add_connection(boost::shared_ptr<Connection> c);
00061
00062 bool point_is_within(double x, double y);
00063
00064 void zoom(double z);
00065 void resize();
00066
00067 virtual void move(double dx, double dy);
00068 virtual void move_to(double x, double y);
00069
00070 virtual void load_location() {}
00071 virtual void store_location() {}
00072
00073 virtual void set_name(const std::string& n);
00074
00075 void set_width(double w);
00076
00077 void set_height(double h);
00078
00079 double border_width() const { return _border_width; }
00080 void set_border_width(double w);
00081
00082 void select_tick();
00083 void set_selected(bool b);
00084
00085 void set_highlighted(bool b);
00086 void set_border_color(uint32_t c);
00087 void set_base_color(uint32_t c);
00088 void set_default_base_color();
00089
00090 protected:
00091 bool is_within(const Gnome::Canvas::Rect& rect);
00092
00093 double _border_width;
00094 bool _title_visible;
00095
00096 Gnome::Canvas::Ellipse _ellipse;
00097 Gnome::Canvas::Text* _label;
00098 };
00099
00100
00101 }
00102
00103 #endif // FLOWCANVAS_ELLIPSE_HPP