Board 0.9.6
Public Member Functions | List of all members
LibBoard::Group Struct Reference

A group of shapes. A group is basically a ShapeList except that when rendered in either an SVG of a FIG file, it is a true compound element. More...

#include <Group.h>

Inheritance diagram for LibBoard::Group:
LibBoard::ShapeList LibBoard::Shape

Public Member Functions

 Group ()
 
 Group (const Group &other)
 
 ~Group () override
 
const std::string & name () const override
 
Grouprotate (double angle, const Point &center) override
 
Grouprotate (double angle) override
 
Group rotated (double angle, const Point &center)
 
Group rotated (double angle)
 
Grouptranslate (double dx, double dy) override
 
Group translated (double dx, double dy)
 
Groupscale (double sx, double sy) override
 
Groupscale (double s) override
 
Group scaled (double sx, double sy)
 
Group scaled (double s)
 
void setClippingRectangle (double x, double y, double width, double height)
 
void setClippingPath (const std::vector< Point > &points)
 
void setClippingPath (const Path &path)
 
void flushPostscript (std::ostream &stream, const TransformEPS &transform) const override
 
void flushFIG (std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
 
void flushSVG (std::ostream &stream, const TransformSVG &transform) const override
 
void flushTikZ (std::ostream &stream, const TransformTikZ &transform) const override
 
Groupoperator= (const Group &other)
 
Groupclone () const override
 
Rect boundingBox (LineWidthFlag) const override
 
Groupaccept (CompositeShapeTransform &transform) const override
 Accept a composite shape transform.
 
Groupaccept (const CompositeShapeTransform &transform) const override
 Accept a constant composite shape transform.
 
void accept (ShapeVisitor &visitor) override
 Accepts a visitor object.
 
void accept (const ShapeVisitor &visitor) override
 Accepts a visitor object.
 
void accept (ConstShapeVisitor &visitor) const override
 Accepts a const-shape visitor object.
 
void accept (const ConstShapeVisitor &visitor) const override
 Accepts a const-shape visitor object.
 
Shapeaccept (CompositeShapeTransform &transform) const override
 Accept a composite shape transform.
 
Shapeaccept (const CompositeShapeTransform &transform) const override
 Accept a constant composite shape transform.
 
- Public Member Functions inherited from LibBoard::ShapeList
 ShapeList ()
 
 ShapeList (const ShapeList &other)
 
ShapeListoperator= (const ShapeList &other)
 
 ShapeList (ShapeList &&other)
 
ShapeListoperator= (ShapeList &&other)
 
 ShapeList (const Shape &shape, unsigned int times, double dx, double dy, double scale)
 
 ShapeList (const Shape &shape, unsigned int times, double dx, double dy, double scaleX, double scaleY, double angle)
 
template<typename S >
 ShapeList (const std::vector< S > &shapes)
 
 ~ShapeList () override
 
const std::string & name () const override
 
ShapeListclear ()
 
ShapeListrotate (double angle, const Point &center) override
 
ShapeList rotated (double angle, const Point &center)
 
ShapeListrotate (double angle) override
 
ShapeList rotated (double angle)
 
ShapeListtranslate (double dx, double dy) override
 
ShapeList translated (double dx, double dy)
 
ShapeListscale (double sx, double sy) override
 
ShapeListscale (double s) override
 
ShapeList scaled (double sx, double sy) const
 
ShapeList scaled (double s) const
 
void scaleAll (double s) override
 
void flushPostscript (std::ostream &stream, const TransformEPS &transform) const override
 
void flushFIG (std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
 
void flushSVG (std::ostream &stream, const TransformSVG &transform) const override
 
void flushTikZ (std::ostream &stream, const TransformTikZ &transform) const override
 
Rect boundingBox (LineWidthFlag) const override
 
ShapeListclone () const override
 
ShapeListpush_back (Shape *shape)
 
ShapeListoperator<< (const Shape &shape)
 
template<typename S >
ShapeListoperator<< (const std::vector< S > &shapes)
 
ShapeListoperator+= (const Shape &shape)
 
ShapeListappend (const Shape &shape, Direction direction=Direction::Right, Alignment alignment=Alignment::Center, double margin=0.0, LineWidthFlag lineWidthFlag=UseLineWidth)
 
void addRepeated (const Shape &shape, unsigned int times, double dx, double dy, double scaleX=1.0, double scaleY=1.0, double angle=0.0)
 
ShapeListduplicateLast (std::size_t copies=1)
 
template<typename T >
T & last (const std::size_t position=0)
 
Shapelast (const std::size_t position=0)
 
template<typename T >
T & topLevelFindLast (std::size_t position=0)
 
Shapetop ()
 
void accept (ShapeVisitor &visitor) override
 Accepts a visitor object.
 
void accept (const ShapeVisitor &visitor) override
 Accepts a visitor object.
 
void accept (ConstShapeVisitor &visitor) const override
 Accepts a const-shape visitor object.
 
void accept (const ConstShapeVisitor &visitor) const override
 Accepts a const-shape visitor object.
 
Shapeaccept (CompositeShapeTransform &transform) const override
 Accept a composite shape transform.
 
Shapeaccept (const CompositeShapeTransform &transform) const override
 Accept a constant composite shape transform.
 
TopLevelIterator begin ()
 begin
 
TopLevelIterator end ()
 end
 
TopLevelConstIterator begin () const
 begin
 
TopLevelConstIterator cbegin () const
 cbegin
 
TopLevelConstIterator end () const
 end
 
TopLevelConstIterator cend () const
 cend
 
DepthFirstIterator depthFirstBegin ()
 depthFirstBegin
 
DepthFirstIterator depthFirstEnd ()
 depthFirstEnd
 
BreadthFirstIterator breadthFirstBegin ()
 breadthFirstBegin
 
BreadthFirstIterator breadthFirstEnd ()
 breadthFirstEnd
 
std::size_t deepSize () const
 Recursively counts the number of shapes in the list.
 
std::size_t size () const
 The number of shapes in the list (at top level).
 
- Public Member Functions inherited from LibBoard::Shape
 Shape ()
 
virtual ~Shape ()
 
virtual const std::string & name () const
 
virtual Shapeclone () const =0
 
virtual Point center (LineWidthFlag lineWidthFlag=IgnoreLineWidth) const
 
virtual Shaperotate (double angle, const Point &center)=0
 
virtual Shaperotate (double angle)=0
 
ShaperotateDeg (double angle, const Point &center)
 
ShaperotateDeg (double angle)
 
virtual Shapetranslate (double dx, double dy)=0
 
ShapemoveCenter (double x, double y, LineWidthFlag lineWidthFlag=IgnoreLineWidth)
 
ShapemoveCenter (Point p, LineWidthFlag lineWidthFlag=IgnoreLineWidth)
 
virtual Shapescale (double sx, double sy)=0
 
virtual Shapescale (double s)=0
 
Shaperesize (double width, double height, LineWidthFlag lineWidthFlag)
 
ShapescaleToWidth (double w, LineWidthFlag lineWidthFlag)
 
ShapescaleToHeight (double h, LineWidthFlag lineWidthFlag)
 
virtual Rect boundingBox (LineWidthFlag) const =0
 
Rect bbox (LineWidthFlag) const
 
virtual void scaleAll (double s)=0
 
virtual void flushPostscript (std::ostream &stream, const TransformEPS &transform) const =0
 
virtual void flushFIG (std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const =0
 
virtual void flushSVG (std::ostream &stream, const TransformSVG &transform) const =0
 
virtual void flushTikZ (std::ostream &stream, const TransformTikZ &transform) const =0
 
virtual void accept (ShapeVisitor &visitor)
 Accepts a visitor object.
 
virtual void accept (const ShapeVisitor &visitor)
 Accepts a visitor object.
 
virtual void accept (ConstShapeVisitor &visitor) const
 Accepts a const-shape visitor object.
 
virtual void accept (const ConstShapeVisitor &visitor) const
 Accepts a const-shape visitor object.
 
virtual Shapeaccept (CompositeShapeTransform &transform) const
 Accept a composite shape transform.
 
virtual Shapeaccept (const CompositeShapeTransform &transform) const
 Accept a constant composite shape transform.
 
 Shape (const Shape &other)
 

Additional Inherited Members

- Public Types inherited from LibBoard::ShapeList
typedef std::vector< Shape * >::size_type size_type
 
- Protected Member Functions inherited from LibBoard::ShapeList
void addShape (const Shape &shape, double scaleFactor)
 
void deleteShapes ()
 
- Protected Attributes inherited from LibBoard::ShapeList
std::vector< Shape * > _shapes
 

Detailed Description

A group of shapes. A group is basically a ShapeList except that when rendered in either an SVG of a FIG file, it is a true compound element.

The Group structure.

Examples
examples/Huffman.cpp, examples/Julia.cpp, examples/array.cpp, examples/board_font_text.cpp, examples/clipping.cpp, examples/ellipse.cpp, examples/example4.cpp, examples/images.cpp, examples/interpolate.cpp, examples/rough.cpp, examples/scale_ellipse.cpp, examples/tilings.cpp, examples/traversal.cpp, and examples/xkcd.cpp.

Constructor & Destructor Documentation

◆ Group() [1/2]

LibBoard::Group::Group ( )
inline

◆ Group() [2/2]

LibBoard::Group::Group ( const Group other)
inline

◆ ~Group()

LibBoard::Group::~Group ( )
override

Member Function Documentation

◆ accept() [1/8]

Shape * LibBoard::ShapeList::accept ( CompositeShapeTransform transform) const
overridevirtual

Accept a composite shape transform.

Parameters
transformA composite shape transform object.

Reimplemented from LibBoard::Shape.

◆ accept() [2/8]

Group * LibBoard::Group::accept ( CompositeShapeTransform transform) const
overridevirtual

Accept a composite shape transform.

Parameters
transformA composite shape transform object.

Reimplemented from LibBoard::Shape.

Examples
examples/board_font_text.cpp.

References LibBoard::ShapeList::_shapes, LibBoard::Shape::accept(), LibBoard::ShapeList::end(), Group(), and LibBoard::ShapeList::push_back().

Referenced by LibBoard::boardFontText(), and text().

◆ accept() [3/8]

Shape * LibBoard::ShapeList::accept ( const CompositeShapeTransform transform) const
overridevirtual

Accept a constant composite shape transform.

Parameters
transformA constant composite shape transform object..

Reimplemented from LibBoard::Shape.

References LibBoard::ShapeList::ShapeList().

◆ accept() [4/8]

Group * LibBoard::Group::accept ( const CompositeShapeTransform transform) const
overridevirtual

Accept a constant composite shape transform.

Parameters
transformA constant composite shape transform object..

Reimplemented from LibBoard::Shape.

References LibBoard::ShapeList::_shapes, LibBoard::Shape::accept(), LibBoard::ShapeList::end(), Group(), and LibBoard::ShapeList::push_back().

◆ accept() [5/8]

void LibBoard::ShapeList::accept ( const ConstShapeVisitor visitor) const
overridevirtual

Accepts a const-shape visitor object.

Parameters
visitorA const-shape visitor object.

Reimplemented from LibBoard::Shape.

◆ accept() [6/8]

void LibBoard::ShapeList::accept ( const ShapeVisitor visitor)
overridevirtual

Accepts a visitor object.

Parameters
visitorA visitor object.

Reimplemented from LibBoard::Shape.

References LibBoard::Shape::center(), and LibBoard::ShapeList::rotate().

◆ accept() [7/8]

void LibBoard::ShapeList::accept ( ConstShapeVisitor visitor) const
overridevirtual

Accepts a const-shape visitor object.

Parameters
visitorA const-shape visitor object.

Reimplemented from LibBoard::Shape.

References LibBoard::Shape::center(), and LibBoard::ShapeList::rotate().

◆ accept() [8/8]

void LibBoard::ShapeList::accept ( ShapeVisitor visitor)
overridevirtual

Accepts a visitor object.

Parameters
visitorA visitor object.

Reimplemented from LibBoard::Shape.

References LibBoard::Shape::center().

◆ boundingBox()

Rect LibBoard::Group::boundingBox ( LineWidthFlag  ) const
overridevirtual

Compute the bounding box of the figure.

Returns
The rectangle of the bounding box.

Implements LibBoard::Shape.

Examples
examples/Huffman.cpp, examples/board_font_text.cpp, and examples/xkcd.cpp.

References LibBoard::Path::boundingBox(), LibBoard::ShapeList::boundingBox(), and LibBoard::Path::size().

Referenced by flushFIG(), main(), merge(), and text().

◆ clone()

Group * LibBoard::Group::clone ( ) const
overridevirtual

Return a copy of the shape.

Returns
A copy of the shape.

Implements LibBoard::Shape.

References Group().

◆ flushFIG()

void LibBoard::Group::flushFIG ( std::ostream &  stream,
const TransformFIG transform,
std::map< Color, int > &  colormap 
) const
overridevirtual

Write the FIG code of the shape in a stream according to a transform.

Parameters
streamThe output stream.
transformA 2D transform to be applied.
colormap

Implements LibBoard::Shape.

References LibBoard::Shape::bbox(), boundingBox(), LibBoard::ShapeList::flushFIG(), LibBoard::Rect::height, LibBoard::Rect::left, LibBoard::Transform::mapX(), LibBoard::TransformFIG::mapY(), LibBoard::Rect::top, LibBoard::UseLineWidth, and LibBoard::Rect::width.

◆ flushPostscript()

void LibBoard::Group::flushPostscript ( std::ostream &  stream,
const TransformEPS transform 
) const
overridevirtual

Write the EPS code of the shape in a stream according to a transform.

Parameters
streamThe output stream.
transformA 2D transform to be applied.

Implements LibBoard::Shape.

References LibBoard::Path::flushPostscript(), LibBoard::ShapeList::flushPostscript(), and LibBoard::Path::size().

◆ flushSVG()

void LibBoard::Group::flushSVG ( std::ostream &  stream,
const TransformSVG transform 
) const
overridevirtual

Write the SVG code of the shape in a stream according to a transform.

Parameters
streamThe output stream.
transformA 2D transform to be applied.

Implements LibBoard::Shape.

References LibBoard::ShapeList::flushSVG(), LibBoard::Path::flushSVGCommands(), and LibBoard::Path::size().

◆ flushTikZ()

void LibBoard::Group::flushTikZ ( std::ostream &  stream,
const TransformTikZ transform 
) const
overridevirtual

Write the TikZ code of the shape in a stream according to a transform.

Parameters
streamThe output stream.
transformA 2D transform to be applied.

Implements LibBoard::Shape.

References LibBoard::ShapeList::flushTikZ().

◆ name()

const std::string & LibBoard::Group::name ( ) const
overridevirtual

Returns the generic name of the shape (e.g., Circle, Rectangle, etc.)

Returns

Reimplemented from LibBoard::Shape.

◆ operator=()

Group & LibBoard::Group::operator= ( const Group other)

◆ rotate() [1/2]

Group & LibBoard::Group::rotate ( double  angle)
overridevirtual

Rotate the shape around its center.

Parameters
angleThe rotation angle in radian.
Returns
A reference to the shape itself.

Implements LibBoard::Shape.

References LibBoard::Shape::center(), LibBoard::Path::rotate(), and LibBoard::ShapeList::rotate().

◆ rotate() [2/2]

Group & LibBoard::Group::rotate ( double  angle,
const Point center 
)
overridevirtual

Rotate the shape around a given center of rotation.

Parameters
angleThe rotation angle in radian.
centerThe center of rotation.
Returns
A reference to the shape itself.

Implements LibBoard::Shape.

Examples
examples/ellipse.cpp.

References LibBoard::Shape::center(), LibBoard::Path::rotate(), and LibBoard::ShapeList::rotate().

Referenced by main().

◆ rotated() [1/2]

Group LibBoard::Group::rotated ( double  angle)

References Group().

◆ rotated() [2/2]

Group LibBoard::Group::rotated ( double  angle,
const Point center 
)

◆ scale() [1/2]

Group & LibBoard::Group::scale ( double  s)
overridevirtual

Scale the shape along both axis.

Parameters
sThe scaling factor along both axis.
Returns
The shape itself.

Implements LibBoard::Shape.

References LibBoard::Path::center(), LibBoard::Shape::center(), LibBoard::Path::scale(), LibBoard::ShapeList::scale(), LibBoard::Path::translate(), LibBoard::Point::x, and LibBoard::Point::y.

◆ scale() [2/2]

Group & LibBoard::Group::scale ( double  sx,
double  sy 
)
overridevirtual

Scale the shape along the x an y axis.

Parameters
sxThe scaling factor along the x axis.
syThe scaling factor along the y axis.
Returns
The shape itself.

Implements LibBoard::Shape.

Examples
examples/ellipse.cpp.

References LibBoard::Path::center(), LibBoard::Shape::center(), LibBoard::Path::scale(), LibBoard::ShapeList::scale(), LibBoard::Path::translate(), LibBoard::Point::x, and LibBoard::Point::y.

Referenced by main().

◆ scaled() [1/2]

Group LibBoard::Group::scaled ( double  s)

References Group().

◆ scaled() [2/2]

Group LibBoard::Group::scaled ( double  sx,
double  sy 
)
Examples
examples/clipping.cpp, and examples/scale_ellipse.cpp.

References Group().

Referenced by main().

◆ setClippingPath() [1/2]

void LibBoard::Group::setClippingPath ( const Path path)

Define a clipping path for the group.

Parameters
pathA path.

References LibBoard::Path::close(), LibBoard::Path::pop_back(), and LibBoard::Path::size().

◆ setClippingPath() [2/2]

void LibBoard::Group::setClippingPath ( const std::vector< Point > &  points)

Define a clipping path for the group.

Parameters
pointsA path.
Examples
examples/clipping.cpp.

References LibBoard::Path::clear(), and LibBoard::ShapeList::end().

Referenced by main().

◆ setClippingRectangle()

void LibBoard::Group::setClippingRectangle ( double  x,
double  y,
double  width,
double  height 
)

Define a clipping rectangle for the group.

Parameters
x
y
width
height

References LibBoard::Path::clear().

◆ translate()

Group & LibBoard::Group::translate ( double  dx,
double  dy 
)
overridevirtual

Translate the shape by a given offset.

Parameters
dxThe x offset.
dyThe y offset.
Returns
A reference to the shape itself.

Implements LibBoard::Shape.

Examples
examples/ellipse.cpp, examples/example4.cpp, and examples/xkcd.cpp.

References LibBoard::Path::translate(), and LibBoard::ShapeList::translate().

Referenced by main().

◆ translated()

Group LibBoard::Group::translated ( double  dx,
double  dy 
)
Examples
examples/clipping.cpp.

References Group().

Referenced by main().


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