diff options
author | Jeff Muizelaar <jmuizelaar@mozilla.com> | 2010-11-05 11:40:00 -0400 |
---|---|---|
committer | Jeff Muizelaar <jmuizelaar@mozilla.com> | 2010-11-05 11:40:00 -0400 |
commit | e9bb70d2dee4ef7a54e3971f09a08df30c2b5287 (patch) | |
tree | 905e60cb696a41fad498ef68f7ae7313306578b5 /test/get-path-extents.c | |
parent | 91a6fe64236985d30f5794d760698deafd9e6511 (diff) | |
download | cairo-e9bb70d2dee4ef7a54e3971f09a08df30c2b5287.tar.gz |
Fix degenerate vertical path bounds.
6b77567b6ef28710c7707ab82c7fa95c810152d1 made vertical
path bounds with no area return extents of 0,0. This fixes
the problem by not assuming degenerate path bounds are 0,0
Diffstat (limited to 'test/get-path-extents.c')
-rw-r--r-- | test/get-path-extents.c | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/test/get-path-extents.c b/test/get-path-extents.c index a3e9554d1..3a05eff7a 100644 --- a/test/get-path-extents.c +++ b/test/get-path-extents.c @@ -61,10 +61,6 @@ check_extents (const cairo_test_context_t *ctx, if (cairo_status (cr)) return 1; - /* let empty rects match */ - if ((ext_x1 == ext_x2 || ext_y1 == ext_y2) && (width == 0 || height == 0)) - return 1; - switch (relation) { default: case EQUALS: @@ -152,14 +148,16 @@ draw (cairo_t *cr, int width, int height) phase = "Degenerate arc (R=0)"; errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); + /*XXX: I'd expect these extents to be oriented at 200, 400 */ + errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 0, 0, 0, 0); cairo_new_path (cr2); cairo_arc (cr2, 200, 400, 10., 0, 0); phase = "Degenerate arc (Θ=0)"; errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 200, 400, 0, 0); + /*XXX: I'd expect these extents to be oriented at 200, 400 */ + errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 0, 0, 0, 0); cairo_new_path (cr2); cairo_restore (cr2); @@ -191,7 +189,7 @@ draw (cairo_t *cr, int width, int height) cairo_restore (cr2); /* http://bugs.freedesktop.org/show_bug.cgi?id=7965 */ - phase = "A vertical, open path"; + phase = "A horizontal, open path"; cairo_save (cr2); cairo_set_line_cap (cr2, CAIRO_LINE_CAP_ROUND); cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND); @@ -199,7 +197,33 @@ draw (cairo_t *cr, int width, int height) cairo_line_to (cr2, 750, 180); errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, -5, 175, 760, 10); - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 0, 180, 755, 0); + errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 0, 180, 750, 0); + cairo_new_path (cr2); + cairo_restore (cr2); + + phase = "A vertical, open path"; + cairo_save (cr2); + cairo_set_line_cap (cr2, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND); + cairo_new_path (cr2); + cairo_move_to (cr2, 180, 0); + cairo_line_to (cr2, 180, 750); + errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 175, -5, 10, 760); + errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 180, 0, 0, 750); + cairo_new_path (cr2); + cairo_restore (cr2); + + phase = "A degenerate open path"; + cairo_save (cr2); + cairo_set_line_cap (cr2, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND); + cairo_new_path (cr2); + cairo_move_to (cr2, 180, 0); + cairo_line_to (cr2, 180, 0); + errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 175, -5, 10, 10); + errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 180, 0, 0, 0); cairo_new_path (cr2); cairo_restore (cr2); |