LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
insert.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include <cad/base/cadentity.h>
5 #include <cad/builders/insert.h>
9 
10 namespace lc {
11  namespace entity {
12  class Insert : public CADEntity, public std::enable_shared_from_this<Insert>, public Snapable, public Draggable {
13  friend class builder::InsertBuilder;
14 
15  public:
16  Insert(Insert_CSPtr other, bool sameID = false);
17  ~Insert();
18 
19  const Block_CSPtr& displayBlock() const;
20  const geo::Coordinate& position() const;
21  const Document_SPtr& document() const;
22 
23  CADEntity_CSPtr move(const geo::Coordinate& offset) const override;
24  CADEntity_CSPtr copy(const geo::Coordinate& offset) const override;
25  CADEntity_CSPtr rotate(const geo::Coordinate& rotation_center, const double rotation_angle) const override;
26  CADEntity_CSPtr scale(const geo::Coordinate& scale_center, const geo::Coordinate& scale_factor) const override;
27  CADEntity_CSPtr mirror(const geo::Coordinate& axis1, const geo::Coordinate& axis2) const override;
28  CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override;
29 
30  const geo::Area boundingBox() const override;
31 
32  void dispatch(EntityDispatch& dispatch) const override;
33 
34  std::map<unsigned int, geo::Coordinate> dragPoints() const override;
35  CADEntity_CSPtr setDragPoints(std::map<unsigned int, lc::geo::Coordinate> dragPoints) const override;
36 
37  virtual std::vector<EntityCoordinate> snapPoints(const geo::Coordinate& coord, const SimpleSnapConstrain& simpleSnapConstrain,
38  double minDistanceToSnap, int maxNumberOfSnapPoints) const override;
39 
40  virtual geo::Coordinate nearestPointOnPath(const geo::Coordinate& coord) const override;
41 
42  protected:
43  Insert(const builder::InsertBuilder& builder);
44 
45  private:
46  void calculateBoundingBox();
47 
50 
51  Document_SPtr _document;
53  Block_CSPtr _displayBlock;
55  };
56 
58  }
59 }
virtual std::vector< EntityCoordinate > snapPoints(const geo::Coordinate &coord, const SimpleSnapConstrain &simpleSnapConstrain, double minDistanceToSnap, int maxNumberOfSnapPoints) const override
Find a number of snap points the line has available This function returns a ordered list...
Definition: insert.cpp:111
CADEntity_CSPtr setDragPoints(std::map< unsigned int, lc::geo::Coordinate > dragPoints) const override
Return modified entity.
Definition: insert.cpp:99
Block_CSPtr _displayBlock
Definition: insert.h:53
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
Insert(Insert_CSPtr other, bool sameID=false)
Definition: insert.cpp:6
const Block_CSPtr & displayBlock() const
Definition: insert.cpp:35
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
DECLARE_SHORT_SHARED_PTR(Document)
void dispatch(EntityDispatch &dispatch) const override
Definition: insert.cpp:87
Definition: cadentity.h:12
Document_SPtr _document
Definition: insert.h:51
std::map< unsigned int, geo::Coordinate > dragPoints() const override
Get all points of the entity that can be dragged.
Definition: insert.cpp:91
CADEntity_CSPtr scale(const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const override
Function implementation for Scale.
Definition: insert.cpp:62
const geo::Area boundingBox() const override
boundingBox Return the bounding box of this entity. This should be as tight around the entity as poss...
Definition: insert.cpp:72
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: insert.cpp:76
CADEntity_CSPtr mirror(const geo::Coordinate &axis1, const geo::Coordinate &axis2) const override
Definition: insert.cpp:67
CADEntity_CSPtr copy(const geo::Coordinate &offset) const override
Function for Copy.
Definition: insert.cpp:50
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
const geo::Coordinate & position() const
Definition: insert.cpp:39
void calculateBoundingBox()
Definition: insert.cpp:133
const Document_SPtr & document() const
Definition: insert.cpp:129
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: insert.cpp:125
geo::Coordinate _position
Definition: insert.h:52
CADEntity_CSPtr move(const geo::Coordinate &offset) const override
Function for Move.
Definition: insert.cpp:43
geo::Area _boundingBox
Definition: insert.h:54
void on_addEntityEvent(const lc::AddEntityEvent &)
Definition: insert.cpp:153
void on_removeEntityEvent(const lc::RemoveEntityEvent &)
Definition: insert.cpp:159
CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override
Function implementation for rotate.
Definition: insert.cpp:57