Geometrize 1.0
C++ library for geometrizing images into geometric primitives
shapemutator.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4
5namespace geometrize
6{
7class Circle;
8class Ellipse;
9class Line;
10class Polyline;
11class QuadraticBezier;
12class Rectangle;
13class RotatedEllipse;
14class RotatedRectangle;
15class Shape;
16class Triangle;
17}
18
19namespace geometrize
20{
21
22// Default implementations that perform initial setup on each type of shape
23void setup(geometrize::Shape& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
24void setup(geometrize::Circle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
25void setup(geometrize::Ellipse& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
26void setup(geometrize::Line& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
27void setup(geometrize::Polyline& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
28void setup(geometrize::QuadraticBezier& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
29void setup(geometrize::Rectangle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
30void setup(geometrize::RotatedEllipse& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
31void setup(geometrize::RotatedRectangle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
32void setup(geometrize::Triangle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
33
34// Default implementations that mutate each type of shape
35void mutate(geometrize::Shape& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
36void mutate(geometrize::Circle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
37void mutate(geometrize::Ellipse& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
38void mutate(geometrize::Line& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
39void mutate(geometrize::Polyline& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
40void mutate(geometrize::QuadraticBezier& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
41void mutate(geometrize::Rectangle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
42void mutate(geometrize::RotatedEllipse& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
43void mutate(geometrize::RotatedRectangle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
44void mutate(geometrize::Triangle& s, std::int32_t xMin, std::int32_t yMin, std::int32_t xMax, std::int32_t yMax);
45
46// Default implementations that translate each type of shape
47void translate(geometrize::Shape& s, float x, float y);
48void translate(geometrize::Circle& s, float x, float y);
49void translate(geometrize::Ellipse& s, float x, float y);
50void translate(geometrize::Line& s, float x, float y);
51void translate(geometrize::Polyline& s, float x, float y);
52void translate(geometrize::QuadraticBezier& s, float x, float y);
53void translate(geometrize::Rectangle& s, float x, float y);
54void translate(geometrize::RotatedEllipse& s, float x, float y);
55void translate(geometrize::RotatedRectangle& s, float x, float y);
56void translate(geometrize::Triangle& s, float x, float y);
57
58// Default implementations that scale each type of shape
59void scale(geometrize::Shape& s, float scaleFactor);
60void scale(geometrize::Circle& s, float scaleFactor);
61void scale(geometrize::Ellipse& s, float scaleFactor);
62void scale(geometrize::Line& s, float scaleFactor);
63void scale(geometrize::Polyline& s, float scaleFactor);
64void scale(geometrize::QuadraticBezier& s, float scaleFactor);
65void scale(geometrize::Rectangle& s, float scaleFactor);
66void scale(geometrize::RotatedEllipse& s, float scaleFactor);
67void scale(geometrize::RotatedRectangle& s, float scaleFactor);
68void scale(geometrize::Triangle& s, float scaleFactor);
69
70// Default implementations that rotate each type of shape through an angle (those which support rotation anyway)
71void rotate(geometrize::Shape& s, float angle);
72void rotate(geometrize::Line& s, float angle);
73void rotate(geometrize::RotatedEllipse& s, float angle);
74void rotate(geometrize::RotatedRectangle& s, float angle);
75void rotate(geometrize::Triangle& s, float angle);
76
77}
The Circle class represents a circle.
Definition: circle.h:16
The Ellipse class represents an ellipse.
Definition: ellipse.h:16
The Line class represents a simple line.
Definition: line.h:16
The Polyline class represents a polyline.
Definition: polyline.h:18
The QuadraticBezier class represents a quadratic bezier curve.
Definition: quadraticbezier.h:16
The Rectangle class represents a rectangle.
Definition: rectangle.h:16
The RotatedEllipse class represents a rotated ellipse.
Definition: rotatedellipse.h:16
The RotatedRectangle class represents a rotated rectangle.
Definition: rotatedrectangle.h:16
Definition: shape.h:18
The Triangle class represents a triangle.
Definition: triangle.h:16
Definition: bitmap.cpp:8
void rotate(geometrize::Shape &s, const float angle)
Definition: shapemutator.cpp:617
void mutate(geometrize::Shape &s, const std::int32_t xMin, const std::int32_t yMin, const std::int32_t xMax, const std::int32_t yMax)
Definition: shapemutator.cpp:155
void setup(geometrize::Shape &s, const std::int32_t xMin, const std::int32_t yMin, const std::int32_t xMax, const std::int32_t yMax)
Definition: shapemutator.cpp:37
void translate(geometrize::Shape &s, const float x, const float y)
Definition: shapemutator.cpp:385
void scale(geometrize::Shape &s, const float scaleFactor)
Definition: shapemutator.cpp:490