Class: SDL2::Event
- Defined in:
- lib/sdl2/event.rb,
lib/sdl2/event.rb,
lib/sdl2/event.rb,
lib/sdl2/event.rb,
lib/sdl2/event/os.rb,
lib/sdl2/event/drop.rb,
lib/sdl2/event/quit.rb,
lib/sdl2/event/type.rb,
lib/sdl2/event/user.rb,
lib/sdl2/event/state.rb,
lib/sdl2/event/action.rb,
lib/sdl2/event/common.rb,
lib/sdl2/event/sys_wm.rb,
lib/sdl2/event/window.rb,
lib/sdl2/event/joy_hat.rb,
lib/sdl2/event/abstract.rb,
lib/sdl2/event/joy_axis.rb,
lib/sdl2/event/joy_ball.rb,
lib/sdl2/event/keyboard.rb,
lib/sdl2/event/joy_button.rb,
lib/sdl2/event/joy_device.rb,
lib/sdl2/event/text_input.rb,
lib/sdl2/event/mouse_wheel.rb,
lib/sdl2/event/mouse_button.rb,
lib/sdl2/event/mouse_motion.rb,
lib/sdl2/event/text_editing.rb,
lib/sdl2/event/touch_finger.rb,
lib/sdl2/event/multi_gesture.rb,
lib/sdl2/event/dollar_gesture.rb,
lib/sdl2/event/controller_axis.rb,
lib/sdl2/event/controller_button.rb,
lib/sdl2/event/controller_device.rb
Overview
Union Layout
Defined Under Namespace
Modules: ACTION, STATE, TYPE Classes: Abstract, Common, ControllerAxis, ControllerButton, ControllerDevice, DollarGesture, Drop, JoyAxis, JoyBall, JoyButton, JoyDevice, JoyHat, Keyboard, MouseButton, MouseMotion, MouseWheel, MultiGesture, OS, Quit, SysWM, TextEditing, TextInput, TouchFinger, User, Window
Class Method Summary collapse
-
.add(*events) ⇒ Object
Add a bunch of events, expects them as arguments so make sure you add that astrik/star: ‘SDL2::Event.add(*array)`.
-
.cast(something) ⇒ Object
Coerce some value into an Event.
-
.filter(user_data = nil, &event_filter) ⇒ Object
Use this function to filter events on current event Que removing any events for which this filter returns 0 (Zero) If called without arguments, it will check and return any currently defined global filters and associated user data as: [filter, data].
-
.filter=(filter_lambda, user_data_pointer = nil) ⇒ Object
This routine sets the global event filter, it expects either a single lambda parameter or an array with or paired with a user_data_pointer.
-
.flush(type, type_end = nil) ⇒ Object
Flush this kind of event (or this range of event types) from the que.
-
.get(count = 10, f = :FIRSTEVENT, l = :LASTEVENT) ⇒ Object
Get a bunch of events, defaults to 10 at once.
-
.has?(type, type_end = nil) ⇒ Boolean
Check if this event type, or a range of event types exist.
-
.peek(count = 10, f = :FIRSTEVENT, l = :LASTEVENT) ⇒ Object
Peek at events, default maximum to return at once is 10.
-
.peep(events = nil, num_events = nil, action = :PEEK, first_event = :FIRSTEVENT, last_event = :LASTEVENT) ⇒ Object
General Utility for Peek/Get/Del/Add many events.
-
.poll ⇒ Object
Polls for currently pending events.
-
.pump ⇒ Object
Pump the events.
-
.push(event) ⇒ Object
Add an event to the que.
-
.quit_requested? ⇒ Boolean
Indicates if a Quit event is waiting in the que.
-
.state(type, state = :QUERY) ⇒ Object
Set the state of processing event types:.
Instance Method Summary collapse
Methods included from StructHelper
#member_readers, #member_writers
Class Method Details
.add(*events) ⇒ Object
Add a bunch of events, expects them as arguments so make sure you add that astrik/star: ‘SDL2::Event.add(*array)`
164 165 166 |
# File 'lib/sdl2/event.rb', line 164 def self.add(*events) self.peep(events, nil, :ADD, f, l) end |
.cast(something) ⇒ Object
Coerce some value into an Event
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/sdl2/event.rb', line 187 def self.cast(something) SDL2::Debug.log(self){"Casting Something: #{something.inspect}"} if something.kind_of? Abstract return something.to_event elsif something.kind_of? Hash raise "Must have type : #{something.inspect}" unless something.has_key? :type tmp = self.new fields = members & something.keys SDL2::Debug.log(self){"Using fields: #{fields.inspect}"} fields.each do |field| if tmp[field].kind_of? Struct and something[field].kind_of? Hash tmp[field].update_members(something[field]) else tmp[field] = something[field] end end return tmp else raise "Is not an Abstract!: #{something.inspect}" end end |
.filter(user_data = nil, &event_filter) ⇒ Object
Use this function to filter events on current event Que removing any events for which this filter returns 0 (Zero) If called without arguments, it will check and return any currently defined global filters and associated user data as: [filter, data]
100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/sdl2/event.rb', line 100 def self.filter(user_data = nil, &event_filter) if event_filter SDL2.filter_events(event_filter, user_data) else event_filter = SDL2::TypedPointer::EventFilter.new user_data = SDL2::TypedPointer::Pointer.new if SDL2.get_event_filter?(event_filter, user_data) [event_filter.value, user_data.value] else false end end end |
.filter=(filter_lambda, user_data_pointer = nil) ⇒ Object
This routine sets the global event filter, it expects either a single lambda parameter or an array with or paired with a user_data_pointer
117 118 119 |
# File 'lib/sdl2/event.rb', line 117 def self.filter=(filter_lambda, user_data_pointer = nil) SDL2.set_event_filter(filter_lambda, user_data_pointer) end |
.flush(type, type_end = nil) ⇒ Object
Flush this kind of event (or this range of event types) from the que
131 132 133 134 135 136 137 |
# File 'lib/sdl2/event.rb', line 131 def self.flush(type, type_end = nil) unless type_end SDL2.flush_event(type) else SDL2.flush_events(type, type_end) end end |
.get(count = 10, f = :FIRSTEVENT, l = :LASTEVENT) ⇒ Object
Get a bunch of events, defaults to 10 at once
169 170 171 |
# File 'lib/sdl2/event.rb', line 169 def self.get(count = 10, f = :FIRSTEVENT, l = :LASTEVENT) self.peep(nil, count, :GET, f, l) end |
.has?(type, type_end = nil) ⇒ Boolean
Check if this event type, or a range of event types exist
122 123 124 125 126 127 128 |
# File 'lib/sdl2/event.rb', line 122 def self.has?(type, type_end = nil) unless type_end SDL2.has_event?(type) else SDL2.has_events?(type, type_end) end end |
.peek(count = 10, f = :FIRSTEVENT, l = :LASTEVENT) ⇒ Object
Peek at events, default maximum to return at once is 10
158 159 160 |
# File 'lib/sdl2/event.rb', line 158 def self.peek(count = 10, f = :FIRSTEVENT, l = :LASTEVENT) self.peep(nil, count, :PEEK, f, l) end |
.peep(events = nil, num_events = nil, action = :PEEK, first_event = :FIRSTEVENT, last_event = :LASTEVENT) ⇒ Object
General Utility for Peek/Get/Del/Add many events
146 147 148 149 150 151 152 153 154 155 |
# File 'lib/sdl2/event.rb', line 146 def self.peep(events = nil, num_events = nil, action = :PEEK, first_event = :FIRSTEVENT, last_event = :LASTEVENT) if events.is_a?(Array) events = SDL2::StructArray.clone_from(events, SDL2::Event) end num_events ||= events.try(:count) raise 'num_events must be specified unless events responds to count' if num_events.nil? events ||= SDL2::StructArray.new(SDL2::Event, num_events) unless num_events == 0 returned = SDL2.peep_events!(events.nil? ? nil : events.first, num_events, action, first_event, last_event) events.nil? ? Array.new(returned, nil) : events.first(returned) end |
.poll ⇒ Object
Polls for currently pending events.
86 87 88 89 90 91 92 93 |
# File 'lib/sdl2/event.rb', line 86 def self.poll() tmp_event = SDL2::Event.new unless SDL2.poll_event?(tmp_event) tmp_event.pointer.free tmp_event = nil end return tmp_event # May be nil if SDL2.poll_event fails. end |
.pump ⇒ Object
Pump the events.
174 175 176 |
# File 'lib/sdl2/event.rb', line 174 def self.pump SDL2.pump_events() end |
.push(event) ⇒ Object
Add an event to the que
140 141 142 143 |
# File 'lib/sdl2/event.rb', line 140 def self.push(event) event = Event.cast(event) unless event.kind_of? Event SDL2.push_event!(event) end |
.quit_requested? ⇒ Boolean
Indicates if a Quit event is waiting in the que.
179 180 181 182 183 184 |
# File 'lib/sdl2/event.rb', line 179 def self.quit_requested? self.pump() # Peek into the event que and return the count of quit events. # Return true if that is greater than zero. self.peep(nil,0,:PEEK,:QUIT,:QUIT).count > 0 end |
.state(type, state = :QUERY) ⇒ Object
Set the state of processing event types:
80 81 82 |
# File 'lib/sdl2/event.rb', line 80 def self.state(type,state=:QUERY) SDL2.event_state(type,state) end |
Instance Method Details
#==(other) ⇒ Object
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/sdl2/event.rb', line 209 def ==(other) if other.kind_of?(Hash) # False if there are fields that do not exist return false unless (other.keys - members).empty? (other.keys & members).each do |field| return false unless self[field] == other[field] end return true #if we get this far else return super(other) end end |