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

#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)
 
Groupoperator= (const Group &rhs)
 
virtual Objectclone () const
 
virtual GroupasGroup ()
 
virtual const GroupasGroup () 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 Shapeclip () const
 
void setClip (const Shape &clip)
 
String url () const
 
void setUrl (String url)
 
int count () const
 
const Objectobject (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 TextasText ()
 
virtual PathasPath ()
 
virtual ImageasImage ()
 
virtual ReferenceasReference ()
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
virtual void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 
void setCustom (Attribute value)
 
Attribute getCustom () const noexcept
 

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
 
Matrix effectiveMatrix (const Matrix &m, const Vector &pos=Vector::ZERO) const noexcept
 
- 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
 
Attribute iCustom
 
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

◆ draw()

void Group::draw ( Painter painter) const
virtual

◆ drawSimple()

void Group::drawSimple ( Painter painter) const
virtual

◆ 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(), ipe::Object::effectiveMatrix(), and end().

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(), ipe::Object::effectiveMatrix(), and end().

◆ 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(), ipe::Object::effectiveMatrix(), and end().

◆ 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(), ipe::Object::effectiveMatrix(), and end().

◆ 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(), ipe::Object::effectiveMatrix(), and end().

◆ 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

◆ 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

◆ end()

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

◆ 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
virtualnoexcept

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: