LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
point.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "cad/const.h"
5 
6 
8 #include "cad/base/cadentity.h"
10 
11 #include <cad/meta/layer.h>
12 
13 #include <cad/builders/point.h>
14 
15 namespace lc {
16  namespace entity {
17  class Point : public std::enable_shared_from_this<Point>, public CADEntity, public geo::Coordinate, virtual public Visitable {
18  friend class builder::PointBuilder;
19 
20  public:
27  Point(geo::Coordinate const &coord,
28  const Layer_CSPtr layer,
29  const MetaInfo_CSPtr metaInfo = nullptr,
30  const Block_CSPtr block = nullptr);
31 
39  Point(const double x, const double y,
40  const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo = nullptr, const Block_CSPtr block = nullptr);
41 
42  Point(const Point_CSPtr other, bool sameID = false);
43 
44  private:
45  Point(const builder::PointBuilder& builder);
46 
47  public:
53  virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override;
54 
60  virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override;
61 
68  virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override;
69 
76  virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center,
77  const geo::Coordinate &scale_factor) const override;
78 
79  virtual CADEntity_CSPtr mirror(const geo::Coordinate& axis1,
80  const geo::Coordinate& axis2) const override;
81 
86  virtual const geo::Area boundingBox() const override;
87 
88  virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override;
89 
90  public:
91  virtual void accept(GeoEntityVisitor &v) const override { v.visit(*this); }
92 
93  virtual void dispatch(EntityDispatch &ed) const override {
94  ed.visit(shared_from_this());
95  }
96  };
97 
99  }
100 }
101 
virtual void accept(GeoEntityVisitor &v) const override
Definition: point.h:91
virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override
copy, copies by an offset
Definition: point.cpp:37
virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const override
scale, scales the entity
Definition: point.cpp:49
virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override
rotate, rotate operation
Definition: point.cpp:42
double x() const
Returns x of Coordinate.
Definition: geocoordinate.h:26
virtual void visit(entity::Line_CSPtr)=0
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
double y() const
Returns y of Coordinate.
Definition: geocoordinate.h:34
virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override
modify Return a new entity with the same ID bit with possible modified metainfo and/pr layer informat...
Definition: point.cpp:67
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
DECLARE_SHORT_SHARED_PTR(Document)
Definition: cadentity.h:12
virtual CADEntity_CSPtr mirror(const geo::Coordinate &axis1, const geo::Coordinate &axis2) const override
Definition: point.cpp:56
virtual void dispatch(EntityDispatch &ed) const override
Definition: point.h:93
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
Point(geo::Coordinate const &coord, const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr)
Coordinate, Default Coordinate Constructor.
Definition: point.cpp:17
virtual const geo::Area boundingBox() const override
boundingBox of the entity
Definition: point.cpp:63
virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override
move, moves by an offset
Definition: point.cpp:31