27 #ifndef _BOARD_BOARD_H_
28 #define _BOARD_BOARD_H_
34 #include "BoardConfig.h"
52 enum PageSize { BoundingBox = 0,
53 A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
54 Letter, Legal, Executive };
56 enum Unit { UPoint, UInche, UCentimeter, UMillimeter };
57 static const double Degree;
59 enum AspectRatioFlag { IgnoreAspectRatio, KeepAspectRatio };
101 void clear(
const Color & color = Color::Null );
110 inline void clear(
unsigned char red,
unsigned char green,
unsigned char blue );
122 Board rotated(
double angle,
const Point & center );
124 Board rotated(
double angle );
126 Board translated(
double dx,
double dy );
128 Board scaled(
double sx,
double sy );
130 Board scaled(
double s );
146 void setUnit(
double factor, Unit unit );
155 void drawDot(
double x,
double y,
int depth = -1 );
166 void drawLine(
double x1,
double y1,
double x2,
double y2,
188 void drawArrow(
double x1,
double y1,
double x2,
double y2,
int depth = -1 );
211 double x2,
double y2,
212 double x3,
double y3,
240 double x2,
double y2,
241 double x3,
double y3,
257 const Color & color1,
259 const Color & color2,
261 const Color & color3,
262 unsigned char divisions = 3,
281 const Color & color1,
282 const double x2,
const double y2,
283 const Color & color2,
284 const double x3,
const double y3,
285 const Color & color3,
286 unsigned char divisions = 3,
302 const float brightness1,
304 const float brightness2,
306 const float brightness3,
307 unsigned char divisions = 3,
327 const float brightness1,
328 const double x2,
const double y2,
329 const float brightness2,
330 const double x3,
const double y3,
331 const float brightness3,
332 unsigned char divisions = 3,
359 double width,
double height,
380 double width,
double height,
399 void drawCircle(
double x,
double y,
double radius,
410 void fillCircle(
double x,
double y,
double radius,
422 double xRadius,
double yRadius,
435 double xRadius,
double yRadius,
473 void drawText(
double x,
double y,
const char * text,
int depth = -1 );
492 void drawText(
double x,
double y,
const std::string & str,
int depth = -1 );
501 void drawText(
Point p,
const std::string & str,
int depth = -1 );
510 Board &
setFont(
const Fonts::Font font,
double fontSize );
531 unsigned char alpha = 255 );
545 float alpha = 1.0f );
569 unsigned char alpha = 255 );
687 double scale = 1.0 );
703 double dx,
double dy,
704 double scaleX,
double scaleY,
705 double angle = 0.0 );
717 void save(
const char * filename, PageSize size = Board::BoundingBox,
double margin = 0.0, Unit unit = UMillimeter )
const;
730 void save(
const char * filename,
double pageWidth,
double pageHeight,
double margin = 0.0, Unit unit = UMillimeter )
const;
742 void saveEPS( std::ostream & out, PageSize size = Board::BoundingBox,
double margin = 0.0, Unit unit = UMillimeter,
const std::string & title = std::string() )
const ;
754 void saveEPS(
const char * filename, PageSize size = Board::BoundingBox,
double margin = 0.0, Unit unit = UMillimeter,
const std::string & title = std::string() )
const ;
768 void saveEPS( std::ostream & out,
double pageWidth,
double pageHeight,
double margin = 0.0, Unit unit = UMillimeter,
const std::string & title = std::string() )
const ;
781 void saveEPS(
const char * filename,
double pageWidth,
double pageHeight,
double margin = 0.0, Unit unit = UMillimeter,
const std::string & title = std::string() )
const ;
792 void saveFIG(
const char * filename, PageSize size = Board::BoundingBox,
double margin = 0.0, Unit unit = UMillimeter )
const;
803 void saveFIG( std::ostream & out, PageSize size = Board::BoundingBox,
double margin = 0.0, Unit unit = UMillimeter )
const;
816 void saveFIG(
const char * filename,
double pageWidth,
double pageHeight,
double margin = 0.0, Unit unit = UMillimeter )
const ;
829 void saveFIG( std::ostream & out,
double pageWidth,
double pageHeight,
double margin = 0.0, Unit unit = UMillimeter )
const ;
840 void saveSVG(
const char * filename, PageSize size = Board::BoundingBox,
double margin = 0.0, Unit unit = UMillimeter )
const;
851 void saveSVG( std::ostream & out, PageSize size = Board::BoundingBox,
double margin = 0.0, Unit unit = UMillimeter )
const;
864 void saveSVG(
const char * filename,
double pageWidth,
double pageHeight,
double margin = 0.0, Unit unit = UMillimeter )
const ;
877 void saveSVG( std::ostream & out,
double pageWidth,
double pageHeight,
double margin = 0.0, Unit unit = UMillimeter)
const ;
887 void saveTikZ(
const char * filename, PageSize size = Board::BoundingBox,
double margin = 0.0 )
const;
897 void saveTikZ( std::ostream & out, PageSize size = Board::BoundingBox,
double margin = 0.0 )
const;
909 void saveTikZ(
const char * filename,
double pageWidth,
double pageHeight,
double margin = 0.0 )
const ;
921 void saveTikZ( std::ostream & out,
double pageWidth,
double pageHeight,
double margin = 0.0 )
const ;
943 size_t columns,
size_t rows,
944 double width,
double height,
948 const LineStyle style = SolidStyle,
949 const LineCap cap = ButtCap,
950 const LineJoin join = MiterJoin,
968 static double toMillimeter(
double x, Unit unit);
992 #include "board/Board.ih"
void drawRectangle(double left, double top, double width, double height, int depth=-1)
Definition: Board.cpp:383
Abstract structure for a 2D shape.
Definition: Shapes.h:62
Board & setLineWidth(double width)
Definition: Board.cpp:271
void saveSVG(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:1045
Board & operator<<(const Shape &shape)
Definition: Board.cpp:115
Board & rotate(double angle, const Point ¢er)
Definition: Board.cpp:133
void drawArrow(double x1, double y1, double x2, double y2, int depth=-1)
Definition: Board.cpp:343
Board & setFillColorRGBi(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha=255)
Definition: Board.cpp:247
Structure representing an RGB triple.
Definition: Color.h:39
void drawText(double x, double y, const char *text, int depth=-1)
Definition: Board.cpp:657
Class for EPS, FIG or SVG drawings.
Definition: Board.h:48
static Group makeGrid(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, int depth=-1)
Definition: Board.cpp:1205
void fillEllipse(double x, double y, double xRadius, double yRadius, int depth=-1)
Definition: Board.cpp:477
double fontSize
Definition: Board.h:983
void saveTikZ(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0) const
Definition: Board.cpp:1157
void drawTriangle(double x1, double y1, double x2, double y2, double x3, double y3, int depth=-1)
Definition: Board.cpp:534
void saveFIG(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:923
Board & setLineJoin(Shape::LineJoin join)
Shape::LineJoin lineJoin
Definition: Board.h:981
void setClippingPath(const std::vector< Point > &points)
Definition: Board.cpp:728
void save(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:1296
Board & operator=(const Board &other)
Definition: Board.cpp:99
The Point structure. @copyright This source code is part of the Board project, a C++ library whose pu...
Classes ShapeList and Group.
A group of shapes. A group is basically a ShapeList except that when rendered in either an SVG of a F...
Definition: ShapeList.h:304
void fillTriangle(double x1, double y1, double x2, double y2, double x3, double y3, int depth=-1)
Definition: Board.cpp:573
void fillRectangle(double left, double top, double width, double height, int depth=-1)
Definition: Board.cpp:411
A path, according to Postscript and SVG definition.
Definition: Path.h:41
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:797
void fillGouraudTriangle(const Point &p1, const Color &color1, const Point &p2, const Color &color2, const Point &p3, const Color &color3, unsigned char divisions=3, int depth=-1)
Definition: Board.cpp:611
Color penColor() const
penColor
Definition: Board.cpp:1232
Struct representing a 2D point.
Definition: Point.h:39
Shape::LineCap lineCap
Definition: Board.h:980
Shape::LineStyle lineStyle
Definition: Board.h:979
Board & setFillColorRGBf(float red, float green, float blue, float alpha=1.0f)
Definition: Board.cpp:257
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
void clear(const Color &color=Color::Null)
Definition: Board.cpp:126
void backgroundColor(const Color &color)
Definition: Board.cpp:293
Color _backgroundColor
Definition: Board.h:987
Board & setLineStyle(Shape::LineStyle style)
Board & setPenColorRGBf(float red, float green, float blue, float alpha=1.0f)
Definition: Board.cpp:230
A group of shapes.
Definition: ShapeList.h:45
void drawCircle(double x, double y, double radius, int depth=-1)
Definition: Board.cpp:441
void setClippingRectangle(double x, double y, double width, double height)
Definition: Board.cpp:712
Board & setFontSize(double fontSize)
Definition: Board.cpp:286
Board & setFillColor(const Color &color)
Definition: Board.cpp:264
void fillCircle(double x, double y, double radius, int depth=-1)
Definition: Board.cpp:452
void addDuplicates(const Shape &shape, std::size_t times, double dx, double dy, double scale=1.0)
Definition: Board.cpp:751
Board(const Color &backgroundColor=Color::Null)
Definition: Board.cpp:86
void drawLine(double x1, double y1, double x2, double y2, int depth=-1)
Definition: Board.cpp:308
void drawEllipse(double x, double y, double xRadius, double yRadius, int depth=-1)
Definition: Board.cpp:462
void fillPolyline(const std::vector< Point > &points, int depth=-1)
Definition: Board.cpp:521
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Color fillColor() const
fillColor
Definition: Board.cpp:1237
double lineWidth
Definition: Board.h:978
void drawDot(double x, double y, int depth=-1)
Definition: Board.cpp:299
@copyright This source code is part of the Board project, a C++ library whose purpose is to allow sim...
Color penColor
Definition: Board.h:976
Board & setFont(const Fonts::Font font, double fontSize)
Definition: Board.cpp:278
Board & scale(double sx, double sy)
Definition: Board.cpp:157
Fonts::Font font
Definition: Board.h:982
Color fillColor
Definition: Board.h:977
State _state
Definition: Board.h:986
Board & translate(double dx, double dy)
Definition: Board.cpp:149
Board & setPenColorRGBi(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha=255)
Definition: Board.cpp:220
Board & setLineCap(Shape::LineCap cap)
Shape & top()
Definition: ShapeList.cpp:593
virtual Point center(LineWidthFlag lineWidthFlag=IgnoreLineWidth) const
Definition: Shapes.cpp:101
void drawClosedPolyline(const std::vector< Point > &points, int depth=-1)
Definition: Board.cpp:508
Board & setPenColor(const Color &color)
Definition: Board.cpp:240
Struct representing a rectangle on the plane.
Definition: Rect.h:38
void drawBoundingBox(LineWidthFlag lineWidthFlag, int depth=-1)
Definition: Board.cpp:694
void drawPolyline(const std::vector< Point > &points, int depth=-1)
Definition: Board.cpp:492