BASIC 7.0's graphics verbs -- DRAW, BOX, CIRCLE, PAINT, SSHAPE and GSHAPE -- all plot against the current screen right now rather than adding to a scene, and draw.h had exactly one function in it. This adds akgl_draw_point, _line, _rect, _filled_rect, _circle, _flood_fill, _copy_region and _paste_region, each taking the akgl_RenderBackend the host already initialized. Color is an argument rather than a current-color global, so there is no second copy of state to disagree with the caller's own, and each call restores the renderer's draw color when it is done. SDL3 has no circle and no flood fill: the circle is a midpoint circle, and the fill reads the target back, walks the region with a fixed 4096-entry span stack, and blits back only the bounding box of what changed. Exhausting that stack reports AKERR_OUTOFBOUNDS and says in the header that the region is left partially filled. tests/draw.c draws into a 64x64 software renderer under the dummy video driver and reads the pixels back, so it needs no display and no offscreen harness. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
13 KiB
13 KiB