LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
circle.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cad/meta/layer.h>
4 
5 #include "cad/const.h"
9 #include "cad/base/cadentity.h"
11 #include "cad/interface/snapable.h"
12 #include <cad/builders/circle.h>
13 
14 namespace lc {
15  namespace entity {
16 
17  class Circle
18  : public std::enable_shared_from_this<Circle>, public CADEntity, public geo::Circle, public Snapable {
19  friend class builder::CircleBuilder;
20 
21  public:
29  Circle(const geo::Coordinate &center, double radius, const Layer_CSPtr layer,
30  const MetaInfo_CSPtr metaInfo = nullptr, const Block_CSPtr block = nullptr);
31 
32  Circle(const Circle_CSPtr other, bool sameID = false);
33 
34  public:
35  virtual std::vector<EntityCoordinate> snapPoints(const geo::Coordinate &coord, const SimpleSnapConstrain & constrain, double minDistanceToSnap,
36  int maxNumberOfSnapPoints) const override;
37 
38  virtual geo::Coordinate nearestPointOnPath(const geo::Coordinate &coord) const override;
39 
40  public:
41 
47  virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override;
48 
54  virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override;
55 
62  virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override;
63 
70  virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center,
71  const geo::Coordinate &scale_factor) const override;
72 
73  virtual CADEntity_CSPtr mirror(const geo::Coordinate& axis1,
74  const geo::Coordinate& axis2) const override;
75 
80  virtual const geo::Area boundingBox() const override;
81 
82  virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override;
83 
84  public:
85  virtual void accept(GeoEntityVisitor &v) const override { v.visit(*this); }
86 
87  virtual void dispatch(EntityDispatch &ed) const override {
88  ed.visit(shared_from_this());
89  }
90 
91  private:
92  Circle(const builder::CircleBuilder& builder);
93 
94  };
95 
97  }
98 }
99 // CIRCLE_H
virtual const geo::Area boundingBox() const override
boundingBox of the entity
Definition: circle.cpp:96
Circle(const geo::Coordinate &center, double radius, const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr)
Circle, Circle Constructor.
Definition: circle.cpp:9
virtual std::vector< EntityCoordinate > snapPoints(const geo::Coordinate &coord, const SimpleSnapConstrain &constrain, double minDistanceToSnap, int maxNumberOfSnapPoints) const override
Find a number of snap points the line has available This function returns a ordered list...
Definition: circle.cpp:24
virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override
move, moves by an offset
Definition: circle.cpp:62
virtual void visit(entity::Line_CSPtr)=0
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
DECLARE_SHORT_SHARED_PTR(Document)
double radius() const
returns the radius of the circle.
Definition: geocircle.cpp:17
Definition: cadentity.h:12
virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override
rotate, rotate operation
Definition: circle.cpp:73
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
virtual void accept(GeoEntityVisitor &v) const override
Definition: circle.h:85
virtual void dispatch(EntityDispatch &ed) const override
Definition: circle.h:87
virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const override
scale, scales the entity
Definition: circle.cpp:80
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: circle.cpp:101
virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override
copy, copies by an offset
Definition: circle.cpp:68
const Coordinate center() const
Returns the Center of circle.
Definition: geocircle.cpp:14
virtual geo::Coordinate nearestPointOnPath(const geo::Coordinate &coord) const override
Find the nearest point on the path for this entity for the coordinate coord The path of a entity that...
Definition: circle.cpp:58
virtual CADEntity_CSPtr mirror(const geo::Coordinate &axis1, const geo::Coordinate &axis2) const override
Definition: circle.cpp:89