[cairo] intersect_lines in Bentley Ottman implementation
M Joonas Pihlaja
jpihlaja at cc.helsinki.fi
Sun Jun 1 15:37:06 PDT 2008
Hi,
It's a little annoying I can't test for the bug using the client
side API. Filling is masked by pixman as mentioned before, and
cairo_in_fill() doesn't expose it either. Below is a patch that
doesn't introduce failures in the test suite and fixes the wrong
trap generation.
The broken and fixed tessellations are visible here (flip through
the pages, note the last trap in the broken version):
http://www.discontinuity.info/~rowan/broke-star.ps
http://www.discontinuity.info/~rowan/fixed-star.ps
Joonas
diff --git a/src/cairo-bentley-ottmann.c
b/src/cairo-bentley-ottmann.c
index 208da7c..a2c55a2 100644
--- a/src/cairo-bentley-ottmann.c
+++ b/src/cairo-bentley-ottmann.c
@@ -1214,7 +1214,7 @@ _active_edges_to_traps (cairo_bo_edge_t *head,
int in_out = 0;
cairo_bo_edge_t *edge;
- for (edge = head; edge && edge->next; edge = edge->next) {
+ for (edge = head; edge; edge = edge->next) {
if (fill_rule == CAIRO_FILL_RULE_WINDING) {
if (edge->reversed)
in_out++;
More information about the cairo
mailing list