Home » Archimedes archive » Archimedes World » AW-1994-04-Disc1.adf » Disk1Apr94 » !AWApr94/Goodies/Basic/!PathLib/Library/OS_units/Draw

!AWApr94/Goodies/Basic/!PathLib/Library/OS_units/Draw

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-1994-04-Disc1.adf » Disk1Apr94
Filename: !AWApr94/Goodies/Basic/!PathLib/Library/OS_units/Draw
Read OK:
File size: 2E3A bytes
Load address: 0000
Exec address: 0000
File contents
    1REM > PathLib:OS_units.Draw
    2
    3REM *****************
    4REM
    5REM Creating Files
    6REM
    7REM ******************
    8
    9DEF FNDraw_CreateFile(program_name$,words%)
   10 REM -----------------------------
   11 REM
   12 REM Creates Draw File Header
   13 REM requires 40 bytes
   14 REM
   15 REM -----------------------------
   16 LOCAL i%
   17 DIM draw_file% 40+4*words%
   18 file_length%=draw_file%+40+4*words% : file_pointer%=draw_file%+4
   19 $draw_file%="Draw"      : REM Title
   20 PROCDraw_Add(201) : REM Major format version stamp
   21 PROCDraw_Add(0)   : REM Minor format version stamp
   22 REM Name of program creating the draw file     
   23     program_name$=LEFT$(program_name$,11)
   24     program_name$+=STRING$(11-LENprogram_name$," ")
   25     $(draw_file%+12)=program_name$
   26     file_pointer%+=12
   27 REM Bounding box     
   28     PROCDraw_BoundingBox(0,0,1280,1024)  
   29=draw_file%
   30
   31DEF PROCDraw_PathBegin(Fill_Colour%,Line_Colour%,Line_Width%,Style%)
   32 REM -----------------------------
   33 REM
   34 REM Creates Path Object File Header
   35 REM requires 80 bytes
   36 REM
   37 REM -----------------------------
   38 object%=file_pointer%
   39 PROCDraw_Add(2)                     : REM Path object is of type 2
   40 PROCDraw_Add(80)                    : REM Length of Path Object
   41 PROCDraw_BoundingBox(0,0,1280,1024) : REM Rectangle containing path
   42 PROCDraw_Add(Fill_Colour%)
   43 PROCDraw_Add(Line_Colour%)
   44 PROCDraw_Add(Line_Width%)
   45 PROCDraw_Add(Style%)
   46 ENDPROC
   47
   48DEF PROCDraw_PathEnd
   49 REM -----------------------------
   50 REM
   51 REM Closes Path Object
   52 REM
   53 REM -----------------------------
   54 LOCAL object_length%
   55 PROCDraw_Add(0)
   56 object_length%=file_pointer%-object%
   57 object%!4=object_length%
   58 ENDPROC
   59
   60  
   61REM ************************************************************************
   62REM
   63REM UTILITIES
   64REM
   65REM ************************************************************************
   66
   67DEF PROCDraw_Add(x%)
   68 REM ----------------------------------------------------------
   69 REM Adds word (4 bytes) x%
   70 REM to draw file
   71 REM
   72 REM N.B.
   73 REM   file_pointer% and file_length% are reserved variable names
   74 REM ---------------------------------------------------------
   75 IF file_pointer%>file_length% THEN ERROR 0,"File buffer too short"
   76 !file_pointer%=x%
   77 file_pointer%+=4
   78 ENDPROC
   79
   80DEF PROCDraw_BoundingBox(xmin%,ymin%,xmax%,ymax%)
   81  PROCDraw_Add(xmin%<<8)     : REM bottom left x
   82  PROCDraw_Add(ymin%<<8)     : REM bottom left y
   83  PROCDraw_Add(xmax%<<8)     : REM top right x
   84  PROCDraw_Add(ymax%<<8)     : REM top right y
   85ENDPROC
   86
   87DEF FNDraw_AddPath(path%,transform%)
   88LOCAL new_path%,bytes%
   89new_path%=file_pointer% : bytes%=new_path%-path% 
   90PROCDraw_Add(0) : PROCDraw_Add(0) : PROCDraw_Add(bytes%+8)
   91SYS "Draw_TransformPath",path%,new_path%+4,transform%
   92FOR file_pointer%=new_path% TO new_path%+bytes%-4 STEP 4
   93    file_pointer%!0=file_pointer%!4
   94    NEXT    
   95=new_path%
   96
   97DEF PROCDraw_AlterPath(path%,transform%)
   98PROCDraw_Add(0)
   99SYS "Draw_TransformPath",path%,0,transform%
  100file_pointer%-=4
  101ENDPROC    
  102
  103
  104REM -------
  105REM Saving
  106REM -------
  107
  108DEF PROCDraw_SaveToPipeFS(file_name$,draw_file%)
  109 LOCAL path$
  110 path$="Pipe:$."+file_name$
  111 OSCLI("SAVE "+path$+" "+STR$~draw_file%+" "+STR$~file_pointer%)
  112 OSCLI("SetType "+path$+" &AFF")
  113 OSCLI("Filer_OpenDir Pipe:$") 
  114ENDPROC
  115
  116DEF PROCDraw_SendToDraw(file_name$,draw_file%)
  117 LOCAL path$
  118 path$="Pipe:$."+file_name$
  119 SYS "Hourglass_On"
  120 OSCLI("SAVE "+path$+" "+STR$~draw_file%+" "+STR$~file_pointer%)
  121 OSCLI("SetType "+path$+" &AFF") 
  122 OSCLI("Filer_Run "+path$)
  123 SYS "Hourglass_Off" 
  124ENDPROC
  125
  126REM ************************************************************************
  127REM
  128REM SOME PATH ELEMENTS
  129REM
  130REM ************************************************************************
  131
  132
  133DEF PROCDraw_Move(x%,y%)
  134 REM ----------------------------------
  135 REM Move to x%,y% starting new subpath
  136 REM This DOES affect winding numbers
  137 REM so path is filled normally
  138 REM
  139 REM 3 words ( x 4 bytes)
  140 REM ----------------------------------
  141 PROCDraw_Add(2) : PROCDraw_Add(x%*256) : PROCDraw_Add(y%*256)
  142 ENDPROC
  143
  144DEF PROCDraw_Draw(x%,y%)
  145 REM -------------
  146 REM Line to (x,y)
  147 REM
  148 REM 3 words ( x 4 bytes)
  149 REM -------------
  150 PROCDraw_Add(8) : PROCDraw_Add(x%*256) : PROCDraw_Add(y%*256)
  151 ENDPROC
  152
  153DEF PROCDraw_Cubic(a%,b%,c%,d%,x%,y%)
  154 REM ---------------------------------------------------
  155 REM Cubic curve passing through current point and (x,y)
  156 REM with control points (a,b) and (c,d)
  157 REM
  158 REM 7 words ( x 4 bytes)
  159 REM ---------------------------------------------------
  160 PROCDraw_Add(6)
  161 PROCDraw_Add(a%*256) : PROCDraw_Add(b%*256)
  162 PROCDraw_Add(c%*256) : PROCDraw_Add(d%*256)
  163 PROCDraw_Add(x%*256) : PROCDraw_Add(y%*256)
  164 ENDPROC
  165 
  166DEF PROCDraw_CloseWithGap
  167 REM --------------------------------
  168 REM Close current subpath with a gap
  169 REM
  170 REM 1 word
  171 REM --------------------------------
  172 PROCDraw_Add(4)
  173 ENDPROC
  174
  175DEF PROCDraw_CloseWithLine
  176 REM ---------------------------------
  177 REM Close current subpath with a line
  178 REM
  179 REM 1 word
  180 REM ---------------------------------
  181 PROCDraw_Add(5)
  182 ENDPROC
  183
  184REM ************************************************************************
  185REM
  186REM SOME SUB-PATHS
  187REM
  188REM ************************************************************************
  189
  190DEF PROCDraw_HorizontalLine(x%,y%,length%)
  191 REM ---------------------------------
  192 REM Horizontal line staring at (x%,y%)
  193 REM of length length%
  194 REM
  195 REM 6 words
  196 REM ---------------------------------
  197 PROCDraw_Move(x%,y%)
  198 PROCDraw_Draw(x%+length%,y%)
  199 ENDPROC
  200 
  201DEF PROCDraw_Rectangle(x%,y%,width%,height%)
  202 REM ------------------------
  203 REM Rectangle centre (x%,y%)
  204 REM
  205 REM 13 words
  206 REM ------------------------
  207 LOCAL hx%,hy%
  208 hx%=width% DIV 2 : hy%=height% DIV 2
  209 PROCDraw_Move(x%+hx%,y%+hy%)
  210 PROCDraw_Draw(x%-hx%,y%+hy%)
  211 PROCDraw_Draw(x%-hx%,y%-hy%)
  212 PROCDraw_Draw(x%+hx%,y%-hy%)
  213 PROCDraw_CloseWithLine
  214 ENDPROC
  215
  216DEF PROCDraw_Square(x%,y%,width%)
  217 REM ------------------------
  218 REM Square centre (x%,y%)
  219 REM
  220 REM 13 words
  221 REM ------------------------
  222 PROCDraw_Rectangle(x%,y%,width%,width%)
  223 ENDPROC
  224
  225DEF PROCDraw_Triangle(A%,a%,B%,b%,C%,c%)
  226 REM ----------------------------
  227 REM Triangle  (A,a) (B,b) (C,c)
  228 REM
  229 REM 10 words
  230 REM ----------------------------
  231 PROCDraw_Move(A%,a%)
  232 PROCDraw_Draw(B%,b%)
  233 PROCDraw_Draw(C%,c%)
  234 PROCDraw_CloseWithLine
  235 ENDPROC
  236 
  237DEF PROCDraw_Cross(x%,y%,width%)
  238 REM ------------------------------
  239 REM 
  240 REM Cross centre (x,y)
  241 REM 
  242 REM 12 words
  243 REM ------------------------------
  244 PROCDraw_Move(x%-width%,y%) : PROCDraw_Draw(x%+width%,y%)
  245 PROCDraw_Move(x%,y%-width%) : PROCDraw_Draw(x%,y%+width%) 
  246 ENDPROC
  247 
  248DEF PROCDraw_RegularPolygon(x%,y%,radius%,n%)
  249 REM ------------------------------
  250 REM Regular polygon centre (x%,y%)
  251 REM
  252 REM Number of sides=n%
  253 REM
  254 REM 3*n%+1 words
  255 REM ------------------------------
  256 PROCDraw_Move(x%+radius%,y%)
  257 FOR i%=1 TO n%-1
  258  X%=x%+radius%*COS(2*PI*i%/n%)
  259  Y%=y%+radius%*SIN(2*PI*i%/n%)
  260  PROCDraw_Draw(X%,Y%)
  261  NEXT
  262 PROCDraw_CloseWithLine
  263 ENDPROC
  264
  265DEF PROCDraw_Circle(x%,y%,radius)
  266 REM ------------------------
  267 REM Circle centre (x%,y%)
  268 REM
  269 REM 32 words
  270 REM ------------------------
  271 LOCAL a : a=radius*4*(SQR2-1)/3 
  272 PROCDraw_Move(x%,y%+radius)
  273 PROCDraw_Cubic(x%+a,y%+radius,x%+radius,y%+a,x%+radius,y%)
  274 PROCDraw_Cubic(x%+radius,y%-a,x%+a,y%-radius,x%,y%-radius)
  275 PROCDraw_Cubic(x%-a,y%-radius,x%-radius,y%-a,x%-radius,y%)
  276 PROCDraw_Cubic(x%-radius,y%+a,x%-a,y%+radius,x%,y%+radius) 
  277 PROCDraw_CloseWithLine
  278 ENDPROC
  279
  280REM **********************************************************
  281REM **********************************************************
  282REM
  283REM PROCEDURES FOR CONTROLLING THE STYLE OF LINE DRAWING
  284REM
  285REM
  286REM **********************************************************
  287REM **********************************************************
  288
  289REM ***************************
  290REM ***************************
  291REM 
  292REM   JOIN STYLES 
  293REM
  294REM   I.e. How lines are joined 
  295REM 
  296REM ***************************
  297REM ***************************
  298
  299DEF PROCDraw_RoundJoins(RETURN style%)
  300 style%=(style% AND NOT%11) EOR %01
  301 ENDPROC
  302
  303DEF PROCDraw_BevelJoins(RETURN style%)
  304 style%=(style% AND NOT%11) EOR %10
  305 ENDPROC
  306
  307DEF PROCDraw_MitreJoins(RETURN style%)
  308 style%=(style% AND NOT%11) EOR %00
  309 ENDPROC
  310
  311REM ***************************
  312REM ***************************
  313REM 
  314REM   CAP STYLES 
  315REM
  316REM   I.e. How lines are ended 
  317REM 
  318REM ***************************
  319REM ***************************
  320
  321DEF PROCDraw_ButtTrailingCaps(RETURN style%)
  322  style%=(style% AND NOT%110000) EOR %000000
  323 ENDPROC
  324
  325DEF PROCDraw_ButtLeadingCaps(RETURN style%)
  326 style%=(style% AND NOT%1100) EOR %0000
  327 ENDPROC
  328 
  329DEF PROCDraw_RoundTrailingCaps(RETURN style%)
  330  style%=(style% AND NOT%110000) EOR %010000
  331 ENDPROC
  332
  333DEF PROCDraw_RoundLeadingCaps(RETURN style%)
  334  style%=(style% AND NOT%1100) EOR %0100
  335 ENDPROC
  336
  337DEF PROCDraw_SquareTrailingCaps(RETURN style%)
  338  style%=(style% AND NOT%110000) EOR %100000
  339 ENDPROC
  340
  341
  342DEF PROCDraw_SquareLeadingCaps(RETURN style%)
  343  style%=(style% AND NOT%1100) EOR %1000
  344 ENDPROC
  345 
  346DEF PROCDraw_TriangularTrailingCaps(RETURN style%,width,pointforward)
  347 REM --------------------------------------
  348 REM
  349 REM Draws triangular caps.
  350 REM
  351 REM N.B.  "width" and "pointforward" are
  352 REM       measured in terms of line width.
  353 REM
  354 REM
  355 REM                     |\    
  356 REM                  ===| >   
  357 REM                     |/
  358 REM
  359 REM
  360 REM E.g.  width=3 means that the cap will
  361 REM       be 3 line widths on either side
  362 REM                 
  363 REM --------------------------------------
  364 style%=(style% AND NOT%110000) EOR %110000
  365 style%=(style% AND NOT(&FF<<16)) EOR (INT(width*16))<<16
  366 style%=(style% AND NOT(&FF<<24)) EOR (INT(pointforward*16))<<24
  367 ENDPROC
  368
  369DEF PROCDraw_TriangularLeadingCaps(RETURN style%,width,pointbackward)
  370 REM --------------------------------------
  371 REM
  372 REM Draws triangular caps.
  373 REM
  374 REM N.B.  "width" and "pointbackward" are
  375 REM       measured in terms of line width.
  376 REM
  377 REM
  378 REM                 /|      
  379 REM                < |===   
  380 REM                 \|
  381 REM
  382 REM
  383 REM
  384 REM E.g.  width=3 means that the cap will
  385 REM       be 3 line widths on either side
  386 REM
  387 REM ---------------------------------------
  388 style%=(style% AND NOT%1100) EOR %1100
  389 style%=(style% AND NOT(&FF<<16)) EOR (INT(width*16))<<16
  390 style%=(style% AND NOT(&FF<<24)) EOR (INT(pointbackward*16))<<24               
  391 ENDPROC
  392
  393DEF PROCDraw_EvenWindingRule(RETURN style%)
  394 style%=(style% AND NOT%1000000) EOR %1000000
  395ENDPROC
  396
  397DEF PROCDraw_NonzeroWindingRule(RETURN style%)
  398 style%=(style% AND NOT%1000000) EOR %0000000
  399ENDPROC
  400
  401DEF PROCDraw_DashedLines(RETURN style%)
  402 style%=style% OR %10000000
  403ENDPROC
  404
  405REM ***************************
  406REM ***************************
  407REM 
  408REM   DASH PATTERNS 
  409REM
  410REM   I.e. Drawing dashed lines 
  411REM 
  412REM ***************************
  413REM ***************************
  414
  415
  416DEF PROCDraw_EquidistantDashPattern(length%)
  417 REM -----------------------------
  418 REM
  419 REM Equidistant Dash Pattern
  420 REM  
  421 REM          - - - - - - - -
  422 REM
  423 REM Each dash and space of length
  424 REM length% in OS units
  425 REM
  426 REM -----------------------------
  427 PROCDraw_Add(0) : PROCDraw_Add(1) : PROCDraw_Add(length%<<8)
  428 ENDPROC
  429
  430DEF PROCDraw_DashPattern(stroke_length%,move_length%)
  431 REM -----------------------------
  432 REM
  433 REM Non-equidistant Dash Pattern
  434 REM  
  435 REM  -- -- -- -- -- -- -- -- --
  436 REM
  437 REM Arguments in OS units
  438 REM
  439 REM -----------------------------
  440 PROCDraw_Add(0) : PROCDraw_Add(2)
  441 PROCDraw_Add(stroke_length%<<8) : PROCDraw_Add(move_length%<<8)
  442 ENDPROC
  443
  444DEF PROCDraw_DotDashPattern(stroke_length%)
  445 REM -----------------------------
  446 REM
  447 REM Non-equidistant Dash Pattern
  448 REM  
  449 REM  -- - -- - -- - -- - -- -
  450 REM
  451 REM Arguments in OS units
  452 REM
  453 REM -----------------------------
  454 PROCDraw_Add(0) : PROCDraw_Add(4)
  455 PROCDraw_Add(stroke_length%<<8)       : PROCDraw_Add((stroke_length%DIV2)<<8)
  456 PROCDraw_Add((stroke_length%DIV2)<<8) : PROCDraw_Add((stroke_length%DIV2)<<8)
  457 ENDPROC
  458
  459
� > PathLib:OS_units.Draw

� *****************
�
� Creating Files
�
� ******************

	,� �Draw_CreateFile(program_name$,words%)

$ � -----------------------------
 �
 � Creates Draw File Header

 � requires 40 bytes
 �
$ � -----------------------------
	 � i%
 � draw_file% 40+4*words%
E file_length%=draw_file%+40+4*words% : file_pointer%=draw_file%+4
& $draw_file%="Draw"      : � Title
2 �Draw_Add(201) : � Major format version stamp
2 �Draw_Add(0)   : � Minor format version stamp
2 � Name of program creating the draw file     
)     program_name$=�program_name$,11)
/     program_name$+=�11-�program_name$," ")
'     $(draw_file%+12)=program_name$
     file_pointer%+=12
 � Bounding box     
+     �Draw_BoundingBox(0,0,1280,1024)  
=draw_file%

C� �Draw_PathBegin(Fill_Colour%,Line_Colour%,Line_Width%,Style%)
 $ � -----------------------------
! �
"& � Creates Path Object File Header
# � requires 80 bytes
$ �
%$ � -----------------------------
& object%=file_pointer%
'B �Draw_Add(2)                     : � Path object is of type 2
(? �Draw_Add(80)                    : � Length of Path Object
)C �Draw_BoundingBox(0,0,1280,1024) : � Rectangle containing path
* �Draw_Add(Fill_Colour%)
+ �Draw_Add(Line_Colour%)
, �Draw_Add(Line_Width%)
- �Draw_Add(Style%)
. �
/
0� �Draw_PathEnd
1$ � -----------------------------
2 �
3 � Closes Path Object
4 �
5$ � -----------------------------
6 � object_length%
7 �Draw_Add(0)
8) object_length%=file_pointer%-object%
9 object%!4=object_length%
: �
;
<  
=N� ************************************************************************
>�
?� UTILITIES
@�
AN� ************************************************************************
B
C� �Draw_Add(x%)
DA � ----------------------------------------------------------
E � Adds word (4 bytes) x%
F � to draw file
G �
H � N.B.
IC �   file_pointer% and file_length% are reserved variable names
J@ � ---------------------------------------------------------
K? � file_pointer%>file_length% � � 0,"File buffer too short"
L !file_pointer%=x%
M file_pointer%+=4
N �
O
P0� �Draw_BoundingBox(xmin%,ymin%,xmax%,ymax%)
Q/  �Draw_Add(xmin%<<8)     : � bottom left x
R/  �Draw_Add(ymin%<<8)     : � bottom left y
S-  �Draw_Add(xmax%<<8)     : � top right x
T-  �Draw_Add(ymax%<<8)     : � top right y
U�
V
W%� �Draw_AddPath(path%,transform%)
X� new_path%,bytes%
Y5new_path%=file_pointer% : bytes%=new_path%-path% 
Z5�Draw_Add(0) : �Draw_Add(0) : �Draw_Add(bytes%+8)
[8ș "Draw_TransformPath",path%,new_path%+4,transform%
\6� file_pointer%=new_path% � new_path%+bytes%-4 � 4
]'    file_pointer%!0=file_pointer%!4
^
    �    
_=new_path%
`
a'� �Draw_AlterPath(path%,transform%)
b�Draw_Add(0)
c.ș "Draw_TransformPath",path%,0,transform%
dfile_pointer%-=4
e	�    
f
g
h
� -------
i� Saving
j
� -------
k
l/� �Draw_SaveToPipeFS(file_name$,draw_file%)
m � path$
n path$="Pipe:$."+file_name$
o: �("SAVE "+path$+" "+�~draw_file%+" "+�~file_pointer%)
p  �("SetType "+path$+" &AFF")
q �("Filer_OpenDir Pipe:$") 
r�
s
t-� �Draw_SendToDraw(file_name$,draw_file%)
u � path$
v path$="Pipe:$."+file_name$
w ș "Hourglass_On"
x: �("SAVE "+path$+" "+�~draw_file%+" "+�~file_pointer%)
y! �("SetType "+path$+" &AFF") 
z �("Filer_Run "+path$)
{ ș "Hourglass_Off" 
|�
}
~N� ************************************************************************
�
�� SOME PATH ELEMENTS
��
�N� ************************************************************************
�
�
�� �Draw_Move(x%,y%)
�) � ----------------------------------
�) � Move to x%,y% starting new subpath
�' � This DOES affect winding numbers
�! � so path is filled normally
� �
� � 3 words ( x 4 bytes)
�) � ----------------------------------
�9 �Draw_Add(2) : �Draw_Add(x%*256) : �Draw_Add(y%*256)
� �
�
�� �Draw_Draw(x%,y%)
� � -------------
� � Line to (x,y)
� �
� � 3 words ( x 4 bytes)
� � -------------
�9 �Draw_Add(8) : �Draw_Add(x%*256) : �Draw_Add(y%*256)
� �
�
�$� �Draw_Cubic(a%,b%,c%,d%,x%,y%)
�: � ---------------------------------------------------
�: � Cubic curve passing through current point and (x,y)
�* � with control points (a,b) and (c,d)
� �
� � 7 words ( x 4 bytes)
�: � ---------------------------------------------------
� �Draw_Add(6)
�* �Draw_Add(a%*256) : �Draw_Add(b%*256)
�* �Draw_Add(c%*256) : �Draw_Add(d%*256)
�* �Draw_Add(x%*256) : �Draw_Add(y%*256)
� �
� 
�� �Draw_CloseWithGap
�' � --------------------------------
�' � Close current subpath with a gap
� �
�
 � 1 word
�' � --------------------------------
� �Draw_Add(4)
� �
�
�� �Draw_CloseWithLine
�( � ---------------------------------
�( � Close current subpath with a line
� �
�
 � 1 word
�( � ---------------------------------
� �Draw_Add(5)
� �
�
�N� ************************************************************************
��
�� SOME SUB-PATHS
��
�N� ************************************************************************
�
�)� �Draw_HorizontalLine(x%,y%,length%)
�( � ---------------------------------
�) � Horizontal line staring at (x%,y%)
� � of length length%
� �
� � 6 words
�( � ---------------------------------
� �Draw_Move(x%,y%)
� �Draw_Draw(x%+length%,y%)
� �
� 
�+� �Draw_Rectangle(x%,y%,width%,height%)
� � ------------------------
� � Rectangle centre (x%,y%)
� �
� � 13 words
� � ------------------------
� � hx%,hy%
�% hx%=width% � 2 : hy%=height% � 2
� �Draw_Move(x%+hx%,y%+hy%)
� �Draw_Draw(x%-hx%,y%+hy%)
� �Draw_Draw(x%-hx%,y%-hy%)
� �Draw_Draw(x%+hx%,y%-hy%)
� �Draw_CloseWithLine
� �
�
� � �Draw_Square(x%,y%,width%)
� � ------------------------
� � Square centre (x%,y%)
� �
� � 13 words
� � ------------------------
�) �Draw_Rectangle(x%,y%,width%,width%)
� �
�
�'� �Draw_Triangle(A%,a%,B%,b%,C%,c%)
�# � ----------------------------
�" � Triangle  (A,a) (B,b) (C,c)
� �
� � 10 words
�# � ----------------------------
� �Draw_Move(A%,a%)
� �Draw_Draw(B%,b%)
� �Draw_Draw(C%,c%)
� �Draw_CloseWithLine
� �
� 
�� �Draw_Cross(x%,y%,width%)
�% � ------------------------------
� � 
� � Cross centre (x,y)
� � 
� � 12 words
�% � ------------------------------
�8 �Draw_Move(x%-width%,y%) : �Draw_Draw(x%+width%,y%)
�9 �Draw_Move(x%,y%-width%) : �Draw_Draw(x%,y%+width%) 
� �
� 
�,� �Draw_RegularPolygon(x%,y%,radius%,n%)
�% � ------------------------------
�% � Regular polygon centre (x%,y%)
� �
� � Number of sides=n%
� �
� � 3*n%+1 words
�% � ------------------------------
 �Draw_Move(x%+radius%,y%)
 � i%=1 � n%-1
   X%=x%+radius%*�(2*�*i%/n%)
   Y%=y%+radius%*�(2*�*i%/n%)
  �Draw_Draw(X%,Y%)
  �
 �Draw_CloseWithLine
 �

	 � �Draw_Circle(x%,y%,radius)

 � ------------------------
 � Circle centre (x%,y%)
 �

 � 32 words
 � ------------------------
 � a : a=radius*4*(�2-1)/3 
 �Draw_Move(x%,y%+radius)
< �Draw_Cubic(x%+a,y%+radius,x%+radius,y%+a,x%+radius,y%)
< �Draw_Cubic(x%+radius,y%-a,x%+a,y%-radius,x%,y%-radius)
< �Draw_Cubic(x%-a,y%-radius,x%-radius,y%-a,x%-radius,y%)
= �Draw_Cubic(x%-radius,y%+a,x%-a,y%+radius,x%,y%+radius) 
 �Draw_CloseWithLine
 �

@� **********************************************************
@� **********************************************************
�
:� PROCEDURES FOR CONTROLLING THE STYLE OF LINE DRAWING
�
�
@� **********************************************************
@� **********************************************************
 
!!� ***************************
"!� ***************************
#� 
$�   JOIN STYLES 
%�
&"�   I.e. How lines are joined 
'� 
(!� ***************************
)!� ***************************
*
+ � �Draw_RoundJoins(� style%)
,! style%=(style% � �%11) � %01
- �
.
/ � �Draw_BevelJoins(� style%)
0! style%=(style% � �%11) � %10
1 �
2
3 � �Draw_MitreJoins(� style%)
4! style%=(style% � �%11) � %00
5 �
6
7!� ***************************
8!� ***************************
9� 
:�   CAP STYLES 
;�
<!�   I.e. How lines are ended 
=� 
>!� ***************************
?!� ***************************
@
A&� �Draw_ButtTrailingCaps(� style%)
B*  style%=(style% � �%110000) � %000000
C �
D
E%� �Draw_ButtLeadingCaps(� style%)
F% style%=(style% � �%1100) � %0000
G �
H 
I'� �Draw_RoundTrailingCaps(� style%)
J*  style%=(style% � �%110000) � %010000
K �
L
M&� �Draw_RoundLeadingCaps(� style%)
N&  style%=(style% � �%1100) � %0100
O �
P
Q(� �Draw_SquareTrailingCaps(� style%)
R*  style%=(style% � �%110000) � %100000
S �
T
U
V'� �Draw_SquareLeadingCaps(� style%)
W&  style%=(style% � �%1100) � %1000
X �
Y 
Z?� �Draw_TriangularTrailingCaps(� style%,width,pointforward)
[- � --------------------------------------
\ �
] � Draws triangular caps.
^ �
_+ � N.B.  "width" and "pointforward" are
`- �       measured in terms of line width.
a �
b �
c! �                     |\    
d! �                  ===| >   
e �                     |/
f �
g �
h, � E.g.  width=3 means that the cap will
i, �       be 3 line widths on either side
j �                 
k- � --------------------------------------
l) style%=(style% � �%110000) � %110000
m5 style%=(style% � �(&FF<<16)) � (�(width*16))<<16
n< style%=(style% � �(&FF<<24)) � (�(pointforward*16))<<24
o �
p
q?� �Draw_TriangularLeadingCaps(� style%,width,pointbackward)
r- � --------------------------------------
s �
t � Draws triangular caps.
u �
v, � N.B.  "width" and "pointbackward" are
w- �       measured in terms of line width.
x �
y �
z �                 /|      
{ �                < |===   
| �                 \|
} �
~ �
 �
�, � E.g.  width=3 means that the cap will
�, �       be 3 line widths on either side
� �
�. � ---------------------------------------
�% style%=(style% � �%1100) � %1100
�5 style%=(style% � �(&FF<<16)) � (�(width*16))<<16
�L style%=(style% � �(&FF<<24)) � (�(pointbackward*16))<<24               
� �
�
�%� �Draw_EvenWindingRule(� style%)
�+ style%=(style% � �%1000000) � %1000000
��
�
�(� �Draw_NonzeroWindingRule(� style%)
�+ style%=(style% � �%1000000) � %0000000
��
�
�!� �Draw_DashedLines(� style%)
� style%=style% � %10000000
��
�
�!� ***************************
�!� ***************************
�� 
��   DASH PATTERNS 
��
�"�   I.e. Drawing dashed lines 
�� 
�!� ***************************
�!� ***************************
�
�
�+� �Draw_EquidistantDashPattern(length%)
�$ � -----------------------------
� �
� � Equidistant Dash Pattern
� �  
� �          - - - - - - - -
� �
�$ � Each dash and space of length
� � length% in OS units
� �
�$ � -----------------------------
�8 �Draw_Add(0) : �Draw_Add(1) : �Draw_Add(length%<<8)
� �
�
�4� �Draw_DashPattern(stroke_length%,move_length%)
�$ � -----------------------------
� �
�# � Non-equidistant Dash Pattern
� �  
�" �  -- -- -- -- -- -- -- -- --
� �
� � Arguments in OS units
� �
�$ � -----------------------------
�  �Draw_Add(0) : �Draw_Add(2)
�> �Draw_Add(stroke_length%<<8) : �Draw_Add(move_length%<<8)
� �
�
�*� �Draw_DotDashPattern(stroke_length%)
�$ � -----------------------------
� �
�# � Non-equidistant Dash Pattern
� �  
�  �  -- - -- - -- - -- - -- -
� �
� � Arguments in OS units
� �
�$ � -----------------------------
�  �Draw_Add(0) : �Draw_Add(4)
�J �Draw_Add(stroke_length%<<8)       : �Draw_Add((stroke_length%�2)<<8)
�H �Draw_Add((stroke_length%�2)<<8) : �Draw_Add((stroke_length%�2)<<8)
� �
�
�
�
00000000  0d 00 01 1d f4 20 3e 20  50 61 74 68 4c 69 62 3a  |..... > PathLib:|
00000010  4f 53 5f 75 6e 69 74 73  2e 44 72 61 77 0d 00 02  |OS_units.Draw...|
00000020  04 0d 00 03 17 f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |...... *********|
00000030  2a 2a 2a 2a 2a 2a 2a 2a  0d 00 04 05 f4 0d 00 05  |********........|
00000040  14 f4 20 43 72 65 61 74  69 6e 67 20 46 69 6c 65  |.. Creating File|
00000050  73 0d 00 06 05 f4 0d 00  07 18 f4 20 2a 2a 2a 2a  |s.......... ****|
00000060  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 00  |**************..|
00000070  08 04 0d 00 09 2c dd 20  a4 44 72 61 77 5f 43 72  |.....,. .Draw_Cr|
00000080  65 61 74 65 46 69 6c 65  28 70 72 6f 67 72 61 6d  |eateFile(program|
00000090  5f 6e 61 6d 65 24 2c 77  6f 72 64 73 25 29 0d 00  |_name$,words%)..|
000000a0  0a 24 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.$ . -----------|
000000b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000000c0  2d 2d 0d 00 0b 06 20 f4  0d 00 0c 1f 20 f4 20 43  |--.... ..... . C|
000000d0  72 65 61 74 65 73 20 44  72 61 77 20 46 69 6c 65  |reates Draw File|
000000e0  20 48 65 61 64 65 72 0d  00 0d 18 20 f4 20 72 65  | Header.... . re|
000000f0  71 75 69 72 65 73 20 34  30 20 62 79 74 65 73 0d  |quires 40 bytes.|
00000100  00 0e 06 20 f4 0d 00 0f  24 20 f4 20 2d 2d 2d 2d  |... ....$ . ----|
00000110  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000120  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 00 10 09 20 ea 20  |---------.... . |
00000130  69 25 0d 00 11 1d 20 de  20 64 72 61 77 5f 66 69  |i%.... . draw_fi|
00000140  6c 65 25 20 34 30 2b 34  2a 77 6f 72 64 73 25 0d  |le% 40+4*words%.|
00000150  00 12 45 20 66 69 6c 65  5f 6c 65 6e 67 74 68 25  |..E file_length%|
00000160  3d 64 72 61 77 5f 66 69  6c 65 25 2b 34 30 2b 34  |=draw_file%+40+4|
00000170  2a 77 6f 72 64 73 25 20  3a 20 66 69 6c 65 5f 70  |*words% : file_p|
00000180  6f 69 6e 74 65 72 25 3d  64 72 61 77 5f 66 69 6c  |ointer%=draw_fil|
00000190  65 25 2b 34 0d 00 13 26  20 24 64 72 61 77 5f 66  |e%+4...& $draw_f|
000001a0  69 6c 65 25 3d 22 44 72  61 77 22 20 20 20 20 20  |ile%="Draw"     |
000001b0  20 3a 20 f4 20 54 69 74  6c 65 0d 00 14 32 20 f2  | : . Title...2 .|
000001c0  44 72 61 77 5f 41 64 64  28 32 30 31 29 20 3a 20  |Draw_Add(201) : |
000001d0  f4 20 4d 61 6a 6f 72 20  66 6f 72 6d 61 74 20 76  |. Major format v|
000001e0  65 72 73 69 6f 6e 20 73  74 61 6d 70 0d 00 15 32  |ersion stamp...2|
000001f0  20 f2 44 72 61 77 5f 41  64 64 28 30 29 20 20 20  | .Draw_Add(0)   |
00000200  3a 20 f4 20 4d 69 6e 6f  72 20 66 6f 72 6d 61 74  |: . Minor format|
00000210  20 76 65 72 73 69 6f 6e  20 73 74 61 6d 70 0d 00  | version stamp..|
00000220  16 32 20 f4 20 4e 61 6d  65 20 6f 66 20 70 72 6f  |.2 . Name of pro|
00000230  67 72 61 6d 20 63 72 65  61 74 69 6e 67 20 74 68  |gram creating th|
00000240  65 20 64 72 61 77 20 66  69 6c 65 20 20 20 20 20  |e draw file     |
00000250  0d 00 17 29 20 20 20 20  20 70 72 6f 67 72 61 6d  |...)     program|
00000260  5f 6e 61 6d 65 24 3d c0  70 72 6f 67 72 61 6d 5f  |_name$=.program_|
00000270  6e 61 6d 65 24 2c 31 31  29 0d 00 18 2f 20 20 20  |name$,11).../   |
00000280  20 20 70 72 6f 67 72 61  6d 5f 6e 61 6d 65 24 2b  |  program_name$+|
00000290  3d c4 31 31 2d a9 70 72  6f 67 72 61 6d 5f 6e 61  |=.11-.program_na|
000002a0  6d 65 24 2c 22 20 22 29  0d 00 19 27 20 20 20 20  |me$," ")...'    |
000002b0  20 24 28 64 72 61 77 5f  66 69 6c 65 25 2b 31 32  | $(draw_file%+12|
000002c0  29 3d 70 72 6f 67 72 61  6d 5f 6e 61 6d 65 24 0d  |)=program_name$.|
000002d0  00 1a 1a 20 20 20 20 20  66 69 6c 65 5f 70 6f 69  |...     file_poi|
000002e0  6e 74 65 72 25 2b 3d 31  32 0d 00 1b 18 20 f4 20  |nter%+=12.... . |
000002f0  42 6f 75 6e 64 69 6e 67  20 62 6f 78 20 20 20 20  |Bounding box    |
00000300  20 0d 00 1c 2b 20 20 20  20 20 f2 44 72 61 77 5f  | ...+     .Draw_|
00000310  42 6f 75 6e 64 69 6e 67  42 6f 78 28 30 2c 30 2c  |BoundingBox(0,0,|
00000320  31 32 38 30 2c 31 30 32  34 29 20 20 0d 00 1d 0f  |1280,1024)  ....|
00000330  3d 64 72 61 77 5f 66 69  6c 65 25 0d 00 1e 04 0d  |=draw_file%.....|
00000340  00 1f 43 dd 20 f2 44 72  61 77 5f 50 61 74 68 42  |..C. .Draw_PathB|
00000350  65 67 69 6e 28 46 69 6c  6c 5f 43 6f 6c 6f 75 72  |egin(Fill_Colour|
00000360  25 2c 4c 69 6e 65 5f 43  6f 6c 6f 75 72 25 2c 4c  |%,Line_Colour%,L|
00000370  69 6e 65 5f 57 69 64 74  68 25 2c 53 74 79 6c 65  |ine_Width%,Style|
00000380  25 29 0d 00 20 24 20 f4  20 2d 2d 2d 2d 2d 2d 2d  |%).. $ . -------|
00000390  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000003a0  2d 2d 2d 2d 2d 2d 0d 00  21 06 20 f4 0d 00 22 26  |------..!. ..."&|
000003b0  20 f4 20 43 72 65 61 74  65 73 20 50 61 74 68 20  | . Creates Path |
000003c0  4f 62 6a 65 63 74 20 46  69 6c 65 20 48 65 61 64  |Object File Head|
000003d0  65 72 0d 00 23 18 20 f4  20 72 65 71 75 69 72 65  |er..#. . require|
000003e0  73 20 38 30 20 62 79 74  65 73 0d 00 24 06 20 f4  |s 80 bytes..$. .|
000003f0  0d 00 25 24 20 f4 20 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..%$ . ---------|
00000400  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000410  2d 2d 2d 2d 0d 00 26 1a  20 6f 62 6a 65 63 74 25  |----..&. object%|
00000420  3d 66 69 6c 65 5f 70 6f  69 6e 74 65 72 25 0d 00  |=file_pointer%..|
00000430  27 42 20 f2 44 72 61 77  5f 41 64 64 28 32 29 20  |'B .Draw_Add(2) |
00000440  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000450  20 20 20 20 3a 20 f4 20  50 61 74 68 20 6f 62 6a  |    : . Path obj|
00000460  65 63 74 20 69 73 20 6f  66 20 74 79 70 65 20 32  |ect is of type 2|
00000470  0d 00 28 3f 20 f2 44 72  61 77 5f 41 64 64 28 38  |..(? .Draw_Add(8|
00000480  30 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0)              |
00000490  20 20 20 20 20 20 3a 20  f4 20 4c 65 6e 67 74 68  |      : . Length|
000004a0  20 6f 66 20 50 61 74 68  20 4f 62 6a 65 63 74 0d  | of Path Object.|
000004b0  00 29 43 20 f2 44 72 61  77 5f 42 6f 75 6e 64 69  |.)C .Draw_Boundi|
000004c0  6e 67 42 6f 78 28 30 2c  30 2c 31 32 38 30 2c 31  |ngBox(0,0,1280,1|
000004d0  30 32 34 29 20 3a 20 f4  20 52 65 63 74 61 6e 67  |024) : . Rectang|
000004e0  6c 65 20 63 6f 6e 74 61  69 6e 69 6e 67 20 70 61  |le containing pa|
000004f0  74 68 0d 00 2a 1c 20 f2  44 72 61 77 5f 41 64 64  |th..*. .Draw_Add|
00000500  28 46 69 6c 6c 5f 43 6f  6c 6f 75 72 25 29 0d 00  |(Fill_Colour%)..|
00000510  2b 1c 20 f2 44 72 61 77  5f 41 64 64 28 4c 69 6e  |+. .Draw_Add(Lin|
00000520  65 5f 43 6f 6c 6f 75 72  25 29 0d 00 2c 1b 20 f2  |e_Colour%)..,. .|
00000530  44 72 61 77 5f 41 64 64  28 4c 69 6e 65 5f 57 69  |Draw_Add(Line_Wi|
00000540  64 74 68 25 29 0d 00 2d  16 20 f2 44 72 61 77 5f  |dth%)..-. .Draw_|
00000550  41 64 64 28 53 74 79 6c  65 25 29 0d 00 2e 06 20  |Add(Style%).... |
00000560  e1 0d 00 2f 04 0d 00 30  13 dd 20 f2 44 72 61 77  |.../...0.. .Draw|
00000570  5f 50 61 74 68 45 6e 64  0d 00 31 24 20 f4 20 2d  |_PathEnd..1$ . -|
00000580  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000590  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 32 06  |------------..2.|
000005a0  20 f4 0d 00 33 19 20 f4  20 43 6c 6f 73 65 73 20  | ...3. . Closes |
000005b0  50 61 74 68 20 4f 62 6a  65 63 74 0d 00 34 06 20  |Path Object..4. |
000005c0  f4 0d 00 35 24 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |...5$ . --------|
000005d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000005e0  2d 2d 2d 2d 2d 0d 00 36  15 20 ea 20 6f 62 6a 65  |-----..6. . obje|
000005f0  63 74 5f 6c 65 6e 67 74  68 25 0d 00 37 11 20 f2  |ct_length%..7. .|
00000600  44 72 61 77 5f 41 64 64  28 30 29 0d 00 38 29 20  |Draw_Add(0)..8) |
00000610  6f 62 6a 65 63 74 5f 6c  65 6e 67 74 68 25 3d 66  |object_length%=f|
00000620  69 6c 65 5f 70 6f 69 6e  74 65 72 25 2d 6f 62 6a  |ile_pointer%-obj|
00000630  65 63 74 25 0d 00 39 1d  20 6f 62 6a 65 63 74 25  |ect%..9. object%|
00000640  21 34 3d 6f 62 6a 65 63  74 5f 6c 65 6e 67 74 68  |!4=object_length|
00000650  25 0d 00 3a 06 20 e1 0d  00 3b 04 0d 00 3c 06 20  |%..:. ...;...<. |
00000660  20 0d 00 3d 4e f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ..=N. *********|
00000670  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000006a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
000006b0  00 3e 05 f4 0d 00 3f 0f  f4 20 55 54 49 4c 49 54  |.>....?.. UTILIT|
000006c0  49 45 53 0d 00 40 05 f4  0d 00 41 4e f4 20 2a 2a  |IES..@....AN. **|
000006d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000710  2a 2a 2a 2a 2a 2a 0d 00  42 04 0d 00 43 13 dd 20  |******..B...C.. |
00000720  f2 44 72 61 77 5f 41 64  64 28 78 25 29 0d 00 44  |.Draw_Add(x%)..D|
00000730  41 20 f4 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |A . ------------|
00000740  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000760  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 00  |--------------..|
00000770  45 1d 20 f4 20 41 64 64  73 20 77 6f 72 64 20 28  |E. . Adds word (|
00000780  34 20 62 79 74 65 73 29  20 78 25 0d 00 46 13 20  |4 bytes) x%..F. |
00000790  f4 20 74 6f 20 64 72 61  77 20 66 69 6c 65 0d 00  |. to draw file..|
000007a0  47 06 20 f4 0d 00 48 0b  20 f4 20 4e 2e 42 2e 0d  |G. ...H. . N.B..|
000007b0  00 49 43 20 f4 20 20 20  66 69 6c 65 5f 70 6f 69  |.IC .   file_poi|
000007c0  6e 74 65 72 25 20 61 6e  64 20 66 69 6c 65 5f 6c  |nter% and file_l|
000007d0  65 6e 67 74 68 25 20 61  72 65 20 72 65 73 65 72  |ength% are reser|
000007e0  76 65 64 20 76 61 72 69  61 62 6c 65 20 6e 61 6d  |ved variable nam|
000007f0  65 73 0d 00 4a 40 20 f4  20 2d 2d 2d 2d 2d 2d 2d  |es..J@ . -------|
00000800  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000830  2d 2d 0d 00 4b 3f 20 e7  20 66 69 6c 65 5f 70 6f  |--..K? . file_po|
00000840  69 6e 74 65 72 25 3e 66  69 6c 65 5f 6c 65 6e 67  |inter%>file_leng|
00000850  74 68 25 20 8c 20 85 20  30 2c 22 46 69 6c 65 20  |th% . . 0,"File |
00000860  62 75 66 66 65 72 20 74  6f 6f 20 73 68 6f 72 74  |buffer too short|
00000870  22 0d 00 4c 16 20 21 66  69 6c 65 5f 70 6f 69 6e  |"..L. !file_poin|
00000880  74 65 72 25 3d 78 25 0d  00 4d 15 20 66 69 6c 65  |ter%=x%..M. file|
00000890  5f 70 6f 69 6e 74 65 72  25 2b 3d 34 0d 00 4e 06  |_pointer%+=4..N.|
000008a0  20 e1 0d 00 4f 04 0d 00  50 30 dd 20 f2 44 72 61  | ...O...P0. .Dra|
000008b0  77 5f 42 6f 75 6e 64 69  6e 67 42 6f 78 28 78 6d  |w_BoundingBox(xm|
000008c0  69 6e 25 2c 79 6d 69 6e  25 2c 78 6d 61 78 25 2c  |in%,ymin%,xmax%,|
000008d0  79 6d 61 78 25 29 0d 00  51 2f 20 20 f2 44 72 61  |ymax%)..Q/  .Dra|
000008e0  77 5f 41 64 64 28 78 6d  69 6e 25 3c 3c 38 29 20  |w_Add(xmin%<<8) |
000008f0  20 20 20 20 3a 20 f4 20  62 6f 74 74 6f 6d 20 6c  |    : . bottom l|
00000900  65 66 74 20 78 0d 00 52  2f 20 20 f2 44 72 61 77  |eft x..R/  .Draw|
00000910  5f 41 64 64 28 79 6d 69  6e 25 3c 3c 38 29 20 20  |_Add(ymin%<<8)  |
00000920  20 20 20 3a 20 f4 20 62  6f 74 74 6f 6d 20 6c 65  |   : . bottom le|
00000930  66 74 20 79 0d 00 53 2d  20 20 f2 44 72 61 77 5f  |ft y..S-  .Draw_|
00000940  41 64 64 28 78 6d 61 78  25 3c 3c 38 29 20 20 20  |Add(xmax%<<8)   |
00000950  20 20 3a 20 f4 20 74 6f  70 20 72 69 67 68 74 20  |  : . top right |
00000960  78 0d 00 54 2d 20 20 f2  44 72 61 77 5f 41 64 64  |x..T-  .Draw_Add|
00000970  28 79 6d 61 78 25 3c 3c  38 29 20 20 20 20 20 3a  |(ymax%<<8)     :|
00000980  20 f4 20 74 6f 70 20 72  69 67 68 74 20 79 0d 00  | . top right y..|
00000990  55 05 e1 0d 00 56 04 0d  00 57 25 dd 20 a4 44 72  |U....V...W%. .Dr|
000009a0  61 77 5f 41 64 64 50 61  74 68 28 70 61 74 68 25  |aw_AddPath(path%|
000009b0  2c 74 72 61 6e 73 66 6f  72 6d 25 29 0d 00 58 16  |,transform%)..X.|
000009c0  ea 20 6e 65 77 5f 70 61  74 68 25 2c 62 79 74 65  |. new_path%,byte|
000009d0  73 25 0d 00 59 35 6e 65  77 5f 70 61 74 68 25 3d  |s%..Y5new_path%=|
000009e0  66 69 6c 65 5f 70 6f 69  6e 74 65 72 25 20 3a 20  |file_pointer% : |
000009f0  62 79 74 65 73 25 3d 6e  65 77 5f 70 61 74 68 25  |bytes%=new_path%|
00000a00  2d 70 61 74 68 25 20 0d  00 5a 35 f2 44 72 61 77  |-path% ..Z5.Draw|
00000a10  5f 41 64 64 28 30 29 20  3a 20 f2 44 72 61 77 5f  |_Add(0) : .Draw_|
00000a20  41 64 64 28 30 29 20 3a  20 f2 44 72 61 77 5f 41  |Add(0) : .Draw_A|
00000a30  64 64 28 62 79 74 65 73  25 2b 38 29 0d 00 5b 38  |dd(bytes%+8)..[8|
00000a40  c8 99 20 22 44 72 61 77  5f 54 72 61 6e 73 66 6f  |.. "Draw_Transfo|
00000a50  72 6d 50 61 74 68 22 2c  70 61 74 68 25 2c 6e 65  |rmPath",path%,ne|
00000a60  77 5f 70 61 74 68 25 2b  34 2c 74 72 61 6e 73 66  |w_path%+4,transf|
00000a70  6f 72 6d 25 0d 00 5c 36  e3 20 66 69 6c 65 5f 70  |orm%..\6. file_p|
00000a80  6f 69 6e 74 65 72 25 3d  6e 65 77 5f 70 61 74 68  |ointer%=new_path|
00000a90  25 20 b8 20 6e 65 77 5f  70 61 74 68 25 2b 62 79  |% . new_path%+by|
00000aa0  74 65 73 25 2d 34 20 88  20 34 0d 00 5d 27 20 20  |tes%-4 . 4..]'  |
00000ab0  20 20 66 69 6c 65 5f 70  6f 69 6e 74 65 72 25 21  |  file_pointer%!|
00000ac0  30 3d 66 69 6c 65 5f 70  6f 69 6e 74 65 72 25 21  |0=file_pointer%!|
00000ad0  34 0d 00 5e 0d 20 20 20  20 ed 20 20 20 20 0d 00  |4..^.    .    ..|
00000ae0  5f 0e 3d 6e 65 77 5f 70  61 74 68 25 0d 00 60 04  |_.=new_path%..`.|
00000af0  0d 00 61 27 dd 20 f2 44  72 61 77 5f 41 6c 74 65  |..a'. .Draw_Alte|
00000b00  72 50 61 74 68 28 70 61  74 68 25 2c 74 72 61 6e  |rPath(path%,tran|
00000b10  73 66 6f 72 6d 25 29 0d  00 62 10 f2 44 72 61 77  |sform%)..b..Draw|
00000b20  5f 41 64 64 28 30 29 0d  00 63 2e c8 99 20 22 44  |_Add(0)..c... "D|
00000b30  72 61 77 5f 54 72 61 6e  73 66 6f 72 6d 50 61 74  |raw_TransformPat|
00000b40  68 22 2c 70 61 74 68 25  2c 30 2c 74 72 61 6e 73  |h",path%,0,trans|
00000b50  66 6f 72 6d 25 0d 00 64  14 66 69 6c 65 5f 70 6f  |form%..d.file_po|
00000b60  69 6e 74 65 72 25 2d 3d  34 0d 00 65 09 e1 20 20  |inter%-=4..e..  |
00000b70  20 20 0d 00 66 04 0d 00  67 04 0d 00 68 0d f4 20  |  ..f...g...h.. |
00000b80  2d 2d 2d 2d 2d 2d 2d 0d  00 69 0c f4 20 53 61 76  |-------..i.. Sav|
00000b90  69 6e 67 0d 00 6a 0d f4  20 2d 2d 2d 2d 2d 2d 2d  |ing..j.. -------|
00000ba0  0d 00 6b 04 0d 00 6c 2f  dd 20 f2 44 72 61 77 5f  |..k...l/. .Draw_|
00000bb0  53 61 76 65 54 6f 50 69  70 65 46 53 28 66 69 6c  |SaveToPipeFS(fil|
00000bc0  65 5f 6e 61 6d 65 24 2c  64 72 61 77 5f 66 69 6c  |e_name$,draw_fil|
00000bd0  65 25 29 0d 00 6d 0c 20  ea 20 70 61 74 68 24 0d  |e%)..m. . path$.|
00000be0  00 6e 1f 20 70 61 74 68  24 3d 22 50 69 70 65 3a  |.n. path$="Pipe:|
00000bf0  24 2e 22 2b 66 69 6c 65  5f 6e 61 6d 65 24 0d 00  |$."+file_name$..|
00000c00  6f 3a 20 ff 28 22 53 41  56 45 20 22 2b 70 61 74  |o: .("SAVE "+pat|
00000c10  68 24 2b 22 20 22 2b c3  7e 64 72 61 77 5f 66 69  |h$+" "+.~draw_fi|
00000c20  6c 65 25 2b 22 20 22 2b  c3 7e 66 69 6c 65 5f 70  |le%+" "+.~file_p|
00000c30  6f 69 6e 74 65 72 25 29  0d 00 70 20 20 ff 28 22  |ointer%)..p  .("|
00000c40  53 65 74 54 79 70 65 20  22 2b 70 61 74 68 24 2b  |SetType "+path$+|
00000c50  22 20 26 41 46 46 22 29  0d 00 71 1f 20 ff 28 22  |" &AFF")..q. .("|
00000c60  46 69 6c 65 72 5f 4f 70  65 6e 44 69 72 20 50 69  |Filer_OpenDir Pi|
00000c70  70 65 3a 24 22 29 20 0d  00 72 05 e1 0d 00 73 04  |pe:$") ..r....s.|
00000c80  0d 00 74 2d dd 20 f2 44  72 61 77 5f 53 65 6e 64  |..t-. .Draw_Send|
00000c90  54 6f 44 72 61 77 28 66  69 6c 65 5f 6e 61 6d 65  |ToDraw(file_name|
00000ca0  24 2c 64 72 61 77 5f 66  69 6c 65 25 29 0d 00 75  |$,draw_file%)..u|
00000cb0  0c 20 ea 20 70 61 74 68  24 0d 00 76 1f 20 70 61  |. . path$..v. pa|
00000cc0  74 68 24 3d 22 50 69 70  65 3a 24 2e 22 2b 66 69  |th$="Pipe:$."+fi|
00000cd0  6c 65 5f 6e 61 6d 65 24  0d 00 77 16 20 c8 99 20  |le_name$..w. .. |
00000ce0  22 48 6f 75 72 67 6c 61  73 73 5f 4f 6e 22 0d 00  |"Hourglass_On"..|
00000cf0  78 3a 20 ff 28 22 53 41  56 45 20 22 2b 70 61 74  |x: .("SAVE "+pat|
00000d00  68 24 2b 22 20 22 2b c3  7e 64 72 61 77 5f 66 69  |h$+" "+.~draw_fi|
00000d10  6c 65 25 2b 22 20 22 2b  c3 7e 66 69 6c 65 5f 70  |le%+" "+.~file_p|
00000d20  6f 69 6e 74 65 72 25 29  0d 00 79 21 20 ff 28 22  |ointer%)..y! .("|
00000d30  53 65 74 54 79 70 65 20  22 2b 70 61 74 68 24 2b  |SetType "+path$+|
00000d40  22 20 26 41 46 46 22 29  20 0d 00 7a 1a 20 ff 28  |" &AFF") ..z. .(|
00000d50  22 46 69 6c 65 72 5f 52  75 6e 20 22 2b 70 61 74  |"Filer_Run "+pat|
00000d60  68 24 29 0d 00 7b 18 20  c8 99 20 22 48 6f 75 72  |h$)..{. .. "Hour|
00000d70  67 6c 61 73 73 5f 4f 66  66 22 20 0d 00 7c 05 e1  |glass_Off" ..|..|
00000d80  0d 00 7d 04 0d 00 7e 4e  f4 20 2a 2a 2a 2a 2a 2a  |..}...~N. ******|
00000d90  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000dd0  2a 2a 0d 00 7f 05 f4 0d  00 80 18 f4 20 53 4f 4d  |**.......... SOM|
00000de0  45 20 50 41 54 48 20 45  4c 45 4d 45 4e 54 53 0d  |E PATH ELEMENTS.|
00000df0  00 81 05 f4 0d 00 82 4e  f4 20 2a 2a 2a 2a 2a 2a  |.......N. ******|
00000e00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000e40  2a 2a 0d 00 83 04 0d 00  84 04 0d 00 85 17 dd 20  |**............. |
00000e50  f2 44 72 61 77 5f 4d 6f  76 65 28 78 25 2c 79 25  |.Draw_Move(x%,y%|
00000e60  29 0d 00 86 29 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |)...) . --------|
00000e70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000e80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 00 87 29 20 f4  |----------...) .|
00000e90  20 4d 6f 76 65 20 74 6f  20 78 25 2c 79 25 20 73  | Move to x%,y% s|
00000ea0  74 61 72 74 69 6e 67 20  6e 65 77 20 73 75 62 70  |tarting new subp|
00000eb0  61 74 68 0d 00 88 27 20  f4 20 54 68 69 73 20 44  |ath...' . This D|
00000ec0  4f 45 53 20 61 66 66 65  63 74 20 77 69 6e 64 69  |OES affect windi|
00000ed0  6e 67 20 6e 75 6d 62 65  72 73 0d 00 89 21 20 f4  |ng numbers...! .|
00000ee0  20 73 6f 20 70 61 74 68  20 69 73 20 66 69 6c 6c  | so path is fill|
00000ef0  65 64 20 6e 6f 72 6d 61  6c 6c 79 0d 00 8a 06 20  |ed normally.... |
00000f00  f4 0d 00 8b 1b 20 f4 20  33 20 77 6f 72 64 73 20  |..... . 3 words |
00000f10  28 20 78 20 34 20 62 79  74 65 73 29 0d 00 8c 29  |( x 4 bytes)...)|
00000f20  20 f4 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | . -------------|
00000f30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000f40  2d 2d 2d 2d 2d 0d 00 8d  39 20 f2 44 72 61 77 5f  |-----...9 .Draw_|
00000f50  41 64 64 28 32 29 20 3a  20 f2 44 72 61 77 5f 41  |Add(2) : .Draw_A|
00000f60  64 64 28 78 25 2a 32 35  36 29 20 3a 20 f2 44 72  |dd(x%*256) : .Dr|
00000f70  61 77 5f 41 64 64 28 79  25 2a 32 35 36 29 0d 00  |aw_Add(y%*256)..|
00000f80  8e 06 20 e1 0d 00 8f 04  0d 00 90 17 dd 20 f2 44  |.. .......... .D|
00000f90  72 61 77 5f 44 72 61 77  28 78 25 2c 79 25 29 0d  |raw_Draw(x%,y%).|
00000fa0  00 91 14 20 f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |... . ----------|
00000fb0  2d 2d 2d 0d 00 92 14 20  f4 20 4c 69 6e 65 20 74  |---.... . Line t|
00000fc0  6f 20 28 78 2c 79 29 0d  00 93 06 20 f4 0d 00 94  |o (x,y).... ....|
00000fd0  1b 20 f4 20 33 20 77 6f  72 64 73 20 28 20 78 20  |. . 3 words ( x |
00000fe0  34 20 62 79 74 65 73 29  0d 00 95 14 20 f4 20 2d  |4 bytes).... . -|
00000ff0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 96 39  |------------...9|
00001000  20 f2 44 72 61 77 5f 41  64 64 28 38 29 20 3a 20  | .Draw_Add(8) : |
00001010  f2 44 72 61 77 5f 41 64  64 28 78 25 2a 32 35 36  |.Draw_Add(x%*256|
00001020  29 20 3a 20 f2 44 72 61  77 5f 41 64 64 28 79 25  |) : .Draw_Add(y%|
00001030  2a 32 35 36 29 0d 00 97  06 20 e1 0d 00 98 04 0d  |*256).... ......|
00001040  00 99 24 dd 20 f2 44 72  61 77 5f 43 75 62 69 63  |..$. .Draw_Cubic|
00001050  28 61 25 2c 62 25 2c 63  25 2c 64 25 2c 78 25 2c  |(a%,b%,c%,d%,x%,|
00001060  79 25 29 0d 00 9a 3a 20  f4 20 2d 2d 2d 2d 2d 2d  |y%)...: . ------|
00001070  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001090  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 00 9b  |-------------...|
000010a0  3a 20 f4 20 43 75 62 69  63 20 63 75 72 76 65 20  |: . Cubic curve |
000010b0  70 61 73 73 69 6e 67 20  74 68 72 6f 75 67 68 20  |passing through |
000010c0  63 75 72 72 65 6e 74 20  70 6f 69 6e 74 20 61 6e  |current point an|
000010d0  64 20 28 78 2c 79 29 0d  00 9c 2a 20 f4 20 77 69  |d (x,y)...* . wi|
000010e0  74 68 20 63 6f 6e 74 72  6f 6c 20 70 6f 69 6e 74  |th control point|
000010f0  73 20 28 61 2c 62 29 20  61 6e 64 20 28 63 2c 64  |s (a,b) and (c,d|
00001100  29 0d 00 9d 06 20 f4 0d  00 9e 1b 20 f4 20 37 20  |).... ..... . 7 |
00001110  77 6f 72 64 73 20 28 20  78 20 34 20 62 79 74 65  |words ( x 4 byte|
00001120  73 29 0d 00 9f 3a 20 f4  20 2d 2d 2d 2d 2d 2d 2d  |s)...: . -------|
00001130  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001150  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 a0 11  |------------....|
00001160  20 f2 44 72 61 77 5f 41  64 64 28 36 29 0d 00 a1  | .Draw_Add(6)...|
00001170  2a 20 f2 44 72 61 77 5f  41 64 64 28 61 25 2a 32  |* .Draw_Add(a%*2|
00001180  35 36 29 20 3a 20 f2 44  72 61 77 5f 41 64 64 28  |56) : .Draw_Add(|
00001190  62 25 2a 32 35 36 29 0d  00 a2 2a 20 f2 44 72 61  |b%*256)...* .Dra|
000011a0  77 5f 41 64 64 28 63 25  2a 32 35 36 29 20 3a 20  |w_Add(c%*256) : |
000011b0  f2 44 72 61 77 5f 41 64  64 28 64 25 2a 32 35 36  |.Draw_Add(d%*256|
000011c0  29 0d 00 a3 2a 20 f2 44  72 61 77 5f 41 64 64 28  |)...* .Draw_Add(|
000011d0  78 25 2a 32 35 36 29 20  3a 20 f2 44 72 61 77 5f  |x%*256) : .Draw_|
000011e0  41 64 64 28 79 25 2a 32  35 36 29 0d 00 a4 06 20  |Add(y%*256).... |
000011f0  e1 0d 00 a5 05 20 0d 00  a6 18 dd 20 f2 44 72 61  |..... ..... .Dra|
00001200  77 5f 43 6c 6f 73 65 57  69 74 68 47 61 70 0d 00  |w_CloseWithGap..|
00001210  a7 27 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.' . -----------|
00001220  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001230  2d 2d 2d 2d 2d 0d 00 a8  27 20 f4 20 43 6c 6f 73  |-----...' . Clos|
00001240  65 20 63 75 72 72 65 6e  74 20 73 75 62 70 61 74  |e current subpat|
00001250  68 20 77 69 74 68 20 61  20 67 61 70 0d 00 a9 06  |h with a gap....|
00001260  20 f4 0d 00 aa 0d 20 f4  20 31 20 77 6f 72 64 0d  | ..... . 1 word.|
00001270  00 ab 27 20 f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..' . ----------|
00001280  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001290  2d 2d 2d 2d 2d 2d 0d 00  ac 11 20 f2 44 72 61 77  |------.... .Draw|
000012a0  5f 41 64 64 28 34 29 0d  00 ad 06 20 e1 0d 00 ae  |_Add(4).... ....|
000012b0  04 0d 00 af 19 dd 20 f2  44 72 61 77 5f 43 6c 6f  |...... .Draw_Clo|
000012c0  73 65 57 69 74 68 4c 69  6e 65 0d 00 b0 28 20 f4  |seWithLine...( .|
000012d0  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
000012e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000012f0  2d 2d 0d 00 b1 28 20 f4  20 43 6c 6f 73 65 20 63  |--...( . Close c|
00001300  75 72 72 65 6e 74 20 73  75 62 70 61 74 68 20 77  |urrent subpath w|
00001310  69 74 68 20 61 20 6c 69  6e 65 0d 00 b2 06 20 f4  |ith a line.... .|
00001320  0d 00 b3 0d 20 f4 20 31  20 77 6f 72 64 0d 00 b4  |.... . 1 word...|
00001330  28 20 f4 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |( . ------------|
00001340  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001350  2d 2d 2d 2d 2d 0d 00 b5  11 20 f2 44 72 61 77 5f  |-----.... .Draw_|
00001360  41 64 64 28 35 29 0d 00  b6 06 20 e1 0d 00 b7 04  |Add(5).... .....|
00001370  0d 00 b8 4e f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |...N. **********|
00001380  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000013b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 00  |**************..|
000013c0  b9 05 f4 0d 00 ba 14 f4  20 53 4f 4d 45 20 53 55  |........ SOME SU|
000013d0  42 2d 50 41 54 48 53 0d  00 bb 05 f4 0d 00 bc 4e  |B-PATHS........N|
000013e0  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
000013f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001420  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 00 bd 04 0d 00  |**********......|
00001430  be 29 dd 20 f2 44 72 61  77 5f 48 6f 72 69 7a 6f  |.). .Draw_Horizo|
00001440  6e 74 61 6c 4c 69 6e 65  28 78 25 2c 79 25 2c 6c  |ntalLine(x%,y%,l|
00001450  65 6e 67 74 68 25 29 0d  00 bf 28 20 f4 20 2d 2d  |ength%)...( . --|
00001460  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001470  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00001480  00 c0 29 20 f4 20 48 6f  72 69 7a 6f 6e 74 61 6c  |..) . Horizontal|
00001490  20 6c 69 6e 65 20 73 74  61 72 69 6e 67 20 61 74  | line staring at|
000014a0  20 28 78 25 2c 79 25 29  0d 00 c1 18 20 f4 20 6f  | (x%,y%).... . o|
000014b0  66 20 6c 65 6e 67 74 68  20 6c 65 6e 67 74 68 25  |f length length%|
000014c0  0d 00 c2 06 20 f4 0d 00  c3 0e 20 f4 20 36 20 77  |.... ..... . 6 w|
000014d0  6f 72 64 73 0d 00 c4 28  20 f4 20 2d 2d 2d 2d 2d  |ords...( . -----|
000014e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000014f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 c5 16  |------------....|
00001500  20 f2 44 72 61 77 5f 4d  6f 76 65 28 78 25 2c 79  | .Draw_Move(x%,y|
00001510  25 29 0d 00 c6 1e 20 f2  44 72 61 77 5f 44 72 61  |%).... .Draw_Dra|
00001520  77 28 78 25 2b 6c 65 6e  67 74 68 25 2c 79 25 29  |w(x%+length%,y%)|
00001530  0d 00 c7 06 20 e1 0d 00  c8 05 20 0d 00 c9 2b dd  |.... ..... ...+.|
00001540  20 f2 44 72 61 77 5f 52  65 63 74 61 6e 67 6c 65  | .Draw_Rectangle|
00001550  28 78 25 2c 79 25 2c 77  69 64 74 68 25 2c 68 65  |(x%,y%,width%,he|
00001560  69 67 68 74 25 29 0d 00  ca 1f 20 f4 20 2d 2d 2d  |ight%).... . ---|
00001570  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001580  2d 2d 2d 2d 2d 0d 00 cb  1f 20 f4 20 52 65 63 74  |-----.... . Rect|
00001590  61 6e 67 6c 65 20 63 65  6e 74 72 65 20 28 78 25  |angle centre (x%|
000015a0  2c 79 25 29 0d 00 cc 06  20 f4 0d 00 cd 0f 20 f4  |,y%).... ..... .|
000015b0  20 31 33 20 77 6f 72 64  73 0d 00 ce 1f 20 f4 20  | 13 words.... . |
000015c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000015d0  2d 2d 2d 2d 2d 2d 2d 2d  0d 00 cf 0e 20 ea 20 68  |--------.... . h|
000015e0  78 25 2c 68 79 25 0d 00  d0 25 20 68 78 25 3d 77  |x%,hy%...% hx%=w|
000015f0  69 64 74 68 25 20 81 20  32 20 3a 20 68 79 25 3d  |idth% . 2 : hy%=|
00001600  68 65 69 67 68 74 25 20  81 20 32 0d 00 d1 1e 20  |height% . 2.... |
00001610  f2 44 72 61 77 5f 4d 6f  76 65 28 78 25 2b 68 78  |.Draw_Move(x%+hx|
00001620  25 2c 79 25 2b 68 79 25  29 0d 00 d2 1e 20 f2 44  |%,y%+hy%).... .D|
00001630  72 61 77 5f 44 72 61 77  28 78 25 2d 68 78 25 2c  |raw_Draw(x%-hx%,|
00001640  79 25 2b 68 79 25 29 0d  00 d3 1e 20 f2 44 72 61  |y%+hy%).... .Dra|
00001650  77 5f 44 72 61 77 28 78  25 2d 68 78 25 2c 79 25  |w_Draw(x%-hx%,y%|
00001660  2d 68 79 25 29 0d 00 d4  1e 20 f2 44 72 61 77 5f  |-hy%).... .Draw_|
00001670  44 72 61 77 28 78 25 2b  68 78 25 2c 79 25 2d 68  |Draw(x%+hx%,y%-h|
00001680  79 25 29 0d 00 d5 18 20  f2 44 72 61 77 5f 43 6c  |y%).... .Draw_Cl|
00001690  6f 73 65 57 69 74 68 4c  69 6e 65 0d 00 d6 06 20  |oseWithLine.... |
000016a0  e1 0d 00 d7 04 0d 00 d8  20 dd 20 f2 44 72 61 77  |........ . .Draw|
000016b0  5f 53 71 75 61 72 65 28  78 25 2c 79 25 2c 77 69  |_Square(x%,y%,wi|
000016c0  64 74 68 25 29 0d 00 d9  1f 20 f4 20 2d 2d 2d 2d  |dth%).... . ----|
000016d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000016e0  2d 2d 2d 2d 0d 00 da 1c  20 f4 20 53 71 75 61 72  |----.... . Squar|
000016f0  65 20 63 65 6e 74 72 65  20 28 78 25 2c 79 25 29  |e centre (x%,y%)|
00001700  0d 00 db 06 20 f4 0d 00  dc 0f 20 f4 20 31 33 20  |.... ..... . 13 |
00001710  77 6f 72 64 73 0d 00 dd  1f 20 f4 20 2d 2d 2d 2d  |words.... . ----|
00001720  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001730  2d 2d 2d 2d 0d 00 de 29  20 f2 44 72 61 77 5f 52  |----...) .Draw_R|
00001740  65 63 74 61 6e 67 6c 65  28 78 25 2c 79 25 2c 77  |ectangle(x%,y%,w|
00001750  69 64 74 68 25 2c 77 69  64 74 68 25 29 0d 00 df  |idth%,width%)...|
00001760  06 20 e1 0d 00 e0 04 0d  00 e1 27 dd 20 f2 44 72  |. ........'. .Dr|
00001770  61 77 5f 54 72 69 61 6e  67 6c 65 28 41 25 2c 61  |aw_Triangle(A%,a|
00001780  25 2c 42 25 2c 62 25 2c  43 25 2c 63 25 29 0d 00  |%,B%,b%,C%,c%)..|
00001790  e2 23 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.# . -----------|
000017a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000017b0  2d 0d 00 e3 22 20 f4 20  54 72 69 61 6e 67 6c 65  |-..." . Triangle|
000017c0  20 20 28 41 2c 61 29 20  28 42 2c 62 29 20 28 43  |  (A,a) (B,b) (C|
000017d0  2c 63 29 0d 00 e4 06 20  f4 0d 00 e5 0f 20 f4 20  |,c).... ..... . |
000017e0  31 30 20 77 6f 72 64 73  0d 00 e6 23 20 f4 20 2d  |10 words...# . -|
000017f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001800  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 00 e7 16 20  |-----------.... |
00001810  f2 44 72 61 77 5f 4d 6f  76 65 28 41 25 2c 61 25  |.Draw_Move(A%,a%|
00001820  29 0d 00 e8 16 20 f2 44  72 61 77 5f 44 72 61 77  |).... .Draw_Draw|
00001830  28 42 25 2c 62 25 29 0d  00 e9 16 20 f2 44 72 61  |(B%,b%).... .Dra|
00001840  77 5f 44 72 61 77 28 43  25 2c 63 25 29 0d 00 ea  |w_Draw(C%,c%)...|
00001850  18 20 f2 44 72 61 77 5f  43 6c 6f 73 65 57 69 74  |. .Draw_CloseWit|
00001860  68 4c 69 6e 65 0d 00 eb  06 20 e1 0d 00 ec 05 20  |hLine.... ..... |
00001870  0d 00 ed 1f dd 20 f2 44  72 61 77 5f 43 72 6f 73  |..... .Draw_Cros|
00001880  73 28 78 25 2c 79 25 2c  77 69 64 74 68 25 29 0d  |s(x%,y%,width%).|
00001890  00 ee 25 20 f4 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..% . ----------|
000018a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000018b0  2d 2d 2d 2d 0d 00 ef 07  20 f4 20 0d 00 f0 19 20  |----.... . .... |
000018c0  f4 20 43 72 6f 73 73 20  63 65 6e 74 72 65 20 28  |. Cross centre (|
000018d0  78 2c 79 29 0d 00 f1 07  20 f4 20 0d 00 f2 0f 20  |x,y).... . .... |
000018e0  f4 20 31 32 20 77 6f 72  64 73 0d 00 f3 25 20 f4  |. 12 words...% .|
000018f0  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00001900  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00001910  00 f4 38 20 f2 44 72 61  77 5f 4d 6f 76 65 28 78  |..8 .Draw_Move(x|
00001920  25 2d 77 69 64 74 68 25  2c 79 25 29 20 3a 20 f2  |%-width%,y%) : .|
00001930  44 72 61 77 5f 44 72 61  77 28 78 25 2b 77 69 64  |Draw_Draw(x%+wid|
00001940  74 68 25 2c 79 25 29 0d  00 f5 39 20 f2 44 72 61  |th%,y%)...9 .Dra|
00001950  77 5f 4d 6f 76 65 28 78  25 2c 79 25 2d 77 69 64  |w_Move(x%,y%-wid|
00001960  74 68 25 29 20 3a 20 f2  44 72 61 77 5f 44 72 61  |th%) : .Draw_Dra|
00001970  77 28 78 25 2c 79 25 2b  77 69 64 74 68 25 29 20  |w(x%,y%+width%) |
00001980  0d 00 f6 06 20 e1 0d 00  f7 05 20 0d 00 f8 2c dd  |.... ..... ...,.|
00001990  20 f2 44 72 61 77 5f 52  65 67 75 6c 61 72 50 6f  | .Draw_RegularPo|
000019a0  6c 79 67 6f 6e 28 78 25  2c 79 25 2c 72 61 64 69  |lygon(x%,y%,radi|
000019b0  75 73 25 2c 6e 25 29 0d  00 f9 25 20 f4 20 2d 2d  |us%,n%)...% . --|
000019c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000019d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 fa 25  |------------...%|
000019e0  20 f4 20 52 65 67 75 6c  61 72 20 70 6f 6c 79 67  | . Regular polyg|
000019f0  6f 6e 20 63 65 6e 74 72  65 20 28 78 25 2c 79 25  |on centre (x%,y%|
00001a00  29 0d 00 fb 06 20 f4 0d  00 fc 19 20 f4 20 4e 75  |).... ..... . Nu|
00001a10  6d 62 65 72 20 6f 66 20  73 69 64 65 73 3d 6e 25  |mber of sides=n%|
00001a20  0d 00 fd 06 20 f4 0d 00  fe 13 20 f4 20 33 2a 6e  |.... ..... . 3*n|
00001a30  25 2b 31 20 77 6f 72 64  73 0d 00 ff 25 20 f4 20  |%+1 words...% . |
00001a40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001a50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 01  |--------------..|
00001a60  00 1e 20 f2 44 72 61 77  5f 4d 6f 76 65 28 78 25  |.. .Draw_Move(x%|
00001a70  2b 72 61 64 69 75 73 25  2c 79 25 29 0d 01 01 12  |+radius%,y%)....|
00001a80  20 e3 20 69 25 3d 31 20  b8 20 6e 25 2d 31 0d 01  | . i%=1 . n%-1..|
00001a90  02 20 20 20 58 25 3d 78  25 2b 72 61 64 69 75 73  |.   X%=x%+radius|
00001aa0  25 2a 9b 28 32 2a af 2a  69 25 2f 6e 25 29 0d 01  |%*.(2*.*i%/n%)..|
00001ab0  03 20 20 20 59 25 3d 79  25 2b 72 61 64 69 75 73  |.   Y%=y%+radius|
00001ac0  25 2a b5 28 32 2a af 2a  69 25 2f 6e 25 29 0d 01  |%*.(2*.*i%/n%)..|
00001ad0  04 17 20 20 f2 44 72 61  77 5f 44 72 61 77 28 58  |..  .Draw_Draw(X|
00001ae0  25 2c 59 25 29 0d 01 05  07 20 20 ed 0d 01 06 18  |%,Y%)....  .....|
00001af0  20 f2 44 72 61 77 5f 43  6c 6f 73 65 57 69 74 68  | .Draw_CloseWith|
00001b00  4c 69 6e 65 0d 01 07 06  20 e1 0d 01 08 04 0d 01  |Line.... .......|
00001b10  09 20 dd 20 f2 44 72 61  77 5f 43 69 72 63 6c 65  |. . .Draw_Circle|
00001b20  28 78 25 2c 79 25 2c 72  61 64 69 75 73 29 0d 01  |(x%,y%,radius)..|
00001b30  0a 1f 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.. . -----------|
00001b40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 01 0b  |-------------...|
00001b50  1c 20 f4 20 43 69 72 63  6c 65 20 63 65 6e 74 72  |. . Circle centr|
00001b60  65 20 28 78 25 2c 79 25  29 0d 01 0c 06 20 f4 0d  |e (x%,y%).... ..|
00001b70  01 0d 0f 20 f4 20 33 32  20 77 6f 72 64 73 0d 01  |... . 32 words..|
00001b80  0e 1f 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.. . -----------|
00001b90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 01 0f  |-------------...|
00001ba0  1f 20 ea 20 61 20 3a 20  61 3d 72 61 64 69 75 73  |. . a : a=radius|
00001bb0  2a 34 2a 28 b6 32 2d 31  29 2f 33 20 0d 01 10 1d  |*4*(.2-1)/3 ....|
00001bc0  20 f2 44 72 61 77 5f 4d  6f 76 65 28 78 25 2c 79  | .Draw_Move(x%,y|
00001bd0  25 2b 72 61 64 69 75 73  29 0d 01 11 3c 20 f2 44  |%+radius)...< .D|
00001be0  72 61 77 5f 43 75 62 69  63 28 78 25 2b 61 2c 79  |raw_Cubic(x%+a,y|
00001bf0  25 2b 72 61 64 69 75 73  2c 78 25 2b 72 61 64 69  |%+radius,x%+radi|
00001c00  75 73 2c 79 25 2b 61 2c  78 25 2b 72 61 64 69 75  |us,y%+a,x%+radiu|
00001c10  73 2c 79 25 29 0d 01 12  3c 20 f2 44 72 61 77 5f  |s,y%)...< .Draw_|
00001c20  43 75 62 69 63 28 78 25  2b 72 61 64 69 75 73 2c  |Cubic(x%+radius,|
00001c30  79 25 2d 61 2c 78 25 2b  61 2c 79 25 2d 72 61 64  |y%-a,x%+a,y%-rad|
00001c40  69 75 73 2c 78 25 2c 79  25 2d 72 61 64 69 75 73  |ius,x%,y%-radius|
00001c50  29 0d 01 13 3c 20 f2 44  72 61 77 5f 43 75 62 69  |)...< .Draw_Cubi|
00001c60  63 28 78 25 2d 61 2c 79  25 2d 72 61 64 69 75 73  |c(x%-a,y%-radius|
00001c70  2c 78 25 2d 72 61 64 69  75 73 2c 79 25 2d 61 2c  |,x%-radius,y%-a,|
00001c80  78 25 2d 72 61 64 69 75  73 2c 79 25 29 0d 01 14  |x%-radius,y%)...|
00001c90  3d 20 f2 44 72 61 77 5f  43 75 62 69 63 28 78 25  |= .Draw_Cubic(x%|
00001ca0  2d 72 61 64 69 75 73 2c  79 25 2b 61 2c 78 25 2d  |-radius,y%+a,x%-|
00001cb0  61 2c 79 25 2b 72 61 64  69 75 73 2c 78 25 2c 79  |a,y%+radius,x%,y|
00001cc0  25 2b 72 61 64 69 75 73  29 20 0d 01 15 18 20 f2  |%+radius) .... .|
00001cd0  44 72 61 77 5f 43 6c 6f  73 65 57 69 74 68 4c 69  |Draw_CloseWithLi|
00001ce0  6e 65 0d 01 16 06 20 e1  0d 01 17 04 0d 01 18 40  |ne.... ........@|
00001cf0  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
00001d00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001d20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 01 19 40  |************...@|
00001d30  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
00001d40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001d60  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 01 1a 05  |************....|
00001d70  f4 0d 01 1b 3a f4 20 50  52 4f 43 45 44 55 52 45  |....:. PROCEDURE|
00001d80  53 20 46 4f 52 20 43 4f  4e 54 52 4f 4c 4c 49 4e  |S FOR CONTROLLIN|
00001d90  47 20 54 48 45 20 53 54  59 4c 45 20 4f 46 20 4c  |G THE STYLE OF L|
00001da0  49 4e 45 20 44 52 41 57  49 4e 47 0d 01 1c 05 f4  |INE DRAWING.....|
00001db0  0d 01 1d 05 f4 0d 01 1e  40 f4 20 2a 2a 2a 2a 2a  |........@. *****|
00001dc0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001df0  2a 2a 2a 2a 2a 0d 01 1f  40 f4 20 2a 2a 2a 2a 2a  |*****...@. *****|
00001e00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001e30  2a 2a 2a 2a 2a 0d 01 20  04 0d 01 21 21 f4 20 2a  |*****.. ...!!. *|
00001e40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001e50  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 01 22 21 f4 20  |**********.."!. |
00001e60  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001e70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 01 23 06 f4  |***********..#..|
00001e80  20 0d 01 24 14 f4 20 20  20 4a 4f 49 4e 20 53 54  | ..$..   JOIN ST|
00001e90  59 4c 45 53 20 0d 01 25  05 f4 0d 01 26 22 f4 20  |YLES ..%....&". |
00001ea0  20 20 49 2e 65 2e 20 48  6f 77 20 6c 69 6e 65 73  |  I.e. How lines|
00001eb0  20 61 72 65 20 6a 6f 69  6e 65 64 20 0d 01 27 06  | are joined ..'.|
00001ec0  f4 20 0d 01 28 21 f4 20  2a 2a 2a 2a 2a 2a 2a 2a  |. ..(!. ********|
00001ed0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001ee0  2a 2a 2a 0d 01 29 21 f4  20 2a 2a 2a 2a 2a 2a 2a  |***..)!. *******|
00001ef0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001f00  2a 2a 2a 2a 0d 01 2a 04  0d 01 2b 20 dd 20 f2 44  |****..*...+ . .D|
00001f10  72 61 77 5f 52 6f 75 6e  64 4a 6f 69 6e 73 28 f8  |raw_RoundJoins(.|
00001f20  20 73 74 79 6c 65 25 29  0d 01 2c 21 20 73 74 79  | style%)..,! sty|
00001f30  6c 65 25 3d 28 73 74 79  6c 65 25 20 80 20 ac 25  |le%=(style% . .%|
00001f40  31 31 29 20 82 20 25 30  31 0d 01 2d 06 20 e1 0d  |11) . %01..-. ..|
00001f50  01 2e 04 0d 01 2f 20 dd  20 f2 44 72 61 77 5f 42  |...../ . .Draw_B|
00001f60  65 76 65 6c 4a 6f 69 6e  73 28 f8 20 73 74 79 6c  |evelJoins(. styl|
00001f70  65 25 29 0d 01 30 21 20  73 74 79 6c 65 25 3d 28  |e%)..0! style%=(|
00001f80  73 74 79 6c 65 25 20 80  20 ac 25 31 31 29 20 82  |style% . .%11) .|
00001f90  20 25 31 30 0d 01 31 06  20 e1 0d 01 32 04 0d 01  | %10..1. ...2...|
00001fa0  33 20 dd 20 f2 44 72 61  77 5f 4d 69 74 72 65 4a  |3 . .Draw_MitreJ|
00001fb0  6f 69 6e 73 28 f8 20 73  74 79 6c 65 25 29 0d 01  |oins(. style%)..|
00001fc0  34 21 20 73 74 79 6c 65  25 3d 28 73 74 79 6c 65  |4! style%=(style|
00001fd0  25 20 80 20 ac 25 31 31  29 20 82 20 25 30 30 0d  |% . .%11) . %00.|
00001fe0  01 35 06 20 e1 0d 01 36  04 0d 01 37 21 f4 20 2a  |.5. ...6...7!. *|
00001ff0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00002000  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 01 38 21 f4 20  |**********..8!. |
00002010  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00002020  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 01 39 06 f4  |***********..9..|
00002030  20 0d 01 3a 13 f4 20 20  20 43 41 50 20 53 54 59  | ..:..   CAP STY|
00002040  4c 45 53 20 0d 01 3b 05  f4 0d 01 3c 21 f4 20 20  |LES ..;....<!.  |
00002050  20 49 2e 65 2e 20 48 6f  77 20 6c 69 6e 65 73 20  | I.e. How lines |
00002060  61 72 65 20 65 6e 64 65  64 20 0d 01 3d 06 f4 20  |are ended ..=.. |
00002070  0d 01 3e 21 f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..>!. **********|
00002080  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00002090  2a 0d 01 3f 21 f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |*..?!. *********|
000020a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000020b0  2a 2a 0d 01 40 04 0d 01  41 26 dd 20 f2 44 72 61  |**..@...A&. .Dra|
000020c0  77 5f 42 75 74 74 54 72  61 69 6c 69 6e 67 43 61  |w_ButtTrailingCa|
000020d0  70 73 28 f8 20 73 74 79  6c 65 25 29 0d 01 42 2a  |ps(. style%)..B*|
000020e0  20 20 73 74 79 6c 65 25  3d 28 73 74 79 6c 65 25  |  style%=(style%|
000020f0  20 80 20 ac 25 31 31 30  30 30 30 29 20 82 20 25  | . .%110000) . %|
00002100  30 30 30 30 30 30 0d 01  43 06 20 e1 0d 01 44 04  |000000..C. ...D.|
00002110  0d 01 45 25 dd 20 f2 44  72 61 77 5f 42 75 74 74  |..E%. .Draw_Butt|
00002120  4c 65 61 64 69 6e 67 43  61 70 73 28 f8 20 73 74  |LeadingCaps(. st|
00002130  79 6c 65 25 29 0d 01 46  25 20 73 74 79 6c 65 25  |yle%)..F% style%|
00002140  3d 28 73 74 79 6c 65 25  20 80 20 ac 25 31 31 30  |=(style% . .%110|
00002150  30 29 20 82 20 25 30 30  30 30 0d 01 47 06 20 e1  |0) . %0000..G. .|
00002160  0d 01 48 05 20 0d 01 49  27 dd 20 f2 44 72 61 77  |..H. ..I'. .Draw|
00002170  5f 52 6f 75 6e 64 54 72  61 69 6c 69 6e 67 43 61  |_RoundTrailingCa|
00002180  70 73 28 f8 20 73 74 79  6c 65 25 29 0d 01 4a 2a  |ps(. style%)..J*|
00002190  20 20 73 74 79 6c 65 25  3d 28 73 74 79 6c 65 25  |  style%=(style%|
000021a0  20 80 20 ac 25 31 31 30  30 30 30 29 20 82 20 25  | . .%110000) . %|
000021b0  30 31 30 30 30 30 0d 01  4b 06 20 e1 0d 01 4c 04  |010000..K. ...L.|
000021c0  0d 01 4d 26 dd 20 f2 44  72 61 77 5f 52 6f 75 6e  |..M&. .Draw_Roun|
000021d0  64 4c 65 61 64 69 6e 67  43 61 70 73 28 f8 20 73  |dLeadingCaps(. s|
000021e0  74 79 6c 65 25 29 0d 01  4e 26 20 20 73 74 79 6c  |tyle%)..N&  styl|
000021f0  65 25 3d 28 73 74 79 6c  65 25 20 80 20 ac 25 31  |e%=(style% . .%1|
00002200  31 30 30 29 20 82 20 25  30 31 30 30 0d 01 4f 06  |100) . %0100..O.|
00002210  20 e1 0d 01 50 04 0d 01  51 28 dd 20 f2 44 72 61  | ...P...Q(. .Dra|
00002220  77 5f 53 71 75 61 72 65  54 72 61 69 6c 69 6e 67  |w_SquareTrailing|
00002230  43 61 70 73 28 f8 20 73  74 79 6c 65 25 29 0d 01  |Caps(. style%)..|
00002240  52 2a 20 20 73 74 79 6c  65 25 3d 28 73 74 79 6c  |R*  style%=(styl|
00002250  65 25 20 80 20 ac 25 31  31 30 30 30 30 29 20 82  |e% . .%110000) .|
00002260  20 25 31 30 30 30 30 30  0d 01 53 06 20 e1 0d 01  | %100000..S. ...|
00002270  54 04 0d 01 55 04 0d 01  56 27 dd 20 f2 44 72 61  |T...U...V'. .Dra|
00002280  77 5f 53 71 75 61 72 65  4c 65 61 64 69 6e 67 43  |w_SquareLeadingC|
00002290  61 70 73 28 f8 20 73 74  79 6c 65 25 29 0d 01 57  |aps(. style%)..W|
000022a0  26 20 20 73 74 79 6c 65  25 3d 28 73 74 79 6c 65  |&  style%=(style|
000022b0  25 20 80 20 ac 25 31 31  30 30 29 20 82 20 25 31  |% . .%1100) . %1|
000022c0  30 30 30 0d 01 58 06 20  e1 0d 01 59 05 20 0d 01  |000..X. ...Y. ..|
000022d0  5a 3f dd 20 f2 44 72 61  77 5f 54 72 69 61 6e 67  |Z?. .Draw_Triang|
000022e0  75 6c 61 72 54 72 61 69  6c 69 6e 67 43 61 70 73  |ularTrailingCaps|
000022f0  28 f8 20 73 74 79 6c 65  25 2c 77 69 64 74 68 2c  |(. style%,width,|
00002300  70 6f 69 6e 74 66 6f 72  77 61 72 64 29 0d 01 5b  |pointforward)..[|
00002310  2d 20 f4 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |- . ------------|
00002320  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002330  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 01 5c 06 20 f4  |----------..\. .|
00002340  0d 01 5d 1d 20 f4 20 44  72 61 77 73 20 74 72 69  |..]. . Draws tri|
00002350  61 6e 67 75 6c 61 72 20  63 61 70 73 2e 0d 01 5e  |angular caps...^|
00002360  06 20 f4 0d 01 5f 2b 20  f4 20 4e 2e 42 2e 20 20  |. ..._+ . N.B.  |
00002370  22 77 69 64 74 68 22 20  61 6e 64 20 22 70 6f 69  |"width" and "poi|
00002380  6e 74 66 6f 72 77 61 72  64 22 20 61 72 65 0d 01  |ntforward" are..|
00002390  60 2d 20 f4 20 20 20 20  20 20 20 6d 65 61 73 75  |`- .       measu|
000023a0  72 65 64 20 69 6e 20 74  65 72 6d 73 20 6f 66 20  |red in terms of |
000023b0  6c 69 6e 65 20 77 69 64  74 68 2e 0d 01 61 06 20  |line width...a. |
000023c0  f4 0d 01 62 06 20 f4 0d  01 63 21 20 f4 20 20 20  |...b. ...c! .   |
000023d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000023e0  20 20 7c 5c 20 20 20 20  0d 01 64 21 20 f4 20 20  |  |\    ..d! .  |
000023f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002400  3d 3d 3d 7c 20 3e 20 20  20 0d 01 65 1d 20 f4 20  |===| >   ..e. . |
00002410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002420  20 20 20 20 7c 2f 0d 01  66 06 20 f4 0d 01 67 06  |    |/..f. ...g.|
00002430  20 f4 0d 01 68 2c 20 f4  20 45 2e 67 2e 20 20 77  | ...h, . E.g.  w|
00002440  69 64 74 68 3d 33 20 6d  65 61 6e 73 20 74 68 61  |idth=3 means tha|
00002450  74 20 74 68 65 20 63 61  70 20 77 69 6c 6c 0d 01  |t the cap will..|
00002460  69 2c 20 f4 20 20 20 20  20 20 20 62 65 20 33 20  |i, .       be 3 |
00002470  6c 69 6e 65 20 77 69 64  74 68 73 20 6f 6e 20 65  |line widths on e|
00002480  69 74 68 65 72 20 73 69  64 65 0d 01 6a 17 20 f4  |ither side..j. .|
00002490  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000024a0  20 0d 01 6b 2d 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  | ..k- . --------|
000024b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000024c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 01  |--------------..|
000024d0  6c 29 20 73 74 79 6c 65  25 3d 28 73 74 79 6c 65  |l) style%=(style|
000024e0  25 20 80 20 ac 25 31 31  30 30 30 30 29 20 82 20  |% . .%110000) . |
000024f0  25 31 31 30 30 30 30 0d  01 6d 35 20 73 74 79 6c  |%110000..m5 styl|
00002500  65 25 3d 28 73 74 79 6c  65 25 20 80 20 ac 28 26  |e%=(style% . .(&|
00002510  46 46 3c 3c 31 36 29 29  20 82 20 28 a8 28 77 69  |FF<<16)) . (.(wi|
00002520  64 74 68 2a 31 36 29 29  3c 3c 31 36 0d 01 6e 3c  |dth*16))<<16..n<|
00002530  20 73 74 79 6c 65 25 3d  28 73 74 79 6c 65 25 20  | style%=(style% |
00002540  80 20 ac 28 26 46 46 3c  3c 32 34 29 29 20 82 20  |. .(&FF<<24)) . |
00002550  28 a8 28 70 6f 69 6e 74  66 6f 72 77 61 72 64 2a  |(.(pointforward*|
00002560  31 36 29 29 3c 3c 32 34  0d 01 6f 06 20 e1 0d 01  |16))<<24..o. ...|
00002570  70 04 0d 01 71 3f dd 20  f2 44 72 61 77 5f 54 72  |p...q?. .Draw_Tr|
00002580  69 61 6e 67 75 6c 61 72  4c 65 61 64 69 6e 67 43  |iangularLeadingC|
00002590  61 70 73 28 f8 20 73 74  79 6c 65 25 2c 77 69 64  |aps(. style%,wid|
000025a0  74 68 2c 70 6f 69 6e 74  62 61 63 6b 77 61 72 64  |th,pointbackward|
000025b0  29 0d 01 72 2d 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |)..r- . --------|
000025c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000025d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 01  |--------------..|
000025e0  73 06 20 f4 0d 01 74 1d  20 f4 20 44 72 61 77 73  |s. ...t. . Draws|
000025f0  20 74 72 69 61 6e 67 75  6c 61 72 20 63 61 70 73  | triangular caps|
00002600  2e 0d 01 75 06 20 f4 0d  01 76 2c 20 f4 20 4e 2e  |...u. ...v, . N.|
00002610  42 2e 20 20 22 77 69 64  74 68 22 20 61 6e 64 20  |B.  "width" and |
00002620  22 70 6f 69 6e 74 62 61  63 6b 77 61 72 64 22 20  |"pointbackward" |
00002630  61 72 65 0d 01 77 2d 20  f4 20 20 20 20 20 20 20  |are..w- .       |
00002640  6d 65 61 73 75 72 65 64  20 69 6e 20 74 65 72 6d  |measured in term|
00002650  73 20 6f 66 20 6c 69 6e  65 20 77 69 64 74 68 2e  |s of line width.|
00002660  0d 01 78 06 20 f4 0d 01  79 06 20 f4 0d 01 7a 1f  |..x. ...y. ...z.|
00002670  20 f4 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | .              |
00002680  20 20 20 2f 7c 20 20 20  20 20 20 0d 01 7b 1f 20  |   /|      ..{. |
00002690  f4 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000026a0  20 3c 20 7c 3d 3d 3d 20  20 20 0d 01 7c 19 20 f4  | < |===   ..|. .|
000026b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000026c0  20 5c 7c 0d 01 7d 06 20  f4 0d 01 7e 06 20 f4 0d  | \|..}. ...~. ..|
000026d0  01 7f 06 20 f4 0d 01 80  2c 20 f4 20 45 2e 67 2e  |... ...., . E.g.|
000026e0  20 20 77 69 64 74 68 3d  33 20 6d 65 61 6e 73 20  |  width=3 means |
000026f0  74 68 61 74 20 74 68 65  20 63 61 70 20 77 69 6c  |that the cap wil|
00002700  6c 0d 01 81 2c 20 f4 20  20 20 20 20 20 20 62 65  |l..., .       be|
00002710  20 33 20 6c 69 6e 65 20  77 69 64 74 68 73 20 6f  | 3 line widths o|
00002720  6e 20 65 69 74 68 65 72  20 73 69 64 65 0d 01 82  |n either side...|
00002730  06 20 f4 0d 01 83 2e 20  f4 20 2d 2d 2d 2d 2d 2d  |. ..... . ------|
00002740  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002760  2d 0d 01 84 25 20 73 74  79 6c 65 25 3d 28 73 74  |-...% style%=(st|
00002770  79 6c 65 25 20 80 20 ac  25 31 31 30 30 29 20 82  |yle% . .%1100) .|
00002780  20 25 31 31 30 30 0d 01  85 35 20 73 74 79 6c 65  | %1100...5 style|
00002790  25 3d 28 73 74 79 6c 65  25 20 80 20 ac 28 26 46  |%=(style% . .(&F|
000027a0  46 3c 3c 31 36 29 29 20  82 20 28 a8 28 77 69 64  |F<<16)) . (.(wid|
000027b0  74 68 2a 31 36 29 29 3c  3c 31 36 0d 01 86 4c 20  |th*16))<<16...L |
000027c0  73 74 79 6c 65 25 3d 28  73 74 79 6c 65 25 20 80  |style%=(style% .|
000027d0  20 ac 28 26 46 46 3c 3c  32 34 29 29 20 82 20 28  | .(&FF<<24)) . (|
000027e0  a8 28 70 6f 69 6e 74 62  61 63 6b 77 61 72 64 2a  |.(pointbackward*|
000027f0  31 36 29 29 3c 3c 32 34  20 20 20 20 20 20 20 20  |16))<<24        |
00002800  20 20 20 20 20 20 20 0d  01 87 06 20 e1 0d 01 88  |       .... ....|
00002810  04 0d 01 89 25 dd 20 f2  44 72 61 77 5f 45 76 65  |....%. .Draw_Eve|
00002820  6e 57 69 6e 64 69 6e 67  52 75 6c 65 28 f8 20 73  |nWindingRule(. s|
00002830  74 79 6c 65 25 29 0d 01  8a 2b 20 73 74 79 6c 65  |tyle%)...+ style|
00002840  25 3d 28 73 74 79 6c 65  25 20 80 20 ac 25 31 30  |%=(style% . .%10|
00002850  30 30 30 30 30 29 20 82  20 25 31 30 30 30 30 30  |00000) . %100000|
00002860  30 0d 01 8b 05 e1 0d 01  8c 04 0d 01 8d 28 dd 20  |0............(. |
00002870  f2 44 72 61 77 5f 4e 6f  6e 7a 65 72 6f 57 69 6e  |.Draw_NonzeroWin|
00002880  64 69 6e 67 52 75 6c 65  28 f8 20 73 74 79 6c 65  |dingRule(. style|
00002890  25 29 0d 01 8e 2b 20 73  74 79 6c 65 25 3d 28 73  |%)...+ style%=(s|
000028a0  74 79 6c 65 25 20 80 20  ac 25 31 30 30 30 30 30  |tyle% . .%100000|
000028b0  30 29 20 82 20 25 30 30  30 30 30 30 30 0d 01 8f  |0) . %0000000...|
000028c0  05 e1 0d 01 90 04 0d 01  91 21 dd 20 f2 44 72 61  |.........!. .Dra|
000028d0  77 5f 44 61 73 68 65 64  4c 69 6e 65 73 28 f8 20  |w_DashedLines(. |
000028e0  73 74 79 6c 65 25 29 0d  01 92 1e 20 73 74 79 6c  |style%).... styl|
000028f0  65 25 3d 73 74 79 6c 65  25 20 84 20 25 31 30 30  |e%=style% . %100|
00002900  30 30 30 30 30 0d 01 93  05 e1 0d 01 94 04 0d 01  |00000...........|
00002910  95 21 f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.!. ************|
00002920  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00002930  01 96 21 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..!. ***********|
00002940  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00002950  0d 01 97 06 f4 20 0d 01  98 16 f4 20 20 20 44 41  |..... .....   DA|
00002960  53 48 20 50 41 54 54 45  52 4e 53 20 0d 01 99 05  |SH PATTERNS ....|
00002970  f4 0d 01 9a 22 f4 20 20  20 49 2e 65 2e 20 44 72  |....".   I.e. Dr|
00002980  61 77 69 6e 67 20 64 61  73 68 65 64 20 6c 69 6e  |awing dashed lin|
00002990  65 73 20 0d 01 9b 06 f4  20 0d 01 9c 21 f4 20 2a  |es ..... ...!. *|
000029a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000029b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 01 9d 21 f4 20  |**********...!. |
000029c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000029d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 01 9e 04 0d  |***********.....|
000029e0  01 9f 04 0d 01 a0 2b dd  20 f2 44 72 61 77 5f 45  |......+. .Draw_E|
000029f0  71 75 69 64 69 73 74 61  6e 74 44 61 73 68 50 61  |quidistantDashPa|
00002a00  74 74 65 72 6e 28 6c 65  6e 67 74 68 25 29 0d 01  |ttern(length%)..|
00002a10  a1 24 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.$ . -----------|
00002a20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002a30  2d 2d 0d 01 a2 06 20 f4  0d 01 a3 1f 20 f4 20 45  |--.... ..... . E|
00002a40  71 75 69 64 69 73 74 61  6e 74 20 44 61 73 68 20  |quidistant Dash |
00002a50  50 61 74 74 65 72 6e 0d  01 a4 08 20 f4 20 20 0d  |Pattern.... .  .|
00002a60  01 a5 1f 20 f4 20 20 20  20 20 20 20 20 20 20 2d  |... .          -|
00002a70  20 2d 20 2d 20 2d 20 2d  20 2d 20 2d 20 2d 0d 01  | - - - - - - -..|
00002a80  a6 06 20 f4 0d 01 a7 24  20 f4 20 45 61 63 68 20  |.. ....$ . Each |
00002a90  64 61 73 68 20 61 6e 64  20 73 70 61 63 65 20 6f  |dash and space o|
00002aa0  66 20 6c 65 6e 67 74 68  0d 01 a8 1a 20 f4 20 6c  |f length.... . l|
00002ab0  65 6e 67 74 68 25 20 69  6e 20 4f 53 20 75 6e 69  |ength% in OS uni|
00002ac0  74 73 0d 01 a9 06 20 f4  0d 01 aa 24 20 f4 20 2d  |ts.... ....$ . -|
00002ad0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002ae0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 01 ab 38  |------------...8|
00002af0  20 f2 44 72 61 77 5f 41  64 64 28 30 29 20 3a 20  | .Draw_Add(0) : |
00002b00  f2 44 72 61 77 5f 41 64  64 28 31 29 20 3a 20 f2  |.Draw_Add(1) : .|
00002b10  44 72 61 77 5f 41 64 64  28 6c 65 6e 67 74 68 25  |Draw_Add(length%|
00002b20  3c 3c 38 29 0d 01 ac 06  20 e1 0d 01 ad 04 0d 01  |<<8).... .......|
00002b30  ae 34 dd 20 f2 44 72 61  77 5f 44 61 73 68 50 61  |.4. .Draw_DashPa|
00002b40  74 74 65 72 6e 28 73 74  72 6f 6b 65 5f 6c 65 6e  |ttern(stroke_len|
00002b50  67 74 68 25 2c 6d 6f 76  65 5f 6c 65 6e 67 74 68  |gth%,move_length|
00002b60  25 29 0d 01 af 24 20 f4  20 2d 2d 2d 2d 2d 2d 2d  |%)...$ . -------|
00002b70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002b80  2d 2d 2d 2d 2d 2d 0d 01  b0 06 20 f4 0d 01 b1 23  |------.... ....#|
00002b90  20 f4 20 4e 6f 6e 2d 65  71 75 69 64 69 73 74 61  | . Non-equidista|
00002ba0  6e 74 20 44 61 73 68 20  50 61 74 74 65 72 6e 0d  |nt Dash Pattern.|
00002bb0  01 b2 08 20 f4 20 20 0d  01 b3 22 20 f4 20 20 2d  |... .  ..." .  -|
00002bc0  2d 20 2d 2d 20 2d 2d 20  2d 2d 20 2d 2d 20 2d 2d  |- -- -- -- -- --|
00002bd0  20 2d 2d 20 2d 2d 20 2d  2d 0d 01 b4 06 20 f4 0d  | -- -- --.... ..|
00002be0  01 b5 1c 20 f4 20 41 72  67 75 6d 65 6e 74 73 20  |... . Arguments |
00002bf0  69 6e 20 4f 53 20 75 6e  69 74 73 0d 01 b6 06 20  |in OS units.... |
00002c00  f4 0d 01 b7 24 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |....$ . --------|
00002c10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002c20  2d 2d 2d 2d 2d 0d 01 b8  20 20 f2 44 72 61 77 5f  |-----...  .Draw_|
00002c30  41 64 64 28 30 29 20 3a  20 f2 44 72 61 77 5f 41  |Add(0) : .Draw_A|
00002c40  64 64 28 32 29 0d 01 b9  3e 20 f2 44 72 61 77 5f  |dd(2)...> .Draw_|
00002c50  41 64 64 28 73 74 72 6f  6b 65 5f 6c 65 6e 67 74  |Add(stroke_lengt|
00002c60  68 25 3c 3c 38 29 20 3a  20 f2 44 72 61 77 5f 41  |h%<<8) : .Draw_A|
00002c70  64 64 28 6d 6f 76 65 5f  6c 65 6e 67 74 68 25 3c  |dd(move_length%<|
00002c80  3c 38 29 0d 01 ba 06 20  e1 0d 01 bb 04 0d 01 bc  |<8).... ........|
00002c90  2a dd 20 f2 44 72 61 77  5f 44 6f 74 44 61 73 68  |*. .Draw_DotDash|
00002ca0  50 61 74 74 65 72 6e 28  73 74 72 6f 6b 65 5f 6c  |Pattern(stroke_l|
00002cb0  65 6e 67 74 68 25 29 0d  01 bd 24 20 f4 20 2d 2d  |ength%)...$ . --|
00002cc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002cd0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 01 be 06 20  |-----------.... |
00002ce0  f4 0d 01 bf 23 20 f4 20  4e 6f 6e 2d 65 71 75 69  |....# . Non-equi|
00002cf0  64 69 73 74 61 6e 74 20  44 61 73 68 20 50 61 74  |distant Dash Pat|
00002d00  74 65 72 6e 0d 01 c0 08  20 f4 20 20 0d 01 c1 20  |tern.... .  ... |
00002d10  20 f4 20 20 2d 2d 20 2d  20 2d 2d 20 2d 20 2d 2d  | .  -- - -- - --|
00002d20  20 2d 20 2d 2d 20 2d 20  2d 2d 20 2d 0d 01 c2 06  | - -- - -- -....|
00002d30  20 f4 0d 01 c3 1c 20 f4  20 41 72 67 75 6d 65 6e  | ..... . Argumen|
00002d40  74 73 20 69 6e 20 4f 53  20 75 6e 69 74 73 0d 01  |ts in OS units..|
00002d50  c4 06 20 f4 0d 01 c5 24  20 f4 20 2d 2d 2d 2d 2d  |.. ....$ . -----|
00002d60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002d70  2d 2d 2d 2d 2d 2d 2d 2d  0d 01 c6 20 20 f2 44 72  |--------...  .Dr|
00002d80  61 77 5f 41 64 64 28 30  29 20 3a 20 f2 44 72 61  |aw_Add(0) : .Dra|
00002d90  77 5f 41 64 64 28 34 29  0d 01 c7 4a 20 f2 44 72  |w_Add(4)...J .Dr|
00002da0  61 77 5f 41 64 64 28 73  74 72 6f 6b 65 5f 6c 65  |aw_Add(stroke_le|
00002db0  6e 67 74 68 25 3c 3c 38  29 20 20 20 20 20 20 20  |ngth%<<8)       |
00002dc0  3a 20 f2 44 72 61 77 5f  41 64 64 28 28 73 74 72  |: .Draw_Add((str|
00002dd0  6f 6b 65 5f 6c 65 6e 67  74 68 25 81 32 29 3c 3c  |oke_length%.2)<<|
00002de0  38 29 0d 01 c8 48 20 f2  44 72 61 77 5f 41 64 64  |8)...H .Draw_Add|
00002df0  28 28 73 74 72 6f 6b 65  5f 6c 65 6e 67 74 68 25  |((stroke_length%|
00002e00  81 32 29 3c 3c 38 29 20  3a 20 f2 44 72 61 77 5f  |.2)<<8) : .Draw_|
00002e10  41 64 64 28 28 73 74 72  6f 6b 65 5f 6c 65 6e 67  |Add((stroke_leng|
00002e20  74 68 25 81 32 29 3c 3c  38 29 0d 01 c9 06 20 e1  |th%.2)<<8).... .|
00002e30  0d 01 ca 04 0d 01 cb 04  0d ff                    |..........|
00002e3a