;;; -*- Mode: Common-Lisp; Package: User; Base: 10.; Patch-File: T -*-
;;; Patch file for TV version 5.25
;;; Reason: Change all calls to send-drawhollowrectangle to agree with new Mac code.
;;; ***  Requires microexplorer task newer than 2/6/89  ***
;;; Written 02/07/89 23:02:13 by GRENINGER,
;;; while running on MX23 from band TEST
;;; With SYSTEM 5.27, GC 5.4, VIRTUAL-MEMORY 5.5, MICRONET 5.5, MICRONET-COMM 5.13,
;;;  DISK-IO 5.9, BASIC-PATHNAME 5.4, MAC-PATHNAME 5.1, NETWORK-SUPPORT-COLD 5.1,
;;;  BASIC-NAMESPACE 5.8, BASIC-FILE 5.4, RPC 5.6, NFS 5.14, EH 5.3, MAKE-SYSTEM 5.3,
;;;  MEMORY-AUX 5.1, MACTOOLBOX 1.35, COMPILER 5.3, TV 5.24, NVRAM 5.1, UCL 5.0, INPUT-EDITOR 5.0,
;;;  METER 5.1, ZWEI 5.12, DEBUG-TOOLS 5.1, WINDOW-MX 5.31, PRINTER 5.12, MAC-PRINTER-TYPES 5.4,
;;;  Experimental NETWORK-PATHNAME 5.1, 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.41, NFS-SERVER 5.3, PRINTER-TYPES 5.5, IMAGEN 5.2,
;;;  MAIL-DAEMON 5.6, MAIL-READER 5.6, TELNET 5.2, VT100 5.1, STREAMER-TAPE 5.7, DECNET 1.49,
;;;  VISIDOC 5.4, PROFILE 5.1, DISK-LABEL 5.1, Experimental MX-SERIAL 1.1,  microcode 96,
;;;  Band Name: NB22+1/8 patches

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


(DEFUN draw-hollow-rectangle (width height x y border alu window &optional (pattern w:100%-gray))
  "Draws a hollow rectangle with a border of thickness 'border' pixels."
  (IF (mac-window-p window)
      (LET ((*dont-clip-at-the-margins* t))
	(send-DrawHollowRectangle x y width height border pattern alu window))
    ;;... else
    (LET ((right (+ x width (- border)))
	  (bottom (+ y height (- border))))
      (draw-shaded-rectangle border (1- height) x y alu window pattern)
      (draw-shaded-rectangle (1- width) border (1+ x) y alu window pattern)
      (draw-shaded-rectangle (1- width) border x bottom alu window pattern)
      (draw-shaded-rectangle border (1- height) right (1+ y) alu window pattern))))

))

#!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- -width- -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 height 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- -width- -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))))

))
