Home » Archimedes archive » Archimedes World » AW-1995-03-Disc1.adf » Disk1Mar95 » !AWMar95/Goodies/DrawBasic/!DrawBasic/Resources/Transforms
!AWMar95/Goodies/DrawBasic/!DrawBasic/Resources/Transforms
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1995-03-Disc1.adf » Disk1Mar95 |
Filename: | !AWMar95/Goodies/DrawBasic/!DrawBasic/Resources/Transforms |
Read OK: | ✔ |
File size: | 17F8 bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There are 3 duplicate copies of this file in the archive:
- Archimedes archive » Archimedes World » AW-1995-03-Disc1.adf » Disk1Mar95 » !AWMar95/Goodies/DrawBasic/!DrawBasic/Resources/Transforms
- Archimedes archive » Archimedes World » AW-1995-04-Disc1.adf » Disk1Apr95 » !AWApr95/Goodies/Draw/!DrawBasic/Resources/Transforms
- Archimedes archive » Archimedes World » AW-1995-05-Disc1.adf » AWMay95_1 » InTheMag/DrawBasic/!DrawBasic/Resources/Transforms
- Archimedes archive » Archimedes World » AW-1995-02-Disc1.adf » Disk1Feb95 » !AWFeb95/Goodies/DrawBasic/!DrawBasic/Resources/Transforms
File contents
10REM > DrawBasic:Resources.Transforms 20 30REM ======================================================= 40REM 50REM copyright Joe Taylor June 1994 60REM 70REM N.B. For ERROR THROWBACK to work The first line above 80REM MUST have the correct pathname of this file. 90REM If you move the location of the file remember to 100REM alter this pathname. 110REM 120REM ======================================================= 130 140REM ************************ 150REM 160REM TRANSFORMS & OBJECTS 170REM 180REM ************************ 190 200DEF FNTransformStore=HIMEM+184 210 220DEF FNCreateTransform(A(),b()) 230LOCAL _transform,_a,_b,_A,_B 240 _a=FNFRAME_x-FNFrame_x/FNX_Scale : _b=FNFRAME_y-FNFrame_y/FNY_Scale 250 _A=b(0)+A(0,0)*_a+A(0,1)*_b-_a 260 _B=b(1)+A(1,0)*_a+A(1,1)*_b-_b 270 _transform=FNTransformStore 280 _transform!0=INT(A(0,0)*2^16+.5) 290 _transform!4=INT(A(1,0)*2^16+.5) 300 _transform!8=INT(A(0,1)*2^16+.5) 310 _transform!12=INT(A(1,1)*2^16+.5) 320 _transform!16=INT(_A*FNX_Scale+.5) 330 _transform!20=INT(_B*FNY_Scale+.5) 340=_transform 350 360REM ================ 370REM 1.1 Copying 380REM ================ 390 400DEF FNCopy(path%) 410 REM --------------------------------- 420 REM 430 REM Makes copy of path or text object 440 REM 450 REM ---------------------------------- 460 LOCAL _length%,_Path%,_i% 470 _length%=(path%!4) 480 IF (!(HIMEM+4))-(!HIMEM)<_length%+1 THEN ERROR 0,"Out of memory" 490 !(HIMEM+4)-=4 : _Path%=!(HIMEM+4) : !_Path%=!HIMEM 500 FOR _i%=0 TO _length%-4 STEP 4 510 PROCDraw_AddWord(path%!_i%) 520 NEXT 530 OTHERWISE : ERROR 0,"Object to copy not text/path!" 540 ENDCASE 550=_Path% 560 570REM ================ 580REM 1.2 Affine 590REM ================ 600 610DEF FNTransform(path,A(),b()) 620LOCAL _Path 630_Path=FNCopy(!path) 640 PROCTransform(_Path,A(),b()) 650=_Path 660 670DEF PROCTransform(path,A(),b()) 680 REM -------------------------------- 690 REM 700 REM Replaces path/text using 710 REM X()=A().x()+b() 720 REM 730 REM -------------------------------- 740 LOCAL _transform,_dx,_dy 750 CASE FNObjectType(path) OF 760 WHEN 2 : PROCTransformPath(path,A(),b()) 770 WHEN 12 : PROCTransformText(path,A(),b()) 780 OTHERWISE : ERROR 0,"Can't transform. Must be path/text." 790 ENDCASE 800ENDPROC 810 820DEF PROCTransformPath(path,A(),b()) 830LOCAL _path%,_Style%,_transform 840_transform=FNCreateTransform(A(),b()) 850_path%=!path : _Style%=_path%!36 : _path%+=40 860IF (_Style% AND (1<<7))<>0 THEN _path%+=4*(_path%!4)+8 870SYS "Draw_TransformPath",_path%,0,_transform,0 880PROCDrawPath(path) 890ENDPROC 900 910DEF PROCTransformText(path,A(),b()) 920LOCAL _A(),_x(),_i%,_x%,_y%,_text$,_path% 930_path%=!path 940DIM _A(1,1),_x(1) 950_x(0)=(_path%!72-FNFrame_x)/FNX_Scale+FNFRAME_x 960_x(1)=(_path%!76-FNFrame_y)/FNY_Scale+FNFRAME_y 970_A(0,0)=(_path%!24)/(1<<16) : _A(0,1)=(_path%!32)/(1<<16) 980_A(1,0)=(_path%!28)/(1<<16) : _A(1,1)=(_path%!36)/(1<<16) 990_x()=A()._x() : _x()=_x()+b() 1000 _path%!72=FNDraw_X(_x(0)) 1010 _path%!76=FNDraw_Y(_x(1)) 1020 A()=A()._A() 1030 _path%!24=INT(A(0,0)*2^16+.5) : _path%!32=INT(A(0,1)*2^16+.5) 1040 _path%!28=INT(A(1,0)*2^16+.5) : _path%!36=INT(A(1,1)*2^16+.5) 1050 _i%=80 1060 WHILE (_path%?_i%)<>0 : _text$+=CHR$(_path%?_i%) : _i%+=1 : ENDWHILE 1070 _x%=_path%!72 : _x%+=!(HIMEM+112) : _x%=400*(_x%>>8) 1080 _y%=_path%!76 : _y%+=!(HIMEM+116) : _y%=400*(_y%>>8) 1090 SYS "Font_Paint",,_text$,%1000000,_x%,_y%,,_path%+24 1100 _path%!52=FNFontColour 1110 _path%!60=FNCurrentFont 1120 _path%!64=FNFontSize 1130 _path%!68=FNFontSize 1140ENDPROC 1150 1160REM ================ 1170REM 1.3 Translation 1180REM ================ 1190 1200DEF PROCTranslate(path,dx,dy) 1210 REM ------------------------------------ 1220 REM 1230 REM Translates in (x,y) plane 1240 REM 1250 REM ------------------------------------ 1260 LOCAL _A(),_b() 1270 DIM _A(1,1),_b(1) : _A()=1,0,0,1 : _b()=dx,dy 1280 PROCTransform(path,_A(),_b()) 1290 ENDPROC 1300 1310DEF FNTranslate(path,dx,dy) 1320LOCAL _Path% 1330_Path%=FNCopy(!path) 1340PROCTranslate(_Path%,dx,dy) 1350=_Path% 1360 1370REM ================ 1380REM 1.4 Magnify 1390REM ================ 1400 1410DEF PROCMagnify(path,a,b,factor) 1420 REM --------------------------------- 1430 REM Magnifies 1440 REM I.e. 1450 REM - - - - 1460 REM | a b | = m * | a b | 1470 REM | c d | | c d | 1480 REM - - - - 1490 REM --------------------------------- 1500 LOCAL _transform,_A(),_b() 1510 DIM _A(1,1),_b(1) 1520 a=a*(1-factor) 1530 b=b*(1-factor) 1540 _A()=factor,0,0,factor 1550 _b()=a,b 1560 PROCTransform(path,_A(),_b()) 1570 ENDPROC 1580 1590DEF FNMagnify(path,a,b,factor) 1600LOCAL _Path% 1610_Path%=FNCopy(!path) 1620PROCMagnify(_Path%,a,b,factor) 1630=_Path% 1640 1650REM =========== 1660REM 1.5 Rotate 1670REM =========== 1680 1690DEF PROCRotate(path,a,b,angle) 1700 REM --------------------------------- 1710 REM 1720 REM Creates a rotation 1730 REM 1740 REM --------------------------------- 1750 LOCAL _transform,_A(),_b(),_c,_s 1760 DIM _A(1,1),_b(1) 1770 _c=COS angle : _s=SIN angle 1780 _A(0,0)=_c : _A(0,1)=-_s : _A(1,0)=_s : _A(1,1)=_c 1790 _b(0)=a-_c*a+_s*b 1800 _b(1)=b-_s*a-_c*b 1810 PROCTransform(path,_A(),_b()) 1820 ENDPROC 1830 1840DEF FNRotate(path,a,b,angle) 1850LOCAL _Path% 1860_Path%=FNCopy(!path) 1870PROCRotate(_Path%,a,b,angle) 1880=_Path% 1890 1900REM ================ 1910REM 1.4 Tesselation 1920REM ================ 1930 1940DEF PROCTile(path,rows%,columns%) 1950 REM -------------------------------- 1960 REM 1970 REM Tiles the path 1980 REM 1990 REM -------------------------------- 2000 LOCAL _i%,_j%,_Path,_dx,_dy 2010 CASE FNObjectType(path) OF 2020 WHEN 2 2030 PROCDraw_BoundingBox(path,_dx,_dy) 2040 _dx=_dx/FNX_Scale : _dy=_dy/FNY_Scale 2050 FOR _i%=0 TO rows% 2060 FOR _j%=0 TO columns% 2070 IF _i%+_j%<>0 THEN _Path=FNTranslate(path,_i%*_dx,_j%*_dy) 2080 NEXT 2090 NEXT 2100 OTHERWISE 2110 ERROR 0,"Only path objects can be tiled." 2120 ENDCASE 2130 ENDPROC 2140 2150 2160DEF PROCDraw_BoundingBox(path,RETURN dx%,RETURN dy%) 2170LOCAL _path%,_Style%,_xmin%,_xmax%,_ymin%,_ymax%,_i%,_length% 2180 _path%=!path : _length%=_path%+(_path%!4) 2190 _Style%=_path%!36 : _path%+=40 2200 IF (_Style% AND (1<<7))<>0 THEN _path%+=4*(_path%!4)+8 2210 _xmin%=2^30:_xmax%=-_xmin% 2220 _ymin%=2^30:_ymax%=-_ymin% 2230 _i%=_path% 2240 REPEAT 2250 CASE !_i% OF 2260 WHEN 0,5 : 2270 WHEN 2,8 : PROCDraw_Bound 2280 WHEN 6 : PROCDraw_Bound : PROCDraw_Bound : PROCDraw_Bound 2290 OTHERWISE : ERROR 0,"Something wrong!" 2300 ENDCASE 2310 _i%+=4 2320 UNTIL _i%>=_length% 2330 dx%=_xmax%-_xmin% 2340 dy%=_ymax%-_ymin% 2350ENDPROC 2360 2370DEF PROCDraw_Bound 2380_i%+=4 2390IF !_i%<_xmin% THEN _xmin%=!_i% 2400IF !_i%>_xmax% THEN _xmax%=!_i% 2410_i%+=4 2420IF !_i%<_ymin% THEN _ymin%=!_i% 2430IF !_i%>_ymax% THEN _ymax%=!_i% 2440ENDPROC 2450 2460
&� > DrawBasic:Resources.Transforms =� ======================================================= (� 2$� copyright Joe Taylor June 1994 <� F;� N.B. For ERROR THROWBACK to work The first line above P7� MUST have the correct pathname of this file. Z;� If you move the location of the file remember to d� alter this pathname. n� x=� ======================================================= � �� ************************ �� �� TRANSFORMS & OBJECTS �� �� ************************ � �� �TransformStore=�+184 � �� �CreateTransform(A(),b()) �� _transform,_a,_b,_A,_B �B _a=�FRAME_x-�Frame_x/�X_Scale : _b=�FRAME_y-�Frame_y/�Y_Scale �# _A=b(0)+A(0,0)*_a+A(0,1)*_b-_a # _B=b(1)+A(1,0)*_a+A(1,1)*_b-_b _transform=�TransformStore # _transform!0=�(A(0,0)*2^16+.5) "# _transform!4=�(A(1,0)*2^16+.5) ,# _transform!8=�(A(0,1)*2^16+.5) 6$ _transform!12=�(A(1,1)*2^16+.5) @$ _transform!16=�(_A*�X_Scale+.5) J$ _transform!20=�(_B*�Y_Scale+.5) T=_transform ^ h� ================ r� 1.1 Copying |� ================ � �� �Copy(path%) �( � --------------------------------- � � �( � Makes copy of path or text object � � �) � ---------------------------------- � � _length%,_Path%,_i% � _length%=(path%!4) �6 � (!(�+4))-(!�)<_length%+1 � � 0,"Out of memory" �- !(�+4)-=4 : _Path%=!(�+4) : !_Path%=!� � � _i%=0 � _length%-4 � 4 � �Draw_AddWord(path%!_i%) � - : � 0,"Object to copy not text/path!" � &=_Path% 0 :� ================ D� 1.2 Affine N� ================ X b� �Transform(path,A(),b()) l� _Path v_Path=�Copy(!path) � �Transform(_Path,A(),b()) � =_Path � �� �Transform(path,A(),b()) �' � -------------------------------- � � � � Replaces path/text using � � X()=A().x()+b() � � �' � -------------------------------- � � _transform,_dx,_dy � Ȏ �ObjectType(path) � �* � 2 : �TransformPath(path,A(),b()) * � 12 : �TransformText(path,A(),b()) 3 : � 0,"Can't transform. Must be path/text." � � * 4"� �TransformPath(path,A(),b()) >� _path%,_Style%,_transform H(_transform=�CreateTransform(A(),b()) R1_path%=!path : _Style%=_path%!36 : _path%+=40 \4� (_Style% � (1<<7))<>0 � _path%+=4*(_path%!4)+8 f1ș "Draw_TransformPath",_path%,0,_transform,0 p�DrawPath(path) z� � �"� �TransformText(path,A(),b()) �)� _A(),_x(),_i%,_x%,_y%,_text$,_path% �_path%=!path �� _A(1,1),_x(1) �0_x(0)=(_path%!72-�Frame_x)/�X_Scale+�FRAME_x �0_x(1)=(_path%!76-�Frame_y)/�Y_Scale+�FRAME_y �=_A(0,0)=(_path%!24)/(1<<16) : _A(0,1)=(_path%!32)/(1<<16) �=_A(1,0)=(_path%!28)/(1<<16) : _A(1,1)=(_path%!36)/(1<<16) �!_x()=A()._x() : _x()=_x()+b() � _path%!72=�Draw_X(_x(0)) � _path%!76=�Draw_Y(_x(1)) � A()=A()._A() > _path%!24=�(A(0,0)*2^16+.5) : _path%!32=�(A(0,1)*2^16+.5) > _path%!28=�(A(1,0)*2^16+.5) : _path%!36=�(A(1,1)*2^16+.5) _i%=80 $= ȕ (_path%?_i%)<>0 : _text$+=�(_path%?_i%) : _i%+=1 : � .7 _x%=_path%!72 : _x%+=!(�+112) : _x%=400*(_x%>>8) 87 _y%=_path%!76 : _y%+=!(�+116) : _y%=400*(_y%>>8) B9 ș "Font_Paint",,_text$,%1000000,_x%,_y%,,_path%+24 L _path%!52=�FontColour V _path%!60=�CurrentFont ` _path%!64=�FontSize j _path%!68=�FontSize t� ~ �� ================ �� 1.3 Translation �� ================ � �� �Translate(path,dx,dy) �+ � ------------------------------------ � � � � Translates in (x,y) plane � � �+ � ------------------------------------ � � _A(),_b() �0 � _A(1,1),_b(1) : _A()=1,0,0,1 : _b()=dx,dy �Transform(path,_A(),_b()) � � �Translate(path,dx,dy) (� _Path% 2_Path%=�Copy(!path) <�Translate(_Path%,dx,dy) F=_Path% P Z� ================ d� 1.4 Magnify n� ================ x �� �Magnify(path,a,b,factor) �( � --------------------------------- � � Magnifies � � I.e. �' � - - - - �' � | a b | = m * | a b | �' � | c d | | c d | �' � - - - - �( � --------------------------------- � � _transform,_A(),_b() � � _A(1,1),_b(1) � a=a*(1-factor) � b=b*(1-factor) _A()=factor,0,0,factor _b()=a,b �Transform(path,_A(),_b()) " � , 6� �Magnify(path,a,b,factor) @� _Path% J_Path%=�Copy(!path) T�Magnify(_Path%,a,b,factor) ^=_Path% h r� =========== |� 1.5 Rotate �� =========== � �� �Rotate(path,a,b,angle) �( � --------------------------------- � � � � Creates a rotation � � �( � --------------------------------- �! � _transform,_A(),_b(),_c,_s � � _A(1,1),_b(1) � _c=� angle : _s=� angle �7 _A(0,0)=_c : _A(0,1)=-_s : _A(1,0)=_s : _A(1,1)=_c � _b(0)=a-_c*a+_s*b _b(1)=b-_s*a-_c*b �Transform(path,_A(),_b()) � & 0� �Rotate(path,a,b,angle) :� _Path% D_Path%=�Copy(!path) N�Rotate(_Path%,a,b,angle) X=_Path% b l� ================ v� 1.4 Tesselation �� ================ � � � �Tile(path,rows%,columns%) �' � -------------------------------- � � � � Tiles the path � � �' � -------------------------------- � � _i%,_j%,_Path,_dx,_dy � Ȏ �ObjectType(path) � � � 2 �% �Draw_BoundingBox(path,_dx,_dy) �) _dx=_dx/�X_Scale : _dy=_dy/�Y_Scale � _i%=0 � rows% � _j%=0 � columns% < � _i%+_j%<>0 � _Path=�Translate(path,_i%*_dx,_j%*_dy) � * � 4 >+ � 0,"Only path objects can be tiled." H � R � \ f p)� �Draw_BoundingBox(path,� dx%,� dy%) z=� _path%,_Style%,_xmin%,_xmax%,_ymin%,_ymax%,_i%,_length% �. _path%=!path : _length%=_path%+(_path%!4) �# _Style%=_path%!36 : _path%+=40 �5 � (_Style% � (1<<7))<>0 � _path%+=4*(_path%!4)+8 � _xmin%=2^30:_xmax%=-_xmin% � _ymin%=2^30:_ymax%=-_ymin% � _i%=_path% � � � Ȏ !_i% � � � 0,5 : � � 2,8 : �Draw_Bound �6 � 6 : �Draw_Bound : �Draw_Bound : �Draw_Bound �! : � 0,"Something wrong!" � � _i%+=4 � _i%>=_length% dx%=_xmax%-_xmin% $ dy%=_ymax%-_ymin% .� 8 B� �Draw_Bound L _i%+=4 V� !_i%<_xmin% � _xmin%=!_i% `� !_i%>_xmax% � _xmax%=!_i% j _i%+=4 t� !_i%<_ymin% � _ymin%=!_i% ~� !_i%>_ymax% � _ymax%=!_i% �� � � �
00000000 0d 00 0a 26 f4 20 3e 20 44 72 61 77 42 61 73 69 |...&. > DrawBasi| 00000010 63 3a 52 65 73 6f 75 72 63 65 73 2e 54 72 61 6e |c:Resources.Tran| 00000020 73 66 6f 72 6d 73 0d 00 14 04 0d 00 1e 3d f4 20 |sforms.......=. | 00000030 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| * 00000060 3d 3d 3d 3d 3d 3d 3d 0d 00 28 05 f4 0d 00 32 24 |=======..(....2$| 00000070 f4 20 63 6f 70 79 72 69 67 68 74 20 4a 6f 65 20 |. copyright Joe | 00000080 54 61 79 6c 6f 72 20 4a 75 6e 65 20 31 39 39 34 |Taylor June 1994| 00000090 0d 00 3c 05 f4 0d 00 46 3b f4 20 4e 2e 42 2e 20 |..<....F;. N.B. | 000000a0 46 6f 72 20 45 52 52 4f 52 20 54 48 52 4f 57 42 |For ERROR THROWB| 000000b0 41 43 4b 20 74 6f 20 77 6f 72 6b 20 54 68 65 20 |ACK to work The | 000000c0 66 69 72 73 74 20 6c 69 6e 65 20 61 62 6f 76 65 |first line above| 000000d0 0d 00 50 37 f4 20 20 20 20 20 20 4d 55 53 54 20 |..P7. MUST | 000000e0 68 61 76 65 20 74 68 65 20 63 6f 72 72 65 63 74 |have the correct| 000000f0 20 70 61 74 68 6e 61 6d 65 20 6f 66 20 74 68 69 | pathname of thi| 00000100 73 20 66 69 6c 65 2e 0d 00 5a 3b f4 20 20 20 20 |s file...Z;. | 00000110 20 20 49 66 20 79 6f 75 20 6d 6f 76 65 20 74 68 | If you move th| 00000120 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 |e location of th| 00000130 65 20 66 69 6c 65 20 72 65 6d 65 6d 62 65 72 20 |e file remember | 00000140 74 6f 0d 00 64 1f f4 20 20 20 20 20 20 61 6c 74 |to..d.. alt| 00000150 65 72 20 74 68 69 73 20 70 61 74 68 6e 61 6d 65 |er this pathname| 00000160 2e 0d 00 6e 05 f4 0d 00 78 3d f4 20 3d 3d 3d 3d |...n....x=. ====| 00000170 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| * 000001a0 3d 3d 3d 0d 00 82 04 0d 00 8c 1e f4 20 2a 2a 2a |===......... ***| 000001b0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 000001c0 2a 2a 2a 2a 2a 0d 00 96 05 f4 0d 00 a0 1a f4 20 |*****.......... | 000001d0 54 52 41 4e 53 46 4f 52 4d 53 20 26 20 4f 42 4a |TRANSFORMS & OBJ| 000001e0 45 43 54 53 0d 00 aa 05 f4 0d 00 b4 1e f4 20 2a |ECTS.......... *| 000001f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00000200 2a 2a 2a 2a 2a 2a 2a 0d 00 be 04 0d 00 c8 1b dd |*******.........| 00000210 20 a4 54 72 61 6e 73 66 6f 72 6d 53 74 6f 72 65 | .TransformStore| 00000220 3d 93 2b 31 38 34 0d 00 d2 04 0d 00 dc 1f dd 20 |=.+184......... | 00000230 a4 43 72 65 61 74 65 54 72 61 6e 73 66 6f 72 6d |.CreateTransform| 00000240 28 41 28 29 2c 62 28 29 29 0d 00 e6 1c ea 20 5f |(A(),b())..... _| 00000250 74 72 61 6e 73 66 6f 72 6d 2c 5f 61 2c 5f 62 2c |transform,_a,_b,| 00000260 5f 41 2c 5f 42 0d 00 f0 42 20 5f 61 3d a4 46 52 |_A,_B...B _a=.FR| 00000270 41 4d 45 5f 78 2d a4 46 72 61 6d 65 5f 78 2f a4 |AME_x-.Frame_x/.| 00000280 58 5f 53 63 61 6c 65 20 3a 20 5f 62 3d a4 46 52 |X_Scale : _b=.FR| 00000290 41 4d 45 5f 79 2d a4 46 72 61 6d 65 5f 79 2f a4 |AME_y-.Frame_y/.| 000002a0 59 5f 53 63 61 6c 65 0d 00 fa 23 20 5f 41 3d 62 |Y_Scale...# _A=b| 000002b0 28 30 29 2b 41 28 30 2c 30 29 2a 5f 61 2b 41 28 |(0)+A(0,0)*_a+A(| 000002c0 30 2c 31 29 2a 5f 62 2d 5f 61 0d 01 04 23 20 5f |0,1)*_b-_a...# _| 000002d0 42 3d 62 28 31 29 2b 41 28 31 2c 30 29 2a 5f 61 |B=b(1)+A(1,0)*_a| 000002e0 2b 41 28 31 2c 31 29 2a 5f 62 2d 5f 62 0d 01 0e |+A(1,1)*_b-_b...| 000002f0 1f 20 5f 74 72 61 6e 73 66 6f 72 6d 3d a4 54 72 |. _transform=.Tr| 00000300 61 6e 73 66 6f 72 6d 53 74 6f 72 65 0d 01 18 23 |ansformStore...#| 00000310 20 5f 74 72 61 6e 73 66 6f 72 6d 21 30 3d a8 28 | _transform!0=.(| 00000320 41 28 30 2c 30 29 2a 32 5e 31 36 2b 2e 35 29 0d |A(0,0)*2^16+.5).| 00000330 01 22 23 20 5f 74 72 61 6e 73 66 6f 72 6d 21 34 |."# _transform!4| 00000340 3d a8 28 41 28 31 2c 30 29 2a 32 5e 31 36 2b 2e |=.(A(1,0)*2^16+.| 00000350 35 29 0d 01 2c 23 20 5f 74 72 61 6e 73 66 6f 72 |5)..,# _transfor| 00000360 6d 21 38 3d a8 28 41 28 30 2c 31 29 2a 32 5e 31 |m!8=.(A(0,1)*2^1| 00000370 36 2b 2e 35 29 0d 01 36 24 20 5f 74 72 61 6e 73 |6+.5)..6$ _trans| 00000380 66 6f 72 6d 21 31 32 3d a8 28 41 28 31 2c 31 29 |form!12=.(A(1,1)| 00000390 2a 32 5e 31 36 2b 2e 35 29 0d 01 40 24 20 5f 74 |*2^16+.5)..@$ _t| 000003a0 72 61 6e 73 66 6f 72 6d 21 31 36 3d a8 28 5f 41 |ransform!16=.(_A| 000003b0 2a a4 58 5f 53 63 61 6c 65 2b 2e 35 29 0d 01 4a |*.X_Scale+.5)..J| 000003c0 24 20 5f 74 72 61 6e 73 66 6f 72 6d 21 32 30 3d |$ _transform!20=| 000003d0 a8 28 5f 42 2a a4 59 5f 53 63 61 6c 65 2b 2e 35 |.(_B*.Y_Scale+.5| 000003e0 29 0d 01 54 0f 3d 5f 74 72 61 6e 73 66 6f 72 6d |)..T.=_transform| 000003f0 0d 01 5e 04 0d 01 68 16 f4 20 3d 3d 3d 3d 3d 3d |..^...h.. ======| 00000400 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 01 72 11 f4 20 |==========..r.. | 00000410 31 2e 31 20 43 6f 70 79 69 6e 67 0d 01 7c 16 f4 |1.1 Copying..|..| 00000420 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ===============| 00000430 3d 0d 01 86 04 0d 01 90 12 dd 20 a4 43 6f 70 79 |=......... .Copy| 00000440 28 70 61 74 68 25 29 0d 01 9a 28 20 f4 20 2d 2d |(path%)...( . --| 00000450 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000460 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 00000470 01 a4 06 20 f4 0d 01 ae 28 20 f4 20 4d 61 6b 65 |... ....( . Make| 00000480 73 20 63 6f 70 79 20 6f 66 20 70 61 74 68 20 6f |s copy of path o| 00000490 72 20 74 65 78 74 20 6f 62 6a 65 63 74 0d 01 b8 |r text object...| 000004a0 06 20 f4 0d 01 c2 29 20 f4 20 2d 2d 2d 2d 2d 2d |. ....) . ------| 000004b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000004c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 01 cc 1a |------------....| 000004d0 20 ea 20 5f 6c 65 6e 67 74 68 25 2c 5f 50 61 74 | . _length%,_Pat| 000004e0 68 25 2c 5f 69 25 0d 01 d6 18 20 20 5f 6c 65 6e |h%,_i%.... _len| 000004f0 67 74 68 25 3d 28 70 61 74 68 25 21 34 29 0d 01 |gth%=(path%!4)..| 00000500 e0 36 20 20 e7 20 28 21 28 93 2b 34 29 29 2d 28 |.6 . (!(.+4))-(| 00000510 21 93 29 3c 5f 6c 65 6e 67 74 68 25 2b 31 20 8c |!.)<_length%+1 .| 00000520 20 85 20 30 2c 22 4f 75 74 20 6f 66 20 6d 65 6d | . 0,"Out of mem| 00000530 6f 72 79 22 0d 01 ea 2d 20 20 21 28 93 2b 34 29 |ory"...- !(.+4)| 00000540 2d 3d 34 20 3a 20 5f 50 61 74 68 25 3d 21 28 93 |-=4 : _Path%=!(.| 00000550 2b 34 29 20 3a 20 21 5f 50 61 74 68 25 3d 21 93 |+4) : !_Path%=!.| 00000560 20 0d 01 f4 1e 20 20 e3 20 5f 69 25 3d 30 20 b8 | .... . _i%=0 .| 00000570 20 5f 6c 65 6e 67 74 68 25 2d 34 20 88 20 34 0d | _length%-4 . 4.| 00000580 01 fe 1f 20 20 20 f2 44 72 61 77 5f 41 64 64 57 |... .Draw_AddW| 00000590 6f 72 64 28 70 61 74 68 25 21 5f 69 25 29 0d 02 |ord(path%!_i%)..| 000005a0 08 08 20 20 20 ed 0d 02 12 2d 20 20 7f 20 3a 20 |.. ....- . : | 000005b0 85 20 30 2c 22 4f 62 6a 65 63 74 20 74 6f 20 63 |. 0,"Object to c| 000005c0 6f 70 79 20 6e 6f 74 20 74 65 78 74 2f 70 61 74 |opy not text/pat| 000005d0 68 21 22 0d 02 1c 06 20 cb 0d 02 26 0b 3d 5f 50 |h!".... ...&.=_P| 000005e0 61 74 68 25 0d 02 30 04 0d 02 3a 16 f4 20 3d 3d |ath%..0...:.. ==| 000005f0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 02 |==============..| 00000600 44 10 f4 20 31 2e 32 20 41 66 66 69 6e 65 0d 02 |D.. 1.2 Affine..| 00000610 4e 16 f4 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |N.. ============| 00000620 3d 3d 3d 3d 0d 02 58 04 0d 02 62 1e dd 20 a4 54 |====..X...b.. .T| 00000630 72 61 6e 73 66 6f 72 6d 28 70 61 74 68 2c 41 28 |ransform(path,A(| 00000640 29 2c 62 28 29 29 0d 02 6c 0b ea 20 5f 50 61 74 |),b())..l.. _Pat| 00000650 68 0d 02 76 16 5f 50 61 74 68 3d a4 43 6f 70 79 |h..v._Path=.Copy| 00000660 28 21 70 61 74 68 29 0d 02 80 1e 20 f2 54 72 61 |(!path).... .Tra| 00000670 6e 73 66 6f 72 6d 28 5f 50 61 74 68 2c 41 28 29 |nsform(_Path,A()| 00000680 2c 62 28 29 29 0d 02 8a 0a 3d 5f 50 61 74 68 0d |,b())....=_Path.| 00000690 02 94 04 0d 02 9e 1e dd 20 f2 54 72 61 6e 73 66 |........ .Transf| 000006a0 6f 72 6d 28 70 61 74 68 2c 41 28 29 2c 62 28 29 |orm(path,A(),b()| 000006b0 29 0d 02 a8 27 20 f4 20 2d 2d 2d 2d 2d 2d 2d 2d |)...' . --------| 000006c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000006d0 2d 2d 2d 2d 2d 2d 2d 2d 0d 02 b2 06 20 f4 0d 02 |--------.... ...| 000006e0 bc 1f 20 f4 20 52 65 70 6c 61 63 65 73 20 70 61 |.. . Replaces pa| 000006f0 74 68 2f 74 65 78 74 20 75 73 69 6e 67 0d 02 c6 |th/text using...| 00000700 1c 20 f4 20 20 20 20 20 20 20 58 28 29 3d 41 28 |. . X()=A(| 00000710 29 2e 78 28 29 2b 62 28 29 0d 02 d0 06 20 f4 0d |).x()+b().... ..| 00000720 02 da 27 20 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |..' . ----------| 00000730 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000740 2d 2d 2d 2d 2d 2d 0d 02 e4 19 20 ea 20 5f 74 72 |------.... . _tr| 00000750 61 6e 73 66 6f 72 6d 2c 5f 64 78 2c 5f 64 79 0d |ansform,_dx,_dy.| 00000760 02 ee 1b 20 c8 8e 20 a4 4f 62 6a 65 63 74 54 79 |... .. .ObjectTy| 00000770 70 65 28 70 61 74 68 29 20 ca 0d 02 f8 2a 20 20 |pe(path) ....* | 00000780 c9 20 32 20 20 20 3a 20 f2 54 72 61 6e 73 66 6f |. 2 : .Transfo| 00000790 72 6d 50 61 74 68 28 70 61 74 68 2c 41 28 29 2c |rmPath(path,A(),| 000007a0 62 28 29 29 0d 03 02 2a 20 20 c9 20 31 32 20 20 |b())...* . 12 | 000007b0 3a 20 f2 54 72 61 6e 73 66 6f 72 6d 54 65 78 74 |: .TransformText| 000007c0 28 70 61 74 68 2c 41 28 29 2c 62 28 29 29 0d 03 |(path,A(),b())..| 000007d0 0c 33 20 20 7f 20 3a 20 85 20 30 2c 22 43 61 6e |.3 . : . 0,"Can| 000007e0 27 74 20 74 72 61 6e 73 66 6f 72 6d 2e 20 4d 75 |'t transform. Mu| 000007f0 73 74 20 62 65 20 70 61 74 68 2f 74 65 78 74 2e |st be path/text.| 00000800 22 0d 03 16 06 20 cb 0d 03 20 05 e1 0d 03 2a 04 |".... ... ....*.| 00000810 0d 03 34 22 dd 20 f2 54 72 61 6e 73 66 6f 72 6d |..4". .Transform| 00000820 50 61 74 68 28 70 61 74 68 2c 41 28 29 2c 62 28 |Path(path,A(),b(| 00000830 29 29 0d 03 3e 1f ea 20 5f 70 61 74 68 25 2c 5f |))..>.. _path%,_| 00000840 53 74 79 6c 65 25 2c 5f 74 72 61 6e 73 66 6f 72 |Style%,_transfor| 00000850 6d 0d 03 48 28 5f 74 72 61 6e 73 66 6f 72 6d 3d |m..H(_transform=| 00000860 a4 43 72 65 61 74 65 54 72 61 6e 73 66 6f 72 6d |.CreateTransform| 00000870 28 41 28 29 2c 62 28 29 29 0d 03 52 31 5f 70 61 |(A(),b())..R1_pa| 00000880 74 68 25 3d 21 70 61 74 68 20 3a 20 5f 53 74 79 |th%=!path : _Sty| 00000890 6c 65 25 3d 5f 70 61 74 68 25 21 33 36 20 3a 20 |le%=_path%!36 : | 000008a0 5f 70 61 74 68 25 2b 3d 34 30 0d 03 5c 34 e7 20 |_path%+=40..\4. | 000008b0 28 5f 53 74 79 6c 65 25 20 80 20 28 31 3c 3c 37 |(_Style% . (1<<7| 000008c0 29 29 3c 3e 30 20 8c 20 5f 70 61 74 68 25 2b 3d |))<>0 . _path%+=| 000008d0 34 2a 28 5f 70 61 74 68 25 21 34 29 2b 38 0d 03 |4*(_path%!4)+8..| 000008e0 66 31 c8 99 20 22 44 72 61 77 5f 54 72 61 6e 73 |f1.. "Draw_Trans| 000008f0 66 6f 72 6d 50 61 74 68 22 2c 5f 70 61 74 68 25 |formPath",_path%| 00000900 2c 30 2c 5f 74 72 61 6e 73 66 6f 72 6d 2c 30 0d |,0,_transform,0.| 00000910 03 70 13 f2 44 72 61 77 50 61 74 68 28 70 61 74 |.p..DrawPath(pat| 00000920 68 29 0d 03 7a 05 e1 0d 03 84 04 0d 03 8e 22 dd |h)..z.........".| 00000930 20 f2 54 72 61 6e 73 66 6f 72 6d 54 65 78 74 28 | .TransformText(| 00000940 70 61 74 68 2c 41 28 29 2c 62 28 29 29 0d 03 98 |path,A(),b())...| 00000950 29 ea 20 5f 41 28 29 2c 5f 78 28 29 2c 5f 69 25 |). _A(),_x(),_i%| 00000960 2c 5f 78 25 2c 5f 79 25 2c 5f 74 65 78 74 24 2c |,_x%,_y%,_text$,| 00000970 5f 70 61 74 68 25 0d 03 a2 10 5f 70 61 74 68 25 |_path%...._path%| 00000980 3d 21 70 61 74 68 0d 03 ac 13 de 20 5f 41 28 31 |=!path..... _A(1| 00000990 2c 31 29 2c 5f 78 28 31 29 0d 03 b6 30 5f 78 28 |,1),_x(1)...0_x(| 000009a0 30 29 3d 28 5f 70 61 74 68 25 21 37 32 2d a4 46 |0)=(_path%!72-.F| 000009b0 72 61 6d 65 5f 78 29 2f a4 58 5f 53 63 61 6c 65 |rame_x)/.X_Scale| 000009c0 2b a4 46 52 41 4d 45 5f 78 0d 03 c0 30 5f 78 28 |+.FRAME_x...0_x(| 000009d0 31 29 3d 28 5f 70 61 74 68 25 21 37 36 2d a4 46 |1)=(_path%!76-.F| 000009e0 72 61 6d 65 5f 79 29 2f a4 59 5f 53 63 61 6c 65 |rame_y)/.Y_Scale| 000009f0 2b a4 46 52 41 4d 45 5f 79 0d 03 ca 3d 5f 41 28 |+.FRAME_y...=_A(| 00000a00 30 2c 30 29 3d 28 5f 70 61 74 68 25 21 32 34 29 |0,0)=(_path%!24)| 00000a10 2f 28 31 3c 3c 31 36 29 20 3a 20 5f 41 28 30 2c |/(1<<16) : _A(0,| 00000a20 31 29 3d 28 5f 70 61 74 68 25 21 33 32 29 2f 28 |1)=(_path%!32)/(| 00000a30 31 3c 3c 31 36 29 0d 03 d4 3d 5f 41 28 31 2c 30 |1<<16)...=_A(1,0| 00000a40 29 3d 28 5f 70 61 74 68 25 21 32 38 29 2f 28 31 |)=(_path%!28)/(1| 00000a50 3c 3c 31 36 29 20 3a 20 5f 41 28 31 2c 31 29 3d |<<16) : _A(1,1)=| 00000a60 28 5f 70 61 74 68 25 21 33 36 29 2f 28 31 3c 3c |(_path%!36)/(1<<| 00000a70 31 36 29 0d 03 de 21 5f 78 28 29 3d 41 28 29 2e |16)...!_x()=A().| 00000a80 5f 78 28 29 20 3a 20 5f 78 28 29 3d 5f 78 28 29 |_x() : _x()=_x()| 00000a90 2b 62 28 29 0d 03 e8 1d 20 5f 70 61 74 68 25 21 |+b().... _path%!| 00000aa0 37 32 3d a4 44 72 61 77 5f 58 28 5f 78 28 30 29 |72=.Draw_X(_x(0)| 00000ab0 29 0d 03 f2 1d 20 5f 70 61 74 68 25 21 37 36 3d |).... _path%!76=| 00000ac0 a4 44 72 61 77 5f 59 28 5f 78 28 31 29 29 0d 03 |.Draw_Y(_x(1))..| 00000ad0 fc 11 20 41 28 29 3d 41 28 29 2e 5f 41 28 29 0d |.. A()=A()._A().| 00000ae0 04 06 3e 20 5f 70 61 74 68 25 21 32 34 3d a8 28 |..> _path%!24=.(| 00000af0 41 28 30 2c 30 29 2a 32 5e 31 36 2b 2e 35 29 20 |A(0,0)*2^16+.5) | 00000b00 3a 20 5f 70 61 74 68 25 21 33 32 3d a8 28 41 28 |: _path%!32=.(A(| 00000b10 30 2c 31 29 2a 32 5e 31 36 2b 2e 35 29 0d 04 10 |0,1)*2^16+.5)...| 00000b20 3e 20 5f 70 61 74 68 25 21 32 38 3d a8 28 41 28 |> _path%!28=.(A(| 00000b30 31 2c 30 29 2a 32 5e 31 36 2b 2e 35 29 20 3a 20 |1,0)*2^16+.5) : | 00000b40 5f 70 61 74 68 25 21 33 36 3d a8 28 41 28 31 2c |_path%!36=.(A(1,| 00000b50 31 29 2a 32 5e 31 36 2b 2e 35 29 0d 04 1a 0b 20 |1)*2^16+.5).... | 00000b60 5f 69 25 3d 38 30 0d 04 24 3d 20 20 c8 95 20 28 |_i%=80..$= .. (| 00000b70 5f 70 61 74 68 25 3f 5f 69 25 29 3c 3e 30 20 3a |_path%?_i%)<>0 :| 00000b80 20 5f 74 65 78 74 24 2b 3d bd 28 5f 70 61 74 68 | _text$+=.(_path| 00000b90 25 3f 5f 69 25 29 20 3a 20 5f 69 25 2b 3d 31 20 |%?_i%) : _i%+=1 | 00000ba0 3a 20 ce 0d 04 2e 37 20 20 5f 78 25 3d 5f 70 61 |: ....7 _x%=_pa| 00000bb0 74 68 25 21 37 32 20 3a 20 5f 78 25 2b 3d 21 28 |th%!72 : _x%+=!(| 00000bc0 93 2b 31 31 32 29 20 20 3a 20 5f 78 25 3d 34 30 |.+112) : _x%=40| 00000bd0 30 2a 28 5f 78 25 3e 3e 38 29 0d 04 38 37 20 20 |0*(_x%>>8)..87 | 00000be0 5f 79 25 3d 5f 70 61 74 68 25 21 37 36 20 3a 20 |_y%=_path%!76 : | 00000bf0 5f 79 25 2b 3d 21 28 93 2b 31 31 36 29 20 20 3a |_y%+=!(.+116) :| 00000c00 20 5f 79 25 3d 34 30 30 2a 28 5f 79 25 3e 3e 38 | _y%=400*(_y%>>8| 00000c10 29 0d 04 42 39 20 20 c8 99 20 22 46 6f 6e 74 5f |)..B9 .. "Font_| 00000c20 50 61 69 6e 74 22 2c 2c 5f 74 65 78 74 24 2c 25 |Paint",,_text$,%| 00000c30 31 30 30 30 30 30 30 2c 5f 78 25 2c 5f 79 25 2c |1000000,_x%,_y%,| 00000c40 2c 5f 70 61 74 68 25 2b 32 34 0d 04 4c 1b 20 20 |,_path%+24..L. | 00000c50 5f 70 61 74 68 25 21 35 32 3d a4 46 6f 6e 74 43 |_path%!52=.FontC| 00000c60 6f 6c 6f 75 72 0d 04 56 1c 20 20 5f 70 61 74 68 |olour..V. _path| 00000c70 25 21 36 30 3d a4 43 75 72 72 65 6e 74 46 6f 6e |%!60=.CurrentFon| 00000c80 74 0d 04 60 19 20 20 5f 70 61 74 68 25 21 36 34 |t..`. _path%!64| 00000c90 3d a4 46 6f 6e 74 53 69 7a 65 0d 04 6a 19 20 20 |=.FontSize..j. | 00000ca0 5f 70 61 74 68 25 21 36 38 3d a4 46 6f 6e 74 53 |_path%!68=.FontS| 00000cb0 69 7a 65 0d 04 74 05 e1 0d 04 7e 04 0d 04 88 16 |ize..t....~.....| 00000cc0 f4 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |. ==============| 00000cd0 3d 3d 0d 04 92 15 f4 20 31 2e 33 20 54 72 61 6e |==..... 1.3 Tran| 00000ce0 73 6c 61 74 69 6f 6e 0d 04 9c 16 f4 20 3d 3d 3d |slation..... ===| 00000cf0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 04 a6 |=============...| 00000d00 04 0d 04 b0 1c dd 20 f2 54 72 61 6e 73 6c 61 74 |...... .Translat| 00000d10 65 28 70 61 74 68 2c 64 78 2c 64 79 29 0d 04 ba |e(path,dx,dy)...| 00000d20 2b 20 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |+ . ------------| 00000d30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000d40 2d 2d 2d 2d 2d 2d 2d 2d 0d 04 c4 06 20 f4 0d 04 |--------.... ...| 00000d50 ce 20 20 f4 20 54 72 61 6e 73 6c 61 74 65 73 20 |. . Translates | 00000d60 69 6e 20 28 78 2c 79 29 20 70 6c 61 6e 65 0d 04 |in (x,y) plane..| 00000d70 d8 06 20 f4 0d 04 e2 2b 20 f4 20 2d 2d 2d 2d 2d |.. ....+ . -----| 00000d80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000d90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 00000da0 04 ec 10 20 ea 20 5f 41 28 29 2c 5f 62 28 29 0d |... . _A(),_b().| 00000db0 04 f6 30 20 de 20 5f 41 28 31 2c 31 29 2c 5f 62 |..0 . _A(1,1),_b| 00000dc0 28 31 29 20 3a 20 5f 41 28 29 3d 31 2c 30 2c 30 |(1) : _A()=1,0,0| 00000dd0 2c 31 20 3a 20 5f 62 28 29 3d 64 78 2c 64 79 0d |,1 : _b()=dx,dy.| 00000de0 05 00 1f 20 f2 54 72 61 6e 73 66 6f 72 6d 28 70 |... .Transform(p| 00000df0 61 74 68 2c 5f 41 28 29 2c 5f 62 28 29 29 0d 05 |ath,_A(),_b())..| 00000e00 0a 06 20 e1 0d 05 14 04 0d 05 1e 1c dd 20 a4 54 |.. .......... .T| 00000e10 72 61 6e 73 6c 61 74 65 28 70 61 74 68 2c 64 78 |ranslate(path,dx| 00000e20 2c 64 79 29 0d 05 28 0c ea 20 5f 50 61 74 68 25 |,dy)..(.. _Path%| 00000e30 0d 05 32 17 5f 50 61 74 68 25 3d a4 43 6f 70 79 |..2._Path%=.Copy| 00000e40 28 21 70 61 74 68 29 0d 05 3c 1c f2 54 72 61 6e |(!path)..<..Tran| 00000e50 73 6c 61 74 65 28 5f 50 61 74 68 25 2c 64 78 2c |slate(_Path%,dx,| 00000e60 64 79 29 0d 05 46 0b 3d 5f 50 61 74 68 25 0d 05 |dy)..F.=_Path%..| 00000e70 50 04 0d 05 5a 16 f4 20 3d 3d 3d 3d 3d 3d 3d 3d |P...Z.. ========| 00000e80 3d 3d 3d 3d 3d 3d 3d 3d 0d 05 64 11 f4 20 31 2e |========..d.. 1.| 00000e90 34 20 4d 61 67 6e 69 66 79 0d 05 6e 16 f4 20 3d |4 Magnify..n.. =| 00000ea0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d |===============.| 00000eb0 05 78 04 0d 05 82 1f dd 20 f2 4d 61 67 6e 69 66 |.x...... .Magnif| 00000ec0 79 28 70 61 74 68 2c 61 2c 62 2c 66 61 63 74 6f |y(path,a,b,facto| 00000ed0 72 29 0d 05 8c 28 20 f4 20 2d 2d 2d 2d 2d 2d 2d |r)...( . -------| 00000ee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000ef0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 05 96 10 20 f4 |----------.... .| 00000f00 20 4d 61 67 6e 69 66 69 65 73 0d 05 a0 0b 20 f4 | Magnifies.... .| 00000f10 20 49 2e 65 2e 0d 05 aa 27 20 f4 20 20 20 20 20 | I.e....' . | 00000f20 20 20 20 20 20 20 2d 20 20 20 20 20 2d 20 20 20 | - - | 00000f30 20 20 20 20 20 2d 20 20 20 20 20 2d 0d 05 b4 27 | - -...'| 00000f40 20 f4 20 20 20 20 20 20 20 20 20 20 20 7c 20 61 | . | a| 00000f50 20 62 20 7c 20 20 3d 20 6d 20 2a 20 7c 20 61 20 | b | = m * | a | 00000f60 62 20 7c 0d 05 be 27 20 f4 20 20 20 20 20 20 20 |b |...' . | 00000f70 20 20 20 20 7c 20 63 20 64 20 7c 20 20 20 20 20 | | c d | | 00000f80 20 20 20 7c 20 63 20 64 20 7c 0d 05 c8 27 20 f4 | | c d |...' .| 00000f90 20 20 20 20 20 20 20 20 20 20 20 2d 20 20 20 20 | - | 00000fa0 20 2d 20 20 20 20 20 20 20 20 2d 20 20 20 20 20 | - - | 00000fb0 2d 0d 05 d2 28 20 f4 20 2d 2d 2d 2d 2d 2d 2d 2d |-...( . --------| 00000fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000fd0 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 05 dc 1b 20 ea 20 |---------.... . | 00000fe0 5f 74 72 61 6e 73 66 6f 72 6d 2c 5f 41 28 29 2c |_transform,_A(),| 00000ff0 5f 62 28 29 0d 05 e6 14 20 de 20 5f 41 28 31 2c |_b().... . _A(1,| 00001000 31 29 2c 5f 62 28 31 29 0d 05 f0 13 20 61 3d 61 |1),_b(1).... a=a| 00001010 2a 28 31 2d 66 61 63 74 6f 72 29 0d 05 fa 13 20 |*(1-factor).... | 00001020 62 3d 62 2a 28 31 2d 66 61 63 74 6f 72 29 0d 06 |b=b*(1-factor)..| 00001030 04 1b 20 5f 41 28 29 3d 66 61 63 74 6f 72 2c 30 |.. _A()=factor,0| 00001040 2c 30 2c 66 61 63 74 6f 72 0d 06 0e 0d 20 5f 62 |,0,factor.... _b| 00001050 28 29 3d 61 2c 62 0d 06 18 1f 20 f2 54 72 61 6e |()=a,b.... .Tran| 00001060 73 66 6f 72 6d 28 70 61 74 68 2c 5f 41 28 29 2c |sform(path,_A(),| 00001070 5f 62 28 29 29 0d 06 22 06 20 e1 0d 06 2c 04 0d |_b())..". ...,..| 00001080 06 36 1f dd 20 a4 4d 61 67 6e 69 66 79 28 70 61 |.6.. .Magnify(pa| 00001090 74 68 2c 61 2c 62 2c 66 61 63 74 6f 72 29 0d 06 |th,a,b,factor)..| 000010a0 40 0c ea 20 5f 50 61 74 68 25 0d 06 4a 17 5f 50 |@.. _Path%..J._P| 000010b0 61 74 68 25 3d a4 43 6f 70 79 28 21 70 61 74 68 |ath%=.Copy(!path| 000010c0 29 0d 06 54 1f f2 4d 61 67 6e 69 66 79 28 5f 50 |)..T..Magnify(_P| 000010d0 61 74 68 25 2c 61 2c 62 2c 66 61 63 74 6f 72 29 |ath%,a,b,factor)| 000010e0 0d 06 5e 0b 3d 5f 50 61 74 68 25 0d 06 68 04 0d |..^.=_Path%..h..| 000010f0 06 72 11 f4 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |.r.. ===========| 00001100 0d 06 7c 10 f4 20 31 2e 35 20 52 6f 74 61 74 65 |..|.. 1.5 Rotate| 00001110 0d 06 86 11 f4 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |..... ==========| 00001120 3d 0d 06 90 04 0d 06 9a 1d dd 20 f2 52 6f 74 61 |=......... .Rota| 00001130 74 65 28 70 61 74 68 2c 61 2c 62 2c 61 6e 67 6c |te(path,a,b,angl| 00001140 65 29 0d 06 a4 28 20 f4 20 2d 2d 2d 2d 2d 2d 2d |e)...( . -------| 00001150 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00001160 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 06 ae 06 20 f4 |----------.... .| 00001170 0d 06 b8 19 20 f4 20 43 72 65 61 74 65 73 20 61 |.... . Creates a| 00001180 20 72 6f 74 61 74 69 6f 6e 0d 06 c2 06 20 f4 0d | rotation.... ..| 00001190 06 cc 28 20 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |..( . ----------| 000011a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000011b0 2d 2d 2d 2d 2d 2d 2d 0d 06 d6 21 20 ea 20 5f 74 |-------...! . _t| 000011c0 72 61 6e 73 66 6f 72 6d 2c 5f 41 28 29 2c 5f 62 |ransform,_A(),_b| 000011d0 28 29 2c 5f 63 2c 5f 73 0d 06 e0 14 20 de 20 5f |(),_c,_s.... . _| 000011e0 41 28 31 2c 31 29 2c 5f 62 28 31 29 0d 06 ea 1c |A(1,1),_b(1)....| 000011f0 20 5f 63 3d 9b 20 61 6e 67 6c 65 20 3a 20 5f 73 | _c=. angle : _s| 00001200 3d b5 20 61 6e 67 6c 65 0d 06 f4 37 20 5f 41 28 |=. angle...7 _A(| 00001210 30 2c 30 29 3d 5f 63 20 3a 20 5f 41 28 30 2c 31 |0,0)=_c : _A(0,1| 00001220 29 3d 2d 5f 73 20 3a 20 5f 41 28 31 2c 30 29 3d |)=-_s : _A(1,0)=| 00001230 5f 73 20 3a 20 5f 41 28 31 2c 31 29 3d 5f 63 0d |_s : _A(1,1)=_c.| 00001240 06 fe 16 20 5f 62 28 30 29 3d 61 2d 5f 63 2a 61 |... _b(0)=a-_c*a| 00001250 2b 5f 73 2a 62 0d 07 08 16 20 5f 62 28 31 29 3d |+_s*b.... _b(1)=| 00001260 62 2d 5f 73 2a 61 2d 5f 63 2a 62 0d 07 12 1f 20 |b-_s*a-_c*b.... | 00001270 f2 54 72 61 6e 73 66 6f 72 6d 28 70 61 74 68 2c |.Transform(path,| 00001280 5f 41 28 29 2c 5f 62 28 29 29 0d 07 1c 06 20 e1 |_A(),_b()).... .| 00001290 0d 07 26 04 0d 07 30 1d dd 20 a4 52 6f 74 61 74 |..&...0.. .Rotat| 000012a0 65 28 70 61 74 68 2c 61 2c 62 2c 61 6e 67 6c 65 |e(path,a,b,angle| 000012b0 29 0d 07 3a 0c ea 20 5f 50 61 74 68 25 0d 07 44 |)..:.. _Path%..D| 000012c0 17 5f 50 61 74 68 25 3d a4 43 6f 70 79 28 21 70 |._Path%=.Copy(!p| 000012d0 61 74 68 29 0d 07 4e 1d f2 52 6f 74 61 74 65 28 |ath)..N..Rotate(| 000012e0 5f 50 61 74 68 25 2c 61 2c 62 2c 61 6e 67 6c 65 |_Path%,a,b,angle| 000012f0 29 0d 07 58 0b 3d 5f 50 61 74 68 25 0d 07 62 04 |)..X.=_Path%..b.| 00001300 0d 07 6c 16 f4 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |..l.. ==========| 00001310 3d 3d 3d 3d 3d 3d 0d 07 76 15 f4 20 31 2e 34 20 |======..v.. 1.4 | 00001320 54 65 73 73 65 6c 61 74 69 6f 6e 0d 07 80 16 f4 |Tesselation.....| 00001330 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ===============| 00001340 3d 0d 07 8a 04 0d 07 94 20 dd 20 f2 54 69 6c 65 |=....... . .Tile| 00001350 28 70 61 74 68 2c 72 6f 77 73 25 2c 63 6f 6c 75 |(path,rows%,colu| 00001360 6d 6e 73 25 29 0d 07 9e 27 20 f4 20 2d 2d 2d 2d |mns%)...' . ----| 00001370 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00001380 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 07 a8 06 |------------....| 00001390 20 f4 0d 07 b2 15 20 f4 20 54 69 6c 65 73 20 74 | ..... . Tiles t| 000013a0 68 65 20 70 61 74 68 0d 07 bc 06 20 f4 0d 07 c6 |he path.... ....| 000013b0 27 20 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |' . ------------| 000013c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000013d0 2d 2d 2d 2d 0d 07 d0 1c 20 ea 20 5f 69 25 2c 5f |----.... . _i%,_| 000013e0 6a 25 2c 5f 50 61 74 68 2c 5f 64 78 2c 5f 64 79 |j%,_Path,_dx,_dy| 000013f0 0d 07 da 1b 20 c8 8e 20 a4 4f 62 6a 65 63 74 54 |.... .. .ObjectT| 00001400 79 70 65 28 70 61 74 68 29 20 ca 0d 07 e4 08 20 |ype(path) ..... | 00001410 c9 20 32 0d 07 ee 25 20 20 f2 44 72 61 77 5f 42 |. 2...% .Draw_B| 00001420 6f 75 6e 64 69 6e 67 42 6f 78 28 70 61 74 68 2c |oundingBox(path,| 00001430 5f 64 78 2c 5f 64 79 29 0d 07 f8 29 20 20 5f 64 |_dx,_dy)...) _d| 00001440 78 3d 5f 64 78 2f a4 58 5f 53 63 61 6c 65 20 3a |x=_dx/.X_Scale :| 00001450 20 5f 64 79 3d 5f 64 79 2f a4 59 5f 53 63 61 6c | _dy=_dy/.Y_Scal| 00001460 65 0d 08 02 15 20 20 e3 20 5f 69 25 3d 30 20 b8 |e.... . _i%=0 .| 00001470 20 72 6f 77 73 25 0d 08 0c 18 20 20 e3 20 5f 6a | rows%.... . _j| 00001480 25 3d 30 20 b8 20 63 6f 6c 75 6d 6e 73 25 0d 08 |%=0 . columns%..| 00001490 16 3c 20 20 20 e7 20 5f 69 25 2b 5f 6a 25 3c 3e |.< . _i%+_j%<>| 000014a0 30 20 8c 20 5f 50 61 74 68 3d a4 54 72 61 6e 73 |0 . _Path=.Trans| 000014b0 6c 61 74 65 28 70 61 74 68 2c 5f 69 25 2a 5f 64 |late(path,_i%*_d| 000014c0 78 2c 5f 6a 25 2a 5f 64 79 29 0d 08 20 08 20 20 |x,_j%*_dy).. . | 000014d0 20 ed 0d 08 2a 08 20 20 20 ed 0d 08 34 06 20 7f | ...*. ...4. .| 000014e0 0d 08 3e 2b 20 20 85 20 30 2c 22 4f 6e 6c 79 20 |..>+ . 0,"Only | 000014f0 70 61 74 68 20 6f 62 6a 65 63 74 73 20 63 61 6e |path objects can| 00001500 20 62 65 20 74 69 6c 65 64 2e 22 0d 08 48 06 20 | be tiled."..H. | 00001510 cb 0d 08 52 06 20 e1 0d 08 5c 04 0d 08 66 04 0d |...R. ...\...f..| 00001520 08 70 29 dd 20 f2 44 72 61 77 5f 42 6f 75 6e 64 |.p). .Draw_Bound| 00001530 69 6e 67 42 6f 78 28 70 61 74 68 2c f8 20 64 78 |ingBox(path,. dx| 00001540 25 2c f8 20 64 79 25 29 0d 08 7a 3d ea 20 5f 70 |%,. dy%)..z=. _p| 00001550 61 74 68 25 2c 5f 53 74 79 6c 65 25 2c 5f 78 6d |ath%,_Style%,_xm| 00001560 69 6e 25 2c 5f 78 6d 61 78 25 2c 5f 79 6d 69 6e |in%,_xmax%,_ymin| 00001570 25 2c 5f 79 6d 61 78 25 2c 5f 69 25 2c 5f 6c 65 |%,_ymax%,_i%,_le| 00001580 6e 67 74 68 25 0d 08 84 2e 20 5f 70 61 74 68 25 |ngth%.... _path%| 00001590 3d 21 70 61 74 68 20 3a 20 5f 6c 65 6e 67 74 68 |=!path : _length| 000015a0 25 3d 5f 70 61 74 68 25 2b 28 5f 70 61 74 68 25 |%=_path%+(_path%| 000015b0 21 34 29 0d 08 8e 23 20 5f 53 74 79 6c 65 25 3d |!4)...# _Style%=| 000015c0 5f 70 61 74 68 25 21 33 36 20 3a 20 5f 70 61 74 |_path%!36 : _pat| 000015d0 68 25 2b 3d 34 30 0d 08 98 35 20 e7 20 28 5f 53 |h%+=40...5 . (_S| 000015e0 74 79 6c 65 25 20 80 20 28 31 3c 3c 37 29 29 3c |tyle% . (1<<7))<| 000015f0 3e 30 20 8c 20 5f 70 61 74 68 25 2b 3d 34 2a 28 |>0 . _path%+=4*(| 00001600 5f 70 61 74 68 25 21 34 29 2b 38 0d 08 a2 1f 20 |_path%!4)+8.... | 00001610 5f 78 6d 69 6e 25 3d 32 5e 33 30 3a 5f 78 6d 61 |_xmin%=2^30:_xma| 00001620 78 25 3d 2d 5f 78 6d 69 6e 25 0d 08 ac 1f 20 5f |x%=-_xmin%.... _| 00001630 79 6d 69 6e 25 3d 32 5e 33 30 3a 5f 79 6d 61 78 |ymin%=2^30:_ymax| 00001640 25 3d 2d 5f 79 6d 69 6e 25 0d 08 b6 0f 20 5f 69 |%=-_ymin%.... _i| 00001650 25 3d 5f 70 61 74 68 25 0d 08 c0 06 20 f5 0d 08 |%=_path%.... ...| 00001660 ca 0f 20 20 c8 8e 20 21 5f 69 25 20 ca 0d 08 d4 |.. .. !_i% ....| 00001670 0e 20 20 20 c9 20 30 2c 35 20 3a 0d 08 de 1a 20 |. . 0,5 :.... | 00001680 20 20 c9 20 32 2c 38 20 3a 20 f2 44 72 61 77 5f | . 2,8 : .Draw_| 00001690 42 6f 75 6e 64 0d 08 e8 36 20 20 20 c9 20 36 20 |Bound...6 . 6 | 000016a0 20 20 3a 20 f2 44 72 61 77 5f 42 6f 75 6e 64 20 | : .Draw_Bound | 000016b0 3a 20 f2 44 72 61 77 5f 42 6f 75 6e 64 20 3a 20 |: .Draw_Bound : | 000016c0 f2 44 72 61 77 5f 42 6f 75 6e 64 0d 08 f2 21 20 |.Draw_Bound...! | 000016d0 20 20 7f 20 3a 20 85 20 30 2c 22 53 6f 6d 65 74 | . : . 0,"Somet| 000016e0 68 69 6e 67 20 77 72 6f 6e 67 21 22 0d 08 fc 07 |hing wrong!"....| 000016f0 20 20 cb 0d 09 06 0c 20 20 5f 69 25 2b 3d 34 0d | ..... _i%+=4.| 00001700 09 10 14 20 fd 20 5f 69 25 3e 3d 5f 6c 65 6e 67 |... . _i%>=_leng| 00001710 74 68 25 0d 09 1a 16 20 64 78 25 3d 5f 78 6d 61 |th%.... dx%=_xma| 00001720 78 25 2d 5f 78 6d 69 6e 25 0d 09 24 16 20 64 79 |x%-_xmin%..$. dy| 00001730 25 3d 5f 79 6d 61 78 25 2d 5f 79 6d 69 6e 25 0d |%=_ymax%-_ymin%.| 00001740 09 2e 05 e1 0d 09 38 04 0d 09 42 11 dd 20 f2 44 |......8...B.. .D| 00001750 72 61 77 5f 42 6f 75 6e 64 0d 09 4c 0a 5f 69 25 |raw_Bound..L._i%| 00001760 2b 3d 34 0d 09 56 1f e7 20 21 5f 69 25 3c 5f 78 |+=4..V.. !_i%<_x| 00001770 6d 69 6e 25 20 8c 20 5f 78 6d 69 6e 25 3d 21 5f |min% . _xmin%=!_| 00001780 69 25 0d 09 60 1f e7 20 21 5f 69 25 3e 5f 78 6d |i%..`.. !_i%>_xm| 00001790 61 78 25 20 8c 20 5f 78 6d 61 78 25 3d 21 5f 69 |ax% . _xmax%=!_i| 000017a0 25 0d 09 6a 0a 5f 69 25 2b 3d 34 0d 09 74 1f e7 |%..j._i%+=4..t..| 000017b0 20 21 5f 69 25 3c 5f 79 6d 69 6e 25 20 8c 20 5f | !_i%<_ymin% . _| 000017c0 79 6d 69 6e 25 3d 21 5f 69 25 0d 09 7e 1f e7 20 |ymin%=!_i%..~.. | 000017d0 21 5f 69 25 3e 5f 79 6d 61 78 25 20 8c 20 5f 79 |!_i%>_ymax% . _y| 000017e0 6d 61 78 25 3d 21 5f 69 25 0d 09 88 05 e1 0d 09 |max%=!_i%.......| 000017f0 92 04 0d 09 9c 04 0d ff |........| 000017f8