OpendTect  6.3
mouseevent.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: K. Tingdahl
8  Date: September 2005
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "generalmod.h"
14 #include "keyenum.h"
15 #include "gendefs.h"
16 #include "geometry.h"
17 #include "position.h"
18 #include "notify.h"
19 #include "trckeyvalue.h"
20 
21 
23 {
24  friend class QtTabletEventFilter;
25 
26 public:
27  TabletInfo();
28 
29  enum EventType { None=0, Move=87, Press=92, Release=93,
30  EnterProximity=171, LeaveProximity=172 };
32  // Use mouse event-type if possible. The two might
33  // mismatch because of a QTabletEvent bug for Linux.
34 
35  enum PointerType { UnknownPointer, Pen, Cursor, Eraser };
37 
38  enum TabletDevice { NoDevice, Puck, Stylus, Airbrush,
39  FourDMouse, RotationStylus };
41 
44 
45  double pressure_;
46  double rotation_;
48 
50 
51  int xtilt_;
52  int ytilt_;
53  int z_;
54 
55  int postPressTime() const;
56  float postPressDist() const;
57  float maxPostPressDist() const;
58 
59  static const TabletInfo* currentState();
60 
61 protected:
62 
66 
67  static TabletInfo& latestState();
68  void updatePressData();
69 };
70 
71 
73 {
74 public:
75 
77  int xx=0, int yy=0, float aa=0 )
78  : butstate_(st), pos_(xx,yy), angle_(aa)
79  , pressed_(false), tabletinfo_(0)
80  {}
81 
82  MouseEvent(const MouseEvent& me)
83  : tabletinfo_(0)
84  { *this = me; }
85 
86  ~MouseEvent();
87  MouseEvent& operator=(const MouseEvent&);
88 
89  OD::ButtonState buttonState() const { return butstate_; }
90  void setButtonState(const OD::ButtonState&);
91 
92  bool isPressed() const { return pressed_; }
93  void setPressed(bool yn) { pressed_ = yn; }
94 
95  const Geom::Point2D<int>& pos() const { return pos_; }
96  int x() const { return pos_.x_; }
97  int y() const { return pos_.y_; }
98  float angle() const { return angle_; }
100 
101  bool leftButton() const;
102  bool rightButton() const;
103  bool middleButton() const;
104  bool ctrlStatus() const;
105  bool altStatus() const;
106  bool shiftStatus() const;
107  inline bool isWithKey() const
108  {
109  return ctrlStatus() || altStatus()
110  || shiftStatus();
111  }
112 
113  bool operator ==( const MouseEvent& ev ) const;
114  bool operator !=( const MouseEvent& ev ) const
115  { return !(*this==ev); }
116 
117  TabletInfo* tabletInfo();
118  const TabletInfo* tabletInfo() const;
119  void setTabletInfo(const TabletInfo*);
120 
121  static float getDefaultTrackpadZoomFactor();
122  static float getDefaultMouseWheelZoomFactor();
123 
124 protected:
125 
127  bool pressed_;
129  float angle_;
131 };
132 
167 {
168 public:
171 
172  void triggerMovement(const MouseEvent&);
173  void triggerButtonPressed(const MouseEvent&);
174  void triggerButtonReleased(const MouseEvent&);
175  void triggerDoubleClick(const MouseEvent&);
176  void triggerWheel(const MouseEvent&);
177 
183 
184  bool hasEvent() const { return event_; }
185  const MouseEvent& event() const { return *event_; }
189  bool isHandled() const { return ishandled_; }
190  void setHandled(bool yn) { ishandled_ = yn; }
191 
192 protected:
193 
194  void setEvent(const MouseEvent*);
196 
198 };
199 
200 
207 {
208 public:
210  mExpClass(General) Info
211  {
212  public:
213  Info(const TrcKeyValue&,
214  float offset=mUdf(float));
215 
217  float offset_;
218  };
219 
221 };
222 
223 
226 {
227 public:
228  GestureEvent( int xx, int yy, float sc, float angl )
229  : pos_(xx,yy),scale_(sc),angle_(angl)
230  {}
231 
232 
233  const Geom::Point2D<int>& pos() const { return pos_; }
234  int x() const { return pos_.x_; }
235  int y() const { return pos_.y_; }
236  float scale() const { return scale_; }
237  float angle() const { return angle_; }
238 
239  enum State{ Started, Moving, Finished };
240  State getState() const { return state_; }
241  void setState(State st) { state_ = st; }
242 
243 protected:
244 
246  float scale_;
247  float angle_;
249 };
250 
251 
280 {
281 public:
284 
285 
286  void triggerPinchEvent(
287  const GestureEvent& pinchevnt);
289  const GestureEvent* getPinchEventInfo() const;
290  bool isHandled() const { return ishandled_; }
291  void setHandled(bool yn) { ishandled_ = yn; }
292 
294 
295 private:
296 
299 };
Handles gesture event and triggers notifier with GestureEventInfo.
Definition: mouseevent.h:279
#define mExpClass(module)
Definition: commondefs.h:157
Definition: trckeyvalue.h:25
double pressure_
Definition: mouseevent.h:45
Geom::Point2D< int > pos_
Definition: mouseevent.h:43
float offset_
Definition: mouseevent.h:217
int xtilt_
Definition: mouseevent.h:51
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
TabletDevice device_
Definition: mouseevent.h:40
const Geom::Point2D< int > & pos() const
Definition: mouseevent.h:233
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
EventType
Definition: mouseevent.h:29
EventType eventtype_
Definition: mouseevent.h:31
bool pressed_
Definition: mouseevent.h:127
Geom::Point2D< int > globalpos_
Definition: mouseevent.h:42
void setState(State st)
Definition: mouseevent.h:241
const Geom::Point2D< int > & pos() const
Definition: mouseevent.h:95
Definition: mouseevent.h:35
float maxpostpressdist_
Definition: mouseevent.h:64
PointerType pointertype_
Definition: mouseevent.h:36
#define od_int64
Definition: plftypes.h:34
double tangentialpressure_
Definition: mouseevent.h:47
void setHandled(bool yn)
Definition: mouseevent.h:291
int ytilt_
Definition: mouseevent.h:52
float angle_
Definition: mouseevent.h:247
Geom::Point2D< int > pos_
Definition: mouseevent.h:245
State getState() const
Definition: mouseevent.h:240
Definition: mouseevent.h:22
TrcKeyValue trkv_
Definition: mouseevent.h:216
Definition: mouseevent.h:206
PointerType
Definition: mouseevent.h:35
FixedString None()
Definition: keystrs.h:90
Definition: mouseevent.h:210
float angle_
Definition: mouseevent.h:129
Notifier< MouseEventHandler > buttonPressed
Definition: mouseevent.h:178
bool ishandled_
Definition: mouseevent.h:197
float angle() const
Definition: mouseevent.h:237
ButtonState
Definition: keyenum.h:18
Stores event information from gesture event.
Definition: mouseevent.h:225
bool isPressed() const
Definition: mouseevent.h:92
void setHandled(bool yn)
Definition: mouseevent.h:190
bool hasEvent() const
Definition: mouseevent.h:184
Notifier< MouseEventHandler > wheelMove
Definition: mouseevent.h:182
OD::ButtonState butstate_
Definition: mouseevent.h:126
int y() const
Definition: mouseevent.h:97
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
void setPressed(bool yn)
Definition: mouseevent.h:93
State state_
Definition: mouseevent.h:248
float angle() const
used for wheel events
Definition: mouseevent.h:98
int x() const
Definition: mouseevent.h:96
const MouseEvent & event() const
Definition: mouseevent.h:185
Qt&#39;s mouse/keyboard state values.
Definition: keyenum.h:20
MouseEvent(const MouseEvent &me)
Definition: mouseevent.h:82
bool operator!=(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:60
Definition: mouseevent.h:166
bool isHandled() const
Definition: mouseevent.h:290
Notifier< MouseEventHandler > buttonReleased
Definition: mouseevent.h:179
bool isWithKey() const
Definition: mouseevent.h:107
bool isHandled() const
Definition: mouseevent.h:189
int y() const
Definition: mouseevent.h:235
double rotation_
Definition: mouseevent.h:46
State
Definition: mouseevent.h:239
Notifier< GestureEventHandler > pinchnotifier
Definition: mouseevent.h:293
Geom::Point2D< int > globalpresspos_
Definition: mouseevent.h:65
MouseEvent * event_
Definition: mouseevent.h:195
float scale_
Definition: mouseevent.h:246
TabletDevice
Definition: mouseevent.h:38
CNotifier< MouseCursorExchange, const Info & > notifier
Definition: mouseevent.h:220
int presstimestamp_
Definition: mouseevent.h:63
Notifier< MouseEventHandler > movement
Definition: mouseevent.h:180
GestureEvent(int xx, int yy, float sc, float angl)
Definition: mouseevent.h:228
Notifier with automatic capsule creation.
Definition: notify.h:166
Notifier< MouseEventHandler > doubleClick
Definition: mouseevent.h:181
OD::ButtonState buttonState() const
Definition: mouseevent.h:89
float scale() const
Definition: mouseevent.h:236
int z_
Definition: mouseevent.h:53
MouseEvent(OD::ButtonState st=OD::NoButton, int xx=0, int yy=0, float aa=0)
Definition: mouseevent.h:76
bool ishandled_
Definition: mouseevent.h:298
Definition: mouseevent.h:72
od_int64 uniqueid_
Definition: mouseevent.h:49
int x() const
Definition: mouseevent.h:234
TabletInfo * tabletinfo_
Definition: mouseevent.h:130
const GestureEvent * currentevent_
Definition: mouseevent.h:297
Geom::Point2D< int > pos_
Definition: mouseevent.h:128

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017