Files
akbasic/docs/images/sprite-collision.png

4 lines
735 B
Plaintext
Raw Normal View History

Generate the documentation's figures from the listings they illustrate Chapters 6 and 8 described what a verb draws in prose. Eight figures now show it, and each one is produced by running the BASIC listing printed immediately above it -- so a picture cannot drift away from the code beside it, which is the way a screenshot goes wrong and the way nothing notices. tools/screenshot.c is a second SDL host, much smaller than the frontend: dummy video driver, software renderer, run to completion, read the target back, write a PNG. It draws no text layer on purpose, so a READY in the corner is not noise in a figure about BOX and no font has to be resolved. tools/docs_screenshots.sh reads the new screenshot=NAME fence tag straight out of the markdown. size=WxH is the second tag, and SCALE's figure uses it: the point being made is a 320x200 listing filling a larger window, which cannot be made on a 320x200 surface. Two gates, answering different questions. docs_examples fails a tagged block with no image, in both configurations, so a figure cannot be added and forgotten. docs_screenshots -- a CTest, AKGL build only -- re-renders every figure and compares byte for byte, so a listing edited without regenerating fails. Only the second catches a stale picture. The PNGs are checked in because a reader on the forge has no build tree, and docs/images/README.md says loudly that they are generated. Regenerating is never part of a build: the target is run deliberately, so a make cannot put eight binary diffs in front of whoever ran it. Drawing the BOX figure caught a defect in TODO.md itself. Deviation 16 claimed in bold that BOX fills on a negative angle while its own paragraph said the fill was filed rather than implemented. BOX cannot fill, and filled_rect is reached by no verb as a result. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-Authored-By: Andrew Kesterson <andrew@aklabs.net>
2026-08-01 07:37:04 -04:00
<EFBFBD>PNG

IHDR@<00>f<><66><02>IDATx<54><78><EFBFBD><EFBFBD>M<EFBFBD>@<14>Q@<40>"v<><76><02><> J<>v<>S%<25><><0F>x $<14>`%<25>x<EFBFBD><78><EFBFBD><EFBFBD>u${<7B><><EFBFBD>L<EFBFBD><4C><EFBFBD><00><><EFBFBD><EFBFBD>7P<37><50><EFBFBD>r<><72>Ƿ!ׅR<D785><<3C>[<5B><><EFBFBD>}<03>|<02>`<02>`<02>`<60>F<EFBFBD><46>5}<7D><>`<60> <09><><4B>?<3F>d<EFBFBD>YB<59><42>?<3F><><EFBFBD><EFBFBD>ǯDLp'<27>S<EFBFBD>0<04><><EFBFBD>5<>o<04><>&<26>i<EFBFBD><69> <0C><04><><EFBFBD><EFBFBD><EFBFBD>攀!<21><>W<EFBFBD>|f<1A><> `&`&`&`&<26>0α8&<26>0<EFBFBD>O☀!<21><>!<21><>!<21><>W<EFBFBD>|<7C>j<03><02>`<02>`^W<>E<EFBFBD><45>3<EFBFBD><04><>&ᩗ<><04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<04><><EFBFBD><08><><01><><EFBFBD><EFBFBD>vm<76><6D>e<EFBFBD>73<37><33>դW<D5A4><57><EFBFBD>,yN<79>߾3<DFBE><33><EFBFBD><1B>c<63><7F><EFBFBD><EFBFBD><EFBFBD><0F><1D>r<EFBFBD><72><EFBFBD>c<EFBFBD>u<EFBFBD><75>n<EFBFBD><6E>8<EFBFBD>!e;bA0C0<43><30>-uZо|:<3A><>TC<54><43><EFBFBD><EFBFBD><EFBFBD>d7<1D><><EFBFBD>t.뒙<><EB9299>%<25>r<EFBFBD>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>+^+<2B>P<02>fv<66>N$<24>RF<><46>8<02><>I~<1A>"`&<26>"NNC8<43><38>!<21><>+h>3 <0A><02>`<02>`<02>`<02>`<02><<3C>X<04>y<EFBFBD>O<EFBFBD> `&`&`&<26>
<EFBFBD><EFBFBD>Wm<EFBFBD>S<18> <18> <09><><EFBFBD><EFBFBD>^<5E><> <02><>Ix<49><78>"<22>R<16><><EFBFBD>8<02>fv<66><76>M$<24><><EFBFBD><EFBFBD>?<3F><>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&<26>Z<05>e<EFBFBD>sB<73><42><EFBFBD>K<><4B><EFBFBD><EFBFBD>-F<>L<>L<><10>)t$GJT<><1E><><EFBFBD>B<14><>IEND<4E>B`<60>