SDL_FillRect(recv, NULL, SDL_MapRGB(recv->format,ri,gi,bi));
`}
- fun events: Sequence[IE]
+ # SDL events since the last call to this method
+ fun events: Sequence[SDLInputEvent]
do
- var new_event: nullable Object = null
- var events = new List[IE]
+ var events = new Array[SDLInputEvent]
loop
- new_event = poll_event
- if new_event != null then # new_event isa Event then #
- events.add(new_event)
- else
- break
- end
+ var new_event = poll_event
+ if new_event == null then break
+ events.add new_event
end
return events
end
- private fun poll_event: nullable IE import SDLKeyEvent, SDLMouseButtonEvent, SDLMouseMotionEvent, SDLQuitEvent, NativeString.to_s, SDLMouseButtonEvent.as(nullable IE), SDLMouseMotionEvent.as(nullable IE), SDLKeyEvent.as(nullable IE), SDLQuitEvent.as(nullable IE) `{
+ private fun poll_event: nullable SDLInputEvent import SDLKeyEvent, SDLMouseButtonEvent, SDLMouseMotionEvent, SDLQuitEvent, NativeString.to_s, SDLMouseButtonEvent.as(nullable SDLInputEvent), SDLMouseMotionEvent.as(nullable SDLInputEvent), SDLKeyEvent.as(nullable SDLInputEvent), SDLQuitEvent.as(nullable SDLInputEvent) `{
SDL_Event event;
SDL_PumpEvents();
SDL_GetKeyName(event.key.keysym.sym));
#endif
- return SDLKeyEvent_as_nullable_IE(
+ return SDLKeyEvent_as_nullable_SDLInputEvent(
new_SDLKeyEvent(NativeString_to_s(
SDL_GetKeyName(event.key.keysym.sym)),
event.type==SDL_KEYDOWN));
event.motion.x, event.motion.y);
#endif
- return SDLMouseMotionEvent_as_nullable_IE(
+ return SDLMouseMotionEvent_as_nullable_SDLInputEvent(
new_SDLMouseMotionEvent(event.motion.x, event.motion.y,
event.motion.xrel, event.motion.yrel, SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1)));
printf("Mouse button \"%d\" pressed at (%d,%d)\n",
event.button.button, event.button.x, event.button.y);
#endif
- return SDLMouseButtonEvent_as_nullable_IE(
+ return SDLMouseButtonEvent_as_nullable_SDLInputEvent(
new_SDLMouseButtonEvent(event.button.x, event.button.y,
event.button.button, event.type == SDL_MOUSEBUTTONDOWN));
#ifdef DEBUG
printf("Quit event\n");
#endif
- return SDLQuitEvent_as_nullable_IE(new_SDLQuitEvent());
+ return SDLQuitEvent_as_nullable_SDLInputEvent(new_SDLQuitEvent());
}
}
- return null_InputEvent();
+ return null_SDLInputEvent();
`}
# Set the position of the cursor to x,y
redef type I: SDLImage
- redef fun blit(img, x, y) `{
+ redef fun blit(img, x, y) do native_blit(img, x.to_i, y.to_i)
+ private fun native_blit(img: I, x, y: Int) `{
SDL_Rect dst;
dst.x = x;
dst.y = y;
redef var pressed: Bool
redef fun depressed: Bool do return not pressed
+ # Is this event raised by the left button?
+ fun is_left_button: Bool do return button == 1
+
+ # Is this event raised by the right button?
+ fun is_right_button: Bool do return button == 2
+
+ # Is this event raised by the middle button?
+ fun is_middle_button: Bool do return button == 3
+
+ # Is this event raised by the wheel going down?
+ fun is_down_wheel: Bool do return button == 4
+
+ # Is this event raised by the wheel going up?
+ fun is_up_wheel: Bool do return button == 5
+
+ # Is this event raised by the wheel?
+ fun is_wheel: Bool do return is_down_wheel or is_up_wheel
+
init (x, y: Float, button: Int, pressed: Bool)
do
super(x, y)