// 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): // // 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. //-------------------------------------------------------------------- #ifndef __INCLUDINGQUICKDRAW__ #define __INCLUDINGQUICKDRAW__ 1 // Transfer modes #define srcCopy 0 #define srcOr 1 #define srcXor 2 #define srcBic 3 #define notSrcCopy 4 #define notSrcOr 5 #define notSrcXor 6 #define notSrcBic 7 #define patCopy 8 #define patOr 9 #define patXor 10 #define patBic 11 #define notPatCopy 12 #define notPatOr 13 #define notPatXor 14 #define notPatBic 15 // Arithmetic transfer modes #define blend 32 #define addPin 33 #define addOver 34 #define subPin 35 #define adMax 37 #define subOver 38 #define adMin 39 // Special text mode #define grayishTextOr 49 #define ditherCopy 64 //promote source to 32-bit and then dither down // Flags passed to DeviceLoop #define singleDevicesBit 0 #define dontMatchSeedsBit 1 #define allDevicesBit 2 #define singleDevices 1 #define dontMatchSeeds 2 #define allDevices 4 // Definitions for Font Style Bits (right to left) #define boldBit 0 // Transparent mode constant #define transparent 36 #define italicBit 1 #define ulineBit 2 #define outlineBit 3 #define shadowBit 4 #define condenseBit 5 #define extendBit 6 // FontInfo record #define ascent 0 // ascent [word] #define descent 2 // descent [word] #define widMax 4 // maximum width [word] #define leading 6 // leading [word] // Rectangle structure #define topLeft 0 // upper left corner [point] #define botRight 4 // lower right corner [point] #define top 0 // top coordinate [word] #define left 2 // left coordinate [word] #define bottom 4 // bottom coordinate [word] #define right 6 // right coordinate [word] // Bitmap Structure #define baseAddr 0 // bitmap base address [pointer] #define rowBytes 4 // row bytes (must be even) [word] #define bounds 6 // bounding box [rectangle] #define bitmapRec 14 // size of a bitmap // Cursor Structure //#define data 0 // visible bits [32 bytes] #define mask $20 // mask bits [32 bytes] #define hotSpot $40 // relative origin [point] #define cursRec 68 // size of a cursor // PenState record #define psLoc 0 // pen location [point] #define psSize 4 // pen size [point] #define psMode 8 // pen mode [word] #define psPat 10 // pen [pattern] #define psRec 18 // size of pen state // Polygon record #define polySize 0 // total bytes [word] #define polyBBox 2 // bounding box [rectangle] #define polyPoints 10 // vertices [Points] // Region Structure #define rgnSize 0 // total bytes [word] #define rgnBBox 2 // bounding box [rectangle] #define rgnData 10 // region data [array] // Picture Structure #define picSize 0 // total bytes [word] #define picFrame 2 // bounding box [rectangle] #define picData 10 // picture byte codes [array] #define OpenCPicParams 0 #define OpenCPicParams_srcRect 0 #define OpenCPicParams_hRes 8 #define OpenCPicParams_vRes 12 #define OpenCPicParams_version 16 #define OpenCPicParams_reserved1 18 #define OpenCPicParams_reserved2 20 // endr OpenCPicParams // QDProcs structure #define textProc 0 // [pointer] #define lineProc 4 // [pointer] #define rectProc 8 // [pointer] #define rRectProc $C // [pointer] #define ovalProc $10 // [pointer] #define arcProc $14 // [pointer] #define polyProc $18 // [pointer] #define rgnProc $1C // [pointer] #define bitsProc $20 // [pointer] #define commentProc $24 // [pointer] #define txMeasProc $28 // [pointer] #define getPicProc $2C // [pointer] #define putPicProc $30 // [pointer] #define qdProcsRec $34 // size of QDProcs record // GrafPort Structure #define device $0 // device code [word] #define portBits $2 // port's bitmap [bitmap] #define portBounds $8 // bounding box of bitmap [rect] #define portRect $10 // port's rectangle [rect] #define visRgn $18 // visible region [handle] #define clipRgn $1C // clipping region [handle] #define bkPat $20 // background [pattern] #define fillPat $28 // fill [pattern] #define pnLoc $30 // pen location [point] #define pnSize $34 // pen size [point] #define pnMode $38 // pen mode [word] #define pnPat $3A // pen [pattern] #define pnVis $42 // pen visible [word] #define txFont $44 // text font [word] #define txFace $46 // text face [word] #define txMode $48 // text mode [word] #define txSize $4A // text size [word] #define spExtra $4C // space extra [fixed] #define fgColor $50 // foreground color mask [long] #define bkColor $54 // background color mask [long] #define colrBit $58 // color bit [word] #define patStretch $5A // pattern stretch [word] #define picSave $5C // picture being saved [handle] #define rgnSave $60 // region being saved [handle] #define polySave $64 // polygon being saved [handle] #define grafProcs $68 // QDProcs array [pointer] #define portRec $6C // size of grafport // QuickDraw Global Variables #define GrafGlobals 0 // A5 offset to globptr #define thePort 0 //GrafPtr #define white (thePort-8) //Pattern #define black (white-8) //Pattern #define gray (black-8) //Pattern #define ltGray (gray-8) //Pattern #define dkGray (ltGray-8) //Pattern #define arrow (dkGray-68) //Cursor #define screenBits (arrow-14) //BitMap #define randSeed (screenBits-4) //LONGINT // color manager equates // RGBColor structure #define red $0 //red channel intensity [short] #define green $2 //green channel intensity[short] #define blue $4 //blue channel intensity [short] #define rgbColor $6 //size of record // ColorSpec structure #define value $0 //value field [short] #define rgb $2 //rgb values [rgbColor] #define colorSpecSize $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] #define alpha $8 #define xColorSpecSize $a //size of record // MatchRec structure //red EQU $0 ;defined in RGBColor //green EQU $2 ;defined in RGBColor //blue EQU $4 ;defined in RGBColor #define matchData $6 // [long] #define matchRecSize $A // Color Separation #define normalBit 0 // normal screen mapping #define inverseBit 1 // inverse screen mapping #define redBit 4 // RGB additive mapping #define greenBit 3 // for photos from screen #define blueBit 2 #define cyanBit 8 // CMYBk subtractive mapping #define yellowBit 6 #define magentaBit 7 // for ink jet printer #define blackBit 5 #define blackColor 33 #define whiteColor 30 #define redColor 205 #define greenColor 341 #define blueColor 409 #define cyanColor 273 #define magentaColor 137 #define yellowColor 69 // Standard Picture Comments #define picLParen 0 #define picRParen 1 // QuickDraw verbs #define frame 0 #define paint 1 #define erase 2 #define invert 3 #define fill 4 // QuickDraw private global variables #define wideOpen (randSeed-4) //RgnHandle #define wideMaster (wideOpen-4) //RgnPtr #define wideData (wideMaster-10) //Fake Region #define rgnBuf (wideData-4) //PointsHandle #define rgnIndex (rgnBuf-2) //INTEGER #define rgnMax (rgnIndex-2) //INTEGER #define playPic (rgnMax-4) //Long #define qdSpare0 (playPic-2) //unused word #define thePoly (qdSpare0-4) //POLYHANDLE #define polyMax (thePoly-2) //INTEGER #define patAlign (polyMax-4) //Point #define fontAdj (patAlign-4) //Fixed Point #define fontPtr (fontAdj-4) //long, ^FMOutput record #define playIndex (fontPtr-4) //long #define pnLocFixed (playIndex-2) //word, horizontal pen fraction <9> #define qdRunSlop (pnLocFixed-4) //fixed point, Script Mgr run slop <11><13> #define qdChExtra (qdRunSlop-4) //fixed point, Script Mgr char extra <11><13> #define fontData (qdChExtra-12) //unused words <9><11><13> #define lastGrafGlob (fontData) #define grafSize (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) //*********** THESE VALUES ARE WRONG. DON'T USE /// //#define QDGlobals 0,DECREMENT //#define QDGlobals_thePort 0 //#define QDGlobals_white 4 //#define QDGlobals_black 12 //#define QDGlobals_gray 20 //#define QDGlobals_ltGray 28 //#define QDGlobals_dkGray 36 //***CONFUSED***:arrow DS.B cursRec //***CONFUSED***:screenBits DS.B bitmapRec //#define QDGlobals_randSeed 44 //***CONFUSED***: ORG -grafSize // endr QDGlobals //********************************************* //************** FROM HERE TO THE ENDIF IS ALL THE NEW STUFF FOR COLOR QUICKDRAW ************* #define hiliteBit 7 // flag bit in HiliteMode (lowMem flag) // Equates for resource ID's #define defQDColors 127 // resource ID of clut for default QDColors // // PixMap field offsets #define pmBaseAddr $0 // [long] #define pmNewFlag $4 // [1 bit] upper bit of rowbytes is flag #define pmRowBytes $4 // [word] #define pmBounds $6 // [rect] #define pmVersion $E // [word] pixMap version number #define pmPackType $10 // [word] defines packing format #define pmPackSize $12 // [long] size of pixel data #define pmHRes $16 // [fixed] h. resolution (ppi) #define pmVRes $1A // [fixed] v. resolution (ppi) #define pmPixelType $1E // [word] defines pixel type #define pmPixelSize $20 // [word] # bits in pixel #define pmCmpCount $22 // [word] # components in pixel #define pmCmpSize $24 // [word] # bits per field #define pmPlaneBytes $26 // [long] offset to next plane #define pmTable $2A // [long] color map #define pmReserved $2E // [long] MUST BE 0 #define pmRec $32 // size of pixMap record // pixel types #define chunky 0 #define chunkyPlanar 1 #define planar 2 #define RGBDirect 16 // // pmVersion values #define baseAddr32 4 // pixmap base address is 32-bit address // PixPat field offsets // #define patType $0 // [word] type of pattern #define patMap $2 // [long] handle to pixmap #define patData $6 // [long] handle to data #define patXData $A // [long] handle to expanded pattern data #define patXValid $E // [word] flags whether expanded pattern valid #define patXMap $10 // [long] handle to expanded pattern data #define pat1Data $14 // [8 bytes] old-style pattern/RGB color #define ppRec $1C // size of pixPat record // Pattern types // #define oldPat 0 // foreground/background pattern #define newPat 1 // self-contained color pattern #define ditherPat 2 // rgb value to be dithered #define oldCrsrPat $8000 // old-style cursor #define cCrsrPat $8001 // new-style cursor // additional offsets in a color GrafPort // #define portPixMap (portBits) // [long] pixelMap handle #define portVersion (portPixMap+4) // [word] port version number #define grafVars (portVersion+2) // [long] handle to more fields #define chExtra (grafVars+4) // [word] character extra #define pnLocHFrac (chExtra+2) // [word] pen fraction #define bkPixPat (bkPat) // [long] handle to bk pattern #define rgbFgColor (bkPixPat+4) // [6 bytes] RGB components of fg color #define rgbBkColor (rgbFgColor+6) // [6 bytes] RGB components of bk color #define pnPixPat (pnPat) // [long] handle to pen's pattern #define fillPixPat (pnPixPat+4) // [long] handle to fill pattern // GDevice field offsets // #define gdRefNum $0 // [word] unitNum of driver #define gdID $2 // [word] client ID for search procs #define gdType $4 // [word] fixed/CLUT/direct #define gdITable $6 // [long] handle to inverse table #define gdResPref $A // [word] preferred resolution for inverse tables #define gdSearchProc $C // [long] search proc (list?) pointer #define gdCompProc $10 // [long] complement proc (list?) pointer #define gdFlags $14 // [word] grafDevice flags word #define gdPMap $16 // [long] handle to pixMap describing device #define gdRefCon $1A // [long] reference value #define gdNextGD $1E // [long] handle of next gDevice #define gdRect $22 // [rect] device's bounds in global coordinates #define gdMode $2A // [long] device's current mode #define gdCCBytes $2E // [word] depth of expanded cursor data #define gdCCDepth $30 // [word] depth of expanded cursor data #define gdCCXData $32 // [long] handle to cursor's expanded data #define gdCCXMask $36 // [long] handle to cursor's expanded mask #define gdReserved $3A // [long] MUST BE 0 #define gdRec $3E // size of GrafDevice record // VALUES FOR GDType #define clutType 0 // 0 if lookup table #define fixedType 1 // 1 if fixed table #define directType 2 // 2 if direct values // BIT ASSIGNMENTS FOR GDFlags #define gdDevType 0 // 0 = monochrome; 1 = color #define hasAuxMenuBar 06 // 1 if device has an Aux menu bar on it #define BurstDevice 07 // 1 if this device support burst xfer #define ext32Device 08 // 1 if this device must be accessed in 32-bit mode #define frozenDevice 09 // reserved for future use #define ramInit 10 // 1 if initialized from 'scrn' resource #define mainScreen 11 // 1 if main screen #define allInit 12 // 1 if all devices initialized #define screenDevice 13 // 1 if screen device [not used] #define noDriver 14 // 1 if no driver for this GDevice #define screenActive 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 // #define crsrType 0 //[WORD] CURSOR TYPE #define crsrMap (crsrType+2) //[LONG] HANDLE TO CURSOR'S PIXMAP #define crsrData (crsrMap+4) //[LONG] HANDLE TO CURSOR'S COLOR DATA #define crsrXData (crsrData+4) //[LONG] HANDLE TO EXPANDED DATA #define crsrXValid (crsrXData+4) //[WORD] DEPTH OF EXPANDED DATA (0 IF NONE) #define crsrXHandle (crsrXValid+2) //[LONG] HANDLE FOR FUTURE USE #define crsr1Data (crsrXHandle+4) //[16 WORDS] ONE-BIT DATA #define crsrMask (crsr1Data+32) //[16 WORDS] ONE-BIT MASK #define crsrHotSpot (crsrMask+32) //[POINT] HOT-SPOT FOR CURSOR #define crsrXTable (crsrHotSpot+4) //[LONG] TABLE ID FOR EXPANDED DATA #define crsrID (crsrXTable+4) //[LONG] ID FOR CURSOR #define crsrRec (crsrID+4) //SIZE OF CURSOR SAVE AREA // CIcon (Color Icon) field offsets // #define iconPMap 0 //[PIXMAP] ICON'S PIXMAP #define iconMask (iconPMap+pmRec) //[BITMAP] 1-BIT VERSION OF ICON ONE-BIT MASK FOR ICON #define iconBMap (iconMask+bitmapRec) //[BITMAP] 1-BIT VERSION OF ICON #define iconData (iconBMap+bitmapRec) //[LONG] HANDLE TO PIXMAP DATA //FOLLOWED BY BMAP AND MASK DATA #define iconRec (iconData+4) //SIZE OF ICON HEADER // // Gamma Table format // #define gVersion 0 // [word] gamma version number #define gType (gVersion+2) // [word] gamma data type #define gFormulaSize (gType+2) // [word] Formula data size #define gChanCnt (gFormulaSize+2) // [word] number of channels of data #define gDataCnt (gChanCnt+2) // [word] number of values/channel #define gDataWidth (gDataCnt+2) // [word] bits/corrected value (data packed to next larger byte size) #define gFormulaData (gDataWidth+2) // [array] data for formulas, followed by gamma values // EXTENSIONS TO THE QDPROCS RECORD // #define opcodeProc $34 // [pointer] #define newProc1 $38 // [pointer] #define newProc2 $3C // [pointer] #define newProc3 $40 // [pointer] #define newProc4 $44 // [pointer] #define newProc5 $48 // [pointer] #define newProc6 $4C // [pointer] #define cqdProcsRec $50 // size of QDProcs record // OFFSETS WITHIN GRAFVARS: // #define rgbOpColor 0 // [6 bytes] color for addPin, subPin and average #define rgbHiliteColor (rgbOpColor+6) // [6 bytes] color for hiliting #define pmFgColor (rgbHiliteColor+6) // [4 bytes] palette handle for foreground color #define pmFgIndex (pmFgColor+4) // [2 bytes] index value for foreground #define pmBkColor (pmFgIndex+2) // [4 bytes] palette handle for background color #define pmBkIndex (pmBkColor+4) // [2 bytes] index value for background #define pmFlags (pmBkIndex+2) // [2 bytes] flags for Palette Manager #define grafVarRec (pmFlags+2) // size of grafVar record // ColorTable field offsets #define ctSeed 0 // [long] id number for table #define transIndex (ctSeed+4) // [word] index of transparent pixel (obsolete) #define ctFlags (ctSeed+4) // [word] hibh bit: 0 = PixMap; 1 = device #define ctSize (ctFlags+2) // [word] number of entries in CTTable #define ctTable (ctSize+2) // [variant] array of color spec #define ctRec (ctTable) // size of record without color table #define ctEntrySize 8 // size of each entry in table #define minSeed 1023 // minimum seed value (< minSeed reserved for rsrc ID's) #define protectBit 7 // protect bit in device color table #define reserveBit 6 // reserve bit in device color table #define invalColReq (-1) // invalid color table request // CProcRec structure #define nxtComp $0 //link to next proc [pointer] #define compProc $4 //pointer to routine [pointer] #define cProcSize 8 // size of CProcRec // SProcRec structure #define nxtSrch $0 //[pointer] link to next proc #define srchproc $4 //[pointer] pointer to routine #define sProcSize 8 // size of SProcRec // request List structure #define reqLSize 0 // request list size [word] #define reqLData 2 // request list data [words] // Point structure #define v 0 // vertical coordinate [word] #define h 2 // horizontal coordinate [word] #endif // ...already included