; ; File: DrawingVars.a ; ; Copyright: © 1988-1992 by Apple Computer, Inc., all rights reserved. ; ; Change History (most recent first): ; ; <13> 6/10/92 SAH Brought back in saveStkLowPt local so that Stretch can save and ; restore it properly, rather than munging it (along with most of ; your stack) in low memory situations. ; <12> 10/2/91 DTY Conditionalise last change for TheFuture. ; <11> 10/1/91 KON Save and restore stklowPt (rather than just setting it to sp on ; exit) in stretch. This fixes a bug where someone turns off the ; stack sniffer and then calls stretch which turns it back on. ; <10> 11/12/90 KON Move input rectangles to the very bottom of the stack frame so ; they don't move other stack locations needed by ROM routines as ; in ci class machines. [smc] ; <9> 11/9/90 KON Add newSrcRect, newMaskRect, and newDstRect to Stretchbits stack ; frame. [smc] ; <8> 10/31/90 SMC Add stack frame labels used in fixes of alpha channel bugs. ; <7> 8/26/90 KON Add stack frame variables for 32-bit clean pointers to color ; table used by stretch. ; <6> 8/2/90 gbm change TEMPRECT to TEMPRECTANGLE to avoid conflicts ; <5> 7/20/90 gbm Change some identifiers to cease conflicting with interface ; files ; <4> 5/22/90 KON Add flag to stretch for mode translation and colorizing. Used ; by stretch and passed to makeScaleTbl. Also added RGBFrColor ; and RGBBgColor to stretch stackframe for colorizing at srcbuf. ; <3> 5/1/90 KON Add srcMergeCase and MaskMergeCase variables for stretch. ; <1+> 1/3/90 BAL Added variables (in place) for Indexed to Indexed dithering support. ; <•1.4> 7/14/89 BAL For Aurora: Final CQD ; <1.3> 6/30/89 BAL Added some stack frame vars for future use ; <•1.2> 5/29/89 BAL Blasting in 32-Bit QuickDraw version 1.0 Final ; <•1.1> 4/12/89 BAL Blasting in 32-Bit QuickDraw 1.0B1 ; 1/8/89 BAL Made destPixOffset a long for bfextu in bTransparent ; 11/5/88 BAL Added transfer direction (RUNBUMP) to SeekMask interface. ; 10/3/88 BAL Moved DstRow into the interface for SeekMask; (DstRow<0) -> ; seeking up. Reorganized variables to maintain long word ; alignment through out. ; 10/1/88 BAL Added RUNRTN, rtn to form n-bit run mask from 1-bit scan mask. ; 9/22/88 BAL Moved MINRECT, STACKFREE, and DSTSHIFT up into interface to ; SeekMask. ; 9/21/88 BAL Added RUNBUF, pointer to run encoded blit mask. ; 9/18/88 BAL Broken out from StretchBits, RgnBlt, BitBlt, SeekMask, ; PatExpand, DrawArc, DrawLine, DrawSlab, ColorMap. ; ; To Do: ; ;EASE$$$ READ ONLY COPY of file “drawingvars.a” ;•1.4 BAL 07/14/1989 For Aurora: Final CQD ; 1.3 BAL 06/30/1989 Added some stack frame vars for future use ;•1.2 BAL 05/29/1989 Blasting in 32-Bit QuickDraw version 1.0 Final ;•1.1 BAL 04/12/1989 Blasting in 32-Bit QuickDraw 1.0B1 ; File Drawing Vars.a ; ; Copyright Apple Computer, Inc. 1988 ; All Rights Reserved ; ;------------------------------------------------------------------ ; ; MODIFICATIONS ; ; 18Sep88 BAL Broken out from StretchBits, RgnBlt, BitBlt, SeekMask, PatExpand, ; DrawArc, DrawLine, DrawSlab, ColorMap. ; 21Sep88 BAL Added RUNBUF, pointer to run encoded blit mask. ; 22Sep88 BAL Moved MINRECT, STACKFREE, and DSTSHIFT up into interface to SeekMask. ; 01Oct88 BAL Added RUNRTN, rtn to form n-bit run mask from 1-bit scan mask. ; 03Oct88 BAL Moved DstRow into the interface for SeekMask; (DstRow<0) -> seeking up. ; Reorganized variables to maintain long word alignment through out. ; 05Nov88 BAL Added transfer direction (RUNBUMP) to SeekMask interface. ; 08Jan89 BAL Made destPixOffset a long for bfextu in bTransparent ;---------------------------------------------------- ; ; STACKFRAME LINKED AND LOCALS INITIALIZED BY STRETCHBITS. ; ; A6 OFFSETS OF LOCAL VARIABLES AFTER LINK: ; ; STACK FRAME VARS USED BY SEEKMASK (CALLED BY STRETCHBITS, RGNBLT, DRAWARC, DRAWLINE) ; (NOT USED IN PATEXPAND) RECTFLAG EQU -2 ;WORD VERT EQU RECTFLAG-2 ;WORD RGNBUFFER EQU VERT-4 ;LONG RUNBUF EQU RGNBUFFER-4 ;LONG BUFLEFT EQU RUNBUF-2 ;WORD BUFSIZE EQU BUFLEFT-2 ;WORD EXRTN EQU BUFSIZE-4 ;LONG RUNRTN EQU EXRTN-4 ;LONG SEEKMASK EQU RUNRTN-4 ;LONG DSTMASKBUF EQU SEEKMASK-4 ;LONG DSTMASKALIGN EQU DSTMASKBUF-4 ;LONG STATEA EQU DSTMASKALIGN-RGNREC ;RGN STATE RECORD STATEB EQU STATEA-RGNREC ;RGN STATE RECORD STATEC EQU STATEB-RGNREC ;RGN STATE RECORD MINRECT EQU STATEC-8 ;RECT DSTSHIFT EQU MINRECT-2 ;WORD RUNBUMP EQU DSTSHIFT-2 ;WORD DSTROW EQU RUNBUMP-4 ;LONG GoShow EQU DSTROW-4 ;LONG Go home and show crsr STACKFREE EQU GoShow-4 ;LONG IF (&CurFile ≠ 'SEEKMASK') THEN ; STACK FRAME VARS USED BY PATEXPAND, COLORMAP, DRAWSLAB ; (CALLED BY STRETCHBITS, RGNBLT, BITBLT, DRAWARC, DRAWLINE) ; SET UP FOR BITBLT FOR RGNBLT EXPAT EQU STACKFREE-4 ;LONG YES PATVMASK EQU EXPAT-2 ;WORD (must follow expat) PATHMASK EQU PATVMASK-2 ;WORD (must follow PATVMASK) PATROW EQU PATHMASK-2 ;WORD (must follow PATHMASK) PATHPOS EQU PATROW-2 ;WORD YES filler5 EQU PATHPOS-1 ;BYTE <8> YES alphaMode EQU filler5-1 ;BYTE <8> PATVPOS EQU alphaMode-4 ;LONG <8> YES LOCMODE EQU PATVPOS-2 ;WORD YES LOCPAT EQU LOCMODE-4 ;LONG YES FCOLOR EQU LOCPAT-4 ;LONG YES BCOLOR EQU FCOLOR-4 ;LONG YES useDither EQU BCOLOR-1 ;(was pixsrc) reclaimed 07Jul88 NEWPATTERN EQU useDither-1 ;BYTE YES DSTPIX EQU NEWPATTERN-(PMREC+CTREC+20) ;PIXMAP+COLOR TABLE YES alphaBack EQU DSTPIX-4 ;<8> NOTE THAT THESE alphaMask EQU alphaBack-4 ;<8> OVERLAP WITH weight, pin alphaFore EQU alphaMask-4 ;<8> AND notWeight BELOW IF (&CurFile ≠ 'PATEXPAND') THEN ; these shared stack frame vars are set up and used by the arithmetic drawing modes ; (used by STRETCHBITS, RGNBLT, BITBLT, DRAWARC, DRAWLINE, DRAWSLAB, COLORMAP) weight EQU DSTPIX-6 ;RGB weight for averaging pin EQU weight ;RGB used by max, min notWeight EQU weight-6 ;RGB complement of weight (for average) multiColor EQU notWeight-1 ;byte set if source contains nonblack/white colors MMUsave EQU multiColor-1 ;byte MMU mode on entry to QD FGnotBlack EQU MMUsave-1 ;byte / true if forecolor ≠ black BGnotWhite EQU FGnotBlack-1 ;byte \ true if backcolor ≠ white (must follow FGBlack) colorTable EQU BGnotWhite-4 ;long pointer to color table invColor EQU colorTable-4 ;long pointer to inverse color table invSize EQU invColor-2 ;word resolution of inverse color table rtShift EQU invSize-2 ;Word used by average how far to shift transColor EQU rtShift-4 ;long copy of backcolor for transparent hilitColor EQU transColor-4 ;long hilite color pixels slabLeft EQU hilitColor-4 ;long bit offset from bufleft to pen position patHBitPos EQU slabLeft-4 ;long bit offset to pattern left IF (&CurFile = 'DRAWARC') THEN ; STACK FRAME VARS USED ONLY BY DRAWARC SAVESTK EQU patHBitPos-4 ;LONG MODECASE EQU SAVESTK-4 ;LONG DSTLEFT EQU MODECASE-4 ;LONG TEMPRECTANGLE EQU DSTLEFT-8 ;RECT FASTFLAG EQU TEMPRECTANGLE-2 ;BYTE INNEROVAL EQU FASTFLAG-OVALSIZE ;OVAL RECORD (46) CRSRFLAG EQU INNEROVAL-2 ;WORD OUTEROVAL EQU CRSRFLAG-OVALSIZE ;OVAL RECORD (46) SKIPTOP EQU OUTEROVAL-2 ;WORD SKIPBOT EQU SKIPTOP-2 ;WORD ARCFLAG EQU SKIPBOT-1 ;BYTE FLAG SKIPFLAG EQU ARCFLAG-1 ;BYTE FLAG STOPANGLE EQU SKIPFLAG-2 ;INTEGER MIDVERT EQU STOPANGLE-2 ;INTEGER MIDHORIZ EQU MIDVERT-2 ;INTEGER WIDTH EQU MIDHORIZ-2 ;INTEGER HEIGHT EQU WIDTH-2 ;INTEGER SLOPE1 EQU HEIGHT-4 ;LONG, FIXED POINT SLOPE2 EQU SLOPE1-4 ;LONG, FIXED POINT LINE1 EQU SLOPE2-4 ;LONG, FIXED POINT LINE2 EQU LINE1-4 ;LONG, FIXED POINT FLAG1 EQU LINE2-2 ;WORD FLAG2 EQU FLAG1-2 ;WORD OUTERLEFT EQU FLAG2-2 ;WORD OUTERRIGHT EQU OUTERLEFT-2 ;WORD INNERLEFT EQU OUTERRIGHT-2 ;WORD INNERRIGHT EQU INNERLEFT-2 ;WORD REALBOUNDS EQU INNERRIGHT-4 ;LONG VARSIZE EQU REALBOUNDS ;SIZE OF LOCAL VARIABLES ELSEIF (&CurFile = 'DRAWLINE') THEN ; STACK FRAME VARS USED ONLY BY DRAWLINE LINERECT EQU hilitColor-8 ;RECT SAVESTK EQU LINERECT-4 ;LONG MODECASE EQU SAVESTK-4 ;LONG LEFTEDGE EQU MODECASE-4 ;LONG, FIXED POINT RIGHTEDGE EQU LEFTEDGE-4 ;LONG, FIXED POINT SLOPE EQU RIGHTEDGE-4 ;LONG, FIXED POINT DSTLEFT EQU SLOPE-4 ;LONG SAVEA5 EQU DSTLEFT-4 ;LONG PORT EQU SAVEA5-4 ;LONG FASTFLAG EQU PORT-2 ;BYTE CRSRFLAG EQU FASTFLAG-2 ;WORD BIGRGN EQU CRSRFLAG-4 ;LONG, RgnHandle REALBOUNDS EQU BIGRGN-4 ;LONG VARSIZE EQU REALBOUNDS ;SIZE OF LOCAL VARIABLES ELSEIF (&CurFile = 'DRAWPOLY') THEN ; Stack frame variables used in accord with DrawArc SAVESTK EQU hilitColor-4 ;LONG MODECASE EQU SAVESTK-4 ;LONG DSTLEFT EQU MODECASE-4 ;LONG TEMPRECTANGLE EQU DSTLEFT-8 ;RECT FASTFLAG EQU TEMPRECTANGLE-2 ;BYTE CRSRFLAG EQU FASTFLAG-2 ;SHORT REALBOUNDS EQU CRSRFLAG-4 ;LONG ; Stack frame variables used only in DrawPoly FreeList Equ RealBounds-4 StackLimit Equ FreeList-4 ActiveList Equ StackLimit-4 OldStacker Equ ActiveList-4 VarSize Equ OldStacker ELSEIF ( (&CurFile = 'STRETCH') | (&CurFile = 'RGNBLT') | (&CurFile = 'BITBLT') ) THEN ; MORE SHARED STACK FRAME VARS (STRETCHBITS, RGNBLT, BITBLT) alignSrcPM EQU hilitColor-2 ;WORD SRCPIX EQU alignSrcPM-(PMREC+CTREC+20) ;PIXMAP YES alignMaskPM EQU SRCPIX-2 ;WORD MASKPIX EQU alignMaskPM-(PMREC+CTREC+20) ;PIXMAP YES SRCROW EQU MASKPIX-4 ;LONG YES MASKROW EQU SRCROW-4 ;LONG YES SRCSHIFT EQU MASKROW-2 ;WORD YES MASKSHIFT EQU SRCSHIFT-2 ;WORD YES INVERTFLAG EQU MASKSHIFT-4 ;LONG YES SAVESTK EQU INVERTFLAG-4 ;LONG YES SAVEA5 EQU SAVESTK-4 ;LONG YES SRCBUF EQU SAVEA5-4 ;LONG DSTBUF EQU SRCBUF-4 ;LONG SCALEBUF EQU DSTBUF-4 ;LONG dstBufBump EQU SCALEBUF-4 ;LONG scaleBufBump EQU dstBufBump-4 ;LONG SRCMASKBUF EQU scaleBufBump-4 ;LONG filler1 EQU SRCMASKBUF-2 ;WORD SRCLONGS EQU filler1-2 ;WORD SRCMASKLONGS EQU SRCLONGS-2 ;WORD DSTMASKLONGS EQU SRCMASKLONGS-2 ;WORD DSTLONGS EQU DSTMASKLONGS-2 ;WORD SCALELONGS EQU DSTLONGS-2 ;WORD SRCADDR EQU SCALELONGS-4 ;LONG MASKADDR EQU SRCADDR-4 ;LONG DSTADDR EQU MASKADDR-4 ;LONG SRCLIMIT EQU DSTADDR-4 ;LONG NUMER EQU SRCLIMIT-4 ;POINT DENOM EQU NUMER-4 ;POINT MASKNUMER EQU DENOM-4 ;POINT MASKDENOM EQU MASKNUMER-4 ;POINT MODECASE EQU MASKDENOM-4 ;LONG ; STACK FRAME VARS USED BY STRETCHBITS ONLY RATIOCASE EQU MODECASE-4 ;LONG MASKCASE EQU RATIOCASE-4 ;LONG HORIZFRACTION EQU MASKCASE-2 ;WORD MASKFRACT EQU HORIZFRACTION-2 ;WORD SCALECASE EQU MASKFRACT-4 ;LONG SRCSCANS EQU SCALECASE-2 ;WORD SRCPIXCNT EQU SRCSCANS-2 ;WORD SRCALIGN EQU SRCPIXCNT-4 ;LONG DSTALIGN EQU SRCALIGN-4 ;LONG MASKALIGN EQU DSTALIGN-4 ;LONG ScaleTbl EQU MASKALIGN-4 ;LONG VERROR EQU ScaleTbl-2 ;WORD CRSRFLAG EQU VERROR-2 ;WORD REALBOUNDS EQU CRSRFLAG-4 ;LONG ; STACK FRAME VARS USED BY RGNBLT ONLY FIRSTV EQU REALBOUNDS-2 ;WORD LASTV EQU FIRSTV-2 ;WORD VBUMP EQU LASTV-2 ;WORD, MUST BE ABOVE HBUMP HBUMP EQU VBUMP-2 ;WORD RGNADDR EQU HBUMP-4 ;LONG filler2 EQU RGNADDR-2 ;WORD SRCSIZE EQU filler2-2 ;WORD SAVESTK2 EQU SRCSIZE-4 ;LONG ; STACK FRAME VARS USED BY BITBLT ONLY SRCV EQU SAVESTK2-2 ;WORD DSTV EQU SRCV-2 ;WORD SRCBUMP EQU DSTV-2 ;WORD HEIGHT EQU SRCBUMP-2 ;WORD SRCRECT2 EQU HEIGHT-8 ;RECT FIRSTMASK EQU SRCRECT2-4 ;LONG LONGCNT EQU FIRSTMASK-2 ;WORD ; STACK FRAME VARS USED BY RGNBLT/BITBLT doneMid EQU LONGCNT-1 ;Byte two flags used to control loop endSwitch EQU doneMid-1 ;Byte three-way switch chooses from src, pat, bigpat lastMask EQU endSwitch-4 ;Long mask for last long blitted on line midCount EQU lastMask-2 ;Word # of pixels on line less mask longs - 1 pixInLong EQU midCount-2 ;Word # of pixels in a long - 1 patOffset EQU pixInLong-4 ;Long pattern horizontal initial offset patPos EQU patOffset-2 ;Word pattern vertical offset destPixCnt EQU patPos-2 ;word 1-based cnt of pixels to blit<02Mar89 BAL> destPixOffset EQU destPixCnt-4 ;long destination pixel offset <08Jan89 BAL> pixInLong1 EQU destPixOffset-2 ;Word same as pixInLong, 1 based (for transparent) longBump EQU pixInLong1-2 ;Word 32 signed direction of blit (for transparent) ; MORE STACK FRAME VARS USED BY STRETCHBITS ONLY stITabPtr EQU longBump-4 ;pointer to inverse table (not header) <17Jun88 BAL> stITabInfo EQU stITabPtr-4 ;pointer to luminance table (not header)<17Mar89 BAL> stSProc EQU stITabInfo-4 ;head of search proc list <17Jun88 BAL> stTmpProc EQU stSProc-4 ;working copy of current searchproc <17Jun88 BAL> stCLUTPtr EQU stTmpProc-4 ;ptr to dst clut for dither <28Jun88 BAL> stITabRes EQU stCLUTPtr-2 ;inverse table resolution if direct <17Jun88 BAL> ErrPhase EQU stITabRes-2 ;initial position in src long <07Sep88 BAL> ErrBuf EQU ErrPhase-4 ;ptr to scan of error values <29Aug88 BAL> ErrSrcBuf EQU ErrBuf-4 ;ptr to last position in src buf <07Sep88 BAL> errDir EQU ErrSrcBuf-1 ;err diffusion direction flag <04Sep88 BAL> useAverage EQU errDir-1 ;scaling quality flag <04Sep88 BAL> ABufSize EQU useAverage-2 ;long cnt size of AvrgBuf <04Sep88 BAL> AvrgBuf EQU ABufSize-4 ;ptr to scan of rgb accumulations <04Sep88 BAL> StackHandle EQU AvrgBuf-4 ;MFTemp memory for alternate stack <09Apr89 BAL> FastCase EQU StackHandle-1 ;no invert/copy/no stretch/no colorize<03Apr89 BAL> realDepth EQU FastCase-1 ;byte preserving src depth before RGB conversion <1.5> realSrcShift EQU realDepth-2 ;word preserving src shift before RGB conversion <1.5> scaleBltA3 EQU realSrcShift-4 ;value reloaded into A3 by scaleBlt <1.3> BAL RunBuf2 EQU scaleBltA3-4 ;used for reverse dither run mask <1.3> BAL oldHiHeapMark EQU RunBuf2-4 ;used during stack swapping <1.3> BAL srcMergeCase EQU oldHiHeapMark-4 ;routine for vertical src averaging <17Apr90 KON> maskMergeCase EQU srcMergeCase-4 ;routine for vertical mask averaging<17Apr90 KON> CombineMaskCase EQU maskMergeCase-4 ;routine to blend src and dst using mask <25Apr90 KON> MaskError EQU CombineMaskCase-2 ;error for verical mask scaling <17Apr90 KON> XLateFlag EQU MaskError-2 ;translation flags for mode and colorizing RGBFrColor EQU XLateFlag-6 ;fg color for colorizing at srcbuf RGBBgColor EQU RGBFrColor-6 ;bg color for colorizing at srcbuf SrcPixPmTable EQU RGBBgColor-4 ;32-bit clean pointer to src color table <24AUG90 KON> MaskPixPmTable EQU SrcPixPmTable-4 ;32-bit clean pointer to mask color table <24AUG90 KON> newSrcRect EQU MaskPixPmTable-8 ;Rectangle newMaskRect EQU newSrcRect-8 ;Rectangle newDstRect EQU newMaskRect-8 ;Rectangle saveStkLowPt EQU newDstRect-4 ;long value of stklowpt stReserved1 EQU saveStkLowPt-4 ;long reserved for patches <17Apr90 KON> VARSIZE EQU stReserved1 ;SIZE OF LOCAL VARIABLES ENDIF ;[STRETCH | RGNBLT | BITBLT] ENDIF ;(!PATEXPAND) ENDIF ;(!SEEKMASK)