<> <> <> <> <<>> DIRECTORY Imager, ConvexCombiner; CombinePoly: CEDAR DEFINITIONS = BEGIN DBID: TYPE = ConvexCombiner.Vertex; PolyID: TYPE = ConvexCombiner.Vertex; Point: TYPE = ARRAY [1..2] OF REAL; PointGenerator: TYPE = REF PointGeneratorObj; PointGeneratorObj: TYPE; RegionGenerator: TYPE = REF RegionGeneratorObj; RegionGeneratorObj: TYPE; RegionOverlapProc: TYPE = ConvexCombiner.ClientDataCombiner; <> <> <> <> <<>> RegionGlueProc: TYPE = ConvexCombiner.ClientDataEqual; <> <<>> IsAProc: TYPE = ConvexCombiner.IsAProc; <> CreateDatabase: PROC [] RETURNS [dbid: DBID _ NIL] ~ INLINE {}; CreatePolygon: PROC [point1, point2: Point, clientData: REF] RETURNS [polyID: PolyID]; <<[point1, point2] is the initial edge of a polygon whose interior lies to the left of vector [point1, point2], and has associated clientData. >> AddPointToPolygon: PROC [point: Point, polyid: PolyID]; <> PolygonIntoDatabase: PROC [polyID: PolyID, dbid: DBID, overlapHandler: RegionOverlapProc, glueHandler: RegionGlueProc] RETURNS[newDbid: DBID]; <> <> <> MaximalRegions: PROC [dbid: DBID, isA: IsAProc] RETURNS [regionGen: RegionGenerator]; PointAndDone: TYPE = REF PointAndDoneRec; PointAndDoneRec: TYPE = RECORD [ point: Point, done: BOOL ]; NextPoint: PROC [pointGen: PointGenerator] RETURNS [pointAndDone: PointAndDone]; <> OutlineHolesDataAndDone: TYPE = REF OutlineHolesDataAndDoneRec; OutlineHolesDataAndDoneRec: TYPE = RECORD [ outline: PointGenerator, holes: RegionGenerator, data: REF, done: BOOL ]; NextRegion: PROC [regionGen: RegionGenerator] RETURNS [outlineHolesDataAndDone: OutlineHolesDataAndDone]; <> END.