<> <> <> <> 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: BOOL _ TRUE]; IncludeInstanceList: PROC [design: CD.Design, il: CD.InstanceList, draw: BOOL _ TRUE]; RemoveInstance: PROC [design: CD.Design, inst: CD.Instance, draw: BOOL _ TRUE]; ReOrderInstance: PROC [design: CD.Design, inst: CD.Instance]; IncludeObjectI: PROC[design: CD.Design, ob: CD.Object, location: CD.Position _ [0, 0], orientation: CD.Orientation _ CD.original]; <<--conveniant procedure; sets selection according to internal mode>> QuickDrawDesign: PROC [design: CD.Design, pr: CD.DrawRef]; <<--shortcuts are taken; suits the implementation of viewers>> <<--inclusive selection>> DrawDesign: PROC [design: CD.Design, pr: CD.DrawRef]; <<--ommit selection>> <<--no shortcuts, usefull on abstract devices>> Redraw: PROC [design: CD.Design, r: CD.Rect_all, eraseFirst: BOOL_TRUE]; <<--Refreshes the the area r in all viewers>> DelayedRedraw: PROC [design: CD.Design, r: CD.Rect_all, eraseFirst: BOOL_TRUE]; <<--Refreshes the the area r in all viewers>> <<--Is delayed until the current command is finished>> <<--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.>> all: PRIVATE CD.Rect = [FIRST[CD.Number], FIRST[CD.Number], LAST[CD.Number], LAST[CD.Number]]; DoTheDelayedRedraws: PROC [design: CD.Design]; <<--does the DelayedRedraw's which have not yet been done>> <<--should be called from the command sequencer>> RedrawInstance: PROC [design: CD.Design, inst: CD.Instance_NIL, erase: BOOL_TRUE]; <<--redraws the instance (delayed)>> SetInstList: PROC [design: CD.Design, instList: CD.InstanceList _ NIL] = INLINE { design^.actual.first.specific.contents _ instList }; 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>> ObjectInfo: PROC[ob: CD.Object] RETURNS [Rope.ROPE]; LayerName: PROC[layer: CD.Layer] RETURNS [Rope.ROPE]; END.