NB. SDL utilities for OpenGL require 'dll' void=: 0$'' null=: <0
SDLDLL =: '/usr/local/lib/libSDL2.dylib' NB. SDL Constants SDL_INIT_TIMER=: 16b00000001 SDL_INIT_AUDIO=: 16b00000010 SDL_INIT_VIDEO=: 16b00000020 NB. SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ SDL_INIT_JOYSTICK=: 16b00000200 NB. SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ SDL_INIT_HAPTIC=: 16b00001000 SDL_INIT_GAMECONTROLLER=: 16b00002000 NB. SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ SDL_INIT_EVENTS=: 16b00004000 SDL_INIT_SENSOR=: 16b00008000 SDL_INIT_NOPARACHUTE=: 16b00100000 NB. compatibility; this flag is ignored. */ SDL_INIT_EVERYTHING=: SDL_INIT_TIMER +. SDL_INIT_AUDIO +. SDL_INIT_VIDEO | SDL_INIT_EVENTS +. SDL_INIT_JOYSTICK +. SDL_INIT_HAPTIC +. SDL_INIT_GAMECONTROLLER +. SDL_INIT_SENSOR SDL_WINDOW_OPENGL =: 16b00000002 SDL_WINDOW_RESIZABLE =: 0x00000020 SDL_FIRSTEVENT =: 0 SDL_QUIT =: 16b100 SDL_APP_TERMINATING =: 16b101 SDL_APP_LOWMEMORY =: 16b102 SDL_APP_WILLENTERBACKGROUND =: 16b103 SDL_APP_DIDENTERBACKGROUND =: 16b104 SDL_APP_WILLENTERFOREGROUND =: 16b105 SDL_APP_DIDENTERFOREGROUND =: 16b106 NB. Display events SDL_DISPLAYEVENT=: 16b150 NB. Window events SDL_WINDOWEVENT =: 16b200 SDL_SYSWMEVENT =: 16b201 NB. Keyboard events SDL_KEYDOWN =: 16b300 SDL_KEYUP =: 16b301 SDL_TEXTEDITING =: 16b302 SDL_TEXTINPUT =: 16b303 SDL_KEYMAPCHANGED =: 16b304 NB. Mouse events SDL_MOUSEMOTION =: 16b400 SDL_MOUSEBUTTONDOWN =: 16b401 SDL_MOUSEBUTTONUP =: 16b402 SDL_MOUSEWHEEL =: 16b403 NB. Joystick events SDL_JOYAXISMOTION =: 16b600 SDL_JOYBALLMOTION =: 16b601 SDL_JOYHATMOTION =: 16b602 SDL_JOYBUTTONDOWN =: 16b603 SDL_JOYBUTTONUP =: 16b604 SDL_JOYDEVICEADDED =: 16b605 SDL_JOYDEVICEREMOVED =: 16b606 NB. Controller events SDL_CONTROLLERAXISMOTION =: 16b650 SDL_CONTROLLERBUTTONDOWN =: 16b651 SDL_CONTROLLERBUTTONUP =: 16b652 SDL_CONTROLLERDEVICEADDED =: 16b653 SDL_CONTROLLERDEVICEREMOVED =: 16b654 SDL_CONTROLLERDEVICEREMAPPED =: 16b655 NB. Touch events SDL_FINGERDOWN =: 16b700 SDL_FINGERUP =: 16b701 SDL_FINGERMOTION =: 16b702 NB. Gesture events SDL_DOLLARGESTURE =: 16b800 SDL_DOLLARRECORD =: 16b801 SDL_MULTIGESTURE =: 16b802 NB. Clipboard events SDL_CLIPBOARDUPDATE =: 16b900 NB. Drag and drop events SDL_DROPFILE =: 16b1000 SDL_DROPTEXT =: 16b1001 SDL_DROPBEGIN =: 16b1002 SDL_DROPCOMPLETE =: 16b1003 NB. Audio hotplug events SDL_AUDIODEVICEADDED =: 16b1100 SDL_AUDIODEVICEREMOVED =: 16b1101 NB. Sensor events SDL_SENSORUPDATE =: 16b1200 NB. Render events SDL_RENDER_TARGETS_RESET =: 16b2000 SDL_RENDER_DEVICE_RESET =: 16b2001 NB. These are for your use, and should be allocated with SDL_RegisterEvents() SDL_USEREVENT =: 16b8000 SDL_LASTEVENT =: 16bffff NB. extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); SDL_Init =: (SDLDLL, ' SDL_Init > i i')&cd NB. extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); SDL_InitSubSystem =: (SDLDLL, ' SDL_InitSubSystem i i')&cd NB. extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); SDL_QuitSubSystem =: (SDLDLL, ' SDL_QuitSubSystem n i')&cd NB. extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); SDL_WasInit =: (SDLDLL, ' SDL_WasInit i i')&cd NB. extern DECLSPEC void SDLCALL SDL_Quit(void); SDL_Quit =: (SDLDLL, ' SDL_Quit n')&cd SDL_Delay =: (SDLDLL, ' SDL_Delay n i')&cd SDL_WINDOWPOS_UNDEFINED_MASK =: 16b1fff0000 SDL_WINDOWPOS_UNDEFINED =: SDL_WINDOWPOS_UNDEFINED_MASK +. 0 NB. extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, NB. int x, int y, int w, NB. int h, Uint32 flags); SDL_CreateWindow =: (SDLDLL, ' SDL_CreateWindow * &c i i i i i')&cd NB. extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags); SDL_CreateRenderer =: (SDLDLL, ' SDL_CreateRenderer * * i i')&cd SDL_SetRenderDrawColor =: (SDLDLL, ' SDL_SetRenderDrawColor n * i i i i')&cd SDL_RenderCopy =: (SDLDLL, ' SDL_RenderCopy n * * * *')&cd SDL_RenderClear =: (SDLDLL, ' SDL_RenderClear n *')&cd SDL_RenderPresent =: (SDLDLL, ' SDL_RenderPresent n *')&cd SDL_RenderDrawLine =: (SDLDLL, ' SDL_RenderDrawLine n * i i i i')&cd SDL_DestroyRenderer =: (SDLDLL, ' SDL_DestroyRenderer n *')&cd SDL_DestroyWindow =: (SDLDLL, ' SDL_DestroyWindow n *')&cd SDL_DestroyTexture =: (SDLDLL, ' SDL_DestroyTexture n *')&cd SDL_FreeSurface =: (SDLDLL, ' SDL_FreeSurface n *')&cd SDL_CreateTextureFromSurface =: (SDLDLL, ' SDL_CreateTextureFromSurface * * *')&cd SDL_GL_CreateContext =: (SDLDLL, ' SDL_GL_CreateContext * *')&cd SDL_GetWindowSurface =: (SDLDLL, ' SDL_GetWindowSurface * *')&cd SDL_RWFromFile =: (SDLDLL, ' SDL_RWFromFile * *c *c')&cd SDL_LoadBMP_RW =: (SDLDLL, ' SDL_LoadBMP_RW * * i')&cd SDL_BlitSurface =: (SDLDLL, ' SDL_UpperBlit > i * * * *')&cd SDL_GL_SwapWindow =: (SDLDLL, ' SDL_GL_SwapWindow n *')&cd SDL_GL_DeleteContext =: (SDLDLL, ' SDL_GL_DeleteContext n *')&cd SDL_GL_SwapInterval =: (SDLDLL, ' SDL_GL_SwapInterval n i')&cd SDL_UpdateWindowSurface =: (SDLDLL, ' SDL_UpdateWindowSurface * *')&cd SDL_PollEvent =: (SDLDLL, ' SDL_PollEvent > i *')&cd NB. SDL_LoadBMP is a macro to call 2 lower level routines NB. The following will not work: NB. SDL_LoadBMP =: (SDLDLL, ' SDL_LoadBMP * &c')&cd NB. instead, it is recreated in J as a function call: NB. it expects a boxed string fully qualified path and filename NB. this keeps the calling convention of the dll consistent SDL_LoadBMP =: 3 : 0 Rwops =. {. SDL_RWFromFile y,<'rb' SDL_LoadBMP_RW Rwops;1 ) ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm