aboutsummaryrefslogtreecommitdiff
path: root/generic
diff options
context:
space:
mode:
authorlecoanet2005-04-14 09:13:43 +0000
committerlecoanet2005-04-14 09:13:43 +0000
commitdde87984292bf32907a34052c2283497252eeb5f (patch)
tree5b6ca59cd62f25eae20605d715d2df95c5a45559 /generic
parent46ea8bc12e435b7ca6593bc43498ef6aae3e261a (diff)
downloadtkzinc-dde87984292bf32907a34052c2283497252eeb5f.zip
tkzinc-dde87984292bf32907a34052c2283497252eeb5f.tar.gz
tkzinc-dde87984292bf32907a34052c2283497252eeb5f.tar.bz2
tkzinc-dde87984292bf32907a34052c2283497252eeb5f.tar.xz
Fix a cumulative over-estimate of Curves bboxes (D.etienne)
Diffstat (limited to 'generic')
-rw-r--r--generic/Curve.c20
-rw-r--r--generic/Geo.c10
2 files changed, 18 insertions, 12 deletions
diff --git a/generic/Curve.c b/generic/Curve.c
index 261f242..aa66b70 100644
--- a/generic/Curve.c
+++ b/generic/Curve.c
@@ -806,16 +806,6 @@ ComputeCoordinates(ZnItem item,
}
/*
- * Add the line width in all directions.
- * This overestimates the space needed to draw the polyline
- * but is simple.
- */
- item->item_bounding_box.orig.x -= lw;
- item->item_bounding_box.orig.y -= lw;
- item->item_bounding_box.corner.x += lw;
- item->item_bounding_box.corner.y += lw;
-
- /*
* Take care of miters, markers and arrows.
*/
c2 = cv->outlines.contours;
@@ -868,6 +858,16 @@ ComputeCoordinates(ZnItem item,
}
/*
+ * Add the line width in all directions.
+ * This overestimates the space needed to draw the polyline
+ * but is simple.
+ */
+ item->item_bounding_box.orig.x -= lw;
+ item->item_bounding_box.orig.y -= lw;
+ item->item_bounding_box.corner.x += lw;
+ item->item_bounding_box.corner.y += lw;
+
+ /*
* Expand again the bounding box by one pixel in all
* directions to take care of rounding errors.
*/
diff --git a/generic/Geo.c b/generic/Geo.c
index 52ac268..d93c5e9 100644
--- a/generic/Geo.c
+++ b/generic/Geo.c
@@ -439,8 +439,14 @@ ZnAddPointsToBBox(ZnBBox *bbox,
}
bbox->orig.x = x1;
bbox->orig.y = y1;
- bbox->corner.x = x2 + 1;
- bbox->corner.y = y2 + 1;
+ if (x1 == x2) {
+ x2++;
+ }
+ if (y1 == y2) {
+ y2++;
+ }
+ bbox->corner.x = x2;
+ bbox->corner.y = y2;
}