File: SVEditToolMenusImplB.mesa
Last edited by Bier on May 4, 1987 5:40:40 pm PDT
Copyright © 1984 by Xerox Corporation. All rights reserved.
Contents: Procedures which build sections of the EditTool (continued).
DIRECTORY
AtomButtons, Rope, Rules, VFonts, SVEditToolMenus, SVInterfaceTypes, SVUserInput;
SVEditToolMenusImplB: CEDAR PROGRAM
IMPORTS AtomButtons, VFonts, SVUserInput
EXPORTS SVEditToolMenus =
BEGIN
EditToolData: TYPE = SVInterfaceTypes.EditToolData;
Declare the standard distances between menu lines.
entryHeight: CARDINAL = SVEditToolMenus.entryHeight;
entryVSpace: CARDINAL = SVEditToolMenus.entryVSpace;
entryHSpace: CARDINAL = SVEditToolMenus.entryHSpace;
column0: CARDINAL = SVEditToolMenus.column0;
column1: CARDINAL = SVEditToolMenus.column1;
column2: CARDINAL = SVEditToolMenus.column2;
column3: CARDINAL = SVEditToolMenus.column3;
numberSize: CARDINAL = 80;
numberSize3: CARDINAL = 160;
BuildCameraSection1: PUBLIC PROC [editToolData: EditToolData] = {
This section implements a set of buttons in this format:
Camera name: <name> Get! Add! Set!
nextX: INTEGER;
cameraNameSize: NAT ← VFonts.StringWidth["The view from the west."];
Camera name: <name> Get! Set! Use!
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["Camera name:", LIST[LIST[$CameraNamePrompt ]]]],
[text["", CameraNameInData, cameraNameSize]],
[button["Get!", LIST[LIST[$GetCamera ]]]],
[button["Set!", LIST[LIST[$SetCamera ]]]],
[button["Use!", LIST[LIST[$UseCamera ]]]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildCameraSection2: PUBLIC PROC [editToolData: EditToolData] = {
origin: 0,0,1800 focus point: 0,0,0
resolution: 72 focal length: 1800
style: <DrawStyle> frame (two points): [-200,200], [200, -200]
nextX: INTEGER;
pointSize: NAT ← VFonts.StringWidth["-1800, -188.8, -188.8>>>"];
smallPointSize: NAT ← VFonts.StringWidth["188.8, 188.8, 188"];
realSize: NAT ← VFonts.StringWidth["188.8>>>"];
frameSize, clippingPlanesSize, visibleAssembliesSize: NAT;
origin: 0,0,1800 focus point: 0,0,0 slant: 0
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["origin:", LIST[LIST[$CameraOriginPrompt ]]]],
[text["0,0,1800", OriginInData, pointSize]],
[button["focusPoint:", LIST[LIST[$FocusPrompt ]]]],
[text["0, 0, 0", FocusPointInData, smallPointSize]],
[button["slant:", LIST[LIST[$SlantPrompt ]]]],
[text["0", SlantInData, realSize]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
resolution: 72 focal length: 1800  projection: perspect
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["resolution:", LIST[LIST[$ScanResolutionPrompt ]] ]],
[text["72", ResolutionInData, realSize]],
[button["focal length:", LIST[LIST[$FocalLengthPrompt ]] ]],
[text["1800", FocalLengthInData, VFonts.StringWidth["1800 "] ]],
[button["projection:", LIST[LIST[$ProjectionCycle ]] ]],
[label["perspect", ProjectionInData]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
frame: [[-200,200], [200, -200] fullScreen: TRUE]
frameSize ← VFonts.StringWidth["[[302.5,105.6], [302.5,105.6] fullScreen: FALSE]>>>>>"];
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["frame:", LIST[LIST[$FramePrompt ]] ]],
[text["[[0,200],[200,0] fullScreen: TRUE]", FrameInData, frameSize]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
clippingPlanesSize ← VFonts.StringWidth["[1,0,0,1], [2.5,3.2,5.6,7.8], [2.5,3.2,5.6,7.8]>>>"];
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["Clipping Planes: ", LIST[LIST[$ClippingPlanePrompt]] ]],
[text["[0,0,1,0]", ClippingPlanesInData, clippingPlanesSize]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
visibleAssembliesSize ← VFonts.StringWidth["teapot, teacup, table, sceneAssembly, poodle>>>"];
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["Visible Assemblies: ", LIST[LIST[$VisibleAssemblyPrompt]] ]],
[text["sceneAssembly", VisibleAssembliesInData, visibleAssembliesSize]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildCameraSection2
BuildCameraOrderSection: PUBLIC PROC [editToolData: EditToolData] = {
This section implements a set of buttons in this format:
camera order: Front, Top, Side Get! Set!
nextX: INTEGER;
cameraOrderSize: NAT;
camera order: Front, Top, Side
cameraOrderSize ← VFonts.StringWidth["Front, Top, Side, Bottom, Left, Right>>>"];
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["camera order: ", LIST[LIST[$CameraOrderPrompt]] ]],
[text["Front, Top, Side", CameraOrderInData, cameraOrderSize]],
[button["Get!", LIST[LIST[$GetCameraOrder]] ]],
[button["Set!", LIST[LIST[$SetCameraOrder]] ]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
CameraNameInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.name ← button;
};
OriginInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.origin ← button;
};
FocusPointInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.focusPoint ← button;
};
SlantInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.slant ← button;
};
ResolutionInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.resolution ← button;
};
FocalLengthInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.focalLength ← button;
};
ProjectionInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.projection ← button;
};
FrameInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.frame ← button;
};
ClippingPlanesInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.clippingPlanes ← button;
};
VisibleAssembliesInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraSection.visibleAssemblies ← button;
};
CameraOrderInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.cameraOrderSection.order ← button;
};
END.