diff --git a/library/sketch/SKETCH b/library/sketch/SKETCH index 76c5e3347..b2d39beef 100644 --- a/library/sketch/SKETCH +++ b/library/sketch/SKETCH @@ -1,18 +1,30 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-Dec-2023 00:44:13" {WMEDLEY}sketch>SKETCH.;5 491114 +(FILECREATED " 8-Nov-2025 12:19:12" {WMEDLEY}SKETCH>SKETCH.;10 491643 :EDIT-BY rmk - :CHANGES-TO (VARS SKETCHCOMS) + :CHANGES-TO (VARS SKETCHCOMS SKETCHFILES SKETCH.TITLED.ICON.TEMPLATE) + (FNS SKETCH.SET.A.DEFAULT SKETCH.COMMANDMENU SK.OUTPUT.FILE.NAME SKETCH.TITLE) + (RECORDS SKHISTORYCHANGESPEC GROUP LOCALGROUP SKFIGUREIMAGE SCREENELT GLOBALPART + COMMONGLOBALPART INDIVIDUALGLOBALPART LOCALPART SKETCH SKETCHTYPE + SKETCHCONTEXT) + (PROPS (SKETCH.CREATE ARGNAMES) + (GROUP EVENTFNS) + (UNGROUP EVENTFNS) + (FREEZE EVENTFNS) + (UNFREEZE EVENTFNS)) + (MACROS .DELETEKEYDOWNP. .MOVEKEYDOWNP. .SHIFTKEYDOWNP.) - :PREVIOUS-DATE "19-Oct-2023 23:55:27" {WMEDLEY}sketch>SKETCH.;4) + :PREVIOUS-DATE " 3-Nov-2025 16:21:01" {WMEDLEY}sketch>SKETCH.;5) (PRETTYCOMPRINT SKETCHCOMS) (RPAQQ SKETCHCOMS - [[DECLARE%: FIRST DOCOPY DONTEVAL@LOAD + [(FILES (SYSLOAD) + TEDIT) + [DECLARE%: FIRST DOCOPY DONTEVAL@LOAD (P (PROG ((NOTECARDSFLG (GETPROP 'NOTECARDS 'FILEDATES)) (SKETCHFLG (AND (BOUNDP 'ALL.SKETCHES) ALL.SKETCHES)) @@ -48,17 +60,16 @@ To abort loading the new version of Sketch, type '^'."] (FNS SKETCH SKETCH.FROM.A.FILE SKETCHW.CREATE SKETCH.RESET SKETCHW.FIG.CHANGED SK.WINDOW.TITLE EDITSLIDE EDITSKETCH SK.PUT.ON.FILE SK.OUTPUT.FILE.NAME SKETCH.PUT SK.GET.FROM.FILE SK.INCLUDE.FILE SK.GET.IMAGEOBJ.FROM.FILE SKETCH.GET - ADD.SKETCH.TO.VIEWER FILENAMELESSVERSION SK.ADD.ELEMENTS.TO.SKETCH SKETCH.SET.A.DEFAULT - SK.POPUP.SELECTIONFN GETSKETCHWREGION SK.ADD.ELEMENT SK.ADD.PRIORITY.ELEMENT.TO.SKETCH - SK.ELTS.BY.PRIORITY SK.ORDER.ELEMENTS SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH - SK.ADD.ELEMENTS SK.CHECK.WHENADDEDFN SK.APPLY.MENU.COMMAND SK.DELETE.ELEMENT1 - SK.MARK.DIRTY SK.MARK.UNDIRTY SK.MENU.AND.RETURN.FIELD SKETCH.SET.BRUSH.SHAPE - SKETCH.SET.BRUSH.SIZE SKETCHW.CLOSEFN SK.CONFIRM.DESTRUCTION SKETCHW.OUTFN - SKETCHW.REOPENFN MAKE.LOCAL.SKETCH MAP.SKETCHSPEC.INTO.VIEWER SKETCHW.REPAINTFN - SKETCHW.REPAINTFN1 SK.DRAWFIGURE.IF SKETCHW.SCROLLFN SKETCHW.RESHAPEFN - SK.UPDATE.EVENT.SELECTION LIGHTGRAYWINDOW SK.ADD.SPACES SK.SKETCH.MENU - SK.CHECK.IMAGEOBJ.WHENDELETEDFN SK.APPLY.IMAGEOBJ.WHENDELETEDFN SK.RETURN.TTY - SK.TAKE.TTY) + ADD.SKETCH.TO.VIEWER SK.ADD.ELEMENTS.TO.SKETCH SKETCH.SET.A.DEFAULT SK.POPUP.SELECTIONFN + GETSKETCHWREGION SK.ADD.ELEMENT SK.ADD.PRIORITY.ELEMENT.TO.SKETCH SK.ELTS.BY.PRIORITY + SK.ORDER.ELEMENTS SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH SK.ADD.ELEMENTS + SK.CHECK.WHENADDEDFN SK.APPLY.MENU.COMMAND SK.DELETE.ELEMENT1 SK.MARK.DIRTY + SK.MARK.UNDIRTY SK.MENU.AND.RETURN.FIELD SKETCH.SET.BRUSH.SHAPE SKETCH.SET.BRUSH.SIZE + SKETCHW.CLOSEFN SK.CONFIRM.DESTRUCTION SKETCHW.OUTFN SKETCHW.REOPENFN MAKE.LOCAL.SKETCH + MAP.SKETCHSPEC.INTO.VIEWER SKETCHW.REPAINTFN SKETCHW.REPAINTFN1 SK.DRAWFIGURE.IF + SKETCHW.SCROLLFN SKETCHW.RESHAPEFN SK.UPDATE.EVENT.SELECTION LIGHTGRAYWINDOW + SK.ADD.SPACES SK.SKETCH.MENU SK.CHECK.IMAGEOBJ.WHENDELETEDFN + SK.APPLY.IMAGEOBJ.WHENDELETEDFN SK.RETURN.TTY SK.TAKE.TTY) (COMS (* ;  "fns for dealing with the sketch menu") (FNS SKETCH.COMMANDMENU SKETCH.COMMANDMENU.ITEMS CREATE.SKETCHW.COMMANDMENU @@ -242,6 +253,7 @@ To abort loading the new version of Sketch, type '^'."] "Reads a file name and opens a sketch window onto the sketch it contains." ] (VARS (BackgroundMenu)) + (VARS SKETCHFILES) (FILES SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY (FILES (LOADCOMP) SKETCH-OPS SKETCH-ELEMENTS SKETCH-OBJ @@ -260,13 +272,6 @@ To abort loading the new version of Sketch, type '^'."] (MACROS SK.SET.RECORD.LENGTHS.MACRO) (GLOBALVARS SKETCH.RECORD.LENGTHS) (P (SK.SET.RECORD.LENGTHS))) - [COMS (* ; - "to correct for a bug in the file package that marks LOADCOMPed file as changed") - (P (UNMARKASCHANGED 'SKETCH 'FILE) - (UNMARKASCHANGED 'SKETCH-ELEMENTS 'FILE) - (UNMARKASCHANGED 'SKETCH-OPS 'FILE) - (UNMARKASCHANGED 'SKETCH-EDIT 'FILE) - (UNMARKASCHANGED 'SKETCH-OBJ 'FILE] (COMS (* ;  "add sketch as option to file browser edit command") (FNS SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER) @@ -275,6 +280,9 @@ To abort loading the new version of Sketch, type '^'."] (NLAML) (LAMA SK.UNIONREGIONS SKETCH.CREATE]) + +(FILESLOAD (SYSLOAD) + TEDIT) (DECLARE%: FIRST DOCOPY DONTEVAL@LOAD [PROG ((NOTECARDSFLG (GETPROP 'NOTECARDS 'FILEDATES)) @@ -437,12 +445,13 @@ To abort loading the new version of Sketch, type '^'."] (RETURN NEWNAME]) (SK.OUTPUT.FILE.NAME - [LAMBDA (SKETCHFILENAME) (* rrb " 5-May-86 10:45") + [LAMBDA (SKETCHFILENAME) (* ; "Edited 3-Nov-2025 15:05 by rmk") + (* rrb " 5-May-86 10:45") (COND - ((STRPOS " " SKETCHFILENAME) (* don't put up dummy names that - contain spaces) + ((STRPOS " " SKETCHFILENAME) (* ; + "don't put up dummy names that contain spaces") NIL) - (T (FILENAMELESSVERSION SKETCHFILENAME]) + (T (PACKFILENAME 'VERSION NIL 'BODY SKETCHFILENAME]) (SKETCH.PUT [LAMBDA (FILENAME SKETCH VIEWER REGION SCALE GRID) (* ; "Edited 1-Feb-2022 09:17 by rmk") @@ -640,13 +649,6 @@ To abort loading the new version of Sketch, type '^'."] (GETSKETCHPROP TOSKETCH 'VIEWS]) (PUTSKETCHPROP TOSKETCH SKPROP (GETSKETCHPROP ADDSKETCH SKPROP]) -(FILENAMELESSVERSION - [LAMBDA (FILENAME) (* rrb "29-Jan-86 15:57") - - (* strips the version number off of FILENAME if it has one.) - - (PACKFILENAME (CONS 'VERSION (CONS NIL (UNPACKFILENAME FILENAME]) - (SK.ADD.ELEMENTS.TO.SKETCH [LAMBDA (ELTS SKW) (* rrb "10-Mar-86 16:50") (* adds a list of elements to a sketch) @@ -659,7 +661,9 @@ To abort loading the new version of Sketch, type '^'."] (SK.ADD.ELEMENT ELT SKW]) (SKETCH.SET.A.DEFAULT - [LAMBDA (SKW) (* rrb "14-Jul-86 13:43") + [LAMBDA (SKW) (* ; "Edited 6-Nov-2025 22:34 by rmk") + (* rrb "14-Jul-86 13:43") + (* ; "allows the user to set a default") (* allows the user to set a default) (\CURSOR.IN.MIDDLE.MENU (create MENU ITEMS _ '[(Line SKETCH.SET.BRUSH.SIZE @@ -673,7 +677,8 @@ To abort loading the new version of Sketch, type '^'."] (Add% arrowhead SK.SET.LINE.ARROWHEAD "Sets the arrowhead characteristics of new lines." ) - ("Mouse line specs" SK.SET.LINE.LENGTH.MODE + ("Mouse line specs" SK.SET.LINE.LENGTH.MODE + "Sets whether the lines drawn with the middle mouse button connect to each other." ))) (Arrowhead SK.SET.ARROWHEAD.LENGTH @@ -715,7 +720,8 @@ To abort loading the new version of Sketch, type '^'."] (SUBITEMS ("Clockwise" SK.SET.ARC.DIRECTION.CW "Makes new arcs go around in the clockwise direction" ) - ("Counterclockwise" SK.SET.ARC.DIRECTION.CCW + ("Counterclockwise" SK.SET.ARC.DIRECTION.CCW + "Makes new arcs go around in the counterclockwise direction" ))) ("Input scale" SK.SET.INPUT.SCALE @@ -740,7 +746,8 @@ To abort loading the new version of Sketch, type '^'."] This will be slow for arcs and curves."] CENTERFLG _ T WHENSELECTEDFN _ (FUNCTION SK.POPUP.SELECTIONFN) - MENUFONT _ (SK.FONTNAMELIST (FONTCREATE BOLDFONT]) + MENUFONT _ (FONTPROP (FONTCREATE BOLDFONT) + 'SPEC]) (SK.POPUP.SELECTIONFN [LAMBDA (ITEM MENU) (* rrb " 3-Sep-85 14:27") @@ -1348,12 +1355,13 @@ This will be slow for arcs and curves."] (DEFINEQ (SKETCH.COMMANDMENU - [LAMBDA (ITEMS TITLE) (* rrb "14-Jul-86 13:43") + [LAMBDA (ITEMS TITLE) (* ; "Edited 6-Nov-2025 22:36 by rmk") + (* rrb "14-Jul-86 13:43") (create MENU ITEMS _ ITEMS CENTERFLG _ T WHENSELECTEDFN _ (FUNCTION SKETCHW.SELECTIONFN) - MENUFONT _ (SK.FONTNAMELIST (FONTCREATE BOLDFONT)) + MENUFONT _ (FONTCREATE BOLDFONT) TITLE _ TITLE]) (SKETCH.COMMANDMENU.ITEMS @@ -6657,10 +6665,9 @@ This will be slow for arcs and curves.")) (DEFINEQ (SKETCH.TITLE - [LAMBDA (SKW) (* rrb " 5-May-86 13:19") - - (* gets the title of the sketch being edited in SKW.) - + [LAMBDA (SKW) (* rrb " 5-May-86 13:19") + (* gets the title of the sketch being + edited in SKW.) (fetch (SKETCH SKETCHNAME) of (INSURE.SKETCH SKW]) (SK.SHRINK.ICONCREATE @@ -8594,6 +8601,8 @@ Otherwise, type '^'.") (RPAQQ BackgroundMenu NIL) +(RPAQQ SKETCHFILES (SKETCH SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT)) + (FILESLOAD SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY @@ -8723,21 +8732,6 @@ Otherwise, type '^'.") -(* ; "to correct for a bug in the file package that marks LOADCOMPed file as changed") - - -(UNMARKASCHANGED 'SKETCH 'FILE) - -(UNMARKASCHANGED 'SKETCH-ELEMENTS 'FILE) - -(UNMARKASCHANGED 'SKETCH-OPS 'FILE) - -(UNMARKASCHANGED 'SKETCH-EDIT 'FILE) - -(UNMARKASCHANGED 'SKETCH-OBJ 'FILE) - - - (* ; "add sketch as option to file browser edit command") (DEFINEQ @@ -8768,149 +8762,149 @@ Otherwise, type '^'.") (ADDTOVAR LAMA SK.UNIONREGIONS SKETCH.CREATE) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (22176 85539 (SKETCH 22186 . 24291) (SKETCH.FROM.A.FILE 24293 . 24608) (SKETCHW.CREATE -24610 . 29184) (SKETCH.RESET 29186 . 30708) (SKETCHW.FIG.CHANGED 30710 . 31050) (SK.WINDOW.TITLE 31052 - . 31439) (EDITSLIDE 31441 . 31847) (EDITSKETCH 31849 . 32173) (SK.PUT.ON.FILE 32175 . 33627) ( -SK.OUTPUT.FILE.NAME 33629 . 34003) (SKETCH.PUT 34005 . 36903) (SK.GET.FROM.FILE 36905 . 37798) ( -SK.INCLUDE.FILE 37800 . 40308) (SK.GET.IMAGEOBJ.FROM.FILE 40310 . 42513) (SKETCH.GET 42515 . 42822) ( -ADD.SKETCH.TO.VIEWER 42824 . 45410) (FILENAMELESSVERSION 45412 . 45688) (SK.ADD.ELEMENTS.TO.SKETCH -45690 . 46204) (SKETCH.SET.A.DEFAULT 46206 . 53364) (SK.POPUP.SELECTIONFN 53366 . 53908) ( -GETSKETCHWREGION 53910 . 54116) (SK.ADD.ELEMENT 54118 . 55697) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH -55699 . 57093) (SK.ELTS.BY.PRIORITY 57095 . 57391) (SK.ORDER.ELEMENTS 57393 . 57660) ( -SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 57662 . 59156) (SK.ADD.ELEMENTS 59158 . 59682) ( -SK.CHECK.WHENADDEDFN 59684 . 60414) (SK.APPLY.MENU.COMMAND 60416 . 61214) (SK.DELETE.ELEMENT1 61216 . -62794) (SK.MARK.DIRTY 62796 . 63462) (SK.MARK.UNDIRTY 63464 . 63795) (SK.MENU.AND.RETURN.FIELD 63797 - . 64462) (SKETCH.SET.BRUSH.SHAPE 64464 . 65049) (SKETCH.SET.BRUSH.SIZE 65051 . 65557) ( -SKETCHW.CLOSEFN 65559 . 67350) (SK.CONFIRM.DESTRUCTION 67352 . 68351) (SKETCHW.OUTFN 68353 . 68617) ( -SKETCHW.REOPENFN 68619 . 69031) (MAKE.LOCAL.SKETCH 69033 . 69763) (MAP.SKETCHSPEC.INTO.VIEWER 69765 . -70975) (SKETCHW.REPAINTFN 70977 . 71805) (SKETCHW.REPAINTFN1 71807 . 72746) (SK.DRAWFIGURE.IF 72748 . -73270) (SKETCHW.SCROLLFN 73272 . 77465) (SKETCHW.RESHAPEFN 77467 . 79725) (SK.UPDATE.EVENT.SELECTION -79727 . 81782) (LIGHTGRAYWINDOW 81784 . 81947) (SK.ADD.SPACES 81949 . 82695) (SK.SKETCH.MENU 82697 . -83019) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 83021 . 83873) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 83875 . 84835) - (SK.RETURN.TTY 84837 . 85205) (SK.TAKE.TTY 85207 . 85537)) (85593 108921 (SKETCH.COMMANDMENU 85603 . -85940) (SKETCH.COMMANDMENU.ITEMS 85942 . 106025) (CREATE.SKETCHW.COMMANDMENU 106027 . 106447) ( -SKETCHW.SELECTIONFN 106449 . 107552) (SKETCH.MONITORLOCK 107554 . 108025) (SK.EVAL.AS.PROCESS 108027 - . 108640) (SK.EVAL.WITH.LOCK 108642 . 108919)) (108922 116726 (SK.FIX.MENU 108932 . 110026) ( -SK.SET.UP.MENUS 110028 . 112329) (SK.INSURE.HAS.MENU 112331 . 112993) (SK.CREATE.STANDARD.MENU 112995 - . 113440) (SK.ADD.ITEM.TO.MENU 113442 . 114117) (SK.GET.VIEWER.POPUP.MENU 114119 . 116320) ( -SK.CLEAR.POPUP.MENU 116322 . 116724)) (116782 125604 (SKETCH.CREATE 116792 . 117578) (GETSKETCHPROP -117580 . 120637) (PUTSKETCHPROP 120639 . 124571) (CREATE.DEFAULT.SKETCH.CONTEXT 124573 . 125602)) ( -125770 148666 (SK.COPY.BUTTONEVENTFN 125780 . 137008) (SK.BUTTONEVENT.MARK 137010 . 137393) ( -SK.BUILD.IMAGEOBJ 137395 . 147310) (SK.BUTTONEVENT.OVERP 147312 . 147935) (SK.BUTTONEVENT.SAME.KEYS -147937 . 148664)) (148945 174760 (SK.SEL.AND.CHANGE 148955 . 149247) (SK.CHECK.WHENCHANGEDFN 149249 . -149955) (SK.CHECK.PRECHANGEFN 149957 . 150558) (SK.CHANGE.ELT 150560 . 150752) (SK.CHANGE.THING 150754 - . 152005) (SKETCH.CHANGE.ELEMENTS 152007 . 153190) (SK.APPLY.SINGLE.CHANGEFN 153192 . 153765) ( -SK.DO.CHANGESPECS 153767 . 155426) (SK.VIEWER.FROM.SKETCH.ARG 155428 . 155870) (SK.DO.CHANGESPEC1 -155872 . 157747) (SK.CHANGEFN 157749 . 158329) (SK.READCHANGEFN 158331 . 158790) (SK.DEFAULT.CHANGEFN -158792 . 161264) (CHANGEABLEFIELDITEMS 161266 . 161913) (SK.APPLY.CHANGE.COMMAND 161915 . 162532) ( -SK.DO.AND.RECORD.CHANGES 162534 . 163931) (SK.APPLY.CHANGE.COMMAND1 163933 . 165421) ( -SK.ELEMENTS.CHANGEFN 165423 . 167747) (READ.POINT.TO.ADD 167749 . 168693) (GLOBAL.KNOT.FROM.LOCAL -168695 . 169155) (SK.ADD.KNOT.TO.ELEMENT 169157 . 170101) (SK.GROUP.CHANGEFN 170103 . 171315) ( -SK.GROUP.CHANGEFN1 171317 . 174758)) (174927 188660 (ADD.ELEMENT.TO.SKETCH 174937 . 176643) ( -ADD.SKETCH.VIEWER 176645 . 177313) (REMOVE.SKETCH.VIEWER 177315 . 177928) (ALL.SKETCH.VIEWERS 177930 - . 178170) (SKETCH.ALL.VIEWERS 178172 . 178432) (VIEWER.BUCKET 178434 . 178585) (ELT.INSIDE.REGION? -178587 . 178914) (ELT.INSIDE.SKWP 178916 . 179207) (SCALE.FROM.SKW 179209 . 179459) ( -SK.ADDELT.TO.WINDOW 179461 . 180321) (SK.CALC.REGION.VIEWED 180323 . 180701) (SK.DRAWFIGURE 180703 . -181992) (SK.DRAWFIGURE1 181994 . 182378) (SK.LOCAL.FROM.GLOBAL 182380 . 183615) (SKETCH.REGION.VIEWED -183617 . 186304) (SKETCH.VIEW.FROM.NAME 186306 . 186736) (SK.UPDATE.REGION.VIEWED 186738 . 187130) ( -SKETCH.ADD.AND.DISPLAY 187132 . 187540) (SKETCH.ADD.AND.DISPLAY1 187542 . 187980) (SK.ADD.ITEM 187982 - . 188314) (SKETCHW.ADD.INSTANCE 188316 . 188658)) (188701 201889 (SK.SEL.AND.DELETE 188711 . 189099) -(SK.ERASE.AND.DELETE.ITEM 189101 . 189520) (REMOVE.ELEMENT.FROM.SKETCH 189522 . 190633) ( -SK.DELETE.ELEMENT 190635 . 191193) (SK.DELETE.ELEMENT2 191195 . 191856) (SK.DELETE.KNOT 191858 . -192149) (SK.SEL.AND.DELETE.KNOT 192151 . 193276) (SK.DELETE.ELEMENT.KNOT 193278 . 196485) ( -SK.CHECK.WHENDELETEDFN 196487 . 197267) (SK.CHECK.PREEDITFN 197269 . 197753) ( -SK.CHECK.END.INITIAL.EDIT 197755 . 198289) (SK.CHECK.WHENPOINTDELETEDFN 198291 . 199087) (SK.ERASE.ELT - 199089 . 199425) (SK.DELETE.ELT 199427 . 199802) (SK.DELETE.ITEM 199804 . 200212) (DELFROMTCONC -200214 . 201887)) (201928 215762 (SK.COPY.ELT 201938 . 202308) (SK.SEL.AND.COPY 202310 . 202693) ( -SK.COPY.ELEMENTS 202695 . 208323) (SK.ADD.COPY.OF.ELEMENTS 208325 . 210092) ( -SK.GLOBAL.FROM.LOCAL.ELEMENTS 210094 . 210334) (SK.COPY.ITEM 210336 . 211133) (SK.INSERT.SKETCH 211135 - . 215760)) (215802 245823 (SK.MOVE.ELT 215812 . 216087) (SK.MOVE.ELT.OR.PT 216089 . 216402) ( -SK.APPLY.DEFAULT.MOVE 216404 . 216838) (SK.SEL.AND.MOVE 216840 . 217387) (SK.MOVE.ELEMENTS 217389 . -228261) (SKETCH.MOVE.ELEMENTS 228263 . 230194) (SKETCH.COPY.ELEMENTS 230196 . 232243) ( -\SKETCH.COPY.ELEMENT 232245 . 232970) (SK.TRANSLATE.ELEMENT 232972 . 233455) (SK.COPY.GLOBAL.ELEMENT -233457 . 233668) (SK.MAKE.ELEMENT.MOVE.ARG 233670 . 234290) (SK.MAKE.ELEMENTS.MOVE.ARG 234292 . 234814 -) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 234816 . 235885) (SK.SHOW.FIG.FROM.INFO 235887 . 236255) ( -SK.MOVE.THING 236257 . 237163) (UPDATE.ELEMENT.IN.SKETCH 237165 . 239220) (SK.UPDATE.ELEMENT 239222 . -240781) (SK.UPDATE.ELEMENTS 240783 . 241502) (SK.UPDATE.ELEMENT1 241504 . 245404) ( -SK.MOVE.ELEMENT.POINT 245406 . 245821)) (245886 268175 (SK.MOVE.POINTS 245896 . 246183) ( -SK.SEL.AND.MOVE.POINTS 246185 . 246490) (SK.DO.MOVE.ELEMENT.POINTS 246492 . 255149) ( -SK.MOVE.ITEM.POINTS 255151 . 256822) (SK.TRANSLATEPTSFN 256824 . 257208) (SK.TRANSLATE.POINTS 257210 - . 258111) (SK.SELECT.MULTIPLE.POINTS 258113 . 263753) (SK.CONTROL.POINTS.IN.REGION 263755 . 265176) ( -SK.ADD.PT.SELECTION 265178 . 265642) (SK.REMOVE.PT.SELECTION 265644 . 266261) (SK.ADD.POINT 266263 . -266886) (SK.ELTS.CONTAINING.PTS 266888 . 267513) (SK.HOTSPOTS.NOT.ON.LIST 267515 . 268173)) (268333 -271129 (SK.SET.MOVE.MODE 268343 . 269014) (SK.SET.MOVE.MODE.POINTS 269016 . 269355) ( -SK.SET.MOVE.MODE.ELEMENTS 269357 . 269701) (SK.SET.MOVE.MODE.COMBINED 269703 . 270053) (READMOVEMODE -270055 . 271127)) (271130 289885 (SK.ALIGN.POINTS 271140 . 271430) (SK.SEL.AND.ALIGN.POINTS 271432 . -271741) (SK.ALIGN.POINTS.LEFT 271743 . 272046) (SK.ALIGN.POINTS.RIGHT 272048 . 272353) ( -SK.ALIGN.POINTS.TOP 272355 . 272656) (SK.ALIGN.POINTS.BOTTOM 272658 . 272965) ( -SK.EVEN.SPACE.POINTS.IN.X 272967 . 273287) (SK.EVEN.SPACE.POINTS.IN.Y 273289 . 273609) ( -SK.DO.ALIGN.POINTS 273611 . 284233) (SK.NTH.CONTROL.POINT 284235 . 284696) ( -SK.GET.SELECTED.ELEMENT.STRUCTURE 284698 . 285364) (SK.CORRESPONDING.CONTROL.PT 285366 . 285920) ( -SK.CONTROL.POINT.NUMBER 285922 . 286292) (SK.DO.ALIGN.SETVALUE 286294 . 289883)) (289949 303381 ( -SKETCH.CREATE.GROUP 289959 . 290448) (SK.CREATE.GROUP1 290450 . 290997) (SK.UPDATE.GROUP.AFTER.CHANGE -290999 . 291788) (SK.GROUP.ELTS 291790 . 292071) (SK.SEL.AND.GROUP 292073 . 292459) (SK.GROUP.ELEMENTS - 292461 . 294110) (SK.UNGROUP.ELT 294112 . 294396) (SK.SEL.AND.UNGROUP 294398 . 296067) ( -SK.UNGROUP.ELEMENT 296069 . 297005) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 297007 . 297929) ( -SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 297931 . 298942) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 298944 . -300284) (SK.UNIONREGIONS 300286 . 302652) (SKETCH.REGION.OF.SKETCH 302654 . 303070) (SK.FLASHREGION -303072 . 303379)) (303382 316853 (INIT.GROUP.ELEMENT 303392 . 304264) (GROUP.DRAWFN 304266 . 304716) ( -GROUP.EXPANDFN 304718 . 306281) (GROUP.INSIDEFN 306283 . 306692) (GROUP.REGIONFN 306694 . 307089) ( -GROUP.GLOBALREGIONFN 307091 . 307409) (GROUP.TRANSLATEFN 307411 . 309443) (GROUP.TRANSFORMFN 309445 . -312925) (GROUP.READCHANGEFN 312927 . 316851)) (316854 317862 (REGION.CENTER 316864 . 317465) ( -REMOVE.LAST 317467 . 317860)) (317915 323022 (SK.MOVE.GROUP.CONTROL.PT 317925 . 318216) ( -SK.SEL.AND.MOVE.CONTROL.PT 318218 . 319622) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 319624 . 321697) ( -SK.READ.NEW.GROUP.CONTROL.PT 321699 . 323020)) (323281 327905 (SK.DO.GROUP 323291 . 324743) ( -SK.CHECK.WHENGROUPEDFN 324745 . 325455) (SK.DO.UNGROUP 325457 . 326662) (SK.CHECK.WHENUNGROUPEDFN -326664 . 327251) (SK.GROUP.UNDO 327253 . 327576) (SK.UNGROUP.UNDO 327578 . 327903)) (328146 333068 ( -SK.FREEZE.ELTS 328156 . 328440) (SK.SEL.AND.FREEZE 328442 . 328832) (SK.FREEZE.ELEMENTS 328834 . -329385) (SK.UNFREEZE.ELT 329387 . 329676) (SK.SEL.AND.UNFREEZE 329678 . 331214) (SK.UNFREEZE.ELEMENTS -331216 . 331775) (SK.FREEZE.UNDO 331777 . 332022) (SK.UNFREEZE.UNDO 332024 . 332271) (SK.DO.FREEZE -332273 . 332666) (SK.DO.UNFREEZE 332668 . 333066)) (333298 343108 (SKETCH.ELEMENTS.OF.SKETCH 333308 . -334143) (SKETCH.LIST.OF.ELEMENTS 334145 . 334863) (SKETCH.ADD.ELEMENT 334865 . 335940) ( -SKETCH.DELETE.ELEMENT 335942 . 337674) (DELFROMGROUPELT 337676 . 338476) (SKETCH.ELEMENT.TYPE 338478 - . 338827) (SKETCH.ELEMENT.CHANGED 338829 . 340397) (SK.ELEMENT.CHANGED1 340399 . 341050) ( -SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341052 . 343106)) (343162 347774 (INSURE.SKETCH 343172 . 345787) - (LOCALSPECS.FROM.VIEWER 345789 . 346149) (SK.LOCAL.ELT.FROM.GLOBALPART 346151 . 346619) ( -SKETCH.FROM.VIEWER 346621 . 346855) (INSPECT.SKETCH 346857 . 347182) (ELT.INSIDE.SKETCHWP 347184 . -347457) (SK.INSIDE.REGION 347459 . 347772)) (347775 352105 (MAPSKETCHSPECS 347785 . 348406) ( -MAPCOLLECTSKETCHSPECS 348408 . 349157) (MAPSKETCHSPECSUNTIL 349159 . 349967) (MAPGLOBALSKETCHSPECS -349969 . 350670) (MAPGLOBALSKETCHELEMENTS 350672 . 352103)) (352167 378059 (SK.ADD.SELECTION 352177 . -352917) (SK.COPY.INSERTFN 352919 . 356550) (SCREENELEMENTP 356552 . 357025) (SK.ITEM.REGION 357027 . -357514) (SK.ELEMENT.GLOBAL.REGION 357516 . 358044) (SK.LOCAL.ITEMS.IN.REGION 358046 . 360025) ( -SK.REGIONFN 360027 . 360349) (SK.GLOBAL.REGIONFN 360351 . 360709) (SK.REMOVE.SELECTION 360711 . 361439 -) (SK.SELECT.MULTIPLE.ITEMS 361441 . 371883) (SKETCH.GET.ELEMENTS 371885 . 373308) (SK.PUT.MARKS.UP -373310 . 373649) (SK.TAKE.MARKS.DOWN 373651 . 373990) (SK.TRANSLATE.GLOBALPART 373992 . 376119) ( -SK.TRANSLATE.ITEM 376121 . 377048) (SK.TRANSLATEFN 377050 . 377246) (TRANSLATE.SKETCH 377248 . 378057) -) (378325 381232 (SK.INPUT.SCALE 378335 . 379182) (SK.UPDATE.SKETCHCONTEXT 379184 . 379781) ( -SK.SET.INPUT.SCALE 379783 . 380432) (SK.SET.INPUT.SCALE.CURRENT 380434 . 380725) ( -SK.SET.INPUT.SCALE.VALUE 380727 . 381230)) (381283 383195 (SK.SET.FEEDBACK.MODE 381293 . 382599) ( -SK.SET.FEEDBACK.POINT 382601 . 382769) (SK.SET.FEEDBACK.VERBOSE 382771 . 382940) ( -SK.SET.FEEDBACK.ALWAYS 382942 . 383193)) (383346 384623 (SKETCH.TITLE 383356 . 383619) ( -SK.SHRINK.ICONCREATE 383621 . 384621)) (390313 393127 (READBRUSHSHAPE 390323 . 390782) (READ.FUNCTION -390784 . 391299) (READBRUSHSIZE 391301 . 391759) (READANGLE 391761 . 392253) (READARCDIRECTION 392255 - . 393125)) (393128 403539 (SK.CHANGE.DASHING 393138 . 397086) (READ.AND.SAVE.NEW.DASHING 397088 . -398856) (READ.NEW.DASHING 398858 . 400598) (READ.DASHING.CHANGE 400600 . 402075) (SK.CACHE.DASHING -402077 . 403079) (SK.DASHING.LABEL 403081 . 403537)) (403540 407245 (READ.FILLING.CHANGE 403550 . -405531) (SK.CACHE.FILLING 405533 . 406251) (READ.AND.SAVE.NEW.FILLING 406253 . 406851) ( -SK.FILLING.LABEL 406853 . 407243)) (407629 443882 (SK.GETGLOBALPOSITION 407639 . 407944) ( -SKETCH.TRACK.ELEMENTS 407946 . 411466) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 411468 . 412027) ( -MAP.SKETCH.ELEMENTS.INTO.VIEWER 412029 . 412421) (MAP.GLOBAL.POSITION.INTO.VIEWER 412423 . 412803) ( -SKETCH.TO.VIEWER.POSITION 412805 . 413164) (SKETCH.TRACK.IMAGE 413166 . 414020) (SK.TRACK.IMAGE1 -414022 . 415434) (MAP.VIEWER.XY.INTO.GLOBAL 415436 . 416430) (SK.SET.POSITION 416432 . 416768) ( -MAP.VIEWER.PT.INTO.GLOBAL 416770 . 417876) (VIEWER.TO.SKETCH.POSITION 417878 . 418513) ( -SK.INSURE.SCALE 418515 . 418775) (SKETCH.TO.VIEWER.REGION 418777 . 419583) (VIEWER.TO.SKETCH.REGION -419585 . 419923) (SK.READ.POINT.WITH.FEEDBACK 419925 . 430928) (SKETCH.GET.POSITION 430930 . 432810) ( -\CLOBBER.POSITION 432812 . 433260) (NEAREST.HOT.SPOT 433262 . 434790) (GETWREGION 434792 . 435553) ( -GET.BITMAP.POSITION 435555 . 436339) (SK.TRACK.BITMAP1 436341 . 443880)) (444451 475337 ( -SK.BRING.UP.POSITION.PAD 444461 . 450321) (SK.PAD.READER.POSITION 450323 . 451972) ( -SK.POSITION.READER.REPAINTFN 451974 . 453758) (SK.POSITION.PAD.FROM.VIEWER 453760 . 455102) ( -SK.INIT.POSITION.NUMBER.PAD.MENU 455104 . 455454) (SK.READ.POSITION.PAD.HANDLER 455456 . 461188) ( -DISPLAY.POSITION.READER.TOTAL 461190 . 463488) (POSITION.PAD.READER.HANDLER 463490 . 471533) ( -POSITIONPAD.HELDFN 471535 . 473019) (\POSITION.PAD.ADD.DIGIT.MENU 473021 . 474600) ( -\POSITION.READER.NUMBERPAD 474602 . 475335)) (476963 479641 (SK.DRAWFN 476973 . 477339) ( -SK.TRANSFORMFN 477341 . 477722) (SK.EXPANDFN 477724 . 478001) (SK.INPUT 478003 . 478384) (SK.INSIDEFN -478386 . 479026) (SK.UPDATEFN 479028 . 479639)) (485309 489254 (SK.CHECK.SKETCH.VERSION 485319 . -486559) (SK.INSURE.RECORD.LENGTH 486561 . 488044) (SK.INSURE.HAS.LENGTH 488046 . 488784) ( -SK.RECORD.LENGTH 488786 . 488960) (SK.SET.RECORD.LENGTHS 488962 . 489252)) (489999 490886 ( -SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490009 . 490884))))) + (FILEMAP (NIL (22476 86065 (SKETCH 22486 . 24591) (SKETCH.FROM.A.FILE 24593 . 24908) (SKETCHW.CREATE +24910 . 29484) (SKETCH.RESET 29486 . 31008) (SKETCHW.FIG.CHANGED 31010 . 31350) (SK.WINDOW.TITLE 31352 + . 31739) (EDITSLIDE 31741 . 32147) (EDITSKETCH 32149 . 32473) (SK.PUT.ON.FILE 32475 . 33927) ( +SK.OUTPUT.FILE.NAME 33929 . 34414) (SKETCH.PUT 34416 . 37314) (SK.GET.FROM.FILE 37316 . 38209) ( +SK.INCLUDE.FILE 38211 . 40719) (SK.GET.IMAGEOBJ.FROM.FILE 40721 . 42924) (SKETCH.GET 42926 . 43233) ( +ADD.SKETCH.TO.VIEWER 43235 . 45821) (SK.ADD.ELEMENTS.TO.SKETCH 45823 . 46337) (SKETCH.SET.A.DEFAULT +46339 . 53890) (SK.POPUP.SELECTIONFN 53892 . 54434) (GETSKETCHWREGION 54436 . 54642) (SK.ADD.ELEMENT +54644 . 56223) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH 56225 . 57619) (SK.ELTS.BY.PRIORITY 57621 . 57917) ( +SK.ORDER.ELEMENTS 57919 . 58186) (SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 58188 . 59682) ( +SK.ADD.ELEMENTS 59684 . 60208) (SK.CHECK.WHENADDEDFN 60210 . 60940) (SK.APPLY.MENU.COMMAND 60942 . +61740) (SK.DELETE.ELEMENT1 61742 . 63320) (SK.MARK.DIRTY 63322 . 63988) (SK.MARK.UNDIRTY 63990 . 64321 +) (SK.MENU.AND.RETURN.FIELD 64323 . 64988) (SKETCH.SET.BRUSH.SHAPE 64990 . 65575) ( +SKETCH.SET.BRUSH.SIZE 65577 . 66083) (SKETCHW.CLOSEFN 66085 . 67876) (SK.CONFIRM.DESTRUCTION 67878 . +68877) (SKETCHW.OUTFN 68879 . 69143) (SKETCHW.REOPENFN 69145 . 69557) (MAKE.LOCAL.SKETCH 69559 . 70289 +) (MAP.SKETCHSPEC.INTO.VIEWER 70291 . 71501) (SKETCHW.REPAINTFN 71503 . 72331) (SKETCHW.REPAINTFN1 +72333 . 73272) (SK.DRAWFIGURE.IF 73274 . 73796) (SKETCHW.SCROLLFN 73798 . 77991) (SKETCHW.RESHAPEFN +77993 . 80251) (SK.UPDATE.EVENT.SELECTION 80253 . 82308) (LIGHTGRAYWINDOW 82310 . 82473) ( +SK.ADD.SPACES 82475 . 83221) (SK.SKETCH.MENU 83223 . 83545) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 83547 . +84399) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 84401 . 85361) (SK.RETURN.TTY 85363 . 85731) (SK.TAKE.TTY +85733 . 86063)) (86119 109534 (SKETCH.COMMANDMENU 86129 . 86553) (SKETCH.COMMANDMENU.ITEMS 86555 . +106638) (CREATE.SKETCHW.COMMANDMENU 106640 . 107060) (SKETCHW.SELECTIONFN 107062 . 108165) ( +SKETCH.MONITORLOCK 108167 . 108638) (SK.EVAL.AS.PROCESS 108640 . 109253) (SK.EVAL.WITH.LOCK 109255 . +109532)) (109535 117339 (SK.FIX.MENU 109545 . 110639) (SK.SET.UP.MENUS 110641 . 112942) ( +SK.INSURE.HAS.MENU 112944 . 113606) (SK.CREATE.STANDARD.MENU 113608 . 114053) (SK.ADD.ITEM.TO.MENU +114055 . 114730) (SK.GET.VIEWER.POPUP.MENU 114732 . 116933) (SK.CLEAR.POPUP.MENU 116935 . 117337)) ( +117395 126217 (SKETCH.CREATE 117405 . 118191) (GETSKETCHPROP 118193 . 121250) (PUTSKETCHPROP 121252 . +125184) (CREATE.DEFAULT.SKETCH.CONTEXT 125186 . 126215)) (126383 149279 (SK.COPY.BUTTONEVENTFN 126393 + . 137621) (SK.BUTTONEVENT.MARK 137623 . 138006) (SK.BUILD.IMAGEOBJ 138008 . 147923) ( +SK.BUTTONEVENT.OVERP 147925 . 148548) (SK.BUTTONEVENT.SAME.KEYS 148550 . 149277)) (149558 175373 ( +SK.SEL.AND.CHANGE 149568 . 149860) (SK.CHECK.WHENCHANGEDFN 149862 . 150568) (SK.CHECK.PRECHANGEFN +150570 . 151171) (SK.CHANGE.ELT 151173 . 151365) (SK.CHANGE.THING 151367 . 152618) ( +SKETCH.CHANGE.ELEMENTS 152620 . 153803) (SK.APPLY.SINGLE.CHANGEFN 153805 . 154378) (SK.DO.CHANGESPECS +154380 . 156039) (SK.VIEWER.FROM.SKETCH.ARG 156041 . 156483) (SK.DO.CHANGESPEC1 156485 . 158360) ( +SK.CHANGEFN 158362 . 158942) (SK.READCHANGEFN 158944 . 159403) (SK.DEFAULT.CHANGEFN 159405 . 161877) ( +CHANGEABLEFIELDITEMS 161879 . 162526) (SK.APPLY.CHANGE.COMMAND 162528 . 163145) ( +SK.DO.AND.RECORD.CHANGES 163147 . 164544) (SK.APPLY.CHANGE.COMMAND1 164546 . 166034) ( +SK.ELEMENTS.CHANGEFN 166036 . 168360) (READ.POINT.TO.ADD 168362 . 169306) (GLOBAL.KNOT.FROM.LOCAL +169308 . 169768) (SK.ADD.KNOT.TO.ELEMENT 169770 . 170714) (SK.GROUP.CHANGEFN 170716 . 171928) ( +SK.GROUP.CHANGEFN1 171930 . 175371)) (175540 189273 (ADD.ELEMENT.TO.SKETCH 175550 . 177256) ( +ADD.SKETCH.VIEWER 177258 . 177926) (REMOVE.SKETCH.VIEWER 177928 . 178541) (ALL.SKETCH.VIEWERS 178543 + . 178783) (SKETCH.ALL.VIEWERS 178785 . 179045) (VIEWER.BUCKET 179047 . 179198) (ELT.INSIDE.REGION? +179200 . 179527) (ELT.INSIDE.SKWP 179529 . 179820) (SCALE.FROM.SKW 179822 . 180072) ( +SK.ADDELT.TO.WINDOW 180074 . 180934) (SK.CALC.REGION.VIEWED 180936 . 181314) (SK.DRAWFIGURE 181316 . +182605) (SK.DRAWFIGURE1 182607 . 182991) (SK.LOCAL.FROM.GLOBAL 182993 . 184228) (SKETCH.REGION.VIEWED +184230 . 186917) (SKETCH.VIEW.FROM.NAME 186919 . 187349) (SK.UPDATE.REGION.VIEWED 187351 . 187743) ( +SKETCH.ADD.AND.DISPLAY 187745 . 188153) (SKETCH.ADD.AND.DISPLAY1 188155 . 188593) (SK.ADD.ITEM 188595 + . 188927) (SKETCHW.ADD.INSTANCE 188929 . 189271)) (189314 202502 (SK.SEL.AND.DELETE 189324 . 189712) +(SK.ERASE.AND.DELETE.ITEM 189714 . 190133) (REMOVE.ELEMENT.FROM.SKETCH 190135 . 191246) ( +SK.DELETE.ELEMENT 191248 . 191806) (SK.DELETE.ELEMENT2 191808 . 192469) (SK.DELETE.KNOT 192471 . +192762) (SK.SEL.AND.DELETE.KNOT 192764 . 193889) (SK.DELETE.ELEMENT.KNOT 193891 . 197098) ( +SK.CHECK.WHENDELETEDFN 197100 . 197880) (SK.CHECK.PREEDITFN 197882 . 198366) ( +SK.CHECK.END.INITIAL.EDIT 198368 . 198902) (SK.CHECK.WHENPOINTDELETEDFN 198904 . 199700) (SK.ERASE.ELT + 199702 . 200038) (SK.DELETE.ELT 200040 . 200415) (SK.DELETE.ITEM 200417 . 200825) (DELFROMTCONC +200827 . 202500)) (202541 216375 (SK.COPY.ELT 202551 . 202921) (SK.SEL.AND.COPY 202923 . 203306) ( +SK.COPY.ELEMENTS 203308 . 208936) (SK.ADD.COPY.OF.ELEMENTS 208938 . 210705) ( +SK.GLOBAL.FROM.LOCAL.ELEMENTS 210707 . 210947) (SK.COPY.ITEM 210949 . 211746) (SK.INSERT.SKETCH 211748 + . 216373)) (216415 246436 (SK.MOVE.ELT 216425 . 216700) (SK.MOVE.ELT.OR.PT 216702 . 217015) ( +SK.APPLY.DEFAULT.MOVE 217017 . 217451) (SK.SEL.AND.MOVE 217453 . 218000) (SK.MOVE.ELEMENTS 218002 . +228874) (SKETCH.MOVE.ELEMENTS 228876 . 230807) (SKETCH.COPY.ELEMENTS 230809 . 232856) ( +\SKETCH.COPY.ELEMENT 232858 . 233583) (SK.TRANSLATE.ELEMENT 233585 . 234068) (SK.COPY.GLOBAL.ELEMENT +234070 . 234281) (SK.MAKE.ELEMENT.MOVE.ARG 234283 . 234903) (SK.MAKE.ELEMENTS.MOVE.ARG 234905 . 235427 +) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 235429 . 236498) (SK.SHOW.FIG.FROM.INFO 236500 . 236868) ( +SK.MOVE.THING 236870 . 237776) (UPDATE.ELEMENT.IN.SKETCH 237778 . 239833) (SK.UPDATE.ELEMENT 239835 . +241394) (SK.UPDATE.ELEMENTS 241396 . 242115) (SK.UPDATE.ELEMENT1 242117 . 246017) ( +SK.MOVE.ELEMENT.POINT 246019 . 246434)) (246499 268788 (SK.MOVE.POINTS 246509 . 246796) ( +SK.SEL.AND.MOVE.POINTS 246798 . 247103) (SK.DO.MOVE.ELEMENT.POINTS 247105 . 255762) ( +SK.MOVE.ITEM.POINTS 255764 . 257435) (SK.TRANSLATEPTSFN 257437 . 257821) (SK.TRANSLATE.POINTS 257823 + . 258724) (SK.SELECT.MULTIPLE.POINTS 258726 . 264366) (SK.CONTROL.POINTS.IN.REGION 264368 . 265789) ( +SK.ADD.PT.SELECTION 265791 . 266255) (SK.REMOVE.PT.SELECTION 266257 . 266874) (SK.ADD.POINT 266876 . +267499) (SK.ELTS.CONTAINING.PTS 267501 . 268126) (SK.HOTSPOTS.NOT.ON.LIST 268128 . 268786)) (268946 +271742 (SK.SET.MOVE.MODE 268956 . 269627) (SK.SET.MOVE.MODE.POINTS 269629 . 269968) ( +SK.SET.MOVE.MODE.ELEMENTS 269970 . 270314) (SK.SET.MOVE.MODE.COMBINED 270316 . 270666) (READMOVEMODE +270668 . 271740)) (271743 290498 (SK.ALIGN.POINTS 271753 . 272043) (SK.SEL.AND.ALIGN.POINTS 272045 . +272354) (SK.ALIGN.POINTS.LEFT 272356 . 272659) (SK.ALIGN.POINTS.RIGHT 272661 . 272966) ( +SK.ALIGN.POINTS.TOP 272968 . 273269) (SK.ALIGN.POINTS.BOTTOM 273271 . 273578) ( +SK.EVEN.SPACE.POINTS.IN.X 273580 . 273900) (SK.EVEN.SPACE.POINTS.IN.Y 273902 . 274222) ( +SK.DO.ALIGN.POINTS 274224 . 284846) (SK.NTH.CONTROL.POINT 284848 . 285309) ( +SK.GET.SELECTED.ELEMENT.STRUCTURE 285311 . 285977) (SK.CORRESPONDING.CONTROL.PT 285979 . 286533) ( +SK.CONTROL.POINT.NUMBER 286535 . 286905) (SK.DO.ALIGN.SETVALUE 286907 . 290496)) (290562 303994 ( +SKETCH.CREATE.GROUP 290572 . 291061) (SK.CREATE.GROUP1 291063 . 291610) (SK.UPDATE.GROUP.AFTER.CHANGE +291612 . 292401) (SK.GROUP.ELTS 292403 . 292684) (SK.SEL.AND.GROUP 292686 . 293072) (SK.GROUP.ELEMENTS + 293074 . 294723) (SK.UNGROUP.ELT 294725 . 295009) (SK.SEL.AND.UNGROUP 295011 . 296680) ( +SK.UNGROUP.ELEMENT 296682 . 297618) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 297620 . 298542) ( +SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 298544 . 299555) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 299557 . +300897) (SK.UNIONREGIONS 300899 . 303265) (SKETCH.REGION.OF.SKETCH 303267 . 303683) (SK.FLASHREGION +303685 . 303992)) (303995 317466 (INIT.GROUP.ELEMENT 304005 . 304877) (GROUP.DRAWFN 304879 . 305329) ( +GROUP.EXPANDFN 305331 . 306894) (GROUP.INSIDEFN 306896 . 307305) (GROUP.REGIONFN 307307 . 307702) ( +GROUP.GLOBALREGIONFN 307704 . 308022) (GROUP.TRANSLATEFN 308024 . 310056) (GROUP.TRANSFORMFN 310058 . +313538) (GROUP.READCHANGEFN 313540 . 317464)) (317467 318475 (REGION.CENTER 317477 . 318078) ( +REMOVE.LAST 318080 . 318473)) (318528 323635 (SK.MOVE.GROUP.CONTROL.PT 318538 . 318829) ( +SK.SEL.AND.MOVE.CONTROL.PT 318831 . 320235) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 320237 . 322310) ( +SK.READ.NEW.GROUP.CONTROL.PT 322312 . 323633)) (323894 328518 (SK.DO.GROUP 323904 . 325356) ( +SK.CHECK.WHENGROUPEDFN 325358 . 326068) (SK.DO.UNGROUP 326070 . 327275) (SK.CHECK.WHENUNGROUPEDFN +327277 . 327864) (SK.GROUP.UNDO 327866 . 328189) (SK.UNGROUP.UNDO 328191 . 328516)) (328759 333681 ( +SK.FREEZE.ELTS 328769 . 329053) (SK.SEL.AND.FREEZE 329055 . 329445) (SK.FREEZE.ELEMENTS 329447 . +329998) (SK.UNFREEZE.ELT 330000 . 330289) (SK.SEL.AND.UNFREEZE 330291 . 331827) (SK.UNFREEZE.ELEMENTS +331829 . 332388) (SK.FREEZE.UNDO 332390 . 332635) (SK.UNFREEZE.UNDO 332637 . 332884) (SK.DO.FREEZE +332886 . 333279) (SK.DO.UNFREEZE 333281 . 333679)) (333911 343721 (SKETCH.ELEMENTS.OF.SKETCH 333921 . +334756) (SKETCH.LIST.OF.ELEMENTS 334758 . 335476) (SKETCH.ADD.ELEMENT 335478 . 336553) ( +SKETCH.DELETE.ELEMENT 336555 . 338287) (DELFROMGROUPELT 338289 . 339089) (SKETCH.ELEMENT.TYPE 339091 + . 339440) (SKETCH.ELEMENT.CHANGED 339442 . 341010) (SK.ELEMENT.CHANGED1 341012 . 341663) ( +SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341665 . 343719)) (343775 348387 (INSURE.SKETCH 343785 . 346400) + (LOCALSPECS.FROM.VIEWER 346402 . 346762) (SK.LOCAL.ELT.FROM.GLOBALPART 346764 . 347232) ( +SKETCH.FROM.VIEWER 347234 . 347468) (INSPECT.SKETCH 347470 . 347795) (ELT.INSIDE.SKETCHWP 347797 . +348070) (SK.INSIDE.REGION 348072 . 348385)) (348388 352718 (MAPSKETCHSPECS 348398 . 349019) ( +MAPCOLLECTSKETCHSPECS 349021 . 349770) (MAPSKETCHSPECSUNTIL 349772 . 350580) (MAPGLOBALSKETCHSPECS +350582 . 351283) (MAPGLOBALSKETCHELEMENTS 351285 . 352716)) (352780 378672 (SK.ADD.SELECTION 352790 . +353530) (SK.COPY.INSERTFN 353532 . 357163) (SCREENELEMENTP 357165 . 357638) (SK.ITEM.REGION 357640 . +358127) (SK.ELEMENT.GLOBAL.REGION 358129 . 358657) (SK.LOCAL.ITEMS.IN.REGION 358659 . 360638) ( +SK.REGIONFN 360640 . 360962) (SK.GLOBAL.REGIONFN 360964 . 361322) (SK.REMOVE.SELECTION 361324 . 362052 +) (SK.SELECT.MULTIPLE.ITEMS 362054 . 372496) (SKETCH.GET.ELEMENTS 372498 . 373921) (SK.PUT.MARKS.UP +373923 . 374262) (SK.TAKE.MARKS.DOWN 374264 . 374603) (SK.TRANSLATE.GLOBALPART 374605 . 376732) ( +SK.TRANSLATE.ITEM 376734 . 377661) (SK.TRANSLATEFN 377663 . 377859) (TRANSLATE.SKETCH 377861 . 378670) +) (378938 381845 (SK.INPUT.SCALE 378948 . 379795) (SK.UPDATE.SKETCHCONTEXT 379797 . 380394) ( +SK.SET.INPUT.SCALE 380396 . 381045) (SK.SET.INPUT.SCALE.CURRENT 381047 . 381338) ( +SK.SET.INPUT.SCALE.VALUE 381340 . 381843)) (381896 383808 (SK.SET.FEEDBACK.MODE 381906 . 383212) ( +SK.SET.FEEDBACK.POINT 383214 . 383382) (SK.SET.FEEDBACK.VERBOSE 383384 . 383553) ( +SK.SET.FEEDBACK.ALWAYS 383555 . 383806)) (383959 385337 (SKETCH.TITLE 383969 . 384333) ( +SK.SHRINK.ICONCREATE 384335 . 385335)) (391027 393841 (READBRUSHSHAPE 391037 . 391496) (READ.FUNCTION +391498 . 392013) (READBRUSHSIZE 392015 . 392473) (READANGLE 392475 . 392967) (READARCDIRECTION 392969 + . 393839)) (393842 404253 (SK.CHANGE.DASHING 393852 . 397800) (READ.AND.SAVE.NEW.DASHING 397802 . +399570) (READ.NEW.DASHING 399572 . 401312) (READ.DASHING.CHANGE 401314 . 402789) (SK.CACHE.DASHING +402791 . 403793) (SK.DASHING.LABEL 403795 . 404251)) (404254 407959 (READ.FILLING.CHANGE 404264 . +406245) (SK.CACHE.FILLING 406247 . 406965) (READ.AND.SAVE.NEW.FILLING 406967 . 407565) ( +SK.FILLING.LABEL 407567 . 407957)) (408343 444596 (SK.GETGLOBALPOSITION 408353 . 408658) ( +SKETCH.TRACK.ELEMENTS 408660 . 412180) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 412182 . 412741) ( +MAP.SKETCH.ELEMENTS.INTO.VIEWER 412743 . 413135) (MAP.GLOBAL.POSITION.INTO.VIEWER 413137 . 413517) ( +SKETCH.TO.VIEWER.POSITION 413519 . 413878) (SKETCH.TRACK.IMAGE 413880 . 414734) (SK.TRACK.IMAGE1 +414736 . 416148) (MAP.VIEWER.XY.INTO.GLOBAL 416150 . 417144) (SK.SET.POSITION 417146 . 417482) ( +MAP.VIEWER.PT.INTO.GLOBAL 417484 . 418590) (VIEWER.TO.SKETCH.POSITION 418592 . 419227) ( +SK.INSURE.SCALE 419229 . 419489) (SKETCH.TO.VIEWER.REGION 419491 . 420297) (VIEWER.TO.SKETCH.REGION +420299 . 420637) (SK.READ.POINT.WITH.FEEDBACK 420639 . 431642) (SKETCH.GET.POSITION 431644 . 433524) ( +\CLOBBER.POSITION 433526 . 433974) (NEAREST.HOT.SPOT 433976 . 435504) (GETWREGION 435506 . 436267) ( +GET.BITMAP.POSITION 436269 . 437053) (SK.TRACK.BITMAP1 437055 . 444594)) (445165 476051 ( +SK.BRING.UP.POSITION.PAD 445175 . 451035) (SK.PAD.READER.POSITION 451037 . 452686) ( +SK.POSITION.READER.REPAINTFN 452688 . 454472) (SK.POSITION.PAD.FROM.VIEWER 454474 . 455816) ( +SK.INIT.POSITION.NUMBER.PAD.MENU 455818 . 456168) (SK.READ.POSITION.PAD.HANDLER 456170 . 461902) ( +DISPLAY.POSITION.READER.TOTAL 461904 . 464202) (POSITION.PAD.READER.HANDLER 464204 . 472247) ( +POSITIONPAD.HELDFN 472249 . 473733) (\POSITION.PAD.ADD.DIGIT.MENU 473735 . 475314) ( +\POSITION.READER.NUMBERPAD 475316 . 476049)) (477677 480355 (SK.DRAWFN 477687 . 478053) ( +SK.TRANSFORMFN 478055 . 478436) (SK.EXPANDFN 478438 . 478715) (SK.INPUT 478717 . 479098) (SK.INSIDEFN +479100 . 479740) (SK.UPDATEFN 479742 . 480353)) (486120 490065 (SK.CHECK.SKETCH.VERSION 486130 . +487370) (SK.INSURE.RECORD.LENGTH 487372 . 488855) (SK.INSURE.HAS.LENGTH 488857 . 489595) ( +SK.RECORD.LENGTH 489597 . 489771) (SK.SET.RECORD.LENGTHS 489773 . 490063)) (490528 491415 ( +SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490538 . 491413))))) STOP diff --git a/library/sketch/SKETCH-EDIT b/library/sketch/SKETCH-EDIT index fe712eea5..24279696a 100644 --- a/library/sketch/SKETCH-EDIT +++ b/library/sketch/SKETCH-EDIT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-Dec-2023 00:12:04" {WMEDLEY}sketch>SKETCH-EDIT.;1 108598 +(FILECREATED " 5-Nov-2025 23:56:42" {WMEDLEY}sketch>SKETCH-EDIT.;2 108507 :EDIT-BY rmk - :CHANGES-TO (RECORDS TEXTELTSELECTION) + :CHANGES-TO (FNS SKED.MOVE.SELECTION) - :PREVIOUS-DATE "21-Aug-2021 20:50:04" {WMEDLEY}sketch>SKETCHEDIT.;1) + :PREVIOUS-DATE " 5-Dec-2023 00:12:04" {WMEDLEY}sketch>SKETCH-EDIT.;1) (PRETTYCOMPRINT SKETCH-EDITCOMS) @@ -520,11 +520,10 @@ (SKED.MOVE.SELECTION SKW (NOT (WINDOWPROP SKW 'USEGRID]) (SKED.MOVE.SELECTION - [LAMBDA (SKW USEGRID) (* rrb "11-Jul-86 15:51") - - (* the user has left buttoned in a sketch window. - Put the caret there.) - + [LAMBDA (SKW USEGRID) (* ; "Edited 5-Nov-2025 23:56 by rmk") + (* rrb "11-Jul-86 15:51") + (* ; + "the user has left buttoned in a sketch window. Put the caret there.") (SKED.CLEAR.SELECTION SKW) (PROG (FEEDBACKX FEEDBACKY OLDGRIDX OLDGRIDY OLDX OLDY OLDCUR FEEDBACKCUR INTEXT INIMAGEOBJ STARTLINE STARTCHAR X Y (DSP (WINDOWPROP SKW 'DSP)) @@ -532,44 +531,36 @@ (GRID (SK.GRIDFACTOR SKW))) (until (MOUSESTATE UP) do - - (* track with the appropriate caret depending upon whether the cursor is inside - of existing text or not.) + (* ;; "track with the appropriate caret depending upon whether the cursor is inside of existing text or not.") (SETQ X (LASTMOUSEX DSP)) (SETQ Y (LASTMOUSEY DSP)) (COND ((OR (NEQ OLDX X) - (NEQ OLDY Y)) - - (* only look for things when the cursor position has changed.) - + (NEQ OLDY Y)) (* ; + "only look for things when the cursor position has changed.") (SETQ OLDX X) (SETQ OLDY Y) [COND ([AND (SETQ INTEXT (for ELT in (LOCALSPECS.FROM.VIEWER SKW) + unless (EQ 'SHADE (fetch (LOCALTEXT LOCALFONT) + of (fetch (SCREENELT LOCALPART) of ELT))) when (SELECTQ (fetch (SCREENELT GTYPE) of ELT) - (TEXT (AND (NEQ (fetch (LOCALTEXT LOCALFONT) - of (fetch (SCREENELT LOCALPART) - of ELT)) - 'SHADE) - (SETQ STARTLINE (INTEXT ELT X Y)))) - (TEXTBOX (AND (NEQ (fetch (LOCALTEXTBOX LOCALFONT) - of (fetch (SCREENELT LOCALPART) - of ELT)) - 'SHADE) - (INSIDE? (fetch (LOCALTEXTBOX - LOCALTEXTBOXREGION) - of (fetch (SCREENELT LOCALPART) - of ELT)) - X Y) - (SETQ STARTLINE (CLOSEST.LINE ELT Y)))) + (TEXT (SETQ STARTLINE (INTEXT ELT X Y))) + (TEXTBOX (CL:WHEN (INSIDE? (fetch (LOCALTEXTBOX + LOCALTEXTBOXREGION + ) + of (fetch (SCREENELT + LOCALPART) + of ELT)) + X Y) + (SETQ STARTLINE (CLOSEST.LINE ELT Y)))) NIL) do (RETURN ELT))) (NOT (SK.ELEMENT.PROTECTED? (fetch (SCREENELT GLOBALPART) of INTEXT) - 'CHANGE] (* inside of a text element.) + 'CHANGE] (* ; "inside of a text element.") (SETQ FEEDBACKCUR IN.TEXT.FEEDBACK.CURSOR) - (SETQ FEEDBACKX (CHAR.BEGIN (SETQ STARTCHAR (CLOSEST.CHAR X STARTLINE INTEXT + (SETQ FEEDBACKX (CHAR.BEGIN (SETQ STARTCHAR (CLOSEST.CHAR X STARTLINE INTEXT DSP)) STARTLINE INTEXT DSP)) (SETQ FEEDBACKY (LINE.BEGIN STARTLINE INTEXT))) @@ -577,7 +568,7 @@ (COND (USEGRID (SETQ FEEDBACKX (MAP.WINDOW.ONTO.GRID X SCALE GRID)) (SETQ FEEDBACKY (MAP.WINDOW.ONTO.GRID Y SCALE GRID))) - (T (* no grid) + (T (* ; "no grid") (SETQ FEEDBACKX X) (SETQ FEEDBACKY Y] (COND @@ -588,13 +579,13 @@ (SHOW.FEEDBACK (SETQ OLDCUR FEEDBACKCUR) (SETQ OLDGRIDX FEEDBACKX) (SETQ OLDGRIDY FEEDBACKY) - SKW))) (* give the coordinate display window - a shot.) + SKW))) (* ; + "give the coordinate display window a shot.") (SKETCHW.UPDATE.LOCATORS SKW))) finally (AND OLDGRIDX (SHOW.FEEDBACK OLDCUR OLDGRIDX OLDGRIDY SKW)) (COND - ((EQ OLDCUR IN.TEXT.FEEDBACK.CURSOR) (* selection is existing text) - (SKED.SET.SELECTION (CREATE.TEXT.SELECTION INTEXT STARTLINE STARTCHAR OLDGRIDX + ((EQ OLDCUR IN.TEXT.FEEDBACK.CURSOR) (* ; "selection is existing text") + (SKED.SET.SELECTION (CREATE.TEXT.SELECTION INTEXT STARTLINE STARTCHAR OLDGRIDX OLDGRIDY DSP) SKW)) (OLDGRIDX (SKED.SET.SELECTION (create POSITION @@ -1953,7 +1944,7 @@ YCOORD _ (LASTMOUSEY WIN]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2425 39533 (BUTLAST 2435 . 2783) (CHAR.BEGIN 2785 . 4710) (CLOSEST.CHAR 4712 . 8935) ( + (FILEMAP (NIL (2425 39442 (BUTLAST 2435 . 2783) (CHAR.BEGIN 2785 . 4710) (CLOSEST.CHAR 4712 . 8935) ( CLOSEST.LINE 8937 . 9499) (FLASHW 9501 . 9658) (HILITE.LINE 9660 . 10479) (HILITE.TEXT 10481 . 12129) (IN.TEXT.EXTEND 12131 . 15404) (INIMAGEOBJ 15406 . 15911) (INTEXT 15913 . 16410) (NEW.TEXT.EXTEND 16412 . 18631) (NEW.TEXT.SELECTIONP 18633 . 18813) (NTHCHARWIDTH 18815 . 19072) (NTHLOCALREGION 19074 @@ -1961,18 +1952,18 @@ CLOSEST.LINE 8937 . 9499) (FLASHW 9501 . 9658) (HILITE.LINE 9660 . 10479) (HILIT . 21138) (SHOW.FEEDBACK.BOX 21140 . 22194) (SELECTION.POSITION 22196 . 22988) (SKED.CLEAR.SELECTION 22990 . 23513) (SKETCH.CLEANUP 23515 . 25429) (SK.ENTER.EDIT.CHANGE 25431 . 26976) ( SKED.REMOVE.OTHER.SELECTIONS 26978 . 27405) (SKED.EXTEND.SELECTION 27407 . 28872) (SKED.MOVE.SELECTION - 28874 . 34035) (CREATE.TEXT.SELECTION 34037 . 34553) (SKED.SELECTION.FEEDBACK 34555 . 36211) ( -SKED.SET.EXTENDSELECTION 36213 . 36530) (SKED.SET.SELECTION 36532 . 36932) (LINE.BEGIN 36934 . 37488) -(SELECTION.GREATERP 37490 . 38285) (SK.WORD.BREAK.CLASS 38287 . 39127) (SK.GETSYNTAX 39129 . 39531)) ( -40375 86109 (WB.EDITOR 40385 . 41710) (SK.TTYENTRYFN 41712 . 41990) (SK.TTYEXITFN 41992 . 42261) ( -SKED.INSERT 42263 . 42691) (\SKED.INSERT 42693 . 63815) (FIRST.N.ELEMENTS 63817 . 64084) ( -SKED.CREATE.NEW.TEXTBOX 64086 . 70615) (SKED.CHARACTERPOSITION 70617 . 71404) (SKED.LINE.AND.CHAR# -71406 . 73037) (\SKED.DELETE.WORD.FROM.STRING 73039 . 74078) (\SKED.INSERT.CHARS.TO.STR 74080 . 82491) - (JOINCHARS 82493 . 82880) (STRINGFROMCHARACTERS 82882 . 83207) (GETALLCHARS 83209 . 83550) ( -CLEANUP.EDIT 83552 . 84004) (SKED.NEW.TEXTELT 84006 . 86107)) (86144 107152 ( -MAP.SCREEN.POSITION.ONTO.GRID 86154 . 87603) (NEAREST.ON.GRID 87605 . 88149) (SK.MIDDLE.TITLEFN 88151 - . 90094) (WB.BUTTON.HANDLER 90096 . 97918) (WB.ADD.NEW.POINT 97920 . 101249) (WB.DRAWLINE 101251 . -105485) (WB.RUBBERBAND.POSITION 105487 . 106404) (SK.RUBBERBAND.FEEDBACKFN 106406 . 106910) ( -RESET.LINE.BEING.INPUT 106912 . 107150)) (107334 108575 (NEAREST.EXISTING.POSITION 107344 . 107546) ( -WB.NEARPT 107548 . 108433) (LASTMOUSEPOSITION 108435 . 108573))))) + 28874 . 33944) (CREATE.TEXT.SELECTION 33946 . 34462) (SKED.SELECTION.FEEDBACK 34464 . 36120) ( +SKED.SET.EXTENDSELECTION 36122 . 36439) (SKED.SET.SELECTION 36441 . 36841) (LINE.BEGIN 36843 . 37397) +(SELECTION.GREATERP 37399 . 38194) (SK.WORD.BREAK.CLASS 38196 . 39036) (SK.GETSYNTAX 39038 . 39440)) ( +40284 86018 (WB.EDITOR 40294 . 41619) (SK.TTYENTRYFN 41621 . 41899) (SK.TTYEXITFN 41901 . 42170) ( +SKED.INSERT 42172 . 42600) (\SKED.INSERT 42602 . 63724) (FIRST.N.ELEMENTS 63726 . 63993) ( +SKED.CREATE.NEW.TEXTBOX 63995 . 70524) (SKED.CHARACTERPOSITION 70526 . 71313) (SKED.LINE.AND.CHAR# +71315 . 72946) (\SKED.DELETE.WORD.FROM.STRING 72948 . 73987) (\SKED.INSERT.CHARS.TO.STR 73989 . 82400) + (JOINCHARS 82402 . 82789) (STRINGFROMCHARACTERS 82791 . 83116) (GETALLCHARS 83118 . 83459) ( +CLEANUP.EDIT 83461 . 83913) (SKED.NEW.TEXTELT 83915 . 86016)) (86053 107061 ( +MAP.SCREEN.POSITION.ONTO.GRID 86063 . 87512) (NEAREST.ON.GRID 87514 . 88058) (SK.MIDDLE.TITLEFN 88060 + . 90003) (WB.BUTTON.HANDLER 90005 . 97827) (WB.ADD.NEW.POINT 97829 . 101158) (WB.DRAWLINE 101160 . +105394) (WB.RUBBERBAND.POSITION 105396 . 106313) (SK.RUBBERBAND.FEEDBACKFN 106315 . 106819) ( +RESET.LINE.BEING.INPUT 106821 . 107059)) (107243 108484 (NEAREST.EXISTING.POSITION 107253 . 107455) ( +WB.NEARPT 107457 . 108342) (LASTMOUSEPOSITION 108344 . 108482))))) STOP diff --git a/library/sketch/SKETCH-EDIT.LCOM b/library/sketch/SKETCH-EDIT.LCOM index 91cd662b5..bb772bdb8 100644 Binary files a/library/sketch/SKETCH-EDIT.LCOM and b/library/sketch/SKETCH-EDIT.LCOM differ diff --git a/library/sketch/SKETCH-ELEMENTS b/library/sketch/SKETCH-ELEMENTS index ca3acf54a..77154fcfc 100644 --- a/library/sketch/SKETCH-ELEMENTS +++ b/library/sketch/SKETCH-ELEMENTS @@ -1,14 +1,15 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-Dec-2023 00:16:52" {WMEDLEY}sketch>SKETCH-ELEMENTS.;1 554138 +(FILECREATED " 8-Nov-2025 14:02:38" {WMEDLEY}SKETCH>SKETCH-ELEMENTS.;24 545649 :EDIT-BY rmk - :CHANGES-TO (RECORDS LOCALCIRCLE CIRCLE LOCALELLIPSE ELLIPSE KNOTELT LOCALCURVE OPENCURVE - CLOSEDCURVE LOCALCLOSEDCURVE LOCALCLOSEDWIRE LOCALWIRE WIRE CLOSEDWIRE TEXT - LOCALTEXT LOCALTEXTBOX TEXTBOX BOX LOCALBOX ARC LOCALARC) + :CHANGES-TO (FNS SK.CHANGE.TEXT SK.CHANGE.FONT SK.NEWFONT \SK.READ.FONT.SIZE1 SK.NEXTSIZEFONT + SK.DECREASING.FONT.LIST SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.READFONTSIZE + SK.COLLECT.FONT.SIZES SK.READFONTFAMILY SK.SET.FONT SK.GUESS.FONTSAVAILABLE) + (VARS SKETCH-ELEMENTSCOMS) - :PREVIOUS-DATE " 4-Aug-2022 09:57:43" {WMEDLEY}sketch>SKETCHELEMENTS.;2) + :PREVIOUS-DATE " 5-Dec-2023 00:16:52" {WMEDLEY}sketch>SKETCH-ELEMENTS.;1) (PRETTYCOMPRINT SKETCH-ELEMENTSCOMS) @@ -122,9 +123,8 @@ READ.TEXT TEXT.POSITION.AND.CREATE CREATE.TEXT.ELEMENT SK.UPDATE.TEXT.AFTER.CHANGE SK.TEXT.FROM.TEXTBOX TEXT.SET.GLOBAL.REGIONS TEXT.REGIONFN TEXT.GLOBALREGIONFN TEXT.TRANSLATEFN TEXT.TRANSFORMFN TEXT.TRANSLATEPTSFN TEXT.UPDATEFN SK.CHANGE.TEXT - TEXT.SET.SCALES BREAK.AT.CARRIAGE.RETURNS) - (FNS ADD.KNOWN.SKETCH.FONT SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.NEXTSIZEFONT - SK.DECREASING.FONT.LIST SK.GUESS.FONTSAVAILABLE) + SK.CHANGE.FONT TEXT.SET.SCALES BREAK.AT.CARRIAGE.RETURNS) + (FNS SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.NEXTSIZEFONT SK.DECREASING.FONT.LIST) (INITVARS (\KNOWN.SKETCH.FONTSIZES)) (GLOBALVARS \KNOWN.SKETCH.FONTSIZES) (DECLARE%: DONTCOPY (RECORDS TEXT LOCALTEXT)) @@ -136,7 +136,6 @@ (VARS INDICATE.TEXT.SHADE) [INITVARS (SK.DEFAULT.FONT) (SK.DEFAULT.TEXT.ALIGNMENT '(CENTER BASELINE] - (INITVARS \FONTSONFILE) (ADDVARS (SK.HORIZONTAL.STYLES LEFT RIGHT CENTER) (SK.VERTICAL.STYLES TOP CENTER BASELINE BOTTOM)) (VARS (SKETCH.TERMTABLE (CREATE.SKETCH.TERMTABLE))) @@ -4575,10 +4574,13 @@ Click outside the window to stop.") (RETURN (AND VAL (LIST COMMAND VAL]) (\SK.READ.FONT.SIZE1 - [LAMBDA (SELECTEDELTS SKETCHW NEWFAMILY) (* rrb "14-Jul-86 13:43") - - (* reads a font size from the user. If NEWFONT is NIL, use the one of the first - selected element.) + [LAMBDA (SELECTEDELTS SKETCHW NEWFAMILY) (* ; "Edited 6-Nov-2025 22:35 by rmk") + (* rrb "14-Jul-86 13:43") + (* ; + "reads a font size from the user. If NEWFONT is NIL, use the one of the first selected element.") + + (* reads a font size from the user. If NEWFONT is NIL, use the one of the first + selected element.) (PROG (FIRSTTEXTELT NEWSIZE NOWFONT NEWFONT) (OR (SETQ FIRSTTEXTELT (for SCRNELT inside SELECTEDELTS @@ -4606,7 +4608,7 @@ Click outside the window to stop.") (STATUSPRINT SKETCHW NEWFAMILY NEWSIZE " not found.") NIL) (T (CLOSE.PROMPT.WINDOW SKETCHW) - (SK.FONTNAMELIST NEWFONT]) + (FONTPROP NEWFONT 'SPEC]) (SK.TEXT.ELT.WITH.SAME.FIELDS [LAMBDA (NEWONE ORGONE) (* rrb "18-Jul-85 14:16") @@ -4635,26 +4637,33 @@ Click outside the window to stop.") NIL]) (SK.READFONTFAMILY - [LAMBDA (SKW TITLE) (* rrb "21-Nov-85 11:28") - (* reads a font family name.) - (PROG ([KNOWNFAMILIES (UNION (for X in \FONTSONFILE collect (CAR X)) - (for X in \FONTSINCORE collect (CAR X] - FAMILY) (* offers a menu of possible choices.) - (COND - ((AND KNOWNFAMILIES (NEQ (SETQ FAMILY (\CURSOR.IN.MIDDLE.MENU - (create MENU - ITEMS _ - (APPEND '(("other" 'OTHER + [LAMBDA (SKW TITLE) (* ; "Edited 4-Nov-2025 15:08 by rmk") + (* rrb "21-Nov-85 11:28") + + (* ;; "Offers a menu of existing DISPLAY font families, with Other has a way for the user to type one in. Other makes sense only if there are file fonts that are not yet known to Sketch.") + + (* ;; "RMK: Sketch used to keep its own family-by-device cache, separate from \FONTSINCORE. But the way it was set up, those fonts were created in core when they were identified, so FONTSAVAILABLE would find them them on \FONTSINCORE. Here we scan all devices, not just display, to catch whatever might have shown up for a nondisplay device. So this simulates that behavior.") + + (* ;; "But for a user interaction like this, isn't it only DISPLAY families that matter, the descending-font lists for other devices are not relevant. So maybe we really want only DISPLAY here.") + + (LET (KNOWNFAMILIES FAMILY) + (for FS in (FONTSAVAILABLE '* '* NIL NIL '*) do (pushnew KNOWNFAMILIES (fetch (FONTSPEC + FSFAMILY) + of FS))) + (if (AND KNOWNFAMILIES (NEQ (SETQ FAMILY (\CURSOR.IN.MIDDLE.MENU + (create MENU + ITEMS _ [APPEND + (SORT KNOWNFAMILIES) + '(("other" 'OTHER "prompts for a family not on the menu." - )) KNOWNFAMILIES) - TITLE _ (OR TITLE "Choose font") - CENTERFLG _ T))) - 'OTHER)) - (RETURN FAMILY)) - (T (* grab the tty.) - (TTY.PROCESS (THIS.PROCESS)) - (RETURN (CAR (ERSETQ (MKATOM (U-CASE (PROMPTFORWORD "New family: " NIL NIL - (GETPROMPTWINDOW SKW]) + ] + TITLE _ (OR TITLE "Choose font") + CENTERFLG _ T))) + 'OTHER)) + then FAMILY + else (CAR (ERSETQ (MKATOM (U-CASE (TTYINPROMPTFORWORD "New family: " NIL NIL ( + GETPROMPTWINDOW + SKW]) (CLOSE.PROMPT.WINDOW [LAMBDA (WINDOW) (* rrb "28-Oct-84 14:14") @@ -5189,40 +5198,30 @@ Click outside the window to stop.") (RETURN NEWSCREENELT]) (SK.CHANGE.TEXT - [LAMBDA (ELTWITHTEXT HOW SKW) (* ; "Edited 7-Apr-87 13:41 by rrb") + [LAMBDA (ELTWITHTEXT HOW SKW) (* ; "Edited 8-Nov-2025 14:02 by rmk") + (* ; "Edited 7-Nov-2025 09:05 by rmk") + (* ; "Edited 7-Apr-87 13:41 by rrb") (PROG ((COMMAND (CADR HOW)) (PROPERTY 'FONT) - NEWVALUE GINDTEXTELT NEWGTEXT OLDVALUE OLDFACE GTYPE) - (OR HOW (RETURN)) (* take down the caret before any - change.) + NEWVALUE GINDTEXTELT NEWGTEXT OLDVALUE GTYPE) + (CL:UNLESS HOW (RETURN)) (* ; + "take down the caret before any change.") (SKED.CLEAR.SELECTION SKW) - (COND - ((MEMB (SETQ GTYPE (fetch (GLOBALPART GTYPE) of ELTWITHTEXT)) - '(TEXTBOX TEXT)) + (CL:WHEN (MEMB (SETQ GTYPE (fetch (GLOBALPART GTYPE) of ELTWITHTEXT)) + '(TEXTBOX TEXT)) (SETQ GINDTEXTELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELTWITHTEXT)) - - (* set the old value to the old font. In the case where the thing that changes - is the justification, this will get re-set) - - (SETQ OLDVALUE (fetch (TEXT FONT) of GINDTEXTELT)) (SETQ NEWGTEXT (SELECTQ (CAR HOW) (TEXT (SELECTQ COMMAND - ((SMALLER LARGER) (* change the font) + ((SMALLER LARGER) (* ; "change the font") [COND - [[SETQ NEWVALUE (SK.NEXTSIZEFONT COMMAND - (LIST (FONTPROP OLDVALUE 'FAMILY) - (FONTPROP OLDVALUE 'SIZE] - (* if there is an appropriate size - font, use it.) - [SETQ NEWVALUE (LIST (FONTPROP NEWVALUE 'FAMILY) - (FONTPROP NEWVALUE 'SIZE) - (FONTPROP OLDVALUE 'FACE] - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE] - (T (* otherwise just scale the area some.) + ((SETQ NEWVALUE (SK.NEXTSIZEFONT COMMAND OLDVALUE)) + (* ; + "if there is an appropriate size font, use it.") + (OR (SK.CHANGE.FONT SKW ELTWITHTEXT NEWVALUE) + (RETURN))) + (T (* ; + "otherwise just scale the area some.") (SETQ NEWVALUE (FTIMES (SETQ OLDVALUE (fetch (TEXT INITIALSCALE ) @@ -5236,18 +5235,18 @@ Click outside the window to stop.") (create TEXT using GINDTEXTELT INITIALSCALE _ NEWVALUE)) (T (create TEXTBOX using GINDTEXTELT INITIALSCALE _ NEWVALUE]) - ((CENTER LEFT RIGHT) (* change the horizontal justification) - [SETQ NEWVALUE (LIST COMMAND (CADR (SETQ OLDVALUE - (fetch (TEXT TEXTSTYLE) - of GINDTEXTELT] + ((CENTER LEFT RIGHT) (* ; + "change the horizontal justification") + (SETQ OLDVALUE (fetch (TEXT TEXTSTYLE) of GINDTEXTELT)) + (SETQ NEWVALUE (LIST COMMAND (CADR OLDVALUE))) (SETQ PROPERTY 'JUSTIFICATION) (COND ((EQ GTYPE 'TEXT) (create TEXT using GINDTEXTELT TEXTSTYLE _ NEWVALUE)) (T (create TEXTBOX using GINDTEXTELT TEXTSTYLE _ NEWVALUE)))) - ((TOP BOTTOM MIDDLE BASELINE) (* change the vertical justification) - [SETQ NEWVALUE (LIST (CAR (SETQ OLDVALUE (fetch (TEXT TEXTSTYLE) - of GINDTEXTELT))) + ((TOP BOTTOM MIDDLE BASELINE) (* ; "change the vertical justification") + (SETQ OLDVALUE (fetch (TEXT TEXTSTYLE) of GINDTEXTELT)) + [SETQ NEWVALUE (LIST (CAR OLDVALUE) (COND ((EQ COMMAND 'MIDDLE) 'CENTER) @@ -5257,28 +5256,27 @@ Click outside the window to stop.") ((EQ GTYPE 'TEXT) (create TEXT using GINDTEXTELT TEXTSTYLE _ NEWVALUE)) (T (create TEXTBOX using GINDTEXTELT TEXTSTYLE _ NEWVALUE)))) - ((BOLD UNBOLD ITALIC UNITALIC) (* change the face) - (SETQ OLDFACE (FONTPROP OLDVALUE 'FACE)) - [SETQ NEWVALUE (LIST (FONTPROP OLDVALUE 'FAMILY) - (FONTPROP OLDVALUE 'SIZE) - (LIST (SELECTQ COMMAND - (BOLD 'BOLD) - (UNBOLD 'MEDIUM) - (CAR OLDFACE)) - (SELECTQ COMMAND - (ITALIC 'ITALIC) - (UNITALIC 'REGULAR) - (CADR OLDFACE)) - (CADDR OLDFACE] - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE)))) - (BOX (* if it is a text element, BOX it) + ((BOLD UNBOLD ITALIC UNITALIC) (* ; "change the face") + (OR [SK.CHANGE.FONT SKW ELTWITHTEXT NIL NIL + (MAKEFONTFACE (SELECTQ COMMAND + (BOLD 'BOLD) + (UNBOLD 'MEDIUM) + NIL) + (SELECTQ COMMAND + (ITALIC 'ITALIC) + (UNITALIC 'REGULAR) + NIL) + NIL + (FONTPROP (fetch (TEXT FONT) of GINDTEXTELT) + 'FACE] + (RETURN))) + (BOX (* ; + "RMK 2025: RETURN MEANS NO HISTORY?") + (* ; "if it is a text element, BOX it") [COND ((EQ GTYPE 'TEXT) (RETURN (SK.TEXTBOX.FROM.TEXT ELTWITHTEXT SKW]) - (UNBOX (* if it is a text box, unbox it.) + (UNBOX (* ; "if it is a text box, unbox it.") [COND ((EQ GTYPE 'TEXTBOX) (RETURN (SK.TEXT.FROM.TEXTBOX ELTWITHTEXT SKW]) @@ -5286,59 +5284,25 @@ Click outside the window to stop.") ((EQ GTYPE 'TEXT) (RETURN (SK.LOOKEDSTRING.FROM.TEXT ELTWITHTEXT SKW]) (SHOULDNT))) - (SETSIZE (SETQ NEWVALUE COMMAND) - (COND - [(EQ (FONTPROP NEWVALUE 'FAMILY) - (FONTPROP OLDVALUE 'FAMILY)) - - (* if the families are the same, change them, otherwise don't as it isn't known - whether or not this family has the right size.) + (SETSIZE + (* ;; "if the families are the same, change them, otherwise don't as it isn't known whether or not this family has the right size.") - (COND - [(EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ (LIST (FONTPROP - OLDVALUE - 'FAMILY) - (FONTPROP - NEWVALUE - 'SIZE) - (FONTPROP - OLDVALUE - 'FACE] - (T (create TEXTBOX using GINDTEXTELT FONT _ - (LIST (FONTPROP OLDVALUE 'FAMILY) - (FONTPROP NEWVALUE 'SIZE) - (FONTPROP OLDVALUE 'FACE] - (T (RETURN)))) - (NEWFONT (* set the font family) - [SETQ NEWVALUE (LIST COMMAND (FONTPROP OLDVALUE 'SIZE) - (FONTPROP OLDVALUE 'FACE] - (COND - ((NULL (FONTCREATE NEWVALUE NIL NIL NIL NIL T)) - (STATUSPRINT SKW " Couldn't find " (CAR NEWVALUE) - " in size " - (CADR NEWVALUE)) + (OR [AND (EQ (FONTPROP COMMAND 'FAMILY) + (FONTPROP OLDVALUE 'FAMILY)) + (SK.CHANGE.FONT SKW ELTWITHTEXT NIL (FONTPROP COMMAND + 'SIZE] (RETURN))) - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE)))) - (FAMILY&SIZE (* set the font family and size) - [SETQ NEWVALUE (LIST (CAR COMMAND) - (CADR COMMAND) - (FONTPROP (fetch (TEXT FONT) of GINDTEXTELT) - 'FACE] - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE)))) - (SAME - - (* set all of the font characteristics from the first selected one.) - - (* set the variables to cause the right things to go into the change spec - event.) - + (NEWFONT (* ; "set the font family") + (CL:UNLESS (SK.CHANGE.FONT SKW ELTWITHTEXT COMMAND) + (RETURN))) + (FAMILY&SIZE (* ; "set the font family and size") + (CL:UNLESS (SK.CHANGE.FONT SKW ELTWITHTEXT (CAR COMMAND) + (CADR COMMAND)) + (RETURN))) + (SAME (* ; + "set all of the font characteristics from the first selected one.") + (* ; + "set the variables to cause the right things to go into the change spec event.") (SETQ OLDVALUE ELTWITHTEXT) (SETQ PROPERTY 'LOOKSAME) (SETQ NEWVALUE (SK.TEXT.ELT.WITH.SAME.FIELDS (fetch (GLOBALPART @@ -5347,11 +5311,8 @@ Click outside the window to stop.") GINDTEXTELT))) (SHOULDNT))) [SETQ NEWGTEXT (COND - [(EQ GTYPE 'TEXT) - - (* adjust the scales at which this appears because font or scale may have - changed.) - + [(EQ GTYPE 'TEXT) (* ; + "adjust the scales at which this appears because font or scale may have changed.") (TEXT.SET.SCALES (create GLOBALPART COMMONGLOBALPART _ (fetch (GLOBALPART COMMONGLOBALPART @@ -5360,11 +5321,8 @@ Click outside the window to stop.") INDIVIDUALGLOBALPART _ (  TEXT.SET.GLOBAL.REGIONS NEWGTEXT] - (T - - (* scaling for text boxes depends on the box size which can't change in this - function.) - + (T (* ; + "scaling for text boxes depends on the box size which can't change in this function.") (create GLOBALPART COMMONGLOBALPART _ (fetch (GLOBALPART COMMONGLOBALPART) of ELTWITHTEXT) @@ -5375,7 +5333,26 @@ Click outside the window to stop.") OLDELT _ ELTWITHTEXT PROPERTY _ PROPERTY NEWVALUE _ NEWVALUE - OLDVALUE _ OLDVALUE]) + OLDVALUE _ OLDVALUE)))]) + +(SK.CHANGE.FONT + [LAMBDA (SKW ELTWITHTEXT FAMILY SIZE FACE) (* ; "Edited 7-Nov-2025 09:09 by rmk") + (LET (NEWFS) + [if (FONTP FAMILY) + then (SETQ NEWFS (FONTPROP FAMILY 'SPEC)) + else (SETQ NEWFS (MAKEFONTSPEC FAMILY SIZE FACE NIL NIL (fetch (TEXT FONT) of GINDTEXTELT) + )) + (CL:UNLESS (FONTCREATE NEWFS NIL NIL NIL NIL T) + (STATUSPRINT SKW " Couldn't find " (fetch (FONTSPEC FSFAMILY) of NEWFS) + " in size " + (fetch (FONTSPEC FSSIZE) of NEWFS)))] + (CL:WHEN NEWFS + (if (EQ (fetch (GLOBALPART GTYPE) of ELTWITHTEXT) + 'TEXT) + then (create TEXT using (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELTWITHTEXT) + FONT _ NEWFS) + else (create TEXTBOX using (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELTWITHTEXT) + FONT _ NEWFS)))]) (TEXT.SET.SCALES [LAMBDA (GTEXTELT) (* rrb "12-May-85 16:29") @@ -5418,321 +5395,188 @@ Click outside the window to stop.") ) (DEFINEQ -(ADD.KNOWN.SKETCH.FONT - [LAMBDA (FAMILY WID DEVICE FONT) (* ; "Edited 10-May-93 16:49 by rmk:") - (* ; "Edited 21-Feb-89 15:06 by snow") - - (* ;; "add to the globally cached font list") - - (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - [LET ((CACHE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES)) - (CACHED)) - (COND - [(NULL CACHE) - (if \KNOWN.SKETCH.FONTSIZES - then [NCONC1 \KNOWN.SKETCH.FONTSIZES (LIST FAMILY (LIST DEVICE (CONS WID FONT] - else (SETQ \KNOWN.SKETCH.FONTSIZES (LIST (LIST FAMILY (LIST DEVICE - (CONS WID FONT] - (T (COND - ((SETQ CACHED (ASSOC DEVICE CACHE)) - (NCONC1 CACHED (CONS WID FONT))) - (T (NCONC1 CACHE (CONS DEVICE (CONS WID FONT] - FONT]) - (SK.PICK.FONT - [LAMBDA (WID STRING DEVICE DISPLAYGFONT) (* ; "Edited 10-May-93 17:11 by rmk:") - (* ; "Edited 22-Feb-89 07:53 by snow") + [LAMBDA (WID STRING DEVICE DISPLAYFONT) (* ; "Edited 6-Nov-2025 10:41 by rmk") + (* ; "Edited 1-Sep-2025 13:02 by rmk") + (* ; "Edited 10-May-93 17:11 by rmk:") + (* ; "Edited 22-Feb-89 07:53 by snow") - (* ;; "returns the font in FAMILY that text should be printed in to have the text STRING fit into a region WID points wide") + (* ;; "RMK 2025: This is weird, and I'm not sure that the original ever worked. It is called from only one place (SK.CHOOSE.TEXT.FONT), with one constant STRING. I believe it is trying to associate with DISPLAYFONT's family a corresponding DEVICE font for which the width of that string would be closest to WID without being larger than that. It caches that font for WID, since that really is just a constant.") + + (* ;; "Returns the font in DISPLAYFONT's family that text should be printed in to have the text STRING fit into a region WID points wide. The value can also be the atom SHADE, if there is no font small enough for STRING.") (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - (LET - [STARTFONT FONTWIDTH SCALE CACHEDFONT SIZE (FAMILY (FONTPROP DISPLAYGFONT 'FAMILY] - (IF [SETQ CACHEDFONT (ASSOC WID (ASSOC DEVICE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES] - THEN (CDR CACHEDFONT) - ELSE (SETQ STARTFONT (FONTCOPY DISPLAYGFONT 'DEVICE DEVICE)) - NIL - (SETQ SCALE (FONTPROP STARTFONT 'SCALE)) - (SETQ SIZE (FONTPROP STARTFONT 'SIZE)) - [SETQ FONTWIDTH (COND - (SCALE - (* ;; "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.") - - (FIXR (QUOTIENT (STRINGWIDTH STRING STARTFONT) - SCALE))) - (T (STRINGWIDTH STRING STARTFONT] - [SETQ CACHEDFONT - (IF (IGREATERP FONTWIDTH WID) - THEN - - (* ;; "Font width was too big, try smaller fonts in decreasing size.") - - [FOR FONT IN [CDR (FIND F - ON [SORT (FONTSAVAILABLE FAMILY '* - 'MRR 0 DEVICE T) - (FUNCTION (LAMBDA (F1 F2) - (IGREATERP (CADR F1) - (CADR F2] - SUCHTHAT (EQ SIZE (CADR F] - WHEN (ILESSP [SETQ FONTWIDTH (COND - (SCALE - (* ;; - "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.") - - (FIXR (QUOTIENT (STRINGWIDTH - STRING FONT) - SCALE))) - (T (STRINGWIDTH STRING FONT] - WID) DO (RETURN (ADD.KNOWN.SKETCH.FONT FAMILY WID - DEVICE FONT)) - FINALLY (RETURN (ADD.KNOWN.SKETCH.FONT - FAMILY WID DEVICE - (IF (GREATERP FONTWIDTH (TIMES 1.5 WID)) - THEN 'SHADE - ELSEIF (OR FONT STARTFONT] - ELSEIF (IEQP FONTWIDTH WID) - THEN (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE STARTFONT) - ELSE - - (* ;; "FONT width was too small, try bigger fonts.") - - (FOR FONT PREVFONT - IN [CDR (FIND F ON [SORT (FONTSAVAILABLE FAMILY '* 'MRR 0 DEVICE - T) - (FUNCTION (LAMBDA (F1 F2) - (ILESSP (CADR F1) - (CADR F2] - SUCHTHAT (EQ SIZE (CADR F] - DO (IF (IGREATERP (COND - (SCALE - (* ;; - "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.") - - (FIXR (QUOTIENT (STRINGWIDTH STRING FONT - ) - SCALE))) - (T (STRINGWIDTH STRING FONT))) - WID) - THEN (RETURN (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE - PREVFONT))) - (SETQ PREVFONT FONT) FINALLY (RETURN (ADD.KNOWN.SKETCH.FONT - FAMILY WID DEVICE - (OR FONT PREVFONT STARTFONT] - (IF (FONTP CACHEDFONT) - THEN (* ; "Could be SHADE") - (FONTCOPY CACHEDFONT 'FACE (FONTPROP DISPLAYGFONT 'FACE)) - ELSE CACHEDFONT]) + (LET ((FAMILY (FONTPROP DISPLAYFONT 'FAMILY)) + STARTFONT FONTWIDTH SCALE CACHEDFONT AVAIL TOOSMALL) + (if (SGETMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID (FONTPROP DISPLAYFONT 'FACE)) + else (SETQ STARTFONT (FONTCOPY DISPLAYFONT 'DEVICE DEVICE)) + (SETQ SCALE (FONTPROP STARTFONT 'SCALE)) + (SETQ FONTWIDTH (STRINGWIDTH STRING STARTFONT)) + (CL:IF SCALE + (SETQ FONTWIDTH (FIXR (QUOTIENT FONTWIDTH SCALE)))) + (if (IEQP FONTWIDTH WID) + then (PUTMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID STARTFONT) + else + (* ;; "FONTSAVAILABLE sorts in increasing size order, so our first guess is either after or before the position of STARTFONT in the list. This assumes that the widths are proportional to font sizes.") + + (SETQ TOOSMALL (ILESSP FONTWIDTH WID)) + (SETQ AVAIL (FONTSAVAILABLE (create FONTSPEC using (FONTPROP STARTFONT + 'SPEC) + FSSIZE _ '*) + NIL NIL NIL NIL T)) + + (* ;; + "If STARTFONT width is too big, try smaller fonts, otherwise bigger ones. CDR skips the STARTFONT") + + (for FS FONT (PREVFONT _ STARTFONT) + (PREVWIDTH _ FONTWIDTH) in [CDR (MEMBER (FONTPROP STARTFONT 'SPEC) + (CL:IF TOOSMALL + AVAIL + (REVERSE AVAIL))] + eachtime (SETQ FONT (FONTCREATE FS)) + (SETQ FONTWIDTH (STRINGWIDTH STRING FONT)) + (CL:IF SCALE + (SETQ FONTWIDTH (FIXR (QUOTIENT FONTWIDTH SCALE)))) + until (CL:IF TOOSMALL + (IGREATERP FONTWIDTH WID) + (ILESSP FONTWIDTH WID)) do (SETQ PREVFONT FONT) + (SETQ PREVWIDTH FONTWIDTH) + finally + + (* ;; "We ran over, return the previous") + + (CL:UNLESS TOOSMALL + (CL:WHEN (GREATERP PREVWIDTH (TIMES 1.5 WID)) + (* ; "If we get too small, return SHADE") + (SETQ PREVFONT 'SHADE))) + (SPUTMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID + (FONTPROP DISPLAYFONT 'FACE) + PREVFONT) + (RETURN PREVFONT]) (SK.CHOOSE.TEXT.FONT - [LAMBDA (GTEXT SCALE VIEWER) (* ; "Edited 10-May-93 16:18 by rmk:") - (* ; "Edited 1-Nov-91 16:56 by jds") + [LAMBDA (GTEXT SCALE VIEWER) (* ; "Edited 6-Nov-2025 00:08 by rmk") + (* ; "Edited 10-May-93 16:18 by rmk:") + (* ; "Edited 1-Nov-91 16:56 by jds") - (* ;; "returns the font that text in the individual global part of a text or textbox element GTEXT should be displayed in when shown in VIEWER.") + (* ;; "returns the font that text in the individual global part of a text or textbox element GTEXT should be displayed in when shown in VIEWER.") (PROG ([VIEWERFONTCACHE (OR (AND (WINDOWP VIEWER) (WINDOWPROP VIEWER 'PICKFONTCACHE)) (AND (STREAMP VIEWER) (STREAMPROP VIEWER 'PICKFONTCACHE] (GFONT (fetch (TEXT FONT) of GTEXT)) - LOCALFONT) + (CANONICALTESTSTR "AWIaiw") + LOCALFONT CANONICALWIDTH DEVICE DISPLAYGFONT) + (CL:WHEN (SETQ LOCALFONT (SASSOC GFONT VIEWERFONTCACHE)) + (* ; "look in the viewer's font cache.") + (RETURN (CDR LOCALFONT))) + [SETQ DEVICE (COND + ((STREAMP VIEWER) + (fetch (IMAGEOPS IMAGETYPE) of (fetch (STREAM IMAGEOPS) of VIEWER))) + (T 'DISPLAY] [COND - ((SETQ LOCALFONT (SASSOC GFONT VIEWERFONTCACHE))(* ; - "look in the viewer's font cache.") - (RETURN (CDR LOCALFONT] - (RETURN (PROG ((CANONICALTESTSTR "AWIaiw") - CANONICALWIDTH DEVICE DISPLAYGFONT) - [SETQ DEVICE (COND - ((STREAMP VIEWER) - (fetch (IMAGEOPS IMFONTCREATE) - of (fetch (STREAM IMAGEOPS) of VIEWER))) - (T 'DISPLAY] - [COND - ((EQUAL (TIMES SCALE (DSPSCALE NIL VIEWER)) - (fetch (TEXT INITIALSCALE) of GTEXT)) - - (* ;; "special case scales being the same so there is not a large delay when first character is typed and to avoid font look up problems when hardcopying at scale 1") - - (SETQ LOCALFONT (FONTCREATE GFONT NIL NIL NIL DEVICE))) - (T - (* ;; "use a canonical string to determine the font size so that all strings of a given font at a given scale look the same. If font is determined by the width of the particular string, two different string will appear in different fonts. In particular, the string may change fonts as the user is typing into it.") - - (* ;; "don't use the face information when determining string width because in some cases HELVETICA 10, the bold is smaller than the regular.") - - (SETQ DISPLAYGFONT (FONTCREATE GFONT NIL NIL NIL 'DISPLAY)) - [SETQ CANONICALWIDTH - (FIXR (QUOTIENT (TIMES [STRINGWIDTH CANONICALTESTSTR - (LIST (FONTPROP DISPLAYGFONT - 'FAMILY) - (FONTPROP DISPLAYGFONT - 'SIZE] - (fetch (TEXT INITIALSCALE) of GTEXT)) - (TIMES SCALE (DSPSCALE NIL VIEWER] - (* ; "calculate the local font.") - (SETQ LOCALFONT (SK.PICK.FONT CANONICALWIDTH CANONICALTESTSTR - DEVICE DISPLAYGFONT] - [COND - ((WINDOWP VIEWER) - (WINDOWPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) - VIEWERFONTCACHE))) - ((STREAMP VIEWER) - (STREAMPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) - VIEWERFONTCACHE] - (RETURN LOCALFONT]) + ((EQUAL (TIMES SCALE (DSPSCALE NIL VIEWER)) + (fetch (TEXT INITIALSCALE) of GTEXT)) + + (* ;; "special case scales being the same so there is not a large delay when first character is typed and to avoid font look up problems when hardcopying at scale 1") + + (SETQ LOCALFONT (FONTCREATE GFONT NIL NIL NIL DEVICE))) + (T + (* ;; "Use a canonical string to determine the font size so that all strings of a given font at a given scale look the same. If font is determined by the width of the particular string, two different strings will appear in different fonts. In particular, the string may change fonts as the user is typing into it.") + + (* ;; "The canonical width here is the natural font width having somehow taken into account the scale of the viewer and the initialscale of the text.") + + (SETQ DISPLAYGFONT (FONTCREATE GFONT NIL NIL NIL 'DISPLAY)) + [SETQ CANONICALWIDTH + (FIXR (QUOTIENT (TIMES (STRINGWIDTH CANONICALTESTSTR + (if NIL + then (create FONTSPEC using (FONTPROP DISPLAYGFONT + 'SPEC) + FSFACE _ + (MAKEFONTFACE + 'MEDIUM + 'REGULAR + 'REGULAR)) + else + + (* ;; "Original code didn't use the face information when determining string width because, it said, that in some cases HELVETICA 10, the bold is smaller than the regular. ") + + DISPLAYGFONT)) + (fetch (TEXT INITIALSCALE) of GTEXT)) + (TIMES SCALE (DSPSCALE NIL VIEWER] + (* ; "calculate the local font.") + (SETQ LOCALFONT (SK.PICK.FONT CANONICALWIDTH CANONICALTESTSTR DEVICE DISPLAYGFONT] + [COND + ((WINDOWP VIEWER) + (WINDOWPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) + VIEWERFONTCACHE))) + ((STREAMP VIEWER) + (STREAMPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) + VIEWERFONTCACHE] + (RETURN LOCALFONT]) (SK.NEXTSIZEFONT - [LAMBDA (WHICHDIR NOWFONT) (* rrb "14-Jul-86 13:43") - - (* returns the next sized font either SMALLER or LARGER that on of size FONT.) + [LAMBDA (WHICHDIR NOWFONT) (* ; "Edited 6-Nov-2025 22:52 by rmk") + (* rrb "14-Jul-86 13:43") - (PROG [(NOWSIZE (FONTPROP NOWFONT 'HEIGHT)) - (DECREASEFONTLST (SK.DECREASING.FONT.LIST (CAR NOWFONT) - 'DISPLAY] - (RETURN (COND - [(EQ WHICHDIR 'LARGER) - (COND - ((IGEQ NOWSIZE (FONTPROP (CAR DECREASEFONTLST) - 'HEIGHT)) (* nothing larger) - NIL) - (T (for FONTTAIL on DECREASEFONTLST - when [AND (CDR FONTTAIL) - (IGEQ NOWSIZE (FONTPROP (CADR FONTTAIL) - 'HEIGHT] - do (RETURN (SK.FONTNAMELIST (CAR FONTTAIL] - (T (for FONT in DECREASEFONTLST when (LESSP (FONTPROP FONT 'HEIGHT) - NOWSIZE) - do (RETURN (SK.FONTNAMELIST FONT]) + (* ;; "Returns the next sized font either SMALLER or LARGER that on of size FONT. This returns FONTSPEC, not font descriptor") + + (* ;; "RMK 2025: The original code tested HEIGHT, but SK.DECREASING.FONT.LIST orders according to SIZE. Presumably correlated, but if they ever got out of whack, this would be wrong. So changed to SIZE.") + + (* ;; "Also, this returns a FONTSPEC, not the font descriptor.") + + (LET [(NOWSIZE (FONTPROP NOWFONT 'SIZE)) + (DECREASEFONTLST (SK.DECREASING.FONT.LIST (FONTPROP NOWFONT 'FAMILY) + 'DISPLAY] + (COND + [(EQ WHICHDIR 'LARGER) + (CL:WHEN (ILESSP NOWSIZE (FONTPROP (CAR DECREASEFONTLST) + 'SIZE)) (* ; "Otherwise, nothing larger") + [for FONTTAIL on DECREASEFONTLST when [AND (CDR FONTTAIL) + (IGEQ NOWSIZE (FONTPROP (CADR FONTTAIL) + 'SIZE] + do (RETURN (FONTPROP (CAR FONTTAIL) + 'SPEC])] + (T (for FONT in DECREASEFONTLST when (LESSP (FONTPROP FONT 'SIZE) + NOWSIZE) + do (RETURN (FONTPROP FONT 'SPEC]) (SK.DECREASING.FONT.LIST - [LAMBDA (FAMILY DEVICETYPE) (* ; - "Edited 12-Oct-92 12:39 by sybalsky:mv:envos") + [LAMBDA (FAMILY DEVICE) (* ; "Edited 6-Nov-2025 17:40 by rmk") + (* ; "Edited 4-Nov-2025 15:34 by rmk") + (* ; + "Edited 12-Oct-92 12:39 by sybalsky:mv:envos") - (* ;; "returns a list of fonts of family FAMILY which work on device DEVICETYPE") + (* ;; "This is used to find the best font for FAMILY on DEVICE that will allow a string to fit in a box, or to find the next larger/smaller font while editing. ") - [COND - ((NULL FAMILY) - (SETQ FAMILY 'MODERN] - - (* ;; "convert to families that exist on the known devices.") - -(* ;;; "NOTE: this is a very bad way to convert the family. It HARDCODES in the conversions for PRESS and INTERPRESS and does nothing for new device types. I have added the conversion for POSTSCRIPT that does things a little cleaner, but it should really look at a property of the device (fontconversions or some such animal.) --was 2/19/89") - - (LET ((CONVERSION)) - [COND - [(EQ DEVICETYPE 'PRESS) - (COND - ((EQ FAMILY 'MODERN) - (SETQ FAMILY 'HELVETICA)) - ((EQ FAMILY 'CLASSIC) - (SETQ FAMILY 'TIMESROMAN)) - ((EQ FAMILY 'TERMINAL) - (SETQ FAMILY 'GACHA] - [(EQ DEVICETYPE 'INTERPRESS) - (COND - ((EQ FAMILY 'HELVETICA) - (SETQ FAMILY 'MODERN)) - ((EQ FAMILY 'TIMESROMAN) - (SETQ FAMILY 'CLASSIC)) - ((EQ FAMILY 'GACHA) - (SETQ FAMILY 'TERMINAL] - ((EQ DEVICETYPE 'POSTSCRIPT) - (if (SETQ CONVERSION (ASSOC FAMILY POSTSCRIPT.FONT.ALIST)) - then + (* ;; "RMK 2025: The original code anticipated the coercions of the PRESS/INTERPRESS/POSTSCRIPT devices, building in e.g. that HELVETICA maps to MODERN on INTERPRESS and not even looking to see if there are any INTERPRESS HELVETICA fonts available or if e.g. INTERPRESS TERMINAL would coerce to MODERN for other sizes. ") - (* ;; - "convert the family here for postscript as well as the other well known devices.") + (* ;; "That is, if FAMILY is TERMINAL for INTERPRESS, this would only return fonts for sizes 6 8 10 12 even though coercions to MODERN might give smaller and bigger sizes.") - (SETQ FAMILY (CDR CONVERSION] - (for FONT in (SK.GUESS.FONTSAVAILABLE FAMILY DEVICETYPE) - collect (FONTCOPY FONT 'DEVICE DEVICETYPE]) + (* ;; "This code looks up all of the possible coercions of the given family to get all possible coerceable sizes, then relies on the related coercions in FONTCREATE to produce FAMILY fonts possibly constructed from data in the files for some other font. E.g. TERMINAL 14 will have the data from MODERN 14.") -(SK.GUESS.FONTSAVAILABLE - [LAMBDA (FAMILY HDCPYTYPE) (* rrb " 9-Oct-85 16:10") - - (* returns a list of all fonts of a FAMILY in decreasing order.) + (* ;; "This is also device independent: should work for HTML (whether or not HTML specifies any CHARCOERCIONS).") - (PROG (FILEFONTS CACHE DISPLAYFONTSIZES) - (SETQ HDCPYTYPE (COND - ((NULL HDCPYTYPE) - (PRINTERTYPE)) - ((NLISTP HDCPYTYPE) - HDCPYTYPE) - (T HDCPYTYPE))) (* cache the file fonts.) - [COND - [[SETQ FILEFONTS (ASSOC HDCPYTYPE (CDR (ASSOC FAMILY \FONTSONFILE] - - (* note if a cache has been calculated. Use it even if it is NIL) - - (* \FONTSONFILE seems to group things such as CLASSICTHIN under CLASSIC so make - sure to remove anything that has the wrong family.) - - (SETQ FILEFONTS (SUBSET (CDR FILEFONTS) - (FUNCTION (LAMBDA (X) - (EQ (CAR X) - FAMILY] - (T (RESETFORM (CURSOR WAITINGCURSOR) - (SETQ FILEFONTS (FONTSAVAILABLE FAMILY '* '(MEDIUM REGULAR REGULAR) NIL - HDCPYTYPE T)) - - (* Since there is no way to determine the real sizes for PRESS fonts with size - of 0 {meaning the widths scale}, guess that they are available in 10) - - [COND - [(EQ HDCPYTYPE 'PRESS) - - (* make sure to look for anything that has a display font.) - - (SETQ DISPLAYFONTSIZES (for FONT - in (FONTSAVAILABLE FAMILY '* - '(MEDIUM REGULAR REGULAR) NIL - 'DISPLAY) collect (CADR FONT))) - (SETQ FILEFONTS - (for FONT in FILEFONTS - join (COND - [(EQ (CADR FONT) - 0) - (for SIZE - in (UNION DISPLAYFONTSIZES - '(36 30 24 18 14 12 10 8 6)) - when (FONTCREATE (CAR FONT) - SIZE NIL NIL 'DISPLAY T) - collect (CONS (CAR FONT) - (CONS SIZE (CDDR FONT] - (T (CONS FONT] - ((EQ HDCPYTYPE 'DISPLAY) - - (* patch around the bug in FONTSAVAILABLE. - Remove after J release.) - - (SETQ FILEFONTS (SUBSET FILEFONTS (FUNCTION (LAMBDA (FONT) - (EQUAL (CADDR FONT) - '(MEDIUM REGULAR - REGULAR] - (* remove duplicates and sort) - [SETQ FILEFONTS (SORT (INTERSECTION FILEFONTS FILEFONTS) - (FUNCTION (LAMBDA (A B) - (GREATERP (CADR A) - (CADR B] - (COND - ((NULL (SETQ CACHE (ASSOC FAMILY \FONTSONFILE))) - (SETQ \FONTSONFILE (CONS (LIST FAMILY (CONS HDCPYTYPE FILEFONTS)) - \FONTSONFILE))) - (T (NCONC1 CACHE (CONS HDCPYTYPE FILEFONTS] - - (* reget the fonts in core since they may have changed since last time.) + (* ;; "Note that FONTSAVAILABLE caches its file lookups and FONTCREATE caches its fonts.") - (RETURN (SORT (UNION (FONTSAVAILABLE FAMILY '* NIL NIL HDCPYTYPE) - FILEFONTS) - (FUNCTION (LAMBDA (A B) - (COND - ((EQ (CADR A) - (CADR B)) - - (* in case both TIMESROMAN and TIMESROMAND for example make it in.) + (CL:UNLESS FAMILY + (SETQ FAMILY 'MODERN)) + (LET ((FAMSPEC (create FONTSPEC + FSFAMILY _ FAMILY + FSSIZE _ '* + FSDEVICE _ DEVICE))) + + (* ;; "Run through all sizes for all the fonts for FAMILY or any of its coercions on DEVICE. This gives us all the possible sizes for FAMILY, we ask FONTCREATE to create a FAMILY font for each of those sizes.") - (ALPHORDER (CADR A) - (CADR B))) - (T (GREATERP (CADR A) - (CADR B]) + (for FS SIZES in (for FS in [CONS FAMSPEC (COERCEFONTSPEC FAMSPEC (FONTDEVICEPROP + DEVICE + 'CHARCOERCIONS] + join (FONTSAVAILABLE FS NIL NIL NIL NIL T)) + do (pushnew SIZES (fetch (FONTSPEC FSSIZE) of FS)) + finally (RETURN (for S in [SORT SIZES (FUNCTION (LAMBDA (S1 S2) + (IGREATERP S1 S2] + collect (FONTCREATE FAMILY S NIL NIL DEVICE]) ) (RPAQ? \KNOWN.SKETCH.FONTSIZES ) @@ -5753,37 +5597,28 @@ Click outside the window to stop.") (DEFINEQ (SK.SET.FONT - [LAMBDA (W NEWFONT) (* rrb " 2-Oct-85 14:55") - - (* sets the entire default font. Used when a sketch stream is created. - or any of the defaults are changed. NEWFONT is a list of - (FAMILY SIZE FACE)) - - (COND - (NEWFONT (COND - ((FONTCREATE NEWFONT NIL NIL NIL NIL T) - - (* clear the cache of looked up fonts. This provides the user a way of clearing - the cache that shouldn't happen too much and is documented.) - - (AND (FASSOC (CAR NEWFONT) - \FONTSONFILE) - (SETQ \FONTSONFILE (for BUCKET in \FONTSONFILE - when (NEQ (CAR BUCKET) - (CAR NEWFONT)) collect BUCKET))) - (replace (SKETCHCONTEXT SKETCHFONT) of (WINDOWPROP W 'SKETCHCONTEXT) with NEWFONT - )) - (T (STATUSPRINT W (CAR NEWFONT) - " " - (CADR NEWFONT) - " " - (SELECTQ (CAR (CADDR NEWFONT)) - (BOLD 'BOLD) - "") - (SELECTQ (CADR (CADDR NEWFONT)) - (ITALIC 'ITALIC) - "") - " not found"]) + [LAMBDA (W NEWFONT) (* ; "Edited 4-Nov-2025 13:06 by rmk") + (* rrb " 2-Oct-85 14:55") + + (* ;; "Sets the default font. Used when a sketch stream is created. or any of the defaults are changed. NEWFONT is a fontspec") + + (CL:WHEN NEWFONT + (if (FONTCREATE NEWFONT NIL NIL NIL NIL T) + then + (* ;; "Tests to make sure the font exists, but stores the fontspec.") + + (replace (SKETCHCONTEXT SKETCHFONT) of (WINDOWPROP W 'SKETCHCONTEXT) with NEWFONT) + else (STATUSPRINT W (fetch (FONTSPEC FSFAMILY) of NEWFONT) + " " + (fetch (FONTSPEC FSSIZE) of NEWFONT) + " " + (SELECTQ (fetch (FONTFACE WEIGHT) of (fetch (FONTSPEC FSFACE) of NEWFONT)) + (BOLD 'BOLD) + "") + (SELECTQ (fetch (FONTFACE SLOPE) of (fetch (FONTSPEC FSFACE) of NEWFONT)) + (ITALIC 'ITALIC) + "") + " not found")))]) (SK.SET.TEXT.FONT [LAMBDA (W) (* rrb " 4-Oct-85 16:21") @@ -5838,90 +5673,51 @@ Click outside the window to stop.") of SKCONTEXT]) (SK.READFONTSIZE - [LAMBDA (TITLE FONTFAMILY SKW) (* rrb " 6-Nov-85 09:51") - - (* * gets a legal known font size from the user.) - - (* this should have MENUROWS _ 1 when title height bug in menu package gets - fixed.) - - (PROG ((FONTSIZES (SK.COLLECT.FONT.SIZES FONTFAMILY)) - NEWSIZE) - (COND - ((NULL FONTSIZES) - (GO MORE))) - (SETQ NEWSIZE (\CURSOR.IN.MIDDLE.MENU (create MENU - TITLE _ (COND - (TITLE) - (FONTFAMILY (CONCAT "new " - FONTFAMILY - " size?")) - (T "New font size?")) - ITEMS _ (CONS '(More 'MORE - "will look on font directories to find more sizes." - ) FONTSIZES) - CENTERFLG _ T))) - (COND - ((NEQ NEWSIZE 'MORE) - (RETURN NEWSIZE))) - MORE - (* do longer search of files) - (SETQ NEWSIZE (SK.COLLECT.FONT.SIZES FONTFAMILY T)) - (COND - ((NULL NEWSIZE) (* could not find any fonts of that - family) - (RETURN NIL)) - ((EQUAL NEWSIZE FONTSIZES) (* not new ones found) - (STATUSPRINT SKW " -No more font sizes found."))) - (RETURN (MENU (create MENU - TITLE _ (OR TITLE "New font size?") - ITEMS _ NEWSIZE - CENTERFLG _ T]) + [LAMBDA (TITLE FONTFAMILY SKW) (* ; "Edited 4-Nov-2025 20:12 by rmk") + (* rrb " 6-Nov-85 09:51") + + (* ;; "Gets a legal known font size from the user.") + (* ; "this should have MENUROWS _ 1 when title height bug in menu package gets fixed. RMK 2025: Is this still an issue?") + (CL:UNLESS TITLE + (SETQ TITLE (CONCAT "New " (OR FONTFAMILY "font") + " size?"))) + (LET ((FONTSIZES (SK.COLLECT.FONT.SIZES FONTFAMILY)) + (NEWSIZE 'MORE)) + (CL:WHEN FONTSIZES + (SETQ NEWSIZE (\CURSOR.IN.MIDDLE.MENU (create MENU + TITLE _ TITLE + ITEMS _ (NCONC1 FONTSIZES + '(More 'MORE + "Look on font-file directories to find more sizes" + )) + CENTERFLG _ T)))) + (CL:WHEN (EQ NEWSIZE 'MORE) (* ; "do longer search of files") + (SETQ FONTSIZES (LDIFFERENCE (SK.COLLECT.FONT.SIZES FONTFAMILY 'ONLY) + FONTSIZES)) + (SETQ NEWSIZE + (if FONTSIZES + then (MENU (create MENU + TITLE _ TITLE + ITEMS _ FONTSIZES + CENTERFLG _ T)) + else (STATUSPRINT SKW " +No more font sizes found.") + NIL))) + NEWSIZE]) (SK.COLLECT.FONT.SIZES - [LAMBDA (FAMILY FILESTOOFLG) (* rrb " 2-Oct-85 10:43") - - (* collects all of the sizes that are known. - If FAMILY is given, gets just those sizes.) + [LAMBDA (FAMILY FILESTOOFLG) (* ; "Edited 4-Nov-2025 20:02 by rmk") + (* rrb " 2-Oct-85 10:43") - (PROG (INCORESIZES FILESIZES) - [COND - [FAMILY (for TYPEBUCKET in (CDR (FASSOC FAMILY \FONTSONFILE)) - do (for FFONT in (CDR TYPEBUCKET) do (OR (MEMB (CADR FFONT) - INCORESIZES) - (SETQ INCORESIZES - (CONS (CADR FFONT) - INCORESIZES] - (T (* look at all fonts) - (for FAMILYBUCKET in \FONTSONFILE - do (for TYPEBUCKET in (CDR FAMILYBUCKET) - do (for FFONT in (CDR TYPEBUCKET) do (OR (MEMB (CADR FFONT) - INCORESIZES) - (SETQ INCORESIZES - (CONS (CADR FFONT) - INCORESIZES] - (RETURN (SORT (UNION INCORESIZES - (COND - [FILESTOOFLG - - (* wants those on files too, Flip the cursor to note wait.) - - (RESETFORM (CURSOR WAITINGCURSOR) - (bind SIZES for FONT - in (FONTSAVAILABLE (OR FAMILY '*) - '* NIL NIL 'DISPLAY T) - do (OR (MEMB (FONTPROP FONT 'SIZE) - SIZES) - (SETQ SIZES (CONS (FONTPROP FONT 'SIZE) - SIZES))) - finally (RETURN SIZES] - (T (bind SIZES for FONT in (FONTSAVAILABLE (OR FAMILY '*) - '* NIL NIL 'DISPLAY FILESTOOFLG) - do (OR (MEMB (FONTPROP FONT 'SIZE) - SIZES) - (SETQ SIZES (CONS (FONTPROP FONT 'SIZE) - SIZES))) finally (RETURN SIZES]) + (* ;; "Collects all of the sizes that are known. If FAMILY is given, gets just those sizes.") + + (* ;; "RMK: Original code seemed confused. The \FONTSONFILE variable (set originally only by SK.GUESS.FONTSAVAILBLE in the call from SK.DECREASING.FONT.LIST) maintained a cache just of the fonts that had already been looked up for particular families and particular devices. But then it called FONTSAVAILABLE only for the DISPLAY device.") + + (for FS SIZES in (FONTSAVAILABLE (OR FAMILY '*) + '* NIL NIL 'DISPLAY FILESTOOFLG) do (pushnew SIZES (fetch (FONTSPEC + FSSIZE) + of FS)) + finally (RETURN (SORT SIZES]) (SK.SET.TEXT.VERT.ALIGN [LAMBDA (SKW NEWALIGN) (* rrb " 6-Nov-85 09:52") @@ -6058,8 +5854,6 @@ No more font sizes found."))) (RPAQ? SK.DEFAULT.TEXT.ALIGNMENT '(CENTER BASELINE)) -(RPAQ? \FONTSONFILE NIL) - (ADDTOVAR SK.HORIZONTAL.STYLES LEFT RIGHT CENTER) (ADDTOVAR SK.VERTICAL.STYLES TOP CENTER BASELINE BOTTOM) @@ -9280,137 +9074,136 @@ No more font sizes found."))) (fetch (REGION TOP) of REGION]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (14510 24920 (INIT.SKETCH.ELEMENTS 14520 . 22083) (CREATE.SKETCH.ELEMENT.TYPE 22085 . -23607) (SKETCH.ELEMENT.TYPEP 23609 . 23997) (SKETCH.ELEMENT.NAMEP 23999 . 24262) ( -\CURSOR.IN.MIDDLE.MENU 24264 . 24918)) (24961 25638 (SKETCHINCOLORP 24971 . 25291) (READ.COLOR.CHANGE -25293 . 25636)) (26147 28926 (SK.CREATE.DEFAULT.FILLING 26157 . 26458) (SKFILLINGP 26460 . 27093) ( -SK.INSURE.FILLING 27095 . 28523) (SK.INSURE.COLOR 28525 . 28924)) (28927 34537 (SK.TRANSLATE.MODE -28937 . 29719) (SK.CHANGE.FILLING.MODE 29721 . 33304) (READ.FILLING.MODE 33306 . 34535)) (34538 65212 -(SKETCH.CREATE.CIRCLE 34548 . 35360) (CIRCLE.EXPANDFN 35362 . 38734) (CIRCLE.DRAWFN 38736 . 41737) ( -\CIRCLE.DRAWFN1 41739 . 44334) (CIRCLE.INPUTFN 44336 . 46185) (SK.UPDATE.CIRCLE.AFTER.CHANGE 46187 . -46546) (SK.READ.CIRCLE.POINT 46548 . 47019) (SK.SHOW.CIRCLE 47021 . 47667) (CIRCLE.INSIDEFN 47669 . -47934) (CIRCLE.REGIONFN 47936 . 49617) (CIRCLE.GLOBALREGIONFN 49619 . 51137) (CIRCLE.TRANSLATE 51139 - . 53000) (CIRCLE.READCHANGEFN 53002 . 57618) (CIRCLE.TRANSFORMFN 57620 . 59473) (CIRCLE.TRANSLATEPTS -59475 . 61089) (SK.CIRCLE.CREATE 61091 . 61934) (SET.CIRCLE.SCALE 61936 . 62702) (SK.BRUSH.READCHANGE -62704 . 65210)) (65213 65942 (SK.INSURE.BRUSH 65223 . 65617) (SK.INSURE.DASHING 65619 . 65940)) (67156 - 96650 (SKETCH.CREATE.ELLIPSE 67166 . 67765) (ELLIPSE.EXPANDFN 67767 . 71379) (ELLIPSE.DRAWFN 71381 . -75558) (ELLIPSE.INPUTFN 75560 . 78000) (SK.READ.ELLIPSE.MAJOR.PT 78002 . 78581) ( -SK.SHOW.ELLIPSE.MAJOR.RADIUS 78583 . 79338) (SK.READ.ELLIPSE.MINOR.PT 79340 . 80033) ( -SK.SHOW.ELLIPSE.MINOR.RADIUS 80035 . 80867) (ELLIPSE.INSIDEFN 80869 . 81139) (ELLIPSE.CREATE 81141 . -82516) (SK.UPDATE.ELLIPSE.AFTER.CHANGE 82518 . 82886) (ELLIPSE.REGIONFN 82888 . 85088) ( -ELLIPSE.GLOBALREGIONFN 85090 . 86903) (ELLIPSE.TRANSLATEFN 86905 . 89451) (ELLIPSE.TRANSFORMFN 89453 - . 90730) (ELLIPSE.TRANSLATEPTS 90732 . 92773) (MARK.SPOT 92775 . 94026) (DISTANCEBETWEEN 94028 . -94623) (SK.DISTANCE.TO 94625 . 95010) (SQUARE 95012 . 95054) (COMPUTE.ELLIPSE.ORIENTATION 95056 . -95775) (SK.COMPUTE.ELLIPSE.MINOR.RADIUS.PT 95777 . 96648)) (97763 138819 (SKETCH.CREATE.OPEN.CURVE -97773 . 98326) (OPENCURVE.INPUTFN 98328 . 99196) (SK.CURVE.CREATE 99198 . 100943) (MAXXEXTENT 100945 - . 101804) (MAXYEXTENT 101806 . 102666) (KNOT.SET.SCALE.FIELD 102668 . 103470) (OPENCURVE.DRAWFN -103472 . 104603) (OPENCURVE.EXPANDFN 104605 . 107920) (OPENCURVE.READCHANGEFN 107922 . 111124) ( -OPENCURVE.TRANSFORMFN 111126 . 113624) (OPENCURVE.TRANSLATEFN 113626 . 114048) ( -OPENCURVE.TRANSLATEPTSFN 114050 . 115431) (SKETCH.CREATE.CLOSED.CURVE 115433 . 115939) ( -CLOSEDCURVE.DRAWFN 115941 . 116725) (CLOSEDCURVE.EXPANDFN 116727 . 119840) (CLOSEDCURVE.REGIONFN -119842 . 120639) (CLOSEDCURVE.GLOBALREGIONFN 120641 . 122074) (READ.LIST.OF.POINTS 122076 . 124055) ( -CLOSEDCURVE.INPUTFN 124057 . 124702) (CLOSEDCURVE.READCHANGEFN 124704 . 127599) ( -CLOSEDCURVE.TRANSFORMFN 127601 . 129401) (CLOSEDCURVE.TRANSLATEPTSFN 129403 . 130748) (INVISIBLEPARTP -130750 . 131103) (SHOWSKETCHPOINT 131105 . 131410) (SHOWSKETCHXY 131412 . 131930) (KNOTS.REGIONFN -131932 . 132833) (OPENWIRE.GLOBALREGIONFN 132835 . 133699) (CURVE.REGIONFN 133701 . 134642) ( -OPENCURVE.GLOBALREGIONFN 134644 . 136051) (KNOTS.TRANSLATEFN 136053 . 137096) (REGION.CONTAINING.PTS -137098 . 138817)) (138820 161096 (CHANGE.ELTS.BRUSH.SIZE 138830 . 139440) (CHANGE.ELTS.BRUSH 139442 . -139959) (CHANGE.ELTS.BRUSH.SHAPE 139961 . 140362) (SK.CHANGE.BRUSH.SHAPE 140364 . 143876) ( -SK.CHANGE.BRUSH.COLOR 143878 . 148324) (SK.CHANGE.BRUSH.SIZE 148326 . 153284) (SK.CHANGE.ANGLE 153286 - . 156266) (SK.CHANGE.ARC.DIRECTION 156268 . 158647) (SK.SET.DEFAULT.BRUSH.SIZE 158649 . 159348) ( -READSIZECHANGE 159350 . 161094)) (161097 162716 (SK.CHANGE.ELEMENT.KNOTS 161107 . 162714)) (162717 -163364 (SK.INSURE.POINT.LIST 162727 . 163180) (SK.INSURE.POSITION 163182 . 163362)) (164732 197055 ( -SKETCH.CREATE.WIRE 164742 . 165232) (CLOSEDWIRE.EXPANDFN 165234 . 167922) (KNOTS.INSIDEFN 167924 . -168645) (OPEN.WIRE.DRAWFN 168647 . 169239) (WIRE.EXPANDFN 169241 . 172488) ( -SK.UPDATE.WIRE.ELT.AFTER.CHANGE 172490 . 173011) (OPENWIRE.READCHANGEFN 173013 . 175506) ( -OPENWIRE.TRANSFORMFN 175508 . 177631) (OPENWIRE.TRANSLATEFN 177633 . 178057) (OPENWIRE.TRANSLATEPTSFN -178059 . 179338) (WIRE.INPUTFN 179340 . 180971) (SK.READ.WIRE.POINTS 180973 . 181504) ( -SK.READ.POINTS.WITH.FEEDBACK 181506 . 184273) (OPENWIRE.FEEDBACKFN 184275 . 185029) ( -CLOSEDWIRE.FEEDBACKFN 185031 . 186387) (CLOSEDWIRE.REGIONFN 186389 . 187374) ( -CLOSEDWIRE.GLOBALREGIONFN 187376 . 188428) (SK.WIRE.CREATE 188430 . 190193) (WIRE.ADD.POINT.TO.END -190195 . 191111) (READ.ARROW.CHANGE 191113 . 196589) (CHANGE.ELTS.ARROWHEADS 196591 . 197053)) (197056 - 208062 (SKETCH.CREATE.CLOSED.WIRE 197066 . 197627) (CLOSED.WIRE.INPUTFN 197629 . 197984) ( -CLOSED.WIRE.DRAWFN 197986 . 200031) (CLOSEDWIRE.READCHANGEFN 200033 . 204938) (CLOSEDWIRE.TRANSFORMFN -204940 . 206734) (CLOSEDWIRE.TRANSLATEPTSFN 206736 . 208060)) (208063 260769 (SK.EXPAND.ARROWHEADS -208073 . 208423) (SK.COMPUTE.ARC.ARROWHEAD.POINTS 208425 . 209806) (ARC.ARROWHEAD.POINTS 209808 . -211031) (SET.ARC.ARROWHEAD.POINTS 211033 . 212014) (SET.OPENCURVE.ARROWHEAD.POINTS 212016 . 212917) ( -SK.COMPUTE.CURVE.ARROWHEAD.POINTS 212919 . 214189) (SET.WIRE.ARROWHEAD.POINTS 214191 . 214944) ( -SK.COMPUTE.WIRE.ARROWHEAD.POINTS 214946 . 216211) (SK.EXPAND.ARROWHEAD 216213 . 217396) (CHANGED.ARROW - 217398 . 220570) (SK.CHANGE.ARROWHEAD 220572 . 221025) (SK.CHANGE.ARROWHEAD1 221027 . 226282) ( -SK.CREATE.ARROWHEAD 226284 . 226804) (SK.ARROWHEAD.CREATE 226806 . 228380) (SK.ARROWHEAD.END.TEST -228382 . 229306) (READ.ARROWHEAD.END 229308 . 231333) (ARROW.HEAD.POSITIONS 231335 . 233175) ( -ARROWHEAD.POINTS.LIST 233177 . 237149) (CURVE.ARROWHEAD.POINTS 237151 . 238014) (LEFT.MOST.IS.BEGINP -238016 . 238897) (WIRE.ARROWHEAD.POINTS 238899 . 240425) (DRAWARROWHEADS 240427 . 242797) ( -\SK.DRAW.TRIANGLE.ARROWHEAD 242799 . 244459) (\SK.ENDPT.OF.ARROW 244461 . 246718) ( -\SK.ADJUST.FOR.ARROWHEADS 246720 . 249225) (SK.SET.ARROWHEAD.LENGTH 249227 . 250371) ( -SK.SET.ARROWHEAD.ANGLE 250373 . 251469) (SK.SET.ARROWHEAD.TYPE 251471 . 254760) (SK.SET.LINE.ARROWHEAD - 254762 . 257175) (SK.UPDATE.ARROWHEAD.FORMAT 257177 . 259287) (SK.SET.LINE.LENGTH.MODE 259289 . -260767)) (260770 262571 (SK.INSURE.ARROWHEADS 260780 . 261962) (SK.ARROWHEADP 261964 . 262569)) ( -265368 327694 (SKETCH.CREATE.TEXT 265378 . 265892) (TEXT.CHANGEFN 265894 . 266286) (TEXT.READCHANGEFN -266288 . 274359) (\SK.READ.FONT.SIZE1 274361 . 276257) (SK.TEXT.ELT.WITH.SAME.FIELDS 276259 . 277899) -(SK.READFONTFAMILY 277901 . 279447) (CLOSE.PROMPT.WINDOW 279449 . 279873) (TEXT.DRAWFN 279875 . 280596 -) (TEXT.DRAWFN1 280598 . 284100) (TEXT.INSIDEFN 284102 . 284491) (TEXT.EXPANDFN 284493 . 286618) ( -SK.TEXT.LINE.REGIONS 286620 . 288494) (TEXT.UPDATE.GLOBAL.REGIONS 288496 . 289728) (REL.MOVE.REGION -289730 . 290267) (LTEXT.LINE.REGIONS 290269 . 293687) (TEXT.INPUTFN 293689 . 294199) (READ.TEXT 294201 - . 294949) (TEXT.POSITION.AND.CREATE 294951 . 297262) (CREATE.TEXT.ELEMENT 297264 . 298082) ( -SK.UPDATE.TEXT.AFTER.CHANGE 298084 . 298486) (SK.TEXT.FROM.TEXTBOX 298488 . 302294) ( -TEXT.SET.GLOBAL.REGIONS 302296 . 303589) (TEXT.REGIONFN 303591 . 304361) (TEXT.GLOBALREGIONFN 304363 - . 305051) (TEXT.TRANSLATEFN 305053 . 306368) (TEXT.TRANSFORMFN 306370 . 307493) (TEXT.TRANSLATEPTSFN -307495 . 308012) (TEXT.UPDATEFN 308014 . 312670) (SK.CHANGE.TEXT 312672 . 325760) (TEXT.SET.SCALES -325762 . 326730) (BREAK.AT.CARRIAGE.RETURNS 326732 . 327692)) (327695 346219 (ADD.KNOWN.SKETCH.FONT -327705 . 328696) (SK.PICK.FONT 328698 . 334230) (SK.CHOOSE.TEXT.FONT 334232 . 338180) (SK.NEXTSIZEFONT - 338182 . 339449) (SK.DECREASING.FONT.LIST 339451 . 341324) (SK.GUESS.FONTSAVAILABLE 341326 . 346217)) - (346638 360781 (SK.SET.FONT 346648 . 348215) (SK.SET.TEXT.FONT 348217 . 349219) (SK.SET.TEXT.SIZE -349221 . 349908) (SK.SET.TEXT.HORIZ.ALIGN 349910 . 351484) (SK.READFONTSIZE 351486 . 353716) ( -SK.COLLECT.FONT.SIZES 353718 . 356636) (SK.SET.TEXT.VERT.ALIGN 356638 . 358680) (SK.SET.TEXT.LOOKS -358682 . 360139) (SK.SET.DEFAULT.TEXT.FACE 360141 . 360779)) (360782 361368 (CREATE.SKETCH.TERMTABLE -360792 . 361366)) (361369 363135 (SK.FONT.LIST 361379 . 361705) (SK.INSURE.FONT 361707 . 362229) ( -SK.INSURE.STYLE 362231 . 362749) (SK.INSURE.TEXT 362751 . 363133)) (363705 420998 ( -SKETCH.CREATE.TEXTBOX 363715 . 365357) (SK.COMPUTE.TEXTBOX.REGION.FOR.STRING 365359 . 367436) ( -SK.BREAK.INTO.LINES 367438 . 378624) (SK.BRUSH.SIZE 378626 . 379007) (SK.TEXTBOX.CREATE 379009 . -379806) (SK.TEXTBOX.CREATE1 379808 . 380872) (SK.UPDATE.TEXTBOX.AFTER.CHANGE 380874 . 381414) ( -SK.TEXTBOX.POSITION.IN.BOX 381416 . 383327) (TEXTBOX.CHANGEFN 383329 . 383803) (TEXTBOX.DRAWFN 383805 - . 385841) (SK.TEXTURE.AROUND.REGIONS 385843 . 391916) (ALL.EMPTY.REGIONS 391918 . 392408) ( -TEXTBOX.EXPANDFN 392410 . 399566) (TEXTBOX.INPUTFN 399568 . 401181) (TEXTBOX.INSIDEFN 401183 . 401596) - (TEXTBOX.REGIONFN 401598 . 402452) (TEXTBOX.GLOBALREGIONFN 402454 . 402782) ( -TEXTBOX.SET.GLOBAL.REGIONS 402784 . 404115) (TEXTBOX.TRANSLATEFN 404117 . 405958) ( -TEXTBOX.TRANSLATEPTSFN 405960 . 408743) (TEXTBOX.TRANSFORMFN 408745 . 410413) (TEXTBOX.UPDATEFN 410415 - . 412308) (TEXTBOX.READCHANGEFN 412310 . 417199) (SK.TEXTBOX.TEXT.POSITION 417201 . 417622) ( -SK.TEXTBOX.FROM.TEXT 417624 . 420229) (ADD.EOLS 420231 . 420996)) (421527 425028 ( -SK.SET.TEXTBOX.VERT.ALIGN 421537 . 423417) (SK.SET.TEXTBOX.HORIZ.ALIGN 423419 . 425026)) (425411 -469886 (SKETCH.CREATE.BOX 425421 . 425904) (SK.BOX.DRAWFN 425906 . 427065) (BOX.DRAWFN1 427067 . -429906) (KNOTS.OF.REGION 429908 . 431142) (SK.DRAWAREABOX 431144 . 437745) (SK.DRAWBOX 437747 . 438936 -) (SK.BOX.EXPANDFN 438938 . 442686) (SK.BOX.GETREGIONFN 442688 . 443874) (BOX.SET.SCALES 443876 . -445116) (SK.BOX.INPUTFN 445118 . 447051) (SK.BOX.CREATE 447053 . 447754) (SK.UPDATE.BOX.AFTER.CHANGE -447756 . 448267) (SK.BOX.INSIDEFN 448269 . 448659) (SK.BOX.REGIONFN 448661 . 449374) ( -SK.BOX.GLOBALREGIONFN 449376 . 450114) (SK.BOX.READCHANGEFN 450116 . 453837) (SK.CHANGE.FILLING 453839 - . 457787) (SK.CHANGE.FILLING.COLOR 457789 . 461445) (SK.BOX.TRANSLATEFN 461447 . 462626) ( -SK.BOX.TRANSFORMFN 462628 . 463573) (SK.BOX.TRANSLATEPTSFN 463575 . 465943) (UNSCALE.REGION.TO.GRID -465945 . 466870) (INCREASEREGION 466872 . 467463) (INSUREREGIONSIZE 467465 . 468636) (EXPANDREGION -468638 . 469518) (REGION.FROM.COORDINATES 469520 . 469884)) (470422 496777 (SKETCH.CREATE.ARC 470432 - . 471241) (ARC.DRAWFN 471243 . 472970) (ARC.EXPANDFN 472972 . 475305) (ARC.INPUTFN 475307 . 479525) ( -SK.INVERT.CIRCLE 479527 . 480387) (SK.READ.ARC.ANGLE.POINT 480389 . 480896) (SK.SHOW.ARC 480898 . -481508) (ARC.CREATE 481510 . 482865) (SK.UPDATE.ARC.AFTER.CHANGE 482867 . 483207) (ARC.MOVEFN 483209 - . 484792) (ARC.TRANSLATEPTS 484794 . 486679) (ARC.INSIDEFN 486681 . 486931) (ARC.REGIONFN 486933 . -488069) (ARC.GLOBALREGIONFN 488071 . 489793) (ARC.TRANSLATE 489795 . 490777) (ARC.TRANSFORMFN 490779 - . 493729) (ARC.READCHANGEFN 493731 . 496775)) (496778 505857 (SK.COMPUTE.ARC.ANGLE.PT 496788 . 497714 -) (SK.COMPUTE.ARC.ANGLE.PT.FROM.ANGLE 497716 . 498709) (SK.COMPUTE.ARC.PTS 498711 . 502283) ( -SK.SET.ARC.DIRECTION 502285 . 502859) (SK.SET.ARC.DIRECTION.CW 502861 . 503035) ( -SK.SET.ARC.DIRECTION.CCW 503037 . 503310) (SK.COMPUTE.SLOPE.OF.LINE 503312 . 503804) ( -SK.CREATE.ARC.USING 503806 . 505043) (SET.ARC.SCALES 505045 . 505855)) (505858 506303 ( -SK.INSURE.DIRECTION 505868 . 506301)) (507674 553533 (GETSKETCHELEMENTPROP 507684 . 508992) ( -\SK.GET.ARC.ANGLEPT 508994 . 509555) (\GETSKETCHELEMENTPROP1 509557 . 509811) (\SK.GET.BRUSH 509813 . -510737) (\SK.GET.FILLING 510739 . 511837) (\SK.GET.ARROWHEADS 511839 . 512618) (\SK.GET.FONT 512620 . -513100) (\SK.GET.JUSTIFICATION 513102 . 513626) (\SK.GET.DIRECTION 513628 . 514105) (\SK.GET.DASHING -514107 . 515126) (PUTSKETCHELEMENTPROP 515128 . 517397) (\SK.PUT.FILLING 517399 . 518669) ( -ADDSKETCHELEMENTPROP 518671 . 519476) (REMOVESKETCHELEMENTPROP 519478 . 520267) (\SK.PUT.FONT 520269 - . 521083) (\SK.PUT.JUSTIFICATION 521085 . 522096) (\SK.PUT.DIRECTION 522098 . 522705) ( -\SK.PUT.DASHING 522707 . 524042) (\SK.PUT.BRUSH 524044 . 525963) (\SK.PUT.ARROWHEADS 525965 . 527931) -(SK.COPY.ELEMENT.PROPERTY.LIST 527933 . 528509) (SKETCH.UPDATE 528511 . 529241) (SKETCH.UPDATE1 529243 - . 530531) (\SKELT.GET.SCALE 530533 . 531521) (\SKELT.PUT.SCALE 531523 . 532830) (\SKELT.PUT.DATA -532832 . 534629) (SK.REPLACE.TEXT.IN.ELEMENT 534631 . 535584) (\SKELT.GET.DATA 535586 . 536653) ( -\SK.GET.1STCONTROLPT 536655 . 538167) (\SK.PUT.1STCONTROLPT 538169 . 543642) (\SK.GET.2NDCONTROLPT -543644 . 544559) (\SK.PUT.2NDCONTROLPT 544561 . 548749) (\SK.GET.3RDCONTROLPT 548751 . 549629) ( -\SK.PUT.3RDCONTROLPT 549631 . 553531)) (553534 554115 (LOWERLEFTCORNER 553544 . 553790) ( -UPPERRIGHTCORNER 553792 . 554113))))) + (FILEMAP (NIL (14485 24895 (INIT.SKETCH.ELEMENTS 14495 . 22058) (CREATE.SKETCH.ELEMENT.TYPE 22060 . +23582) (SKETCH.ELEMENT.TYPEP 23584 . 23972) (SKETCH.ELEMENT.NAMEP 23974 . 24237) ( +\CURSOR.IN.MIDDLE.MENU 24239 . 24893)) (24936 25613 (SKETCHINCOLORP 24946 . 25266) (READ.COLOR.CHANGE +25268 . 25611)) (26122 28901 (SK.CREATE.DEFAULT.FILLING 26132 . 26433) (SKFILLINGP 26435 . 27068) ( +SK.INSURE.FILLING 27070 . 28498) (SK.INSURE.COLOR 28500 . 28899)) (28902 34512 (SK.TRANSLATE.MODE +28912 . 29694) (SK.CHANGE.FILLING.MODE 29696 . 33279) (READ.FILLING.MODE 33281 . 34510)) (34513 65187 +(SKETCH.CREATE.CIRCLE 34523 . 35335) (CIRCLE.EXPANDFN 35337 . 38709) (CIRCLE.DRAWFN 38711 . 41712) ( +\CIRCLE.DRAWFN1 41714 . 44309) (CIRCLE.INPUTFN 44311 . 46160) (SK.UPDATE.CIRCLE.AFTER.CHANGE 46162 . +46521) (SK.READ.CIRCLE.POINT 46523 . 46994) (SK.SHOW.CIRCLE 46996 . 47642) (CIRCLE.INSIDEFN 47644 . +47909) (CIRCLE.REGIONFN 47911 . 49592) (CIRCLE.GLOBALREGIONFN 49594 . 51112) (CIRCLE.TRANSLATE 51114 + . 52975) (CIRCLE.READCHANGEFN 52977 . 57593) (CIRCLE.TRANSFORMFN 57595 . 59448) (CIRCLE.TRANSLATEPTS +59450 . 61064) (SK.CIRCLE.CREATE 61066 . 61909) (SET.CIRCLE.SCALE 61911 . 62677) (SK.BRUSH.READCHANGE +62679 . 65185)) (65188 65917 (SK.INSURE.BRUSH 65198 . 65592) (SK.INSURE.DASHING 65594 . 65915)) (67131 + 96625 (SKETCH.CREATE.ELLIPSE 67141 . 67740) (ELLIPSE.EXPANDFN 67742 . 71354) (ELLIPSE.DRAWFN 71356 . +75533) (ELLIPSE.INPUTFN 75535 . 77975) (SK.READ.ELLIPSE.MAJOR.PT 77977 . 78556) ( +SK.SHOW.ELLIPSE.MAJOR.RADIUS 78558 . 79313) (SK.READ.ELLIPSE.MINOR.PT 79315 . 80008) ( +SK.SHOW.ELLIPSE.MINOR.RADIUS 80010 . 80842) (ELLIPSE.INSIDEFN 80844 . 81114) (ELLIPSE.CREATE 81116 . +82491) (SK.UPDATE.ELLIPSE.AFTER.CHANGE 82493 . 82861) (ELLIPSE.REGIONFN 82863 . 85063) ( +ELLIPSE.GLOBALREGIONFN 85065 . 86878) (ELLIPSE.TRANSLATEFN 86880 . 89426) (ELLIPSE.TRANSFORMFN 89428 + . 90705) (ELLIPSE.TRANSLATEPTS 90707 . 92748) (MARK.SPOT 92750 . 94001) (DISTANCEBETWEEN 94003 . +94598) (SK.DISTANCE.TO 94600 . 94985) (SQUARE 94987 . 95029) (COMPUTE.ELLIPSE.ORIENTATION 95031 . +95750) (SK.COMPUTE.ELLIPSE.MINOR.RADIUS.PT 95752 . 96623)) (97738 138794 (SKETCH.CREATE.OPEN.CURVE +97748 . 98301) (OPENCURVE.INPUTFN 98303 . 99171) (SK.CURVE.CREATE 99173 . 100918) (MAXXEXTENT 100920 + . 101779) (MAXYEXTENT 101781 . 102641) (KNOT.SET.SCALE.FIELD 102643 . 103445) (OPENCURVE.DRAWFN +103447 . 104578) (OPENCURVE.EXPANDFN 104580 . 107895) (OPENCURVE.READCHANGEFN 107897 . 111099) ( +OPENCURVE.TRANSFORMFN 111101 . 113599) (OPENCURVE.TRANSLATEFN 113601 . 114023) ( +OPENCURVE.TRANSLATEPTSFN 114025 . 115406) (SKETCH.CREATE.CLOSED.CURVE 115408 . 115914) ( +CLOSEDCURVE.DRAWFN 115916 . 116700) (CLOSEDCURVE.EXPANDFN 116702 . 119815) (CLOSEDCURVE.REGIONFN +119817 . 120614) (CLOSEDCURVE.GLOBALREGIONFN 120616 . 122049) (READ.LIST.OF.POINTS 122051 . 124030) ( +CLOSEDCURVE.INPUTFN 124032 . 124677) (CLOSEDCURVE.READCHANGEFN 124679 . 127574) ( +CLOSEDCURVE.TRANSFORMFN 127576 . 129376) (CLOSEDCURVE.TRANSLATEPTSFN 129378 . 130723) (INVISIBLEPARTP +130725 . 131078) (SHOWSKETCHPOINT 131080 . 131385) (SHOWSKETCHXY 131387 . 131905) (KNOTS.REGIONFN +131907 . 132808) (OPENWIRE.GLOBALREGIONFN 132810 . 133674) (CURVE.REGIONFN 133676 . 134617) ( +OPENCURVE.GLOBALREGIONFN 134619 . 136026) (KNOTS.TRANSLATEFN 136028 . 137071) (REGION.CONTAINING.PTS +137073 . 138792)) (138795 161071 (CHANGE.ELTS.BRUSH.SIZE 138805 . 139415) (CHANGE.ELTS.BRUSH 139417 . +139934) (CHANGE.ELTS.BRUSH.SHAPE 139936 . 140337) (SK.CHANGE.BRUSH.SHAPE 140339 . 143851) ( +SK.CHANGE.BRUSH.COLOR 143853 . 148299) (SK.CHANGE.BRUSH.SIZE 148301 . 153259) (SK.CHANGE.ANGLE 153261 + . 156241) (SK.CHANGE.ARC.DIRECTION 156243 . 158622) (SK.SET.DEFAULT.BRUSH.SIZE 158624 . 159323) ( +READSIZECHANGE 159325 . 161069)) (161072 162691 (SK.CHANGE.ELEMENT.KNOTS 161082 . 162689)) (162692 +163339 (SK.INSURE.POINT.LIST 162702 . 163155) (SK.INSURE.POSITION 163157 . 163337)) (164707 197030 ( +SKETCH.CREATE.WIRE 164717 . 165207) (CLOSEDWIRE.EXPANDFN 165209 . 167897) (KNOTS.INSIDEFN 167899 . +168620) (OPEN.WIRE.DRAWFN 168622 . 169214) (WIRE.EXPANDFN 169216 . 172463) ( +SK.UPDATE.WIRE.ELT.AFTER.CHANGE 172465 . 172986) (OPENWIRE.READCHANGEFN 172988 . 175481) ( +OPENWIRE.TRANSFORMFN 175483 . 177606) (OPENWIRE.TRANSLATEFN 177608 . 178032) (OPENWIRE.TRANSLATEPTSFN +178034 . 179313) (WIRE.INPUTFN 179315 . 180946) (SK.READ.WIRE.POINTS 180948 . 181479) ( +SK.READ.POINTS.WITH.FEEDBACK 181481 . 184248) (OPENWIRE.FEEDBACKFN 184250 . 185004) ( +CLOSEDWIRE.FEEDBACKFN 185006 . 186362) (CLOSEDWIRE.REGIONFN 186364 . 187349) ( +CLOSEDWIRE.GLOBALREGIONFN 187351 . 188403) (SK.WIRE.CREATE 188405 . 190168) (WIRE.ADD.POINT.TO.END +190170 . 191086) (READ.ARROW.CHANGE 191088 . 196564) (CHANGE.ELTS.ARROWHEADS 196566 . 197028)) (197031 + 208037 (SKETCH.CREATE.CLOSED.WIRE 197041 . 197602) (CLOSED.WIRE.INPUTFN 197604 . 197959) ( +CLOSED.WIRE.DRAWFN 197961 . 200006) (CLOSEDWIRE.READCHANGEFN 200008 . 204913) (CLOSEDWIRE.TRANSFORMFN +204915 . 206709) (CLOSEDWIRE.TRANSLATEPTSFN 206711 . 208035)) (208038 260744 (SK.EXPAND.ARROWHEADS +208048 . 208398) (SK.COMPUTE.ARC.ARROWHEAD.POINTS 208400 . 209781) (ARC.ARROWHEAD.POINTS 209783 . +211006) (SET.ARC.ARROWHEAD.POINTS 211008 . 211989) (SET.OPENCURVE.ARROWHEAD.POINTS 211991 . 212892) ( +SK.COMPUTE.CURVE.ARROWHEAD.POINTS 212894 . 214164) (SET.WIRE.ARROWHEAD.POINTS 214166 . 214919) ( +SK.COMPUTE.WIRE.ARROWHEAD.POINTS 214921 . 216186) (SK.EXPAND.ARROWHEAD 216188 . 217371) (CHANGED.ARROW + 217373 . 220545) (SK.CHANGE.ARROWHEAD 220547 . 221000) (SK.CHANGE.ARROWHEAD1 221002 . 226257) ( +SK.CREATE.ARROWHEAD 226259 . 226779) (SK.ARROWHEAD.CREATE 226781 . 228355) (SK.ARROWHEAD.END.TEST +228357 . 229281) (READ.ARROWHEAD.END 229283 . 231308) (ARROW.HEAD.POSITIONS 231310 . 233150) ( +ARROWHEAD.POINTS.LIST 233152 . 237124) (CURVE.ARROWHEAD.POINTS 237126 . 237989) (LEFT.MOST.IS.BEGINP +237991 . 238872) (WIRE.ARROWHEAD.POINTS 238874 . 240400) (DRAWARROWHEADS 240402 . 242772) ( +\SK.DRAW.TRIANGLE.ARROWHEAD 242774 . 244434) (\SK.ENDPT.OF.ARROW 244436 . 246693) ( +\SK.ADJUST.FOR.ARROWHEADS 246695 . 249200) (SK.SET.ARROWHEAD.LENGTH 249202 . 250346) ( +SK.SET.ARROWHEAD.ANGLE 250348 . 251444) (SK.SET.ARROWHEAD.TYPE 251446 . 254735) (SK.SET.LINE.ARROWHEAD + 254737 . 257150) (SK.UPDATE.ARROWHEAD.FORMAT 257152 . 259262) (SK.SET.LINE.LENGTH.MODE 259264 . +260742)) (260745 262546 (SK.INSURE.ARROWHEADS 260755 . 261937) (SK.ARROWHEADP 261939 . 262544)) ( +265343 327243 (SKETCH.CREATE.TEXT 265353 . 265867) (TEXT.CHANGEFN 265869 . 266261) (TEXT.READCHANGEFN +266263 . 274334) (\SK.READ.FONT.SIZE1 274336 . 276502) (SK.TEXT.ELT.WITH.SAME.FIELDS 276504 . 278144) +(SK.READFONTFAMILY 278146 . 280616) (CLOSE.PROMPT.WINDOW 280618 . 281042) (TEXT.DRAWFN 281044 . 281765 +) (TEXT.DRAWFN1 281767 . 285269) (TEXT.INSIDEFN 285271 . 285660) (TEXT.EXPANDFN 285662 . 287787) ( +SK.TEXT.LINE.REGIONS 287789 . 289663) (TEXT.UPDATE.GLOBAL.REGIONS 289665 . 290897) (REL.MOVE.REGION +290899 . 291436) (LTEXT.LINE.REGIONS 291438 . 294856) (TEXT.INPUTFN 294858 . 295368) (READ.TEXT 295370 + . 296118) (TEXT.POSITION.AND.CREATE 296120 . 298431) (CREATE.TEXT.ELEMENT 298433 . 299251) ( +SK.UPDATE.TEXT.AFTER.CHANGE 299253 . 299655) (SK.TEXT.FROM.TEXTBOX 299657 . 303463) ( +TEXT.SET.GLOBAL.REGIONS 303465 . 304758) (TEXT.REGIONFN 304760 . 305530) (TEXT.GLOBALREGIONFN 305532 + . 306220) (TEXT.TRANSLATEFN 306222 . 307537) (TEXT.TRANSFORMFN 307539 . 308662) (TEXT.TRANSLATEPTSFN +308664 . 309181) (TEXT.UPDATEFN 309183 . 313839) (SK.CHANGE.TEXT 313841 . 324163) (SK.CHANGE.FONT +324165 . 325309) (TEXT.SET.SCALES 325311 . 326279) (BREAK.AT.CARRIAGE.RETURNS 326281 . 327241)) ( +327244 340229 (SK.PICK.FONT 327254 . 331526) (SK.CHOOSE.TEXT.FONT 331528 . 335799) (SK.NEXTSIZEFONT +335801 . 337433) (SK.DECREASING.FONT.LIST 337435 . 340227)) (340648 352322 (SK.SET.FONT 340658 . +341925) (SK.SET.TEXT.FONT 341927 . 342929) (SK.SET.TEXT.SIZE 342931 . 343618) (SK.SET.TEXT.HORIZ.ALIGN + 343620 . 345194) (SK.READFONTSIZE 345196 . 347094) (SK.COLLECT.FONT.SIZES 347096 . 348177) ( +SK.SET.TEXT.VERT.ALIGN 348179 . 350221) (SK.SET.TEXT.LOOKS 350223 . 351680) (SK.SET.DEFAULT.TEXT.FACE +351682 . 352320)) (352323 352909 (CREATE.SKETCH.TERMTABLE 352333 . 352907)) (352910 354676 ( +SK.FONT.LIST 352920 . 353246) (SK.INSURE.FONT 353248 . 353770) (SK.INSURE.STYLE 353772 . 354290) ( +SK.INSURE.TEXT 354292 . 354674)) (355216 412509 (SKETCH.CREATE.TEXTBOX 355226 . 356868) ( +SK.COMPUTE.TEXTBOX.REGION.FOR.STRING 356870 . 358947) (SK.BREAK.INTO.LINES 358949 . 370135) ( +SK.BRUSH.SIZE 370137 . 370518) (SK.TEXTBOX.CREATE 370520 . 371317) (SK.TEXTBOX.CREATE1 371319 . 372383 +) (SK.UPDATE.TEXTBOX.AFTER.CHANGE 372385 . 372925) (SK.TEXTBOX.POSITION.IN.BOX 372927 . 374838) ( +TEXTBOX.CHANGEFN 374840 . 375314) (TEXTBOX.DRAWFN 375316 . 377352) (SK.TEXTURE.AROUND.REGIONS 377354 + . 383427) (ALL.EMPTY.REGIONS 383429 . 383919) (TEXTBOX.EXPANDFN 383921 . 391077) (TEXTBOX.INPUTFN +391079 . 392692) (TEXTBOX.INSIDEFN 392694 . 393107) (TEXTBOX.REGIONFN 393109 . 393963) ( +TEXTBOX.GLOBALREGIONFN 393965 . 394293) (TEXTBOX.SET.GLOBAL.REGIONS 394295 . 395626) ( +TEXTBOX.TRANSLATEFN 395628 . 397469) (TEXTBOX.TRANSLATEPTSFN 397471 . 400254) (TEXTBOX.TRANSFORMFN +400256 . 401924) (TEXTBOX.UPDATEFN 401926 . 403819) (TEXTBOX.READCHANGEFN 403821 . 408710) ( +SK.TEXTBOX.TEXT.POSITION 408712 . 409133) (SK.TEXTBOX.FROM.TEXT 409135 . 411740) (ADD.EOLS 411742 . +412507)) (413038 416539 (SK.SET.TEXTBOX.VERT.ALIGN 413048 . 414928) (SK.SET.TEXTBOX.HORIZ.ALIGN 414930 + . 416537)) (416922 461397 (SKETCH.CREATE.BOX 416932 . 417415) (SK.BOX.DRAWFN 417417 . 418576) ( +BOX.DRAWFN1 418578 . 421417) (KNOTS.OF.REGION 421419 . 422653) (SK.DRAWAREABOX 422655 . 429256) ( +SK.DRAWBOX 429258 . 430447) (SK.BOX.EXPANDFN 430449 . 434197) (SK.BOX.GETREGIONFN 434199 . 435385) ( +BOX.SET.SCALES 435387 . 436627) (SK.BOX.INPUTFN 436629 . 438562) (SK.BOX.CREATE 438564 . 439265) ( +SK.UPDATE.BOX.AFTER.CHANGE 439267 . 439778) (SK.BOX.INSIDEFN 439780 . 440170) (SK.BOX.REGIONFN 440172 + . 440885) (SK.BOX.GLOBALREGIONFN 440887 . 441625) (SK.BOX.READCHANGEFN 441627 . 445348) ( +SK.CHANGE.FILLING 445350 . 449298) (SK.CHANGE.FILLING.COLOR 449300 . 452956) (SK.BOX.TRANSLATEFN +452958 . 454137) (SK.BOX.TRANSFORMFN 454139 . 455084) (SK.BOX.TRANSLATEPTSFN 455086 . 457454) ( +UNSCALE.REGION.TO.GRID 457456 . 458381) (INCREASEREGION 458383 . 458974) (INSUREREGIONSIZE 458976 . +460147) (EXPANDREGION 460149 . 461029) (REGION.FROM.COORDINATES 461031 . 461395)) (461933 488288 ( +SKETCH.CREATE.ARC 461943 . 462752) (ARC.DRAWFN 462754 . 464481) (ARC.EXPANDFN 464483 . 466816) ( +ARC.INPUTFN 466818 . 471036) (SK.INVERT.CIRCLE 471038 . 471898) (SK.READ.ARC.ANGLE.POINT 471900 . +472407) (SK.SHOW.ARC 472409 . 473019) (ARC.CREATE 473021 . 474376) (SK.UPDATE.ARC.AFTER.CHANGE 474378 + . 474718) (ARC.MOVEFN 474720 . 476303) (ARC.TRANSLATEPTS 476305 . 478190) (ARC.INSIDEFN 478192 . +478442) (ARC.REGIONFN 478444 . 479580) (ARC.GLOBALREGIONFN 479582 . 481304) (ARC.TRANSLATE 481306 . +482288) (ARC.TRANSFORMFN 482290 . 485240) (ARC.READCHANGEFN 485242 . 488286)) (488289 497368 ( +SK.COMPUTE.ARC.ANGLE.PT 488299 . 489225) (SK.COMPUTE.ARC.ANGLE.PT.FROM.ANGLE 489227 . 490220) ( +SK.COMPUTE.ARC.PTS 490222 . 493794) (SK.SET.ARC.DIRECTION 493796 . 494370) (SK.SET.ARC.DIRECTION.CW +494372 . 494546) (SK.SET.ARC.DIRECTION.CCW 494548 . 494821) (SK.COMPUTE.SLOPE.OF.LINE 494823 . 495315) + (SK.CREATE.ARC.USING 495317 . 496554) (SET.ARC.SCALES 496556 . 497366)) (497369 497814 ( +SK.INSURE.DIRECTION 497379 . 497812)) (499185 545044 (GETSKETCHELEMENTPROP 499195 . 500503) ( +\SK.GET.ARC.ANGLEPT 500505 . 501066) (\GETSKETCHELEMENTPROP1 501068 . 501322) (\SK.GET.BRUSH 501324 . +502248) (\SK.GET.FILLING 502250 . 503348) (\SK.GET.ARROWHEADS 503350 . 504129) (\SK.GET.FONT 504131 . +504611) (\SK.GET.JUSTIFICATION 504613 . 505137) (\SK.GET.DIRECTION 505139 . 505616) (\SK.GET.DASHING +505618 . 506637) (PUTSKETCHELEMENTPROP 506639 . 508908) (\SK.PUT.FILLING 508910 . 510180) ( +ADDSKETCHELEMENTPROP 510182 . 510987) (REMOVESKETCHELEMENTPROP 510989 . 511778) (\SK.PUT.FONT 511780 + . 512594) (\SK.PUT.JUSTIFICATION 512596 . 513607) (\SK.PUT.DIRECTION 513609 . 514216) ( +\SK.PUT.DASHING 514218 . 515553) (\SK.PUT.BRUSH 515555 . 517474) (\SK.PUT.ARROWHEADS 517476 . 519442) +(SK.COPY.ELEMENT.PROPERTY.LIST 519444 . 520020) (SKETCH.UPDATE 520022 . 520752) (SKETCH.UPDATE1 520754 + . 522042) (\SKELT.GET.SCALE 522044 . 523032) (\SKELT.PUT.SCALE 523034 . 524341) (\SKELT.PUT.DATA +524343 . 526140) (SK.REPLACE.TEXT.IN.ELEMENT 526142 . 527095) (\SKELT.GET.DATA 527097 . 528164) ( +\SK.GET.1STCONTROLPT 528166 . 529678) (\SK.PUT.1STCONTROLPT 529680 . 535153) (\SK.GET.2NDCONTROLPT +535155 . 536070) (\SK.PUT.2NDCONTROLPT 536072 . 540260) (\SK.GET.3RDCONTROLPT 540262 . 541140) ( +\SK.PUT.3RDCONTROLPT 541142 . 545042)) (545045 545626 (LOWERLEFTCORNER 545055 . 545301) ( +UPPERRIGHTCORNER 545303 . 545624))))) STOP diff --git a/library/sketch/SKETCH-ELEMENTS.LCOM b/library/sketch/SKETCH-ELEMENTS.LCOM index 14b7a802f..5b9b53036 100644 Binary files a/library/sketch/SKETCH-ELEMENTS.LCOM and b/library/sketch/SKETCH-ELEMENTS.LCOM differ diff --git a/library/sketch/SKETCH.LCOM b/library/sketch/SKETCH.LCOM index 841eab4c0..03cc5b552 100644 Binary files a/library/sketch/SKETCH.LCOM and b/library/sketch/SKETCH.LCOM differ diff --git a/library/tedit/TEDIT-COMMAND b/library/tedit/TEDIT-COMMAND index 3211d03f1..96aa3adf2 100644 --- a/library/tedit/TEDIT-COMMAND +++ b/library/tedit/TEDIT-COMMAND @@ -1,14 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "17-Jul-2025 00:24:49"  -{DSK}kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-COMMAND.;165 19015 +(FILECREATED " 8-Nov-2025 10:03:19" {WMEDLEY}TEDIT>TEDIT-COMMAND.;166 19030 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.COMMAND.RESET.SETUP) + :CHANGES-TO (FNS \TEDIT.COMMAND.FUNCTION?) - :PREVIOUS-DATE "23-Mar-2025 15:27:20" -{DSK}kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-COMMAND.;163) + :PREVIOUS-DATE "17-Jul-2025 00:24:49" {WMEDLEY}TEDIT>TEDIT-COMMAND.;165) (PRETTYCOMPRINT TEDIT-COMMANDCOMS) @@ -137,7 +135,8 @@ (FSETTOBJ TEXTOBJ EDITOPACTIVE NIL)))]) (\TEDIT.COMMAND.FUNCTION? - [LAMBDA (TSTREAM CHARCODE) (* ; "Edited 23-Mar-2025 15:27 by rmk") + [LAMBDA (TSTREAM CHARCODE) (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 23-Mar-2025 15:27 by rmk") (DECLARE (SPECVARS TSTREAM CHARCODE)) (* ;; "If CHARCODE is a function in TSTREAM's read table, execute the function.") @@ -145,7 +144,7 @@ (LET ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) FN) (DECLARE (SPECVARS TEXTOBJ)) - (CL:WHEN [AND (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN [AND (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of (FGETTOBJ TEXTOBJ TXTRTBL)) CHARCODE)) (SETQ FN (CAR (fetch MACROFN of (GETHASH CHARCODE (fetch READMACRODEFS @@ -303,7 +302,7 @@ (GLOBALVARS || TEDIT.INTERRUPTS) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2709 10263 (\TEDIT.COMMAND.LOOP 2719 . 9060) (\TEDIT.COMMAND.FUNCTION? 9062 . 10261)) ( -10264 18725 (\TEDIT.INTERRUPT.SETUP 10274 . 11921) (\TEDIT.MARKACTIVE 11923 . 12252) ( -\TEDIT.MARKINACTIVE 12254 . 12470) (\TEDIT.COMMAND.RESET.SETUP 12472 . 18723))))) + (FILEMAP (NIL (2625 10278 (\TEDIT.COMMAND.LOOP 2635 . 8976) (\TEDIT.COMMAND.FUNCTION? 8978 . 10276)) ( +10279 18740 (\TEDIT.INTERRUPT.SETUP 10289 . 11936) (\TEDIT.MARKACTIVE 11938 . 12267) ( +\TEDIT.MARKINACTIVE 12269 . 12485) (\TEDIT.COMMAND.RESET.SETUP 12487 . 18738))))) STOP diff --git a/library/tedit/TEDIT-COMMAND.LCOM b/library/tedit/TEDIT-COMMAND.LCOM index 583d13aac..cf5bdabb6 100644 Binary files a/library/tedit/TEDIT-COMMAND.LCOM and b/library/tedit/TEDIT-COMMAND.LCOM differ diff --git a/library/tedit/TEDIT-FNKEYS b/library/tedit/TEDIT-FNKEYS index d9da38e1c..09529635b 100644 --- a/library/tedit/TEDIT-FNKEYS +++ b/library/tedit/TEDIT-FNKEYS @@ -1,12 +1,15 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 7-Aug-2025 15:00:51" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;294 106161 +(FILECREATED " 8-Nov-2025 13:32:36" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;299 107884 :EDIT-BY rmk - :CHANGES-TO (VARS TEDIT-FNKEYSCOMS) + :CHANGES-TO (FNS TEDIT.GETSYNTAX TEDIT.GETFUNCTION TEDIT.CLEAR.CHARBINDINGS + TEDIT.GET.CHARACTION TEDIT.GET.ALL.CHARBINDINGS TEDIT.GET.ALL.CHARACTIONS + TEDIT.SETFUNCTION) + (VARS TEDIT.BASIC.CHARBINDINGS \TEDIT.TTCCODES) - :PREVIOUS-DATE " 6-Aug-2025 08:59:59" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;293) + :PREVIOUS-DATE " 7-Aug-2025 15:00:51" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;294) (PRETTYCOMPRINT TEDIT-FNKEYSCOMS) @@ -124,7 +127,8 @@ RDTBL]) (TEDIT.CLEAR.CHARBINDINGS - [LAMBDA (RDTBL BINDINGS) (* ; "Edited 5-Apr-2025 11:36 by rmk") + [LAMBDA (RDTBL BINDINGS) (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 5-Apr-2025 11:36 by rmk") (* ; "Edited 18-Mar-2025 11:10 by rmk") (* ; "Edited 15-Mar-2025 12:02 by rmk") @@ -142,7 +146,7 @@ [if (EQ BINDINGS T) then [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CHARCODE) - (CL:WHEN (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CHARCODE)) (TEDIT.SETFUNCTION CHARCODE NIL RDTBL) @@ -163,7 +167,8 @@ RDTBL))])]) (TEDIT.GET.CHARACTION - [LAMBDA (CHARCODE BINDINGS) (* ; "Edited 5-Apr-2025 11:36 by rmk") + [LAMBDA (CHARCODE BINDINGS) (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 5-Apr-2025 11:36 by rmk") (* ; "Edited 19-Mar-2025 14:51 by rmk") (* ; "Edited 18-Mar-2025 11:07 by rmk") (* ; "Edited 17-Mar-2025 09:43 by rmk") @@ -195,7 +200,7 @@ [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) (CL:WHEN (AND (EQ CCODE CHARCODE) - (EQ (\TEDIT.TTC FUNCTIONCALL) + (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CHARCODE))) (for CA in TEDIT.CHARACTIONS when (EQUAL (CADR CA) @@ -238,7 +243,8 @@ CHARS)]) (TEDIT.GET.ALL.CHARBINDINGS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 23-Apr-2025 10:11 by rmk") (* ; "Edited 7-Apr-2025 22:11 by rmk") (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:51 by rmk") @@ -256,7 +262,7 @@ (LET (ACTIONS) [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) - (CL:WHEN (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CCODE)) (for CA ANAME in TEDIT.CHARACTIONS when (LISTP CA) @@ -272,7 +278,7 @@ [for A S in ACTIONS do (SETQ S (SORT (CDR A))) (RPLACD A (CL:IF RETURNCODES S - (CHARCODE.ENCODE S))] + (CHARCODE.ENCODE S))] ACTIONS]) (TEDIT.CHARBINDINGS.INVERT @@ -300,7 +306,8 @@ (RETURN ACTIONSPERCHAR]) (TEDIT.GET.ALL.CHARACTIONS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 23-Apr-2025 10:11 by rmk") (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:51 by rmk") (CL:UNLESS (READTABLEP RDTBL) @@ -314,7 +321,7 @@ (LET (ACTIONS) [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) - (CL:WHEN (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CCODE)) (for CA ANAME in TEDIT.CHARACTIONS when (LISTP CA) @@ -330,7 +337,7 @@ [for A S in ACTIONS do (SETQ S (SORT (CDR A))) (RPLACD A (CL:IF RETURNCODES S - (CHARCODE.ENCODE S))] + (CHARCODE.ENCODE S))] ACTIONS]) (TEDIT.CONFLICTING.CHARBINDINGS @@ -1308,24 +1315,41 @@ RTBL]) (TEDIT.GETSYNTAX - [LAMBDA (CH TABLE) (* ; "Edited 29-May-2025 16:20 by rmk") + [LAMBDA (CH TABLE) (* ; "Edited 8-Nov-2025 13:32 by rmk") + (* ; "Edited 29-May-2025 16:20 by rmk") (* ; "Edited 12-Mar-2025 12:55 by rmk") (* ; "Edited 24-Dec-2023 09:47 by rmk") (* ; "Edited 31-Mar-87 10:01 by jds") - (* ;; "Find TEdit's interpretation of a given character") - - (CAR (find TTC (SYNCODE _ (\SYNCODE (fetch READSA of (if (NULL TABLE) - then TEDIT.READTABLE - elseif (TEXTSTREAM TABLE T) - then (OR (GETTOBJ (TEXTOBJ TABLE) - TXTRTBL) - TEDIT.READTABLE) - else TABLE)) - (CL:IF (OR (LITATOM CH) - (STRINGP CH)) - (CHARCODE.DECODE CH) - CH))) in \TEDIT.TTCCODES suchthat (EQ SYNCODE (CADR TTC]) + (* ;; "SKETCH uses this function.") + + (LET + ((ACTION (TEDIT.GET.CHARACTION CH TABLE))) + (if ACTION + then + (* ;; "Map back to syntax-class names just for those defined classes, otherwise FN, for compatibility with documentation and history. But (OR (CAR (MKLIST ACTION)) 'NONE) would be simpler and more informative") + + (OR (find CLASS in '(CHARDELETE WORDDELETE DELETE UNDO REDO NEXT) + suchthat (OR (EQ CLASS ACTION) + (MEMB CLASS ACTION))) + 'FN) + else + (* ;; + "Old code: actions associated with particular class names--really now just picks out NONE") + + (CAR (find TTC (SYNCODE _ (\SYNCODE (fetch READSA + of (if (NULL TABLE) + then TEDIT.READTABLE + elseif (TEXTSTREAM TABLE T) + then (OR (GETTOBJ (TEXTOBJ TABLE) + TXTRTBL) + TEDIT.READTABLE) + else TABLE)) + (CL:IF (OR (LITATOM CH) + (STRINGP CH)) + (CHARCODE.DECODE CH) + CH))) in \TEDIT.TTCCODES + suchthat (EQ SYNCODE (CADR TTC]) (TEDIT.SETSYNTAX [LAMBDA (CHAR CLASS RDTBL) (* ; "Edited 13-Mar-2025 21:52 by rmk") @@ -1351,7 +1375,8 @@ (\TEDIT.TTC NONE))))]) (TEDIT.GETFUNCTION - [LAMBDA (CHARCODE RDTBL) (* ; "Edited 5-Apr-2025 11:37 by rmk") + [LAMBDA (CHARCODE RDTBL) (* ; "Edited 8-Nov-2025 11:13 by rmk") + (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 13-Mar-2025 22:56 by rmk") (* ; "Edited 7-Mar-2025 12:02 by rmk") (* jds "19-Sep-85 17:06") @@ -1368,14 +1393,15 @@ TEDIT.READTABLE) else RDTBL)) (CL:WHEN (AND (READTABLEP RDTBL) - (EQ (\TEDIT.TTC FUNCTIONCALL) + (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CHARCODE)) (fetch READMACRODEFS of RDTBL)) [CAR (FETCH MACROFN OF (GETHASH CHARCODE (fetch READMACRODEFS of RDTBL])]) (TEDIT.SETFUNCTION - [LAMBDA (CHARCODE FN RDTBL) (* ; "Edited 13-Mar-2025 22:51 by rmk") + [LAMBDA (CHARCODE FN RDTBL) (* ; "Edited 8-Nov-2025 10:02 by rmk") + (* ; "Edited 13-Mar-2025 22:51 by rmk") (* ; "Edited 7-Mar-2025 12:03 by rmk") (* ; "Edited 31-Mar-87 10:58 by jds") (* ; @@ -1396,7 +1422,7 @@ (\SETSYNCODE (fetch READSA of RDTBL) CHARCODE (CL:IF FN - (\TEDIT.TTC FUNCTIONCALL) + (\TEDIT.TTC FN) (\TEDIT.TTC NONE))) (CL:UNLESS (fetch READMACRODEFS of RDTBL) (replace READMACRODEFS of RDTBL with (HARRAY 50))) (* ; @@ -1460,7 +1486,7 @@ (CHARDELETE 1) (WORDDELETE 2) (DELETE 3) - (FUNCTIONCALL 4) + (FN 4) (REDO 5) (UNDO 6) (CMD 7) @@ -1718,7 +1744,8 @@ (CHARDELETE "BS" "^A") (* ; "CHARDELETE/WORDDELETE are TTC") - (CHARDELETE.FORWARD "^W" "^U") + ((CHARDELETE.FORWARD DELETE) + "^W" "^U") (* ; "keyactions for DEL key ??") (WORDDELELETE) (WORDDELETE.FORWARD) @@ -1939,29 +1966,29 @@ (RPAQQ TEDIT.BUTTONBITMAP #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3941 22863 (TEDIT.INSTALL.CHARBINDINGS 3951 . 7842) (TEDIT.CLEAR.CHARBINDINGS 7844 . -10522) (TEDIT.GET.CHARACTION 10524 . 13270) (TEDIT.GET.CHARBINDING 13272 . 15411) ( -TEDIT.GET.ALL.CHARBINDINGS 15413 . 17729) (TEDIT.CHARBINDINGS.INVERT 17731 . 19461) ( -TEDIT.GET.ALL.CHARACTIONS 19463 . 21549) (TEDIT.CONFLICTING.CHARBINDINGS 21551 . 22861)) (22923 32978 -(\TEDIT.KEY.CHARLOOKS 22933 . 24125) (\TEDIT.KEY.QUAD 24127 . 26220) (\TEDIT.DEFAULTSSEL 26222 . 26833 -) (\TEDIT.SETDEFAULT.FROM.SEL 26835 . 27512) (\TEDIT.KEY.SIZE 27514 . 28710) (\TEDIT.SUBSCRIPTSEL -28712 . 28915) (\TEDIT.SUPERSCRIPTSEL 28917 . 29121) (\TEDIT.KEY.TRANSFORM 29123 . 31120) ( -\TEDIT.KEY.OPENLINE 31122 . 31576) (\TEDIT.KEY.FAMILYN 31578 . 32976)) (32979 33268 (CAP-CASECODE -32989 . 33266)) (33302 36734 (\TEDIT.SHOWCARETLOOKS 33312 . 35827) (\TEDIT.DESCRIBEFONT 35829 . 36732) -) (36765 51738 (\TEDIT.ONECHAR.BACKWARD 36775 . 37922) (\TEDIT.ONECHAR.FORWARD 37924 . 39160) ( -\TEDIT.ONELINE.UP 39162 . 42123) (\TEDIT.ONELINE.DOWN 42125 . 43782) (\TEDIT.ONELINE.MOVE 43784 . -46071) (\TEDIT.ONEWORD.BACKWARD 46073 . 47261) (\TEDIT.ONEWORD.FORWARD 47263 . 48450) ( -\TEDIT.LINE.BEGIN 48452 . 49531) (\TEDIT.LINE.END 49533 . 50770) (\TEDIT.DOCUMENT.BEGIN 50772 . 51131) - (\TEDIT.DOCUMENT.END 51133 . 51736)) (51739 53781 (\TEDIT.LINEDELETE.FORWARD 51749 . 52748) ( -\TEDIT.LINEDELETE.BACKWARD 52750 . 53779)) (53782 56310 (\TEDIT.KEY.NEST 53792 . 56308)) (56311 57593 -(\TEDIT.KEY.WRAP 56321 . 57591)) (57684 65732 (\TEDIT.KEY.FIND 57694 . 62872) ( -\TEDIT.KEY.FIND.SEARCHSTRING 62874 . 64014) (\TEDIT.GET.TARGET.STRING 64016 . 65730)) (65763 68395 ( -\TEDIT.KEY.SUBSTITUTE 65773 . 65994) (\TEDIT.MANPAGE 65996 . 67243) (\TEDIT.CALL.ED 67245 . 68075) ( -\TEDIT.SELECT.ALL 68077 . 68393)) (68422 74112 (\TEDIT.CLIPBOARD 68432 . 70187) ( -\TEDIT.COPYTOCLIPBOARD 70189 . 70969) (\TEDIT.EXTRACTTOCLIPBOARD 70971 . 71166) (\TEDIT.WRITE.SEL -71168 . 74110)) (74278 86280 (\TEDIT.READTABLE 74288 . 75224) (\TEDIT.WORDBOUND.READTABLE 75226 . -78165) (TEDIT.GETSYNTAX 78167 . 79596) (TEDIT.SETSYNTAX 79598 . 80803) (TEDIT.GETFUNCTION 80805 . -82070) (TEDIT.SETFUNCTION 82072 . 84058) (TEDIT.WORDGET 84060 . 84321) (TEDIT.WORDSET 84323 . 84954) ( -TEDIT.ATOMBOUND.READTABLE 84956 . 86278)) (98109 105097 (TEDIT.BUTTONS.BUILD 98119 . 103365) ( -TEDIT.BUTTONBITMAP.FILL 103367 . 105095))))) + (FILEMAP (NIL (4188 23498 (TEDIT.INSTALL.CHARBINDINGS 4198 . 8089) (TEDIT.CLEAR.CHARBINDINGS 8091 . +10868) (TEDIT.GET.CHARACTION 10870 . 13715) (TEDIT.GET.CHARBINDING 13717 . 15856) ( +TEDIT.GET.ALL.CHARBINDINGS 15858 . 18269) (TEDIT.CHARBINDINGS.INVERT 18271 . 20001) ( +TEDIT.GET.ALL.CHARACTIONS 20003 . 22184) (TEDIT.CONFLICTING.CHARBINDINGS 22186 . 23496)) (23558 33613 +(\TEDIT.KEY.CHARLOOKS 23568 . 24760) (\TEDIT.KEY.QUAD 24762 . 26855) (\TEDIT.DEFAULTSSEL 26857 . 27468 +) (\TEDIT.SETDEFAULT.FROM.SEL 27470 . 28147) (\TEDIT.KEY.SIZE 28149 . 29345) (\TEDIT.SUBSCRIPTSEL +29347 . 29550) (\TEDIT.SUPERSCRIPTSEL 29552 . 29756) (\TEDIT.KEY.TRANSFORM 29758 . 31755) ( +\TEDIT.KEY.OPENLINE 31757 . 32211) (\TEDIT.KEY.FAMILYN 32213 . 33611)) (33614 33903 (CAP-CASECODE +33624 . 33901)) (33937 37369 (\TEDIT.SHOWCARETLOOKS 33947 . 36462) (\TEDIT.DESCRIBEFONT 36464 . 37367) +) (37400 52373 (\TEDIT.ONECHAR.BACKWARD 37410 . 38557) (\TEDIT.ONECHAR.FORWARD 38559 . 39795) ( +\TEDIT.ONELINE.UP 39797 . 42758) (\TEDIT.ONELINE.DOWN 42760 . 44417) (\TEDIT.ONELINE.MOVE 44419 . +46706) (\TEDIT.ONEWORD.BACKWARD 46708 . 47896) (\TEDIT.ONEWORD.FORWARD 47898 . 49085) ( +\TEDIT.LINE.BEGIN 49087 . 50166) (\TEDIT.LINE.END 50168 . 51405) (\TEDIT.DOCUMENT.BEGIN 51407 . 51766) + (\TEDIT.DOCUMENT.END 51768 . 52371)) (52374 54416 (\TEDIT.LINEDELETE.FORWARD 52384 . 53383) ( +\TEDIT.LINEDELETE.BACKWARD 53385 . 54414)) (54417 56945 (\TEDIT.KEY.NEST 54427 . 56943)) (56946 58228 +(\TEDIT.KEY.WRAP 56956 . 58226)) (58319 66367 (\TEDIT.KEY.FIND 58329 . 63507) ( +\TEDIT.KEY.FIND.SEARCHSTRING 63509 . 64649) (\TEDIT.GET.TARGET.STRING 64651 . 66365)) (66398 69030 ( +\TEDIT.KEY.SUBSTITUTE 66408 . 66629) (\TEDIT.MANPAGE 66631 . 67878) (\TEDIT.CALL.ED 67880 . 68710) ( +\TEDIT.SELECT.ALL 68712 . 69028)) (69057 74747 (\TEDIT.CLIPBOARD 69067 . 70822) ( +\TEDIT.COPYTOCLIPBOARD 70824 . 71604) (\TEDIT.EXTRACTTOCLIPBOARD 71606 . 71801) (\TEDIT.WRITE.SEL +71803 . 74745)) (74913 87995 (\TEDIT.READTABLE 74923 . 75859) (\TEDIT.WORDBOUND.READTABLE 75861 . +78800) (TEDIT.GETSYNTAX 78802 . 81113) (TEDIT.SETSYNTAX 81115 . 82320) (TEDIT.GETFUNCTION 82322 . +83686) (TEDIT.SETFUNCTION 83688 . 85773) (TEDIT.WORDGET 85775 . 86036) (TEDIT.WORDSET 86038 . 86669) ( +TEDIT.ATOMBOUND.READTABLE 86671 . 87993)) (99832 106820 (TEDIT.BUTTONS.BUILD 99842 . 105088) ( +TEDIT.BUTTONBITMAP.FILL 105090 . 106818))))) STOP diff --git a/library/tedit/TEDIT-FNKEYS.LCOM b/library/tedit/TEDIT-FNKEYS.LCOM index 3682e535d..65c4bc518 100644 Binary files a/library/tedit/TEDIT-FNKEYS.LCOM and b/library/tedit/TEDIT-FNKEYS.LCOM differ diff --git a/sources/FONT b/sources/FONT index 6e40fa42a..127082ce2 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,13 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "17-Oct-2025 19:43:25" {WMEDLEY}FONT.;621 286216 +(FILECREATED " 7-Nov-2025 11:53:58" {WMEDLEY}FONT.;626 286841 :EDIT-BY rmk :CHANGES-TO (VARS FONTCOMS) - (FNS MONOSPACEFONTP) + (FNS MAKEFONTFACE MAKEFONTSPEC FONTSAVAILABLE) - :PREVIOUS-DATE "13-Oct-2025 21:33:14" {WMEDLEY}FONT.;620) + :PREVIOUS-DATE "20-Oct-2025 09:54:15" {WMEDLEY}FONT.;622) (PRETTYCOMPRINT FONTCOMS) @@ -66,12 +66,14 @@ (FNS FONTSAVAILABLE FONTEXISTS? \SEARCHFONTFILES FLUSHFONTSINCORE FINDFONTFILES SORTFONTSPECS ) (FNS MATCHFONTFACE MAKEFONTFACE FONTFACETOATOM) - (INITVARS \FONTSINCORE \FONTEXISTS?-CACHE \DEFAULTDEVICEFONTS) + (INITVARS \FONTSINCORE \FONTEXISTS?-CACHE \FONTSAVAILABLEFILECACHE \DEFAULTDEVICEFONTS) + (ADDVARS (MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE))) [COMS (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) (INITVARS \UNITWIDTHSVECTOR) (FNS \UNITWIDTHSVECTOR) (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\UNITWIDTHSVECTOR] - (DECLARE%: DONTCOPY (EXPORT (RECORDS FONTCLASS FONTDESCRIPTOR FONTFACE CHARSETINFO FONTSPEC) + (DECLARE%: DONTCOPY [EXPORT (RECORDS FONTCLASS FONTDESCRIPTOR FONTFACE CHARSETINFO FONTSPEC) (MACROS FONTASCENT FONTDESCENT FONTHEIGHT \FGETOFFSET \FSETOFFSET \FGETWIDTH \FSETWIDTH \FGETCHARWIDTH \FSETCHARWIDTH \FGETIMAGEWIDTH \FSETIMAGEWIDTH) @@ -79,8 +81,7 @@ \CREATECSINFOELEMENT \CREATEFONTCHARSETVECTOR CHARSETPROP) (PROP ARGNAMES CHARSETPROP) (CONSTANTS (SLUGCHARINDEX (ADD1 \MAXTHINCHAR)) - (SLUGCHARSET (ADD1 \MAXCHARSET))) - (MACROS LEGACYFONTS)) + (SLUGCHARSET (ADD1 \MAXCHARSET] (MACROS INDIRECTCHARSETP)) (FNS FONTDESCRIPTOR.DEFPRINT FONTCLASS.DEFPRINT) (INITRECORDS FONTCLASS FONTDESCRIPTOR CHARSETINFO) @@ -1092,17 +1093,22 @@ (DEFINEQ (MAKEFONTSPEC - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 28-Aug-2025 14:32 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE BASE) (* ; "Edited 7-Nov-2025 07:52 by rmk") + (* ; "Edited 28-Aug-2025 14:32 by rmk") (* ; "Edited 17-Aug-2025 20:44 by rmk") (* ;; "This is a function, not a macro, so that it can be used in the loadup sequence to create the FONTSPEC for the \GUARANTEEDDISPLAYFONT. That font is created by \CREATEFONT and therefore is not dependent on \FONT.CHECKARGS or on the multi-alist multi-key indexing functions. The strategy might change if MULTI-ALIST is moved earlier in the loadup sequence.") + (* ;; "BASE (fontspec or font) provides defaults for NIL arguments, essentialy models a (create using BASE...)") + + (CL:WHEN (FONTP BASE) + (SETQ BASE (FONTPROP BASE 'SPEC))) (create FONTSPEC - FSFAMILY _ FAMILY - FSSIZE _ SIZE - FSFACE _ FACE - FSROTATION _ ROTATION - FSDEVICE _ DEVICE]) + FSFAMILY _ (OR FAMILY (fetch (FONTSPEC FSFAMILY) of BASE)) + FSSIZE _ (OR SIZE (fetch (FONTSPEC FSSIZE) of BASE)) + FSFACE _ (OR FACE (fetch (FONTSPEC FSFACE) of BASE)) + FSROTATION _ (OR ROTATION (fetch (FONTSPEC FSROTATION) of BASE)) + FSDEVICE _ (OR DEVICE (fetch (FONTSPEC FSDEVICE) of BASE]) ) (DEFINEQ @@ -2795,7 +2801,8 @@ (DEFINEQ (FONTSAVAILABLE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 25-Sep-2025 18:39 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 6-Nov-2025 13:50 by rmk") + (* ; "Edited 25-Sep-2025 18:39 by rmk") (* ; "Edited 30-Aug-2025 13:55 by rmk") (* ; "Edited 28-Aug-2025 14:43 by rmk") (* ; "Edited 23-Aug-2025 10:51 by rmk") @@ -2810,48 +2817,63 @@ (* ;;; "returns a list of the fonts fitting a description that are available. FAMILY SIZE FACE or ROTATION can be * which means get them all. if CHECKFILESTOO? is NIL, only fonts in core will be considered. If ONLY, fonts in memory will be ignored. ") - (DECLARE (GLOBALVARS \FONTSINCORE)) - (LET ((FONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE))) - (if (EQ '* (fetch (FONTSPEC FSDEVICE) of FONTSPEC)) - then - (* ;; + (DECLARE (GLOBALVARS \FONTSINCORE \FONTSAVAILABLEFILECACHE)) + (LET + ((FONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE)) + FILEFONTS) + (if (EQ '* (fetch (FONTSPEC FSDEVICE) of FONTSPEC)) + then + (* ;;  "The results for each device will be grouped together, because the sort happens in the clause below") - (for I in IMAGESTREAMTYPES join (FONTSAVAILABLE FONTSPEC NIL NIL NIL (CAR I) - CHECKFILESTOO?)) - else (SPREADFONTSPEC FONTSPEC) (* ; "For easier matching code") - (SORTFONTSPECS (UNION (CL:UNLESS (EQ 'ONLY CHECKFILESTOO?) - [COLLECTMULTI \FONTSINCORE - (FUNCTION (LAMBDA (FM S FC R D FONT) - (DECLARE (USEDFREE $$COLLECT)) - (CL:WHEN - [AND (OR (EQ FAMILY FM) - (EQ FAMILY '*)) - (OR (EQ SIZE S) - (EQ SIZE '*)) - (MATCHFONTFACE FACE FC) - (OR (EQ ROTATION R) - (EQ ROTATION '*)) - (OR (EQ DEVICE D) - (EQ DEVICE '*] - (push $$COLLECT - (create FONTSPEC - FSFAMILY _ FM - FSSIZE _ S - FSFACE _ FC - FSROTATION _ R - FSDEVICE _ D)))]) - (CL:WHEN CHECKFILESTOO?(* ; + (for I in IMAGESTREAMTYPES join (FONTSAVAILABLE FONTSPEC NIL NIL NIL (CAR I) + CHECKFILESTOO?)) + else + (SPREADFONTSPEC FONTSPEC) (* ; "For easier matching code") + (SORTFONTSPECS + (UNION (CL:UNLESS (EQ 'ONLY CHECKFILESTOO?) + [COLLECTMULTI \FONTSINCORE + (FUNCTION (LAMBDA (FM S FC R D FONT) + (DECLARE (USEDFREE $$COLLECT)) + (CL:WHEN [AND (OR (EQ FAMILY FM) + (EQ FAMILY '*)) + (OR (EQ SIZE S) + (EQ SIZE '*)) + (MATCHFONTFACE FACE FC) + (OR (EQ ROTATION R) + (EQ ROTATION '*)) + (OR (EQ DEVICE D) + (EQ DEVICE '*] + (push $$COLLECT + (create FONTSPEC + FSFAMILY _ FM + FSSIZE _ S + FSFACE _ FC + FSROTATION _ R + FSDEVICE _ D)))]) + (CL:WHEN CHECKFILESTOO? (* ;  "apply the device font lookup function.") - (LET [(FN (OR (CAR (GETMULTI IMAGESTREAMTYPES DEVICE - 'FONTSAVAILABLE)) - (FUNCTION \SEARCHFONTFILES] + (SETQ FILEFONTS (SGETMULTI \FONTSAVAILABLEFILECACHE FAMILY SIZE FACE ROTATION + DEVICE)) + + (* ;; "APPEND the cache value because of the SORT") - (* ;; "Until all the device functions take a FONTSPEC") + (APPEND (if (NULL FILEFONTS) + then (LET [(FN (OR (CAR (GETMULTI IMAGESTREAMTYPES DEVICE + 'FONTSAVAILABLE)) + (FUNCTION \SEARCHFONTFILES] - (CL:IF (EQ 1 (NARGS FN)) - (APPLY* FN FONTSPEC) - (APPLY* FN FAMILY SIZE FACE ROTATION DEVICE))))]) + (* ;; "Until all the device functions take a FONTSPEC") + + (SETQ FILEFONTS (CL:IF (EQ 1 (NARGS FN)) + (APPLY* FN FONTSPEC) + (APPLY* FN FAMILY SIZE FACE ROTATION + DEVICE))) + (SPUTMULTI \FONTSAVAILABLEFILECACHE FAMILY SIZE FACE + ROTATION DEVICE (OR FILEFONTS 'NONE)) + FILEFONTS) + elseif (NEQ FILEFONTS 'NONE) + then FILEFONTS)))]) (FONTEXISTS? [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE NOCOERCIONS) (* ; "Edited 26-Sep-2025 10:10 by rmk") @@ -3095,7 +3117,10 @@ (EQ PEXPANSION '*]) (MAKEFONTFACE - [LAMBDA (WEIGHT SLOPE EXPANSION BASE COLOR) (* ; "Edited 30-Aug-2025 10:22 by rmk") + [LAMBDA (WEIGHT SLOPE EXPANSION BASE COLOR) (* ; "Edited 7-Nov-2025 08:50 by rmk") + (* ; "Edited 30-Aug-2025 10:22 by rmk") + (CL:WHEN (FONTP BASE) + (SETQ BASE (FONTPROP BASE 'FACE))) (CL:UNLESS WEIGHT (SETQ WEIGHT (CL:IF BASE (fetch (FONTFACE WEIGHT) of BASE) @@ -3154,7 +3179,12 @@ (RPAQ? \FONTEXISTS?-CACHE NIL) +(RPAQ? \FONTSAVAILABLEFILECACHE NIL) + (RPAQ? \DEFAULTDEVICEFONTS NIL) + +(ADDTOVAR MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE)) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) @@ -3422,19 +3452,6 @@ (CONSTANTS (SLUGCHARINDEX (ADD1 \MAXTHINCHAR)) (SLUGCHARSET (ADD1 \MAXCHARSET))) ) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS LEGACYFONTS MACRO ((F . FORMS) (* ; - "Execute FORMS in a legacy font environment") - (RESETLST - (RESETSAVE \FONTSINCORE NIL) - (RESETSAVE \FONTEXISTS?-CACHE) - (RESETSAVE DISPLAYFONTCOERCIONS) - (RESETSAVE DISPLAYCHARCOERCIONS) - (RESETSAVE DISPLAYFONTEXTENSIONS '(DISPLAYFONT)) - (RESETSAVE DISPLAYFONTDIRECTORIES (MEDLEYDIR "fonts>displayfonts>")) - (PROGN F . FORMS)))) -) (* "END EXPORTED DEFINITIONS") @@ -4650,44 +4667,44 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12132 21845 (CHARWIDTH 12142 . 12927) (CHARWIDTHY 12929 . 14446) (STRINGWIDTH 14448 . -15541) (\CHARWIDTH.DISPLAY 15543 . 15956) (\STRINGWIDTH.DISPLAY 15958 . 16382) (\STRINGWIDTH.GENERIC -16384 . 21843)) (21846 28366 (DEFAULTFONT 21856 . 23141) (FONTCLASS 23143 . 25305) (FONTCLASSUNPARSE -25307 . 26206) (FONTCLASSCOMPONENT 26208 . 26796) (SETFONTCLASSCOMPONENT 26798 . 27240) ( -GETFONTCLASSCOMPONENT 27242 . 28364)) (30045 54426 (FONTCREATE 30055 . 33300) (FONTCREATE1 33302 . -35917) (FONTCREATE.SLUGFD 35919 . 37401) (\FONT.CHECKARGS 37403 . 43993) (\FONT.CHECKARGS1 43995 . -48518) (\FONTCREATE1.NOFN 48520 . 48734) (FONTFILEP 48736 . 49624) (\READCHARSET 49626 . 54424)) ( -54427 61344 (\FONT.CHECKARGS 54437 . 61027) (\CHARSET.CHECK 61029 . 61342)) (61345 64428 ( -COERCEFONTSPEC 61355 . 64426)) (66498 67288 (MAKEFONTSPEC 66508 . 67286)) (67289 75466 (COMPLETE.FONT -67299 . 69822) (COMPLETEFONTP 69824 . 70447) (COMPLETE.CHARSET 70449 . 73134) (PRUNESLUGCSINFOS 73136 - . 74061) (MONOSPACEFONTP 74063 . 75464)) (75505 83426 (FONTASCENT 75515 . 75899) (FONTDESCENT 75901 - . 76386) (FONTHEIGHT 76388 . 76790) (FONTPROP 76792 . 82703) (\AVGCHARWIDTH 82705 . 83424)) (84083 -84991 (FONTDEVICEPROP 84093 . 84989)) (85037 85891 (EDITCHAR 85047 . 85889)) (85937 98127 ( -GETCHARBITMAP 85947 . 87071) (PUTCHARBITMAP 87073 . 89231) (\GETCHARBITMAP.CSINFO 89233 . 91249) ( -\PUTCHARBITMAP.CSINFO 91251 . 98125)) (98128 118608 (MOVECHARBITMAP 98138 . 100032) (MOVEFONTCHARS -100034 . 103994) (\MOVEFONTCHAR 103996 . 108839) (\MOVEFONTCHARS.SOURCEDATA 108841 . 114946) ( -\MAKESLUGCHAR 114948 . 117483) (SLUGCHARP.DISPLAY 117485 . 118606)) (119541 139679 (FONTFILES 119551 - . 121384) (\FINDFONTFILE 121386 . 123103) (\FONTFILENAMES 123105 . 124100) (\FONTFILENAME 124102 . -128085) (\FONTFILENAME.OLD 128087 . 131036) (\FONTFILENAME.NEW 131038 . 133295) (FONTSPECFROMFILENAME -133297 . 137398) (\FONTINFOFROMFILENAME.OLD 137400 . 139677)) (139946 175749 (FONTCOPY 139956 . 145019 -) (FONTP 145021 . 145320) (FONTUNPARSE 145322 . 147041) (SETFONTDESCRIPTOR 147043 . 148507) ( -\STREAMCHARWIDTH 148509 . 152673) (\COERCECHARSET 152675 . 155270) (\BUILDSLUGCSINFO 155272 . 158895) -(\FONTSYMBOL 158897 . 159547) (\DEVICESYMBOL 159549 . 160418) (\FONTFACE 160420 . 167610) ( -\FONTFACE.COLOR 167612 . 174532) (SETFONTCHARENCODING 174534 . 175747)) (175750 196301 (FONTSAVAILABLE - 175760 . 180615) (FONTEXISTS? 180617 . 184595) (\SEARCHFONTFILES 184597 . 187682) (FLUSHFONTSINCORE -187684 . 190857) (FINDFONTFILES 190859 . 194073) (SORTFONTSPECS 194075 . 196299)) (196302 199725 ( -MATCHFONTFACE 196312 . 197127) (MAKEFONTFACE 197129 . 197969) (FONTFACETOATOM 197971 . 199723)) ( -199953 200445 (\UNITWIDTHSVECTOR 199963 . 200443)) (215788 217855 (FONTDESCRIPTOR.DEFPRINT 215798 . -217377) (FONTCLASS.DEFPRINT 217379 . 217853)) (221684 224474 (\CREATEKERNELEMENT 221694 . 222052) ( -\FSETLEFTKERN 222054 . 222545) (\FGETLEFTKERN 222547 . 224472)) (224475 234111 (\CREATEFONT 224485 . -225924) (\CREATECHARSET 225926 . 229862) (\INSTALLCHARSETINFO 229864 . 233198) ( -\INSTALLCHARSETINFO.CHARENCODING 233200 . 234109)) (234433 235797 (\FONTRESETCHARWIDTHS 234443 . -235795)) (236427 246474 (\CREATEDISPLAYFONT 236437 . 238286) (\CREATECHARSET.DISPLAY 238288 . 243997) -(\FONTEXISTS?.DISPLAY 243999 . 246472)) (246475 261340 (STRIKEFONT.FILEP 246485 . 247373) ( -STRIKEFONT.GETCHARSET 247375 . 252967) (WRITESTRIKEFONTFILE 252969 . 257880) (STRIKECSINFO 257882 . -261338)) (261371 277688 (MAKEBOLD.CHARSET 261381 . 265030) (MAKEBOLD.CHAR 265032 . 266784) ( -MAKEITALIC.CHARSET 266786 . 270459) (MAKEITALIC.CHAR 270461 . 272807) (\SFMAKEBOLD 272809 . 275033) ( -\SFMAKEITALIC 275035 . 277686)) (277689 281838 (\SFMAKEROTATEDFONT 277699 . 279100) (\SFROTATECSINFO -279102 . 279739) (\SFROTATEFONTCHARACTERS 279741 . 280121) (\SFROTATECSINFOOFFSETS 280123 . 281836)) ( -281839 283220 (\SFMAKECOLOR 281849 . 283218))))) + (FILEMAP (NIL (12233 21946 (CHARWIDTH 12243 . 13028) (CHARWIDTHY 13030 . 14547) (STRINGWIDTH 14549 . +15642) (\CHARWIDTH.DISPLAY 15644 . 16057) (\STRINGWIDTH.DISPLAY 16059 . 16483) (\STRINGWIDTH.GENERIC +16485 . 21944)) (21947 28467 (DEFAULTFONT 21957 . 23242) (FONTCLASS 23244 . 25406) (FONTCLASSUNPARSE +25408 . 26307) (FONTCLASSCOMPONENT 26309 . 26897) (SETFONTCLASSCOMPONENT 26899 . 27341) ( +GETFONTCLASSCOMPONENT 27343 . 28465)) (30146 54527 (FONTCREATE 30156 . 33401) (FONTCREATE1 33403 . +36018) (FONTCREATE.SLUGFD 36020 . 37502) (\FONT.CHECKARGS 37504 . 44094) (\FONT.CHECKARGS1 44096 . +48619) (\FONTCREATE1.NOFN 48621 . 48835) (FONTFILEP 48837 . 49725) (\READCHARSET 49727 . 54525)) ( +54528 61445 (\FONT.CHECKARGS 54538 . 61128) (\CHARSET.CHECK 61130 . 61443)) (61446 64529 ( +COERCEFONTSPEC 61456 . 64527)) (66599 67938 (MAKEFONTSPEC 66609 . 67936)) (67939 76116 (COMPLETE.FONT +67949 . 70472) (COMPLETEFONTP 70474 . 71097) (COMPLETE.CHARSET 71099 . 73784) (PRUNESLUGCSINFOS 73786 + . 74711) (MONOSPACEFONTP 74713 . 76114)) (76155 84076 (FONTASCENT 76165 . 76549) (FONTDESCENT 76551 + . 77036) (FONTHEIGHT 77038 . 77440) (FONTPROP 77442 . 83353) (\AVGCHARWIDTH 83355 . 84074)) (84733 +85641 (FONTDEVICEPROP 84743 . 85639)) (85687 86541 (EDITCHAR 85697 . 86539)) (86587 98777 ( +GETCHARBITMAP 86597 . 87721) (PUTCHARBITMAP 87723 . 89881) (\GETCHARBITMAP.CSINFO 89883 . 91899) ( +\PUTCHARBITMAP.CSINFO 91901 . 98775)) (98778 119258 (MOVECHARBITMAP 98788 . 100682) (MOVEFONTCHARS +100684 . 104644) (\MOVEFONTCHAR 104646 . 109489) (\MOVEFONTCHARS.SOURCEDATA 109491 . 115596) ( +\MAKESLUGCHAR 115598 . 118133) (SLUGCHARP.DISPLAY 118135 . 119256)) (120191 140329 (FONTFILES 120201 + . 122034) (\FINDFONTFILE 122036 . 123753) (\FONTFILENAMES 123755 . 124750) (\FONTFILENAME 124752 . +128735) (\FONTFILENAME.OLD 128737 . 131686) (\FONTFILENAME.NEW 131688 . 133945) (FONTSPECFROMFILENAME +133947 . 138048) (\FONTINFOFROMFILENAME.OLD 138050 . 140327)) (140596 176399 (FONTCOPY 140606 . 145669 +) (FONTP 145671 . 145970) (FONTUNPARSE 145972 . 147691) (SETFONTDESCRIPTOR 147693 . 149157) ( +\STREAMCHARWIDTH 149159 . 153323) (\COERCECHARSET 153325 . 155920) (\BUILDSLUGCSINFO 155922 . 159545) +(\FONTSYMBOL 159547 . 160197) (\DEVICESYMBOL 160199 . 161068) (\FONTFACE 161070 . 168260) ( +\FONTFACE.COLOR 168262 . 175182) (SETFONTCHARENCODING 175184 . 176397)) (176400 197339 (FONTSAVAILABLE + 176410 . 181653) (FONTEXISTS? 181655 . 185633) (\SEARCHFONTFILES 185635 . 188720) (FLUSHFONTSINCORE +188722 . 191895) (FINDFONTFILES 191897 . 195111) (SORTFONTSPECS 195113 . 197337)) (197340 200949 ( +MATCHFONTFACE 197350 . 198165) (MAKEFONTFACE 198167 . 199193) (FONTFACETOATOM 199195 . 200947)) ( +201327 201819 (\UNITWIDTHSVECTOR 201337 . 201817)) (216413 218480 (FONTDESCRIPTOR.DEFPRINT 216423 . +218002) (FONTCLASS.DEFPRINT 218004 . 218478)) (222309 225099 (\CREATEKERNELEMENT 222319 . 222677) ( +\FSETLEFTKERN 222679 . 223170) (\FGETLEFTKERN 223172 . 225097)) (225100 234736 (\CREATEFONT 225110 . +226549) (\CREATECHARSET 226551 . 230487) (\INSTALLCHARSETINFO 230489 . 233823) ( +\INSTALLCHARSETINFO.CHARENCODING 233825 . 234734)) (235058 236422 (\FONTRESETCHARWIDTHS 235068 . +236420)) (237052 247099 (\CREATEDISPLAYFONT 237062 . 238911) (\CREATECHARSET.DISPLAY 238913 . 244622) +(\FONTEXISTS?.DISPLAY 244624 . 247097)) (247100 261965 (STRIKEFONT.FILEP 247110 . 247998) ( +STRIKEFONT.GETCHARSET 248000 . 253592) (WRITESTRIKEFONTFILE 253594 . 258505) (STRIKECSINFO 258507 . +261963)) (261996 278313 (MAKEBOLD.CHARSET 262006 . 265655) (MAKEBOLD.CHAR 265657 . 267409) ( +MAKEITALIC.CHARSET 267411 . 271084) (MAKEITALIC.CHAR 271086 . 273432) (\SFMAKEBOLD 273434 . 275658) ( +\SFMAKEITALIC 275660 . 278311)) (278314 282463 (\SFMAKEROTATEDFONT 278324 . 279725) (\SFROTATECSINFO +279727 . 280364) (\SFROTATEFONTCHARACTERS 280366 . 280746) (\SFROTATECSINFOOFFSETS 280748 . 282461)) ( +282464 283845 (\SFMAKECOLOR 282474 . 283843))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 98ce344aa..04031c4f2 100644 Binary files a/sources/FONT.LCOM and b/sources/FONT.LCOM differ