Applied Magnet's Patch
[sdlgit/SDL_perl.git] / lib / SDL / Event.pm
1 #!/usr/bin/env perl
2 #
3 # Event.pm
4 #
5 # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
6 #
7 # ------------------------------------------------------------------------------
8 #
9 # This library is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Lesser General Public
11 # License as published by the Free Software Foundation; either
12 # version 2.1 of the License, or (at your option) any later version.
13
14 # This library is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 # Lesser General Public License for more details.
18
19 # You should have received a copy of the GNU Lesser General Public
20 # License along with this library; if not, write to the Free Software
21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22 #
23 # ------------------------------------------------------------------------------
24 #
25 # Please feel free to send questions, suggestions or improvements to:
26 #
27 #       David J. Goehrig
28 #       dgoehrig@cpan.org
29 #
30
31 package SDL::Event;
32
33 use strict;
34 use warnings;
35 use Carp;
36
37 use SDL;
38
39 sub new {
40         my $proto = shift;
41         my $class = ref($proto) || $proto;
42         my $self;
43         $self = \SDL::NewEvent();
44         bless $self, $class;
45         return $self;
46 }
47
48 sub DESTROY {
49         my $self = shift;
50         SDL::FreeEvent($$self);
51 }
52
53 sub type {
54         my $self = shift;
55         if (@_) {
56                 SDL::SetEventType($$self,$_[0]);
57         }
58         return SDL::EventType($$self);
59 }
60
61 sub pump {
62         SDL::PumpEvents();
63 }
64
65 sub poll {
66         my $self = shift;
67         return SDL::PollEvent($$self);
68 }
69
70 sub push {
71         my $self = shift;
72         return SDL::PushEvent($$self);
73 }
74
75 sub wait {
76         my $self = shift;
77         return SDL::WaitEvent($$self);
78 }
79
80 sub set { 
81         my $self = shift;
82         my $state = shift;
83         return SDL::EventState($self->type(),$state);
84 }
85
86 sub set_unicode {
87         my $self = shift;
88         my $toggle = shift;
89         return SDL::EnableUnicode($toggle);
90 }
91
92 sub set_key_repeat {
93         my $self = shift;
94         my $delay = shift;
95         my $interval = shift;
96         return SDL::EnableKeyRepeat($delay,$interval);
97 }
98
99 sub active_gain {
100         my $self = shift;
101         return SDL::ActiveEventGain($$self);
102 }
103
104 sub active_state {
105         my $self = shift;
106         return SDL::ActiveEventState($$self);
107 }
108
109 sub key_state {
110         my $self = shift;
111         return SDL::KeyEventState($$self);
112 }
113
114 sub key_sym {
115         my $self = shift;
116         return SDL::KeyEventSym($$self);
117 }
118
119 sub key_name {
120         my $self = shift;
121         return SDL::GetKeyName(SDL::KeyEventSym($$self));
122 }
123
124 sub key_mod {
125         my $self = shift;
126         return SDL::KeyEventMod($$self);
127 }
128
129 sub key_unicode {
130         my $self = shift;
131         return SDL::KeyEventUnicode($$self);
132 }
133
134 sub key_scancode {
135         my $self = shift;
136         return SDL::KeyEventScanCode($$self);
137 }
138
139 sub motion_state {
140         my $self = shift;
141         return SDL::MouseMotionState($$self);
142 }
143
144 sub motion_x {
145         my $self = shift;
146         return SDL::MouseMotionX($$self);
147 }
148
149 sub motion_y {
150         my $self = shift;
151         return SDL::MouseMotionY($$self);
152 }
153
154 sub motion_xrel {
155         my $self = shift;
156         return SDL::MouseMotionXrel($$self);
157 }
158
159 sub motion_yrel {
160         my $self = shift;
161         return SDL::MouseMotionYrel($$self);
162 }
163
164 sub button_state {
165         my $self = shift;
166         return SDL::MouseButtonState($$self);
167 }
168
169 sub button_x {
170         my $self = shift;
171         return SDL::MouseButtonX($$self);
172 }
173
174 sub button_y {
175         my $self = shift;
176         return SDL::MouseButtonY($$self);
177 }
178
179 sub button {
180         my $self = shift;
181         return SDL::MouseButton($$self);
182 }
183
184 sub resize_w {
185         my $self = shift;
186         SDL::ResizeEventW($$self);
187 }
188
189 sub resize_h {
190         my $self = shift;
191         SDL::ResizeEventH($$self);
192 }
193
194 1;