LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
dimension.cpp
Go to the documentation of this file.
1 #include "cad/math/lcmath.h"
3 
4 using namespace lc;
5 using namespace entity;
6 
7 Dimension::Dimension(geo::Coordinate const& definitionPoint, geo::Coordinate const& middleOfText, TextConst::AttachmentPoint const& attachmentPoint, double textAngle, double const lineSpacingFactor,
8  TextConst::LineSpacingStyle const& lineSpacingStyle, std::string const& explicitValue)
9  : _definitionPoint(definitionPoint),
10  _middleOfText(middleOfText),
11  _attachmentPoint(attachmentPoint),
12  _textAngle(textAngle),
13  _lineSpacingFactor(lineSpacingFactor),
14  _lineSpacingStyle(lineSpacingStyle),
15  _explicitValue(explicitValue) {
16 }
17 
18 Dimension::Dimension(const geo::Coordinate& definitionPoint,
19  const geo::Coordinate& middleOfText,
20  const TextConst::AttachmentPoint attachmentPoint,
21  const double textAngle) : _definitionPoint(definitionPoint),
22  _middleOfText(middleOfText),
23  _attachmentPoint(attachmentPoint),
24  _textAngle(textAngle),
25  _lineSpacingFactor(1.),
26  _lineSpacingStyle(TextConst::LineSpacingStyle::AtLeast),
27  _explicitValue("<>") {
28 }
29 
30 Dimension::Dimension(Dimension const& other) : _definitionPoint(other.definitionPoint()),
31  _middleOfText(other._middleOfText),
32  _attachmentPoint(other._attachmentPoint),
33  _textAngle(other._textAngle),
34  _lineSpacingFactor(other._lineSpacingFactor),
35  _lineSpacingStyle(other._lineSpacingStyle),
36  _explicitValue(other._explicitValue) {
37 
38 }
39 /*
40 CADEntity_CSPtr Dimension::move(const Coordinate& offset) const {
41  auto newDimension = std::make_shared<Dimension>(this->definitionPoint() + offset, this->middleOfText() + offset,this->attachmentPoint(), this->angle(),
42  this->lineSpacingFactor(), this->lineSpacingStyle(), explicitValue());
43  return newDimension;
44 }
45 
46 CADEntity_CSPtr Dimension::copy(const Coordinate& offset) const {
47  auto newDimension = std::make_shared<Dimension>(this->definitionPoint() + offset, this->middleOfText() + offset,this->attachmentPoint(), this->angle(),
48  this->lineSpacingFactor(), this->lineSpacingStyle(), explicitValue());
49  return newDimension;
50 }
51 
52 CADEntity_CSPtr Dimension::rotate(const Coordinate& rotation_center, const double rotation_angle) const {
53  auto newDimension = std::make_shared<Dimension>(this->definitionPoint().rotate(rotation_center, rotation_angle), this->middleOfText().rotate(rotation_center, rotation_angle),
54  Math::correctAngle(this->angle() + rotation_angle), this->lineSpacingFactor(), this->lineSpacingStyle(), explicitValue());
55  return newDimension;
56 }
57 
58 CADEntity_CSPtr Dimension::scale(const Coordinate& scale_center, const Coordinate& scale_factor) const {
59  auto newDimension = std::make_shared<Dimension>(this->definitionPoint().scale(scale_center, scale_factor), this->middleOfText().scale(scale_center, scale_factor),
60  , this->angle(), this->lineSpacingFactor(), this->lineSpacingStyle(), explicitValue());
61  return newDimension;
62 }
63 
64 CADEntity_CSPtr Dimension::modify(Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo) const {
65  auto newEntity = std::make_shared<Dimension>(this->definitionPoint(), this->middleOfText(),this->attachmentPoint(), this->angle(),
66  this->lineSpacingFactor(), this->lineSpacingStyle(), explicitValue());
67  return newEntity;
68 }
69 */
70 
72  return _definitionPoint;
73 }
74 
75 const geo::Coordinate& Dimension::middleOfText() const noexcept {
76  return _middleOfText;
77 }
78 
79 double Dimension::textAngle() const {
80  return _textAngle;
81 }
82 
84  return _attachmentPoint;
85 }
86 
88  return _lineSpacingFactor;
89 }
90 
92  return _lineSpacingStyle;
93 }
94 
95 std::string Dimension::explicitValue() const {
96  return _explicitValue;
97 }
const TextConst::LineSpacingStyle _lineSpacingStyle
Definition: dimension.h:123
TextConst::LineSpacingStyle lineSpacingStyle() const
Definition: dimension.cpp:91
const geo::Coordinate & definitionPoint() const noexcept
move, moves by an offset
Definition: dimension.cpp:71
const std::string _explicitValue
Definition: dimension.h:124
const geo::Coordinate _middleOfText
Definition: dimension.h:119
std::string explicitValue() const
Definition: dimension.cpp:95
const double _lineSpacingFactor
Definition: dimension.h:122
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 _definitionPoint
Definition: dimension.h:118
double lineSpacingFactor() const
Definition: dimension.cpp:87
Dimension(geo::Coordinate const &definitionPoint, geo::Coordinate const &middleOfText, TextConst::AttachmentPoint const &attachmentPoint, double const textAngle, double lineSpacingFactor, TextConst::LineSpacingStyle const &lineSpacingStyle, std::string const &explicitValue)
Dimension.
Definition: dimension.cpp:7
const TextConst::AttachmentPoint _attachmentPoint
Definition: dimension.h:120
double textAngle() const
Definition: dimension.cpp:79
const double _textAngle
Definition: dimension.h:121