pointer_event.h
1 /*
2 ** UICore
3 ** Copyright (c) 1997-2015 The UICore Team
4 **
5 ** This software is provided 'as-is', without any express or implied
6 ** warranty. In no event will the authors be held liable for any damages
7 ** arising from the use of this software.
8 **
9 ** Permission is granted to anyone to use this software for any purpose,
10 ** including commercial applications, and to alter it and redistribute it
11 ** freely, subject to the following restrictions:
12 **
13 ** 1. The origin of this software must not be misrepresented; you must not
14 ** claim that you wrote the original software. If you use this software
15 ** in a product, an acknowledgment in the product documentation would be
16 ** appreciated but is not required.
17 ** 2. Altered source versions must be plainly marked as such, and must not be
18 ** misrepresented as being the original software.
19 ** 3. This notice may not be removed or altered from any source distribution.
20 **
21 ** Note: Some of the libraries UICore may link to may have additional
22 ** requirements or restrictions.
23 **
24 ** File Author(s):
25 **
26 ** Magnus Norddahl
27 */
28 
29 #pragma once
30 
31 #include "event.h"
32 #include "../../Core/Math/point.h"
33 
34 namespace uicore
35 {
37  enum class PointerButton
38  {
39  none,
40  left,
41  right,
42  middle,
43  wheel_up,
44  wheel_down,
45  xbutton1,
46  xbutton2,
47  xbutton3,
48  xbutton4,
49  xbutton5,
50  xbutton6
51  };
52 
54  enum class PointerEventType
55  {
56  none,
57  enter,
58  leave,
59  move,
60  press,
61  release,
62  double_click,
64  };
65 
67  class PointerEvent : public EventUI
68  {
69  public:
71  _type(type), _button(button), _pos(pos), _alt_down(alt_down), _shift_down(shift_down), _ctrl_down(ctrl_down), _cmd_down(cmd_down)
72  {
73  }
74 
76  PointerEventType type() const { return _type; }
77 
79  PointerButton button() const { return _button; }
80 
82  Pointf pos(View *view) const;
83  Pointf pos(const std::shared_ptr<View> &view) const;
84 
86  void set_pos(View *view, const Pointf &pos);
87 
89  bool alt_down() const { return _alt_down; }
90 
92  bool shift_down() const { return _shift_down; }
93 
95  bool ctrl_down() const { return _ctrl_down; }
96 
98  bool cmd_down() const { return _cmd_down; }
99 
100  private:
103  Pointf _pos;
104  bool _alt_down = false;
105  bool _shift_down = false;
106  bool _ctrl_down = false;
107  bool _cmd_down = false;
108  };
109 }
PointerEventType type() const
Pointer event type.
Definition: pointer_event.h:76
PointerButton
Pointer button.
Definition: pointer_event.h:37
bool shift_down() const
True if the shift key was down.
Definition: pointer_event.h:92
Pointer double click pressed.
2D (x,y) point structure - Float
Definition: point.h:68
PointerEventType
Pointer event type.
Definition: pointer_event.h:54
bool cmd_down() const
True if the command key was down.
Definition: pointer_event.h:98
Middle/wheel button.
void set_pos(View *view, const Pointf &pos)
Set event pointer position relative to local view content coordinates.
No button specified.
No event type specified.
Pointer entered area.
Pointf pos(View *view) const
Pointer position relative to local view content coordinates.
Base class for events being dispatched through the view hiarchy.
Definition: event.h:47
bool ctrl_down() const
True if the control key was down.
Definition: pointer_event.h:95
View for an area of the user interface.
Definition: view.h:68
bool alt_down() const
True if the alt key was down.
Definition: pointer_event.h:89
PointerEvent(PointerEventType type, PointerButton button, const Pointf &pos, bool alt_down, bool shift_down, bool ctrl_down, bool cmd_down)
Definition: pointer_event.h:70
Pointer event.
Definition: pointer_event.h:67
Definition: Application/application.h:35
PointerButton button() const
Pointer button relevant for the event.
Definition: pointer_event.h:79