-- SimpleViewerImpl.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Bloomenthal, September 24, 1986 3:25:01 pm PDT
DIRECTORY Commander, Imager, TIPUser, ViewerClasses, ViewerOps;
SimpleViewerImpl: CEDAR PROGRAM
IMPORTS Commander, Imager, TIPUser, ViewerOps
~ BEGIN
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
Viewer: TYPE ~ ViewerClasses.Viewer;
Data: TYPE ~ REF DataRec;
DataRec: TYPE ~ RECORD [
viewer: Viewer ← NIL,
x, y: REAL ← 10
];
Procedures
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];
};
Start Code
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.