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

3 lines
739 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><02>IDATx<54><78>ݱM<DDB1>@<18>a@L#d<><64><EFBFBD><EFBFBD><08>@<40><><18><><02> Vb<56><62><EFBFBD><EFBFBD><Om<4F>n<EFBFBD><6E><EFBFBD><EFBFBD>_\<00>v9<76><02><><EFBFBD>6C<36><43>|<7C>2<EFBFBD><32><50>G<EFBFBD>jp&<26>F_0<><30>!<21><>!<21><>!<21><><EFBFBD> <0B><><EFBFBD><EFBFBD>O<06>I<><49>37<33>>F<>L<EFBFBD><4C><EFBFBD>g<EFBFBD>ۜ<EFBFBD><DB9C><EFBFBD>S"<22> <09><><EFBFBD>)j<> <02>aa<61><1A>/^]<5D><>4<EFBFBD>A<02>`^WÕ<57>"<22>>C0<01><><EFBFBD><EFBFBD>i<11>C0C0C0C0<01>1<EFBFBD><31>'<01><>~? <18> <18> <18> xE<78><45>W<EFBFBD><00><><EFBFBD>!<21><>!<21><><EFBFBD><EFBFBD>p<EFBFBD>k<EFBFBD><6B>><01><>Ix<49><78> <01><>0?<3F><>w2;B<>2A<32><41><߿<>Z<EFBFBD>z<EFBFBD><7A><EFBFBD> <0C>}6<><36>*p^<5E><>'<27><6F>r<EFBFBD>Ա<>m<EFBFBD><6D><EFBFBD><EFBFBD>w7β<><CEB2><EFBFBD>m<EFBFBD>y<EFBFBD>` <1D>K<7F>~5<>f<EFBFBD><05> <0C>l<EFBFBD>[<5B>4Rzz<7A>q<08><>n<EFBFBD>~nݎ<6E>E<EFBFBD><45>M<0F> <0C><> <09><>c<EFBFBD><63><EFBFBD><EFBFBD>(9<>!VA<56>w7<77>><3E><><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD>j8<6A><38><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><18> <09><><EFBFBD>+<2B>E8<45><38>!<21><>+h<>fZ<66>S<18> <18> <18> <18> <09><>̱"<08>ü<EFBFBD>A<>L<>L<>L<>4<>_u<03>B<EFBFBD>L<>L<>E4<45><34><EFBFBD>?pM<>So<01><>0?<3F><>p5<70>#To"<17><><EFBFBD>vj<76><6A> <0A><> e}6<><36>*p^<5E><>'<27><6F><DF8B><EFBFBD>_,<2C><><18> <18> <18><>BG2R<00><><0F>͉ҬI<D2AC>BIEND<4E>B`<60>