CALL PENMODE & PENSIZE Work with CALL LINE, Not CIRCLE or LINE (63160)



The information in this article applies to:

  • Microsoft BASIC Interpreter for Apple Macintosh 2.0
  • Microsoft BASIC Interpreter for Apple Macintosh 2.1
  • Microsoft BASIC Interpreter for Apple Macintosh 3.0
  • Microsoft BASIC Compiler
  • Microsoft QuickBASIC Compiler for the Apple Macintosh 1.0

This article was previously published under Q63160

SUMMARY

The LINE, CIRCLE, and PSET statements in QuickBASIC always have a 1-pixel width and a COPY masking mode, and are not affected by the CALL PENSIZE, CALL PENMODE, or CALL PENPATTERN ROM routines.

If you want routines that are affected by CALL PENSIZE, CALL PENMODE, or CALL PENPATTERN, you can use CALL LINE (or CALL LINETO), CALL FRAMEOVAL, or other ROM routine CALLs.

This information applies to Microsoft QuickBASIC version 1.00 for the Apple Macintosh, to Microsoft BASIC Interpreter versions 2.00, 2.10, and 3.00 for the Apple Macintosh, and to Microsoft BASIC Compiler version 1.00 for the Apple Macintosh.

MORE INFORMATION

Note that CALL LINE (Page 389) is a ROM routine, whereas the LINE statement (Page 177) is part of the QuickBASIC language (in the "Microsoft QuickBASIC for Apple Macintosh: Language Reference").

The following code segment is a modification of the sample program on Page 395 of the "Microsoft QuickBASIC for Apple Macintosh: User's Guide." The program prints the eight PENMODEs (COPY, OR, XOR, BIC, NOT COPY, NOT OR, NOT XOR, NOT BIC, respectively numbered 8 through 15) on the screen, giving an example of each with the LINETO ROM call and the LINE statement.

Code Example

   DEFINT a-z
   DIM pattern(3)
   LINE (200,10)-(300,250),,bf  '
   FOR y = 10 to 250 step 2     'create a background for drawing
     LINE (300,y)-(400,y)       '
   NEXT

   FOR i = 0 to 3 : READ pattern(i) : NEXT  'create the pen pattern
   DATA -32446,9240,6180,17025

   CALL PENPAT(VARPTR(pattern(0)))  'set up the pen pattern
   CALL PENSIZE (12,12)             'set up the pen size
   mode = 8

   FOR y = 20 to 230 step 30
    CALL PENMODE(mode)              'set up the pen mask
    CALL MOVETO(1,y+8)
    READ mode$ : PRINT mode mode$   'print the mask #,type
    CALL MOVETO (100,y)
    CALL LINETO (400,y)             'draw a line with the pen
    LINE (100,y+2)-(400,y+2)        'show that LINE statement won't draw it
    mode = mode + 1
   NEXT
   WHILE MOUSE(0) <> -1 : WEND
   DATA " COPY"," OR",XOR,BIC,NOT COPY,NOT OR,NOT XOR,NOT BIC
				

Modification Type:MinorLast Reviewed:8/16/2005
Keywords:KB63160