; ; File: GrafTypes.m.a ; ; Contains: xxx put contents here (or delete the whole line) xxx ; ; Written by: xxx put name of writer here (or delete the whole line) xxx ; ; Copyright: © 1986-1990 by Apple Computer, Inc., all rights reserved. ; ; This file is used in these builds: BigBang ; ; Change History (most recent first): ; ; <16> 3/31/91 KON BAL, WRKSHT#csd: Remove symbols from QD build. ; <15> 3/11/91 JT Added new opcode for glyph state and a field in the picSave ; record for tracking this opcode during picture spooling. Code ; checked by KON. BRC numbers 82651 and 79185. Worksheet number ; KON-022. Also added an ALIGN statement to the UNLINK macro to ; squash the assembler warnings about code alignment. ; <14> 1/20/91 JT Removed the change to pnLocFixed since Peter was unhappy about ; it. This fix will have to wait for some future release. ; <13> 1/18/91 JT Expand pnLocFixed into a full fixed-point number in the ; QuickDraw globals area. ; <12> 10/10/90 JL Changed SysError,FixRatio, FixMul, and LongMul to MSysError, ; etc. because of conflict with Opword. ; <11> 8/26/90 PKE Deleted old names picSMgrChar, picSMgrSlop, QDSmgrSlop, ; QDSmgrCharExtra. ; <10> 8/23/90 PKE (per JT) Renamed picSMgrChar and picSMgrSlop to picQdChExtra and ; picQdRunSlop; renamed QDSmgrSlop and QDSmgrCharExtra to ; qdRunSlop and qdChExtra. Keep old names too until we can update ; all relevant sources. ; <9> 8/2/90 PKE Claim two previously unused longs in QDSpare area for Script Mgr ; charExtra and slop. The QDSpare area is called fontData in ; QuickEqu.a. ; <8> 7/23/90 gbm Fix ROM builds that use Classic QD ; <7> 7/20/90 gbm Remove duplicate definitions. ; <6> 7/11/90 gbm get rid of some asm warnings ; <5> 6/20/90 KON Add picVersion to PicSave record for OpenCPicture on B&W ; machines. ; <4> 5/30/90 JT Grabbed the first QDspare variable from the QuickDraw globals to ; hold the horizontal pen fraction. This is also known as the ; fontData storage in the newer QuickDraw equates. ; <3> 5/27/90 JT Copy the opLineLayout equate here from ColorEqu.a in the ; internal assembly folder. ; <2> 4/24/90 JT ; <1> 12/17/89 CCH Adding for the first time into BBS. ; <1.5> 12/5/89 KON PMVersion needs to be cleaned up for B&W and Color QD ; compatability ; <1.4> 12/4/89 KON Added relevant stuff from ColorEqu.a. Now DrawPicture32Patch.a ; includes this file. ; <1.3> 11/7/89 KON Added support for font name/ID binding ; <1.2> 6/6/89 BAL Fixed up trap macros for memoryMgr traps and made _stackAvail ; call _stackSpace. ; <1.1> 11/11/88 CCH Fixed Header. ; <1.0> 11/9/88 CCH Adding to EASE. ; <1.1> 5/18/88 MSH Changed inclides to use m.GRAPHTYPES to work under EASE. ; <1.0> 2/11/88 BBM Adding file for the first time into EASEÉ ; 10/29/86 bbm hacked for moveable toolbox dispatch table. THIS SHOULD BE ; MODIFIED ANYTIME THE START OF THE TOOLBOX TRAP TABLE MOVES. ; SHOULD BE DONE IN PARALLEL WITH HARDWARE EQUS. ; ; To Do: ; ;EASE$$$ READ ONLY COPY of file Ògraftypes.m.aÓ ; 1.5 KON 12/05/1989 PMVersion needs to be cleaned up for B&W and Color QD compatability ; 1.4 KON 12/04/1989 Added relevent stuff from ColorEqu.a. Now DrawPicture32Patch.a includes this file. ; 1.3 KON 11/07/1989 Added support for font name/ID binding ; 1.2 BAL 06/06/1989 Fixed up trap macros for memoryMgr traps and made _stackAvail call _stackSpace. ; 1.1 CCH 11/11/1988 Fixed Header. ; 1.0 CCH 11/ 9/1988 Adding to EASE. ; OLD REVISIONS BELOW ; 1.1 MSH 5/18/88 Changed inclides to use m.GRAPHTYPES to work under EASE. ; 1.0 BBM 2/11/88 Adding file for the first time into EASEÉ ; END EASE MODIFICATION HISTORY ;----------------------------- ; modification history ; bbm hacked for moveable toolbox dispatch table. THIS SHOULD ; BE MODIFIED ANYTIME THE START OF THE TOOLBOX TRAP TABLE ; MOVES. SHOULD BE DONE IN PARALLEL WITH HARDWARE EQUS. ;----------------------------------------------------------------- ; ; --> GRAFTYPES.a ; ; QUICKDRAW TYPE DECLARATIONS, USED BY ALL GRAPHICS ROUTINES ; BLANKS ON STRING ASIS IF &TYPE('Nil') = 'UNDEFINED' THEN Nil: Equ 0 ENDIF IF &TYPE('__IncludingQuickEqu__') = 'UNDEFINED' THEN ;----------------------------------------------- ; ; QuickDraw VERBS: ; FRAME EQU 0 PAINT EQU 1 ERASE EQU 2 INVERT EQU 3 FILL EQU 4 ;----------------------------------------------- ; ; QuickDraw transfer MODES: ; srcCopy EQU 0 srcOr EQU 1 srcXor EQU 2 srcBic EQU 3 notSrcCopy EQU 4 notSrcOr EQU 5 notSrcXor EQU 6 notSrcBic EQU 7 patCopy EQU 8 patOr EQU 9 patXor EQU 10 patBic EQU 11 notPatCopy EQU 12 notPatOr EQU 13 notPatXor EQU 14 notPatBic EQU 15 ;----------------------------------------------- ; ; QuickDraw Color Separation: ; normalBit EQU 0 ;normal screen mapping inverseBit EQU 1 ;inverse screen mapping redBit EQU 4 ;RGB additive mapping greenBit EQU 3 ;for photos from screen blueBit EQU 2 cyanBit EQU 8 ;CMYBk subtractive mapping magentaBit EQU 7 ;for ink jet printer yellowBit EQU 6 blackBit EQU 5 blackColor EQU 33 whiteColor EQU 30 redColor EQU 205 greenColor EQU 341 blueColor EQU 409 cyanColor EQU 273 magentaColor EQU 137 yellowColor EQU 69 ;----------------------------------------------- ; ; OFFSETS WITHIN A POINT: ; V EQU 0 ;WORD H EQU 2 ;WORD ;----------------------------------------------- ; ; OFFSETS WITHIN A RECT: ; TOPLEFT EQU 0 ;POINT BOTRIGHT EQU 4 ;POINT TOP EQU 0 ;INTEGER LEFT EQU 2 ;INTEGER BOTTOM EQU 4 ;INTEGER RIGHT EQU 6 ;INTEGER ;----------------------------------------------- ; ; OFFSETS WITHIN A BITMAP: ; BASEADDR EQU 0 ;LONG ROWBYTES EQU 4 ;WORD BOUNDS EQU 6 ;RECT ;----------------------------------------------- ; ; OFFSETS WITHIN A CURSOR: ; DATA EQU 0 ;16 WORDS MASK EQU 32 ;16 WORDS HOTSPOT EQU 64 ;POINT ;----------------------------------------------- ; ; OFFSETS WITHIN A POLYGON: ; POLYSIZE EQU 0 ;WORD, TOTAL BYTES POLYBBOX EQU 2 ;RECT POLYPOINTS EQU 10 ;ARRAY[0..0] OF Point ;----------------------------------------------- ; ; OFFSETS WITHIN A REGION: ; RGNSIZE EQU 0 ;WORD, TOTAL BYTES RGNBBOX EQU 2 ;RECT RGNDATA EQU 10 ;START OF RGN DATA ;----------------------------------------------- ; ; OFFSETS WITHIN A PICTURE: ; PICSIZE EQU 0 ;WORD, TOTAL BYTES PICFRAME EQU 2 ;RECT PICDATA EQU 10 ;START OF BYTE CODES ;----------------------------------------------- ; ; OFFSETS WITHIN QDProcs RECORD: ; textProc EQU 0 ;PROCPTR lineProc EQU textProc+4 ;PROCPTR rectProc EQU lineProc+4 ;PROCPTR rRectProc EQU rectProc+4 ;PROCPTR ovalProc EQU rRectProc+4 ;PROCPTR arcProc EQU ovalProc+4 ;PROCPTR polyProc EQU arcProc+4 ;PROCPTR rgnProc EQU polyProc+4 ;PROCPTR bitsProc EQU rgnProc+4 ;PROCPTR commentProc EQU bitsProc+4 ;PROCPTR txMeasProc EQU commentProc+4 ;PROCPTR getPicProc EQU txMeasProc+4 ;PROCPTR putPicProc EQU getPicProc+4 ;PROCPTR ;----------------------------------------------- ; ; OFFSETS WITHIN A GRAFPORT: ; device EQU 0 ;WORD portBits EQU device+2 ;BITMAP portRect EQU portBits+14 ;RECT visRgn EQU portRect+8 ;RGNPTR clipRgn EQU visRgn+4 ;RGNPTR bkPat EQU clipRgn+4 ;PATTERN fillPat EQU bkPat+8 ;PATTERN pnLoc EQU fillPat+8 ;POINT pnSize EQU pnLoc+4 ;POINT pnMode EQU pnSize+4 ;WORD pnPat EQU pnMode+2 ;PATTERN pnVis EQU pnPat+8 ;WORD txFont EQU pnVis+2 ;WORD txFace EQU txFont+2 ;WORD txMode EQU txFace+2 ;WORD txSize EQU txMode+2 ;WORD spExtra EQU txSize+2 ;Fixed Point fgColor EQU spExtra+4 ;LONG bkColor EQU fgColor+4 ;LONG colrBit EQU bkColor+4 ;WORD patStretch EQU colrBit+2 ;WORD picSave EQU patStretch+2 ;handle rgnSave EQU picSave+4 ;handle polySave EQU rgnSave+4 ;handle grafProcs EQU polySave+4 ;Pointer PORTREC EQU grafProcs+4 ;SIZE OF A GRAFPORT PORTBOUNDS EQU PORTBITS+BOUNDS ENDIF ; if not including quickequ ;----------------------------------------------------- ; ; OFFSETS IN A REGION STATE RECORD: ; RGNPTR EQU 0 ;LONG DATAPTR EQU RGNPTR+4 ;LONG SCANBUF EQU DATAPTR+4 ;LONG SCANSIZE EQU SCANBUF+4 ;WORD THISV EQU SCANSIZE+2 ;WORD NEXTV EQU THISV+2 ;WORD MINH EQU NEXTV+2 ;WORD MAXH EQU MINH+2 ;WORD LEFTH EQU MAXH+2 ;WORD RGNREC EQU LEFTH+2 ;SIZE OF A REGION RECORD ;----------------------------------------------------- ; ; Offsets in a PicSave record: ; thePic EQU 0 ;PICHANDLE picMax EQU thePic+4 ;LongInt picIndex EQU picMax+4 ;LongInt picClipRgn EQU picIndex+4 ;RgnHandle picBkPat EQU picClipRgn+4 ;Pattern picTxFont EQU picBkPat+8 ;WORD picTxFace EQU picTxFont+2 ;Style picTxMode EQU picTxFace+2 ;WORD picTxSize EQU picTxMode+2 ;WORD picSpExtra EQU picTxSize+2 ;Fixed Point picTxNumer EQU picSpExtra+4 ;Point picTxDenom EQU picTxNumer+4 ;Point picTxLoc EQU picTxDenom+4 ;Point picPnLoc EQU picTxLoc+4 ;Point picPnSize EQU picPnLoc+4 ;Point picPnMode EQU picPnSize+4 ;WORD picPnPat EQU picPnMode+2 ;Pattern picFillPat EQU picPnPat+8 ;Pattern picTheRect EQU picFillPat+8 ;Rect picOvSize EQU picTheRect+8 ;Point picOrigin EQU picOvSize+4 ;Point picFgColor EQU picOrigin+4 ;Long picBkColor EQU picFgColor+4 ;Long picQdChExtra EQU picBkColor+4 ;Fixed <3><10> picQdRunSlop EQU picQdChExtra+4 ;Fixed <3><10> picFontList EQU picQdRunSlop+4 ;Handle <3><10> picVersion EQU picFontList+4 ;picture version (0-based) picGlyphState EQU picVersion+2 ;Long, outline preferred, preserve glyph, fractional widths, scale disable flags <15> picReserve1 EQU picGlyphState+4 ;Long picSaveRec EQU picReserve1+4 ;total size in bytes ;------ START OF ADDITION FROM ColorEqu.a by KON ---------- pictVersion EQU 1 ;version number for pict npicVersion EQU $2FF ;version number for npic ;----------------------------------------------- ; ; PICTURE OPCODES ; opNOP EQU $0 ; nop opcode opClip EQU $1 ; clip opcode opBkPat EQU $2 ; background pattern opcode opTxFont EQU $3 ; text font opcode opTxFace EQU $4 ; text face opcode opTxMode EQU $5 ; text mode opcode opSpExtra EQU $6 ; space extra opcode opPnSize EQU $7 ; pen size opcode opPnMode EQU $8 ; pen mode opcode opPnPat EQU $9 ; pen pattern opcode opFillPat EQU $A ; fill pattern opcode opOvSize EQU $B ; oval size opcode opOrigin EQU $C ; origin opcode opTxSize EQU $D ; text size opcode opFgColor EQU $E ; foreground color opcode opBkColor EQU $F ; background color opcode opTxRatio EQU $10 ; text ratio opcode opVersion EQU $11 ; version opcode opBkPixPat EQU $12 ; color background pattern opcode opPnPixPat EQU $13 ; color pen pattern opcode opFillPixPat EQU $14 ; color fill pattern opcode opPnLocHFrac EQU $15 ; fractional pen position opcode opChExtra EQU $16 ; extra for each character ; opcode $17 unused opIFore EQU $18 ; foreColor index opcode opIBack EQU $19 ; backColor index opcode opRGBFgCol EQU $1A ; RGB foreColor opcode opRGBBkCol EQU $1B ; RGB backColor opcode opHiliteMode EQU $1C ; hilite mode flag opHiliteColor EQU $1D ; RGB hilite color opDefHilite EQU $1E ; Use default hilite color opOpColor EQU $1F ; RGB OpColor for arithmetic modes opLine EQU $20 ; line opcode opLineFrom EQU $21 ; line from opcode opShortLine EQU $22 ; short line opcode opShortLineFrom EQU $23 ; short line from opcode opLongText EQU $28 ; long text opcode opDHText EQU $29 ; dh text opcode opDVText EQU $2A ; dv text opcode opDHDVText EQU $2B ; dh,dv text opcode opFontName EQU $2C ; font name/id binding opLineLayout EQU $2D ; script manager line-layout state opGlyphState EQU $2E ; TrueType glyph drawing state <15> opBitsRect EQU $90 ; copybits, rect clipped opcode opBitsRgn EQU $91 ; copybits, rgn clipped opcode opPackBitsRect EQU $98 ; packed copybits, rect clipped opcode opPackBitsRgn EQU $99 ; packed copybits, rgn clipped opcode opShortComment EQU $A0 ; short comment opcode opLongComment EQU $A1 ; long comment opcode opEndPic EQU $FF ; end of picture opcode ngHeaderOp EQU $0C00 ; NuGraf Header opcode ;----------------------------------------------- ; ; COLOR QUICKDRAW EQUATES ; nurbMask EQU $7FFF ; mask top 2 bits of rowbytes rbMask EQU $1FFF ; mask top 3 bits of rowbytes PMFlag EQU $8000 ; flag to say it's a new pixMap cPortFlag EQU $C000 ; isPixMap+isCPort pixVersion EQU $0000 ; isPixMap qdStackXtra EQU $0640 ; stack space left for interrupts <1.4> BAL isPixMap EQU 15 ; for testing high bit of pRowbytes isCPort EQU 14 ; indicates that "bitmap" belongs to port ;----------------------------------------------- ; ; COLOR QUICKDRAW OFFSETS ; ;----------------------------------------------- ; ; OFFSETS WITHIN A PIXELMAP ; pBaseAddr EQU 0 ; [long] pNewFlag EQU pBaseAddr+4 ; [1 bit] upper bit of rowbytes is flag pRowBytes EQU pBaseAddr+4 ; [word] pBounds EQU pRowBytes+2 ; [rect] IF 0 THEN ; Seems pretty Scary Bruce pmVersion EQU pBounds+8 ; [word] pixMap version number ENDIF IF (&TYPE('pmVersion') = 'UNDEFINED') THEN pmVersion EQU $E ; [word] pixMap version number ENDIF packType EQU pmVersion+2 ; [word] defines packing format packSize EQU packType+2 ; [long] size of pixel data hRes EQU packSize+4 ; [fixed] h. resolution (ppi) vRes EQU hRes+4 ; [fixed] v. resolution (ppi) pixelType EQU vRes+4 ; [word] defines pixel type pixelSize EQU pixelType+2 ; [word] # bits in pixel cmpCount EQU pixelSize+2 ; [word] # components in pixel cmpSize EQU cmpCount+2 ; [word] # bits per field planeBytes EQU cmpSize+2 ; [long] offset to next plane IF 0 THEN pmTable EQU planeBytes+4 ; [long] color map pmReserved EQU pmTable+4 ; [long] MUST BE 0 pmRec EQU pmReserved+4 ; size of pixelMap record ENDIF MACRO UNLINK .*-------------------------------------------------------------- .* .* UNLINK A6, STRIP PARAMETERS, AND RETURN. .* .* FIRST PARAM IS NUMBER OF BYTES OF STACK BIAS. .* UNLK A6 ;RELEASE LOCAL VARIABLES .* IF &Eval(&Syslst[1])=0 THEN;NO PARAMETERS ? RTS ;THEN JUST RTS .* ELSEIF &Eval(&Syslst[1])=4 THEN;4 BYTES ? MOVE.L (SP)+, (SP) ;STRIP PARAMETERS RTS ;RETURN ELSE RTD_ &Eval(&Syslst[1]) ;STRIP PARAMETERS AND RETURN ENDIF .* <16> dc.b &Syslst[2] ;PUT OUT THE STRING .* <16> align 2 ; align for following function or procedure <15> .* ENDM MACRO RTD_ &parm1 IF &SETTING('MACHINE') <> 'MC68000' THEN RTD #&parm1 ELSE IF &Eval(&parm1) = 0 THEN rts ELSEIF &Eval(&parm1)=4 THEN;4 BYTES ? move.l (SP)+, (SP) ;STRIP PARAMETERS rts ;RETURN ELSEIF &Eval(&parm1)<=8 THEN move.l (sp), &parm1(sp) addq #&parm1, sp rts ELSE move.l (sp), &parm1(sp) add.w #&parm1, sp rts ENDIF ENDIF ENDM ;----- END OF ADDITION from ColorEqu.a by KON ----------- IF &TYPE('__IncludingQuickEqu__') = 'UNDEFINED' THEN ;----------------------------------------------------- ; ; QuickDraw GLOBAL VARIABLES: ; ; 52(A5) CONTAINS A POINTER TO THEPORT. ; ALL OTHER GLOBAL VARIABLES ARE EXPRESSED RELATIVE TO THEPORT. ; GRAFGLOBALS EQU 0 ;A5 OFFSET TO GLOBALPTR ;----------------------------------------------------------- ; ; QuickDraw PUBLIC GLOBAL VARIABLES: ; thePort EQU 0 ;GrafPtr white EQU thePort-8 ;Pattern black EQU white-8 ;Pattern gray EQU black-8 ;Pattern ltGray EQU gray-8 ;Pattern dkGray EQU ltGray-8 ;Pattern arrow EQU dkGray-68 ;Cursor screenBits EQU arrow-14 ;BitMap randSeed EQU screenBits-4 ;LONGINT ;------------------------------------------------------------ ; ; QuickDraw private global variables: ; wideOpen EQU randSeed-4 ;RgnHandle wideMaster EQU wideOpen-4 ;RgnPtr wideData EQU wideMaster-10 ;Fake Region rgnBuf EQU wideData-4 ;PointsHandle rgnIndex EQU rgnBuf-2 ;INTEGER rgnMax EQU rgnIndex-2 ;INTEGER playPic EQU rgnMax-4 ;Long QDSpare0 EQU playPic-2 ;unused word thePoly EQU QDSpare0-4 ;POLYHANDLE polyMax EQU thePoly-2 ;INTEGER patAlign EQU polyMax-4 ;Point fixTxWid EQU patAlign-4 ;Fixed Point fontPtr EQU fixTxWid-4 ;long, ^FMOutput record playIndex EQU fontPtr-4 ;long pnLocFixed EQU playIndex-2 ;word, horizontal pen fraction <4> qdRunSlop EQU pnLocFixed-4 ;fixed point, Script Mgr run slop <9><10> qdChExtra EQU qdRunSlop-4 ;fixed point, Script Mgr char extra <9><10> QDSpare8 EQU qdChExtra-2 ;unused word <9> QDSpare9 EQU QDSpare8-2 ;unused word QDSpareA EQU QDSpare9-2 ;unused word QDSpareB EQU QDSpareA-2 ;unused word QDSpareC EQU QDSpareB-2 ;unused word QDSpareD EQU QDSpareC-2 ;unused word lastGrafGlob EQU QDSpareD grafSize EQU 4-lastGrafGlob ;total size in bytes ENDIF ; IF not including quickequ ;---------------------------------------------- ; ; Trap table equates used by QuickDraw: ; IF onMac THEN xToolTable EQU $C00 ; start addr on macplus ELSE xToolTable EQU $E00 ; start addr on aladin ENDIF JStdArc EQU xToolTable+(4*$BD) JStdBits EQU xToolTable+(4*$EB) JStdComment EQU xToolTable+(4*$F1) JStdGetPic EQU xToolTable+(4*$EE) JStdLine EQU xToolTable+(4*$90) JStdOval EQU xToolTable+(4*$B6) JStdPoly EQU xToolTable+(4*$C5) JStdPutPic EQU xToolTable+(4*$F0) JStdRect EQU xToolTable+(4*$A0) JStdRgn EQU xToolTable+(4*$D1) JStdRRect EQU xToolTable+(4*$AF) JStdText EQU xToolTable+(4*$82) JStdTxMeas EQU xToolTable+(4*$ED) MACRO _StackAvail MOVE.L $400+4*$65,A0 ;get address of stack space routine JSR (A0) ;get stack space into D0 and return ENDM ;_______________________________________________________________________ ; ; Equates for setting trap option bits ; ;_______________________________________________________________________ IF forROM THEN immed EQU $200 ; execute immediately, bypass I/O queue clear EQU $200 ; async EQU $400 ; asynchronous, don't wait for completion sys EQU $400 ; autoPop EQU $400 ; set autopop bit ENDIF ;---------------------------------------------- ; ; Trap Macros used by QuickDraw: ; MACRO _MLongMul DC.W ($A867) ENDM MACRO _MFixMul DC.W ($A868) ENDM MACRO _MFixRatio DC.W ($A869) ENDM IF forROM THEN _NewHandle OPWORD $A122 _DisposHandle OPWORD $A023 _SetHandleSize OPWORD $A024 _GetHandleSize OPWORD $A025 _HLock OPWORD $A029 _HUnLock OPWORD $A02A ENDIF MACRO _MSysError DC.W ($A9C9) ENDM MACRO _GetScrnBits DC.W ($A833) ;new trap number ENDM MACRO _SwapFont MOVE.L $8E0,A0 ;get pointer to FMSwapFont JSR (A0) ;call font manager ENDM