Sample program to check that arrows are correctly drawn.
More...
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include "Board.h"
|
#define | M_PI 3.14159265358979323846 |
|
|
float | random_gray () |
|
int | main (int, char *[]) |
|
Sample program to check that arrows are correctly drawn.
- Author
- Sebastien Fourey (GREYC)
This source code is part of the Board project, a C++ library whose purpose is to allow simple drawings in EPS, FIG or SVG files. Copyright (C) 2007 Sebastien Fourey http://foureys.users.greyc.fr
static void slideRandomlyAwayFromSegmentInBox(Point &p, const Point &u, double uMagnitude, const Point &v, double vMagnitude)
Definition: RoughVisitor.cpp:362
Group array(Point topLeft, const std::vector< Color > &colors, unsigned int columns, unsigned int rows, double pixelWidth, double pixelHeight=0.0, double lineWidth=0.0)
Produce a rectangular color matrix.
Definition: Board.cpp:997
void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: ShapeList.cpp:457
Point center() const
Definition: Path.cpp:70
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Rect boundingBox(LineWidthFlag) const override
Definition: Polyline.cpp:328
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Line.cpp:193
void saveEPS(std::ostream &out, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter, const std::string &title=std::string()) const
Definition: Board.cpp:532
const Point & a() const
Definition: Line.h:311
T & last(const std::size_t position=0)
Definition: ShapeList.h:501
Rect boundingBox(LineWidthFlag) const override
Definition: Dot.cpp:195
void scaleAll(double s) override
Definition: Bezier.cpp:194
Leaf visitor may be used to apply a function on each leaf, in back-to-front order.
Definition: ShapeVisitor.h:207
Line & rotate(double angle, const Point ¢er) override
Definition: Line.cpp:55
Ellipse * clone() const override
Definition: Ellipse.cpp:175
void drawRectangle(double left, double top, double width, double height)
Definition: Board.cpp:323
Path & scale(double sx, double sy)
Definition: Path.cpp:167
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Board rotated(double angle, const Point ¢er)
Definition: Board.cpp:207
Board & setFillColor(const Color &color)
Definition: Board.cpp:268
Definition: Exception.h:36
static Point randomlySlidedAwayFromSegmentInBox(const Point &p, const Point &u, double uMagnitude, const Point &v, double vMagnitude)
Definition: RoughVisitor.cpp:370
Arrow translated(double dx, double dy) const
Definition: Arrow.cpp:66
Group & scale(double sx, double sy) override
Definition: Group.cpp:77
The Point structure. @copyright This source code is part of the Board project, a C++ library whose pu...
Arrow(double x1, double y1, double x2, double y2, ExtremityType type=Plain, 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: Arrow.h:255
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...
double perimeter() const
Definition: Ellipse.cpp:185
void setClippingPath(const std::vector< Point > &points)
Definition: Group.cpp:134
Path getCounterclockwise() const
Return a counterclockwise copy of the path.
Definition: Path.cpp:349
A polygonal line described by a series of 2D points.
Definition: Polyline.h:38
Polyline & operator<<(const Point &p)
Definition: Polyline.cpp:55
Dot * clone() const override
Definition: Dot.cpp:206
static void disableLineWidthScaling()
Definition: Board.cpp:139
void saveSVG(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:758
std::size_t deepSize() const
Recursively counts the number of shapes in the list.
Definition: ShapeList.cpp:515
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
const Point & b() const
Definition: Line.h:316
Shape & scaleToWidth(double w, LineWidthFlag lineWidthFlag)
Definition: Shape.cpp:85
Group * accept(CompositeShapeTransform &transform) const override
Accept a composite shape transform.
Definition: Group.cpp:221
Rect boundingBox(LineWidthFlag) const override
Definition: Ellipse.cpp:346
static Point randomlySlidedAwayFromSegment(const Point &p, const Point &a, const Point &b, const double magnitude)
Definition: RoughVisitor.cpp:339
void setCounterclockwise()
Make the path counterclockwise.
Definition: Path.cpp:335
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: Text.cpp:325
Color & setHSV(float hue, float saturation, float value, float alpha=1.0)
setHSV
Definition: Color.cpp:56
GouraudTriangle scaled(double sx, double sy) const
Definition: Polyline.cpp:463
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Dot.cpp:150
void get(double &x, double &y) const
Definition: Point.h:257
Image(const char *filename, double left, double top, double width, double height=0.0)
Definition: Image.cpp:45
Path rotated(double angle, const Point ¢er) const
Definition: Path.cpp:91
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Group.cpp:183
Shape & scaleToHeight(double h, LineWidthFlag lineWidthFlag)
Definition: Shape.cpp:92
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
void scaleAll(double s) override
Definition: Image.cpp:156
Board & operator=(const Board &other)
Definition: Board.cpp:108
Path mid(const Path &a, const Path &b, double time)
Definition: Path.cpp:387
Rect boundingBox(LineWidthFlag) const override
Definition: Text.cpp:355
Rect boundingBox(LineWidthFlag) const override
Definition: Arrow.cpp:86
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Polyline.cpp:488
Bezier & rotate(double angle, const Point ¢er) override
Rotate the Bezier curve.
Definition: Bezier.cpp:112
A line between two points with an arrow at one extremity.
Definition: Arrow.h:38
Point _a
Definition: Line.h:279
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Line.cpp:200
const std::string & name() const override
Definition: Group.cpp:51
bool isCounterclockwise() const
Tell if the points of the path are ordered counterclockwise.
Definition: Path.cpp:323
Point normalised() const
Definition: Point.h:403
Rect operator||(const Rect &rectA, const Rect &rectB)
Definition: Rect.cpp:32
Board translated(double dx, double dy)
Definition: Board.cpp:217
Shape()
Definition: Shape.h:329
const std::string & name() const override
Definition: Polyline.cpp:50
Board & setFont(const Fonts::Font font, double fontSize)
Definition: Board.cpp:280
GouraudTriangle & rotate(double angle, const Point ¢er) override
Definition: Polyline.cpp:437
Bezier translated(double dx, double dy) const
Definition: Bezier.cpp:143
std::string svgAlpha(const char *prefix) const
Definition: Color.cpp:132
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Bezier.cpp:546
Board & scale(double sx, double sy) override
Definition: Board.cpp:176
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Dot.cpp:158
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Arrow.cpp:237
double top
Definition: Rect.h:41
const std::string & name() const override
Definition: Arrow.cpp:51
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: ShapeList.cpp:401
Struct representing a rectangle on the plane.
Definition: Rect.h:39
ExtremityType
Definition: Arrow.h:40
GouraudTriangle * clone() const override
Definition: Polyline.cpp:483
Line scaled(double sx, double sy) const
Definition: Line.cpp:118
ShapeList & push_back(Shape *shape)
Definition: ShapeList.cpp:441
void setClippingPath(const std::vector< Point > &points)
Definition: Board.cpp:469
Board & setFillColorRGBi(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha=255)
Definition: Board.cpp:250
void repeat(const Shape &shape, unsigned int times, double dx, double dy, double scaleX=1.0, double scaleY=1.0, double angle=0.0)
Definition: ShapeList.cpp:231
Line & scale(double sx, double sy) override
Definition: Line.cpp:99
std::string tikz() const
Definition: Color.cpp:142
Style()
Definition: Style.cpp:64
@ Closed
Definition: Arrow.h:43
Path sampledPath(int n, SamplingStart start=SamplingFromRight) const
Definition: Ellipse.cpp:198
Path & moveCenter(double x, double y)
Translate the center to a given position.
Definition: Path.cpp:153
ShapeList & rotate(double angle, const Point ¢er) override
Definition: ShapeList.cpp:301
const std::string & name() const override
Definition: Bezier.cpp:107
Polyline rotated(double angle, const Point ¢er) const
Definition: Polyline.cpp:72
Path & operator<<(const Point &p)
Definition: Path.cpp:47
ShapeWithStyle(Color penColor, Color fillColor, double lineWidth, LineStyle style, const LineCap cap, const LineJoin join)
Definition: ShapeWithStyle.h:133
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Arrow.cpp:154
Line & translate(double dx, double dy) override
Definition: Line.cpp:84
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Bezier.cpp:587
The Point structure. @copyright This source code is part of the Board project, a C++ library whose pu...
Text & translate(double dx, double dy) override
Definition: Text.cpp:147
Path rotatedDeg(double angle, const Point ¢er) const
Definition: Path.cpp:103
void scaleAll(double s) override
Definition: Polyline.cpp:473
Line rotated(double angle, const Point ¢er) const
Definition: Line.cpp:67
bool filled() const
Definition: ShapeWithStyle.h:220
Text(double x, double y, const std::string &text, const Fonts::Font font, double size, Color color=Color::Black)
Definition: Text.cpp:52
Point & rotate(double angle)
Definition: Point.h:342
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: ShapeList.cpp:394
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Dot & scale(double sx, double sy) override
Definition: Dot.cpp:93
Group & translate(double dx, double dy) override
Definition: Group.cpp:70
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Rect boundingBox(LineWidthFlag) const override
Definition: Line.cpp:242
@ Plain
Definition: Arrow.h:44
static Point randomlySlided(const Point &point, const double &radius)
Definition: RoughVisitor.cpp:325
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Text.cpp:256
Path & translate(double dx, double dy)
Definition: Path.cpp:128
Shape & translate(double dx, double dy) override
Definition: Image.cpp:111
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Image.cpp:240
void drawClosedPolyline(const std::vector< Point > &points)
Definition: Board.cpp:372
Line resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition: Line.cpp:136
Polyline & translate(double dx, double dy) override
Definition: Polyline.cpp:88
void scaleAll(double s)
Definition: Path.cpp:194
Path getClockwise() const
Return a clockwise copy of the path.
Definition: Path.cpp:342
Group * clone() const override
Definition: Group.cpp:247
virtual Rect boundingBox(LineWidthFlag) const =0
void scaleAll(double s) override
Definition: Dot.cpp:113
ShapeList & dup(std::size_t copies=1)
Definition: ShapeList.cpp:181
virtual Shape & scale(double sx, double sy)=0
Text translated(double dx, double dy) const
Definition: Text.cpp:153
void fillPolyline(const std::vector< Point > &points)
Definition: Board.cpp:377
Color _backgroundColor
Definition: Board.h:921
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Text.cpp:237
Bezier * clone() const override
Definition: Bezier.cpp:205
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Ellipse.cpp:276
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Dot.cpp:119
void scaleAll(double s) override
Definition: Polyline.cpp:137
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Ellipse.cpp:308
The Exception type. @copyright This source code is part of the Board project, a C++ library whose pur...
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Line.cpp:146
virtual void accept(ShapeVisitor &visitor)
Accepts a visitor object.
Definition: Shape.cpp:99
double x
Definition: Point.h:43
A line between two points.
Definition: Dot.h:42
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
void scaleAll(double s) override
Definition: Text.cpp:185
A piece of text.
Definition: Text.h:40
static void slideRandomlyAwayFromSegment(Point &p, const Point &a, const Point &b, const double magnitude)
Definition: RoughVisitor.cpp:332
void fillCircle(double x, double y, double radius)
Definition: Board.cpp:352
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Line.cpp:157
Path & pop_back()
Definition: Path.cpp:35
Path scaled(double sx, double sy) const
Definition: Path.cpp:184
double fontSize
Definition: Board.h:917
std::string tikzProperties(const TransformTikZ &transform) const
Definition: Style.cpp:111
Shape & scale(double sx, double sy) override
Definition: Image.cpp:124
void drawDot(double x, double y)
Definition: Board.cpp:298
Struct representing a 2D point.
Definition: Point.h:42
const Point & back() const
Definition: Path.h:465
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Arrow.cpp:197
Polyline resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition: Polyline.cpp:147
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Ellipse.cpp:298
void setClippingRectangle(double x, double y, double width, double height)
Definition: Group.cpp:125
Path & push_back(const Point &p)
Definition: Path.cpp:41
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Image.cpp:215
Shape & moveCenter(double x, double y, LineWidthFlag lineWidthFlag=IgnoreLineWidth)
Definition: Shape.cpp:64
The ShapeCounter struct may be used to count shapes in the composite shapes tree.
Definition: ShapeVisitor.h:150
Rect bbox(LineWidthFlag) const
Definition: Shape.h:331
Rect boundingBox() const
Definition: Path.cpp:356
Image translated(double dx, double dy) const
Definition: Image.cpp:119
double left
Definition: Rect.h:40
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Dot.cpp:165
Ellipse resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition: Ellipse.cpp:170
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Ellipse.cpp:316
Board(const Color &backgroundColor=Color::Null)
Definition: Board.cpp:104
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Image.cpp:246
std::string postscriptProperties(const TransformEPS &transform) const
Definition: Style.cpp:101
A line between two points.
Definition: Line.h:38
Board & setPenColorRGBi(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha=255)
Definition: Board.cpp:232
std::vector< Shape * > _shapes
Definition: ShapeList.h:484
Bezier & translate(double dx, double dy) override
Definition: Bezier.cpp:136
Group & addTiling(const Shape &shape, Point topLeftCorner, std::size_t columns, std::size_t rows, double spacing=0.0, LineWidthFlag lineWidthFlag=UseLineWidth)
Definition: ShapeList.cpp:210
void drawText(double x, double y, const char *text)
Definition: Board.cpp:428
A cubice polygonal line described by a series of 2D points.
Definition: Bezier.h:40
void scaleAll(double s) override
Definition: Line.cpp:128
Point rotatedPI2() const
Definition: Point.h:369
Arrow rotated(double angle, const Point ¢er) const
Definition: Arrow.cpp:56
Point & translate(double dx, double dy)
Definition: Point.h:374
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Group.cpp:204
Line translated(double dx, double dy) const
Definition: Line.cpp:91
Group framed(const Shape &shape, const Color &color=Style::defaultPenColor(), double lineWidth=Style::defaultLineWidth(), double margin=0.0, int sketchyCount=0)
Surround a shape with a rectangular frame.
Definition: Board.cpp:1023
Board & rotate(double angle, const Point ¢er) override
Definition: Board.cpp:155
Abstract structure for a 2D shape.
Definition: Shape.h:63
Dot rotated(double angle, const Point ¢er) const
Definition: Dot.cpp:66
Path & rotate(double angle, const Point ¢er)
Definition: Path.cpp:75
Rect boundingBox(LineWidthFlag) const override
Definition: Bezier.cpp:617
Point center(LineWidthFlag lineWidthFlag=IgnoreLineWidth) const override
Definition: Ellipse.cpp:55
virtual void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const =0
void setCircleFlag()
Definition: Ellipse.cpp:180
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Text.cpp:275
Ellipse & rotate(double angle, const Point ¢er) override
Definition: Ellipse.cpp:60
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Group cross(Point p, const Style &style=Style::defaultStyle())
Definition: Board.cpp:968
ShapeList & translate(double dx, double dy) override
Definition: ShapeList.cpp:328
Board & setFillColorHSV(float hue, float saturation, float value, float alpha=1.0f)
Definition: Board.cpp:262
State _state
Definition: Board.h:920
static void enableLineWidthScaling()
Definition: Board.cpp:134
Shape & top()
Definition: ShapeList.cpp:452
Image * clone() const override
Definition: Image.cpp:78
A triangle with shaded filling according to colors given for each vertex.
Definition: Polyline.h:294
virtual void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const =0
void setClippingRectangle(double x, double y, double width, double height)
Definition: Board.cpp:455
A ConstShapeVisitor may visit const shapes of a composite shape tree in back-to-front order.
Definition: ShapeVisitor.h:78
const std::string & name() const override
Definition: Ellipse.cpp:50
void fillRectangle(double left, double top, double width, double height)
Definition: Board.cpp:333
bool isClockwise() const
Tell if the points of the path are ordered clockwise.
Definition: Path.cpp:302
static const std::string _name
Definition: Bezier.h:315
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Polyline.cpp:563
Board scaled(double sx, double sy)
Definition: Board.cpp:222
void saveTikZ(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0) const
Definition: Board.cpp:849
Arrow * clone() const override
Definition: Arrow.cpp:95
ShapeList translated(double dx, double dy)
Definition: ShapeList.cpp:339
Bezier resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition: Bezier.cpp:200
A path, according to Postscript and SVG definition.
Definition: Path.h:45
Board & setPenColorRGBf(float red, float green, float blue, float alpha=1.0f)
Definition: Board.cpp:238
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Dot.cpp:128
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Dot scaled(double sx, double sy) const
Definition: Dot.cpp:103
void drawCircle(double x, double y, double radius)
Definition: Board.cpp:347
Point center(LineWidthFlag flage=IgnoreLineWidth) const override
Definition: Dot.cpp:55
Board & translate(double dx, double dy) override
Definition: Board.cpp:169
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Image.cpp:163
Ellipse scaled(double sx, double sy) const
Definition: Ellipse.cpp:153
Dot translated(double dx, double dy) const
Definition: Dot.cpp:88
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Polyline.cpp:168
void fillTriangle(double x1, double y1, double x2, double y2, double x3, double y3)
Definition: Board.cpp:394
ShapeList & clear()
Definition: ShapeList.cpp:86
Arrow scaled(double sx, double sy) const
Definition: Arrow.cpp:71
@ Stick
Definition: Arrow.h:42
void backgroundColor(const Color &color)
Definition: Board.cpp:293
static void push()
Definition: Style.cpp:160
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Polyline.cpp:243
Board & setFontSize(double fontSize)
Definition: Board.cpp:287
Ellipse & translate(double dx, double dy) override
Definition: Ellipse.cpp:87
Point translated(double dx, double dy) const
Definition: Point.h:381
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: Line.cpp:50
Bezier scaled(double sx, double sy) const
Definition: Bezier.cpp:184
virtual void flushSVG(std::ostream &stream, const TransformSVG &transform) const =0
An ellipse.
Definition: Ellipse.h:38
Polyline translated(double dx, double dy) const
Definition: Polyline.cpp:99
virtual ~Shape()
Definition: Shape.cpp:52
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
const std::string & name() const override
Definition: Image.cpp:73
A group of shapes. A group is basically a ShapeList except that when rendered in either an SVG of a F...
Definition: Group.h:40
virtual Shape * clone() const =0
Group & rotate(double angle, const Point ¢er) override
Definition: Group.cpp:56
Dot & translate(double dx, double dy) override
Definition: Dot.cpp:81
Polyline & rotate(double angle, const Point ¢er) override
Definition: Polyline.cpp:61
static void slideRandomly(Point &point, const double &radius)
Definition: RoughVisitor.cpp:320
Shape & rotate(double angle, const Point ¢er) override
Definition: Image.cpp:83
Point center(LineWidthFlag lineWidthFlag=IgnoreLineWidth) const override
Definition: Text.cpp:105
Path translated(double dx, double dy) const
Definition: Path.cpp:140
std::size_t size() const
The number of shapes in the list (at top level).
Definition: ShapeList.h:665
static void pop()
Definition: Style.cpp:165
Line * clone() const override
Definition: Line.cpp:141
Group grid(Point topLeft, size_t columns, size_t rows, double width, double height, Color penColor, Color fillColor, double lineWidth, const LineStyle style=SolidStyle, const LineCap cap=ButtCap, const LineJoin join=MiterJoin)
Definition: Board.cpp:942
Ellipse translated(double dx, double dy) const
Definition: Ellipse.cpp:93
A group of shapes.
Definition: ShapeList.h:46
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Line.cpp:183
void drawArrow(double x1, double y1, double x2, double y2, Arrow::ExtremityType type=Arrow::Plain)
Definition: Board.cpp:313
Style style
Definition: Board.h:915
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: Bezier.cpp:579
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Image.cpp:201
void addDuplicates(const Shape &shape, std::size_t times, double dx, double dy, double scale=1.0)
Definition: Board.cpp:490
Text & scale(double sx, double sy) override
Definition: Text.cpp:158
ShapeList & scale(double sx, double sy) override
Definition: ShapeList.cpp:344
Shape & resize(double width, double height, LineWidthFlag lineWidthFlag)
Definition: Shape.cpp:78
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Arrow.cpp:245
double _x
Definition: Dot.h:234
double width
Definition: Rect.h:42
Dot & rotate(double angle, const Point ¢er) override
Definition: Dot.cpp:60
virtual Point center(LineWidthFlag lineWidthFlag=IgnoreLineWidth) const
Definition: Shape.cpp:59
void setClockwise()
Make the path clockwise.
Definition: Path.cpp:328
const std::string & name() const override
Definition: Text.cpp:100
Polyline bezierControls(const Bezier &bezier, const Style &style=Style::defaultStyle())
Produce a polyline of the Biezer vertices and control points.
Definition: Board.cpp:976
Declaration of the Board class.
Line(double x1, double y1, double x2, double y2, Color color, double lineWidth=Style::defaultLineWidth(), const LineStyle lineStyle=Style::defaultLineStyle(), const LineCap cap=Style::defaultLineCap(), const LineJoin join=Style::defaultLineJoin())
Definition: Line.h:291
const Style & style() const
Definition: Board.h:1036
virtual Shape & translate(double dx, double dy)=0
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const override
Definition: ShapeList.cpp:410
Image rotated(double angle) const
Definition: Image.cpp:101
virtual const std::string & name() const
Definition: Shape.cpp:54
Bezier & scale(double sx, double sy) override
Definition: Bezier.cpp:148
Image scaled(double sx, double sy)
Definition: Image.cpp:146
Rect boundingBox(LineWidthFlag lineWidthFlag) const override
Definition: Image.cpp:151
TopLevelIterator end()
end
Definition: ShapeList.h:620
const std::string & name() const override
Definition: Dot.cpp:50
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: ShapeList.cpp:385
virtual Shape & rotate(double angle, const Point ¢er)=0
void addHole(const Path &path)
Add a hole to the path. Warning: Hole share the polyline line style.
Definition: Polyline.cpp:152
ShapeList rotated(double angle, const Point ¢er)
Definition: ShapeList.cpp:312
Polyline scaled(double sx, double sy) const
Definition: Polyline.cpp:127
The Color structure. @copyright This source code is part of the Board project, a C++ library whose pu...
void deleteShapes()
Definition: ShapeList.cpp:93
GouraudTriangle translated(double dx, double dy) const
Definition: Polyline.cpp:458
Rect operator&&(const Rect &rectA, const Rect &rectB)
Definition: Rect.cpp:57
virtual void scaleAll(double s)=0
void fillEllipse(double x, double y, double xRadius, double yRadius)
Definition: Board.cpp:362
void scaleAll(double s) override
Definition: ShapeList.cpp:376
Class for EPS, FIG or SVG drawings.
Definition: Board.h:62
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Leaf visitor may be used to apply a function on each Shape with style, in back-to-front order.
Definition: ShapeVisitor.h:247
ShapeList * clone() const override
Definition: ShapeList.cpp:436
ShapeList scaled(double sx, double sy) const
Definition: ShapeList.cpp:366
Path & rotateDeg(double angle, const Point ¢er)
Definition: Path.cpp:86
void drawBoundingBox(LineWidthFlag lineWidthFlag)
Definition: Board.cpp:448
Polyline * clone() const override
Definition: Polyline.cpp:158
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Arrow.cpp:112
double norm() const
Definition: Point.h:398
ShapeList & operator<<(const Shape &shape)
Definition: ShapeList.cpp:146
const std::string & name() const
Definition: ShapeWithStyle.cpp:37
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Fonts::Font font
Definition: Board.h:916
static void setLineWidthScaling(bool)
Definition: ShapeWithStyle.cpp:42
void flushSVG(std::ostream &stream, const TransformSVG &transform) const override
Definition: Polyline.cpp:542
Board & operator<<(const Shape &shape)
Definition: Board.cpp:126
void drawEllipse(double x, double y, double xRadius, double yRadius)
Definition: Board.cpp:357
void scaleAll(double s) override
Definition: Ellipse.cpp:163
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Text.cpp:224
void drawPolyline(const std::vector< Point > &points)
Definition: Board.cpp:367
Bezier(const std::vector< Point > &points, const std::vector< Point > &controls, 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())
A cubic bezier curve.
Definition: Bezier.cpp:66
double _y
Definition: Dot.h:235
static void setLineWidthScaling(bool)
Definition: Board.cpp:144
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Bezier.cpp:537
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Ellipse & scale(double sx, double sy) override
Definition: Ellipse.cpp:98
Point _b
Definition: Line.h:280
void save(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:933
Text * clone() const override
Definition: Text.cpp:190
virtual void flushPostscript(std::ostream &stream, const TransformEPS &transform) const =0
Ellipse rotated(double angle, const Point ¢er) const
Definition: Ellipse.cpp:72
void drawLine(double x1, double y1, double x2, double y2)
Definition: Board.cpp:303
Point rotated(double angle) const
Definition: Point.h:351
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Group.cpp:155
const std::string & name() const override
Definition: ShapeList.cpp:49
std::string svgProperties(const TransformSVG &transform) const
Definition: Style.cpp:74
Rect boundingBox(LineWidthFlag) const override
Definition: Group.cpp:212
Board & setPenColor(const Color &color)
Definition: Board.cpp:244
double y
Definition: Point.h:44
void saveFIG(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:629
Color & setRGBi(const unsigned char red, const unsigned char green, const unsigned char blue, const unsigned char alpha=255)
setRGBi
Definition: Color.h:186
void fillGouraudTriangle(const Point &p1, const Color &color1, const Point &p2, const Color &color2, const Point &p3, const Color &color3, unsigned char divisions=3)
Definition: Board.cpp:406
ShapeList & operator+=(const Shape &shape)
Definition: ShapeList.cpp:193
Board & setLineWidth(double width)
Definition: Board.cpp:274
Arrow resized(double w, double h, LineWidthFlag lineWidthFlag) const
Definition: Arrow.cpp:81
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Ellipse.cpp:242
const std::string & name() const override
Definition: Polyline.cpp:391
ShapeList & append(const Shape &shape, Direction direction=ShapeList::Right, Alignment alignment=ShapeList::AlignCenter, double margin=0.0, LineWidthFlag lineWidthFlag=UseLineWidth)
Definition: ShapeList.cpp:246
A ShapeVisitor visits all shapes in a composite shape tree in back-to-front order.
Definition: ShapeVisitor.h:53
double height
Definition: Rect.h:43
virtual void accept(ShapeVisitor &visitor) override
Accepts a visitor object.
Definition: Polyline.cpp:299
std::ostream & operator<<(std::ostream &out, const LibBoard::Rect &rect)
Definition: Rect.cpp:135
void flushFIG(std::ostream &stream, const TransformFIG &transform, std::map< Color, int > &colormap) const override
Definition: Group.cpp:173
The Exception type. @copyright This source code is part of the Board project, a C++ library whose pur...
~ShapeWithStyle()
Definition: ShapeWithStyle.cpp:35
void drawTriangle(double x1, double y1, double x2, double y2, double x3, double y3)
Definition: Board.cpp:382
Text & rotate(double angle, const Point ¢er) override
Definition: Text.cpp:110
Rect boundingBox(LineWidthFlag) const override
Definition: ShapeList.cpp:419
Text scaled(double sx, double sy) const
Definition: Text.cpp:175
Structure for a bitmap image shape.
Definition: Image.h:41
void flushPostscript(std::ostream &stream, const TransformEPS &transform) const override
Definition: Bezier.cpp:473
Structure representing an RGB triple.
Definition: Color.h:43
Board & setFillColorRGBf(float red, float green, float blue, float alpha=1.0f)
Definition: Board.cpp:256
Abstract structure for a 2D shape.
Definition: ShapeWithStyle.h:38