source: trunk/src/io_event.cc @ 182

Last change on this file since 182 was 121, checked in by epyon, 12 years ago
  • Nova builds with -Weverything/-Wall/-pedantic/etc on: on MSVC 2012 on GCC 4.6.3 on clang 3.2
  • ... without a single fucking warning.
File size: 3.1 KB
Line 
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
9using namespace nv;
10
11const char* nv::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        NV_RETURN_COVERED_DEFAULT( "KEY_UNKNOWN" );
19        };
20}
21
22const char* nv::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        NV_RETURN_COVERED_DEFAULT( "MOUSE_UNKNOWN" );
30        };
31}
32
33const char* nv::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        NV_RETURN_COVERED_DEFAULT( "EV_UNKNOWN" );
41        };
42}
43
44void nv::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>("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>("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>("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>("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>("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>("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>("system_event").fields( system_fields );
102}
Note: See TracBrowser for help on using the repository browser.