35
#include "ipeobject.h"
37
38
// --------------------------------------------------------------------
39
class IPE_EXPORT IpeGroup : public IpeFillable {
41
typedef std::vector<const IpeObject *> List;
44
typedef List::const_iterator const_iterator;
47
explicit IpeGroup(IpeRepository *rep, const IpeXmlAttributes &attr);
48
IpeGroup(const IpeGroup &rhs);
50
IpeGroup &operator=(const IpeGroup &rhs);
51
virtual IpeObject *Clone() const;
53
virtual IpeGroup *AsGroup();
55
virtual TPinned pinned() const;
57
virtual void Accept(IpeVisitor &visitor) const;
58
virtual void SaveAsXml(IpePainter &painter, IpeStream &stream,
59
IpeString layer) const;
60
virtual void Draw(IpePainter &painter) const;
61
virtual void AddToBBox(IpeRect &box, const IpeMatrix &m) const;
62
virtual double Distance(const IpeVector &v, const IpeMatrix &m,
64
virtual void SnapVtx(const IpeVector &mouse, const IpeMatrix &m,
65
IpeVector &pos, double &bound) const;
66
virtual void SnapBnd(const IpeVector &mouse, const IpeMatrix &m,
67
IpeVector &pos, double &bound) const;
69
//! Return number of component objects.
70
inline int size() const { return iImp->iObjects.size(); }
71
//! Return iterator for first object.
72
inline const_iterator begin() const { return iImp->iObjects.begin(); }
73
//! Return iterator for end of sequence.
74
inline const_iterator end() const { return iImp->iObjects.end(); }
76
void push_back(const IpeObject *);
78
void SaveComponentsAsXml(IpePainter &painter, IpeStream &stream) const;
80
virtual void CheckStyle(const IpeStyleSheet *sheet,
81
IpeAttributeSeq &seq) const;
83
//! Return font size of text objects in the group.
84
inline IpeAttribute TextSize() const { return iTextSize; }
85
//! Return size of mark objects in the group.
86
inline IpeAttribute MarkSize() const { return iMarkSize; }
87
//! Return shape of mark objects in the group.
88
inline int MarkShape() const { return iMarkShape; }
90
//! Does this group contain any text objects?
91
inline bool HasTexts() const { return iImp->iHasTexts; }
92
//! Does this group contain any mark objects?
93
inline bool HasMarks() const { return iImp->iHasMarks; }
95
void SetTextSize(IpeAttribute size);
96
void SetMarkSize(IpeAttribute size);
97
void SetMarkShape(int shape);
100
void SaveGroupAttributesAsXml(IpePainter &painter, IpeStream &stream) const;
103
IpeAttribute iTextSize;
104
IpeAttribute iMarkSize;
44
class Group : public Object {
46
typedef std::vector<Object *> List;
49
typedef List::const_iterator const_iterator;
52
Group(const Group &rhs);
55
explicit Group(const XmlAttributes &attr);
57
Group &operator=(const Group &rhs);
58
virtual Object *clone() const;
60
virtual Group *asGroup();
62
virtual Type type() const;
64
virtual TPinned pinned() const;
66
virtual void accept(Visitor &visitor) const;
68
virtual void saveAsXml(Stream &stream, String layer) const;
69
virtual void draw(Painter &painter) const;
70
virtual void drawSimple(Painter &painter) const;
71
virtual void addToBBox(Rect &box, const Matrix &m, bool cp) const;
72
virtual double distance(const Vector &v, const Matrix &m,
74
virtual void snapVtx(const Vector &mouse, const Matrix &m,
75
Vector &pos, double &bound) const;
76
virtual void snapBnd(const Vector &mouse, const Matrix &m,
77
Vector &pos, double &bound) const;
79
inline const Shape &clip() const { return iClip; }
80
void setClip(const Shape &clip);
82
//! Return number of component objects.
83
inline int count() const { return iImp->iObjects.size(); }
84
//! Return object at index \a i.
85
inline const Object *object(int i) const { return iImp->iObjects[i]; }
86
//! Return iterator for first object.
87
inline const_iterator begin() const { return iImp->iObjects.begin(); }
88
//! Return iterator for end of sequence.
89
inline const_iterator end() const { return iImp->iObjects.end(); }
91
void push_back(Object *);
93
void saveComponentsAsXml(Stream &stream) const;
95
virtual void checkStyle(const Cascade *sheet, AttributeSeq &seq) const;
97
virtual bool setAttribute(Property prop, Attribute value,
98
Attribute stroke, Attribute fill);
107
TPinned iPinned; // is any of the objects in the list pinned?
118
116
// --------------------------------------------------------------------