Go to the documentation of this file.
26 #ifndef BOARD_POLYLINE_H
27 #define BOARD_POLYLINE_H
44 inline Polyline(
const std::vector<Point> & points, Path::OpenClosed openClosed,
const Style & style);
54 inline Polyline(Path::OpenClosed openClosed,
const Style & style);
61 const std::string &
name()
const override;
184 Polyline resized(
double w,
double h, LineWidthFlag lineWidthFlag)
const;
194 void flushFIG(std::ostream & stream,
const TransformFIG & transform, std::map<Color, int> & colormap)
const override;
246 inline std::size_t vertexCount()
const;
248 inline const Path & path()
const;
250 void setRectangleFlag();
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;
266 std::vector<Path> _holes;
273 Polyline rectangle(
double left,
double top,
double width,
double height,
const Style & style);
278 Polyline rectangle(
const Rect & rect,
const Style & style);
284 Polyline triangle(
const double x1,
const double y1,
const double x2,
const double y2,
const double x3,
const double y3, Color penColor =
Style::defaultPenColor(),
288 Polyline triangle(
const Point & p1,
const Point & p2,
const Point & p3,
const Style & style);
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;
416 Polyline::Polyline(
const std::vector<Point> & points, Path::OpenClosed openClosed,
417 Color penColor, Color fillColor,
double lineWidth,
418 const LineStyle lineStyle,
const LineCap cap,
const LineJoin join)
419 : ShapeWithStyle(penColor, fillColor, lineWidth, lineStyle, cap, join), _path(points, openClosed)
421 _isCreatedRectangle =
false;
424 Polyline::Polyline(
const std::vector<Point> & points, Path::OpenClosed openClosed,
const Style & style)
425 : ShapeWithStyle(style), _path(points, openClosed)
427 _isCreatedRectangle =
false;
430 Polyline::Polyline(
const Path & path, Color penColor, Color fillColor,
431 double lineWidth,
const LineStyle lineStyle,
const LineCap cap,
const LineJoin join)
432 : ShapeWithStyle(penColor, fillColor, lineWidth, lineStyle, cap, join), _path(path)
434 _isCreatedRectangle =
false;
437 Polyline::Polyline(
const Path & path,
const Style & style)
438 : ShapeWithStyle(style), _path(path)
440 _isCreatedRectangle =
false;
443 Polyline::Polyline(Path::OpenClosed openClosed, Color penColor, Color fillColor,
double lineWidth,
444 const LineStyle lineStyle,
const LineCap cap,
const LineJoin join)
445 : ShapeWithStyle(penColor, fillColor, lineWidth, lineStyle, cap, join), _path(openClosed)
447 _isCreatedRectangle =
false;
450 Polyline::Polyline(Path::OpenClosed openClosed,
const Style & style)
451 : ShapeWithStyle(style), _path(openClosed)
453 _isCreatedRectangle =
false;
456 std::size_t Polyline::vertexCount()
const
461 const Path & Polyline::path()
const
Rect boundingBox(LineWidthFlag) const override
Definition: Polyline.cpp:328
static const Color & defaultPenColor()
defaultPenColor
Definition: Style.h:281
Polyline & scale(double sx, double sy) override
Definition: Polyline.cpp:104
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
static const double & defaultLineWidth()
defaultLineWidth
Definition: Style.h:276
A polygonal line described by a series of 2D points.
Definition: Polyline.h:38
Polyline & operator<<(const Point &p)
Definition: Polyline.cpp:55
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Polyline.cpp:287
GouraudTriangle scaled(double sx, double sy) const
Definition: Polyline.cpp:463
GouraudTriangle resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition: Polyline.cpp:478
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Polyline.cpp:202
Path mid(const Path &a, const Path &b, double time)
Definition: Path.cpp:387
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Polyline.cpp:488
const std::string & name() const override
Definition: Polyline.cpp:50
GouraudTriangle & rotate(double angle, const Point ¢er) override
Definition: Polyline.cpp:437
Struct representing a rectangle on the plane.
Definition: Rect.h:39
GouraudTriangle * clone() const override
Definition: Polyline.cpp:483
Polyline rotated(double angle, const Point ¢er) const
Definition: Polyline.cpp:72
static const Color & defaultFillColor()
defaultFillColor
Definition: Style.h:286
void scaleAll(double s) override
Definition: Polyline.cpp:473
Point & operator[](const std::size_t n)
Definition: Polyline.h:77
Polyline & translate(double dx, double dy) override
Definition: Polyline.cpp:88
void scaleAll(double s) override
Definition: Polyline.cpp:137
Struct representing a 2D point.
Definition: Point.h:42
Polyline resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition: Polyline.cpp:147
static const LineCap & defaultLineCap()
defaultLineCap
Definition: Style.h:296
Abstract structure for a 2D shape.
Definition: Shape.h:63
A triangle with shaded filling according to colors given for each vertex.
Definition: Polyline.h:294
A ConstShapeVisitor may visit const shapes of a composite shape tree in back-to-front order.
Definition: ShapeVisitor.h:78
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Polyline.cpp:563
A path, according to Postscript and SVG definition.
Definition: Path.h:45
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Polyline.cpp:168
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Polyline.cpp:243
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Polyline.cpp:509
Polyline translated(double dx, double dy) const
Definition: Polyline.cpp:99
const Point & operator[](const std::size_t n) const
Definition: Polyline.h:85
Polyline & rotate(double angle, const Point ¢er) override
Definition: Polyline.cpp:61
virtual Point center(LineWidthFlag lineWidthFlag=IgnoreLineWidth) const
Definition: Shape.cpp:59
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
GouraudTriangle translated(double dx, double dy) const
Definition: Polyline.cpp:458
static const LineJoin & defaultLineJoin()
defaultLineJoin
Definition: Style.h:301
Polyline * clone() const override
Definition: Polyline.cpp:158
static const LineStyle & defaultLineStyle()
defaultLineStyle
Definition: Style.h:291
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Polyline.cpp:542
const std::string & name() const override
Definition: Polyline.cpp:391
A ShapeVisitor visits all shapes in a composite shape tree in back-to-front order.
Definition: ShapeVisitor.h:53
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Polyline.cpp:299
Structure representing an RGB triple.
Definition: Color.h:43
Abstract structure for a 2D shape.
Definition: ShapeWithStyle.h:38