1 | // Copyright (C) 2012-2013 ChaosForge / Kornel Kisielewicz
|
---|
2 | // http://chaosforge.org/
|
---|
3 | //
|
---|
4 | // This file is part of NV Libraries.
|
---|
5 | // For conditions of distribution and use, see copyright notice in nv.hh
|
---|
6 |
|
---|
7 | #include "nv/io_event.hh"
|
---|
8 |
|
---|
9 | using namespace nv;
|
---|
10 |
|
---|
11 | const char* get_key_name( key_code key )
|
---|
12 | {
|
---|
13 | switch ( key )
|
---|
14 | {
|
---|
15 | # define NV_KEY( id, val ) case id : return #id;
|
---|
16 | # include <nv/detail/key_list.inc>
|
---|
17 | # undef NV_KEY
|
---|
18 | default: return "KEY_UNKNOWN";
|
---|
19 | };
|
---|
20 | }
|
---|
21 |
|
---|
22 | const char* get_mouse_name( mouse_code button )
|
---|
23 | {
|
---|
24 | switch ( button )
|
---|
25 | {
|
---|
26 | # define NV_MOUSE( id, val ) case id : return #id;
|
---|
27 | # include <nv/detail/mouse_list.inc>
|
---|
28 | # undef NV_MOUSE
|
---|
29 | default: return "MOUSE_UNKNOWN";
|
---|
30 | };
|
---|
31 | }
|
---|
32 |
|
---|
33 | const char* get_io_event_name( io_event_code event )
|
---|
34 | {
|
---|
35 | switch ( event )
|
---|
36 | {
|
---|
37 | # define NV_IO_EVENT( id ) case id : return #id;
|
---|
38 | # include <nv/detail/io_event_list.inc>
|
---|
39 | # undef NV_IO_EVENT
|
---|
40 | default: return "EV_UNKNOWN";
|
---|
41 | };
|
---|
42 | }
|
---|
43 |
|
---|
44 | void register_io_types( type_database* db )
|
---|
45 | {
|
---|
46 | type_enum key_enums[] = {
|
---|
47 | # define NV_KEY( id, val ) type_enum( #id, id ),
|
---|
48 | # include <nv/detail/key_list.inc>
|
---|
49 | # undef NV_KEY
|
---|
50 | };
|
---|
51 | db->create_type<key_code>().enums( key_enums );
|
---|
52 |
|
---|
53 | type_enum mouse_enums[] = {
|
---|
54 | # define NV_MOUSE( id, val ) type_enum( #id, id ),
|
---|
55 | # include <nv/detail/mouse_list.inc>
|
---|
56 | # undef NV_MOUSE
|
---|
57 | };
|
---|
58 | db->create_type<mouse_code>().enums( mouse_enums );
|
---|
59 |
|
---|
60 | type_enum io_event_enums[] = {
|
---|
61 | # define NV_IO_EVENT( id ) type_enum( #id, id ),
|
---|
62 | # include <nv/detail/io_event_list.inc>
|
---|
63 | # undef NV_IO_EVENT
|
---|
64 | };
|
---|
65 | db->create_type<io_event_code>().enums( io_event_enums );
|
---|
66 |
|
---|
67 | type_field key_fields[] = {
|
---|
68 | type_field( "ascii", &key_event::ascii ),
|
---|
69 | type_field( "code", &key_event::code ),
|
---|
70 | type_field( "shift", &key_event::shift ),
|
---|
71 | type_field( "control", &key_event::control ),
|
---|
72 | type_field( "alt", &key_event::alt ),
|
---|
73 | type_field( "pressed", &key_event::pressed ),
|
---|
74 | };
|
---|
75 | db->create_type<key_event>().fields( key_fields );
|
---|
76 |
|
---|
77 | type_field mouse_button_fields[] = {
|
---|
78 | type_field( "x", &mouse_button_event::x ),
|
---|
79 | type_field( "y", &mouse_button_event::y ),
|
---|
80 | type_field( "button", &mouse_button_event::button ),
|
---|
81 | type_field( "pressed", &mouse_button_event::pressed ),
|
---|
82 | type_field( "code", &mouse_button_event::code ),
|
---|
83 | };
|
---|
84 | db->create_type<mouse_button_event>().fields( mouse_button_fields );
|
---|
85 |
|
---|
86 | type_field mouse_move_fields[] = {
|
---|
87 | type_field( "x", &mouse_move_event::x ),
|
---|
88 | type_field( "y", &mouse_move_event::y ),
|
---|
89 | type_field( "rx", &mouse_move_event::rx ),
|
---|
90 | type_field( "ry", &mouse_move_event::ry ),
|
---|
91 | type_field( "pressed", &mouse_move_event::pressed ),
|
---|
92 | type_field( "code", &mouse_move_event::code ),
|
---|
93 | };
|
---|
94 | db->create_type<mouse_move_event>().fields( mouse_move_fields );
|
---|
95 |
|
---|
96 | type_field system_fields[] = {
|
---|
97 | type_field( "sys_type", &system_event::sys_type ),
|
---|
98 | type_field( "param1", &system_event::param1 ),
|
---|
99 | type_field( "param2", &system_event::param2 ),
|
---|
100 | };
|
---|
101 | db->create_type<system_event>().fields( system_fields );
|
---|
102 | }
|
---|