mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-21 18:35:32 +00:00
4325cdcc78
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
195 lines
5.4 KiB
Plaintext
195 lines
5.4 KiB
Plaintext
;EASE$$$ READ ONLY COPY of file ÒRRECTS.m.aÓ
|
|
; 1.1 CCH 11/11/1988 Fixed Header.
|
|
; 1.0 CCH 11/ 9/1988 Adding to EASE.
|
|
; OLD REVISIONS BELOW
|
|
; 1.2 CCH 10/12/1988 Changed Òm.GrafType.aÓ to ÒGrafType.m.aÓ.
|
|
; 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
|
|
|
|
|
|
BLANKS ON
|
|
STRING ASIS
|
|
|
|
INCLUDE 'GRAFTYPES.m.a'
|
|
|
|
;-----------------------------------------------------------
|
|
;
|
|
;
|
|
; **** **** ***** *** ***** ***
|
|
; * * * * * * * * * *
|
|
; * * * * * * * *
|
|
; **** **** *** * * ***
|
|
; * * * * * * * *
|
|
; * * * * * * * * * *
|
|
; * * * * ***** *** * ***
|
|
;
|
|
;
|
|
; procedures for operating on RoundRects.
|
|
;
|
|
;
|
|
|
|
StdRRect PROC EXPORT
|
|
IMPORT CheckPic,DPutPicByte,PutPicVerb,PutPicLong,PutPicRect
|
|
IMPORT PutOval,PushVerb,DrawArc
|
|
;---------------------------------------------------------------
|
|
;
|
|
; PROCEDURE StdRRect(verb: GrafVerb; r: Rect; ovWd,ovHt: INTEGER);
|
|
;
|
|
; A6 OFFSETS OF PARAMS AFTER LINK:
|
|
;
|
|
PARAMSIZE EQU 10
|
|
VERB EQU PARAMSIZE+8-2 ;GRAFVERB
|
|
RECT EQU VERB-4 ;LONG, ADDR OF RECT
|
|
OVWD EQU RECT-2 ;WORD
|
|
OVHT EQU OVWD-2 ;WORD
|
|
|
|
LINK A6,#0 ;NO LOCALS
|
|
MOVEM.L D7/A3-A4,-(SP) ;SAVE REGS
|
|
MOVE.B VERB(A6),D7 ;GET VERB
|
|
JSR CHECKPIC ;SET UP A4,A3 AND CHECK PICSAVE
|
|
BLE.S NOTPIC ;BRANCH IF NOT PICSAVE
|
|
|
|
MOVE.B D7,-(SP) ;PUSH VERB
|
|
JSR PutPicVerb ;PUT ADDIONAL PARAMS TO THEPIC
|
|
;
|
|
; CHECK FOR NEW OVAL SIZE
|
|
;
|
|
MOVE.L PICSAVE(A3),A0 ;GET PICSAVE HANDLE
|
|
MOVE.L (A0),A0 ;DE-REFERENCE PICSAVE
|
|
MOVE.L OVHT(A6),D0 ;GET OVWD AND OVHT
|
|
CMP.L PICOVSIZE(A0),D0 ;SAME AS CURRENT OVAL SIZE ?
|
|
BEQ.S OVALOK ;YES, CONTINUE
|
|
MOVE.L D0,PICOVSIZE(A0) ;NO, UPDATE STATE VARIABLE
|
|
MOVE.L D0,-(SP) ;PUSH OVSIZE FOR PutPicLong CALL
|
|
MOVEQ #$0B,D0
|
|
JSR DPutPicByte ;PUT OVSIZE OPCODE
|
|
JSR PutPicLong ;PUT NEW OVAL SIZE DATA
|
|
|
|
OVALOK MOVEQ #$40,D0 ;PUT RRECT NOUN IN HI NIBBLE
|
|
ADD D7,D0 ;PUT VERB IN LO NIBBLE
|
|
MOVE.B D0,-(SP) ;PUSH OPCODE
|
|
MOVE.L RECT(A6),-(SP) ;PUSH ADDR OF RECT
|
|
JSR PutPicRect ;PUT OPCODE AND RECTANGLE
|
|
|
|
NOTPIC MOVE.L RECT(A6),-(SP) ;PUSH ADDR OF RECT
|
|
CLR.B -(SP) ;PUSH HOLLOW = FALSE
|
|
TST.B D7 ;IS VERB FRAME ?
|
|
BNE.S DOIT ;NO, CONTINUE
|
|
TST.L RGNSAVE(A3) ;YES, IS RGNSAVE TRUE ?
|
|
BEQ.S NOTRGN ;NO, CONTINUE
|
|
|
|
MOVE.L RECT(A6),-(SP) ;YES, PUSH ADDR OF RECT
|
|
MOVE.L OVHT(A6),-(SP) ;PUSH OVWD, OVHT
|
|
MOVE.L RGNBUF(A4),-(SP) ;PUSH RGNBUF
|
|
PEA RGNINDEX(A4) ;PUSH VAR RGNINDEX
|
|
PEA RGNMAX(A4) ;PUSH VAR RGNMAX
|
|
JSR PutOval ;ADD AN OVAL TO THERGN
|
|
|
|
NOTRGN MOVE.B #1,(SP) ;REPLACE, PUSH HOLLOW = TRUE
|
|
DOIT MOVE.L OVHT(A6),-(SP) ;PUSH OVWD,OVHT
|
|
JSR PushVerb ;PUSH MODE AND PATTERN
|
|
CLR -(SP) ;PUSH STARTANGLE = 0
|
|
MOVE #360,-(SP) ;PUSH ARCANGLE = 360
|
|
|
|
; DrawArc(r,hollow,ovWd,ovHt,mode,pat,startAng,arcAng);
|
|
|
|
JSR DrawArc
|
|
|
|
MOVEM.L (SP)+,D7/A3-A4 ;RESTORE REGS
|
|
UNLINK PARAMSIZE,'STDRRECT'
|
|
|
|
|
|
|
|
FrameRoundRect PROC EXPORT
|
|
EXPORT CallRRect,PaintRoundRect,EraseRoundRect
|
|
EXPORT InvertRoundRect,FillRoundRect
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE FrameRoundRect(* r: Rect; ovWd,ovHt: INTEGER *);
|
|
;
|
|
MOVEQ #FRAME,D0 ;VERB = FRAME
|
|
BRA.S CallRRect ;SHARE COMMON CODE
|
|
|
|
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE PaintRoundRect(* r: Rect; ovWd,ovHt: INTEGER *);
|
|
;
|
|
PaintRoundRect
|
|
MOVEQ #PAINT,D0 ;VERB = PAINT
|
|
BRA.S CallRRect ;SHARE COMMON CODE
|
|
|
|
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE EraseRoundRect(* r: Rect; ovWd,ovHt: INTEGER *);
|
|
;
|
|
EraseRoundRect
|
|
MOVEQ #ERASE,D0 ;VERB = ERASE
|
|
BRA.S CallRRect ;SHARE COMMON CODE
|
|
|
|
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE InvertRoundRect(* r: Rect; ovWd,ovHt: INTEGER *);
|
|
;
|
|
InvertRoundRect
|
|
MOVEQ #INVERT,D0 ;VERB = INVERT
|
|
BRA.S CallRRect ;SHARE COMMON CODE
|
|
|
|
|
|
;--------------------------------------------------------
|
|
;
|
|
; PROCEDURE FillRoundRect(r: Rect; ovWd,ovHt: INTEGER; pat: Pattern);
|
|
;
|
|
FillRoundRect
|
|
MOVE.L (SP)+,A0 ;POP RETURN ADDR
|
|
MOVE.L (SP)+,A1 ;POP ADDR OF PATTERN
|
|
MOVE.L A0,-(SP) ;PUT RETURN ADDR BACK
|
|
MOVE.L GRAFGLOBALS(A5),A0 ;POINT TO LISAGRAF GLOBALS
|
|
MOVE.L THEPORT(A0),A0 ;GET CURRENT GRAFPORT
|
|
LEA FILLPAT(A0),A0 ;POINT TO FILLPAT
|
|
MOVE.L (A1)+,(A0)+ ;COPY PAT INTO FILLPAT
|
|
MOVE.L (A1)+,(A0)+ ;ALL EIGHT BYTES
|
|
MOVEQ #FILL,D0 ;VERB = FILL
|
|
BRA.S CallRRect ;SHARE COMMON CODE
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
;
|
|
; PROCEDURE CallRRect(r: Rect; ovWd,ovHt: INTEGER);
|
|
;
|
|
; code shared by FrameRoundRect, PaintRoundRect, EraseRoundRect,
|
|
; InvertRoundRect, and FillRoundRect.
|
|
; enter with verb in D0.
|
|
;
|
|
CallRRect
|
|
MOVE.L (SP)+,A0 ;POP RETURN ADDR
|
|
MOVE.L (SP)+,D1 ;POP ovWd and ovHt
|
|
MOVE.L (SP)+,A1 ;POP ADDR OF RECT
|
|
MOVE.B D0,-(SP) ;PUSH VERB
|
|
MOVE.L A1,-(SP) ;PUSH ADDR OF RECT
|
|
MOVE.L D1,-(SP) ;PUSH ovWd and ovHt
|
|
MOVE.L A0,-(SP) ;RESTORE RETURN ADDR
|
|
MOVE.L GRAFGLOBALS(A5),A0 ;POINT TO LISAGRAF GLOBALS
|
|
MOVE.L THEPORT(A0),A0 ;GET CURRENT GRAFPORT
|
|
MOVE.L GRAFPROCS(A0),D0 ;IS GRAFPROCS NIL ?
|
|
MOVE.L JStdRRect,A0 ;get piece of trap table
|
|
BEQ.S USESTD ;YES, USE STD PROC
|
|
MOVE.L D0,A0
|
|
MOVE.L RRECTPROC(A0),A0 ;NO, GET PROC PTR
|
|
USESTD JMP (A0) ;GO TO IT
|
|
|
|
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|