;;; -*- Mode: Common-Lisp; Package: ZWEI; Base: 10.; Patch-File: T -*-
;;; Written 06/15/89 08:01:41 by BERGER,
;;; Reason: Fixed (DOX-DIAGRAM :DRAW) from calling bitblt with arguments that are out of bounds.
;;; while running on ARIES from band LODX
;;; With SYSTEM 6.5, VIRTUAL-MEMORY 6.1, EH 6.2, MAKE-SYSTEM 6.0, MICRONET 6.0, LOCAL-FILE 6.0,
;;;  BASIC-PATHNAME 6.0, NETWORK-SUPPORT-COLD 6.0, BASIC-NAMESPACE 6.0, NETWORK-NAMESPACE 6.0,
;;;  DISK-IO 6.0, DISK-LABEL 6.0, BASIC-FILE 6.2, MAC-PATHNAME 6.0, NETWORK-PATHNAME 6.0,
;;;  COMPILER 6.2, TV 6.8, DATALINK 6.0, CHAOSNET 6.0, GC 6.2, MEMORY-AUX 6.0, NVRAM 6.0,
;;;  SYSLOG 6.0, STREAMER-TAPE 6.2, UCL 6.0, INPUT-EDITOR 6.0, METER 6.0, ZWEI 6.1,
;;;  DEBUG-TOOLS 6.0, NETWORK-SUPPORT 6.0, NETWORK-SERVICE 6.0, DATALINK-DISPLAYS 6.0,
;;;  FONT-EDITOR 6.1, SERIAL 6.0, PRINTER 6.1, MAC-PRINTER-TYPES 6.1, PRINTER-TYPES 6.0,
;;;  IMAGEN 6.0, SUGGESTIONS 6.0, MAIL-DAEMON 6.2, MAIL-READER 6.0, TELNET 6.0, VT100 6.0,
;;;  NAMESPACE-EDITOR 6.0, PROFILE 6.1, VISIDOC 6.1, TI-CLOS 6.5, CLEH 6.3, IP 3.46,
;;;  Experimental BUG 11.7, Experimental CLX 6.1, CLUE 6.5, NIL X11M 6.1, DECNET 1.68,
;;;  RPC 6.1,  microcode 429, Band Name: Release 6.0 + SLE 6/5

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


(DEFMETHOD (DOX-DIAGRAM :DRAW) (LINE-TO-DRAW SHEET)
  (COND ((OR (NEQ tv:LINE-HEIGHT (W:SHEET-LINE-HEIGHT SHEET))
	     (GETF (zwei:line-plist line-to-draw) :first-time-p nil))
         ;; Rest of fix to make diagram lines come out right on MX
	 (SETF (GETF (zwei:line-plist line-to-draw) :first-time-p) nil)
	 (SETQ tv:LINE-HEIGHT (W:SHEET-LINE-HEIGHT SHEET))
	 (SEND SELF :UPDATE-LINES)))
  (unless (zerop tv:LINE-HEIGHT ) 
  (COND ((OR (NEQ w:HEIGHT (W:SHEET-HEIGHT SELF))
	     (NEQ w:WIDTH  (W:SHEET-WIDTH  SELF)))
	 (SEND SELF :SET-SIZE w:WIDTH (1+ w:HEIGHT))))
  (LET* ((I  (GET (LOCF (LINE-PLIST LINE-TO-DRAW)) :DIAGRAM-LINE-NUMBER))
	 (SX (MIN (+ (W:SHEET-CURSOR-X SHEET) LEFT-MARGIN)
		  (W:SHEET-INSIDE-RIGHT SHEET)))
	 (SY (W:SHEET-CURSOR-Y SHEET))
	 (Y  (* (- I (/ TOP-MARGIN tv:LINE-HEIGHT)) tv:LINE-HEIGHT)))
    (COND ((<= 0. Y w:HEIGHT)
	   (W:PREPARE-SHEET (SHEET)
	     (BITBLT W:ALU-SETA
		     (MIN w:WIDTH (- (W:SHEET-INSIDE-RIGHT SHEET) SX))
		     (MIN tv:LINE-HEIGHT (- w:HEIGHT Y))
		     (SEND SELF :BIT-ARRAY)   0.
		     (min y (1- (array-dimension (SEND SELF :BIT-ARRAY) 0)))  ; DAB 06-09-89
		     (W:SHEET-SCREEN-ARRAY SHEET) SX SY)))))))
))
