<> <> <> <> <> <> <> <<>> DIRECTORY GGCoreTypes, Imager, ImagerTransformation; GGBoundBox: CEDAR DEFINITIONS = BEGIN BoundBox: TYPE = GGCoreTypes.BoundBox; Point: TYPE = Imager.VEC; Vector: TYPE = Imager.VEC; emptyBoundBox: BoundBox; -- [loX, loY: LargestNumber, hiX, hiY: SmallestNormalizedNumber] <> <<>> CreateBoundBox: PROC [loX, loY, hiX, hiY: REAL, null: BOOL _ FALSE, infinite: BOOL _ FALSE] RETURNS [bBox: BoundBox]; NullBoundBox: PROC [] RETURNS [bBox: BoundBox]; CopyBoundBox: PROC [bBox: BoundBox] RETURNS [copy: BoundBox]; BoundBoxOfBoxes: PROC [list: LIST OF BoundBox] RETURNS [bigBox: BoundBox]; BoundBoxOfBoundBox: PROC [box: BoundBox, transform: ImagerTransformation.Transformation] RETURNS [newBox: BoundBox]; BoundBoxFromRectangle: PROC [rect: Imager.Rectangle] RETURNS [bBox: BoundBox]; RectangleFromBoundBox: PROC [bBox: BoundBox] RETURNS [rect: Imager.Rectangle]; BoundBoxOfPixelArray: PROC [pa: Imager.PixelArray] RETURNS [bBox: BoundBox]; <> BoundBoxOfBitMap: PROC [base: LONG POINTER, wordsPerLine: NAT, sMin, fMin, sSize, fSize: NAT, tx, ty: INTEGER _ 0] RETURNS [bBox: BoundBox]; <> <<>> <<>> <> <<>> EnlargeByBox: PROC [bBox: BoundBox, by: BoundBox]; EnlargeByPoint: PROC [bBox: BoundBox, point: Point]; EnlargeByVector: PROC [bBox: BoundBox, vector: Vector]; <> EnlargeByOffset: PROC [bBox: BoundBox, offset: REAL]; <> UpdateBoundBox: PROC [bBox: BoundBox, loX, loY, hiX, hiY: REAL]; UpdateBoundBoxOfBoundBox: PROC [bBox: BoundBox, localBox: BoundBox, transform: ImagerTransformation.Transformation]; UpdateCopyBoundBox: PROC [bBox: BoundBox, from: BoundBox]; <> <> <<>> PointIsInBox: PROC [test: Point, box: GGCoreTypes.BoundBoxObj] RETURNS [BOOL]; <> <> PointIsInGrownBox: PROC [test: Point, box: BoundBox, offset: REAL] RETURNS [BOOL]; <> Centroid: PROC [box: BoundBox] RETURNS [centroid: Point, success: BOOL]; <> <<>> EraseWithinBoundBox: PROC [dc: Imager.Context, bBox: BoundBox]; Clip: PROC [dc: Imager.Context, bBox: BoundBox]; <> MaskArray: TYPE = ARRAY[0..4) OF BOOL; NearestPoint: PROC [bBox: BoundBox, testPoint: Point, tolerance: REAL _ 1E6, mask: MaskArray _ ALL[TRUE]] RETURNS [bestDist: REAL, bestJoint: NAT, bestPoint: Point, success: BOOL]; NearestSegment: PROC [bBox: BoundBox, testPoint: Point, tolerance: REAL _ 1E6, mask: MaskArray _ ALL[TRUE]] RETURNS [bestDist: REAL, bestSeg: NAT, bestPoint: Point, success: BOOL]; END.