group.h
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
00028 #include "item.h"
00029 #include <list>
00030
00031 namespace gccv {
00032
00033 class Group: public Item
00034 {
00035 public:
00036 Group (Canvas *canvas);
00037 Group (Canvas *canvas, double x, double y);
00038 Group (Group *parent, ItemClient *client = NULL);
00039 Group (Group *parent, double x, double y, ItemClient *client = NULL);
00040 virtual ~Group();
00041
00042 void AddChild (Item *item);
00043 void RemoveChild (Item *item);
00044 void MoveToFront (Item *item);
00045 void MoveToBack (Item *item);
00046
00047 Item *GetFirstChild (std::list<Item *>::iterator &it);
00048 Item *GetNextChild (std::list<Item *>::iterator &it);
00049
00050 void AdjustBounds (double &x0, double &y0, double &x1, double &y1) const;
00051 void SetPosition (double x, double y);
00052
00053
00054 double Distance (double x, double y, Item **item) const;
00055 bool Draw (cairo_t *cr, double x0, double y0, double x1, double y1, bool is_vector) const;
00056 void Move (double x, double y);
00057
00058 protected:
00059 void UpdateBounds ();
00060
00061 private:
00062 std::list<Item *> m_Children;
00063 double m_x, m_y;
00064 };
00065
00066 }
00067
00068 #endif // GCCV_GROUP_H