diff options
author | Carl Worth <cworth@cworth.org> | 2005-04-26 12:38:06 +0000 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2005-04-26 12:38:06 +0000 |
commit | 1baa4d132903e21395dc66ca792164e2ef8885d2 (patch) | |
tree | 4b95e9a13ee0b7bcab4a9f22d919e493376d16eb /test/get-and-set.c | |
parent | 618792c8c041ee2004acf1ff411e0adbe94a3e63 (diff) |
Originally: 2005-04-19 Carl Worth <cworth@cworth.org>
Add cairo_stroke_preserve, cairo_fill_preserve, and cairo_clip_preserve.
Rip the path out of cairo_gstate_t.
Add path to cairo_t.
Bring in most of the path code that used to live in cairo-gstate.c
Move arc generation code into its own file.
Accept path+ctm_inverse+tolerance instead of gstate. Absorb flattening and device space->user space conversion that used to be in _cairo_gstate_intepret_path.
Prefer cairo_fixed_t parameters over ciaro_point_t for cross-file interfaces.
Track changes in _cairo_path_fixed interfaces.
Port to use cairo_fill_preserve rather than cairo_save/cairo_restore which no longer work for saving the path.
Remove get and set of current point since it is no longer affected by cairo_save and cairo_restore. Add get and set testing for cairo_matrix_t.
Diffstat (limited to 'test/get-and-set.c')
-rw-r--r-- | test/get-and-set.c | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/test/get-and-set.c b/test/get-and-set.c index c7d54a67d..72d661047 100644 --- a/test/get-and-set.c +++ b/test/get-and-set.c @@ -34,14 +34,12 @@ cairo_test_t test = { typedef struct { cairo_operator_t operator; double tolerance; - double point_x; - double point_y; cairo_fill_rule_t fill_rule; double line_width; cairo_line_cap_t line_cap; cairo_line_join_t line_join; double miter_limit; - /* XXX: Add cairo_matrix_t here when it is exposed */ + cairo_matrix_t matrix; } settings_t; /* Two sets of settings, no defaults */ @@ -49,24 +47,22 @@ settings_t settings[] = { { CAIRO_OPERATOR_IN, 2.0, - 12.3, - 4.56, CAIRO_FILL_RULE_EVEN_ODD, 7.7, CAIRO_LINE_CAP_SQUARE, CAIRO_LINE_JOIN_ROUND, - 3.14 + 3.14, + {1.0, 2.0, 3.0, 4.0, 5.0, 6.0} }, { CAIRO_OPERATOR_ATOP, 5.25, - 99.99, - 0.001, CAIRO_FILL_RULE_WINDING, 2.17, CAIRO_LINE_CAP_ROUND, CAIRO_LINE_JOIN_BEVEL, - 1000.0 + 1000.0, + {.1, .01, .001, .0001, .00001, .000001} } }; @@ -75,12 +71,12 @@ settings_set (cairo_t *cr, settings_t *settings) { cairo_set_operator (cr, settings->operator); cairo_set_tolerance (cr, settings->tolerance); - cairo_move_to (cr, settings->point_x, settings->point_y); cairo_set_fill_rule (cr, settings->fill_rule); cairo_set_line_width (cr, settings->line_width); cairo_set_line_cap (cr, settings->line_cap); cairo_set_line_join (cr, settings->line_join); cairo_set_miter_limit (cr, settings->miter_limit); + cairo_set_matrix (cr, &settings->matrix); } static void @@ -88,21 +84,12 @@ settings_get (cairo_t *cr, settings_t *settings) { settings->operator = cairo_get_operator (cr); settings->tolerance = cairo_get_tolerance (cr); - cairo_get_current_point (cr, &settings->point_x, &settings->point_y); settings->fill_rule = cairo_get_fill_rule (cr); settings->line_width = cairo_get_line_width (cr); settings->line_cap = cairo_get_line_cap (cr); settings->line_join = cairo_get_line_join (cr); settings->miter_limit = cairo_get_miter_limit (cr); -} - -/* Maximum error is one part of our fixed-point grid */ -#define EPSILON (1.0 / 65536.0) - -static int -DOUBLES_WITHIN_EPSILON(double a, double b) { - double delta = fabs(a - b); - return delta < EPSILON; + cairo_get_matrix (cr, &settings->matrix); } static int @@ -110,13 +97,17 @@ settings_equal (settings_t *a, settings_t *b) { return (a->operator == b->operator && a->tolerance == b->tolerance && - DOUBLES_WITHIN_EPSILON (a->point_x, b->point_x) && - DOUBLES_WITHIN_EPSILON (a->point_y, b->point_y) && a->fill_rule == b->fill_rule && a->line_width == b->line_width && a->line_cap == b->line_cap && a->line_join == b->line_join && - a->miter_limit == b->miter_limit); + a->miter_limit == b->miter_limit && + a->matrix.xx == b->matrix.xx && + a->matrix.xy == b->matrix.xy && + a->matrix.x0 == b->matrix.x0 && + a->matrix.yx == b->matrix.yx && + a->matrix.yy == b->matrix.yy && + a->matrix.y0 == b->matrix.y0); } static cairo_test_status_t |