File: DisplayList3dPrivate.mesa
Author: Eric Bier on August 6, 1983 3:04 pm
Copyright © 1984 by Xerox Corporation. All rights reserved.
Last edited by Bier on January 7, 1985 1:42:22 pm PST
Contents: List Auxiliaries for use by DisplayList3d Procedures
DIRECTORY
Rope,
SVModelTypes,
SVRayTypes,
SVSceneTypes;
DisplayList3dPrivate: DEFINITIONS =
BEGIN
DisplayList Types
Databases, Scenes, Assemblies, and Lightsources
Scene: TYPE = SVSceneTypes.Scene;
Assembly: TYPE = SVSceneTypes.Assembly;
AssemblyList: TYPE = SVSceneTypes.AssemblyList;
LightSourceList: TYPE = SVModelTypes.LightSourceList; -- LIST OF LightSource;
LightSource: TYPE = SVModelTypes.LightSource;
Master Object Types
MasterObject: TYPE = SVSceneTypes.MasterObject;
MasterObjectList: TYPE = LIST OF MasterObject;
Delete Parts of the Scene Tree
In DisplayList3dImplB.mesa
TemporaryRemoveFromAssemblyList:
PROC [a: Assembly, al: AssemblyList, scene: Scene]
RETURNS [newAl: AssemblyList, success:
BOOL];
A simple list remove operation. Does not break up the assembly and its sons, nor does it delete their coordinate systems. This routine is called by MoveToFrontOfAssembly to splice an assembly out of an AssemblyList.
Find Scene Entities from their Names
In DisplayList3dImplA
FindMasterObjectAndNeighborsFromName: PROC [moName: Rope.ROPE, moList: MasterObjectList] RETURNS [beforeMo, mo, afterMo: MasterObjectList, found: BOOL];
FindLightSourceAndNeighborsFromName: PROC [lsName: Rope.ROPE, lsList: LightSourceList] RETURNS [beforeLS, ls, afterLS: LightSourceList];
LightSourceNotFound: SIGNAL;
Restructure the Tree
In DisplayList3dImplB
CopyNeededMasterObjects: PROC [assembly: Assembly, fromScene, toScene: Scene] RETURNS [success: BOOL];
List Append Auxiliaries For the Add Procedures
In DisplayList3dImplA
AppendToMasterObjects: PROC [mo: MasterObject, list: MasterObjectList] RETURNS [MasterObjectList];
Other List Auxiliaries
In DisplayList3dImplB.mesa
RemoveDuplicateMOs: PROC [moList: MasterObjectList] RETURNS [uniqueList: MasterObjectList];
MoListMinusMoList: PROC [moList1, moList2: MasterObjectList] RETURNS [moList1MinusmoList2: MasterObjectList];
CopyMasterObjectList: PROC [moList: MasterObjectList] RETURNS [copy: MasterObjectList];