Ipelib

Classes | Public Types | Public Member Functions | List of all members
ipe::Group Class Reference
Ipe Objects

`#include <ipegroup.h>`

Inherits ipe::Object.

## Public Types
typedef List::const_iterator | const_iterator
Public Types inherited from ipe::Object
enum | Type { EGroup , EPath , EText , EImage , EReference }

## Public Member Functions
| Group ()
| Group (const Group &rhs)
virtual | ~Group ()
| Group (const XmlAttributes &attr)
Group & | operator= (const Group &rhs)
virtual Object * | clone () const
virtual Group * | asGroup ()
virtual const Group * | asGroup () const
virtual Type | type () const
virtual TPinned | pinned () const
virtual void | accept (Visitor &visitor) const
virtual void | saveAsXml (Stream &stream, String layer) const
virtual void | draw (Painter &painter) const
virtual void | drawSimple (Painter &painter) const
virtual void | addToBBox (Rect &box, const Matrix &m, bool cp) const
virtual double | distance (const Vector &v, const Matrix &m, double bound) const
virtual void | snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
virtual void | snapCtl (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
virtual void | snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
const Shape & | clip () const
void | setClip (const Shape &clip)
String | url () const
void | setUrl (String url)
int | count () const
const Object * | object (int i) const
const_iterator | begin () const
const_iterator | end () const
void | push_back (Object *)
void | saveComponentsAsXml (Stream &stream) const
virtual void | checkStyle (const Cascade *sheet, AttributeSeq &seq) const
virtual Attribute | getAttribute (Property prop) const noexcept
virtual bool | setAttribute (Property prop, Attribute value)
Public Member Functions inherited from ipe::Object
virtual | ~Object ()=0
virtual Text * | asText ()
virtual Path * | asPath ()
virtual Image * | asImage ()
virtual Reference * | asReference ()
void | setPinned (TPinned pin)
TTransformations | transformations () const
void | setTransformations (TTransformations trans)
virtual void | setMatrix (const Matrix &matrix)
const Matrix & | matrix () const

## Additional Inherited Members
Protected Member Functions inherited from ipe::Object
| Object ()
| Object (const AllAttributes &attr)
| Object (const Object &rhs)
| Object (const XmlAttributes &attr)
void | saveAttributesAsXml (Stream &stream, String layer) const
Static Protected Member Functions inherited from ipe::Object
static void | checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
Protected Attributes inherited from ipe::Object
Matrix | iMatrix
TPinned | iPinned: 8
TTransformations | iTransformations: 8

## Detailed Description

The group object.

Ipe objects can be grouped together, and the resulting composite can be used like any Ipe object.

This is an application of the "Composite" pattern.

## Member Typedef Documentation

## ◆ const_iterator

typedef List::const_iterator ipe::Group::const_iterator

## Constructor & Destructor Documentation

## ◆ Group() [1/3]

Group::Group | ( |  | ) |
| explicit

Create empty group (objects can be added later).

References ipe::ENoPin, and ipe::Attribute::NORMAL().

Referenced by clone().

## ◆ Group() [2/3]

Group::Group | ( | const Group & | rhs | ) |

Copy constructor. Constant time — components are not copied!

## ◆ ~Group()

Group::~Group | ( |  | ) |
| virtual

Destructor.

## ◆ Group() [3/3]

Group::Group | ( | const XmlAttributes & | attr | ) |
| explicit

Create empty group with these attributes (objects can be added later).

References clip(), ipe::Shape::countSubPaths(), ipe::ENoPin, ipe::XmlAttributes::has(), ipe::Shape::load(), and ipe::Attribute::NORMAL().

## Member Function Documentation

## ◆ operator=()

Group & Group::operator= | ( | const Group & | rhs | ) |

Assignment operator (constant-time).

## ◆ clone()

Object * Group::clone | ( |  | ) | const
| virtual

Clone a group object (constant-time).

Implements ipe::Object.

References Group().

## ◆ asGroup() [1/2]

Group * Group::asGroup | ( |  | ) |
| virtual

Return pointer to this object.

Reimplemented from ipe::Object.

## ◆ asGroup() [2/2]

const Group * Group::asGroup | ( |  | ) | const
| virtual

Return pointer to this object.

Reimplemented from ipe::Object.

## ◆ type()

Object::Type Group::type | ( |  | ) | const
| virtual

Implements ipe::Object.

References ipe::Object::EGroup.

## ◆ pinned()

TPinned Group::pinned | ( |  | ) | const
| virtual

Return total pinning status of group and its elements.

Reimplemented from ipe::Object.

References ipe::Object::pinned().

## ◆ accept()

void Group::accept | ( | Visitor & | visitor | ) | const
| virtual

Call visitGroup of visitor.

Implements ipe::Object.

References ipe::Visitor::visitGroup().

## ◆ saveAsXml()

void Group::saveAsXml | ( | Stream & | stream,
|  | String | layer
| ) |  | const
| virtual

Save the object in XML format.

Implements ipe::Object.

References ipe::Shape::countSubPaths(), ipe::String::empty(), ipe::Attribute::isNormal(), ipe::Stream::putXmlString(), ipe::Shape::save(), ipe::Object::saveAttributesAsXml(), saveComponentsAsXml(), and ipe::Attribute::string().

## ◆ draw()

void Group::draw | ( | Painter & | painter | ) | const
| virtual

Draw the object.

Implements ipe::Object.

References ipe::Painter::addClipPath(), addToBBox(), begin(), ipe::Rect::center(), ipe::Shape::countSubPaths(), ipe::Shape::draw(), end(), ipe::ETransformationsTranslations, ipe::Rect::height(), ipe::Attribute::isNormal(), ipe::Object::matrix(), ipe::Painter::matrix(), ipe::Painter::newPath(), ipe::Painter::pop(), ipe::Painter::popMatrix(), ipe::Painter::push(), ipe::Painter::pushMatrix(), ipe::Painter::transform(), ipe::Object::transformations(), ipe::Painter::untransform(), and ipe::Rect::width().

## ◆ drawSimple()

void Group::drawSimple | ( | Painter & | painter | ) | const
| virtual

Draw simple version for selecting and transforming.

Implements ipe::Object.

References ipe::Painter::addClipPath(), begin(), ipe::Shape::countSubPaths(), ipe::Shape::draw(), end(), ipe::Object::matrix(), ipe::Painter::newPath(), ipe::Painter::pop(), ipe::Painter::popMatrix(), ipe::Painter::push(), ipe::Painter::pushMatrix(), ipe::Painter::transform(), ipe::Object::transformations(), and ipe::Painter::untransform().

## ◆ addToBBox()

void Group::addToBBox | ( | Rect & | box,
|  | const Matrix & | m,
|  | bool | cp
| ) |  | const
| virtual

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == `false`, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

Implements ipe::Object.

References ipe::Rect::addRect(), ipe::Shape::addToBBox(), begin(), ipe::Rect::clipTo(), ipe::Shape::countSubPaths(), end(), and ipe::Object::matrix().

Referenced by draw().

## ◆ distance()

double Group::distance | ( | const Vector & | v,
|  | const Matrix & | m,
|  | double | bound
| ) |  | const
| virtual

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implements ipe::Object.

References begin(), end(), and ipe::Object::matrix().

## ◆ snapVtx()

void Group::snapVtx | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound
| ) |  | const
| virtual

Compute vertex snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References begin(), end(), and ipe::Object::matrix().

## ◆ snapCtl()

void Group::snapCtl | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound
| ) |  | const
| virtual

Compute control point snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References begin(), end(), and ipe::Object::matrix().

## ◆ snapBnd()

void Group::snapBnd | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound
| ) |  | const
| virtual

Compute boundary snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References begin(), end(), and ipe::Object::matrix().

## ◆ clip()

const Shape& ipe::Group::clip | ( |  | ) | const
| inline

Referenced by Group(), and setClip().

## ◆ setClip()

void Group::setClip | ( | const Shape & | clip | ) |

Set clip path for this group.

Any previously set clip path is deleted.

References clip().

## ◆ url()

String ipe::Group::url | ( |  | ) | const
| inline

Referenced by ipe::PdfWriter::createPageView(), and setUrl().

## ◆ setUrl()

void Group::setUrl | ( | String | url | ) |

Set link destination to use this group as a hyperlink.

References url().

## ◆ count()

int ipe::Group::count | ( |  | ) | const
| inline

Return number of component objects.

## ◆ object()

const Object* ipe::Group::object | ( | int | i | ) | const
| inline

Return object at index i.

## ◆ begin()

const_iterator ipe::Group::begin | ( |  | ) | const
| inline

Return iterator for first object.

Referenced by addToBBox(), checkStyle(), distance(), draw(), drawSimple(), saveComponentsAsXml(), snapBnd(), snapCtl(), snapVtx(), and ipe::BitmapFinder::visitGroup().

## ◆ end()

const_iterator ipe::Group::end | ( |  | ) | const
| inline

Return iterator for end of sequence.

Referenced by addToBBox(), checkStyle(), distance(), draw(), drawSimple(), saveComponentsAsXml(), snapBnd(), snapCtl(), snapVtx(), and ipe::BitmapFinder::visitGroup().

## ◆ push_back()

void Group::push_back | ( | Object * | obj | ) |

Add an object.

Takes ownership of the object. This will panic if the object shares its implementation! The method is only useful right after construction of the group.

References ipe::Object::pinned().

Referenced by ipe::ImlParser::parseObject().

## ◆ saveComponentsAsXml()

void Group::saveComponentsAsXml | ( | Stream & | stream | ) | const

Save all the components, one by one, in XML format.

References begin(), and end().

Referenced by saveAsXml().

## ◆ checkStyle()

void Group::checkStyle | ( | const Cascade * | sheet,
|  | AttributeSeq & | seq
| ) |  | const
| virtual

Check all symbolic attributes.

Reimplemented from ipe::Object.

References begin(), and end().

## ◆ getAttribute()

Attribute Group::getAttribute | ( | Property | prop | ) | const
| virtual noexcept

Get setting of an attribute of this object.

If object does not have this attribute, returnes "undefined" attribute.

Reimplemented from ipe::Object.

References ipe::EPropDecoration, and ipe::Object::getAttribute().

## ◆ setAttribute()

bool Group::setAttribute | ( | Property | prop,
|  | Attribute | value
| ) |  |
| virtual

Set attribute on all children.

Reimplemented from ipe::Object.

References ipe::EPropDecoration, ipe::EPropPinned, ipe::EPropTransformations, and ipe::Object::setAttribute().

The documentation for this class was generated from the following files:

- ipegroup.h
- ipegroup.cpp