DRAW

Syntax DRAW x1,y1 TO x2,y2 ,colour
Location Fast PLOT/DRAW Toolkit

This command draws a line in absolute co-ordinates on the screen. Any windows and window attributes are ignored. x1 and x2 range from 0 to 511, y1 and y2 from 0 to 255. DRAW uses the screen base address defined with SCRBASE (which enables it to draw on a screen stored in memory as well as the currently visible screen. It is therefore compatible with QL emulators and Minerva’s dual screen mode, although it cannot support higher resolutions). The range for the colour parameter is 0..7, other values give odd results without being dangerous.

Example

Here is a procedure which draws a line given in polar co-ordinates. A point in a polar system is specified by a radius and angle.

170 DEFine PROCedure POLAR_DRAW (r1,phi1,r2,phi2,col)
180   REMark less precise but fast version
190   LOCal r,phi,r_old,phi_old,dr,dphi
200   LOCal x1,x2,y1,y2,dist
210   r_old=r1: phi_old=phi1
220   r=r1: phi=phi1
230   x1=1.35*r_old*SIN(phi_old+PI/2)+255
240   y1=r_old*COS(phi_old+PI/2)+127
250   dist=(r1+r2)/2 * (phi1+phi2)/PI
260   IF dist==0 THEN RETurn
270   dr=(r2-r1)/dist: dphi=(phi2-phi1)/dist
280   REPeat Drawing
290     IF r>=r2 AND phi>=phi2 THEN EXIT Drawing
300     r=r_old+dr: phi=phi_old+dphi
310     x2=1.35*r*SIN(phi+PI/2)+255
320     y2=r*COS(phi+PI/2)+127
330     DRAW x1,y1 TO x2,y2 ,col
340     r_old=r: phi_old=phi
350     x1=x2: y1=y2
360   END REPeat Drawing
370 END DEFine POLAR_DRAW
POLAR_DRAW 0,0 TO 100,8*PI ,7

draws an archimedic spiral and these few lines create a polar pattern:

10 SCLR 0
20 FOR a=0 TO 50 STEP 10
30 POLAR_DRAW a,0 TO a,2*PI ,7
40 POLAR_DRAW 0,PI*a/25 TO 50,PI*a/25, 7
50 END FOR a
60 REFRESH

NOTE

DRAW is specific to the resolution of 512x256 pixels. It can however be used to draw on Minerva’s second screen by using the command SCRBASE SCREEN(#3) (assuming that #3 is open on the second screen).

CROSS-REFERENCE

PLOT plots a pixel, SCLR clears the screen and REFRESH makes the screen pointed to by SCRBASE visible. See also DOTLIN and the other variant of DRAW.


DRAW

Syntax DRAW [#ch,] x2,y2
Location DRAW (DIY Toolkit - Vol G)

This command draws a line in absolute co-ordinates on the screen with reference to the specified window channel (if any - default #1). The line is drawn from the last point plotted with the PLOT command from the same toolkit, to the point specified by x2,y2. This is quicker than using the SuperBASIC LINE command and unlike other similar commands, it will support the current INK colour and OVER mode.

<CTRL><F5> will pause the line drawing and it will even work in MODE 4, 8 and 12 (on the THOR XVI, provided that you have v1.6+). The main limitation on this command is that the line must appear fully within the specified window, so x2 and y2 cannot exceed the width or height of the specified window (in pixels) nor be less than zero.

NOTE

Although DRAW will work wherever the screen base is located, it assumes that a line of pixels takes 128 bytes - it will not therefore currently work on higher resolutions.

CROSS-REFERENCE

See the other variant ofDRAW. See also PLOT. LINE is much more flexible.