examples: simple game of life impl using SDL2 thru ffi & native java collections

This commit is contained in:
2023-09-17 20:53:08 +10:00
committed by Alex Zenla
parent a08526c92c
commit 5610326eda
2 changed files with 260 additions and 0 deletions

View File

@ -0,0 +1,89 @@
/* Just enough SDL2 to run game of life */
// SDL.h
export let SDL_INIT_VIDEO = 32
export func SDL_Init(flags)
native ffi "SDL2:SDL_Init:int:unsigned int"
export func SDL_Quit()
native ffi "SDL2:SDL_Quit:void"
// SDL_video.h
export let SDL_WINDOW_ALLOW_HIGHDPI = 8192
export let SDL_WINDOWPOS_UNDEFINED_MASK = 536805376
export func SDL_WINDOWPOS_UNDEFINED_DISPLAY(x) { SDL_WINDOWPOS_UNDEFINED_MASK | x }
export let SDL_WINDOWPOS_UNDEFINED = SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
export let SDL_WINDOWPOS_CENTERED_MASK = 805240832
export func SDL_WINDOWPOS_CENTERED_DISPLAY(x) { SDL_WINDOWPOS_CENTERED_MASK | x }
export let SDL_WINDOWPOS_CENTERED = SDL_WINDOWPOS_CENTERED_DISPLAY(0)
export func SDL_CreateWindow(title, x, y, w, h, flags)
native ffi "SDL2:SDL_CreateWindow:void*:char*,int,int,int,int,unsigned int"
export func SDL_DestroyWindow(window)
native ffi "SDL2:SDL_DestroyWindow:void:void*"
// SDL_event.h
export func SDL_PumpEvents()
native ffi "SDL2:SDL_PumpEvents:void"
export func SDL_WaitEvent(event)
native ffi "SDL2:SDL_WaitEvent:int:void*"
// SDL_keyboard.h
export let KMOD_NONE = 0
export let KMOD_LSHIFT = 1
export let KMOD_RSHIFT = 2
export let KMOD_LCTRL = 64
export let KMOD_RCTRL = 128
export let KMOD_LALT = 256
export let KMOD_RALT = 512
export let KMOD_LGUI = 1024
export let KMOD_RGUI = 2048
export let KMOD_NUM = 4096
export let KMOD_MODE = 16384
export let KMOD_CAPS = 8192
export let KMOD_SCROLL = 32768
export func SDL_GetModState()
native ffi "SDL2:SDL_GetModState:int"
// SDL_renderer.h
export let SDL_RENDERER_PRESENTVSYNC = 4
export func SDL_CreateRenderer(window, index, flags)
native ffi "SDL2:SDL_CreateRenderer:void*:void*,int,unsigned int"
export func SDL_DestroyRenderer(renderer)
native ffi "SDL2:SDL_DestroyRenderer:void:void*"
export func SDL_RenderSetLogicalSize(renderer, w, h)
native ffi "SDL2:SDL_RenderSetLogicalSize:int:void*,int,int"
export func SDL_RenderPresent(renderer)
native ffi "SDL2:SDL_RenderPresent:void:void*"
export func SDL_SetRenderDrawColor(renderer, r, g, b, a)
native ffi "SDL2:SDL_SetRenderDrawColor:int:void*,unsigned int,unsigned int,unsigned int,unsigned int"
export func SDL_RenderClear(renderer)
native ffi "SDL2:SDL_RenderClear:int:void*"
export func SDL_RenderDrawLine(renderer, x1, y1, x2, y2)
native ffi "SDL2:SDL_RenderDrawLine:int:void*,int,int,int,int"
// SDL_hints.h
export let SDL_HINT_RENDER_LOGICAL_SIZE_MODE = "SDL_RENDER_LOGICAL_SIZE_MODE"
export func SDL_SetHint(name, value)
native ffi "SDL2:SDL_SetHint:int:char*,char*"