From d95d8ba2efb36377ea88392be4dfcf928f804d82 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Mon, 8 Jul 2019 20:36:48 -0400 Subject: [PATCH] Corrected the generation of bounding box positions from a GDS boundary layer, which was being saved in GDS coordinates, not magic database coordinates. --- cif/CIFrdcl.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cif/CIFrdcl.c b/cif/CIFrdcl.c index 1ddbfb8e..d9809ec2 100644 --- a/cif/CIFrdcl.c +++ b/cif/CIFrdcl.c @@ -700,8 +700,31 @@ cifMakeBoundaryFunc(tile, clientdata) Rect area; char propertyvalue[128], *storedvalue; + int savescale; TiToRect(tile, &area); + area.r_xtop = CIFScaleCoord(area.r_xtop, COORD_EXACT); + savescale = cifCurReadStyle->crs_scaleFactor; + area.r_ytop = CIFScaleCoord(area.r_ytop, COORD_EXACT); + if (savescale != cifCurReadStyle->crs_scaleFactor) + { + area.r_xtop *= (savescale / cifCurReadStyle->crs_scaleFactor); + savescale = cifCurReadStyle->crs_scaleFactor; + } + area.r_xbot = CIFScaleCoord(area.r_xbot, COORD_EXACT); + if (savescale != cifCurReadStyle->crs_scaleFactor) + { + area.r_xtop *= (savescale / cifCurReadStyle->crs_scaleFactor); + area.r_ytop *= (savescale / cifCurReadStyle->crs_scaleFactor); + savescale = cifCurReadStyle->crs_scaleFactor; + } + area.r_ybot = CIFScaleCoord(area.r_ybot, COORD_EXACT); + if (savescale != cifCurReadStyle->crs_scaleFactor) + { + area.r_xtop *= (savescale / cifCurReadStyle->crs_scaleFactor); + area.r_ytop *= (savescale / cifCurReadStyle->crs_scaleFactor); + area.r_xbot *= (savescale / cifCurReadStyle->crs_scaleFactor); + } if (cifReadCellDef->cd_flags & CDFIXEDBBOX) CIFReadError("Warning: Cell %s boundary was redefined.\n", @@ -712,6 +735,7 @@ cifMakeBoundaryFunc(tile, clientdata) storedvalue = StrDup((char **)NULL, propertyvalue); DBPropPut(cifReadCellDef, "FIXED_BBOX", storedvalue); cifReadCellDef->cd_flags |= CDFIXEDBBOX; + return 0; } /* Paint CIF layer geometry into the current cell def as magic layer "type" */