DIRECTORY GGBasicTypes, GGInterfaceTypes, GGModelTypes, Imager, ImagerFont, ImagerTransformation, Interpress, NodeStyle, Rope, ViewerClasses; GGSlice: CEDAR DEFINITIONS IMPORTS Imager = BEGIN EntityGenerator: TYPE = GGModelTypes.EntityGenerator; BoundBox: TYPE = GGModelTypes.BoundBox; Color: TYPE = Imager.Color; DisplayStyle: TYPE = GGInterfaceTypes.DisplayStyle; Point: TYPE = GGBasicTypes.Point; PointGenerator: TYPE = GGModelTypes.PointGenerator; PointPairGenerator: TYPE = GGModelTypes.PointPairGenerator; Scene: TYPE = GGModelTypes.Scene; Slice: TYPE = GGModelTypes.Slice; SliceClass: TYPE = GGModelTypes.SliceClass; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; Vector: TYPE = GGBasicTypes.Vector; Viewer: TYPE = ViewerClasses.Viewer; SliceBoundBoxProc: TYPE = GGModelTypes.SliceBoundBoxProc; SliceCopyProc: TYPE = GGModelTypes.SliceCopyProc; SliceDrawPartsProc: TYPE = GGModelTypes.SliceDrawPartsProc; SliceDrawTransformProc: TYPE = GGModelTypes.SliceDrawTransformProc; SliceDrawSelectionFeedbackProc: TYPE = GGModelTypes.SliceDrawSelectionFeedbackProc; SliceDrawAttractorFeedbackProc: TYPE = GGModelTypes.SliceDrawAttractorFeedbackProc; SliceTransformProc: TYPE = GGModelTypes.SliceTransformProc; SliceDescribeProc: TYPE = GGModelTypes.SliceDescribeProc; SliceFileoutProc: TYPE = GGModelTypes.SliceFileoutProc; SliceFileinProc: TYPE = GGModelTypes.SliceFileinProc; SliceEmptyPartsProc: TYPE = GGModelTypes.SliceEmptyPartsProc; SliceNewPartsProc: TYPE = GGModelTypes.SliceNewPartsProc; SliceUnionPartsProc: TYPE = GGModelTypes.SliceUnionPartsProc; SliceDifferencePartsProc: TYPE = GGModelTypes.SliceDifferencePartsProc; SliceMovingPartsProc: TYPE = GGModelTypes.SliceMovingPartsProc; SliceFixedPartsProc: TYPE = GGModelTypes.SliceFixedPartsProc; SliceAugmentPartsProc: TYPE = GGModelTypes.SliceAugmentPartsProc; SlicePointsInDescriptorProc: TYPE = GGModelTypes.SlicePointsInDescriptorProc; SlicePointPairsInDescriptorProc: TYPE = GGModelTypes.SlicePointPairsInDescriptorProc; SliceNextPointProc: TYPE = GGModelTypes.SliceNextPointProc; SliceNextPointPairProc: TYPE = GGModelTypes.SliceNextPointPairProc; SliceClosestPointProc: TYPE = GGModelTypes.SliceClosestPointProc; SliceClosestPointAndTangentProc: TYPE = GGModelTypes.SliceClosestPointAndTangentProc; SliceClosestSegmentProc: TYPE = GGModelTypes.SliceClosestSegmentProc; SliceLineIntersectionProc: TYPE = GGModelTypes.SliceLineIntersectionProc; SliceCircleIntersectionProc: TYPE = GGModelTypes.SliceCircleIntersectionProc; SliceHitDataAsSimpleCurveProc: TYPE = GGModelTypes.SliceHitDataAsSimpleCurveProc; SliceSetStrokeWidthProc: TYPE = GGModelTypes.SliceSetStrokeWidthProc; SliceGetStrokeWidthProc: TYPE = GGModelTypes.SliceGetStrokeWidthProc; SliceSetStrokeColorProc: TYPE = GGModelTypes.SliceSetStrokeColorProc; SliceGetStrokeColorProc: TYPE = GGModelTypes.SliceGetStrokeColorProc; SliceSetFillColorProc: TYPE = GGModelTypes.SliceSetFillColorProc; SliceGetFillColorProc: TYPE = GGModelTypes.SliceGetFillColorProc; SliceSetArrowsProc: TYPE = GGModelTypes.SliceSetArrowsProc; SliceGetArrowsProc: TYPE = GGModelTypes.SliceGetArrowsProc; NotFound: SIGNAL; FontNameError: SIGNAL; RegisterSliceClass: PROC [class: SliceClass]; FetchSliceClass: PROC [name: ATOM] RETURNS [class: SliceClass]; CopySlice: PROC [slice: Slice] RETURNS [copy: Slice]; DeleteSlice: PROC [scene: Scene, slice: Slice]; EntitiesInSlice: PROC [slice: Slice] RETURNS [entityGenerator: EntityGenerator]; BuildTextSliceClass: PROC [] RETURNS [class: SliceClass]; MakeTextSlice: PROC [text: Rope.ROPE, color: Imager.Color _ Imager.black, 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, prefix: Rope.ROPE, family: Rope.ROPE, face: Rope.ROPE, fontName: Rope.ROPE, scale: REAL _ 1.0, fontScale: REAL _ 1.0, transform: ImagerTransformation.Transformation, feedback: ViewerClasses.Viewer] RETURNS [ success: BOOL _ TRUE]; GetFontValues: PROC [slice: Slice] RETURNS [prefix, family, face: Rope.ROPE, transform: ImagerTransformation.Transformation, preferredSize: REAL]; GetFontValuesRope: PROC [slice: Slice] RETURNS [values: Rope.ROPE]; GetText: PROC [slice: Slice] RETURNS [text: Rope.ROPE]; AppendText: PROC [slice: Slice, text: Rope.ROPE]; BackspaceText: PROC [slice: Slice]; SetTextAmplifySpace: PROC [slice: Slice, amplifySpace: REAL, feedback: ViewerClasses.Viewer]; GetTextAmplifySpace: PROC [slice: Slice] RETURNS [amplifySpace: REAL]; SetTextColor: PROC [slice: Slice, color: Imager.Color, colorName: Rope.ROPE]; GetTextColor: PROC [slice: Slice] RETURNS [color: Imager.Color, colorName: Rope.ROPE]; FontParamsFromFontName: PROC [fontName: Rope.ROPE] RETURNS [fontFamily: ATOM, fontFace: NodeStyle.FontFace, fontSize: REAL]; DropShadowOn: PROC [slice: Slice, offset: Vector]; DropShadowOff: PROC [slice: 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]; MakeBoxSlice: PROC [box: BoundBox, corner: Corner, transform: ImagerTransformation.Transformation, strokeWidth: REAL _ 2.0] RETURNS [sliceD: SliceDescriptor]; BuildCircleSliceClass: PROC [] RETURNS [class: SliceClass]; MakeCircleSlice: PROC [origin: Point, outerPoint: Point, strokeWidth: REAL _ 2.0, strokeColor: Imager.Color _ Imager.black, fillColor: Imager.Color _ NIL] RETURNS [sliceD: SliceDescriptor]; BuildIPSliceClass: PROC [] RETURNS [class: SliceClass]; MakeIPSliceFromMaster: PROC [ipMaster: Interpress.Master, pixelsPerUnit: REAL _ 2834.646, fullName: Rope.ROPE _ NIL, feedback: Viewer, transform: ImagerTransformation.Transformation _ NIL, localBox: BoundBox _ NIL, includeByValue: BOOL] RETURNS [slice: Slice]; MakeIPSliceFromMaskPixel: PROC [pa: Imager.PixelArray, color: Color, feedback: Viewer, 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, feedback: Viewer, transform: ImagerTransformation.Transformation _ NIL] RETURNS [slice: Slice]; SetIncludeByValue: PROC [slice: Slice, includeByValue: BOOL]; GetIncludeByValue: PROC [slice: Slice] RETURNS [includeByValue: BOOL]; NoOpBoundBox: SliceBoundBoxProc; NoOpCopy: SliceCopyProc; NoOpDrawParts: SliceDrawPartsProc; NoOpDrawTransform: SliceDrawTransformProc; NoOpDrawSelectionFeedback: SliceDrawSelectionFeedbackProc; NoOpDrawAttractorFeedback: SliceDrawAttractorFeedbackProc; NoOpTransform: SliceTransformProc; NoOpDescribe: SliceDescribeProc; NoOpFileout: SliceFileoutProc; NoOpFilein: SliceFileinProc; NoOpEmptyParts: SliceEmptyPartsProc; NoOpNewParts: SliceNewPartsProc; NoOpUnionParts: SliceUnionPartsProc; NoOpDifferenceParts: SliceDifferencePartsProc; NoOpMovingParts: SliceMovingPartsProc; NoOpFixedParts: SliceFixedPartsProc; NoOpAugmentParts: SliceAugmentPartsProc; NoOpPointsInDescriptor: SlicePointsInDescriptorProc; NoOpPointPairsInDescriptor: SlicePointPairsInDescriptorProc; NoOpNextPoint: SliceNextPointProc; NoOpNextPointPair: SliceNextPointPairProc; NoOpClosestPoint: SliceClosestPointProc; NoOpClosestPointAndTangent: SliceClosestPointAndTangentProc; NoOpClosestSegment: SliceClosestSegmentProc; NoOpLineIntersection: SliceLineIntersectionProc; NoOpCircleIntersection: SliceCircleIntersectionProc; NoOpHitDataAsSimpleCurve: SliceHitDataAsSimpleCurveProc; NoOpSetStrokeWidth: SliceSetStrokeWidthProc; NoOpGetStrokeWidth: SliceGetStrokeWidthProc; NoOpSetStrokeColor: SliceSetStrokeColorProc; NoOpGetStrokeColor: SliceGetStrokeColorProc; NoOpSetFillColor: SliceSetFillColorProc; NoOpGetFillColor: SliceGetFillColorProc; NoOpSetArrows: SliceSetArrowsProc; NoOpGetArrows: SliceGetArrowsProc; END. τGGSlice.mesa Copyright c 1986, 1987 by Xerox Corporation. All rights reserved. Last edited by Bier on January 28, 1987 8:54:06 pm PST Contents: Implements the various slice classes in Gargoyle. Pier, February 3, 1987 11:55:45 am PST Creation and Queries about Slice Classes Creation, Modification and Queries about Slices Text Slices MakeTextSlice MUST BE FOLLOWED BY A CALL TO SetTextFont !! The text slice's font will be set to the desired prefix, family, and face (face may be NIL to denote the "regular" face). If transform=NIL, the existing slice transformation will be factored and the translation component will be retained; i.e. the SetTextFont will have the effect of changing the font and font size but retaining the origin of the text. Previous rotation/scaling will be lost. The new text transformation will use the old translation component and the new value of scale. The font will be itself scaled by the value fontScale. If transform#NIL, the old text transformation is replaced by the new transform, scale is ignored, and fontScale is simply stored in the textData. A fontName is a font designation with family, size, and face, like Helvetica23BI or TimesRoman6. A colorName is a name from the color naming system in the Cedar ColorTool. may raise FontStringError Box Slices A box is a slice which maintains its rectilinear properties. It is possible to select/drag one of four corners, one of four edges, or the entire box. When a corner is dragged, box is rubberbanded to keep its box shape. When an edge is dragged, only the perpendicular component of the drag vector is used to move the edge, thus maintaining box shape. When the entire box is selected (traj or topLevel), it can be translated and rotated. transform defaults to the identity. Circle Slices Interpress Slices pixelsPerUnit explains what the unit was when the interpress master was made. The default value is for meters. NoOp Class Routines In GGSliceImplC.NoOpBoundBox Drawing Transforming Textual Description Hit Testing Style Κu˜codešœ ™ KšœB™BKšœ3Οk™6KšΟnœ4™