QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 <QSet>
26 
27 #include "REntity.h"
28 #include "RMouseEvent.h"
29 #include "RVector.h"
30 
31 class RGraphicsView;
32 
45 public:
50  enum Status {
64  CoordinatePolar
65  };
66 
67 public:
68  RSnap() : status(RSnap::Unknown), lastSnap(RVector::invalid) {}
69  virtual ~RSnap() {}
70 
75  virtual RVector snap(
76  const RVector& position,
77  RGraphicsView& view,
78  double range=RNANDOUBLE) = 0;
79 
84  virtual RVector snap(RMouseEvent& event) {
85  return snap(event.getModelPosition(), event.getGraphicsView());
86  }
87 
88  virtual void showUiOptions() {}
89  virtual void hideUiOptions() {}
90 
95  QSet<REntity::Id> getEntityIds() {
96  return entityIds;
97  }
98 
100  return status;
101  }
102 
104  return lastSnap;
105  }
106 
107  void reset() {
108  entityIds.clear();
109  status = RSnap::Unknown;
110  lastSnap = RVector::invalid;
111  }
112 
113 protected:
114  QSet<REntity::Id> entityIds;
117 };
118 
120 Q_DECLARE_METATYPE(RSnap::Status)
121 
122 #endif