Brilliant, thanks Eric. I've done a few of the Labs but the sheer number of them is overwhelming to th point of not seeing them, obviously! I am making good progress with my SDL2 and SDL2_gfx wrappers, thanks to all the help from here and irc. Should I find an answer to how to define a variadic function too it will be time well spent indeed.
Thanks again Sean On Sun, 29 Nov 2020 at 14:52, Eric Iverson <eric.b.iver...@gmail.com> wrote: > There is a lab on cdcb (shared library callback) that might answer your > questions. > > In JHS: labrun_jijx_ 'Shared Library (b) (dll/so/dylib) - callback' > > In Jqt: Help>Studio>Lab Category:System > > You could run the lab in jconsole, but probably more convenient in JHS or > Jqt. > > On Sun, Nov 29, 2020 at 3:46 AM emacstheviking <obji...@gmail.com> wrote: > > > My application does not want Qt or wd in the mix at all. I want a pure J > > atop SDL2 implementation. I am striving for a pure J application that > > starts from J. I know I could write a C start and then use JDo from the > > library etc but this feels like defeat on some level as I am still > learning > > J and want to see where it can go in the nooks and crannies. > > > > I have already experimented with initialise wd and then setting 'wd timer > > 10` and a callback. This works but. Not what I want. I don't want all > that > > baggage at runtime. > > > > SDL has a thread creation routine but I have failed to find any > > documentation on 'cdcb'; the callback. I am not sure how to that but this > > morning I plan to try! The callback for SDL_Thread is int(void*) so, > > assuming the calling convention setup is accurate, if I... > > > > testcallback =: monad define > > NB. do something thread safe! > > 0 > > ) > > > > then > > > > sdl_createthread cdcb testcallback > > > > It can either do what I expect or go bang. > > > > > > the worst that can happen is a reboot, giving me a coffee making > > opportunity. > > :) > > > > > > > > On Sun, 29 Nov 2020 at 01:52, Thomas McGuire <tmcguir...@gmail.com> > wrote: > > > > > Have you come up with a way to handle SDL events? > > > > > > I was able to read events but if I set up a polling loop I ran into > > > problems with J not getting time for handling > > > Its own user events. I made some attempts to use wd ‘msgs’ from the > > window > > > driver but was unsuccessful. > > > > > > Tom McGuire > > > > > > > On Nov 27, 2020, at 1:36 PM, emacstheviking <obji...@gmail.com> > wrote: > > > > > > > > that took a few seconds to sink in but..yes, I see now. > > > > > > > > On Fri, 27 Nov 2020 at 16:46, bill lam <bbill....@gmail.com> wrote: > > > > > > > >> Well done! > > > >> > > > >> Sometimes I found it easier to read if negative index are used, > > > >> > > > >> 'rw rh' =. _2 _1 dmva sdl_getrenderoutputsize appr;(_1);(_1) > > > >> > > > >> On Sat, Nov 28, 2020, 12:19 AM emacstheviking <obji...@gmail.com> > > > wrote: > > > >> > > > >>> Final more J-like solution to my problem, thanks bill Iam for the > > > >> nudge... > > > >>> > > > >>> dmva =: 4 : '''''&$ each (x{y)' > > > >>> > > > >>> This allows me to specify the actual array positions I want > > de-arrayed > > > / > > > >>> scalerised and feels much more natural in use as I can now specify > > any > > > >>> number of positions and of course re-order things too. Probably the > > > only > > > >>> improvement now is the name! > > > >>> > > > >>> 'rw rh' =. 2 3 dmva sdl_getrenderoutputsize appr;(_1);(_1) > > > >>> > > > >>> I appreciate that ''$ is only producing scales because the first > atom > > > of > > > >> my > > > >>> array contains a scalar. I think. ! > > > >>> Thanks all once again, > > > >>> Sean. > > > >>> > > > >>> > > > >>> On Fri, 27 Nov 2020 at 13:05, bill lam <bbill....@gmail.com> > wrote: > > > >>> > > > >>>> probably your width and height are not scalar but singleton array. > > you > > > >>> can > > > >>>> check them with monad $ . > > > >>>> > > > >>>> On Fri, Nov 27, 2020, 8:00 PM emacstheviking <obji...@gmail.com> > > > >> wrote: > > > >>>> > > > >>>>> Given these working external function declarations: > > > >>>>> > > > >>>>> SDL_GetWindowSize n x *i *i > > > >>>>> SDL_GetRendererOutputSize n x *i *i > > > >>>>> SDL_CreateRGBSurface > x i i i i i i i i > > > >>>>> > > > >>>>> then these two calls: > > > >>>>> > > > >>>>> 'ww wh'=:2}.sdl_getwindowsize appw;(,_1);(,_1) > > > >>>>> 'rw rh'=:2}.sdl_getrendereroutputsize appr;(,_1);(,_1) > > > >>>>> > > > >>>>> work and produce values of 1024 for ww and rw, and 768 for wh and > > rh > > > >>>>> respectively, as expected. > > > >>>>> However, when creating the rgb surface it raises a domain error > > and I > > > >>>> have > > > >>>>> been tearing my hair out to understand why. > > > >>>>> I have posted the full code at the end of this plea for help and > > > >>>>> enlightenment. > > > >>>>> > > > >>>>> args=.0;width;height;32;16bff0000;16bff00;16bff;16bff000000 > > > >>>>> smoutput args > > > >>>>> sfc=: sdl_creatergbsurface args > > > >>>>> > > > >>>>> cder'' > > > >>>>> 6 1 > > > >>>>> > > > >>>>> yet calling it with literals or even the extracted 'y' value (a > > boxed > > > >>>>> dimension): > > > >>>>> args=.0;1024;768;32;16bff0000;16bff00;16bff;16bff000000. NB. > works > > > >>>>> args=.0;width;height;32;16bff0000;16bff00;16bff;16bff000000. NB. > > > >> works > > > >>>>> > > > >>>>> I have used 3!:0 to examine the type, it is 4 (integer) in all > > cases > > > >>>>> (ww,wh,rw,rh,width,height), ruling out those errors. > > > >>>>> Thanks, > > > >>>>> Sean. :| > > > >>>>> > > > >>>>> -- full code --- > > > >>>>> > > > >>>>> ugo =: 3 : 0 > > > >>>>> NB. testing out domain errors around sdl_creatergbsurface... > > > >>>>> args =. SCREEN_X_MAX;SCREEN_Y_MAX > > > >>>>> scrw =. SCREEN_X_MAX > > > >>>>> scrh =. SCREEN_Y_MAX > > > >>>>> sdlprep scrw;scrh > > > >>>>> cairoprep'' > > > >>>>> urun'' > > > >>>>> uend^:y '' > > > >>>>> ) > > > >>>>> > > > >>>>> sdlprep =: 3 : 0 > > > >>>>> 'width height'=. y > > > >>>>> sdl_init SDL_INIT_EVERYTHING > > > >>>>> appw=:sdl_createwindow 'test window';0;0 > > > >>>>> ;width;height;SDL_WINDOW_SHOWN+SDL_WINDOW_ALLOW_HIGHDPI > > > >>>>> appr=:sdl_createrenderer appw;_1 > > > >>>>> ;SDL_RENDERER_ACCELERATED+SDL_RENDERER_PRESENTVSYNC > > > >>>>> 'ww wh'=:2}.sdl_getwindowsize appw;(,_1);(,_1) > > > >>>>> 'rw rh'=:2}.sdl_getrendereroutputsize appr;(,_1);(,_1) > > > >>>>> cxm=: rw % ww > > > >>>>> cym=: rh % wh > > > >>>>> smoutput 'window: ', (":appw), 'renderer:', (":appr) > > > >>>>> smoutput 'requested width:',(":width),' height:',(":height) > > > >>>>> smoutput 'render width: ',(":rw),' height:',(":rh) > > > >>>>> smoutput 'window width: ',(":ww),' height:',(":wh) > > > >>>>> smoutput 'x/y multipliers:',(":cxm),'/',(":cym) > > > >>>>> NB. This needs to be endian-aware at some point > > > >>>>> smoutput (": (width = rw)) > > > >>>>> args=.0;width;height;32;16bff0000;16bff00;16bff;16bff000000 > > > >>>>> smoutput args > > > >>>>> sfc=: sdl_creatergbsurface args > > > >>>>> NB. Practice structures. PACKING!!! Show printable format name > > > >>>>> pFormat=._3 ic memr (sfc+8),0,8 NB. sdl_surface->format > > > >>>>> format=._2 ic memr pFormat,0,4 NB. sdl_surface->format->format > > > >>>>> smoutput 'pixel format:',(psz sdl_getpixelformatname format) > > > >>>>> EMPTY > > > >>>>> ) > > > >>>>> > > > >> > ---------------------------------------------------------------------- > > > >>>>> For information about J forums see > > > >> http://www.jsoftware.com/forums.htm > > > >>>>> > > > >>>> > > ---------------------------------------------------------------------- > > > >>>> For information about J forums see > > > http://www.jsoftware.com/forums.htm > > > >>>> > > > >>> > > ---------------------------------------------------------------------- > > > >>> For information about J forums see > > http://www.jsoftware.com/forums.htm > > > >>> > > > >> > ---------------------------------------------------------------------- > > > >> For information about J forums see > > http://www.jsoftware.com/forums.htm > > > >> > > > > > ---------------------------------------------------------------------- > > > > For information about J forums see > http://www.jsoftware.com/forums.htm > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm