Files
akbasic/docs/images/shapes.png

10 lines
1.7 KiB
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><06>IDATx<54><78>ݻq<DDBB>XP<><50>&#G<>d<EFBFBD>td*<10>LGȠ<>t<EFBFBD>xU<18>P<EFBFBD><50><EFBFBD>t<EFBFBD><74>9<EFBFBD><6E><D5AA>xq<78><71><0F>0<30><EFBFBD><7F><EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD><EFBFBD>JG<02>Y+<2B>cn<0F>Ӥ|}i<> <20>p<EFBFBD><70><6E><D19D>K-<2D>b 7,ॢ{N<><4E><EFBFBD><EFBFBD><02>FzG<7A><47>/2 <0C><08><><EFBFBD><1D>b<EFBFBD>47<34>_<EFBFBD>kG<6B><47>*<2A>s<EFBFBD>x<><EFBFBD>a<EFBFBD>ߜ<1F>><3E>Q<EFBFBD>rz<72><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1E><><EFBFBD><0E><><EFBFBD><03> &7<>ƫV<C6AB>Y<EFBFBD>b<EFBFBD><62>8Uz<55><7A>e<EFBFBD><65>r<EFBFBD><72>}<<3C><><EFBFBD><EFBFBD><EFBFBD>Jr<4A>&4p<34><70>m<EFBFBD>.a{˹<><CBB9>gXy<58><79>ח<EFBFBD><D797><EFBFBD><EFBFBD>5a:gz<67><7A>6<>JW<4A><57><EFBFBD>t8<74><38><EFBFBD><EFBFBD>&<26><>8<><38>|<7C><>A<EFBFBD><41>rg+<2B>ͮ<EFBFBD><CDAE><EFBFBD>|}<>pi<70><1B>D<EFBFBD>6<EFBFBD>K<EFBFBD><4B>r<EFBFBD>0k/4˲<34><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>e-=\Ν.4?g/<2F>r<EFBFBD>Or<4F><01>#t<><<3C>Ⱥ<EFBFBD><C8BA>=<13>Hy<48><79><EFBFBD>p9 <0C> p<>l<EFBFBD><6C>(<28>Z8F<38><46>$?<F&a<>6i<0F>K<EFBFBD><05><><04>sx>W<>42<34><><02>;t<><74>m<EFBFBD>p <09>vE<76><45>0<01>T<EFBFBD><54><EFBFBD>1E<31>'<27>P<EFBFBD>Ca <0C><> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+%<25><> <09><><EFBFBD><EFBFBD>0<01><><EFBFBD><07><>m~^<5E>O<EFBFBD><4F><EFBFBD><EFBFBD>P<EFBFBD>C<01>_<EFBFBD><5F>w%Nlr
{4<><34>KXK<58>[8g<38><67><EFBFBD>=3BCa<43><02><><EFBFBD><EFBFBD>/;7<><37><EFBFBD>dXz<58><7A>:<<3C><><07><><<3C><>G<EFBFBD>D<EFBFBD><44><EFBFBD><EFBFBD> <09>5<><35>t/,hf=^<5E><><EFBFBD>%<25><><EFBFBD><EFBFBD><EFBFBD>ԍ<EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B>p<1F>[<5B><>ubO<62><4F>۩'j<><6A>w<EFBFBD>:y<><79>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0F><><EFBFBD>ʞ<EFBFBD>|9<>?<3F><>G<EFBFBD><47>m<EFBFBD>Ѫ1<D1AA><31>x<EFBFBD>%/<2F><><13><>K<EFBFBD><4B><EFBFBD><EFBFBD>b9<>9Z<39> <0A><><EFBFBD>K<4B><7F><EFBFBD>Jp8<70><38><EFBFBD>#r<>-<2D><><EFBFBD><EFBFBD>ڙ<EFBFBD><DA99>7<EFBFBD>bz 6<><36>n,B<"a<><61>O<EFBFBD>E<EFBFBD>9<EFBFBD>.b]3<><33>k<EFBFBD><6B><EFBFBD>x<EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD>r<EFBFBD>6<EFBFBD><36><EFBFBD>q<EFBFBD><71><EFBFBD>e<EFBFBD>V<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>#U oYP6-",<2C><><EFBFBD>dx<64><78>uH<75><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n'L!|{<7B><>~<7E>
?<3F><>h<EFBFBD>,v2R&7<>fi <0A>HHo<>KS<4B>w<EFBFBD><77>Ks<4B>Z<EFBFBD>f<EFBFBD><66>{<7B>:<3A><><EFBFBD>3B<33><42><EFBFBD>Ɔl<C686>;*}<13><>:<3A>[<5B>a<EFBFBD><61><EFBFBD><EFBFBD>+<2B><>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1F>#4pv<1D>-O;<<3C>+:H[<5B><>n\<5C>j<EFBFBD>jo9<6F>4p1<70><31><EFBFBD><EFBFBD><EFBFBD>ߦb k<>b<EFBFBD><62><EFBFBD><EFBFBD>-<2D>'<27>X<EFBFBD><58><EFBFBD>}2B<32><42>B<EFBFBD>sSn<53><6E><EFBFBD>P<EFBFBD>Ca <0C> 0&<26>P<EFBFBD>Ca <><7F><EFBFBD>_<EFBFBD><5F>0<01><>l<EFBFBD><00>#<23>P<EFBFBD>Ca <0C> 0&<26>P<EFBFBD><50><EFBFBD>YW<59>[<5B><>}<7D>4h`(M<><4D>0#4<>+1EW<45><57> <0C>i`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4 <0A>FҖp<D296><70><04>-%<25>p<EFBFBD><70>Fh(M<03><>T%\<5C>~f{I2<49>Az#4!~|<12><>`)<1A><18>=<3D>G<EFBFBD>6<1A>0!5<>M<EFBFBD>6<1A>H<1B>pO<70><4F>0<><30><17><><1D>V<EFBFBD><56><EFBFBD>w`<60>X5<58><35><15>H<EFBFBD><48>b<EFBFBD> <0C>Z<EFBFBD>#&<26><>b<EFBFBD>}t&<26><> cS<63><.2w<1F>F<EFBFBD>I<EFBFBD>ڳ<0F>ӏ<08>$<24>#.f<><66>/{}A}<><7F><EFBFBD>6<EFBFBD><00>`<60><>G<02><>En<10><>|<7C><>]<02><><EFBFBD> <B<>ӱ<EFBFBD><D3B1><EFBFBD> p.6<EFBFBD>3<EFBFBD>g<>M<EFBFBD>^Rť<52>8<><38><1B>3|<7C> O<><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.J<03>^<5E><><07>s4p<34>$_<><5F>X<EFBFBD>*G<>#<23>Jo#õ<18><>0 &a<>6J<36> c<>]<5D>K~x<>8L<38><4C><18><><EFBFBD><01><0E><> <0C>%h`(Lo<>D<EFBFBD>6J8? <0C> 0f<><66>T<EFBFBD><54><EFBFBD>1E'<27><><EFBFBD>0<01><>
`(L<><4C>0<01><><04>[Ǔ;<3B>2`(L<><4C><EFBFBD>F<EFBFBD><46>
`(L<><4C>0<01><>
`(<28><><EFBFBD>[+tK<74>ϐ<EFBFBD><CF90><EFBFBD>P<EFBFBD>CaF<61>%<25>h<EFBFBD>s 
<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCa8L<38>V<><56>p<><70><19><>Z<EFBFBD><5A>P<EFBFBD><0E><><EFBFBD><EFBFBD>o9/I<><49><EFBFBD>"#t
<EFBFBD><EFBFBD>/;?<00><><EFBFBD><EFBFBD><08>a<EFBFBD>[<5B>N$<24>uoi8<><38>{X<>V'<27><><EFBFBD>/R_;ƭx<C6AD><78>:Nj<4E>+<2B>np^kdX<64>vF<76><46>[*Ƣ<>%<01>a|<7C><><EFBFBD>$<24><>̢<EFBFBD>%.<2E>ڳ<0F>ӏ<08>-<14>!<21> <0B><03>r^?<3F><><EFBFBD><EFBFBD>IEND<4E>B`<60>