[cairo-commit] cairo/test fill-and-stroke.c, 1.1, 1.2 get-and-set.c, 1.2, 1.3

Carl Worth commit at pdx.freedesktop.org
Tue Apr 26 12:38:08 PDT 2005


Committed by: cworth

Update of /cvs/cairo/cairo/test
In directory gabe:/tmp/cvs-serv6704/test

Modified Files:
	fill-and-stroke.c get-and-set.c 
Log Message:

        Originally: 2005-04-19  Carl Worth  <cworth at cworth.org>

        * src/cairo.h: Add cairo_stroke_preserve, cairo_fill_preserve,
        and cairo_clip_preserve.

        * src/cairoint.h:
        * src/cairo-gstate-private.h:
        * src/cairo-gstate.c: Rip the path out of cairo_gstate_t.

        * src/cairo-private.h: Add path to cairo_t.

        * src/cairo.c: Bring in most of the path code that used to live in
        cairo-gstate.c

        * src/Makefile.am:
        * src/cairo-arc-private.h:
        * src/cairo-arc.c: Move arc generation code into its own file.

        * src/cairo-path-data-private.h:
        * src/cairo-path-data.c: 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.

        * src/cairo-path.c: Prefer cairo_fixed_t parameters over
        ciaro_point_t for cross-file interfaces.

        * src/cairo-ft-font.c: Track changes in _cairo_path_fixed
        interfaces.

        * test/fill-and-stroke.c: (draw): Port to use cairo_fill_preserve
        rather than cairo_save/cairo_restore which no longer work for
        saving the path.

        * test/get-and-set.c: (settings_set), (settings_get),
        (settings_equal): 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.


Index: fill-and-stroke.c
===================================================================
RCS file: /cvs/cairo/cairo/test/fill-and-stroke.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- fill-and-stroke.c	18 Apr 2005 12:25:57 -0000	1.1
+++ fill-and-stroke.c	26 Apr 2005 19:38:06 -0000	1.2
@@ -38,10 +38,8 @@
 draw (cairo_t *cr, int width, int height)
 {
     cairo_rectangle (cr, PAD, PAD, SIZE, SIZE);
-    cairo_save (cr);
     cairo_set_source_rgb (cr, 0, 0, 1);
-    cairo_fill (cr);
-    cairo_restore (cr);
+    cairo_fill_preserve (cr);
     cairo_set_source_rgb (cr, 1, 0, 0);
     cairo_stroke (cr);
 
@@ -51,9 +49,7 @@
 	       PAD + SIZE / 2, PAD + SIZE / 2,
 	       SIZE / 2,
 	       0, 2 * M_PI);
-    cairo_save (cr);
-    cairo_fill (cr);
-    cairo_restore (cr);
+    cairo_fill_preserve (cr);
     cairo_set_source_rgb (cr, 0, 0, 1);
     cairo_stroke (cr);
     

Index: get-and-set.c
===================================================================
RCS file: /cvs/cairo/cairo/test/get-and-set.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- get-and-set.c	29 Mar 2005 08:02:19 -0000	1.2
+++ get-and-set.c	26 Apr 2005 19:38:06 -0000	1.3
@@ -34,14 +34,12 @@
 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 @@
     {
 	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 @@
 {
     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->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 @@
 {
     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




More information about the cairo-commit mailing list