Chrysalis - Pattern
Toggle main menu visibility
Loading...
Searching...
No Matches
PatternSpace.h
Go to the documentation of this file.
1
#ifndef CHRYSALIS_PATTERNSPACE_H
2
#define CHRYSALIS_PATTERNSPACE_H
3
4
#include <unordered_map>
5
6
#include "
Outline.h
"
7
#include "
ProjectSpace.h
"
8
#include "
Transformation.h
"
9
#include "
observers/BaseObservable.h
"
10
#include "
observers/PatternShapeObserver.h
"
11
#include "
observers/PatternTraceObserver.h
"
12
13
namespace
Chrysalis
{
14
class
PatternSpace
:
public
BaseObservable
<PatternTraceObserver>,
public
BaseObservable
<PatternShapeObserver> {
15
PROVIDE_SERIALIZATION_ACCESS
(
PatternSpace
)
16
public
:
17
using
trace
=
BaseObservable<PatternTraceObserver>
;
18
using
shape
=
BaseObservable<PatternShapeObserver>
;
19
20
explicit
PatternSpace
(
OutlineContainer
outline);
21
static
PatternSpace
*
create
();
22
23
[[nodiscard]]
bool
hasPoint
(
const
std::string& name)
const
;
24
[[nodiscard]]
bool
hasOutline
(
const
std::string& name)
const
;
25
26
[[nodiscard]]
const
Point
*
getLastPoint
()
const
;
27
[[nodiscard]]
const
OutlineContainer
&
getOutline
()
const
;
28
[[nodiscard]]
const
Transformation
&
getTransformation
()
const
;
29
[[nodiscard]]
const
Point
*
getPoint
(
const
std::string& name)
const
;
30
[[nodiscard]]
const
std::unordered_map<std::string, const Point*>&
getPoints
()
const
;
31
32
void
transform
(
const
Transformation
& transformation);
33
void
addPoint
(
const
std::string& name,
const
Point
* point);
34
private
:
35
Transformation
transformation_;
36
37
const
Point
* lastPoint_ =
nullptr
;
39
OutlineContainer
outline_;
40
std::unordered_map<std::string, const Point*> points_;
41
};
42
SERIALIZE_CONSTRUCTION
(
PatternSpace
, outline_)
43
}
44
45
#endif
//CHRYSALIS_PATTERNSPACE_H
BaseObservable.h
Outline.h
PatternShapeObserver.h
PatternTraceObserver.h
ProjectSpace.h
Transformation.h
Chrysalis::BaseObservable< PatternTraceObserver >::BaseObservable
BaseObservable()=default
Chrysalis::PatternSpace::hasOutline
bool hasOutline(const std::string &name) const
Definition
PatternSpace.cpp:23
Chrysalis::PatternSpace::shape
BaseObservable< PatternShapeObserver > shape
Definition
PatternSpace.h:18
Chrysalis::PatternSpace::create
static PatternSpace * create()
Definition
PatternSpace.cpp:7
Chrysalis::PatternSpace::trace
BaseObservable< PatternTraceObserver > trace
Definition
PatternSpace.h:17
Chrysalis::PatternSpace::transform
void transform(const Transformation &transformation)
Definition
PatternSpace.cpp:41
Chrysalis::PatternSpace::getPoint
const Point * getPoint(const std::string &name) const
Definition
PatternSpace.cpp:27
Chrysalis::PatternSpace::getPoints
const std::unordered_map< std::string, const Point * > & getPoints() const
Definition
PatternSpace.cpp:31
Chrysalis::PatternSpace::getLastPoint
const Point * getLastPoint() const
Definition
PatternSpace.cpp:11
Chrysalis::PatternSpace::getTransformation
const Transformation & getTransformation() const
Definition
PatternSpace.cpp:46
Chrysalis::PatternSpace::getOutline
const OutlineContainer & getOutline() const
Definition
PatternSpace.cpp:15
Chrysalis::PatternSpace::hasPoint
bool hasPoint(const std::string &name) const
Definition
PatternSpace.cpp:19
Chrysalis::PatternSpace::PatternSpace
PatternSpace(OutlineContainer outline)
Definition
PatternSpace.cpp:5
Chrysalis::PatternSpace::addPoint
void addPoint(const std::string &name, const Point *point)
Definition
PatternSpace.cpp:35
Chrysalis::Point
Definition
Point.h:9
Chrysalis::Transformation
Definition
Transformation.h:8
Chrysalis
Definition
Argument.h:9
Chrysalis::OutlineContainer
std::unique_ptr< NamedElementsContainer< Outline > > OutlineContainer
Definition
Outline.h:21
PROVIDE_SERIALIZATION_ACCESS
#define PROVIDE_SERIALIZATION_ACCESS(Class)
Definition
serialization.h:29
SERIALIZE_CONSTRUCTION
#define SERIALIZE_CONSTRUCTION(Class,...)
Definition
serialization.h:119
pattern
include
PatternSpace.h
Generated by
1.17.0