; Version: 2.26 ; Created: Wednesday, July 12, 1989 at 1:35:29 PM ; ; File: Quickdraw.a ; ; Assembler Interface to the Macintosh Libraries ; Copyright Apple Computer, Inc. 1984-1992 ; All Rights Reserved ; ; Change History (most recent first): ; ; 02-19-93 jmp Added a new gdFlag: Bit 5, roundedDevice. ; 1/25/93 kc Rename equate (alpha to xalpha) to avoid name collision. (We ; should use records instead of an equates to avoid the problem). ; 7/7/92 CSS Roll in the following changes from reality and rename this ; file from QuickEqu.a to QuickDraw.a per <23>. ; <25> 7/6/92 KON No longer need bits 5 and 6 in gdFlags. Move bit 4 to bit 6. ; <24> 6/30/92 KON Add three new gdFlags: Bit 4 hasAuxMenuBar, Bit 5 ; pixelsAreSlewSlow, and Bit 6 whiteIsOff. ; <23> 6/30/92 DCL This file is the replacement for the now obsolete QuickEqu.a. ; Changed the 'including' name to match the new file name. ; 6/4/92 KW (fau,P2) Added XColorSpec to support the alpha channel on ; Cyclone. KW commented out value,rgb to prevent warning ; <22> 6/14/91 JL Checked in official MPW 3.2Ä version. Moved the color manager ; equates; they were in the middle of GrafPort. ; <21> 1/30/91 gbm sab, #38: Change the Ôalready including this fileÕ variable to ; all uppercase (for security reasons) ; <20> 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. ; <19> 1/18/91 JT Expand pnLocFixed into a full fixed-point number in the ; QuickDraw globals area. ; <18> 12/14/90 KON Change name of PICT2Header to OpenCPicParams.[smc] ; <17> 9/24/90 KON Fix Pict2Header record. ; <16> 9/15/90 KON Added PICT2Header record. ; <15> 9/14/90 csd Added equates for the DeviceLoop call. ; <14> 8/26/90 PKE Deleted old names QDSmgrSlop and QDSmgrCharExtra. ; <13> 8/23/90 PKE (per JT) Renamed QDSmgrSlop and QDSmgrCharExtra to qdRunSlop and ; qdChExtra. Keep old names too until we can update all relevant ; sources. ; <12> 8/17/90 dvb Change grayishTextCopy to grayishTextOr ; <11> 8/2/90 PKE Claim two previously unused longs in fontData globals for Script ; Mgr charExtra and slop. ; <10> 7/17/90 DVB Add "GrayishTextCopy" mode. ; <9> 5/30/90 JT Claimed the first word of the fontData globals for the ; horizontal pen fraction. ; <8> 5/15/90 KON Add equates for RGBDirect, baseAddr32, ditherCopy. ; <4> 2/2/90 BAL Moved 32-bit addressing flag and Burst mode flag down one in bit ; ordering since monitors is already using bit 9 for a swapped out ; debugger screen. ; <3> 1/30/90 DAF Added GDFlag bit flag equates for 32-bit addressable frame ; buffers and block transfer capabilities. ; <2> 1/11/90 DVB Add the equate "ctFlags", which is the correct name of the ; obsolete "transIndex" field of a color table. ; <1> 12/17/89 CCH Adding for the first time into BBS. ; <1.1> 6/10/89 CEL Moved Private.a QuickDraw Equates into proper QuickDraw private ; file (colorequ.a), got rid of QuickDraw nFiles dependencies and ; fixed up necessary filesÉ ; <1.0> 11/9/88 CCH Adding to EASE. ; <¥1.1> 9/14/88 CCH Updated EASE with the current rev of this file. ; 8/25/87 KLH MatchRec restored, it is used. ; 7/7/87 KLH MatchRec removed, no longer used. ; 7/2/87 KLH mainScrn & scrnActive changed to mainScreen & screenActive ; 5/8/87 KLH protect changed to protectBit ; 3/16/87 KLH pmNewFlag is same offset as pmRowBytes in PixMap record. ; 1/13/87 DAF Moved BadEntry equate in for colormgr and renamed it ; invalColReq. ; 12/15/86 DAF added gamma table format ; 11/9/86 DAF added request list structure ; 9/23/86 NSJ new this date ; ; To Do: ;__________________________________________________________________________________________________ ;EASE$$$ READ ONLY COPY of file ÒQuickEqu.aÓ ; 1.1 CEL 06/10/1989 Moved Private.a QuickDraw Equates into proper QuickDraw ; private file (colorequ.a), got rid of QuickDraw nFiles dependencies ; and fixed up necessary filesÉ ; 1.0 CCH 11/ 9/1988 Adding to EASE. ; END EASE MODIFICATION HISTORY ;¥1.1 CCH 9/14/1988 Updated EASE with the current rev of this file. ; ; Modification history ; ; <23sep86> NSJ new this date ; DAF added request list structure ; DAF added gamma table format ; DAF Moved BadEntry equate in for colormgr and renamed it invalColReq. ; 16 Mar 87 KLH pmNewFlag is same offset as pmRowBytes in PixMap record. ; 8 May 87 KLH protect changed to protectBit ; 2 Jul 87 KLH mainScrn & scrnActive changed to mainScreen & screenActive ; to agree w/ screenDevice ; *** MPW 2.0 *** ; 7 Jul 87 KLH MatchRec removed, no longer used. ; 25 Aug 87 KLH MatchRec restored, it is used. ;-------------------------------------------------------------------- IF &TYPE('__INCLUDINGQUICKDRAW__') = 'UNDEFINED' THEN __INCLUDINGQUICKDRAW__ SET 1 ; 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 ; Arithmetic transfer modes blend EQU 32 addPin EQU 33 addOver EQU 34 subPin EQU 35 adMax EQU 37 subOver EQU 38 adMin EQU 39 ; Special text mode grayishTextOr EQU 49 ditherCopy EQU 64 ;promote source to 32-bit and then dither down ; Flags passed to DeviceLoop singleDevicesBit EQU 0 dontMatchSeedsBit EQU 1 allDevicesBit EQU 2 singleDevices EQU 1 dontMatchSeeds EQU 2 allDevices EQU 4 ; Definitions for Font Style Bits (right to left) boldBit EQU 0 ; Transparent mode constant transparent EQU 36 italicBit EQU 1 ulineBit EQU 2 outlineBit EQU 3 shadowBit EQU 4 condenseBit EQU 5 extendBit EQU 6 ; FontInfo record ascent EQU 0 ; ascent [word] descent EQU 2 ; descent [word] widMax EQU 4 ; maximum width [word] leading EQU 6 ; leading [word] ; Rectangle structure topLeft EQU 0 ; upper left corner [point] botRight EQU 4 ; lower right corner [point] top EQU 0 ; top coordinate [word] left EQU 2 ; left coordinate [word] bottom EQU 4 ; bottom coordinate [word] right EQU 6 ; right coordinate [word] ; Bitmap Structure baseAddr EQU 0 ; bitmap base address [pointer] rowBytes EQU 4 ; row bytes (must be even) [word] bounds EQU 6 ; bounding box [rectangle] bitmapRec EQU 14 ; size of a bitmap ; Cursor Structure data EQU 0 ; visible bits [32 bytes] mask EQU $20 ; mask bits [32 bytes] hotSpot EQU $40 ; relative origin [point] cursRec EQU 68 ; size of a cursor ; PenState record psLoc EQU 0 ; pen location [point] psSize EQU 4 ; pen size [point] psMode EQU 8 ; pen mode [word] psPat EQU 10 ; pen [pattern] psRec EQU 18 ; size of pen state ; Polygon record polySize EQU 0 ; total bytes [word] polyBBox EQU 2 ; bounding box [rectangle] polyPoints EQU 10 ; vertices [Points] ; Region Structure rgnSize EQU 0 ; total bytes [word] rgnBBox EQU 2 ; bounding box [rectangle] rgnData EQU 10 ; region data [array] ; Picture Structure picSize EQU 0 ; total bytes [word] picFrame EQU 2 ; bounding box [rectangle] picData EQU 10 ; picture byte codes [array] OpenCPicParams RECORD 0 srcRect ds.w 4 hRes ds.l 1 vRes ds.l 1 version ds.w 1 reserved1 ds.w 1 reserved2 ds.l 1 ENDR ; QDProcs structure textProc EQU 0 ; [pointer] lineProc EQU 4 ; [pointer] rectProc EQU 8 ; [pointer] rRectProc EQU $C ; [pointer] ovalProc EQU $10 ; [pointer] arcProc EQU $14 ; [pointer] polyProc EQU $18 ; [pointer] rgnProc EQU $1C ; [pointer] bitsProc EQU $20 ; [pointer] commentProc EQU $24 ; [pointer] txMeasProc EQU $28 ; [pointer] getPicProc EQU $2C ; [pointer] putPicProc EQU $30 ; [pointer] qdProcsRec EQU $34 ; size of QDProcs record ; GrafPort Structure device EQU $0 ; device code [word] portBits EQU $2 ; port's bitmap [bitmap] portBounds EQU $8 ; bounding box of bitmap [rect] portRect EQU $10 ; port's rectangle [rect] visRgn EQU $18 ; visible region [handle] clipRgn EQU $1C ; clipping region [handle] bkPat EQU $20 ; background [pattern] fillPat EQU $28 ; fill [pattern] pnLoc EQU $30 ; pen location [point] pnSize EQU $34 ; pen size [point] pnMode EQU $38 ; pen mode [word] pnPat EQU $3A ; pen [pattern] pnVis EQU $42 ; pen visible [word] txFont EQU $44 ; text font [word] txFace EQU $46 ; text face [word] txMode EQU $48 ; text mode [word] txSize EQU $4A ; text size [word] spExtra EQU $4C ; space extra [fixed] fgColor EQU $50 ; foreground color mask [long] bkColor EQU $54 ; background color mask [long] colrBit EQU $58 ; color bit [word] patStretch EQU $5A ; pattern stretch [word] picSave EQU $5C ; picture being saved [handle] rgnSave EQU $60 ; region being saved [handle] polySave EQU $64 ; polygon being saved [handle] grafProcs EQU $68 ; QDProcs array [pointer] portRec EQU $6C ; size of grafport ; QuickDraw Global Variables GrafGlobals EQU 0 ; A5 offset to globptr 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 ; color manager equates ; RGBColor structure red EQU $0 ;red channel intensity [short] green EQU $2 ;green channel intensity[short] blue EQU $4 ;blue channel intensity [short] rgbColor EQU $6 ;size of record ; ColorSpec structure value EQU $0 ;value field [short] rgb EQU $2 ;rgb values [rgbColor] colorSpecSize EQU $8 ;size of record ; XColorSpec structure value,rgb commented out to prevent ;warning ;value EQU $0 ;value field [short] ;rgb EQU $2 ;rgb values [rgbColor] xalpha EQU $8 xColorSpecSize EQU $a ;size of record ; MatchRec structure ;red EQU $0 ;defined in RGBColor ;green EQU $2 ;defined in RGBColor ;blue EQU $4 ;defined in RGBColor matchData EQU $6 ; [long] matchRecSize EQU $A ; 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 yellowBit EQU 6 magentaBit EQU 7 ; for ink jet printer 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 ; Standard Picture Comments picLParen EQU 0 picRParen EQU 1 ; QuickDraw verbs frame EQU 0 paint EQU 1 erase EQU 2 invert EQU 3 fill EQU 4 ; 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 fontAdj EQU patAlign-4 ;Fixed Point fontPtr EQU fontAdj-4 ;long, ^FMOutput record playIndex EQU fontPtr-4 ;long pnLocFixed EQU playIndex-2 ;word, horizontal pen fraction <9> qdRunSlop EQU pnLocFixed-4 ;fixed point, Script Mgr run slop <11><13> qdChExtra EQU qdRunSlop-4 ;fixed point, Script Mgr char extra <11><13> fontData EQU qdChExtra-12 ;unused words <9><11><13> lastGrafGlob EQU fontData grafSize EQU 4-lastGrafGlob ;total size in bytes ; A record version of the Quickdraw globals ; It is here rather than with the complementary equates because it needs other equates ; ...(bitmapRec, grafSize, cursRec) QDGlobals RECORD 0,DECREMENT thePort DS.L 1 white DS.B 8 black DS.B 8 gray DS.B 8 ltGray DS.B 8 dkGray DS.B 8 arrow DS.B cursRec screenBits DS.B bitmapRec randSeed DS.L 1 ORG -grafSize ENDR ;************** FROM HERE TO THE ENDIF IS ALL THE NEW STUFF FOR COLOR QUICKDRAW ************* hiliteBit EQU 7 ; flag bit in HiliteMode (lowMem flag) ; Equates for resource ID's defQDColors EQU 127 ; resource ID of clut for default QDColors ; ; PixMap field offsets pmBaseAddr EQU $0 ; [long] pmNewFlag EQU $4 ; [1 bit] upper bit of rowbytes is flag pmRowBytes EQU $4 ; [word] pmBounds EQU $6 ; [rect] pmVersion EQU $E ; [word] pixMap version number pmPackType EQU $10 ; [word] defines packing format pmPackSize EQU $12 ; [long] size of pixel data pmHRes EQU $16 ; [fixed] h. resolution (ppi) pmVRes EQU $1A ; [fixed] v. resolution (ppi) pmPixelType EQU $1E ; [word] defines pixel type pmPixelSize EQU $20 ; [word] # bits in pixel pmCmpCount EQU $22 ; [word] # components in pixel pmCmpSize EQU $24 ; [word] # bits per field pmPlaneBytes EQU $26 ; [long] offset to next plane pmTable EQU $2A ; [long] color map pmReserved EQU $2E ; [long] MUST BE 0 pmRec EQU $32 ; size of pixMap record ; pixel types chunky EQU 0 chunkyPlanar EQU 1 planar EQU 2 RGBDirect EQU 16 ; ; pmVersion values baseAddr32 EQU 4 ; pixmap base address is 32-bit address ; PixPat field offsets ; patType EQU $0 ; [word] type of pattern patMap EQU $2 ; [long] handle to pixmap patData EQU $6 ; [long] handle to data patXData EQU $A ; [long] handle to expanded pattern data patXValid EQU $E ; [word] flags whether expanded pattern valid patXMap EQU $10 ; [long] handle to expanded pattern data pat1Data EQU $14 ; [8 bytes] old-style pattern/RGB color ppRec EQU $1C ; size of pixPat record ; Pattern types ; oldPat EQU 0 ; foreground/background pattern newPat EQU 1 ; self-contained color pattern ditherPat EQU 2 ; rgb value to be dithered oldCrsrPat EQU $8000 ; old-style cursor cCrsrPat EQU $8001 ; new-style cursor ; additional offsets in a color GrafPort ; portPixMap EQU portBits ; [long] pixelMap handle portVersion EQU portPixMap+4 ; [word] port version number grafVars EQU portVersion+2 ; [long] handle to more fields chExtra EQU grafVars+4 ; [word] character extra pnLocHFrac EQU chExtra+2 ; [word] pen fraction bkPixPat EQU bkPat ; [long] handle to bk pattern rgbFgColor EQU bkPixPat+4 ; [6 bytes] RGB components of fg color rgbBkColor EQU rgbFgColor+6 ; [6 bytes] RGB components of bk color pnPixPat EQU pnPat ; [long] handle to pen's pattern fillPixPat EQU pnPixPat+4 ; [long] handle to fill pattern ; GDevice field offsets ; gdRefNum EQU $0 ; [word] unitNum of driver gdID EQU $2 ; [word] client ID for search procs gdType EQU $4 ; [word] fixed/CLUT/direct gdITable EQU $6 ; [long] handle to inverse table gdResPref EQU $A ; [word] preferred resolution for inverse tables gdSearchProc EQU $C ; [long] search proc (list?) pointer gdCompProc EQU $10 ; [long] complement proc (list?) pointer gdFlags EQU $14 ; [word] grafDevice flags word gdPMap EQU $16 ; [long] handle to pixMap describing device gdRefCon EQU $1A ; [long] reference value gdNextGD EQU $1E ; [long] handle of next gDevice gdRect EQU $22 ; [rect] device's bounds in global coordinates gdMode EQU $2A ; [long] device's current mode gdCCBytes EQU $2E ; [word] depth of expanded cursor data gdCCDepth EQU $30 ; [word] depth of expanded cursor data gdCCXData EQU $32 ; [long] handle to cursor's expanded data gdCCXMask EQU $36 ; [long] handle to cursor's expanded mask gdReserved EQU $3A ; [long] MUST BE 0 gdRec EQU $3E ; size of GrafDevice record ; VALUES FOR GDType clutType EQU 0 ; 0 if lookup table fixedType EQU 1 ; 1 if fixed table directType EQU 2 ; 2 if direct values ; BIT ASSIGNMENTS FOR GDFlags gdDevType EQU 0 ; 0 = monochrome; 1 = color roundedDevice Equ 05 ; 1 if device has been ÒroundedÓ into the GrayRgn hasAuxMenuBar EQU 06 ; 1 if device has an Aux menu bar on it BurstDevice EQU 07 ; 1 if this device support burst xfer ext32Device EQU 08 ; 1 if this device must be accessed in 32-bit mode frozenDevice EQU 09 ; reserved for future use ramInit EQU 10 ; 1 if initialized from 'scrn' resource mainScreen EQU 11 ; 1 if main screen allInit EQU 12 ; 1 if all devices initialized screenDevice EQU 13 ; 1 if screen device [not used] noDriver EQU 14 ; 1 if no driver for this GDevice screenActive EQU 15 ; 1 if in use ; CCrsr (Color Cursor) field offsets ; ; NOTE THAT THE FIRST FOUR FIELDS ARE PARALLEL TO THE FIRST FOUR FIELDS ; OF A PATTERN SO THAT PATCONVERT CAN BE USED TO EXPAND A CURSOR ; crsrType EQU 0 ;[WORD] CURSOR TYPE crsrMap EQU crsrType+2 ;[LONG] HANDLE TO CURSOR'S PIXMAP crsrData EQU crsrMap+4 ;[LONG] HANDLE TO CURSOR'S COLOR DATA crsrXData EQU crsrData+4 ;[LONG] HANDLE TO EXPANDED DATA crsrXValid EQU crsrXData+4 ;[WORD] DEPTH OF EXPANDED DATA (0 IF NONE) crsrXHandle EQU crsrXValid+2 ;[LONG] HANDLE FOR FUTURE USE crsr1Data EQU crsrXHandle+4 ;[16 WORDS] ONE-BIT DATA crsrMask EQU crsr1Data+32 ;[16 WORDS] ONE-BIT MASK crsrHotSpot EQU crsrMask+32 ;[POINT] HOT-SPOT FOR CURSOR crsrXTable EQU crsrHotSpot+4 ;[LONG] TABLE ID FOR EXPANDED DATA crsrID EQU crsrXTable+4 ;[LONG] ID FOR CURSOR crsrRec EQU crsrID+4 ;SIZE OF CURSOR SAVE AREA ; CIcon (Color Icon) field offsets ; iconPMap EQU 0 ;[PIXMAP] ICON'S PIXMAP iconMask EQU iconPMap+pmRec ;[BITMAP] 1-BIT VERSION OF ICON ONE-BIT MASK FOR ICON iconBMap EQU iconMask+bitmapRec ;[BITMAP] 1-BIT VERSION OF ICON iconData EQU iconBMap+bitmapRec ;[LONG] HANDLE TO PIXMAP DATA ;FOLLOWED BY BMAP AND MASK DATA iconRec EQU iconData+4 ;SIZE OF ICON HEADER ; ; Gamma Table format ; gVersion EQU 0 ; [word] gamma version number gType EQU gVersion+2 ; [word] gamma data type gFormulaSize EQU gType+2 ; [word] Formula data size gChanCnt EQU gFormulaSize+2 ; [word] number of channels of data gDataCnt EQU gChanCnt+2 ; [word] number of values/channel gDataWidth EQU gDataCnt+2 ; [word] bits/corrected value (data packed to next larger byte size) gFormulaData EQU gDataWidth+2 ; [array] data for formulas, followed by gamma values ; EXTENSIONS TO THE QDPROCS RECORD ; opcodeProc EQU $34 ; [pointer] newProc1 EQU $38 ; [pointer] newProc2 EQU $3C ; [pointer] newProc3 EQU $40 ; [pointer] newProc4 EQU $44 ; [pointer] newProc5 EQU $48 ; [pointer] newProc6 EQU $4C ; [pointer] cqdProcsRec EQU $50 ; size of QDProcs record ; OFFSETS WITHIN GRAFVARS: ; rgbOpColor EQU 0 ; [6 bytes] color for addPin, subPin and average rgbHiliteColor EQU rgbOpColor+6 ; [6 bytes] color for hiliting pmFgColor EQU rgbHiliteColor+6 ; [4 bytes] palette handle for foreground color pmFgIndex EQU pmFgColor+4 ; [2 bytes] index value for foreground pmBkColor EQU pmFgIndex+2 ; [4 bytes] palette handle for background color pmBkIndex EQU pmBkColor+4 ; [2 bytes] index value for background pmFlags EQU pmBkIndex+2 ; [2 bytes] flags for Palette Manager grafVarRec EQU pmFlags+2 ; size of grafVar record ; ColorTable field offsets ctSeed EQU 0 ; [long] id number for table transIndex EQU ctSeed+4 ; [word] index of transparent pixel (obsolete) ctFlags EQU ctSeed+4 ; [word] hibh bit: 0 = PixMap; 1 = device ctSize EQU ctFlags+2 ; [word] number of entries in CTTable ctTable EQU ctSize+2 ; [variant] array of color spec ctRec EQU ctTable ; size of record without color table ctEntrySize EQU 8 ; size of each entry in table minSeed EQU 1023 ; minimum seed value (< minSeed reserved for rsrc ID's) protectBit EQU 7 ; protect bit in device color table reserveBit EQU 6 ; reserve bit in device color table invalColReq EQU -1 ; invalid color table request ; CProcRec structure nxtComp EQU $0 ;link to next proc [pointer] compProc EQU $4 ;pointer to routine [pointer] cProcSize EQU 8 ; size of CProcRec ; SProcRec structure nxtSrch EQU $0 ;[pointer] link to next proc srchproc EQU $4 ;[pointer] pointer to routine sProcSize EQU 8 ; size of SProcRec ; request List structure reqLSize EQU 0 ; request list size [word] reqLData EQU 2 ; request list data [words] ; Point structure v EQU 0 ; vertical coordinate [word] h EQU 2 ; horizontal coordinate [word] ENDIF ; ...already included