Board  0.9.5
examples/holes.cpp
#include <cstdlib>
#include <ctime>
#include <set>
#include <vector>
#include "Board.h"
using namespace LibBoard;
int main(int, char *[])
{
Board board;
board.clear(Color::White);
srand(static_cast<unsigned int>(time(nullptr)));
Path pA(Path::ClosedPath);
pA << Point(0, 0) << Point(180, 0) << Point(180, 300) << Point(0, 300);
Path pB(Path::ClosedPath);
pB << Point(0, 0) << Point(200, 0) << Point(500, 5) << Point(150, 200);
Path losange;
losange.close();
losange << Point(0, 0) << Point(300, -500) << Point(600, 0) << Point(300, 500);
board << Line(-50, 0, 650, 0, Color::Red);
board << Line(-50, 300, 650, -300, Color::Red);
board << board.last<Line>();
board.last<Line>().rotate(90 * Board::Degree);
Polyline p(losange, Style::defaultPenColor(), Color::Green);
losange.scale(0.5);
p.addHole(losange);
board << p;
board.rotate(45 * Board::Degree);
board.append(board.last<Polyline>(), Board::Right, Board::AlignCenter);
Polyline square(Path::ClosedPath, Color::Black, Color(70, 70, 130), 0.1);
square << Point(-110, 110) << Point(110, 110) << Point(110, -110) << Point(-110, -110);
int n = 80;
std::set<std::pair<int, int>> holes;
while (n--) {
holes.insert(std::make_pair((int)(rand() % 20) - 10, (int)(rand() % 20) - 10));
}
std::set<std::pair<int, int>>::iterator it = holes.begin();
while (it != holes.end()) {
Path hole;
Point p(it->first * 10, it->second * 10);
hole << Point(p.x - 5, p.y + 5) << Point(p.x + 5, p.y + 5) << Point(p.x + 5, p.y - 5) << Point(p.x - 5, p.y - 5);
square.addHole(hole);
++it;
}
board << square.scaled(3).translated(1000, 0).rotated(45 * Board::Degree);
// board << Polyline(losange,Shape::defaultPenColor(),Color::White);
board.saveEPS("holes.eps", Board::A4);
board.scaleToWidth(25, UseLineWidth);
board.saveSVG("holes.svg", Board::BoundingBox, 0.0, Board::UCentimeter);
}
LibBoard::Board::saveEPS
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
LibBoard::Style::defaultPenColor
static const Color & defaultPenColor()
defaultPenColor
Definition: Style.h:281
LibBoard::ShapeList::last
T & last(const std::size_t position=0)
Definition: ShapeList.h:501
LibBoard::Path::scale
Path & scale(double sx, double sy)
Definition: Path.cpp:167
LibBoard::Polyline
A polygonal line described by a series of 2D points.
Definition: Polyline.h:38
LibBoard::Board::saveSVG
void saveSVG(const char *filename, PageSize size=Board::BoundingBox, double margin=0.0, Unit unit=UMillimeter) const
Definition: Board.cpp:758
LibBoard::Shape::scaleToWidth
Shape & scaleToWidth(double w, LineWidthFlag lineWidthFlag)
Definition: Shape.cpp:85
LibBoard::Point::x
double x
Definition: Point.h:43
LibBoard::Point
Struct representing a 2D point.
Definition: Point.h:42
LibBoard::Line
A line between two points.
Definition: Line.h:38
LibBoard::Board::rotate
Board & rotate(double angle, const Point &center) override
Definition: Board.cpp:155
LibBoard::Board::enableLineWidthScaling
static void enableLineWidthScaling()
Definition: Board.cpp:134
LibBoard::Path
A path, according to Postscript and SVG definition.
Definition: Path.h:45
Board.h
Declaration of the Board class.
LibBoard::Polyline::addHole
void addHole(const Path &path)
Add a hole to the path. Warning: Hole share the polyline line style.
Definition: Polyline.cpp:152
LibBoard::Board::clear
void clear(const Color &color=Color::Null)
Definition: Board.cpp:149
LibBoard::Board
Class for EPS, FIG or SVG drawings.
Definition: Board.h:62
LibBoard::Point::y
double y
Definition: Point.h:44
LibBoard::ShapeList::append
ShapeList & append(const Shape &shape, Direction direction=ShapeList::Right, Alignment alignment=ShapeList::AlignCenter, double margin=0.0, LineWidthFlag lineWidthFlag=UseLineWidth)
Definition: ShapeList.cpp:246
LibBoard::Color
Structure representing an RGB triple.
Definition: Color.h:43