DIRECTORY Icons, SV2d, SVInterfaceTypes, SVViewersOnScene, SVViewerTool, ViewerClasses, ViewerOps; SVViewerToolImpl: CEDAR PROGRAM IMPORTS Icons, SVViewersOnScene, ViewerOps SHARES ViewerOps = BEGIN OPEN ViewerClasses; Point2d: TYPE = SV2d.Point2d; SVData: TYPE = SVInterfaceTypes.SVData; SolidViewerToolPaint: PRIVATE PaintProc = TRUSTED { svData: SVData _ NARROW[self.data]; v: Viewer; update: BOOL _ FALSE; hdiff, wdiff: INTEGER; FOR l: LIST OF Viewer _ svData.xBounded, l.rest UNTIL l=NIL DO v _ l.first; IF v.destroyed THEN {update _ TRUE; LOOP}; wdiff _ v.ww-v.cw; v.ww _ MAX[v.parent.cw-v.wx-1, 5]; v.cw _ v.ww-wdiff; ENDLOOP; FOR l: LIST OF Viewer _ svData.yBounded, l.rest UNTIL l=NIL DO v _ l.first; IF v.destroyed THEN {update _ TRUE; LOOP}; hdiff _ v.wh-v.ch; v.wh _ MAX[v.parent.ch-v.wy-1, 5]; v.ch _ v.wh-hdiff; ENDLOOP; IF update THEN { oldx: LIST OF Viewer _ svData.xBounded; oldy: LIST OF Viewer _ svData.yBounded; svData.xBounded _ svData.yBounded _ NIL; FOR l: LIST OF Viewer _ oldx, l.rest UNTIL l=NIL DO IF ~l.first.destroyed THEN svData.xBounded _ CONS[l.first, svData.xBounded]; ENDLOOP; FOR l: LIST OF Viewer _ oldy, l.rest UNTIL l=NIL DO IF ~l.first.destroyed THEN svData.yBounded _ CONS[l.first, svData.yBounded]; ENDLOOP; }; }; SolidViewerToolDestroy: PRIVATE DestroyProc = TRUSTED { SVViewersOnScene.NotifyDestroy[self]; }; SolidViewerToolSet: PRIVATE SetProc = TRUSTED { svData: SVData _ NARROW[self.data]; child: Viewer = NARROW[data]; IF child.parent#self THEN ERROR; IF op=$YBound THEN svData.yBounded _ CONS[child, svData.yBounded] ELSE IF op=$XBound THEN svData.xBounded _ CONS[child, svData.xBounded] ELSE ERROR; }; SolidViewerToolInit: PRIVATE InitProc = CHECKED {}; solidViewerToolClass: ViewerClasses.ViewerClass _ NEW[ViewerClasses.ViewerClassRec _ [ init: SolidViewerToolInit, paint: SolidViewerToolPaint, destroy: SolidViewerToolDestroy, set: SolidViewerToolSet, topDownCoordSys: TRUE, icon: Icons.NewIconFromFile["SolidViews.icons", 0] ]]; ViewerOps.RegisterViewerClass[$SolidViewerTool, solidViewerToolClass];-- plug in to Viewers END. μFile: SVViewerToolImpl.mesa Last edited by Bier on February 2, 1987 6:50:03 pm PST Copyright c 1984 by Xerox Corporation. All rights reserved. Created on March 22, 1983 2:29 pm My very own container-type class for solid viewers Κy˜Iheadšœ™Jšœ6™6Jšœ Οmœ1™Jšœ ˜ Jšžœ žœ žœžœ˜*Jšœ˜Jšœžœ˜"Jšœ˜—Jšžœ˜š žœžœžœ"žœžœž˜>Jšœ ˜ Jšžœ žœ žœžœ˜*Jšœ˜Jšœžœ˜"Jšœ˜—Jšžœ˜šžœžœ˜Jšœžœžœ˜'Jšœžœžœ˜'Jšœ$žœ˜(š žœžœžœžœžœž˜3Jšžœ˜Jšžœžœ˜6—Jšžœ˜š žœžœžœžœžœž˜3Jšžœ˜Jšžœžœ˜6—Jšžœ˜Jšœ˜—Jšœ˜—J˜šŸœžœžœ˜7Jšœ%˜%Jšœ˜—J˜šŸœžœ žœ˜/Jšœžœ ˜#Jšœžœ˜Jšžœžœžœ˜ Jšžœ žœžœ˜AJšžœžœ žœžœ˜FJšžœžœ˜ Jšžœ˜—J˜JšŸœžœ žœžœ˜3J˜šœ2žœ!˜VJšœ˜Jšœ˜Jšœ ˜ Jšœ˜Jšœžœ˜Jšœ2˜2Jšœ˜J˜—JšœFΟc˜[J˜Jšžœ˜J˜J˜J˜J˜J˜J˜J˜—…—4 ™