Bug fixes and enhancements 
Comparison of versions 1 and 2.70

Ver 1:    MakeDraw   WR/WR   BASIC     11:39:30 27-May-1991   19 Kbytes
Ver 2.70: MakeDraw   WR/WR   BASIC     08:00:00 28-Aug-2020   43 Kbytes

Version 2.70 has the following bug fixes:

(1)  Bounding boxes of text were incorrectly calculated
     so that some text fell outside them. Requires
     calls to "Font_FindFont" and "Font_StringBBox",
     adjusted to allow the system font to be used
     - see lines 60383, 60387 to 60390.
 
(2)  Variable i% was used without being made LOCAL - see 
     line 60131.
            
(3)  Force FillStyle to FALSE during PROCmdLine - see
     lines 60036, 60056 and 60057.
     
(4)  Remove empty groups as bounding box will confuse - see
     lines 60374 to 60376.

(5)  Draw object type 16 (JPEG object) has been added
     PROCmdJPEG(x,y,filename$,width,height)
     - plot a JPEG with its bottom LH corner at (x,y)
       and its height and width as specified. 
       A height of 0 means that the width is taken
       as a scale factor. A negative height causes both
       height and width to be scaled so that the draw
       file will cause a sprite to be created by !PhotoDesk
       of the correct pixel size from the draw file. - see 
       lines 60595 to 60643.

(6)  Draw object type 5 (Sprite object) has been added
     PROCmdSprite(x,y,filename$,width,height)
     - plot a sprite with its bottom LH corner at (x,y)
       and its height and width as specified. 
       A height of 0 means that the width is taken
       as a scale factor. A negative height causes both
       height and width to be scaled so that the draw
       file will cause a sprite to be created by !PhotoDesk
       of the correct pixel size from the draw file. - see 
       lines 60661 to 60706.
           
(7)  Draw object type 5 (Sprite object) has been added
     PROCmdSpriteMem(x,y,sprptr%,width,height)
     - plot a sprite with its bottom LH corner at (x,y)
       and its height and width as specified where
       the sprite is held in memory - see lines 60644 to 60660.

(8)  Function added to calculate bounding size of text
     FNmdText(text$)
     - returns TRUE, string height & width are in _mda%, 
     _mdb%, _mdc%  and _mdd% set to the edges of the 
     bounding box as offsets from the (x,y) string position 
     in units returned by the SYS call "Font_StringBBox"
     - see lines 60707 to 60728. No object is plotted.
     
(9)  Draw object type 12 (transformed text object) has been added
     PROCmdTextTran(x,y,text$,r)
     - plot some text as normal except that text is at
     an angle of r radians. See lines 60729 to 60807.

(10) Draw object type 9 (text area object) has been added
     PROCmdTextArea(x,y,xsize,ysize,strptr%,colptr%)
     - plot a text area rectangle, with specified columns
     if colptr% is non-zero - see lines 60808 to 60890.
     
(11) Update PROCmdHelp to include new routines and update the
     version message - see lines 61129 to 61210 (note these
     were lines 5900 to 6150 in the original.

New in verson 2.54
------------------
(8)  Function to calculate bounding size of text
     FNmdText(text$) aended:
     - returns string width in user units with _mda%, 
     _mdb%, _mdc%  and _mdd% set to the edges of the ... 
     
(12) Bounding boxes of curves were calculated using just the
     end points of the curve: the control points have now
     also been included so that the curve should now be wholly
     within the bounding box - see lines 60213 to 60214.
     
New in version 2.55
-------------------
(13) PROCmdTextArea used x% without declaring it LOCAL, now 
     fixed - see line 60812.

New in version 2.56
-------------------
(8)  Function to calculate bounding size of text
     FNmdText(text$) amended:
     - returns string width in user units with _mda%, 
     _mdb%, _mdc%  and _mdd% set to the edges of the ... 
     bounding box as offsets from the (x,y) string position 
     in units returned by the SYS call "Font_StringBBox"
     - see line 60727. No object is plotted.
     Earlier versions than 2.53 returned TRUE.
     For a string that is " " versions 2.53 to 2.55 returned 0,
     but for the same string (single space), versions 2.56 
     onwards return the version number, e.g. 2.53.  
     
(9)  Draw object type 12 (transformed text object) 
     PROCmdTextTran(x,y,text$,r) amended:
     - plot some text as normal except that text is at
     an angle of r radians. See lines 60729 to 60807.
     Bounding boxes now corrected.

New in version 2.58
-------------------
(14) PROCmdInclude(f$) added to allow objects to be added to an
     existing draw file. Syntax is as follows:
     fontnn%=FNmdDefineFont("Corpus.Medium"):REM last font def'n
     [PROCmdStartGroup]
     PROCmdInclude("DrawFile")
     A warning is issued if any font in the included file has
     not already been defined with the same font number as used
     in the file to be included - see lines 60891 to 61102.

(15) PROCmdQuadrantA(x1,y1,x2,y2) and PROCmdQuadrantC(x1,y1,x2,y2)
     added to draw a quardant of a circle from (x1,y1) to (x2,y2)
     in an anti-clockwise or clockwise direction - see lines
     61103 to 61112.
     
(16) PROCmdQuadrantATo(x2,y2) and PROCmdQuadrantCTo(x2,y2)
     added to draw a quardant of a circle to (x2,y2)
     in an anti-clockwise or clockwise direction - see lines
     61113 to 61128.
     
New in version 2.60
-------------------
(14) PROCmdInclude(f$,x,y) amended to specify the position of
     the bottom left hand corner of the file to be added. This
     allows various draw files to be included at specified
     positions and then objects to be added. Syntax is as follows:
     fontnn%=FNmdDefineFont("Corpus.Medium"):REM last font def'n
     [PROCmdStartGroup]
     PROCmdInclude("DrawFile",x,y) [may be repeated]
     A warning is issued if any font in the included file(s) has
     not already been defined with the same font number as used
     in the file to be included - see lines 60891 to 61102.

New in version 2.63
-------------------
(9)  Draw object type 12 (transformed text object)
     PROCmdTextTran(x,y,text$,r) amended:
     - plot some text as normal except that text is at
     an angle of r radians. See lines 60729 to 60807.
     Bounding boxes bug introduced in 2.56 now corrected.

(14) PROCmdInclude(f$,x,y) to include a draw file amended:
     A warning is now only  issued if any font in the included 
     file(s) has not already been defined in the file being 
     created - font numbers no longer need to be the same. Imported
     font numbers are adjusted as necessary and any unmatched fonts 
     are set to use the system font - see lines 60891 to 61102.

(16) PROCmdQuadrantCTo(x2,y2) context bug corrected.

New in version 2.66
-------------------
(15) PROCmdQuadrantA(x1,y1,x2,y2) and PROCmdQuadrantC(x1,y1,x2,y2)
     amended to correct a bug in the trace output - see lines
     61115 and 61120.
     
(16) PROCmdQuadrantATo(x2,y2) and PROCmdQuadrantCTo(x2,y2)
     amended to correct a bug in the trace output - see lines
     61125 and 61133.

(17) PROCmdArcC(x1,y1,x2,y2,xc,yc) draws an arc from (x1,y1)
     to (x2,y2) in a clockwise direction, with the centre of the 
     circle at (xc,yc). It is intended for arcs subtending 
     an angle of less than 90. It will draw arcs up to 180
     but less accurately.  It is similar to PROCmdCircle(x,y,r) 
     but draws only an arc. The approximation to a circle is 
     quite close, with an error of only about one part in 1000.
     See lines 61139 to 61150.

(18) PROCmdArcA(x1,y1,x2,y2,xc,yc) draws an arc from (x1,y1) 
     to (x2,y2) in an anti-clockwise direction, with the centre 
     of the circle at (xc,yc). It is intended for arcs 
     subtending an angle of less than 90. It will draw arcs 
     up to 180 but less accurately.  It is similar to 
     PROCmdCircle(x,y,r) but draws only an arc. The 
     approximation to a circle is quite close, with an error 
     of only about one part in 1000.
     See lines 61151 to 61162.

(19) PROCmdArcTo(x2,y2) creates a curved line segment 
     in the current path from the current position to (x2,y2) 
     in a clockwise or anti-clockwise direction, provided that 
     the previous line segment has been drawn to define the 
     direction AND that the intended arc is less than a
     semi-circle, otherwise a straight line segment is drawn. It is 
     intended for arcs subtending an angle of less than 90. 
     It will draw arcs up to 180 but slightly less accurately
     than those up to 90. The control points for the beginning
     and end of the line are placed so that an arc is drawn. 
     See lines 61163 to 61197.

(20) PROCmdStartNamedGroup(a$) added which behaves exactly
     like PROCmdStartGroup except that the group name is
     specified.The name of the group should be composed of 
     printable characters and will be padded to 12 
     characters with spaces. The following objects, until the 
     corresponding PROCmdEndGroup, will be grouped together.
     See lines 61198 to 61220.
     
New in version 2.68
-------------------
(19) PROCmdArcTo(x2,y2) amended to remove a bug when used
     after drawing a curve. See lines 61177 to 61183. 

(21) Function added to calculate the current direction. 
     FNmdPhi returns an angle in radians and may be used
     after PROCmdLineTo, PROCmdCurveTo, PROCmdArcTo,
     PROCmdQuadrantATo, PROCmdQuadrantCTo or PROCmdAutoCurveTo.
     See lines 61221 to 61236.
     
(22) PROCmdProduceBy(len) added which can be used after
     PROCmdLineTo / PROCmdCurveTo / PROCmdAutoCurveTo to
     extend the line segment in the current direction so
     that its direction remains constant. Where (x2,y2) is 
     the last point drawn, it is equivalent to:
     PROCmdLineTo(x2+len*COS(FNmdPhi),y2+len*SIN(FNmdPhi).
     See lines 61237 to 61258.
    
New in version 2.70
-------------------
(21) Function to calculate the current direction amended: 
     FNmdPhi now has no argument, i.e. is as defined.

(23) PROCmdStartHiddenGroup(a$) added which behaves exactly
     like PROCmdStartGroup except that the group name is
     specified and the contents are hidden. The name of the 
     group should be composed of printable characters and 
     will be padded to 12 characters with spaces. 
     The following objects, until the corresponding 
     PROCmdEndGroup, will be grouped together.
     See lines 61259 to 61281.
