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;
`}
# Save the image into the specified file
- fun save_to_file(path: String) import String::to_cstring `{ `}
+ fun save_to_file(path: String) import String.to_cstring `{ `}
# Destroy the image and free the memory
redef fun destroy `{ SDL_FreeSurface(recv); `}
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)
`}
# Return the family name of the font
- fun family_name: nullable String import String.to_cstring, String as nullable `{
+ fun family_name: nullable String import String.to_cstring, String.as nullable `{
char *fn = TTF_FontFaceFamilyName(recv);
if (fn == NULL)
`}
# Return the style name of the font
- fun style_name: nullable String import String.to_cstring, String as nullable `{
+ fun style_name: nullable String import String.to_cstring, String.as nullable `{
char *sn = TTF_FontFaceStyleName(recv);
if (sn == NULL)