Chrysalis - Pattern
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"
12
13namespace Chrysalis {
14 class PatternSpace: public BaseObservable<PatternTraceObserver>, public BaseObservable<PatternShapeObserver> {
16 public:
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 };
43}
44
45#endif //CHRYSALIS_PATTERNSPACE_H
bool hasOutline(const std::string &name) const
Definition PatternSpace.cpp:23
BaseObservable< PatternShapeObserver > shape
Definition PatternSpace.h:18
static PatternSpace * create()
Definition PatternSpace.cpp:7
BaseObservable< PatternTraceObserver > trace
Definition PatternSpace.h:17
void transform(const Transformation &transformation)
Definition PatternSpace.cpp:41
const Point * getPoint(const std::string &name) const
Definition PatternSpace.cpp:27
const std::unordered_map< std::string, const Point * > & getPoints() const
Definition PatternSpace.cpp:31
const Point * getLastPoint() const
Definition PatternSpace.cpp:11
const Transformation & getTransformation() const
Definition PatternSpace.cpp:46
const OutlineContainer & getOutline() const
Definition PatternSpace.cpp:15
bool hasPoint(const std::string &name) const
Definition PatternSpace.cpp:19
PatternSpace(OutlineContainer outline)
Definition PatternSpace.cpp:5
void addPoint(const std::string &name, const Point *point)
Definition PatternSpace.cpp:35
Definition Point.h:9
Definition Transformation.h:8
Definition Argument.h:9
std::unique_ptr< NamedElementsContainer< Outline > > OutlineContainer
Definition Outline.h:21
#define PROVIDE_SERIALIZATION_ACCESS(Class)
Definition serialization.h:29
#define SERIALIZE_CONSTRUCTION(Class,...)
Definition serialization.h:119