diff options
Diffstat (limited to 'Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c')
-rw-r--r-- | Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c b/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c index cb2e30c8a96..65f95d79705 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c @@ -593,12 +593,6 @@ sweep_line_insert (sweep_line_t *sweep, rectangle_t *rectangle) pqueue_push (sweep, rectangle); } -static int -sweep_line_setjmp (sweep_line_t *sweep_line) -{ - return setjmp (sweep_line->unwind); -} - static cairo_status_t _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles, int num_rectangles, @@ -609,15 +603,17 @@ _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles, sweep_line_t sweep_line; rectangle_t *rectangle; cairo_status_t status; - cairo_bool_t update = FALSE; + cairo_bool_t update; sweep_line_init (&sweep_line, rectangles, num_rectangles, fill_rule, do_traps, container); - if ((status = sweep_line_setjmp (&sweep_line))) + if ((status = setjmp (sweep_line.unwind))) return status; + update = FALSE; + rectangle = rectangle_pop_start (&sweep_line); do { if (rectangle->top != sweep_line.current_y) { @@ -678,10 +674,19 @@ _cairo_bentley_ottmann_tessellate_rectangular_traps (cairo_traps_t *traps, cairo_status_t status; int i; - if (unlikely (traps->num_traps <= 1)) + assert (traps->is_rectangular); + + if (unlikely (traps->num_traps <= 1)) { + if (traps->num_traps == 1) { + cairo_trapezoid_t *trap = traps->traps; + if (trap->left.p1.x > trap->right.p1.x) { + cairo_line_t tmp = trap->left; + trap->left = trap->right; + trap->right = tmp; + } + } return CAIRO_STATUS_SUCCESS; - - assert (traps->is_rectangular); + } dump_traps (traps, "bo-rects-traps-in.txt"); |