QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RSnap.h
Go to the documentation of this file.
1
20#ifndef RSNAP_H
21#define RSNAP_H
22
23#include "core_global.h"
24
25#include "RMath.h"
26#include "RObject.h"
27#include "RVector.h"
28
29class RGraphicsView;
30class RMouseEvent;
31
44public:
49 enum Status {
50 Unknown = 0,
51 Free = 1,
52 Grid = 2,
53 Endpoint = 3,
54 OnEntity = 4,
55 Center = 5,
56 Middle = 6,
57 Distance = 7,
58 Intersection = 8,
59 IntersectionManual = 9,
60 Reference = 10,
61 Perpendicular = 11,
62 Tangential = 12,
63 Coordinate = 13,
64 CoordinatePolar = 14
65 };
66
67public:
69 ~RSnap();
70
75 virtual RVector snap(
76 const RVector& position,
77 RGraphicsView& view,
78 double range=RNANDOUBLE) {
79
80 return RVector::invalid;
81 }
82
87 virtual RVector snap(RMouseEvent& event);
88
89 virtual void showUiOptions() {}
90 virtual void hideUiOptions() {}
91
92 virtual void suspendEvent() {
93 hideUiOptions();
94 }
95 virtual void finishEvent() {
96 hideUiOptions();
97 }
98
103 QList<RObject::Id> getEntityIds() {
104 return entityIds;
105 }
106
108 return status;
109 }
110
112 status = s;
113 }
114
116 return lastSnap;
117 }
118
119 void setLastSnap(const RVector& v) {
120 lastSnap = v;
121 }
122
123 virtual void reset() {
124 entityIds.clear();
125 lastSnap = RVector::invalid;
126 }
127
128protected:
129 QList<RObject::Id> entityIds;
132};
133
136
137#endif
#define RNANDOUBLE
Definition RMath.h:74
Q_DECLARE_METATYPE(RMath *)
Graphics view.
Definition RGraphicsView.h:67
A mouse event for a graphics scene.
Definition RMouseEvent.h:42
Abstract base class for all grid and object snap implementations.
Definition RSnap.h:43
void setLastSnap(const RVector &v)
Definition RSnap.h:119
RSnap::Status status
Definition RSnap.h:130
RSnap::Status getStatus() const
Definition RSnap.h:107
virtual void hideUiOptions()
Definition RSnap.h:90
RVector getLastSnap() const
Definition RSnap.h:115
virtual void finishEvent()
Definition RSnap.h:95
virtual void showUiOptions()
Definition RSnap.h:89
virtual RVector snap(const RVector &position, RGraphicsView &view, double range=RNANDOUBLE)
Definition RSnap.h:75
void setStatus(RSnap::Status s)
Definition RSnap.h:111
virtual void suspendEvent()
Definition RSnap.h:92
QList< RObject::Id > entityIds
Definition RSnap.h:129
virtual void reset()
Definition RSnap.h:123
RVector lastSnap
Definition RSnap.h:131
QList< RObject::Id > getEntityIds()
Definition RSnap.h:103
Status
Snap status, returned by snap tools (most importantly auto snap tool) to indicate what snap was used.
Definition RSnap.h:49
@ Unknown
Definition RSnap.h:50
Represents a 3d vector (x/y/z).
Definition RVector.h:47
static const RVector invalid
invalid vector
Definition RVector.h:335
#define QCADCORE_EXPORT
Definition core_global.h:10
char s
Definition opennurbs_string.cpp:32