<> <> <> <> <> <> <> <<>> DIRECTORY FeedbackTypes, GGBasicTypes, GGFont, GGHistoryTypes, GGModelTypes, GGSegmentTypes, Imager, ImagerTransformation, Interpress, Rope, TextNode, TiogaImager; GGSlice: CEDAR DEFINITIONS IMPORTS Imager = BEGIN OPEN GGModelTypes; BoundBox: TYPE = GGModelTypes.BoundBox; Color: TYPE = Imager.Color; Camera: TYPE = GGModelTypes.Camera; DisplayStyle: TYPE = GGModelTypes.DisplayStyle; MsgRouter: TYPE = FeedbackTypes.MsgRouter; FontData: TYPE = GGFont.FontData; HistoryEvent: TYPE = GGHistoryTypes.HistoryEvent; Point: TYPE = GGBasicTypes.Point; PointGenerator: TYPE = GGModelTypes.PointGenerator; PointPairGenerator: TYPE = GGModelTypes.PointPairGenerator; Segment: TYPE = GGSegmentTypes.Segment; SegmentGenerator: TYPE = GGModelTypes.SegmentGenerator; SelectionClass: TYPE = GGSegmentTypes.SelectionClass; Slice: TYPE = GGModelTypes.Slice; SliceClass: TYPE = GGModelTypes.SliceClass; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; SliceGenerator: TYPE = GGModelTypes.SliceGenerator; SliceParts: TYPE = GGModelTypes.SliceParts; StrokeEnd: TYPE = Imager.StrokeEnd; Vector: TYPE = GGBasicTypes.Vector; WalkProc: TYPE = GGModelTypes.WalkProc; NotFound: SIGNAL; FontNameError: SIGNAL; <> RegisterSliceClass: PROC [class: SliceClass]; FetchSliceClass: PROC [name: ATOM] RETURNS [class: SliceClass]; <> DescriptorFromParts: PROC [slice: Slice, parts: SliceParts] RETURNS [sliceD: SliceDescriptor]; EntitiesInSlice: PROC [slice: Slice] RETURNS [entityGenerator: SliceGenerator]; <> ClusterData: TYPE = REF ClusterDataObj; ClusterDataObj: TYPE = RECORD [ frozen: BOOL _ TRUE ]; CreateCluster: PROC [frozen: BOOL _ TRUE] RETURNS [parent: Slice]; AddChildToCluster: PROC [parent: Slice, child: Slice, priority: INT]; AddChildrenToCluster: PROC [parent: Slice, children: LIST OF Slice, priority: INT]; RemoveChild: PROC [parent: Slice, child: Slice] RETURNS [newParent: Slice]; PruneNullClusters: PROC [scene: Scene, cluster: Slice]; SetFrozen: PROC [cluster: Slice, frozen: BOOL]; GetFrozen: PROC [cluster: Slice] RETURNS [frozen: BOOL]; <> BuildClusterSliceClass: PROC [] RETURNS [class: SliceClass]; BuildMoreClusterSliceClass: PROC [class: SliceClass]; -- for internal communication only <<>> <> <<>> BuildTextSliceClass: PROC [] RETURNS [class: SliceClass]; MakeTextSlice: PROC [text: Rope.ROPE, color: Imager.Color, displayStyle: DisplayStyle, amplifySpace: REAL _ 1.0, dropShadowsOn: BOOL _ FALSE, dropShadowOffset: Vector _ [0.0, 0.0], shadowColor: Imager.Color _ Imager.black] RETURNS [slice: Slice]; <> SetTextFont: PROC [slice: Slice, fontData: FontData, router: MsgRouter, history: HistoryEvent] RETURNS [ success: BOOL _ TRUE]; <> SetTextFontAndTransform: PROC [slice: Slice, fontData: FontData, router: MsgRouter, history: HistoryEvent] RETURNS [ success: BOOL _ TRUE]; <> GetFontData: PROC [slice: Slice] RETURNS [fontData: FontData]; GetFontDataRope: PROC [slice: Slice] RETURNS [Rope.ROPE]; GetFontLiteralDataRope: PROC [slice: Slice] RETURNS [Rope.ROPE]; GetLooksDataRope: PROC [slice: Slice] RETURNS [Rope.ROPE]; IsWhitespace: PROC [slice: Slice] RETURNS [BOOL]; GetText: PROC [slice: Slice] RETURNS [text: Rope.ROPE]; SetText: PROC [slice: Slice, text: Rope.ROPE]; AppendText: PROC [slice: Slice, text: Rope.ROPE]; BackspaceText: PROC [slice: Slice, word: BOOL _ FALSE]; SetTextAmplifySpace: PROC [slice: Slice, amplifySpace: REAL, router: MsgRouter, history: HistoryEvent]; GetTextAmplifySpace: PROC [slice: Slice] RETURNS [amplifySpace: REAL]; SetTextColors: PROC [slice: Slice, textColor: Imager.Color, useTextColor: BOOL _ TRUE, shadowColor: Imager.Color, useShadowColor: BOOL _ FALSE, history: HistoryEvent]; GetTextColors: PROC [slice: Slice] RETURNS [textColor, shadowColor: Imager.Color]; GetTextDropShadow: PROC [slice: Slice] RETURNS [dropShadowOn: BOOL, dropShadow: Vector, color: Imager.Color]; DropShadowOn: PROC [slice: Slice, offset: Vector, history: HistoryEvent]; DropShadowOff: PROC [slice: Slice, history: HistoryEvent]; <> <> GetTextLineSpacing: PROC [slice: Slice] RETURNS [REAL]; SetTextLineSpacing: PROC [slice: Slice, lineSpacing: REAL, history: HistoryEvent]; SetTextDisplayStyle: PROC [slice: Slice, displayStyle: DisplayStyle, history: HistoryEvent]; OutlinesFromTextString: PROC [slice: Slice] RETURNS [shadowOutlines, outlines: LIST OF Slice]; <> <<>> <> <<>> Corner: TYPE = {none, ll, ul, ur, lr}; -- lower left, upper left, upper right, lower right Edge: TYPE = {none, left, right, top, bottom}; BuildBoxSliceClass: PROC [] RETURNS [class: SliceClass]; <> MakeBoxFromMaskPixel: PROC [pa: Imager.PixelArray, color: Color, router: MsgRouter, transform: ImagerTransformation.Transformation _ NIL] RETURNS [slice: Slice]; MakeBoxSlice: PROC [box: BoundBox, corner: Corner, transform: ImagerTransformation.Transformation] RETURNS [sliceD: SliceDescriptor]; BoxFetchSegment: PROC [slice: Slice, index: NAT] RETURNS [seg: Segment]; SetBoxText: PROC [slice: Slice, loc: TextNode.Location, screenStyle: BOOL _ FALSE, history: HistoryEvent]; GetBoxText: PROC [slice: Slice] RETURNS [loc: TextNode.Location, screenStyle: BOOL]; GetBoxNodes: PROC [slice: Slice] RETURNS [nodes: TiogaImager.FormattedNodes]; RenderText: PROC [dc: Imager.Context, slice: GGModelTypes.Slice, camera: Camera, quick: BOOL]; <> <<>> <> BuildCircleSliceClass: PROC [] RETURNS [class: SliceClass]; MakeCircleSlice: PROC [origin: Point, outerPoint: Point] RETURNS [sliceD: SliceDescriptor]; CircleGetParams: PROC [slice: Slice] RETURNS [origin: Point, outerPoint: Point, transform: ImagerTransformation.Transformation]; -- used by MatchTool <> <<>> BuildIPSliceClass: PROC [] RETURNS [class: SliceClass]; MakeIPSliceFromMaster: PROC [ipMaster: Interpress.Master, pixelsPerUnit: REAL _ 2834.646, fullName: Rope.ROPE _ NIL, router: MsgRouter, transform: ImagerTransformation.Transformation _ NIL, localTightBox: BoundBox _ NIL, localBox: BoundBox _ NIL, includeByValue: BOOL] RETURNS [slice: Slice]; <> MakeIPSliceFromMaskPixel: PROC [pa: Imager.PixelArray, color: Color, router: MsgRouter, transform: ImagerTransformation.Transformation _ NIL] RETURNS [slice: Slice]; MakeIPSliceFromMaskBits: PROC [base: LONG POINTER, wordsPerLine: NAT, sMin, fMin, sSize, fSize: NAT, tx, ty: INTEGER _ 0, color: Color, router: MsgRouter, transform: ImagerTransformation.Transformation _ NIL] RETURNS [slice: Slice]; SetIncludeByValue: PROC [slice: Slice, includeByValue: BOOL, history: HistoryEvent]; GetIncludeByValue: PROC [slice: Slice] RETURNS [includeByValue: BOOL]; SetDefaultUseLatestIPVersion: PROC [useLatestIPVersion: BOOL]; <> GetDefaultUseLatestIPVersion: PROC [] RETURNS [useLatestIPVersion: BOOL]; <> <> <<>> BuildTrajSliceClass: PROC [] RETURNS [class: SliceClass]; BuildMoreTrajSliceClass: PROC [class: SliceClass]; -- for internal communication only BuildOutlineSliceClass: PROC [] RETURNS [class: SliceClass]; BuildMoreOutlineSliceClass: PROC [class: SliceClass]; -- for internal communication only TrajShapeChangeNotify: PROC [slice: Slice]; -- calls KillBoundBox and invalidates the polyline approximation <<>> <> <<>> copyRestore: BOOL; -- temporary for test Restore procs. in GGSliceImplA.copyRestore KillBoundBox: PROC [slice: Slice]; -- invalidate cached bound box and tight box in ancestor caches KillBoundBoxOnly: PROC [slice: Slice]; -- invalidate cached bound box in ancestor caches KillTightBoxOnly: PROC [slice: Slice]; -- invalidate cached tight box in ancestor caches UnlinkSlice: PROC [slice: Slice]; <> <> <> <<>> NoOpBoundBox: SliceBoundBoxProc; NoOpTransformedBoundBox: SliceTransformedBoundBoxProc; NoOpTightBox: SliceTightBoxProc; NoOpCopy: SliceCopyProc; <> NoOpBuildPath: SliceBuildPathProc; NoOpDrawBorder: SliceDrawBorderProc; NoOpDrawParts: SliceDrawPartsProc; NoOpDrawTransform: SliceDrawTransformProc; NoOpDrawSelectionFeedback: SliceDrawSelectionFeedbackProc; NoOpDrawAttractorFeedback: SliceDrawAttractorFeedbackProc; NoOpAttractorFeedbackBoundBox: SliceAttractorFeedbackBoundBoxProc; <> NoOpSaveSelections: SliceSaveSelectionsProc; NoOpRemakeSelections: SliceRemakeSelectionsProc; NoOpTransform: SliceTransformProc; <> NoOpDescribe: SliceDescribeProc; NoOpDescribeHit: SliceDescribeHitProc; NoOpFileout: SliceFileoutProc; NoOpFilein: SliceFileinProc; <> NoOpEmptyParts: SliceIsEmptyPartsProc; NoOpIsCompleteParts: SliceIsCompletePartsProc; NoOpNewParts: SliceNewPartsProc; NoOpUnionParts: SliceUnionPartsProc; NoOpDifferenceParts: SliceDifferencePartsProc; NoOpMovingParts: SliceMovingPartsProc; NoOpAugmentParts: SliceAugmentPartsProc; NoOpAlterParts: SliceAlterPartsProc; NoOpSetSelectedFields: SliceSetSelectedFieldsProc; NoOpPointsInDescriptor: SlicePointsInDescriptorProc; NoOpPointPairsInDescriptor: SlicePointPairsInDescriptorProc; NoOpSegmentsInDescriptor: SliceSegmentsInDescriptorProc; NoOpWalkSegments: SliceWalkSegmentsProc; NoOpNextPoint: SliceNextPointProc; NoOpNextPointPair: SliceNextPointPairProc; NoOpNextSegment: SliceNextSegmentProc; NoOpClosestPoint: SliceClosestPointProc; NoOpClosestJointToHitData: SliceClosestJointToHitDataProc; NoOpClosestPointAndTangent: SliceClosestPointAndTangentProc; NoOpClosestSegment: SliceClosestSegmentProc; NoOpFilledPathsUnderPoint: SliceFilledPathsUnderPointProc; NoOpLineIntersection: SliceLineIntersectionProc; NoOpCircleIntersection: SliceCircleIntersectionProc; NoOpHitDataAsSimpleCurve: SliceHitDataAsSimpleCurveProc; <