[67] | 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 | }
|
---|