DIRECTORY Commander, Imager, TIPUser, ViewerClasses, ViewerOps; SimpleViewerImpl: CEDAR PROGRAM IMPORTS Commander, Imager, TIPUser, ViewerOps ~ BEGIN Viewer: TYPE ~ ViewerClasses.Viewer; Data: TYPE ~ REF DataRec; DataRec: TYPE ~ RECORD [ viewer: Viewer _ NIL, x, y: REAL _ 10 ]; SimpleViewer: Commander.CommandProc ~ { data: Data _ NEW[DataRec]; data.viewer _ ViewerOps.CreateViewer[ flavor: $SimpleViewer, info: [name: "SimpleViewer", data: data]]; ViewerOps.GrowViewer[data.viewer]; ViewerOps.OpenIcon[data.viewer]; }; PaintSimpleViewer: ViewerClasses.PaintProc = { data: Data _ NARROW[self.data]; Imager.SetColor[context, Imager.black]; Imager.MaskRectangle[context, [data.x, data.y, 10, 10]]; }; NotifySimpleViewer: ViewerClasses.NotifyProc = { data: Data _ NARROW[self.data]; mouse: TIPUser.TIPScreenCoords _ NARROW[input.first]; SELECT input.rest.first FROM $move => { data.x _ mouse.mouseX; data.y _ mouse.mouseY; ViewerOps.PaintViewer[self, client] }; ENDCASE => NULL; }; AdjustSimpleViewer: ViewerClasses.AdjustProc ~ { ViewerOps.GrowViewer[self]; }; ViewerOps.RegisterViewerClass[ $SimpleViewer, NEW[ViewerClasses.ViewerClassRec _ [ paint: PaintSimpleViewer, notify: NotifySimpleViewer, adjust: AdjustSimpleViewer, tipTable: TIPUser.InstantiateNewTIPTable["SimpleViewer.tip"] ]] ]; Commander.Register["///Commands/SimpleViewer", SimpleViewer, "Demonstrate viewer code"]; END. ^-- SimpleViewerImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Bloomenthal, September 24, 1986 3:25:01 pm PDT Notes Modification Cycle: Edit SimpleViewerImpl.mesa. Compile SimpleViewerImpl.mesa. Bind SimpleViewerPackage.config. Run SimpleViewerPackage.bcd. To the commander, type "SimpleViewer". If you wish to save your changes, first change all the file and module names, indicate the changes in the df file, then smodel and verify the df file. The UsingLister program can, if you wish, help you fill in the directory USING fields. Type Declarations Procedures Start Code Κ˜™Jšœ Οmœ1™