Consume libakgl 0.3.0: every workaround deleted, two capabilities gained
0.3.0 closed all ten API gaps this port had filed. The four workarounds go with them: the CMake block that declared libakgl's vendored dependencies by hand, the akgl/actor.h include in three files, and the six vtable pointers assigned by hand in two more, now akgl_render_bind2d(). Two gaps were capabilities rather than inconveniences, and both are now real: The line editor takes the composed UTF-8 text the ring carries in preference to the keycode, so shifted characters, keyboard layouts, compose keys and dead keys all work. A double quote can be typed, which means a BASIC string literal can be typed -- the sharp end of the old limitation. Letters are no longer folded to upper case. SOUND's dir/min/step reach akgl_audio_sweep instead of being refused. dir 3 sweeps once rather than oscillating and TODO.md section 5 says so. A backend with no sweep still refuses the swept note and plays the held one. The adaptors now carry an AKGL_VERSION_AT_LEAST(0, 3, 0) floor, verified by temporarily demanding 0.4.0 and watching it fire. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,7 +22,6 @@
|
||||
|
||||
#include <akerror.h>
|
||||
|
||||
#include <akgl/actor.h>
|
||||
#include <akgl/controller.h>
|
||||
#include <akgl/error.h>
|
||||
/*
|
||||
@@ -358,26 +357,14 @@ int main(void)
|
||||
&window, &renderer->sdl_renderer),
|
||||
AKGL_ERR_SDL, "Couldn't create window/renderer: %s", SDL_GetError());
|
||||
/*
|
||||
* Populate the backend's vtable by hand, which is not where anybody would
|
||||
* expect to have to do it.
|
||||
*
|
||||
* akgl_text_rendertextat() reaches through renderer->draw_texture, and an
|
||||
* SDL_Renderer alone does not fill that in --
|
||||
* Bind the 2D methods. akgl_text_rendertextat() reaches through
|
||||
* renderer->draw_texture and an SDL_Renderer alone does not fill that in;
|
||||
* deps/libakgl/tests/draw.c gets away without it because the draw
|
||||
* primitives take the SDL_Renderer directly. The obvious call,
|
||||
* akgl_render_init2d(), does install these six pointers, but it also
|
||||
* creates its own window from the game properties and writes to the
|
||||
* `camera` global, so it is part of the akgl_game_init() path rather than
|
||||
* something a caller who already has a renderer can use. A host embedding
|
||||
* this interpreter is in exactly that position. Filed upstream: what is
|
||||
* wanted is the vtable half of init2d on its own.
|
||||
* primitives take the SDL_Renderer directly. These six pointers were
|
||||
* assigned by hand here until libakgl 0.3.0 split akgl_render_bind2d out
|
||||
* of akgl_render_init2d -- API-gap item 7, filed from this file.
|
||||
*/
|
||||
renderer->shutdown = &akgl_render_2d_shutdown;
|
||||
renderer->frame_start = &akgl_render_2d_frame_start;
|
||||
renderer->frame_end = &akgl_render_2d_frame_end;
|
||||
renderer->draw_texture = &akgl_render_2d_draw_texture;
|
||||
renderer->draw_mesh = &akgl_render_2d_draw_mesh;
|
||||
renderer->draw_world = &akgl_render_2d_draw_world;
|
||||
CATCH(errctx, akgl_render_bind2d(renderer));
|
||||
|
||||
/*
|
||||
* libakgl's own monospaced fixture, borrowed rather than copied. Being
|
||||
|
||||
Reference in New Issue
Block a user