mirror of
https://github.com/jrk/QuickDraw.git
synced 2025-04-29 09:38:25 +00:00
376 lines
12 KiB
Plaintext
376 lines
12 KiB
Plaintext
|
;-----------------------------------------------------------------
|
||
|
;
|
||
|
; --> GRAFTYPES.TEXT
|
||
|
;
|
||
|
; QUICKDRAW TYPE DECLARATIONS, USED BY ALL GRAPHICS ROUTINES
|
||
|
;
|
||
|
NIL .EQU 0 ;IMPLEMENTATION VALUE OF NIL
|
||
|
|
||
|
|
||
|
;-----------------------------------------------
|
||
|
;
|
||
|
; 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
|
||
|
|
||
|
|
||
|
;-----------------------------------------------------
|
||
|
;
|
||
|
; 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
|
||
|
|
||
|
picSaveRec .EQU picBkColor+4 ;total size in bytes
|
||
|
|
||
|
|
||
|
;-----------------------------------------------------
|
||
|
;
|
||
|
; 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
|
||
|
QDSpare3 .EQU playIndex-2 ;unused word
|
||
|
QDSpare4 .EQU QDSpare3-2 ;unused word
|
||
|
QDSpare5 .EQU QDSpare4-2 ;unused word
|
||
|
QDSpare6 .EQU QDSpare5-2 ;unused word
|
||
|
QDSpare7 .EQU QDSpare6-2 ;unused word
|
||
|
QDSpare8 .EQU QDSpare7-2 ;unused word
|
||
|
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
|
||
|
|
||
|
|
||
|
|
||
|
.MACRO UNLINK
|
||
|
;--------------------------------------------------------------
|
||
|
;
|
||
|
; UNLINK A6, STRIP PARAMETERS, AND RETURN.
|
||
|
;
|
||
|
; FIRST PARAM IS NUMBER OF BYTES OF STACK BIAS.
|
||
|
;
|
||
|
UNLK A6 ;RELEASE LOCAL VARIABLES
|
||
|
|
||
|
.IF %1=0 ;NO PARAMETERS ?
|
||
|
RTS ;THEN JUST RTS
|
||
|
|
||
|
.ELSE
|
||
|
.IF %1=4 ;4 BYTES OF PARAMS ?
|
||
|
MOVE.L (SP)+,(SP) ;YES, STRIP AND ADJUST RET ADDR
|
||
|
RTS
|
||
|
|
||
|
.ELSE ;NOT 0 OR 4 BYTES OF PARAMS
|
||
|
MOVE.L (SP)+,A0 ;POP RETURN ADDR INTO A0
|
||
|
ADD #%1,SP ;STRIP PARAMETERS
|
||
|
JMP (A0) ;JUMP THRU A0 TO RETURN
|
||
|
.ENDC
|
||
|
.ENDC
|
||
|
|
||
|
.ENDM
|
||
|
|
||
|
|
||
|
|
||
|
;----------------------------------------------
|
||
|
;
|
||
|
; Trap Macros used by QuickDraw:
|
||
|
;
|
||
|
|
||
|
.MACRO _LongMul
|
||
|
.WORD $A867
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _FixMul
|
||
|
.WORD $A868
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _FixRatio
|
||
|
.WORD $A869
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _NewHandle
|
||
|
.WORD $A122
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _DisposHandle
|
||
|
.WORD $A023
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _SetHandleSize
|
||
|
.WORD $A024
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _GetHandleSize
|
||
|
.WORD $A025
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _HLock
|
||
|
.WORD $A029
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _HUnlock
|
||
|
.WORD $A02A
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _GetScrnBits
|
||
|
.WORD $A833 ;new trap number
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _StackAvail
|
||
|
MOVE.L SP,D0 ;copy stack pointer
|
||
|
SUB.L $114,D0 ;subtract HeapEnd for stack avail
|
||
|
.ENDM
|
||
|
|
||
|
.MACRO _SwapFont
|
||
|
MOVE.L $8E0,A0 ;get pointer to FMSwapFont
|
||
|
JSR (A0) ;call font manager
|
||
|
.ENDM
|