summaryrefslogtreecommitdiff
path: root/test/get-and-set.c
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2005-04-26 12:38:06 +0000
committerCarl Worth <cworth@cworth.org>2005-04-26 12:38:06 +0000
commit1baa4d132903e21395dc66ca792164e2ef8885d2 (patch)
tree4b95e9a13ee0b7bcab4a9f22d919e493376d16eb /test/get-and-set.c
parent618792c8c041ee2004acf1ff411e0adbe94a3e63 (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.c37
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