CDOps.mesa (part of ChipNDale)
Copyright © 1983, 1984 by Xerox Corporation. All rights reserved.
by Christian Jacobi, February 24, 1984 2:03 pm
last edited by Christian Jacobi, May 28, 1985 2:12:16 pm PDT
DIRECTORY
CD,
Rope USING [ROPE];
CDOps: CEDAR DEFINITIONS =
BEGIN
CreateDesign: PROC [technology: CD.Technology] RETURNS [design: CD.Design];
--does not open a viewer
ResetDesign: PROC [design: CD.Design];
IncludeInstance: PROC [design: CD.Design, inst: CD.Instance, draw: BOOLTRUE];
IncludeInstanceList: PROC [design: CD.Design, il: CD.InstanceList, draw: BOOLTRUE];
RemoveInstance: PROC [design: CD.Design, inst: CD.Instance, draw: BOOLTRUE];
ReOrderInstance: PROC [design: CD.Design, inst: CD.Instance];
AddAnObject: PROC[design: CD.Design, ob: CD.Object,
location: CD.Position, orientation: CD.Orientation←CD.original];
--conveniant procedure; sets selection according to internal mode
QuickDrawDesign: PROC [design: CD.Design, pr: CD.DrawRef];
--inclusive selection
DrawDesign: PROC [design: CD.Design, pr: CD.DrawRef];
--ommit selection
Redraw: PROC [design: CD.Design, r: CD.Rect𡤊ll, eraseFirst: BOOLTRUE];
DelayedRedraw: PROC [design: CD.Design, r: CD.Rect𡤊ll, eraseFirst: BOOLTRUE];
--efficiency hint: if a lot of small rectangles need to be redrawn, it can be more efficiant
--  to call a redraw of a big rectangle first.
DoTheDelayedRedraws: PROC [design: CD.Design];
--does the DelayedRedraw'swhich have not yet been done
all: PRIVATE CD.Rect = [FIRST[CD.Number], FIRST[CD.Number], LAST[CD.Number], LAST[CD.Number]];
SetInstList: PROC [design: CD.Design, appList: CD.InstanceList ← NIL] =
INLINE {design^.actual.first.specific.contents ← appList};
InstList: PROC [design: CD.Design] RETURNS [CD.InstanceList] =
INLINE {RETURN[design^.actual.first.specific.contents]};
PointedInstance: PROC [design: CD.Design, pos: CD.Position]
RETURNS [CD.Instance];
SelectedInstance: PROC [design: CD.Design]
RETURNS [first: CD.Instance, multiple: BOOL];
--first: returns ref to any selected application if there is one or more, otherwise nil.
--multiple: more than one application is selected
Info: PROC[ob: CD.Object] RETURNS [Rope.ROPE];
LayerName: PROC[lev: CD.Layer] RETURNS [Rope.ROPE];
END.
--Remark
--All procedures do not queue; proper synchronization by the caller is assumed.