pointer_event.h
1/*
2** ClanLib SDK
3** Copyright (c) 1997-2020 The ClanLib 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 ClanLib 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
34namespace clan
35{
52
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}
Base class for events being dispatched through the view hiarchy.
Definition UI/Events/event.h:48
friend class View
Definition UI/Events/event.h:91
Pointf pos(const std::shared_ptr< View > &view) const
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
Pointf pos(View *view) const
Pointer position relative to local view content coordinates.
PointerButton button() const
Pointer button relevant for the event.
Definition pointer_event.h:79
bool shift_down() const
True if the shift key was down.
Definition pointer_event.h:92
bool ctrl_down() const
True if the control key was down.
Definition pointer_event.h:95
bool alt_down() const
True if the alt key was down.
Definition pointer_event.h:89
void set_pos(View *view, const Pointf &pos)
Set event pointer position relative to local view content coordinates.
bool cmd_down() const
True if the command key was down.
Definition pointer_event.h:98
PointerEventType type() const
Pointer event type.
Definition pointer_event.h:76
2D (x,y) point structure - Float
Definition point.h:72
@ right
Definition mat4.h:47
@ left
Definition mat4.h:46
@ none
Definition graphic_context.h:119
Definition clanapp.h:36
PointerEventType
Pointer event type.
Definition pointer_event.h:55
@ move
Pointer left area.
Definition pointer_event.h:59
@ leave
Pointer entered area.
Definition pointer_event.h:58
@ promixity_change
Pointer double click pressed.
Definition pointer_event.h:63
@ double_click
Pointer released.
Definition pointer_event.h:62
@ enter
No event type specified.
Definition pointer_event.h:57
PointerButton
Pointer button.
Definition pointer_event.h:38
@ xbutton4
Extra button 3.
Definition pointer_event.h:48
@ xbutton5
Extra button 4.
Definition pointer_event.h:49
@ wheel_up
Middle/wheel button.
Definition pointer_event.h:43
@ xbutton3
Extra button 2.
Definition pointer_event.h:47
@ none
Definition pointer_event.h:39
@ middle
Right button.
Definition pointer_event.h:42
@ wheel_down
Wheel up tick.
Definition pointer_event.h:44
@ xbutton1
Wheel down tick.
Definition pointer_event.h:45
@ xbutton6
Extra button 5.
Definition pointer_event.h:50
@ xbutton2
Extra button 1.
Definition pointer_event.h:46
@ release
Definition key_event.h:43
@ press
Definition key_event.h:42