<> <> <> <> <> <> <> <<>> DIRECTORY Feedback, FeedbackTypes, FS, GGBasicTypes, GGBoundBox, GGCoreOps, GGCoreTypes, GGHistoryTypes, GGInterfaceTypes, GGModelTypes, GGOutline, GGParent, GGParseIn, GGParseOut, GGScene, GGSegmentTypes, GGSequence, GGShapes, GGSlice, GGSliceOps, GGTraj, GGUtility, Imager, ImagerPath, ImagerTransformation, IO, Rope, TextNode, TiogaImager; GGOutlineImplA: CEDAR PROGRAM IMPORTS Feedback, FS, GGBoundBox, GGCoreOps, GGOutline, GGParent, GGParseIn, GGParseOut, GGScene, GGSequence, GGShapes, GGSlice, GGSliceOps, GGTraj, GGUtility, Imager, IO, Rope EXPORTS GGSlice, GGOutline, GGParent = BEGIN AlignBag: TYPE = GGInterfaceTypes.AlignBag; BitVector: TYPE = GGBasicTypes.BitVector; BoundBox: TYPE = GGCoreTypes.BoundBox; Camera: TYPE = GGModelTypes.Camera; Circle: TYPE = GGBasicTypes.Circle; Color: TYPE = Imager.Color; ControlPointGenerator: TYPE = GGModelTypes.ControlPointGenerator; DefaultData: TYPE = GGModelTypes.DefaultData; EditConstraints: TYPE = GGModelTypes.EditConstraints; FeatureData: TYPE = GGInterfaceTypes.FeatureData; MsgRouter: TYPE = FeedbackTypes.MsgRouter; GGData: TYPE = GGInterfaceTypes.GGData; HistoryEvent: TYPE = GGHistoryTypes.HistoryEvent; HitType: TYPE = GGModelTypes.TrajPartType; Joint: TYPE = GGSegmentTypes.Joint; JointGenerator: TYPE = GGModelTypes.JointGenerator; Line: TYPE = GGCoreTypes.Line; OutlineData: TYPE = GGOutline.OutlineData; OutlineDataObj: TYPE = GGOutline.OutlineDataObj; OutlineHitData: TYPE = GGOutline.OutlineHitData; OutlineHitDataObj: TYPE = GGOutline.OutlineHitDataObj; OutlineParts: TYPE = GGOutline.OutlineParts; OutlinePartsObj: TYPE = GGOutline.OutlinePartsObj; Point: TYPE = GGBasicTypes.Point; PointAndDone: TYPE = GGModelTypes.PointAndDone; PointGenerator: TYPE = GGModelTypes.PointGenerator; PointGeneratorObj: TYPE = GGModelTypes.PointGeneratorObj; PointPairAndDone: TYPE = GGModelTypes.PointPairAndDone; PointPairGenerator: TYPE = GGModelTypes.PointPairGenerator; PointPairGeneratorObj: TYPE = GGModelTypes.PointPairGeneratorObj; PointWalkProc: TYPE = GGModelTypes.PointWalkProc; Scene: TYPE = GGModelTypes.Scene; Segment: TYPE = GGSegmentTypes.Segment; SegmentGenerator: TYPE = GGModelTypes.SegmentGenerator; SegmentGeneratorObj: TYPE = GGModelTypes.SegmentGeneratorObj; SelectionClass: TYPE = GGSegmentTypes.SelectionClass; SelectMode: TYPE = GGModelTypes.SelectMode; SequenceGenerator: TYPE = GGSequence.SequenceGenerator; SequenceOfReal: TYPE = GGCoreTypes.SequenceOfReal; Slice: TYPE = GGModelTypes.Slice; SliceClass: TYPE = GGModelTypes.SliceClass; SliceClassObj: TYPE = GGModelTypes.SliceClassObj; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; SliceDescriptorGenerator: TYPE = GGModelTypes.SliceDescriptorGenerator; SliceGenerator: TYPE = GGModelTypes.SliceGenerator; SliceObj: TYPE = GGModelTypes.SliceObj; SliceParts: TYPE = GGModelTypes.SliceParts; StrokeEnd: TYPE = Imager.StrokeEnd; StrokeJoint: TYPE = Imager.StrokeJoint; Traj: TYPE = GGModelTypes.Traj; TrajData: TYPE = GGModelTypes.TrajData; TrajEnd: TYPE = GGModelTypes.TrajEnd; TrajParts: TYPE = GGModelTypes.TrajParts; TrajPartType: TYPE = GGModelTypes.TrajPartType; Transformation: TYPE = ImagerTransformation.Transformation; TriggerBag: TYPE = GGInterfaceTypes.TriggerBag; Vector: TYPE = GGBasicTypes.Vector; WalkProc: TYPE = GGModelTypes.WalkProc; MoveToProc: TYPE = ImagerPath.MoveToProc; LineToProc: TYPE = ImagerPath.LineToProc; CurveToProc: TYPE = ImagerPath.CurveToProc; ConicToProc: TYPE = ImagerPath.ConicToProc; ArcToProc: TYPE = ImagerPath.ArcToProc; ClusterData: TYPE = REF ClusterDataObj; ClusterDataObj: TYPE = GGSlice.ClusterDataObj; Problem: PUBLIC SIGNAL [msg: Rope.ROPE] = Feedback.Problem; <> <<>> BuildOutlineSliceClass: PUBLIC PROC [] RETURNS [class: SliceClass] = { class _ NEW[SliceClassObj _ [ type: $Outline, unlink: GGParent.Unlink, <> getBoundBox: GGParent.GetBoundBox, getTransformedBoundBox: GGSlice.GenericTransformedBoundBox, getTightBox: GGParent.GetTightBox, copy: OutlineCopy, restore: GGParent.Restore, <> buildPath: OutlineBuildPath, drawBorder: OutlineDrawBorder, drawParts: OutlineDrawParts, drawTransform: OutlineDrawTransform, drawSelectionFeedback: OutlineDrawSelectionFeedback, drawAttractorFeedback: GGParent.DrawAttractorFeedback, attractorFeedbackBoundBox: GGParent.AttractorFeedbackBoundBox, saveSelections: GGParent.SaveSelections, remakeSelections: GGParent.RemakeSelections, <> transform: GGParent.Transform, <> describe: OutlineDescribe, describeHit: GGParent.DescribeHit, fileout: OutlineFileout, filein: OutlineFilein, <> isEmptyParts: GGParent.IsEmptyParts, isCompleteParts: GGParent.IsCompleteParts, newParts: GGParent.NewParts, unionParts: GGParent.UnionParts, differenceParts: GGParent.DifferenceParts, movingParts: OutlineMovingParts, augmentParts: GGParent.AugmentParts, alterParts: GGParent.AlterParts, setSelectedFields: GGParent.SetSelectedFields, <> pointsInDescriptor: GGParent.PointsInDescriptor, walkPointsInDescriptor: GGParent.WalkPointsInDescriptor, pointPairsInDescriptor: GGParent.PointPairsInDescriptor, segmentsInDescriptor: GGParent.SegmentsInDescriptor, walkSegments: GGParent.WalkSegments, nextPoint: GGParent.NextPoint, nextPointPair: GGParent.NextPointPair, nextSegment: GGParent.NextSegment <<, <> <> closestPoint: GGParent.ClosestPoint, closestJointToHitData: GGParent.ClosestJointToHitData, closestPointAndTangent: GGSlice.NoOpClosestPointAndTangent, closestSegment: GGParent.ClosestSegment, lineIntersection: GGParent.LineIntersection, circleIntersection: GGParent.CircleIntersection, hitDataAsSimpleCurve: GGParent.HitDataAsSimpleCurve, <