(FILECREATED "11-Dec-84 14:39:40" {SUMEX-AIM}PS:<LANE.HARMONY>MAGNIFYW.LSP;2 5568   

      previous date: "28-Nov-84 14:35:19" {SUMEX-AIM}PS:<LANE>MAGNIFYW.LSP;28)


(* Copyright (c) 1984 by Christopher Lane. All rights reserved.)

(PRETTYCOMPRINT MAGNIFYWCOMS)

(RPAQQ MAGNIFYWCOMS ((FNS MAGNIFYW UNMAGNIFYW MAGNIFYSCREEN)
		     (FNS MAKEMAGNIFYW MAGNIFYMOVEDFN MAGNIFYBITMAP)
		     (INITVARS MAGNIFYW (\MAGNIFYBM1 (BITMAPCREATE 16 16))
			       (\MAGNIFYBM2 (BITMAPCREATE 128 128)))
		     (CURSORS MAGNIFYCURSOR)
		     (GLOBALVARS MAGNIFYW \MAGNIFYBM1 \MAGNIFYBM2 MAGNIFYCURSOR)))
(DEFINEQ

(MAGNIFYW
  [LAMBDA (WINDOW)                                           (* cdl "28-Nov-84 14:22")
    [WINDOWPROP WINDOW 'CURSORINFN (FUNCTION (LAMBDA (WINDOW)
		    (COND
		      ((ACTIVEWP MAGNIFYW)
			(WINDOWPROP MAGNIFYW 'CURSOR (CURSOR MAGNIFYCURSOR]
    [WINDOWPROP WINDOW 'CURSOROUTFN (FUNCTION (LAMBDA (WINDOW)
		    (COND
		      ((ACTIVEWP MAGNIFYW)
			(CURSOR (WINDOWPROP MAGNIFYW 'CURSOR))
			(CLEARW MAGNIFYW]
    [WINDOWADDPROP WINDOW 'CLOSEFN (FUNCTION (LAMBDA (WINDOW)
		       (COND
			 ((AND (ACTIVEWP MAGNIFYW)
			       (EQ WINDOW (WHICHW)))
			   (CURSOR (WINDOWPROP MAGNIFYW 'CURSOR))
			   (CLEARW MAGNIFYW]
    [WINDOWPROP WINDOW 'CURSORMOVEDFN (FUNCTION (LAMBDA (WINDOW)
		    (COND
		      ((ACTIVEWP MAGNIFYW)
			(MAGNIFYMOVEDFN WINDOW (CURSORPOSITION NIL WINDOW]
    (MAKEMAGNIFYW)
    [COND
      ((EQ WINDOW (WHICHW))
	(WINDOWPROP MAGNIFYW 'CURSOR (CURSOR MAGNIFYCURSOR))
	(MAGNIFYMOVEDFN WINDOW (CURSORPOSITION NIL WINDOW]
    MAGNIFYW])

(UNMAGNIFYW
  [LAMBDA (WINDOW)                                           (* cdl "28-Nov-84 08:32")
    (WINDOWPROP WINDOW 'CURSORINFN NIL)
    (WINDOWPROP WINDOW 'CURSOROUTFN NIL)
    (WINDOWPROP WINDOW 'CLOSEFN NIL)
    (WINDOWPROP WINDOW 'CURSORMOVEDFN NIL)
    (COND
      ((EQ WINDOW (WHICHW))
	(CURSOR (WINDOWPROP MAGNIFYW 'CURSOR))
	(CLEARW MAGNIFYW)))
    WINDOW])

(MAGNIFYSCREEN
  [LAMBDA NIL                                                (* cdl "28-Nov-84 14:20")
    (PROG ((WINDOW (WHICHW))
	   (CURSOR (CURSOR MAGNIFYCURSOR))
	   POSITION OLDPOSITION)
          (MAKEMAGNIFYW)
          (while (MOUSESTATE UP)
	     do (COND
		  ([with POSITION (SETQ POSITION (CURSORPOSITION NIL WINDOW POSITION))
			 (OR (NEQ XCOORD (fetch (POSITION XCOORD) of OLDPOSITION))
			     (NEQ YCOORD (fetch (POSITION YCOORD) of OLDPOSITION]
		    (MAGNIFYMOVEDFN WINDOW POSITION)
		    (swap POSITION OLDPOSITION)))
		(BLOCK))
          (CURSOR CURSOR)
          (CLEARW MAGNIFYW])
)
(DEFINEQ

(MAKEMAGNIFYW
  [LAMBDA NIL                                                (* cdl "28-Nov-84 14:27")
    (COND
      ((NOT (WINDOWP MAGNIFYW))
	(WINDOWPROP (SETQ MAGNIFYW (CREATEW (GETBOXREGION (CONSTANT (WIDTHIFWINDOW 128))
							  (CONSTANT (HEIGHTIFWINDOW 128 T)))
					    "8x Magnification"))
		    'RESHAPEFN
		    'DON%'T))
      (T (OPENW MAGNIFYW])

(MAGNIFYMOVEDFN
  [LAMBDA (WINDOW POSITION)                                  (* cdl "28-Nov-84 14:05")
    [PROG [(BORDER (WINDOWPROP WINDOW 'BORDER]
          (with POSITION POSITION (with REGION (WINDOWPROP WINDOW 'REGION)
					(BITBLT (SCREENBITMAP)
						[IPLUS BORDER XCOORD LEFT
						       (CONSTANT (IMINUS (fetch (POSITION XCOORD)
									    of (fetch (CURSOR 
										    CURSORHOTSPOT)
										  of MAGNIFYCURSOR]
						[IPLUS BORDER YCOORD BOTTOM
						       (CONSTANT (IMINUS (fetch (POSITION YCOORD)
									    of (fetch (CURSOR 
										    CURSORHOTSPOT)
										  of MAGNIFYCURSOR]
						\MAGNIFYBM1]
    (MAGNIFYBITMAP \MAGNIFYBM1 \MAGNIFYBM2)
    (BITBLT \MAGNIFYBM2 NIL NIL MAGNIFYW])

(MAGNIFYBITMAP
  [LAMBDA (BM1 BM2)                                          (* cdl "27-Nov-84 14:25")
    (bind WORD (SBASE ←(FETCHFIELD '(BITMAP 0 POINTER)
				   BM1))
	  (DBASE ←(FETCHFIELD '(BITMAP 0 POINTER)
			      BM2))
       for BYTE from 0 to 15 as SBYTE from 0 by (CONSTANT (ROT 1 7 16))
       do (SETQ WORD (\GETBASE SBASE BYTE))
	  (for BIT from SBYTE to (IPLUS SBYTE 15)
	     do (\PUTBASEBYTE DBASE BIT (COND
				((BITTEST WORD (MASK.1%'S 15 1))
				  (MASK.1%'S 0 8))
				(T 0)))
		(SETQ WORD (ROT WORD 1 16)))
	  (for DBYTE from (IPLUS SBYTE 16) to (IPLUS SBYTE (CONSTANT (ROT 7 4 16))) by 16
	     do (\MOVEBYTES DBASE SBYTE DBASE DBYTE 16])
)

(RPAQ? MAGNIFYW NIL)

(RPAQ? \MAGNIFYBM1 (BITMAPCREATE 16 16))

(RPAQ? \MAGNIFYBM2 (BITMAPCREATE 128 128))
(RPAQ MAGNIFYCURSOR (CURSORCREATE (READBITMAP) 7 7))
(16 16
"OOOO"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"H@@A"
"OOOO")(DECLARE: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS MAGNIFYW \MAGNIFYBM1 \MAGNIFYBM2 MAGNIFYCURSOR)
)
(PUTPROPS MAGNIFYW.LSP COPYRIGHT ("Christopher Lane" 1984))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (614 2940 (MAGNIFYW 626 . 1775) (UNMAGNIFYW 1779 . 2208) (MAGNIFYSCREEN 2212 . 2937)) (
2942 5067 (MAKEMAGNIFYW 2954 . 3377) (MAGNIFYMOVEDFN 3381 . 4232) (MAGNIFYBITMAP 4236 . 5064)))))
STOP