From 90fdcb9d560f0db56fa7a85a85fb51df17000103 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Thu, 21 Aug 2025 10:43:24 -0700 Subject: [PATCH] Rmk121 Modernize the EDITBM window (#2265) * Modernize the EDITBM window so that it can be moved and resized like other modern windows * Move lispusers/FASTEDITBM to obsolete/lispusers It isn't used, doesn't even have an LCOM. But maybe it would be worth resurrecting at some time in the future. --- {lispusers => obsolete/lispusers}/FASTEDITBM | 0 sources/HLDISPLAY | 251 ++++++++----------- sources/HLDISPLAY.LCOM | Bin 64053 -> 63687 bytes 3 files changed, 111 insertions(+), 140 deletions(-) rename {lispusers => obsolete/lispusers}/FASTEDITBM (100%) diff --git a/lispusers/FASTEDITBM b/obsolete/lispusers/FASTEDITBM similarity index 100% rename from lispusers/FASTEDITBM rename to obsolete/lispusers/FASTEDITBM diff --git a/sources/HLDISPLAY b/sources/HLDISPLAY index a9053517..e6743ff2 100644 --- a/sources/HLDISPLAY +++ b/sources/HLDISPLAY @@ -1,23 +1,23 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "15-Mar-94 10:48:02" {DSK}nilsson>mnw>HLDISPLAY.;5 206399 - changes to%: (FNS \GETREGION.CHECKBASEPT DSPYSCREENTOWINDOW DSPXSCREENTOWINDOW - \GETREGION.CHECKOPPT GETGRIDBOXREGION NEAREST/PT/ON/GRID EDITBMBUTTONFN) +(FILECREATED " 2-Aug-2025 10:16:35"  +{DSK}kaplan>Local>medley3.5>working-medley>sources>HLDISPLAY.;2 205096 - previous date%: "25-Feb-94 14:50:58" {DSK}nilsson>mnw>HLDISPLAY.;4) + :EDIT-BY rmk + :CHANGES-TO (FNS EDITBM) + + :PREVIOUS-DATE "15-Mar-94 10:48:02" +{DSK}kaplan>Local>medley3.5>working-medley>sources>HLDISPLAY.;1) -(* ; " -Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, 1993, 1994 by Venue & Xerox Corporation. All rights reserved. -") (PRETTYCOMPRINT HLDISPLAYCOMS) -(RPAQQ HLDISPLAYCOMS +(RPAQQ HLDISPLAYCOMS ( (* ; "GRID functions") (FNS GRID GRIDXCOORD GRIDYCOORD LEFTOFGRIDCOORD BOTTOMOFGRIDCOORD SHADEGRIDBOX) (* ; - "Low level compatibility and extensions") + "Low level compatibility and extensions") (FNS INSIDE?) [COMS (* ; "Mouse selection code") (FNS MOUSESTATE-EXPR MOUSESTATE-NAME) @@ -29,8 +29,7 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (* ; "High Level Display utilities") (FNS DECODEBUTTONS) (FNS PTDIFFERENCE PTPLUS) - (COMS (* ; - "User interaction for regions, etc") + (COMS (* ; "User interaction for regions, etc") (FNS GETPOSITION GETBOXPOSITION DSPYSCREENTOWINDOW DSPXSCREENTOWINDOW GETREGION \GETREGION.PACKPTS \GETREGION.CHECKBASEPT \GETREGION.CHECKOPPT \GETREGIONTRACKWITHBOX \UPDATEXYANDBOX GETBOXREGION \TRACKWITHBOX MOVEBOX @@ -323,33 +322,33 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (HELP KEYNAME " is not a recognized key name."]) ) -(PUTPROPS MOUSESTATE ARGNAMES (BUTTONFORM)) +(PUTPROPS MOUSESTATE ARGNAMES (BUTTONFORM)) -(PUTPROPS LASTMOUSESTATE ARGNAMES (BUTTONFORM)) +(PUTPROPS LASTMOUSESTATE ARGNAMES (BUTTONFORM)) -(PUTPROPS UNTILMOUSESTATE ARGNAMES (BUTTONFORM INTERVAL)) +(PUTPROPS UNTILMOUSESTATE ARGNAMES (BUTTONFORM INTERVAL)) -(PUTPROPS KEYSETSTATE ARGNAMES (BUTTONFORM)) +(PUTPROPS KEYSETSTATE ARGNAMES (BUTTONFORM)) -(PUTPROPS LASTKEYSETSTATE ARGNAMES (BUTTONFORM)) +(PUTPROPS LASTKEYSETSTATE ARGNAMES (BUTTONFORM)) (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: DOCOPY (DECLARE%: EVAL@COMPILE -[PUTPROPS MOUSESTATE MACRO (ARGS (LIST 'PROGN '(GETMOUSESTATE) +(PUTPROPS MOUSESTATE MACRO (ARGS (LIST 'PROGN '(GETMOUSESTATE) (MOUSESTATE-EXPR (CAR ARGS) - T] + T)))) -(PUTPROPS LASTMOUSESTATE MACRO (ARGS (MOUSESTATE-EXPR (CAR ARGS) +(PUTPROPS LASTMOUSESTATE MACRO (ARGS (MOUSESTATE-EXPR (CAR ARGS) T))) -[PUTPROPS UNTILMOUSESTATE MACRO (ARGS (COND +(PUTPROPS UNTILMOUSESTATE MACRO [ARGS (COND [(AND (CDR ARGS) (CADR ARGS) (NEQ (CADR ARGS) T)) (* time argument is given and is not T or NIL; - compile in time keeping loop.) + compile in time keeping loop.) (LIST 'PROG [LIST (LIST 'TIMEOUT (LIST 'IPLUS '(CLOCK 0) @@ -374,20 +373,20 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, T)) '(RETURN T] '(\BACKGROUND) - '(GO LP] + '(GO LP]) -[PUTPROPS KEYSETSTATE MACRO (ARGS (LIST 'PROGN '(GETMOUSESTATE) - (MOUSESTATE-EXPR (CAR ARGS] +(PUTPROPS KEYSETSTATE MACRO [ARGS (LIST 'PROGN '(GETMOUSESTATE) + (MOUSESTATE-EXPR (CAR ARGS]) -[PUTPROPS LASTKEYSETSTATE MACRO (ARGS (MOUSESTATE-EXPR (CAR ARGS] +(PUTPROPS LASTKEYSETSTATE MACRO (ARGS (MOUSESTATE-EXPR (CAR ARGS)))) ) ) (DECLARE%: DONTCOPY (DECLARE%: EVAL@COMPILE -[PUTPROPS WITHIN MACRO ((A B C) +(PUTPROPS WITHIN MACRO [(A B C) (AND (IGEQ A B) - (ILESSP A (IPLUS B C] + (ILESSP A (IPLUS B C]) ) ) @@ -1373,11 +1372,11 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, ) (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE -[PUTPROPS IABS MACRO (OPENLAMBDA (A) - (COND - ((IGEQ A 0) - A) - (T (IMINUS A] +(PUTPROPS IABS MACRO [OPENLAMBDA (A) + (COND + ((IGEQ A 0) + A) + (T (IMINUS A]) ) (* "END EXPORTED DEFINITIONS") @@ -1512,23 +1511,22 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (DEFINEQ (EDITBM - [LAMBDA (BMSPEC) (* ; "Edited 31-Aug-87 12:28 by FS") + [LAMBDA (BMSPEC) (* ; "Edited 2-Aug-2025 10:14 by rmk") + (* ; "Edited 31-Aug-87 12:28 by FS") (* ;;; "A simple bitmap editor.") - - (* ;; "The edit part of the display is from 0 to MAXGRIDWIDTH in width and from 0 to MAXGRIDHEIGHT in height. The commands and display area for the bitmap being edited are above the edit region.") + + (* ;; "The edit part of the display is from 0 to MAXGRIDWIDTH in width and from 0 to MAXGRIDHEIGHT in height. The commands and display area for the bitmap being edited are above the edit region.") (DECLARE (GLOBALVARS \CURSORDESTWIDTH \CURSORDESTHEIGHT)) (PROG (BMW BMWINTERIOR BMWWIDTH BMWHEIGHT WIDTH HEIGHT BM CR ORIGBM GRIDSQUARE BPP ORIGBPP ORIGWIDTH) (* ;  "set ORIGBM to the input bitmap if any and BM to a copy of it for editting.") - [COND ((OR (EQ BMSPEC CursorBitMap) (AND (EQ BMSPEC 'CursorBitMap) (SETQ BMSPEC CursorBitMap))) (* ;  "editing cursor, save old value and make changes to the original.") - (SETQ ORIGBM (BITMAPCOPY CursorBitMap)) (SETQ BM CursorBitMap)) [(BITMAPP BMSPEC) @@ -1537,34 +1535,30 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (COND ([BITMAPP (SETQ ORIGBM (EVALV BMSPEC 'EDITBM] (* ; "use value.") - (SETQ BM (BITMAPCOPY ORIGBM))) (T (SETQ ORIGBM NIL) (SETQ BM (\READBMDIMENSIONS] ((REGIONP BMSPEC) (* ;  "if BMSPEC is a region, treat it as a region of the screen.") - (SETQ BM (BITMAPCREATE (fetch (REGION WIDTH) of BMSPEC) (fetch (REGION HEIGHT) of BMSPEC) (BITSPERPIXEL \CURSORDESTINATION))) (* ;  "note that bm has initial bits in it.") - (SETQ ORIGBM BMSPEC) (BITBLT \CURSORDESTINATION (fetch (REGION LEFT) of BMSPEC) (fetch (REGION BOTTOM) of BMSPEC) BM 0 0 NIL NIL 'INPUT 'REPLACE)) ((WINDOWP BMSPEC) (SETQ ORIGBM BMSPEC) - - (* ;; - "FS: Seems too big below, why not ClipRegion's Width & Height? That's all that's used...") + + (* ;; + "FS: Seems too big below, why not ClipRegion's Width & Height? That's all that's used...") (SETQ BM (BITMAPCREATE (WINDOWPROP BMSPEC 'WIDTH) (WINDOWPROP BMSPEC 'HEIGHT) (BITSPERPIXEL BMSPEC))) (* ;  "open the window and bring it to the top.") - (TOTOPW BMSPEC) (SETQ CR (DSPCLIPPINGREGION NIL BMSPEC)) (BITBLT BMSPEC (fetch (REGION LEFT) of CR) @@ -1572,7 +1566,6 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, BM 0 0 (fetch (REGION WIDTH) of CR) (fetch (REGION HEIGHT) of CR))) (T (* ; "otherwise create a bitmap") - (SETQ BM (\READBMDIMENSIONS] (if (OR (EQ (BITMAPHEIGHT BM) 0) @@ -1583,8 +1576,8 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (SETQ ORIGBPP (fetch (BITMAP BITMAPBITSPERPIXEL) of BM)) [COND ((NOT (EQ BPP ORIGBPP)) - - (* ;; "save the actual number of bits per pixel and set it to BPP in the bitmap being edited so that it can be BITBLT ed on the screen.") + + (* ;; "save the actual number of bits per pixel and set it to BPP in the bitmap being edited so that it can be BITBLT ed on the screen.") (SETQ ORIGWIDTH (fetch (BITMAP BITMAPWIDTH) of BM)) (replace (BITMAP BITMAPBITSPERPIXEL) of BM with BPP) @@ -1593,9 +1586,9 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (replace (BITMAP BITMAPWIDTH) of BM with WIDTH)) (T (SETQ WIDTH (fetch (BITMAP BITMAPWIDTH) of BM] (SETQ HEIGHT (fetch (BITMAP BITMAPHEIGHT) of BM)) - - (* ;; - "Calculate a default window size. Start by calculating the grid size from the bitmap size.") + + (* ;; + "Calculate a default window size. Start by calculating the grid size from the bitmap size.") (SETQ GRIDSQUARE (IMAX (IMIN (IQUOTIENT (IDIFFERENCE (IQUOTIENT (ITIMES \CURSORDESTWIDTH 2) 3) @@ -1634,17 +1627,15 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (WINDOWPROP BMW 'ORIGINALBITMAP ORIGBM) (WINDOWPROP BMW 'FINISHEDFLG NIL) (WINDOWPROP BMW 'COLOR (MAXIMUMCOLOR BPP)) - (WINDOWPROP BMW 'GRIDON T) (* ; + (WINDOWPROP BMW 'GRIDON T) + (MODERNWINDOW BMW) (* ;  "call reshapefn to initialize the display and values") - (EDITBMRESHAPEFN BMW NIL NIL NIL (NOT ORIGBM)) (* ;  "start a mouse process in case this process is the mouse process.") - (SPAWN.MOUSE) (while (NOT (WINDOWPROP BMW 'FINISHEDFLG)) do (DISMISS 500)) (* ;  "remove the closefn before closing the window.") - (WINDOWPROP BMW 'CLOSEFN NIL) (CLOSEW BMW) (COND @@ -1654,14 +1645,11 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (RETURN (COND ((EQ T (WINDOWPROP BMW 'FINISHEDFLG)) (* ;  "editor exited via ok, stuff contents into original bitmap.") - (COND ((EQ BMSPEC CursorBitMap) (* ;  "editting happened in original, leave it alone.") - CursorBitMap) ((REGIONP ORIGBM) (* ; "put it back into the screen.") - (BITBLT BM 0 0 \CURSORDESTINATION (fetch (REGION LEFT) of ORIGBM) (fetch (REGION BOTTOM) of ORIGBM) (fetch (REGION WIDTH) of ORIGBM) @@ -1670,7 +1658,6 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, 'REPLACE) BM) ((WINDOWP ORIGBM) (* ; "put it back into the window") - (BITBLT BM 0 0 ORIGBM (fetch (REGION LEFT) of CR) (fetch (REGION BOTTOM) of CR) (fetch (REGION WIDTH) of CR) @@ -1683,14 +1670,12 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, ((AND BMSPEC (LITATOM BMSPEC)) (* ;  "if spec was an atom without a bm value, set it. in the environment above EDITBM.") - (MARKASCHANGED BMSPEC 'VARS) (STKEVAL 'EDITBM (LIST 'SETQQ BMSPEC BM] ORIGBM) (T BM))) (T (* ;  "error exit, if cursor return it to original value.") - (COND ((EQ BMSPEC CursorBitMap) (BITBLT ORIGBM NIL NIL CursorBitMap))) @@ -2963,15 +2948,15 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, (DECLARE%: EVAL@COMPILE -[PUTPROPS BITMASK MACRO ((X) - (LLSH 1 (IDIFFERENCE 15 X] +(PUTPROPS BITMASK MACRO ((X) + (LLSH 1 (IDIFFERENCE 15 X)))) -[PUTPROPS UPDATE/BM/DISPLAY MACRO ((BM W) +(PUTPROPS UPDATE/BM/DISPLAY MACRO ((BM W) (BITBLT BM (WINDOWPROP W 'DXOFFSET) (WINDOWPROP W 'DYOFFSET) W 0 (WINDOWPROP W 'BMDISPLAYBOTTOM) (WINDOWPROP W 'BMDISPLAYWIDTH) - 1000 NIL 'REPLACE] + 1000 NIL 'REPLACE))) ) ) (DECLARE%: DONTEVAL@LOAD DOCOPY @@ -3437,45 +3422,40 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, PBTDISJOINT _ T (* ; "the bitmaps are separate") PBTDEST _ (ffetch (BITMAP BITMAPBASE) of DESTINATION) (* ; - "set the destination (held constant)") + "set the destination (held constant)") PBTSOURCE _ (ffetch (BITMAP BITMAPBASE) of SOURCE) (* ; - "set the source (incremented by 1 scanline per iteration)") - PBTDESTBPL _ (UNFOLD (ffetch (BITMAP BITMAPRASTERWIDTH) of - DESTINATION) + "set the source (incremented by 1 scanline per iteration)") + PBTDESTBPL _ (UNFOLD (ffetch (BITMAP BITMAPRASTERWIDTH) of DESTINATION) BITSPERWORD)(* ; - "the destination is this many bits between scanlines") + "the destination is this many bits between scanlines") PBTSOURCEBPL _ 1 (* ; - "move 1 bit of each source scanline per 1 scanline of the destination") + "move 1 bit of each source scanline per 1 scanline of the destination") PBTSOURCEBIT _ 0 (* ; - "start at the first bit of each source scanline (held constant)") + "start at the first bit of each source scanline (held constant)") PBTDESTBIT _ (BITMAPWIDTH DESTINATION) (* ; - "start putting data into the destination on the right edge (pre-decremented) ") + "start putting data into the destination on the right edge (pre-decremented) ") PBTFLAGS _ 0 (* ; - "replace mode (paint might be faster)") + "replace mode (paint might be faster)") PBTHEIGHT _ (BITMAPHEIGHT DESTINATION) (* ; "how high the destination is") PBTWIDTH _ 1 (* ; - "how wide the destination stripe is") - )) + "how wide the destination stripe is"))) (SOURCE-WORD-WIDTH (ffetch (BITMAP BITMAPRASTERWIDTH) of SOURCE))) - (for I from 1 to SOURCE-HEIGHT do (add (ffetch (PILOTBBT PBTDESTBIT) - of ROTATE-BBT) - -1) - (\PILOTBITBLT ROTATE-BBT 0) + (for I from 1 to SOURCE-HEIGHT do (add (ffetch (PILOTBBT PBTDESTBIT) of ROTATE-BBT) + -1) + (\PILOTBITBLT ROTATE-BBT 0) (* ;; "the line below is slower than need be, but works when the source crosses a segment. A faster way (which breaks on a segment cross) is to say") - (* ;; - " (|add| (|ffetch| (PILOTBBT PBTSOURCELO) |of| ROTATE-BBT) SOURCE-WORD-WIDTH)") + (* ;; + " (|add| (|ffetch| (PILOTBBT PBTSOURCELO) |of| ROTATE-BBT) SOURCE-WORD-WIDTH)") - (FREPLACE (PILOTBBT PBTSOURCE) - OF ROTATE-BBT - WITH (\ADDBASE (FFETCH - (PILOTBBT PBTSOURCE) - OF ROTATE-BBT) - SOURCE-WORD-WIDTH))) + (FREPLACE (PILOTBBT PBTSOURCE) OF ROTATE-BBT + WITH (\ADDBASE (FFETCH (PILOTBBT PBTSOURCE) + OF ROTATE-BBT) + SOURCE-WORD-WIDTH))) DESTINATION)) (CL:DEFUN ROTATE-BITMAP-LEFT (SOURCE) @@ -3495,81 +3475,72 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1900, 1988, 1989, 1990, 1992, PBTDISJOINT _ T (* ; "the bitmaps are separate") PBTDEST _ (FFETCH (BITMAP BITMAPBASE) OF DESTINATION) (* ; - "set the destination (held constant)") + "set the destination (held constant)") PBTSOURCE _ (FFETCH (BITMAP BITMAPBASE) OF SOURCE) (* ; "set the source") PBTDESTBPL _ 1 (* ; - "the destination is this many bits between scanlines") - PBTSOURCEBPL _ (UNFOLD (FFETCH (BITMAP BITMAPRASTERWIDTH) - OF SOURCE) + "the destination is this many bits between scanlines") + PBTSOURCEBPL _ (UNFOLD (FFETCH (BITMAP BITMAPRASTERWIDTH) OF SOURCE) BITSPERWORD) (* ; "move a scanline at a time.") PBTSOURCEBIT _ (BITMAPWIDTH SOURCE) (* ; - "start getting data at the right edge of the source") + "start getting data at the right edge of the source") PBTDESTBIT _ 0 (* ; - "start putting data into the destination on the left edge ") + "start putting data into the destination on the left edge ") PBTFLAGS _ 0 (* ; - "replace mode (paint might be faster)") + "replace mode (paint might be faster)") PBTHEIGHT _ (BITMAPHEIGHT SOURCE) (* ; "how high the stripe is") PBTWIDTH _ 1 (* ; - "how wide the destination stripe is") - )) + "how wide the destination stripe is"))) (DEST-WORD-WIDTH (FFETCH (BITMAP BITMAPRASTERWIDTH) OF DESTINATION))) - (FOR I FROM 1 TO SOURCE-WIDTH DO (add (FFETCH (PILOTBBT PBTSOURCEBIT - ) OF - ROTATE-BBT - ) - -1) - (\PILOTBITBLT ROTATE-BBT 0) + (FOR I FROM 1 TO SOURCE-WIDTH DO (add (FFETCH (PILOTBBT PBTSOURCEBIT) OF ROTATE-BBT) + -1) + (\PILOTBITBLT ROTATE-BBT 0) (* ;; "the line below is slower than need be, but works when the source crosses a segment. A faster way (which breaks on a segment cross) is to say") - (* ;; - " (|add| (|ffetch| (PILOTBBT PBTSOURCELO) |of| ROTATE-BBT) SOURCE-WORD-WIDTH)") + (* ;; + " (|add| (|ffetch| (PILOTBBT PBTSOURCELO) |of| ROTATE-BBT) SOURCE-WORD-WIDTH)") - (FREPLACE (PILOTBBT PBTDEST) - OF ROTATE-BBT - WITH (\ADDBASE (FFETCH - (PILOTBBT PBTDEST) - OF ROTATE-BBT) - DEST-WORD-WIDTH))) + (FREPLACE (PILOTBBT PBTDEST) OF ROTATE-BBT + WITH (\ADDBASE (FFETCH (PILOTBBT PBTDEST) OF ROTATE-BBT) + DEST-WORD-WIDTH))) DESTINATION)) -(PUTPROPS HLDISPLAY FILETYPE CL:COMPILE-FILE) +(PUTPROPS HLDISPLAY FILETYPE CL:COMPILE-FILE) (READVARS-FROM-STRINGS '(\4BITEXPANSIONTABLE) "({Y16 SMALLPOSP 0 0 15 240 255 3840 3855 4080 4095 61440 61455 61680 61695 65280 65295 65520 65535 }) ") -(PUTPROPS HLDISPLAY COPYRIGHT ("Venue & Xerox Corporation" 1982 1983 1984 1985 1986 1987 1900 1988 -1989 1990 1992 1993 1994)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (5008 12171 (GRID 5018 . 9289) (GRIDXCOORD 9291 . 9796) (GRIDYCOORD 9798 . 10307) ( -LEFTOFGRIDCOORD 10309 . 10746) (BOTTOMOFGRIDCOORD 10748 . 11009) (SHADEGRIDBOX 11011 . 12169)) (12227 -12635 (INSIDE? 12237 . 12633)) (12673 17069 (MOUSESTATE-EXPR 12683 . 16338) (MOUSESTATE-NAME 16340 . -17067)) (20480 21465 (DECODEBUTTONS 20490 . 21463)) (21466 22478 (PTDIFFERENCE 21476 . 21985) (PTPLUS -21987 . 22476)) (22529 50432 (GETPOSITION 22539 . 22847) (GETBOXPOSITION 22849 . 23532) ( -DSPYSCREENTOWINDOW 23534 . 24018) (DSPXSCREENTOWINDOW 24020 . 24504) (GETREGION 24506 . 25055) ( -\GETREGION.PACKPTS 25057 . 25625) (\GETREGION.CHECKBASEPT 25627 . 27570) (\GETREGION.CHECKOPPT 27572 - . 30382) (\GETREGIONTRACKWITHBOX 30384 . 36915) (\UPDATEXYANDBOX 36917 . 39296) (GETBOXREGION 39298 - . 39772) (\TRACKWITHBOX 39774 . 44912) (MOVEBOX 44914 . 45544) (DRAWGRAYBOX 45546 . 46068) (BLTHLINE -46070 . 46320) (BLTVLINE 46322 . 46561) (SETCORNER 46563 . 47829) (GETSCREENPOSITION 47831 . 48444) ( -GETBOXSCREENPOSITION 48446 . 49057) (GETSCREENREGION 49059 . 49715) (GETBOXSCREENREGION 49717 . 50430) -) (50518 67334 (\MEDW.GETSCREENPOSITION 50528 . 52321) (\MEDW.GETBOXSCREENPOSITION 52323 . 55877) ( -\MEDW.GETSCREENREGION 55879 . 67332)) (67335 75073 (GETGRIDBOXREGION 67345 . 74999) (\RANGELIMIT 75001 - . 75071)) (75074 78124 (MOUSECONFIRM 75084 . 78122)) (78265 79634 (NEAREST/PT/ON/GRID 78275 . 78870) -(PTON10GRID 78872 . 79197) (NEAREST/MULTIPLE 79199 . 79632)) (81689 85591 (\SW2BM 81699 . 84397) ( -COMPOSEREGS 84399 . 84953) (TRANSLATEREG 84955 . 85589)) (85633 176284 (EDITBM 85643 . 95768) ( -EDITBMSCROLLFN 95770 . 110923) (EDITBMCLOSEFN 110925 . 111542) (TILEAREA 111544 . 111935) ( -EDITBMBUTTONFN 111937 . 136764) (\EDITBM/PUTUP/DISPLAY 136766 . 137668) (\EDITBMHOWMUCH 137670 . -138656) (EDITBMRESHAPEFN 138658 . 147344) (EDITBMREPAINTFN 147346 . 148665) (UPDATE/SHADE/DISPLAY -148667 . 149114) (UPDATE/BM/DISPLAY/SELECTED/REGION 149116 . 150230) (SHOWBUTTON 150232 . 150790) ( -RESETGRID.NEW 150792 . 154141) (RESETGRID 154143 . 154967) (\READBMDIMENSIONS 154969 . 156006) ( -EDITSHADE 156008 . 164734) (\BITMAPFROMTEXTURE 164736 . 165434) (EDITSHADEREPAINTFN 165436 . 167210) ( -GRAYBOXAREA 167212 . 167895) (\SHADEBITS 167897 . 170862) (READHOTSPOT 170864 . 174729) (WBOX 174731 - . 175455) (\CLEARBM 175457 . 175656) (EDITBMTEXTURE 175658 . 176282)) (177608 185315 (SCALEBM 177618 - . 179684) (BLTPATTERN 179686 . 182204) (BLTPATTERN.REPLACEDISPLAY 182206 . 184295) ( -BLTPATTERN.GENERIC 184297 . 185313)) (185316 197135 (EXPANDBITMAP 185326 . 187850) (EXPANDBM 187852 . -194407) (SHRINKBITMAP 194409 . 195753) (\FAST4BIT 195755 . 197133))))) + (FILEMAP (NIL (4729 11892 (GRID 4739 . 9010) (GRIDXCOORD 9012 . 9517) (GRIDYCOORD 9519 . 10028) ( +LEFTOFGRIDCOORD 10030 . 10467) (BOTTOMOFGRIDCOORD 10469 . 10730) (SHADEGRIDBOX 10732 . 11890)) (11948 +12356 (INSIDE? 11958 . 12354)) (12394 16790 (MOUSESTATE-EXPR 12404 . 16059) (MOUSESTATE-NAME 16061 . +16788)) (20280 21265 (DECODEBUTTONS 20290 . 21263)) (21266 22278 (PTDIFFERENCE 21276 . 21785) (PTPLUS +21787 . 22276)) (22329 50232 (GETPOSITION 22339 . 22647) (GETBOXPOSITION 22649 . 23332) ( +DSPYSCREENTOWINDOW 23334 . 23818) (DSPXSCREENTOWINDOW 23820 . 24304) (GETREGION 24306 . 24855) ( +\GETREGION.PACKPTS 24857 . 25425) (\GETREGION.CHECKBASEPT 25427 . 27370) (\GETREGION.CHECKOPPT 27372 + . 30182) (\GETREGIONTRACKWITHBOX 30184 . 36715) (\UPDATEXYANDBOX 36717 . 39096) (GETBOXREGION 39098 + . 39572) (\TRACKWITHBOX 39574 . 44712) (MOVEBOX 44714 . 45344) (DRAWGRAYBOX 45346 . 45868) (BLTHLINE +45870 . 46120) (BLTVLINE 46122 . 46361) (SETCORNER 46363 . 47629) (GETSCREENPOSITION 47631 . 48244) ( +GETBOXSCREENPOSITION 48246 . 48857) (GETSCREENREGION 48859 . 49515) (GETBOXSCREENREGION 49517 . 50230) +) (50318 67134 (\MEDW.GETSCREENPOSITION 50328 . 52121) (\MEDW.GETBOXSCREENPOSITION 52123 . 55677) ( +\MEDW.GETSCREENREGION 55679 . 67132)) (67135 74873 (GETGRIDBOXREGION 67145 . 74799) (\RANGELIMIT 74801 + . 74871)) (74874 77924 (MOUSECONFIRM 74884 . 77922)) (78065 79434 (NEAREST/PT/ON/GRID 78075 . 78670) +(PTON10GRID 78672 . 78997) (NEAREST/MULTIPLE 78999 . 79432)) (81478 85380 (\SW2BM 81488 . 84186) ( +COMPOSEREGS 84188 . 84742) (TRANSLATEREG 84744 . 85378)) (85422 176157 (EDITBM 85432 . 95641) ( +EDITBMSCROLLFN 95643 . 110796) (EDITBMCLOSEFN 110798 . 111415) (TILEAREA 111417 . 111808) ( +EDITBMBUTTONFN 111810 . 136637) (\EDITBM/PUTUP/DISPLAY 136639 . 137541) (\EDITBMHOWMUCH 137543 . +138529) (EDITBMRESHAPEFN 138531 . 147217) (EDITBMREPAINTFN 147219 . 148538) (UPDATE/SHADE/DISPLAY +148540 . 148987) (UPDATE/BM/DISPLAY/SELECTED/REGION 148989 . 150103) (SHOWBUTTON 150105 . 150663) ( +RESETGRID.NEW 150665 . 154014) (RESETGRID 154016 . 154840) (\READBMDIMENSIONS 154842 . 155879) ( +EDITSHADE 155881 . 164607) (\BITMAPFROMTEXTURE 164609 . 165307) (EDITSHADEREPAINTFN 165309 . 167083) ( +GRAYBOXAREA 167085 . 167768) (\SHADEBITS 167770 . 170735) (READHOTSPOT 170737 . 174602) (WBOX 174604 + . 175328) (\CLEARBM 175330 . 175529) (EDITBMTEXTURE 175531 . 176155)) (177502 185209 (SCALEBM 177512 + . 179578) (BLTPATTERN 179580 . 182098) (BLTPATTERN.REPLACEDISPLAY 182100 . 184189) ( +BLTPATTERN.GENERIC 184191 . 185207)) (185210 197029 (EXPANDBITMAP 185220 . 187744) (EXPANDBM 187746 . +194301) (SHRINKBITMAP 194303 . 195647) (\FAST4BIT 195649 . 197027)) (197031 201020 (ROTATE-BITMAP +197031 . 201020)) (201022 204858 (ROTATE-BITMAP-LEFT 201022 . 204858))))) STOP diff --git a/sources/HLDISPLAY.LCOM b/sources/HLDISPLAY.LCOM index d2d8a2b339ff55ebdec4ae201f6dce217e8b2e00..77b5014a9e1979af08ad6b56bed71ada5f2dc29c 100644 GIT binary patch delta 6160 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 delta 6306 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