QCAD
Open Source 2D CAD
RLineData.h
Go to the documentation of this file.
1 
20 #ifndef RLINEDATA_H
21 #define RLINEDATA_H
22 
23 #include "entity_global.h"
24 
25 #include "RBox.h"
26 #include "RDocument.h"
27 #include "REntity.h"
28 #include "RLine.h"
29 #include "RVector.h"
30 
39 class QCADENTITY_EXPORT RLineData: public REntityData, protected RLine {
40 
41  friend class RLineEntity;
42 
43 protected:
45 
46 public:
47  RLineData();
48  RLineData(const RLine& line);
49  RLineData(const RVector& startPoint, const RVector& endPoint);
50 
51  virtual RS::EntityType getType() const {
52  return RS::EntityLine;
53  }
54 
56  return *this;
57  }
58 
59  virtual RBox getBoundingBox(bool ignoreEmpty) const;
60 
61  virtual RPolyline getHull(double offset) const;
62 
64  return RLine::getStartPoint();
65  }
66  RVector getEndPoint() const {
67  return RLine::getEndPoint();
68  }
69  double getAngle() const {
70  return RLine::getAngle();
71  }
72  double getDirection1() const {
73  return RLine::getDirection1();
74  }
75  double getDirection2() const {
76  return RLine::getDirection2();
77  }
78  bool reverse() {
79  return RLine::reverse();
80  }
81 
82  RS::Ending getTrimEnd(const RVector& trimPoint, const RVector& clickPoint) {
83  return RLine::getTrimEnd(trimPoint, clickPoint);
84  }
85  bool trimStartPoint(const RVector& trimPoint, const RVector& clickPoint = RVector::invalid, bool extend = false) {
86  return RLine::trimStartPoint(trimPoint, clickPoint, extend);
87  }
88  bool trimEndPoint(const RVector& trimPoint, const RVector& clickPoint = RVector::invalid, bool extend = false) {
89  return RLine::trimEndPoint(trimPoint, clickPoint, extend);
90  }
91 
92  RS::Side getSideOfPoint(const RVector& point) const {
93  return RLine::getSideOfPoint(point);
94  }
95 
96  virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
97 
98  virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
99 
100  virtual RShape* castToShape() {
101  return this;
102  }
103 
104  virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false) const {
105  Q_UNUSED(queryBox)
106  Q_UNUSED(ignoreComplex)
107  Q_UNUSED(segment)
108 
109  return QList<QSharedPointer<RShape> >() <<
110  QSharedPointer<RShape>(new RLine(*this));
111  }
112 };
113 
117 Q_DECLARE_METATYPE(QSharedPointer<RLineData>)
118 
119 #endif
RLineData::reverse
bool reverse()
Definition: RLineData.h:78
REntity.h
REntityData::getHull
virtual RPolyline getHull(double offset) const
Definition: REntityData.cpp:352
RLine::getStartPoint
virtual RVector getStartPoint() const
Definition: RLine.cpp:117
RLineData::getTrimEnd
RS::Ending getTrimEnd(const RVector &trimPoint, const RVector &clickPoint)
Definition: RLineData.h:82
RLineData::getStartPoint
RVector getStartPoint() const
Definition: RLineData.h:63
REntityData::getBoundingBox
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition: REntityData.cpp:303
RBox.h
RLine::getSideOfPoint
virtual RS::Side getSideOfPoint(const RVector &point) const
Definition: RLine.cpp:225
RLineData::getLine
RLine getLine()
Definition: RLineData.h:55
RS::Side
Side
Side used for side of a point relative to an entity (right hand or left hand side)
Definition: RS.h:205
RLineData::trimStartPoint
bool trimStartPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition: RLineData.h:85
RVector
Represents a 3d vector (x/y/z).
Definition: RVector.h:46
RS::Ending
Ending
Entity ending.
Definition: RS.h:215
RS::EntityType
EntityType
Entity types used for property handling / filtering.
Definition: RS.h:125
RLineData::trimEndPoint
bool trimEndPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition: RLineData.h:88
RLine.h
RObject::document
RDocument * document
Definition: RObject.h:341
RLineEntity
Line entity.
Definition: RLineEntity.h:38
RLineData::getAngle
double getAngle() const
Definition: RLineData.h:69
QCADENTITY_EXPORT
#define QCADENTITY_EXPORT
Definition: entity_global.h:10
RLine::getTrimEnd
virtual RS::Ending getTrimEnd(const RVector &trimPoint, const RVector &clickPoint)
Definition: RLine.cpp:379
RLineData::getDirection2
double getDirection2() const
Definition: RLineData.h:75
RLineData
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RLineData.h:39
RLine
Low-level mathematical representation of a line.
Definition: RLine.h:41
RShape
Interface for geometrical shape classes.
Definition: RShape.h:72
RDocument.h
RLineEntity::data
RLineData data
Definition: RLineEntity.h:162
RLine::getAngle
double getAngle() const
Definition: RLine.cpp:78
RVector.h
RLine::getDirection2
virtual double getDirection2() const
Definition: RLine.cpp:113
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(RMath *)
RLineData::getDirection1
double getDirection1() const
Definition: RLineData.h:72
RS::EntityLine
@ EntityLine
Line.
Definition: RS.h:145
REntityData::getReferencePoints
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const =0
RLineData::getShapes
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false) const
Definition: RLineData.h:104
REntityData
Base class for all entity data classes.
Definition: REntityData.h:67
RLineData::getEndPoint
RVector getEndPoint() const
Definition: RLineData.h:66
RLine::reverse
virtual bool reverse()
Definition: RLine.cpp:348
RDocument
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition: RDocument.h:72
RLine::trimStartPoint
virtual bool trimStartPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition: RLine.cpp:398
RLineData::castToShape
virtual RShape * castToShape()
Definition: RLineData.h:100
RLineData::getType
virtual RS::EntityType getType() const
Definition: RLineData.h:51
RLineData::getSideOfPoint
RS::Side getSideOfPoint(const RVector &point) const
Definition: RLineData.h:92
RS::ProjectionRenderingHint
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition: RS.h:185
RDEFAULT_RBOX
#define RDEFAULT_RBOX
Definition: RBox.h:32
RLine::trimEndPoint
virtual bool trimEndPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition: RLine.cpp:409
RLine::getEndPoint
virtual RVector getEndPoint() const
Definition: RLine.cpp:125
RS::RenderTop
@ RenderTop
Definition: RS.h:186
RBox
Represents a box e.g.
Definition: RBox.h:43
RLine::getDirection1
virtual double getDirection1() const
Definition: RLine.cpp:109
RVector::invalid
static const RVector invalid
invalid vector
Definition: RVector.h:322
entity_global.h
RLine::RLine
RLine()
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RLine.cpp:28
RPolyline
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition: RPolyline.h:49
REntityData::moveReferencePoint
virtual bool moveReferencePoint(const RVector &referencePoint, const RVector &targetPoint, Qt::KeyboardModifiers modifiers=Qt::NoModifier)=0
Moves the given reference point to the given target point or does nothing if this entity has no refer...