<> <> <> <> <> DIRECTORY GGBasicTypes, GGCoreTypes, GGInterfaceTypes, GGModelTypes, GGSegmentTypes, GGState, Imager; GGAlign: CEDAR DEFINITIONS = BEGIN AlignBag: TYPE = GGInterfaceTypes.AlignBag; Caret: TYPE = GGInterfaceTypes.Caret; FeatureData: TYPE = GGInterfaceTypes.FeatureData; Filters: TYPE = GGInterfaceTypes.Filters; GGData: TYPE = GGInterfaceTypes.GGData; Line: TYPE = GGCoreTypes.Line; Point: TYPE = GGBasicTypes.Point; Scene: TYPE = GGModelTypes.Scene; SelectionClass: TYPE = GGSegmentTypes.SelectionClass; Sequence: TYPE = GGModelTypes.Sequence; Slice: TYPE = GGModelTypes.Slice; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; SliceParts: TYPE = GGModelTypes.SliceParts; Traj: TYPE = GGModelTypes.Traj; TrajEnd: TYPE = GGModelTypes.TrajEnd; TriggerBag: TYPE = REF TriggerBagObj; TriggerBagObj: TYPE = GGInterfaceTypes.TriggerBagObj; Vector: TYPE = GGBasicTypes.Vector; FilterSliceProc: TYPE = PROC [sliceD: SliceDescriptor, scene: Scene, editConstraints: GGModelTypes.EditConstraints, bezierDrag: GGInterfaceTypes.BezierDragRecord] RETURNS [stationary: SliceDescriptor, someRemoved: BOOL _ FALSE]; <> << [Artwork node; type 'ArtworkInterpress on' to command tool] >> <> emptyTriggerBag: TriggerBag; <> CreateTriggerBag: PROC [] RETURNS [triggerBag: TriggerBag]; <> FlushTriggerBag: PROC [triggerBag: TriggerBag]; <> EmptyTriggerBag: PROC [triggerBag: TriggerBag] RETURNS [BOOL]; CopyTriggerBag: PROC [to, from: TriggerBag]; FeatureWalkProc: TYPE = PROC [feature: FeatureData] RETURNS [done: BOOL _ FALSE]; WalkSliceTriggers: PROC [triggerBag: TriggerBag, walkProc: FeatureWalkProc]; FeatureFromSlice: PROC [slice: Slice, parts: SliceParts _ NIL] RETURNS [feature: FeatureData]; FeatureFromAnchor: PROC [anchor: Caret] RETURNS [feature: FeatureData]; FillStaticTriggerBag: PROC [anchor: Caret, scene: Scene, heuristics: BOOL, triggerBag: TriggerBag]; FillDynamicTriggerBag: PROC [anchor: Caret, scene: Scene, heuristics: BOOL, triggerBag: TriggerBag, editConstraints: GGModelTypes.EditConstraints, bezierDrag: GGInterfaceTypes.BezierDragRecord]; <> <> FillStaticSceneBag: PROC [scene: Scene, sceneBag: TriggerBag]; FillDynamicSceneBag: PROC [scene: Scene, sceneBag: TriggerBag, editConstraints: GGModelTypes.EditConstraints, bezierDrag: GGInterfaceTypes.BezierDragRecord]; <<>> <> <<>> emptyAlignBag: AlignBag; -- an (immutable) empty object bag. CreateAlignBag: PROC [] RETURNS [alignBag: AlignBag]; FlushAlignBag: PROC [alignBag: AlignBag]; EmptyAlignBag: PROC [alignBag: AlignBag] RETURNS [BOOL]; JointAddSlopeLine: PROC [degrees: REAL, point: Point, alignBag: AlignBag] RETURNS [feature: FeatureData]; <> WalkSlopeLines: PROC [alignBag: AlignBag, walkProc: FeatureWalkProc]; <> JointAddCircle: PROC [radius: REAL, point: Point, alignBag: AlignBag] RETURNS [feature: FeatureData]; <> SegmentAddTwoAngleLines: PROC [degrees: REAL, segNum: NAT, lo, hi: Point, alignBag: AlignBag] RETURNS [line1, line2: FeatureData]; <> SegmentAddDistanceLines: PROC [distance: REAL, segNum: NAT, lo, hi: Point, alignBag: AlignBag] RETURNS [line1, line2: FeatureData]; <> FillStaticAlignBag: PROC [triggerBag: TriggerBag, sceneBag: TriggerBag, ggData: GGData, hideAlignments: BOOL, alignBag: AlignBag]; FillDynamicAlignBag: PROC [triggerBag: TriggerBag, sceneBag: TriggerBag, ggData: GGData, hideAlignments: BOOL, action: ATOM, alignBag: AlignBag]; <<>> <> SetStaticBags: PROC [ggData: GGData]; SetStaticTriggerAndAlignBags: PROC [ggData: GGData]; <> SetDynamicBags: PROC [ggData: GGData, action: ATOM]; StaticToDynamicBags: PROC [ggData: GGData, saveForeground: BOOL _ TRUE]; <> DynamicToStaticBags: PROC [ggData: GGData, restoreForeground: BOOL _ TRUE]; UpdateBagsForAdd: PROC [oldAncestor: Slice, newAncestorD: SliceDescriptor, trajEnd: TrajEnd, ggData: GGData] RETURNS [repaintForeground: BOOL]; UpdateBagsForNewSlices: PROC [newSlices: LIST OF Slice, ggData: GGData]; UpdateBagsForDelete: PROC [oldAncestor: Slice, ggData: GGData] RETURNS [repaintForeground: BOOL]; <> FilterLists: TYPE = REF FilterListsObj; FilterListsObj: TYPE = GGState.FilterListsObj; BuiltInFilters: PROC [triggerBag: TriggerBag, ggData: GGData, hideAlignments: BOOL, alignBag: AlignBag]; <> CreateAnchorTrigger: PUBLIC PROC [anchor: Caret, triggerBag: TriggerBag] RETURNS [feature: FeatureData]; <> AddSliceFeature: PROC [sliceD: SliceDescriptor, triggerBag: TriggerBag] RETURNS [newFeature: FeatureData]; <> RemoveMovingSlice: PROC [sliceD: SliceDescriptor, scene: Scene, editConstraints: GGModelTypes.EditConstraints, bezierDrag: GGInterfaceTypes.BezierDragRecord] RETURNS [stationary: SliceDescriptor, someRemoved: BOOL _ FALSE]; <> IncrementalNewTrigger: PROC [trigger: FeatureData, filterLists: FilterLists, hideAlignments: BOOL, alignBag: AlignBag] RETURNS [alignObjects: LIST OF FeatureData]; FilterType: TYPE = {slope, radius, angle, distance}; IncrementalNewFilter: PROC [value: REAL, filterType: FilterType, triggerBag: TriggerBag, hideAlignments: BOOL, alignBag: AlignBag] RETURNS [alignObjects: LIST OF FeatureData]; <> <> RemoveAnchorTrigger: PUBLIC PROC [triggerBag: TriggerBag]; RemoveEntireHotSlice: PROC [slice: Slice, triggerBag: TriggerBag] RETURNS [oldSliceD: SliceDescriptor]; <> RemoveMentionSlice: PROC [slice: Slice, alignBag: AlignBag]; <> <<>> <> CreateLineTable: PROC [ggData: GGData]; -- called by GGWindow.CreateWindow FlushLineTable: PROC [ggData: GGData]; -- called by GGRefreshImpl HasVisibleObjects: PROC [alignBag: AlignBag] RETURNS [BOOL]; DrawFeatureList: PROC [dc: Imager.Context, alignObjects: LIST OF FeatureData, ggData: GGData]; DrawAlignBagRegardless: PROC [dc: Imager.Context, alignBag: AlignBag, ggData: GGData]; <> MakeFiltersGarbage: PROC [filters: Filters]; <> <> <<>> END.