cgv
event.h
1 #pragma once
2 
3 #include <string>
4 #include <iostream>
5 
6 #include "lib_begin.h"
7 
9 namespace cgv {
11  namespace gui {
12 
14 enum EventId
15 {
26 };
27 
30 {
31  EF_NONE = 0,
32  EF_MULTI = 1,
33  EF_DND = 2,
34  EF_PAD = 4,
35  EF_VR = 8,
36  EF_NUI = 16,
37 };
38 
41 {
42  EM_SHIFT = 1,
43  EM_ALT = 2,
44  EM_CTRL = 4,
45  EM_META = 8
46 };
47 
50 {
53  ETK_SCROLL_LOCK = 4
54 };
55 
58 class CGV_API event
59 {
60 protected:
62  unsigned char kind;
64  unsigned char flags;
66  unsigned char modifiers;
68  unsigned char toggle_keys;
70  double time;
71 public:
73  event(unsigned int _kind = EID_NONE, unsigned char _modifiers = 0, unsigned char _toggle_keys = 0, double _time = 0);
75  virtual ~event();
77  virtual void stream_out(std::ostream& os) const;
79  virtual void stream_in(std::istream& is);
81  virtual void* get_device_id() const;
83  void set_kind(unsigned char _kind);
85  unsigned get_kind() const;
88  void set_flags(unsigned char _flags);
90  unsigned get_flags() const;
92  void set_modifiers(unsigned char _modifiers);
94  unsigned char get_modifiers() const;
96  void set_toggle_keys(unsigned char _toggle_keys);
98  unsigned char get_toggle_keys() const;
100  void set_time(const double& _time);
102  double get_time() const;
103 };
104 
106 extern CGV_API std::string get_modifier_string(EventModifier modifiers);
107 
109 extern CGV_API std::string get_toggle_keys_string(EventToggleKeys toggle_keys);
110 
112 extern CGV_API unsigned char stream_in_modifiers(std::istream& is);
113 
115 extern CGV_API void stream_in_toggle_keys(std::istream& is, unsigned char& toggle_keys);
116 
118 extern CGV_API unsigned char& ref_current_modifiers();
119 
120  }
121 }
122 
123 #include <cgv/config/lib_end.h>
cgv::gui::EF_PAD
@ EF_PAD
whether event is from gamepad
Definition: event.h:34
cgv::gui::ETK_CAPS_LOCK
@ ETK_CAPS_LOCK
caps lock
Definition: event.h:51
cgv::gui::EID_LIFETIME
@ EID_LIFETIME
id for nui life time
Definition: event.h:25
cgv::gui::event::toggle_keys
unsigned char toggle_keys
store the active toggle keys
Definition: event.h:68
cgv::gui::stream_in_modifiers
unsigned char stream_in_modifiers(std::istream &is)
read modifiers in string format from a stream and set the passed reference to EventModifier s ored to...
Definition: event.cxx:126
cgv::gui::get_toggle_keys_string
std::string get_toggle_keys_string(EventToggleKeys toggle_keys)
convert a toggle key combination into a readable string separated by '+' signs, i....
Definition: event.cxx:47
cgv::gui::event::flags
unsigned char flags
store event flags
Definition: event.h:64
cgv::gui::EventId
EventId
define the ids of the most common events
Definition: event.h:15
cgv::gui::EID_CHOICE
@ EID_CHOICE
id for focus or selection change events
Definition: event.h:22
cgv::gui::EF_VR
@ EF_VR
whether event is from VR kit
Definition: event.h:35
cgv::gui::EID_ACTION
@ EID_ACTION
id for nui action events
Definition: event.h:24
cgv::gui::EF_NUI
@ EF_NUI
whether event is nature user interface event
Definition: event.h:36
cgv::gui::get_modifier_string
std::string get_modifier_string(EventModifier modifiers)
convert a modifier combination into a readable string ending on a '+' sign if not empty,...
Definition: event.cxx:37
cgv::gui::event::modifiers
unsigned char modifiers
store the active modifiers
Definition: event.h:66
cgv::gui::EF_MULTI
@ EF_MULTI
whether event is tagged with id of the device that generated the event
Definition: event.h:32
cgv::gui::EventFlags
EventFlags
flags
Definition: event.h:30
cgv::gui::EID_STICK
@ EID_STICK
id of a stick event describing a two axis controller that optionally can be touched and pressed
Definition: event.h:20
cgv::gui::ETK_NUM_LOCK
@ ETK_NUM_LOCK
num lock
Definition: event.h:52
cgv::gui::EM_SHIFT
@ EM_SHIFT
shift modifier
Definition: event.h:42
cgv::gui::event::kind
unsigned char kind
store which kind of event we have
Definition: event.h:62
cgv::gui::event
Definition: event.h:59
cgv::gui::EID_NONE
@ EID_NONE
undefined event id
Definition: event.h:16
cgv::gui::EID_POSE
@ EID_POSE
id for a 6D pose change events
Definition: event.h:21
cgv::gui::EF_DND
@ EF_DND
whether mouse has a drag and drop target attached
Definition: event.h:33
cgv::gui::EM_ALT
@ EM_ALT
alt modifier
Definition: event.h:43
cgv::gui::event::time
double time
store the time of the event in seconds
Definition: event.h:70
cgv::gui::ETK_SCROLL_LOCK
@ ETK_SCROLL_LOCK
scroll lock
Definition: event.h:53
cgv::gui::EM_CTRL
@ EM_CTRL
ctrl modifier
Definition: event.h:44
cgv::gui::EventModifier
EventModifier
define constants for event modifiers
Definition: event.h:41
cgv::gui::EID_MOUSE
@ EID_MOUSE
id for mouse event
Definition: event.h:18
cgv::gui::ref_current_modifiers
unsigned char & ref_current_modifiers()
read out the current modifiers
Definition: event.cxx:252
cgv
the cgv namespace
Definition: vr_calib.cxx:9
cgv::gui::EM_META
@ EM_META
meta modifier (windows or mac key)
Definition: event.h:45
cgv::gui::EID_KEY
@ EID_KEY
id for key event
Definition: event.h:17
cgv::gui::EID_THROTTLE
@ EID_THROTTLE
id of throttle event describing a one axis controller
Definition: event.h:19
cgv::gui::EventToggleKeys
EventToggleKeys
define constants for toggle keys
Definition: event.h:50
cgv::gui::EID_APPROACH
@ EID_APPROACH
id for nui approach events
Definition: event.h:23