26#ifndef BOARD_POLYLINE_H
27#define BOARD_POLYLINE_H
61 const std::string &
name()
const override;
194 void flushFIG(std::ostream & stream,
const TransformFIG & transform, std::map<Color, int> & colormap)
const override;
259 static const std::string _name;
260 bool _isCreatedRectangle;
261 void flushRectangleFIG(std::ostream & stream,
const TransformFIG & transform, std::map<Color, int> & colormap)
const;
262 void flushRectangleSVG(std::ostream & stream,
const TransformSVG & transform)
const;
305 const std::string &
name()
const override;
381 void flushFIG(std::ostream & stream,
const TransformFIG & transform, std::map<Color, int> & colormap)
const override;
390 static const std::string _name;
417 Color penColor,
Color fillColor,
double lineWidth,
419 :
ShapeWithStyle(penColor, fillColor, lineWidth, lineStyle, cap, join), _path(points, openClosed)
421 _isCreatedRectangle =
false;
427 _isCreatedRectangle =
false;
432 :
ShapeWithStyle(penColor, fillColor, lineWidth, lineStyle, cap, join), _path(path)
434 _isCreatedRectangle =
false;
440 _isCreatedRectangle =
false;
445 :
ShapeWithStyle(penColor, fillColor, lineWidth, lineStyle, cap, join), _path(openClosed)
447 _isCreatedRectangle =
false;
453 _isCreatedRectangle =
false;
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Structure representing an RGB triple.
Definition Color.h:43
Path mix(const Path &a, const Path &b, double time)
Interpolate two paths according to a time (0 is a, 1 is b)
Definition Path.cpp:390
LineStyle
Definition Style.h:47
Polyline triangle(const Point &p1, const Point &p2, const Point &p3, Color penColor=Style::defaultPenColor(), Color fillColor=Style::defaultFillColor(), double lineWidth=Style::defaultLineWidth(), const LineStyle lineStyle=Style::defaultLineStyle(), const LineCap cap=Style::defaultLineCap(), const LineJoin join=Style::defaultLineJoin())
Definition Polyline.cpp:610
Polyline rectangle(double left, double top, double width, double height, Color penColor=Style::defaultPenColor(), Color fillColor=Style::defaultFillColor(), double lineWidth=Style::defaultLineWidth(), const LineStyle lineStyle=Style::defaultLineStyle(), const LineCap cap=Style::defaultLineCap(), const LineJoin join=Style::defaultLineJoin())
Definition Polyline.cpp:569
LineCap
Definition Style.h:35
LineWidthFlag
Definition Style.h:57
LineJoin
Definition Style.h:41
A ConstShapeVisitor may visit const shapes of a composite shape tree in back-to-front order.
Definition ShapeVisitor.h:79
A triangle with shaded filling according to colors given for each vertex.
Definition Polyline.h:294
Color _color1
Definition Polyline.h:394
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition Polyline.cpp:542
GouraudTriangle rotated(double angle, const Point ¢er) const
Definition Polyline.cpp:443
int _subdivisions
Definition Polyline.h:396
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition Polyline.cpp:509
const std::string & name() const override
Definition Polyline.cpp:391
Color _color2
Definition Polyline.h:395
GouraudTriangle resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition Polyline.cpp:478
GouraudTriangle scaled(double sx, double sy) const
Definition Polyline.cpp:463
GouraudTriangle translated(double dx, double dy) const
Definition Polyline.cpp:458
GouraudTriangle * clone() const override
Definition Polyline.cpp:483
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition Polyline.cpp:488
Color _color0
Definition Polyline.h:393
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition Polyline.cpp:563
void scaleAll(double s) override
Definition Polyline.cpp:473
GouraudTriangle & rotate(double angle, const Point ¢er) override
Definition Polyline.cpp:437
A path, according to Postscript and SVG definition.
Definition Path.h:45
std::size_t size() const
The number of points in the path.
Definition Path.h:448
OpenClosed
The OpenClosed enum.
Definition Path.h:53
Struct representing a 2D point.
Definition Point.h:42
A polygonal line described by a series of 2D points.
Definition Polyline.h:38
Polyline(const Polyline &)=default
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition Polyline.cpp:243
Polyline rotated(double angle, const Point ¢er) const
Definition Polyline.cpp:72
Polyline * clone() const override
Definition Polyline.cpp:158
Polyline(const std::vector< Point > &points, Path::OpenClosed openClosed, Color penColor=Style::defaultPenColor(), Color fillColor=Style::defaultFillColor(), double lineWidth=Style::defaultLineWidth(), const LineStyle lineStyle=Style::defaultLineStyle(), const LineCap cap=Style::defaultLineCap(), const LineJoin join=Style::defaultLineJoin())
Definition Polyline.h:416
void setRectangleFlag()
Definition Polyline.cpp:163
Polyline & operator<<(const Point &p)
Definition Polyline.cpp:55
Polyline translated(double dx, double dy) const
Definition Polyline.cpp:99
Polyline resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition Polyline.cpp:147
Polyline & scale(double sx, double sy) override
Definition Polyline.cpp:104
Polyline & operator=(const Polyline &)=default
const Point & operator[](const std::size_t n) const
Definition Polyline.h:85
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition Polyline.cpp:168
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition Polyline.cpp:287
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition Polyline.cpp:299
const Path & path() const
Definition Polyline.h:461
Polyline & operator=(Polyline &&)=default
Polyline(Polyline &&)=default
std::vector< Path > _holes
Definition Polyline.h:266
Polyline & rotate(double angle, const Point ¢er) override
Definition Polyline.cpp:61
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition Polyline.cpp:202
const std::string & name() const override
Definition Polyline.cpp:50
Rect boundingBox(LineWidthFlag) const override
Definition Polyline.cpp:328
Point & operator[](const std::size_t n)
Definition Polyline.h:77
Polyline & translate(double dx, double dy) override
Definition Polyline.cpp:88
~Polyline() override=default
void scaleAll(double s) override
Definition Polyline.cpp:137
void addHole(const Path &path)
Add a hole to the path. Warning: Hole share the polyline line style.
Definition Polyline.cpp:152
Polyline scaled(double sx, double sy) const
Definition Polyline.cpp:127
std::size_t vertexCount() const
Definition Polyline.h:456
Path _path
Definition Polyline.h:265
Struct representing a rectangle on the plane.
Definition Rect.h:40
A ShapeVisitor visits all shapes in a composite shape tree in back-to-front order.
Definition ShapeVisitor.h:54
Abstract structure for a 2D shape.
Definition ShapeWithStyle.h:38
const Color & penColor() const
Definition ShapeWithStyle.h:143
Style style() const
Definition ShapeWithStyle.h:215
double lineWidth() const
Definition ShapeWithStyle.h:165
const Color & fillColor() const
Definition ShapeWithStyle.h:154
LineStyle lineStyle() const
Definition ShapeWithStyle.h:176
Abstract structure for a 2D shape.
Definition Shape.h:64
virtual Point center(LineWidthFlag lineWidthFlag=IgnoreLineWidth) const
Definition Shape.cpp:59
static const Color & defaultPenColor()
defaultPenColor
Definition Style.h:279
static const Color & defaultFillColor()
defaultFillColor
Definition Style.h:284
static const double & defaultLineWidth()
defaultLineWidth
Definition Style.h:274
static const LineStyle & defaultLineStyle()
defaultLineStyle
Definition Style.h:289
static const LineCap & defaultLineCap()
defaultLineCap
Definition Style.h:294
static const LineJoin & defaultLineJoin()
defaultLineJoin
Definition Style.h:299