Files
akbasic/docs/images/sprites.png

11 lines
904 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>
2026-08-01 07:37:04 -04:00
<EFBFBD>PNG

IHDR@<00>f<><66>OIDATx<54><78><EFBFBD><EFBFBD>Q<EFBFBD>P<14>a<EFBFBD>IE<49> K
`<60>($5<>OY<>-9 <0B>M <0C>`<60><><EFBFBD>߷<>x<EFBFBD>9<EFBFBD><39><EFBFBD>, <00>w3<77><03>_<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>o?wy<77><79><EFBFBD><EFBFBD><EFBFBD><00><>)0<><30>U<EFBFBD><55><1C><>
<0C><14> FW<46><35>C0<05>Ȭ<EFBFBD><C8AC><EFBFBD>5V`<08><> ׭<>[<5B>V`<08><> Թ<>[<5B>V`<08><> <0C><>ޭ<EFBFBD>+03`f<><10><19><>%<25>~<7E><>N<EFBFBD>
<0C><><EFBFBD><EFBFBD>˲,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1C>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E>/<2F><><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>d<EFBFBD><64>W<EFBFBD>1<EFBFBD>7m<0F>O<EFBFBD>\<5C><>/<2F><19><>~<7E>RN<52>
|<7C>t<EFBFBD><74><EFBFBD>2<EFBFBD>k<EFBFBD><6B>}<7D><>S<><53>&<26><><EFBFBD><1D>V<EFBFBD>\<5C><>o<>a<EFBFBD>x<><78>5<EFBFBD><35>a<EE93B3>Qw:nl=<3D><>Ǎ<EFBFBD><C78D><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>[<5B><07>`Ez<><7A><EFBFBD>Bz赮 i<>)0<04>pA![E<><45><EFBFBD>"<22>J<EFBFBD>!<21><><01><><EFBFBD>I<EFBFBD><49><EFBFBD>(<28>,
<0C> <18>03`f<><10>Pnr#<23><>ѣ=><3E>7<EFBFBD><37><EFBFBD><EFBFBD><06><><EFBFBD><EFBFBD>q><3E>@<40> z<>40<>C0<03>`<60>\vc<76><63><1D><>K<>`<60>(0D<30>pA<1B><>wU<77>F<EFBFBD>e<EFBFBD><65><10>h<EFBFBD>C <0B>*<2A><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>)0+m׈<6D>*7<><37><EFBFBD><11>U<EFBFBD><55><EFBFBD><EFBFBD>?~<7E><><EFBFBD><EFBFBD>Z<EFBFBD>x<><78>u^<5E>2`l<><6C><EFBFBD>՗<>;N<><4E>zW;N<>z97<39>a<EFBFBD>ux<75><78>ߋ<EFBFBD><DF8B><EFBFBD> <0C>^<5E>z<EFBFBD><7A><EFBFBD><EFBFBD>gM<67><4D>{g<>8<EFBFBD><38><EFBFBD>p<EFBFBD><70>w5<77>q<EFBFBD><71>k<EFBFBD>><3E><><EFBFBD>5N<35>.<2E>Z<|><3E><><EFBFBD>t<EFBFBD>ž<EFBFBD>|<7C>w<0F><16>4<><1E><><EFBFBD>}<7D><><EFBFBD>1<EFBFBD>k'<27>I< g<>~WM \€!<21>C0g`J9 '<27>~W
<0C><14><>:w8<77><38>+<05>`
L<EFBFBD>nNo<4E>J<EFBFBD>!<21>3<><33><1F><>[
<0C><14><>F<EFBFBD><46>x<EFBFBD><78>R`<08><>4<EFBFBD>W<EFBFBD><57>]<5D>-<06><><EFBFBD><EFBFBD>}<7D><><EFBFBD>'R`<00><>,7<><15><><EFBFBD>~IEND<4E>B`<60>