LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
dimangular.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "cad/const.h"
5 
7 #include "cad/base/cadentity.h"
9 #include "cad/math/lcmath.h"
10 #include <cad/primitive/point.h>
12 
13 namespace lc {
14  namespace entity {
15  class DimAngular : public std::enable_shared_from_this<DimAngular>, public CADEntity, public Dimension, virtual public Visitable, public Draggable {
16  public:
17 
18 
29  double const lineSpacingFactor,
32  geo::Coordinate const &_defLine21, geo::Coordinate const &_defLine22, const Layer_CSPtr layer,
33  const MetaInfo_CSPtr metaInfo = nullptr, const Block_CSPtr block = nullptr);
34 
35 
36  DimAngular(const DimAngular_CSPtr other, bool sameID = false);
37 
38  static DimAngular_SPtr dimAuto(geo::Coordinate const &center, geo::Coordinate const &p1,
39  geo::Coordinate const &p2, std::string const &explicitValue,
40  const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo = nullptr,
41  const Block_CSPtr block = nullptr);
42 
43  public:
49  virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override;
50 
56  virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override;
57 
64  virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override;
65 
72  virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center,
73  const geo::Coordinate &scale_factor) const override;
74 
75  virtual CADEntity_CSPtr mirror(const geo::Coordinate& axis1,
76  const geo::Coordinate& axis2) const override;
77 
82  virtual const geo::Area boundingBox() const override;
83 
84  virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override;
85 
86  geo::Coordinate defLine11() const;
87 
88  geo::Coordinate defLine12() const;
89 
90  geo::Coordinate defLine21() const;
91 
92  geo::Coordinate defLine22() const;
93 
94  protected:
99  public:
100  virtual void accept(GeoEntityVisitor &v) const override { v.visit(*this); }
101 
102  virtual void dispatch(EntityDispatch &ed) const override {
103  ed.visit(shared_from_this());
104  }
105 
106  public:
107  virtual std::map<unsigned int, lc::geo::Coordinate> dragPoints() const override;
108  virtual CADEntity_CSPtr setDragPoints(std::map<unsigned int, lc::geo::Coordinate> dragPoints) const override;
109  };
110 
111  DECLARE_SHORT_SHARED_PTR(DimAngular)
112  }
113 }
114 
115 // DIMLINEAR_H
geo::Coordinate defLine21() const
Definition: dimangular.cpp:132
virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override
rotate, rotate operation
Definition: dimangular.cpp:80
DimAngular(geo::Coordinate const &definitionPoint, geo::Coordinate const &middleOfText, TextConst::AttachmentPoint const &attachmentPoint, double textAngle, double const lineSpacingFactor, TextConst::LineSpacingStyle const &lineSpacingStyle, std::string const &explicitValue, geo::Coordinate const &_defLine11, geo::Coordinate const &_defLine12, geo::Coordinate const &_defLine21, geo::Coordinate const &_defLine22, const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr)
Definition: dimangular.cpp:7
virtual CADEntity_CSPtr setDragPoints(std::map< unsigned int, lc::geo::Coordinate > dragPoints) const override
Return modified entity.
Definition: dimangular.cpp:154
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: dimangular.cpp:103
const geo::Coordinate _defLine21
Definition: dimangular.h:97
TextConst::LineSpacingStyle lineSpacingStyle() const
Definition: dimension.cpp:91
const geo::Coordinate & definitionPoint() const noexcept
move, moves by an offset
Definition: dimension.cpp:71
const geo::Coordinate _defLine22
Definition: dimangular.h:98
geo::Coordinate defLine12() const
Definition: dimangular.cpp:128
virtual void visit(entity::Line_CSPtr)=0
virtual void accept(GeoEntityVisitor &v) const override
Definition: dimangular.h:100
std::string explicitValue() const
Definition: dimension.cpp:95
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
virtual CADEntity_CSPtr mirror(const geo::Coordinate &axis1, const geo::Coordinate &axis2) const override
Definition: dimangular.cpp:92
static DimAngular_SPtr dimAuto(geo::Coordinate const &center, geo::Coordinate const &p1, geo::Coordinate const &p2, std::string const &explicitValue, const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr)
Definition: dimangular.cpp:41
geo::Coordinate defLine11() const
Definition: dimangular.cpp:124
virtual void dispatch(EntityDispatch &ed) const override
Definition: dimangular.h:102
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
DECLARE_SHORT_SHARED_PTR(Document)
const geo::Coordinate & middleOfText() const noexcept
Definition: dimension.cpp:75
TextConst::AttachmentPoint const & attachmentPoint() const
Definition: dimension.cpp:83
Definition: cadentity.h:12
const geo::Coordinate _defLine11
Definition: dimangular.h:95
virtual const geo::Area boundingBox() const override
boundingBox of the entity
Definition: dimangular.cpp:98
double lineSpacingFactor() const
Definition: dimension.cpp:87
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override
copy, copies by an offset
Definition: dimangular.cpp:75
const geo::Coordinate _defLine12
Definition: dimangular.h:96
double textAngle() const
Definition: dimension.cpp:79
virtual std::map< unsigned int, lc::geo::Coordinate > dragPoints() const override
Get all points of the entity that can be dragged.
Definition: dimangular.cpp:140
virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const override
scale, scales the entity
Definition: dimangular.cpp:86
virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override
move, moves by an offset
Definition: dimangular.cpp:69
geo::Coordinate defLine22() const
Definition: dimangular.cpp:136