Files

4 lines
1.2 KiB
Plaintext
Raw Permalink 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><04>IDATx<54><78><EFBFBD>1R<31>J<14>Q<EFBFBD><51>7CB@<40><>l<EFBFBD><6C><EFBFBD>2<><1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@U<>)<0F>H<EFBFBD><48>{<7B>9<EFBFBD><39>)Uٟ<55>V3L۷<>0<><30><EFBFBD>Ǎ<EFBFBD>p<70><7F>˓<EFBFBD><CB93>J<07>*<2A><><EFBFBD>}<7D>><3E><>,3<07><15><>Şq<1A><><12><>n<EFBFBD>bϛ{<7B>1<EFBFBD><31>p<>tO-<2D><>dv<64>6<EFBFBD><36><EFBFBD><H<>+<06>]$ x<><78>=O<>l<EFBFBD>*<2A>@鞒1WKp<>tOy=<3D>
<EFBFBD>N<><4E><EFBFBD>A<EFBFBD>rQ<1E><>j;s<><73><01><>>f<>vEƜ/<2F>:<3A>.no4̇"<05><>u<EFBFBD>r<1A>Ca.8<EFBFBD>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0F><><EFBFBD><EFBFBD>ޟ<EFBFBD>޷<EFBFBD><DEB7>#<23>|<7C><><00><>|r<><72>F?B;9<><39>Y<EFBFBD><59><EFBFBD><01><> <0C>ZL#<07><>Oi<4F>AV6<EF859A><36>l/<2F><><EFBFBD>F<EFBFBD><46>R<EFBFBD><52><EFBFBD>{<7B>v<EFBFBD>><3E><><EFBFBD>w<EFBFBD>O<EFBFBD><4F>ǯ<EFBFBD><C7AF>>|<7C>#<23><><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>V<>u4\<5C>Xs5 <0A>4<EFBFBD>;<3B>ok<6F><15><08><>y<17><08><>R<1D>Щ<EFBFBD><D0A9>t5<74>6<>p<EFBFBD><70><01><>#\Gπ<47>ێ<EFBFBD><DB8E><EFBFBD><EFBFBD><7F> W<>-`<60> <0B>Y`<08>O<EFBFBD><4F><EFBFBD>N<><4E>Y`L<><4C><19><>:<04><> {<7B><><EFBFBD><19>Ď<0E><>Ž,p F8<46>C6<><36>/ \<5C>N鸀<4E>/<2F><>C`l~G<><14><><05><>\<5C>N戀<4E><E68880><EFBFBD> \<5C>Τy<CEA4><79>ڱ<><10><>!0C`<02><>=Vmv<>MY`L<><10><>!<21><>{<1E>{<7B>,0&`L<><10><>!0C`<02><> <0C> 0&<26><>|+C`<02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD>!0C`<02><> <0C> 0&`L<><10><>!<21><><01><>==<3D>޴<EFBFBD>|<7C><>5<EFBFBD>,0&`L<><10><>+<2B><02><46>cAS0&`L<><4C><EFBFBD><EFBFBD>ʤy<CAA4> \<5C><>M戀<4D>04b<34>!<21><>6<>#p~<7E><>C`<02><><EFBFBD><EFBFBD>t\<5C>NѰ; \<5C><><EFBFBD><EFBFBD>Ѐ<EFBFBD>0<EFBFBD><30><02>g~;:`# ;<3B><>X<><58><EFBFBD>𑜟s<F0919C9F><73><10><>33<33><33><EFBFBD> <09>)va<76><61>2<EFBFBD>t <0B><08>v=X<><58><EFBFBD><EFBFBD>":<1F>5܂z<DC82><7A><0E><>zK<7A><1F><<3C>v<18><><EFBFBD><EFBFBD>L<><34><CD8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<02><>4<><34> 0<>99<39><39><EFBFBD><08>p<EFBFBD>_5P<35><50><EFBFBD><EFBFBD>e~<7E>+<2B>I<EFBFBD>_<EFBFBD><5F><EFBFBD>F|<07><>{r<>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>݇<EFBFBD>ݷ<EFBFBD><0F>W<1A><><EFBFBD>e܀' <0A><>^<5E><><03><><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>&<19><><EFBFBD><EFBFBD><EFBFBD><01>L<EFBFBD>·585<38>%cxY<19><>H<1F>}i<>P<EFBFBD>#<23><><EFBFBD>Y<EFBFBD>ə x*ٰ<>3/<2F><><EFBFBD>մz9#d<><64><EFBFBD>;6<><36><EFBFBD><01>挧D%/wu<77><75>S<EFBFBD>^$d<><64>W<EFBFBD> x4c<34>r<EFBFBD>l<01>e,]<5D><><19>l䌽貋<E48CBD><01>F<EFBFBD><46>2<EFBFBD><32>(<><7F><EFBFBD><EFBFBD>,]vW(<28><><32>=<3D><><EFBFBD>-]vW.<2E><>Ӟ<EFBFBD>ǬXV=<3D>S<EFBFBD>q^Y<>><3E>KQ<4B><51>`<02>Ԓ<EFBFBD>J<18><>9m<39>Dy8<79>IEND<4E>B`<60>