group.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCCV_GROUP_H
00026 #define GCCV_GROUP_H
00027
00030 #include "item.h"
00031 #include <list>
00032
00033 namespace gccv {
00034
00046 class Group: public Item
00047 {
00048 public:
00054 Group (Canvas *canvas);
00062 Group (Canvas *canvas, double x, double y);
00070 Group (Group *parent, ItemClient *client = NULL);
00080 Group (Group *parent, double x, double y, ItemClient *client = NULL);
00084 virtual ~Group();
00085
00093 void AddChild (Item *item);
00100 void RemoveChild (Item *item);
00107 void MoveToFront (Item *item);
00114 void MoveToBack (Item *item);
00115
00121 Item *GetFirstChild (std::list<Item *>::iterator &it);
00127 Item *GetNextChild (std::list<Item *>::iterator &it);
00128
00138 void AdjustBounds (double &x0, double &y0, double &x1, double &y1) const;
00145 void SetPosition (double x, double y);
00146
00147
00156 double Distance (double x, double y, Item **item) const;
00167 bool Draw (cairo_t *cr, double x0, double y0, double x1, double y1, bool is_vector) const;
00174 void Move (double x, double y);
00175
00176 protected:
00177 void UpdateBounds ();
00178
00179 private:
00180 std::list<Item *> m_Children;
00181 double m_x, m_y;
00182 };
00183
00184 }
00185
00186 #endif // GCCV_GROUP_H