[cairo] [PATCH] tessellator: Fixed to produce an output box with x1 <= x2 for single box input
Taekyun Kim
podain77 at gmail.com
Wed Jun 15 07:23:02 PDT 2011
Winding of a box is toggled by swapping x1, x2 coordinates. So
we have to swap those coordinate rather than just copying.
Many routines assume that boxes are left-top to right-bottom
convention. So tessellator should produce such output boxes.
---
src/cairo-bentley-ottmann-rectangular.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/src/cairo-bentley-ottmann-rectangular.c b/src/cairo-bentley-ottmann-rectangular.c
index 88986bb..9a4dcd9 100644
--- a/src/cairo-bentley-ottmann-rectangular.c
+++ b/src/cairo-bentley-ottmann-rectangular.c
@@ -739,6 +739,13 @@ _cairo_bentley_ottmann_tessellate_boxes (const cairo_boxes_t *in,
if (unlikely (in->num_boxes == 1)) {
cairo_box_t box = in->chunks.base[0];
_cairo_boxes_clear (out);
+
+ if (box.p1.x > box.p2.x) {
+ cairo_fixed_t tmp = box.p1.x;
+ box.p1.x = box.p2.x;
+ box.p2.x = tmp;
+ }
+
status = _cairo_boxes_add (out, &box);
assert (status == CAIRO_STATUS_SUCCESS);
return CAIRO_STATUS_SUCCESS;
--
1.7.1
More information about the cairo
mailing list