Client:
TYPE ~
RECORD [
mouse: MouseProc ¬ NIL, -- client supplied mouse proc
camera: ControlProc ¬ NIL, -- client supplied camera control proc
draw: DrawProc ¬ NIL, -- client supplied draw proc
destroy: DestroyProc ¬ NIL, -- client supplied destroy proc
animate: AnimateProc ¬ NIL, -- client supplied animation proc
stop: StopProc ¬ NIL, -- response to STOP button
change: ChangeProc ¬ NIL, -- response to active tool change
data: REF ANY ¬ NIL -- client supplied data
];
Operations:
TYPE
~
RECORD
[
lines: BOOL ¬ FALSE, -- provide Line Drawing Ops button
render: BOOL ¬ FALSE, -- provide Render Ops button
shape: BOOL ¬ FALSE, -- provide Shape Ops button
scene: BOOL ¬ FALSE, -- provide Scene Ops button
texture: BOOL ¬ FALSE, -- provide Texture Ops button
light: BOOL ¬ FALSE, -- provide Light Ops button
io: BOOL ¬ FALSE, -- provide IO Ops button
animation: BOOL ¬ FALSE, -- provide Animation Ops button
stop: BOOL ¬ FALSE, -- provide Stop button
help: BOOL ¬ FALSE -- provide Help button
];
ToolRep:
TYPE ~
RECORD [
Book-keeping:
ops: Operations ¬ allOps, -- generic operations supported by tool
directory: ROPE ¬ NIL, -- directory whence tool was made
name: ROPE ¬ NIL, -- name of tool
cmd: CommandHandle ¬ NIL, -- commander
command: ROPE ¬ NIL, -- to execute after forked process
process: Process ¬ NIL, -- the current, forked process
clock: REAL ¬ 0.0, -- for timing
props: PropList ¬ NIL, -- miscellaneous storage
Client Supplied:
client: Client ¬ [], -- one client per tool
Viewer Miscellany:
outer: Viewer ¬ NIL, -- parent viewer
graphics: Viewer ¬ NIL, -- graphical viewer
bounds: Rectangle ¬ [0,0,0,0], -- for subsequent draw use
outerData: OuterData ¬ NIL, -- Control's data record
camera: CameraControl ¬ NIL, -- viewing control
controls: ControlList ¬ NIL, -- list of controls
buttons: ButtonList ¬ NIL, -- menu
typescript: Typescript ¬ NIL, -- for user IO
displayMode: DisplayMode ¬ lined, -- lines or shaded regions?
ipStrokeWidth: REAL ¬ 2.0, -- for interpress output
Views:
views: ViewSequence ¬ NIL, -- multiple views
activeViews: LIST OF NAT ¬ NIL, -- currently controlled view
The Sprite:
sprite: Triple ¬ [], -- user-positionable 3d sprite
spritePlane: Plane ¬ [], -- plane in which sprite moves
drawSprite: BOOL ¬ FALSE, -- display 3d sprite
Line Drawing:
buffering: Buffering ¬ default, -- single, double or depends
background: Triple ¬ [1.0, 1.0, 1.0], -- background color for line drawing
nVerticesAndPolys: NAT ¬ 0, -- used to estimate display time
previousDisplayTime: REAL ¬ 0.0, -- in seconds
drawOptions: DrawOptions ¬ [], -- draw for drawing the shape
drawPendant: BOOL ¬ FALSE, -- if display of axes "pendant"
drawClient: BOOL ¬ TRUE, -- draw any client graphics
forInterpress: BOOL ¬ FALSE, -- if output is to an ip file
drawCurves: BOOL ¬ FALSE, -- draw shape as curves
queryVertices: BOOL ¬ FALSE, -- interactively query vertex info
timing: BOOL ¬ FALSE, -- if display line-drawing time
drawLights: BOOL ¬ FALSE, -- draw light sources
drawAxes: BOOL ¬ FALSE, -- x, y, z axes (also for rendering)
previousWhatChanged: REF ANY ¬ NIL, -- previous reason for paint
Rendering:
context3d: Context3d ¬ NIL, -- for shaded imaging
color: BOOL ¬ FALSE, -- or black/white?
rMap, gMap, bMap: SampleMap ¬ NIL, -- to buffer image
lights: LightSequence ¬ NIL, -- lights for shaded images
frameSize: IntegerPair ¬ [400, 300], -- render size
unixSpawn: REF SpawnData ¬ NIL, -- spawn data for Unix renderer
ribMode: RIBMode ¬ spawn, -- spawn or via file
annotation: BOOL ¬ FALSE, -- if annotate rendered images
autoRender: BOOL ¬ FALSE, -- if render image when new view
antiAliasing: BOOL ¬ FALSE, -- if anti-aliasing
depthBuffering: BOOL ¬ FALSE, -- if z-buffer
normalCoding: BOOL ¬ FALSE, -- if normal encoding is on
textureFiltering: BOOL ¬ FALSE, -- sum area tables if true
Selection
hitList: LIST OF NAT, -- indices into shape list
Shapes and Hierarchy
shapes: ShapeSequence ¬ NIL, -- central shape collection
selectedLight: INT ¬ -1, -- index to currently selected light
selectedShape: INT ¬ -1, -- index to currently selected shape
selectedVertex: INT ¬ -1, -- currently selected vertex
timeTree: TimeTree ¬ NIL, -- root of the time tree
focusNode: TTNode ¬ NIL, -- the currently active time tree node
Animation:
time0: REAL ¬ 0.0, -- time at first frame of animation
time1: REAL ¬ 0.0, -- time at last frame of animation
nFrames: NAT ¬ 0, -- number of frames in animation
time: REAL ¬ 0.0, -- the current time
frame: NAT ¬ 0, -- current frame of animation
playbackPause: REAL ¬ 0.0, -- if positive, just run-through
playback: Animation ¬ NIL, -- the current animation
animations: Animations ¬ NIL, -- saved for possible playback
animateIPName: ROPE ¬ NIL -- root for ip file(s)
];