;;; -*- Mode: Common-Lisp; Package: User; Base: 10.; Patch-File: T -*-
;;; Patch file for TV version 5.24
;;; Reason: Reduce width & height by line width in send-drawhollowrectangle calls in
;;; (HOLLOW-RECTANGULAR-BLINKER :BLINK), (MAGNIFYING-BLINKER :BEFORE :BLINK) and
;;; (BOX-BLINKER :BLINK) when on the Mac.
;;; Written 12/15/88 16:22:59 by GRENINGER,
;;; while running on MX23 from band TEST
;;; With SYSTEM 5.23, GC 5.4, VIRTUAL-MEMORY 5.5, MICRONET 5.5, MICRONET-COMM 5.13,
;;;  DISK-IO 5.9, BASIC-PATHNAME 5.3, MAC-PATHNAME 5.0, NETWORK-SUPPORT-COLD 5.1,
;;;  BASIC-NAMESPACE 5.8, BASIC-FILE 5.4, RPC 5.5, NFS 5.12, EH 5.3, MAKE-SYSTEM 5.3,
;;;  MEMORY-AUX 5.1, MACTOOLBOX 1.26, COMPILER 5.2, TV 5.22, NVRAM 5.1, UCL 5.0, INPUT-EDITOR 5.0,
;;;  METER 5.0, ZWEI 5.11, DEBUG-TOOLS 5.1, WINDOW-MX 5.31, PRINTER 5.12, MAC-PRINTER-TYPES 5.4,
;;;  NETWORK-PATHNAME 5.0, NETWORK-NAMESPACE 5.0, DATALINK 5.7, CHAOSNET 5.6, Experimental NETWORK-SUPPORT 5.1,
;;;  Experimental NETWORK-SERVICE 5.1, DATALINK-DISPLAYS 5.0, NAMESPACE-EDITOR 5.1,
;;;  IP 3.33, NFS-SERVER 5.3, PRINTER-TYPES 5.5, IMAGEN 5.1, MAIL-DAEMON 5.4, MAIL-READER 5.5,
;;;  TELNET 5.1, VT100 5.1, STREAMER-TAPE 5.7, DECNET 1.47, VISIDOC 5.4, PROFILE 5.1,
;;;  DISK-LABEL 5.1,  microcode 96, Band Name: microExplorer Network (11/22)

#!C
; From file BLINKERS.LISP#> WINDOW; SYS:
#10R TV#:
(COMPILER-LET ((*PACKAGE* (FIND-PACKAGE "TV"))
                          (SI:*LISP-MODE* :COMMON-LISP)
                          (*READTABLE* COMMON-LISP-READTABLE)
                          (SI:*READER-SYMBOL-SUBSTITUTIONS* SYS::*COMMON-LISP-SYMBOL-SUBSTITUTIONS*))
  (COMPILER#:PATCH-SOURCE-FILE "SYS: WINDOW; BLINKERS.#"


(DEFMETHOD (HOLLOW-RECTANGULAR-BLINKER :BLINK) ()
  (LET ((-X-POS- (1- X-POS)) (-Y-POS- (1- Y-POS)) (-HEIGHT- (1+ HEIGHT)) (-WIDTH- (1+ WIDTH)))
    (IF (mac-window-p sheet)
	(LET ((*dont-clip-at-the-margins* t))
	  (send-DrawHollowRectangle -x-pos- -y-pos- (1- -width-) (1- -height-) 1
				    w:black (MOUSE-ALU PHASE) sheet))
      ;; else...
      (%DRAW-RECTANGLE-CLIPPED 1 -HEIGHT-
			       -X-POS-       -Y-POS- (MOUSE-ALU PHASE) SHEET)
      (%DRAW-RECTANGLE-CLIPPED (- -WIDTH- 1) 1
			       (+ -X-POS- 1) -Y-POS- (MOUSE-ALU PHASE)  SHEET)
      (%DRAW-RECTANGLE-CLIPPED 1 (- -HEIGHT- 1)
			       (+ -X-POS- -WIDTH- -1) (+ -Y-POS- 1)
			       (MOUSE-ALU PHASE) SHEET)
      (%DRAW-RECTANGLE-CLIPPED (- -WIDTH- 2) 1
			       (+ -X-POS- 1) (+ -Y-POS- -HEIGHT- -1)
			       (MOUSE-ALU PHASE) SHEET))))

))

#!C
; From file BLINKERS.LISP#> WINDOW; SYS:
#10R TV#:
(COMPILER-LET ((*PACKAGE* (FIND-PACKAGE "TV"))
                          (SI:*LISP-MODE* :COMMON-LISP)
                          (*READTABLE* COMMON-LISP-READTABLE)
                          (SI:*READER-SYMBOL-SUBSTITUTIONS* SYS::*COMMON-LISP-SYMBOL-SUBSTITUTIONS*))
  (COMPILER#:PATCH-SOURCE-FILE "SYS: WINDOW; BLINKERS.#"


(DEFMETHOD (BOX-BLINKER :BLINK) ()
  (IF (mac-window-p sheet)
      (LET ((*dont-clip-at-the-margins* t))
	(send-drawhollowrectangle x-pos y-pos
				  (- width 2) (- height 2) 2
				  w:black (mouse-alu phase) sheet))
      ;; else...
      (%DRAW-RECTANGLE-CLIPPED
	2 HEIGHT X-POS                          Y-POS (MOUSE-ALU PHASE) SHEET)
      (%DRAW-RECTANGLE-CLIPPED
	(- WIDTH 2) 2 (+ X-POS 2)               Y-POS (MOUSE-ALU PHASE) SHEET)
      (%DRAW-RECTANGLE-CLIPPED
	2 (- HEIGHT 2) (+ X-POS WIDTH -2) (+ Y-POS 2) (MOUSE-ALU PHASE) SHEET)
      (%DRAW-RECTANGLE-CLIPPED
	(- WIDTH 4) 2 (+ X-POS 2) (+ Y-POS HEIGHT -2) (MOUSE-ALU PHASE) SHEET)))

))

#!C
; From file BLINKERS.LISP#> WINDOW; SYS:
#10R TV#:
(COMPILER-LET ((*PACKAGE* (FIND-PACKAGE "TV"))
                          (SI:*LISP-MODE* :COMMON-LISP)
                          (*READTABLE* COMMON-LISP-READTABLE)
                          (SI:*READER-SYMBOL-SUBSTITUTIONS* SYS::*COMMON-LISP-SYMBOL-SUBSTITUTIONS*))
  (COMPILER#:PATCH-SOURCE-FILE "SYS: WINDOW; BLINKERS.#"


(DEFMETHOD (MAGNIFYING-BLINKER :BEFORE :BLINK) ()
  (WHEN (NULL PHASE)
    (ARRAY-INITIALIZE ARRAY 0)
    (LET* ((SCREEN-ARRAY (SHEET-SCREEN-ARRAY SHEET))
	   (SWIDTH  (ARRAY-DIMENSION SCREEN-ARRAY 1))
	   (SHEIGHT (ARRAY-DIMENSION SCREEN-ARRAY 0)))
      (WHEN SCREEN-ARRAY
	(DO ((I (+ (TRUNCATE (- X-OFFSET) MAGNIFICATION)
                   X-OFFSET X-POS) (1+ I))
	     (I1 0 (+ I1 MAGNIFICATION)))
	    ((>= I1 WIDTH))
	  (DO ((J (+ (TRUNCATE (- Y-OFFSET) MAGNIFICATION)
                     Y-OFFSET Y-POS) (1+ J))
	       (J1 0 (+ J1 MAGNIFICATION))
	       TEM)
	      ((>= J1 HEIGHT))
	    (WHEN (AND (>= I 0) (< I SWIDTH)
		       (>= J 0) (< J SHEIGHT)
		       (NOT (ZEROP (SETQ TEM (aref SCREEN-ARRAY J I)))))
              ;; Magnify TEM.
	      (DOTIMES (I2 MAGNIFICATION)
		(DOTIMES (J2 MAGNIFICATION)
		  (SETF (aref ARRAY (+ J1 J2) (+ I1 I2)) tem))))))
	(BITBLT (MOUSE-ALU PHASE)
		(- (MIN SWIDTH  (+ X-POS WIDTH))
		   (MAX 0 X-POS))
		(- (MIN SHEIGHT (+ Y-POS HEIGHT))
		   (MAX 0 Y-POS))
		SCREEN-ARRAY (MAX 0 X-POS) (MAX 0 Y-POS)
		ARRAY
		(MAX 0 (- X-POS))
		(MAX 0 (- Y-POS))))))
  ;; Make a box around the whole thing so it can be found if screen is
  ;; blank under it.
  (LET ((-X-POS-  (+ X-POS -1))
        (-Y-POS-  (+ Y-POS -1))
	(-HEIGHT- (+ 2 HEIGHT))
        (-WIDTH-  (+ 2 WIDTH)))
    (IF (mac-window-p sheet)
	(LET ((*dont-clip-at-the-margins* t))
	  (send-drawhollowrectangle -x-pos- -y-pos- (1- -width-) (1- -height-)
				    1 w:black (mouse-alu phase) sheet))
    ;; else...
    (%DRAW-RECTANGLE-CLIPPED 1 -HEIGHT-
                             -X-POS-       -Y-POS- (MOUSE-ALU PHASE) SHEET)
    (%DRAW-RECTANGLE-CLIPPED (- -WIDTH- 1) 1
                             (+ -X-POS- 1) -Y-POS- (MOUSE-ALU PHASE) SHEET)
    (%DRAW-RECTANGLE-CLIPPED 1 (- -HEIGHT- 1)
			     (+ -X-POS- -WIDTH- -1) (+ -Y-POS- 1)
			     (MOUSE-ALU PHASE) SHEET)
    (%DRAW-RECTANGLE-CLIPPED (- -WIDTH- 2) 1
			     (+ -X-POS- 1) (+ -Y-POS- -HEIGHT- -1)
			     (MOUSE-ALU PHASE) SHEET))))

))
