Files
akbasic/docs/images/scale.png

33 lines
3.1 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<02><01><00><>Fr NIDATx<54><78>ݻ<EFBFBD>W<05>"c,<2C>F`th<74>M<> <0B>A<EFBFBD>0<1A><>+<14><01>tu<74><75>}2<>;G"b<><EFBFBD><E1A0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>~<7E><> }<7D><><EFBFBD><EFBFBD><EFBFBD>?t<>Q<EFBFBD>C<EFBFBD><43>󏿾<EFBFBD><F38FBFBE><EFBFBD><EFBFBD><00>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><06>~<7E><>ӗO_<4F>|<7C><><EFBFBD><06>~<7E><><EFBFBD>z<EFBFBD><7A>a<00><><EFBFBD>/<2F>0<00><><EFBFBD><00>Da<00><><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><00>l&<26><1B>4<14><><00>4<EFBFBD>P<><50><03><><EFBFBD><03><12><01><>g#<23>-<2D>Yp<><70>|<7C><><06><><EFBFBD><1F><>FN<>z<EFBFBD>Q<00>+p<>W<EFBFBD>0<00>wf<77><66><EFBFBD>8 v*<2A><>o4<6F><00>R<EFBFBD><03><>H<03><13><0E>"
<03><><EFBFBD>x%
<03>{%GX[<5B><><00>N<EFBFBD>|<7C><><06><>vx<><78><06><><EFBFBD>^Da<00>r<EFBFBD>W<EFBFBD>03k1<6B><31>b<EFBFBD><05><><EFBFBD>%<25><1B>4<13><EFBFBD>Wi<00><12>/<2F>03 t<>W<EFBFBD>03<>9<EFBFBD><39>b<EFBFBD><05><><EFBFBD>%<25><1B>4<03>{<7B>Wi<00><14>/<2F>0#Jp<4A>W<EFBFBD>0#<23>8<EFBFBD><38>b<EFBFBD><05>0<EFBFBD>$<24><1B>4<03>w<EFBFBD>WiR<>z<EFBFBD>Q<18><><1F><>( @F<>FX[<5B><>H'}<02><>H<03><>8x<><78> <20><><0E>"
<03><><EFBFBD>x%
<10>#<23>-<2D>Y<00>5l<02><>H<10><>x<><78> <20>Y<0E>"
<10>Dx%
<10><>#<23>-<2D>Yt7]<02><>H<03>Ѽx<><78><06><><EFBFBD><0F>"
Ѓ<03><>( @K3<4B><33><EFBFBD>gЌ|O# @<0E>ci<00>r<EFBFBD>7<EFBFBD><37><00><><00>
P<><11>k<EFBFBD>Y'<06> <07><18>4E8<45><38><EFBFBD><EFBFBD>\<5C><00>$
p<><11>y<EFBFBD>Y<00>&_<><5F><06><07> <0C>4<00>8<EFBFBD>ň<EFBFBD><00><>&
<03><>Vy<56>Y<00>$ע<><06> <07>.<2E>49<>Չ<EFBFBD><00><>7"
<03>3#<23>v<EFBFBD><76><00><><EFBFBD>[<5B>H<03>8<EFBFBD><38>h<EFBFBD>&<26>w#
<03><><01>L<06><>V<56>Y<13><><EFBFBD><EFBFBD>HL<><01>E# 0 8Q`pP<70>0<EFBFBD>،<EFBFBD><D88C>2<EFBFBD><18><1C>F`Hpi<><69>8<EFBFBD>i<EFBFBD><69>#q<><71><11><01>`<60><><EFBFBD>q<16>$<24><>4<EFBFBD><00>9<EFBFBD><39>i<EFBFBD><01>r<EFBFBD><72><13>2r<32>!
<03>b<EFBFBD>5<0E>,<2C>D$<24><>h<EFBFBD>Rp<52>Ǥ<EFBFBD><08><1E>( <10><8Q &#<23><>g$<01>B# <10><<17>4@<0E>tDa<44><1C>I<EFBFBD><49>}a<><61>8 <0B># xvi<>.`<60>E# М<03>w<EFBFBD>0@K0<><10><01>0<EFBFBD><30><EFBFBD>q@0<>i<EFBFBD><01>r<EFBFBD>yF# P<><03> <0B>0@ 0<><30><EFBFBD>ea<><61>q@A0<>h<EFBFBD><01>p<EFBFBD>9C# p<><03>I<EFBFBD>0<EFBFBD>0<><30><EFBFBD><00>aq<61>q<16> 0eh<65>q<>)I# <0A><>La<4C>0<EFBFBD>0U<30><55><00>aQ<61>q<16>0ui<75>r<>iA# p<><01>Q<18>g0M<30><4D>+#,Z3<5A>X$`z<>H<03>s<EFBFBD><73>I# LKMgi`N0!h<><68><EFBFBD>8<EFBFBD><04><><06><><13>( L<>&"Q<18>Agc<><63> M# <0A><>&<01>40<07>Da`00<><30><EFBFBD><EFBFBD>0<EFBFBD><30>H<EFBFBD>8 <18>LJi ;<07><>4<EFBFBD>@^0<><30><EFBFBD>@R0#<10><>t<EFBFBD><74><18>q<16><><04>P4<50>@0<03>H<03>9<EFBFBD><39>I<06>s<EFBFBD><19>( <0C>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$`<60><><EFBFBD><06>q<EFBFBD><71><EFBFBD>F<1A><>f.<2E>0<10>̌Da<44>;#,&e<><05>%35<33> i<><18>E<06>s<EFBFBD><73>Qh<> ~a<><05>!<01>i<>66i<36><69>z`xF*q<><71>5Q(<28> v1<76>ʒ<><CA92><00>4P<34> <0C>i<EFBFBD><69><EFBFBD>`8C.r<><72><Q8<> .1<EFBFBD>Α<><CE91><00>4p<34> <0C>h<EFBFBD><68><EFBFBD>`(Ivr<76><72><Qx<> <0B>0<EFBFBD><02><><EFBFBD><EFBFBD>"<22>4<EFBFBD><34><01><>4<EFBFBD><34>{0<>
w`hGn<><6E><EFBFBD>)<29>,`%Ci<><01>n4<6E>03z<12>aZ0<>'
Ä<EFBFBD><EFBFBD> <04>,<2C><> <0C>h<EFBFBD>a0<><30><EFBFBD><EFBFBD>8<><10>( <0C>s<EFBFBD>!.Qf<><05>g<><67>$`H@# <0A>q<EFBFBD>! <0A>4<EFBFBD><34>mY<6D><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><01><><EFBFBD><EFBFBD>eY><><7F>@Zo˲<6F><CBB2><EFBFBD><EFBFBD><EFBFBD>?pķe<C4B7><65><EFBFBD><EFBFBD>><3E><><EFBFBD><16>d<EFBFBD><05><><EFBFBD>I<EFBFBD><49>o1<6F><31>~g<><67> =<3D>,Hɗ<16><><EFBFBD> )H<>0Q1‚<31>gA^<5E>aT<61><54><10>
<06><><EFBFBD><EFBFBD>|9ax<61><78><10> <0C><10>! #,<2C><>q<16><><EFBFBD>f<>[}<7D><>aRi<08><><10><><EFBFBD>]H<>0;Q:2‚<32>gA7^~<7E><><EFBFBD><01><><EFBFBD>~<7E><><EFBFBD><EFBFBD>|ـ; P<> <&
CFX<46><03>YP<59><50>\<5C>9O (K<>*|<7C><><EFBFBD><.<2E> 8F<14><><EFBFBD><EFBFBD><EFBFBD><03><><EFBFBD>/<2F><>9<EFBFBD>p<>
<1A>D# <0A><><EFBFBD>y<><79>!0P<30>( 'ag<>a^Z<><5A><U<>94P<34>Fv<>%*<2A>x<EFBFBD><78>$`<60>.Q<18>0<EFBFBD>*2΂M^N<>6<m`<60><><06><>H<EFBFBD>/|<19><><v<><76> <0C>!
<EFBFBD>b<EFBFBD>ta<74><05> <20>3O!f<><66>B<>H3)z <08>#&!<03><><EFBFBD>L<EFBFBD> <08>8<EFBFBD><38>x<EFBFBD>b<>tbT*h 4<>4<EFBFBD><34><EFBFBD><06><><EFBFBD>b00<><30><><CC90><EFBFBD><04><><18><>J O-<2D>SA)i<><19>1<><31><EFBFBD>II<49>@n<>0<EFBFBD>a<01>g<><67><EFBFBD>G` <0C>fd<66><64><06><><EFBFBD>&V`0k'c<12>I<EFBFBD> <18>q xI<04><>)G4*h`
i<><69><EFBFBD>&<26>qG00Q<>P<EFBFBD><50><EFBFBD><EFBFBD>g<11><>A`N<>~<7E><><EFBFBD><06><><EFBFBD><EFBFBD>/40/<2F>4=y<>X< iH <0A><>F<EFBFBD><46>|<7C>~<7E><>Hm0<><03>0ma<01>oyOxHR<48>
<1A>5<EFBFBD>4<EFBFBD><34>T<01><>iI)0<><01>0ea<01>e<EFBFBD>EI<45><49>N<><4E><EFBFBD>44<>yi<><69><EFBFBD><01><>S<EFBFBD><53>$`<60>Da<44>1<EFBFBD><02><>8<EFBFBD>3<EFBFBD><33><14><><EFBFBD>K*h<><68>4<EFBFBD><34><EFBFBD>SP<><50>+[$`<60><>Da<44>3<EFBFBD><02><>8<EFBFBD>g<EFBFBD><67>4<>
<1A><1D>4<EFBFBD>|Z<><5A>E<06>@fe<66>Кqˢ <01><>CxB*h<><68>4<EFBFBD><34><EFBFBD><EFBFBD><10><><EFBFBD><$`<60>@D<><44>aDa<44>5o[y8L <10>Fz|<7C>v"<22><><1E> <0C><>(<*#,<2C><EFBFBD><E88CB3><EFBFBD>
<0F><01><><01><>H<EFBFBD><48><EFBFBD>"@F<><46>yI<79><00><><EFBFBD><EFBFBD>ade<64><65><EFBFBD><EFBFBD>'<27>x<>'<27><><18>F:[#<23>T<EFBFBD>O<18>(<28><><16>h<EFBFBD><68>r<EFBFBD><72>00<0F><>T<EFBFBD><00><>H<EFBFBD><48>o`<06><>qH<71><11><>1<EFBFBD><02><>qV,ކ&<26><>ߑ
`^<1A><><EFBFBD><EFBFBD>f<>
<EFBFBD>'
wc<EFBFBD>0;<3B><>><3E><>p<>(4<><34><06><>F<EFBFBD><1D>e<00>s<01>$
<EFBFBD>f<EFBFBD><05>c<EFBFBD>Yuy<75><01>4{i<><69><EFBFBD><EFBFBD>`?W<>: <18><>D<EFBFBD>R<EFBFBD><52>8<>8<EFBFBD> o1<00><EFBFBD><E6889C><06>*<2A><>y~k\<5C><><EFBFBD>'P<>(|<7C>eg<1D>m<05><><1C>'T<>Ԣ<>~<7E>o<07>z\<5C><>$`<00><13><>aP<>q<EFBFBD>c<EFBFBD>Jh<><68>YT<59><00><><EFBFBD><EFBFBD><EFBFBD>o<01><>f<EFBFBD>>0݈<>FX<00>1<EFBFBD>8k<38><6B><00><><EFBFBD><18><><01>b<EFBFBD>Fz<46>[b<><62>*I<><00>3O6<> <20>Y<EFBFBD>Y3<59>e<00>ԐGJ @t#7<>c<EFBFBD>[0<><30><EFBFBD><EFBFBD> @<1A>Ea#,rm<>5<EFBFBD><35><00>H}<7D>T<EFBFBD>d5B#<23><><EFBFBD>`n<19><> @zy<7A><79><00>ege|k<00><>R54<00><><EFBFBD>H<EFBFBD><48>)<01><><EFBFBD><EFBFBD>M`X<><58><EFBFBD>c<><>vE<>:v*hf<11><><EFBFBD><EFBFBD><EFBFBD>@M<11><> <0C>t<EFBFBD>Da#,<00>e<><15>-<00><>rU<>̮g#-@<40>k(<03>w<EFBFBD><77><EFBFBD>,K<>q<EFBFBD>
<00>T=<3D>*hx<>E#-<03><>WR<06><17>Ea#,x<><78>8K ;9<>*h8<>d#-<03>QW<51><57> ']<5D><>FXp<><70>q<EFBFBD>
.:tLU<4C>PƙFZ<06>R<EFBFBD>\U 
<EFBFBD><1F><><EFBFBD><00><><EFBFBD><EFBFBD>,4T<><54>Ȫ<EFBFBD><01><>g<EFBFBD><67> <00><>|m%`h<>}<14>M<06><>J<EFBFBD><4A>;}<7D><><EFBFBD><EFBFBD><7F><EFBFBD>I<EFBFBD><49><EFBFBD>jIEND<4E>B`<60>