LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
text.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 #include "cad/math/lcmath.h"
12 #include <cad/primitive/point.h>
14 
15 namespace lc {
16  namespace entity {
17  class Text : public std::enable_shared_from_this<Text>, public CADEntity, virtual public Visitable, public Draggable {
18  public:
33  const std::string text_value,
34  const double height,
35  const double angle,
36  const std::string style,
40  const Layer_CSPtr layer,
41  const MetaInfo_CSPtr metaInfo = nullptr,
42  const Block_CSPtr block = nullptr
43  );
44 
45  Text(const Text_CSPtr &other, bool sameID);
46 
47  public:
49  const std::string _text_value;
50  const double _height;
51  const double _angle;
52  const std::string _style;
56  public:
57 
59  return _insertion_point;
60  }
61 
62  std::string const &text_value() const {
63  return _text_value;
64  }
65 
66  double const angle() const {
67  return _angle;
68  }
69 
70  std::string const &style() const {
71  return _style;
72  }
73 
75  return _textgeneration;
76  }
77 
78  TextConst::VAlign const &valign() const {
79  return _valign;
80  }
81 
82  TextConst::HAlign const &halign() const {
83  return _halign;
84  }
85 
86  double height() const {
87  return _height;
88  }
89 
90  public:
96  virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override;
97 
103  virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override;
104 
111  virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override;
112 
119  virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center,
120  const geo::Coordinate &scale_factor) const override;
121 
122  virtual CADEntity_CSPtr mirror(const geo::Coordinate& axis1,
123  const geo::Coordinate& axis2) const override {
124  return NULL; // TODO: no return statement, not implemented in lwpolyline.cpp
125  }
126 
131  virtual const geo::Area boundingBox() const override;
132 
133  virtual CADEntity_CSPtr modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const override;
134 
135  public:
136  virtual void accept(GeoEntityVisitor &v) const override { v.visit(*this); }
137 
138  virtual void dispatch(EntityDispatch &ed) const override {
139  ed.visit(shared_from_this());
140  }
141 
142  public:
143  virtual std::map<unsigned int, lc::geo::Coordinate> dragPoints() const override;
144  virtual CADEntity_CSPtr setDragPoints(std::map<unsigned int, lc::geo::Coordinate> dragPoints) const override;
145  };
146 
148  }
149 }
150 
virtual void accept(GeoEntityVisitor &v) const override
Definition: text.h:136
std::string const & style() const
Definition: text.h:70
const TextConst::HAlign _halign
Definition: text.h:55
virtual CADEntity_CSPtr copy(const geo::Coordinate &offset) const override
copy, copies line by an offset
Definition: text.cpp:57
double height() const
Definition: text.h:86
virtual CADEntity_CSPtr setDragPoints(std::map< unsigned int, lc::geo::Coordinate > dragPoints) const override
Return modified entity.
Definition: text.cpp:136
const TextConst::VAlign _valign
Definition: text.h:54
virtual void visit(entity::Line_CSPtr)=0
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
const std::string _style
Definition: text.h:52
virtual const geo::Area boundingBox() const override
boundingBox of the entity
Definition: text.cpp:104
geo::Coordinate insertion_point() const
Definition: text.h:58
virtual CADEntity_CSPtr scale(const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const override
scale, scales the entity
Definition: text.cpp:88
const TextConst::DrawingDirection _textgeneration
Definition: text.h:53
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
DECLARE_SHORT_SHARED_PTR(Document)
std::string const & text_value() const
Definition: text.h:62
const geo::Coordinate _insertion_point
Definition: text.h:48
Definition: cadentity.h:12
double const angle() const
Definition: text.h:66
Text(const geo::Coordinate &insertion_point, const std::string text_value, const double height, const double angle, const std::string style, const TextConst::DrawingDirection textgeneration, const TextConst::HAlign halign, const TextConst::VAlign valign, const Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr)
Text, default constructor.
Definition: text.cpp:9
virtual std::map< unsigned int, lc::geo::Coordinate > dragPoints() const override
Get all points of the entity that can be dragged.
Definition: text.cpp:128
const double _angle
Definition: text.h:51
virtual CADEntity_CSPtr rotate(const geo::Coordinate &rotation_center, const double rotation_angle) const override
rotate, rotate operation
Definition: text.cpp:73
const double _height
Definition: text.h:50
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
TextConst::VAlign const & valign() const
Definition: text.h:78
virtual void dispatch(EntityDispatch &ed) const override
Definition: text.h:138
virtual CADEntity_CSPtr mirror(const geo::Coordinate &axis1, const geo::Coordinate &axis2) const override
Definition: text.h:122
TextConst::HAlign const & halign() const
Definition: text.h:82
const std::string _text_value
Definition: text.h:49
TextConst::DrawingDirection const & textgeneration() const
Definition: text.h:74
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: text.cpp:109
virtual CADEntity_CSPtr move(const geo::Coordinate &offset) const override
move, moves by an offset
Definition: text.cpp:42