[cairo-commit] 4 commits - perf/cairo-perf.c perf/cairo-perf.h perf/Makefile.am perf/zrusin-another.h perf/zrusin.c src/cairo-gstate.c src/cairoint.h src/cairo-matrix.c src/cairo-pattern.c test/Makefile.am

Carl Worth cworth at kemper.freedesktop.org
Tue Nov 7 02:00:48 PST 2006


 perf/Makefile.am      |    3 
 perf/cairo-perf.c     |  166 ++++++++++--
 perf/cairo-perf.h     |    8 
 perf/zrusin-another.h |  668 ++++++++++++++++++++++++++++++++++++++++++++++++++
 perf/zrusin.c         |   90 ++++++
 src/cairo-gstate.c    |    9 
 src/cairo-matrix.c    |   43 +--
 src/cairo-pattern.c   |   19 -
 src/cairoint.h        |    4 
 test/Makefile.am      |    2 
 10 files changed, 934 insertions(+), 78 deletions(-)

New commits:
diff-tree fc584e1fbb87752f6123fbc02c1c27e538dd13f0 (from 777eaf326a56bb3b2ec3e6408309336d2bf6754f)
Author: Carl Worth <cworth at cworth.org>
Date:   Tue Nov 7 01:42:21 2006 -0800

    Rewrite _cairo_matrix_transform_bounding_box to actually accept a box not a rectangle
    
    It turns out that all of the callers want a box anyway, so this
    simplfies the code in addition to being more honest to the name.
    
    (For those new to the convention, a "box" is an (x1,y2),(x2,y2)
    pair while a "rectangle" is an (x,y),(width,height) pair.)

diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c
index 5e411d7..8568186 100644
--- a/src/cairo-gstate.c
+++ b/src/cairo-gstate.c
@@ -712,17 +712,12 @@ _cairo_gstate_backend_to_user_rectangle 
                                          double *x2, double *y2,
                                          cairo_bool_t *is_tight)
 {
-    double width = *x2 - *x1;
-    double height = *y2 - *y1;
     cairo_matrix_t matrix_inverse;
 
     cairo_matrix_multiply (&matrix_inverse, &gstate->ctm_inverse,
                            &gstate->target->device_transform_inverse);
-    _cairo_matrix_transform_bounding_box (
-        &matrix_inverse, x1, y1, &width, &height, is_tight);
-
-    *x2 = *x1 + width;
-    *y2 = *y1 + height;
+    _cairo_matrix_transform_bounding_box (&matrix_inverse,
+					  x1, y1, x2, y2, is_tight);
 }
 
 /* XXX: NYI
diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c
index 339079f..e2f353b 100644
--- a/src/cairo-matrix.c
+++ b/src/cairo-matrix.c
@@ -357,35 +357,30 @@ slim_hidden_def(cairo_matrix_transform_p
 
 void
 _cairo_matrix_transform_bounding_box (const cairo_matrix_t *matrix,
-				      double *x, double *y,
-				      double *width, double *height,
+				      double *x1, double *y1,
+				      double *x2, double *y2,
 				      cairo_bool_t *is_tight)
 {
     int i;
     double quad_x[4], quad_y[4];
-    double dx1, dy1;
-    double dx2, dy2;
     double min_x, max_x;
     double min_y, max_y;
 
-    quad_x[0] = *x;
-    quad_y[0] = *y;
+    quad_x[0] = *x1;
+    quad_y[0] = *y1;
     cairo_matrix_transform_point (matrix, &quad_x[0], &quad_y[0]);
 
-    dx1 = *width;
-    dy1 = 0;
-    cairo_matrix_transform_distance (matrix, &dx1, &dy1);
-    quad_x[1] = quad_x[0] + dx1;
-    quad_y[1] = quad_y[0] + dy1;
-
-    dx2 = 0;
-    dy2 = *height;
-    cairo_matrix_transform_distance (matrix, &dx2, &dy2);
-    quad_x[2] = quad_x[0] + dx2;
-    quad_y[2] = quad_y[0] + dy2;
-
-    quad_x[3] = quad_x[0] + dx1 + dx2;
-    quad_y[3] = quad_y[0] + dy1 + dy2;
+    quad_x[1] = *x2;
+    quad_y[1] = *y1;
+    cairo_matrix_transform_point (matrix, &quad_x[1], &quad_y[1]);
+
+    quad_x[2] = *x1;
+    quad_y[2] = *y2;
+    cairo_matrix_transform_point (matrix, &quad_x[2], &quad_y[2]);
+
+    quad_x[3] = *x2;
+    quad_y[3] = *y2;
+    cairo_matrix_transform_point (matrix, &quad_x[3], &quad_y[3]);
 
     min_x = max_x = quad_x[0];
     min_y = max_y = quad_y[0];
@@ -402,10 +397,10 @@ _cairo_matrix_transform_bounding_box (co
 	    max_y = quad_y[i];
     }
 
-    *x = min_x;
-    *y = min_y;
-    *width = max_x - min_x;
-    *height = max_y - min_y;
+    *x1 = min_x;
+    *y1 = min_y;
+    *x2 = max_x;
+    *y2 = max_y;
     
     if (is_tight) {
         /* it's tight if and only if the four corner points form an axis-aligned
diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c
index 9589b34..3c7f483 100644
--- a/src/cairo-pattern.c
+++ b/src/cairo-pattern.c
@@ -1173,20 +1173,17 @@ _cairo_pattern_acquire_surface_for_surfa
 	     * clone only that portion of the surface that will be
 	     * read. */
 	    if (! _cairo_matrix_is_identity (&attr->matrix)) {
-		double src_x = x;
-		double src_y = y;
-		double src_width = width;
-		double src_height = height;
-		double x2, y2;
+		double x1 = x;
+		double y1 = y;
+		double x2 = x + width;
+		double y2 = y + height;
 		cairo_bool_t is_tight;
 
-		_cairo_matrix_transform_bounding_box  (&attr->matrix, &src_x, &src_y,
-						       &src_width, &src_height,
+		_cairo_matrix_transform_bounding_box  (&attr->matrix,
+						       &x1, &y1, &x2, &y2,
 						       &is_tight);
-		x2 = src_x + src_width;
-		y2 = src_y + src_height;
-		x = floor (src_x);
-		y = floor (src_y);
+		x = floor (x1);
+		y = floor (y1);
 		width = ceil (x2) - x;
 		height = ceil (y2) - y;
 	    }
diff --git a/src/cairoint.h b/src/cairoint.h
index 06fc8d4..ed0beee 100755
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -2173,8 +2173,8 @@ _cairo_matrix_get_affine (const cairo_ma
 
 cairo_private void
 _cairo_matrix_transform_bounding_box (const cairo_matrix_t *matrix,
-				      double *x, double *y,
-				      double *width, double *height,
+				      double *x1, double *y1,
+				      double *x2, double *y2,
 				      cairo_bool_t *is_tight);
 
 cairo_private void
diff-tree 777eaf326a56bb3b2ec3e6408309336d2bf6754f (from 0564b5074c431c3e723d906769b5383eddae659d)
Author: Carl Worth <cworth at cworth.org>
Date:   Tue Nov 7 01:33:40 2006 -0800

    test/Makefile.am: Fix typo in EXTRA_DIST that was breaking distcheck

diff --git a/test/Makefile.am b/test/Makefile.am
index 69b70f4..fd21236 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -179,7 +179,7 @@ clip-nesting-rgb24-ref.png				\
 clip-nesting-ps-argb32-ref.png				\
 clip-operator-ref.png					\
 clip-operator-rgb24-ref.png				\
-clip-push-group-ref					\
+clip-push-group-ref.png					\
 clip-twice-ref.png					\
 clip-twice-rgb24-ref.png				\
 clip-twice-ps-argb32-ref.png				\
diff-tree 0564b5074c431c3e723d906769b5383eddae659d (from 49b72f004d4de50de86f7f350ce01aa5b48f35ae)
Author: Carl Worth <cworth at cworth.org>
Date:   Tue Nov 7 01:29:38 2006 -0800

    cairo-perf: Add command line options for test cases to run, listing tests, and new raw mode.

diff --git a/perf/cairo-perf.c b/perf/cairo-perf.c
index d6df218..ee23ba8 100644
--- a/perf/cairo-perf.c
+++ b/perf/cairo-perf.c
@@ -28,6 +28,11 @@
 
 #include "cairo-perf.h"
 
+/* For getopt */
+#include <unistd.h>
+/* For basename */
+#include <libgen.h>
+
 #define CAIRO_PERF_ITERATIONS_DEFAULT	100
 #define CAIRO_PERF_LOW_STD_DEV		0.03
 #define CAIRO_PERF_STABLE_STD_DEV_COUNT	5
@@ -98,7 +103,7 @@ _content_to_string (cairo_content_t cont
 
 typedef struct _stats
 {
-    double min;
+    cairo_perf_ticks_t min;
     double median;
     double mean;
     double std_dev;
@@ -200,6 +205,30 @@ cairo_perf_run (cairo_perf_t		*perf,
     stats_t stats = {0.0, 0.0};
     int low_std_dev_count;
 
+    if (perf->num_names) {
+	for (i = 0; i < perf->num_names; i++)
+	    if (strstr (name, perf->names[i]))
+		goto NAME_FOUND;
+	return;
+    }
+  NAME_FOUND:
+
+    if (perf->list_only) {
+	printf ("%s\n", name);
+	return;
+    }
+
+    if (first_run) {
+	if (perf->raw)
+	    printf ("[ # ] %s-%-s %s %s ...\n",
+		    "backend", "content", "test-size", "time(ticks)");
+	else
+	    printf ("[ # ] %8s-%-4s %28s %8s %8s %5s %5s %s\n",
+		    "backend", "content", "test-size", "min(ticks)", "min(ms)", "median(ms)",
+		    "stddev.", "iterations");
+	first_run = FALSE;
+    }
+
     times = xmalloc (perf->iterations * sizeof (cairo_perf_ticks_t));
 
     /* We run one iteration in advance to warm caches, etc. */
@@ -211,42 +240,117 @@ cairo_perf_run (cairo_perf_t		*perf,
 	cairo_perf_yield ();
 	times[i] = (perf_func) (perf->cr, perf->size, perf->size);
 
-	if (i >= CAIRO_STATS_MIN_VALID_SAMPLES) {
-	    status = _compute_stats (times, i+1, &stats);
-	    if (status == CAIRO_STATS_STATUS_NEED_MORE_DATA)
-		continue;
-
-	    if (stats.std_dev <= CAIRO_PERF_LOW_STD_DEV) {
-		low_std_dev_count++;
-		if (low_std_dev_count >= CAIRO_PERF_STABLE_STD_DEV_COUNT)
-		    break;
-	    } else {
-		low_std_dev_count = 0;
+	if (perf->raw) {
+	    if (i == 0)
+		printf ("[*] %s-%s %s-%d",
+			perf->target->name,
+			_content_to_string (perf->target->content),
+			name, perf->size);
+	    printf (" %lld", times[i]);
+	} else {
+	    if (i >= CAIRO_STATS_MIN_VALID_SAMPLES) {
+		status = _compute_stats (times, i+1, &stats);
+		if (status == CAIRO_STATS_STATUS_NEED_MORE_DATA)
+		    continue;
+
+		if (stats.std_dev <= CAIRO_PERF_LOW_STD_DEV) {
+		    low_std_dev_count++;
+		    if (low_std_dev_count >= CAIRO_PERF_STABLE_STD_DEV_COUNT)
+			break;
+		} else {
+		    low_std_dev_count = 0;
+		}
 	    }
 	}
     }
 
-    if (first_run) {
-	printf ("[ # ] %8s-%-4s %28s %10s %8s %5s %5s %s\n",
-		"backend", "content", "test-size", "min(ticks)", "min(ms)", "median(ms)",
-		"stddev.", "iterations");
-	first_run = FALSE;
+    if (perf->raw) {
+	printf ("\n");
+    } else {
+	printf ("[%3d] %8s-%-4s %26s-%-3d ",
+		perf->test_number, perf->target->name,
+		_content_to_string (perf->target->content),
+		name, perf->size);
+
+	printf ("%10lld %#8.3f %#8.3f %#5.2f%% %3d\n",
+		stats.min,
+		(stats.min * 1000.0) / cairo_perf_ticks_per_second (),
+		(stats.median * 1000.0) / cairo_perf_ticks_per_second (),
+		stats.std_dev * 100.0, i);
     }
 
-    printf ("[%3d] %8s-%-4s %26s-%-3d ",
-	    perf->test_number, perf->target->name,
-	    _content_to_string (perf->target->content),
-	    name, perf->size);
-
-    printf ("%12.2f %#8.3f %#8.3f %#5.2f%% %3d\n",
-	    stats.min,
-	    (stats.min * 1000.0) / cairo_perf_ticks_per_second (),
-	    (stats.median * 1000.0) / cairo_perf_ticks_per_second (),
-	    stats.std_dev * 100.0, i);
-
     perf->test_number++;
 }
 
+static void
+usage (const char *argv0)
+{
+    fprintf (stderr,
+	     "Usage: %s [-l] [-r] [-i iterations] [test-names ...]\n"
+	     "       %s -l\n"
+	     "\n"
+	     "Run the cairo performance test suite over the given tests (all by default)\n"
+	     "The command-line arguments are interpreted as follows:\n"
+	     "\n"
+	     "  -r	raw; display each time measurement instead of summary statistics\n"
+	     "  -i	iterations; specify the number of iterations per test case\n"
+	     "  -l	list only; just list selected test case names without executing\n"
+	     "\n"
+	     "If test names are given they are used as sub-string matches so a command\n"
+	     "such as \"cairo-perf text\" can be used to run all text test cases.\n",
+	     argv0, argv0);
+}
+
+static void
+parse_options (cairo_perf_t *perf, int argc, char *argv[])
+{
+    int c;
+    char *end;
+
+    if (getenv("CAIRO_PERF_ITERATIONS"))
+	perf->iterations = strtol(getenv("CAIRO_PERF_ITERATIONS"), NULL, 0);
+    else
+	perf->iterations = CAIRO_PERF_ITERATIONS_DEFAULT;
+
+    perf->raw = FALSE;
+    perf->list_only = FALSE;
+    perf->names = NULL;
+    perf->num_names = 0;
+
+    while (1) {
+	c = getopt (argc, argv, "i:lr");
+	if (c == -1)
+	    break;
+
+	switch (c) {
+	case 'i':
+	    perf->iterations = strtoul (optarg, &end, 10);
+	    if (*end != '\0') {
+		fprintf (stderr, "Invalid argument for -i (not an integer): %s\n",
+			 optarg);
+		exit (1);
+	    }
+	    break;
+	case 'l':
+	    perf->list_only = TRUE;
+	    break;
+	case 'r':
+	    perf->raw = TRUE;
+	    break;
+	default:
+	    fprintf (stderr, "Internal error: unhandled option: %c\n", c);
+	    /* fall-through */
+	case '?':
+	    usage (argv[0]);
+	    exit (1);
+	}
+    }
+    if (optind < argc) {
+	perf->names = &argv[optind];
+	perf->num_names = argc - optind;
+    }
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -257,10 +361,7 @@ main (int argc, char *argv[])
     cairo_boilerplate_target_t *target;
     cairo_surface_t *surface;
 
-    if (getenv("CAIRO_PERF_ITERATIONS"))
-	perf.iterations = strtol(getenv("CAIRO_PERF_ITERATIONS"), NULL, 0);
-    else
-	perf.iterations = CAIRO_PERF_ITERATIONS_DEFAULT;
+    parse_options (&perf, argc, argv);
 
     for (i = 0; targets[i].name; i++) {
 	perf.target = target = &targets[i];
diff --git a/perf/cairo-perf.h b/perf/cairo-perf.h
index 1ff91b0..eb72617 100644
--- a/perf/cairo-perf.h
+++ b/perf/cairo-perf.h
@@ -60,7 +60,14 @@ cairo_perf_yield (void);
 
 /* running a test case */
 typedef struct _cairo_perf {
+    /* Options from command-line */
     unsigned int iterations;
+    cairo_bool_t raw;
+    cairo_bool_t list_only;
+    char **names;
+    unsigned int num_names;
+
+    /* Stuff used internally */
     cairo_boilerplate_target_t *target;
     unsigned int test_number;
     unsigned int size;
diff-tree 49b72f004d4de50de86f7f350ce01aa5b48f35ae (from 52eb7134bd22c648a10e2b9b8c5d1409de309887)
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Nov 6 23:56:19 2006 -0800

    Add zrusin-another test cases (tessellate and fill).
    
    This new test case is the 0th polygon polygon from Zack Rusin's
    recent cairorender program as made avaialable here:
    
    	http://ktown.kde.org/~zrusin/examples/cairorender.tar.bz2
    
    This polygon contains about 1000 coordinates and looks like a
    hand-drawn version of the word another.

diff --git a/perf/Makefile.am b/perf/Makefile.am
index e1cfdc7..765286f 100644
--- a/perf/Makefile.am
+++ b/perf/Makefile.am
@@ -22,7 +22,8 @@ cairo_perf_SOURCES =		\
 	subimage_copy.c		\
 	tessellate.c		\
 	pattern_create_radial.c \
-	text.c
+	text.c			\
+	zrusin.c
 
 if CAIRO_HAS_WIN32_SURFACE
 cairo_perf_SOURCES += cairo-perf-win32.c
diff --git a/perf/cairo-perf.c b/perf/cairo-perf.c
index 2212676..d6df218 100644
--- a/perf/cairo-perf.c
+++ b/perf/cairo-perf.c
@@ -314,5 +314,6 @@ cairo_perf_case_t perf_cases[] = {
     { tessellate, 100, 100},
     { subimage_copy, 16, 512},
     { pattern_create_radial, 16, 16},
+    { zrusin, 415, 415},
     { NULL }
 };
diff --git a/perf/cairo-perf.h b/perf/cairo-perf.h
index faacff9..1ff91b0 100644
--- a/perf/cairo-perf.h
+++ b/perf/cairo-perf.h
@@ -89,5 +89,6 @@ CAIRO_PERF_DECL (subimage_copy);
 CAIRO_PERF_DECL (tessellate);
 CAIRO_PERF_DECL (text);
 CAIRO_PERF_DECL (pattern_create_radial);
+CAIRO_PERF_DECL (zrusin);
 
 #endif
diff --git a/perf/zrusin-another.h b/perf/zrusin-another.h
new file mode 100644
index 0000000..f6e72ae
--- /dev/null
+++ b/perf/zrusin-another.h
@@ -0,0 +1,668 @@
+/* The data in this file was created by Zack Rusin and downloaded from:
+
+   http://ktown.kde.org/~zrusin/examples/cairorender.tar.bz2
+
+   It is included in the cairo performance test suite by his
+   permission, (given in email to Carl Worth on 2006-10-23)
+*/
+point_t zrusin_another[] = {
+{107.893088734820,103.841923410053}, {106.908713734820,104.920048410053},
+{106.605078419636,105.201721390261}, {102.286079757931,107.612435141518},
+{95.848592904540,109.855345077872}, {95.820873452616,109.863161445001},
+{90.517184462013,111.170008329713}, {87.125000000000,111.625000000000},
+{82.393245921775,111.316572641568}, {77.855183975790,110.402282596173},
+{73.577390672683,108.898617908665}, {69.626442523093,106.822066623894},
+{69.373711344187,106.641023992165}, {57.717461344187,97.141023992165},
+{60.861283165549,97.153157587308}, {52.861026127481,102.679312400770},
+{43.297199733607,107.707604120505}, {38.061787185467,109.824994465236},
+{32.824736230810,111.354170438973}, {27.636335844151,112.281599723349},
+{22.546875000000,112.593750000000}, {19.478437557032,111.949288129016},
+{16.158848619890,110.212087077375}, {13.224557514711,107.109984243309},
+{12.401022392395,105.215121771751}, {12.109375000000,103.234375000000},
+{12.857968117079,98.340329228563}, {15.050447208669,93.495802782054},
+{18.606861885297,88.792446786896}, {23.447261757492,84.321912369510},
+{23.462751811761,84.309735859104}, {29.835792474114,80.170241641945},
+{36.826339837257,77.183700966953}, {44.355342734713,75.374150023260},
+{52.343750000000,74.765625000000}, {54.172214431835,74.493658379815},
+{55.005326273741,73.240819884599}, {54.891695624471,73.637732784350},
+{55.835419478567,69.288398667240}, {56.941029555972,65.553969608663},
+{57.993585771605,68.524034756036}, {53.681468264740,66.410473849442},
+{48.062136369578,64.586219029579}, {42.258612309644,63.317877950046},
+{37.437500000000,62.906250000000}, {32.573685233275,63.044800246717},
+{26.989159126193,63.632907811096}, {20.752015377001,64.279295952574},
+{16.562500000000,64.484375000000}, {16.408072340842,64.479600861137},
+{11.611197340842,64.182725861137}, {11.453516511116,64.167941148499},
+{6.725716011250,62.845442977500}, {4.607850691978,60.769517471259},
+{3.781250000000,57.859375000000}, {4.373461857036,55.042556375256},
+{5.951936001924,52.702230099626}, {6.143541831166,52.540844514692},
+{9.884650718045,51.301737345381}, {10.233131146503,51.254965794601},
+{14.936256146503,50.958090794601}, {15.093750000000,50.953125000000},
+{19.896489079886,51.056672881330}, {25.533897731570,51.448761318515},
+{25.296875000000,51.437500000000}, {30.909892241200,52.067729129895},
+{30.484375000000,52.031250000000}, {39.960841830525,52.410121686268},
+{48.752300459876,53.538988916016}, {48.757228534847,53.539874692156},
+{54.123571896675,54.731960341587}, {58.970980406852,56.270657465230},
+{63.248918806945,58.141504425356}, {66.906851838519,60.330039584234},
+{66.896289983187,60.322652661852}, {70.654761046586,63.581911162241},
+{73.423041490057,67.400928399521}, {75.133561184297,71.670457102504},
+{75.718750000000,76.281250000000}, {74.721151272876,79.892293861068},
+{72.068677652167,83.513297493231}, {70.325052633091,85.868624092784},
+{69.828125000000,88.250000000000}, {70.186304443223,90.552747673203},
+{71.326302526678,92.735137555366}, {73.346308881046,94.894011912335},
+{76.344513137007,97.126213009954}, {79.989627194854,99.164217236556},
+{83.789048154438,100.596188457783}, {87.811323321056,101.441306202608},
+{92.125000000000,101.718750000000}, {97.462586180660,101.070932456387},
+{97.557831952069,101.055648080491}, {103.015964519671,99.851433056816},
+{103.984375000000,99.656250000000}, {106.046875000000,99.656250000000},
+{107.893088734820,103.841923410053}, {106.046875000000,104.656250000000},
+{103.984375000000,104.656250000000}, {104.952785480329,104.461066943184},
+{98.254668047931,106.006851919509}, {98.349913819340,105.991567543613},
+{92.125000000000,106.718750000000}, {87.170121991444,106.371193797392},
+{82.386733095562,105.341311542217}, {77.843380617646,103.648282763444},
+{73.608611862993,101.311286990046}, {69.914433306454,98.422394337665},
+{67.154166223322,95.217987444634}, {65.426000244277,91.794908576797},
+{64.828125000000,88.250000000000}, {65.079958470471,86.099459712769},
+{65.803853616909,83.955594657216}, {68.478197347833,80.033577506769},
+{70.243692477124,77.869424888932}, {70.718750000000,76.281250000000},
+{70.335188815703,72.767042897496}, {69.139458509943,69.692821600479},
+{67.063988953414,66.949338837759}, {64.041210016813,64.427347338148},
+{64.030648161481,64.419960415766}, {57.122769593148,60.885592534770},
+{47.867771465153,58.460125307844}, {47.872699540124,58.461011083984},
+{39.531345669475,57.386753313732}, {30.484375000000,57.031250000000},
+{30.058857758800,56.994770870105}, {25.296875000000,56.437500000000},
+{25.059852268430,56.426238681485}, {19.697260920114,56.052702118670},
+{15.093750000000,55.953125000000}, {15.251243853497,55.948159205399},
+{10.548118853497,56.245034205399}, {10.896599281955,56.198262654619},
+{9.168958168834,56.521655485308}, {9.360563998076,56.360269900374},
+{8.781250000000,57.859375000000}, {8.758601803360,58.189255218076},
+{8.735899308021,58.292982528741}, {8.961783988750,58.373307022500},
+{12.077733488884,59.207058851501}, {11.920052659158,59.192274138863},
+{16.716927659158,59.489149138863}, {16.562500000000,59.484375000000},
+{20.310484622999,59.298829047426}, {26.432715873807,58.663967188904},
+{32.129439766725,58.064574753283}, {37.437500000000,57.906250000000},
+{42.956231440356,58.377434549954}, {49.359738630422,59.757530970421},
+{55.603687985260,61.808276150558}, {60.600164228395,64.257215243964},
+{61.652720444028,67.227280391337}, {60.695830521433,70.461601332760},
+{59.795804375529,74.612267215650}, {59.682173726259,75.009180115401},
+{58.534870256371,76.967235761415}, {56.827785568165,78.467279120185},
+{54.713289027441,79.427384197713}, {52.343750000000,79.765625000000},
+{45.078251015287,80.284053101740}, {38.408035162743,81.855361533047},
+{32.254051275886,84.503586483055}, {26.537248188239,88.252764140896},
+{26.552738242508,88.240587630490}, {22.301341239703,92.064975088104},
+{19.363615291331,95.777634717946}, {17.659610007921,99.470217646437},
+{17.109375000000,103.234375000000}, {17.462942485289,104.745484506691},
+{18.934901380110,106.053537922625}, {21.052812442968,107.257743120984},
+{22.546875000000,107.593750000000}, {27.127336030849,107.323869026651},
+{31.729951269190,106.505204561027}, {36.405009689533,105.124224284764},
+{41.202800266393,103.167395879495}, {50.256161372519,98.422250099230},
+{57.732466834451,93.253092412692}, {60.876288655813,93.265226007835},
+{72.532538655813,102.765226007835}, {72.279807476907,102.584183376106},
+{75.647218702317,104.376772716335}, {79.199503524210,105.636779903827},
+{83.003238453225,106.380692983432}, {87.125000000000,106.625000000000},
+{94.491626547384,105.043088554999}, {94.463907095460,105.050904922128},
+{100.135795242069,103.121939858482}, {103.519921580364,101.267028609739},
+{103.216286265180,101.548701589947}, {104.200661265180,100.470576589947},
+{106.046875000000,104.656250000000}, {107.893088734820,103.841923410053},
+{55.872490683787,89.763134548637}, {54.997490683787,85.841259548637},
+{55.036476188094,85.993355189713}, {52.343750000000,85.750000000000},
+{46.702141892082,86.180801752650}, {41.285068752391,87.490050907175},
+{36.021375201732,89.703013308437}, {30.839905860908,92.844954801298},
+{30.840393168266,92.844613599752}, {24.841774707763,97.553563991314},
+{23.093750000000,100.109375000000}, {23.668337709691,101.518994849695},
+{23.371174656526,101.224323797050}, {23.620948599883,101.397798979282},
+{24.023420115060,101.552272092059}, {25.484375000000,101.718750000000},
+{29.298199671143,101.348354407082}, {33.545396502623,100.218839979757},
+{38.283160693967,98.302715245167}, {43.568687444697,95.572488730454},
+{43.462444284634,95.635929361188}, {56.978069284634,87.104679361188},
+{55.872490683787,89.763134548637}, {107.893088734820,103.841923410053},
+{59.646930715366,91.332820638812}, {46.131305715366,99.864070638812},
+{46.025062555303,99.927511269546}, {40.294964306033,102.857441004833},
+{34.923353497377,104.984285020243}, {29.967425328857,106.280551842918},
+{25.484375000000,106.718750000000}, {22.429704884940,106.291477907941},
+{20.160075343474,105.056926202950}, {19.862912290309,104.762255150305},
+{18.581942192719,102.559691058502}, {18.093750000000,100.109375000000},
+{18.781885833597,97.630167914546}, {20.751975292237,94.868311008686},
+{27.972106831734,88.749136400248}, {27.972594139092,88.748795198702},
+{33.744249798268,85.287221066563}, {39.777431247609,82.783386592825},
+{46.000983107918,81.262557622350}, {52.343750000000,80.750000000000},
+{54.881053553302,80.995299290410}, {57.121823397686,81.724997675285},
+{58.847249996203,82.929795925088}, {59.838523811906,84.600394810287},
+{59.877509316213,84.752490451363}, {60.752509316213,88.674365451363},
+{59.646930715366,91.332820638812}, {107.893088734820,103.841923410053},
+{155.484375000000,101.859375000000}, {154.564834615754,105.515207938449},
+{152.115670325806,108.366761454651}, {148.955163295626,109.891294781728},
+{145.437500000000,110.437500000000}, {142.960397099416,109.918703000637},
+{140.390467597390,108.438024620128}, {137.806753458193,106.109033784838},
+{135.288296646094,103.045299421136}, {135.165845369106,102.859481271949},
+{127.322095369106,89.718856271949}, {127.315939322101,89.708486304067},
+{123.037165252408,83.240466071649}, {119.422893480005,79.457711309224},
+{123.333764624626,78.181432151290}, {119.923748586047,88.267600564284},
+{116.288451493331,96.371224650234}, {116.310270123205,96.328970526240},
+{111.013619195867,105.085481651574}, {104.498474377631,112.833853093888},
+{102.718750000000,113.578125000000}, {98.109375000000,113.578125000000},
+{95.790533815800,112.012456612681}, {92.715536961613,101.759617602767},
+{90.624767168816,88.808240839597}, {90.625938562396,88.818553777181},
+{88.018863793847,68.357428789163}, {88.022375537533,68.374401202625},
+{86.904794319936,64.234191072834}, {85.466909526601,60.964474099786},
+{83.670654326939,58.467433589062}, {81.477961890361,56.645252846242},
+{80.463845731714,53.674615230649}, {82.823220731714,47.205865230649},
+{82.883587418943,47.055653464335}, {83.966380643129,44.754922491868},
+{85.291281927099,42.535861182972}, {88.514402164445,41.595109434025},
+{91.785870247761,43.817111177877}, {94.599270325866,47.029404143594},
+{96.906293571887,51.130222797294}, {98.658631158949,56.017801605095},
+{98.664492355983,56.039251079522}, {100.006630671722,63.228131068770},
+{101.762541190731,76.272848032637}, {101.765778670251,76.300425005941},
+{103.467098832178,87.353480411923}, {105.697048617918,94.795754781373},
+{102.319980907406,93.545204629259}, {104.354680083199,92.248641487426},
+{106.296883956259,90.334282557687}, {110.081726403105,84.371439341729},
+{110.069085073875,84.396782220394}, {112.413266990492,78.560599894318},
+{114.080111889746,71.934817013191}, {115.075734612596,64.464258680566},
+{115.406250000000,56.093750000000}, {117.906250000000,53.593750000000},
+{122.515625000000,53.593750000000}, {124.596624760838,54.708311442938},
+{155.065374760838,100.473936442938}, {155.484375000000,101.859375000000},
+{107.893088734820,103.841923410053}, {150.903375239162,103.244813557062},
+{120.434625239162,57.479188557062}, {122.515625000000,58.593750000000},
+{117.906250000000,58.593750000000}, {120.406250000000,56.093750000000},
+{120.037546637404,64.922460069434}, {118.935513110254,72.987057986809},
+{117.106264259508,80.232368855682}, {114.555914926125,86.603217779606},
+{114.543273596895,86.628560658271}, {112.308927321184,90.508291033149},
+{109.859366043741,93.751654942313}, {107.239069916801,96.288467887574},
+{104.492519092594,98.048545370741}, {101.115451382082,96.797995218627},
+{98.626651167822,88.552769588077}, {96.796721329749,76.855824994059},
+{96.799958809269,76.883401967363}, {95.087119328278,64.107806431230},
+{93.835507644017,57.335748920478}, {93.841368841051,57.357198394905},
+{92.427690803113,53.221339702706}, {90.736667174134,50.033095856406},
+{88.719989127239,47.690701322123}, {86.329347835555,46.092390565975},
+{89.552468072901,45.151638817028}, {88.346119356871,47.166952508132},
+{87.460162581057,49.069346535665}, {87.520529268286,48.919134769351},
+{85.161154268286,55.387884769351}, {84.147038109639,52.417247153758},
+{87.106689423061,54.909519535937}, {89.579965473399,58.293338400214},
+{91.528799430064,62.470887052166}, {92.915124462467,67.344348797375},
+{92.918636206153,67.361321210837}, {95.592811437604,88.243946222819},
+{95.593982831184,88.254259160403}, {97.565713038387,100.591944897233},
+{100.428216184200,110.143793387319}, {98.109375000000,108.578125000000},
+{102.718750000000,108.578125000000}, {100.939025622369,109.322396906112},
+{106.962943304133,102.180143348427}, {111.845979876795,94.077279473760},
+{111.867798506669,94.035025349766}, {115.287188913953,86.412086935716},
+{118.541235375374,76.756067848710}, {122.452106519995,75.479788690776},
+{126.837834747592,80.025158928351}, {131.621560677899,87.166513695933},
+{131.615404630894,87.156143728051}, {139.459154630894,100.296768728051},
+{139.336703353906,100.110950578864}, {142.906407402610,104.257287879872},
+{145.437500000000,105.437500000000}, {147.478430454374,105.175111468272},
+{149.243704674194,104.273863545349}, {150.251571634246,103.277760811551},
+{150.484375000000,101.859375000000}, {150.903375239162,103.244813557062},
+{107.893088734820,103.841923410053}, {231.343750000000,91.875000000000},
+{230.760913847107,95.964970754466}, {229.068047862611,99.735912943733},
+{226.348615757792,103.075786207286}, {222.686081243924,105.872550184609},
+{222.648873373705,105.894655312846}, {215.093162016193,109.098726800095},
+{205.138412990776,111.389009633945}, {205.099511514392,111.395066324151},
+{196.531910121565,112.292873746127}, {187.093750000000,112.593750000000},
+{180.736641615184,112.156201510495}, {174.578395035074,110.855968371846},
+{168.685194057574,108.711669078852}, {163.123222480588,105.741922126310},
+{163.102786019362,105.728945017668}, {158.065383006950,101.833715472335},
+{154.350564084671,97.489870440862}, {152.052565874896,92.798170193375},
+{151.265625000000,87.859375000000}, {151.531470468770,85.013668760581},
+{152.287360086651,82.060400295498}, {152.321821893194,81.964698849566},
+{155.704155919825,73.828381186220}, {158.270837388345,69.249451319292},
+{158.258242073026,69.265568807584}, {162.161895999987,65.281962610977},
+{167.278829839386,61.794937132641}, {173.532669176810,58.834467171163},
+{180.847039597849,56.430527525129}, {179.144548452656,58.005986305326},
+{180.222673452656,54.974736305326}, {180.222279555972,54.975844608663},
+{182.650011718926,50.400876966176}, {185.678714551395,49.466466465483},
+{192.833058049629,52.996232862321}, {201.831199616962,58.692914409530},
+{211.602112156950,65.789874557518}, {220.243790039283,73.085988470431},
+{220.250361498213,73.092084369790}, {227.553434625305,81.089470457139},
+{229.783449199558,84.667905408782}, {230.987849850362,87.897461316292},
+{231.037603485703,88.222391630780}, {231.334478485703,91.659891630780},
+{231.343750000000,91.875000000000}, {107.893088734820,103.841923410053},
+{226.353021514297,92.090108369220}, {226.056146514297,88.652608369220},
+{226.105900149638,88.977538683708}, {225.181394550443,86.544985216218},
+{223.368440374695,83.730842042861}, {216.843388501787,76.751665630210},
+{216.849959960717,76.757761529569}, {208.538512843050,69.741375442482},
+{199.012550383038,62.822710590470}, {190.370066950371,57.347517137679},
+{183.790035448605,54.096033534517}, {186.818738281074,53.161623033824},
+{184.933970444028,56.649155391337}, {184.933576547344,56.650263694674},
+{183.855451547344,59.681513694674}, {182.152960402151,61.256972474871},
+{175.418502698190,63.429204703837}, {169.900857660614,65.978500367359},
+{165.523650875013,68.934834264023}, {162.210507926974,72.328181192416},
+{162.197912611655,72.344298680708}, {160.116156580175,76.155993813780},
+{156.990678106806,83.754051150434}, {157.025139913349,83.658349704502},
+{156.265625000000,87.859375000000}, {156.814621625104,91.570970431625},
+{158.524435915329,95.017942059138}, {161.489304493050,98.301050152665},
+{165.803463980638,101.521054982332}, {165.783027519412,101.508077873690},
+{170.773790317426,104.198487171148}, {175.945042464926,106.097156628154},
+{181.362967759816,107.222704739505}, {187.093750000000,107.593750000000},
+{196.179027378435,107.308688753873}, {204.369238485608,106.448683675849},
+{204.330337009224,106.454740366055}, {213.484962983807,104.385648199905},
+{220.132376626295,101.574094687154}, {220.095168756076,101.596199815391},
+{222.954118617208,99.523823167714}, {224.892889637389,97.287524556267},
+{225.994945527893,94.775263620534}, {226.343750000000,91.875000000000},
+{226.353021514297,92.090108369220}, {107.893088734820,103.841923410053},
+{219.781250000000,95.890625000000}, {219.378166433508,93.853798730227},
+{218.111752188172,91.489941446073}, {212.645950385807,85.475693519170},
+{212.685981945341,85.511936058310}, {206.545320157918,80.643069684901},
+{198.180220478697,74.962876659750}, {198.191932106006,74.970352872652},
+{191.582535336704,71.037624006410}, {191.504903114611,70.993386859602},
+{190.358726480976,70.329891393482}, {194.093750000000,68.156250000000},
+{193.486799914207,72.326466575586}, {191.750022838432,75.648693620488},
+{191.727672642897,75.674671879974}, {189.796209835616,77.308949639626},
+{187.307360975056,78.497446987452}, {184.374093537693,79.223076311545},
+{181.109375000000,79.468750000000}, {178.539517280969,79.274893727068},
+{176.586499975916,78.676142180991}, {173.086052480141,74.877460550577},
+{176.026873378540,75.790765650642}, {173.637934677835,76.966105971818},
+{171.454775584042,78.628861257931}, {167.479150931130,83.659399177979},
+{167.492959438562,83.636441477986}, {164.707555748674,89.579684053440},
+{164.890625000000,88.640625000000}, {165.429801946489,91.718738201013},
+{167.140367049889,94.413281660069}, {170.161871706101,96.828214751252},
+{174.633867311024,99.067496848641}, {174.595883286589,99.052025896332},
+{183.311717611230,101.570655775842}, {188.036065935963,102.270678900324},
+{192.781250000000,102.500000000000}, {204.722829878151,102.082467436594},
+{212.458857303872,100.833616072622}, {214.905535432122,99.897801735668},
+{216.940228691241,98.604487224303}, {220.087216056537,94.692203098109},
+{219.781250000000,95.890625000000}, {107.893088734820,103.841923410053},
+{224.475283943463,97.089046901891}, {222.495392805158,99.992428606532},
+{220.012896308759,102.426762775697}, {217.106183317878,104.328760764332},
+{213.853642696128,105.635133927378}, {205.324045121849,107.034720063406},
+{192.781250000000,107.500000000000}, {187.549871564037,107.241039849676},
+{182.344532388770,106.476219224158}, {172.747866713411,103.697974103668},
+{172.709882688976,103.682503151359}, {167.310784543899,100.802644623748},
+{163.281507950111,97.266405839931}, {160.761604303511,93.177746173987},
+{160.111277146626,90.958745814619}, {159.890625000000,88.640625000000},
+{160.073694251326,87.701565946560}, {163.194540561438,81.082308522014},
+{163.208349068870,81.059350822021}, {165.573405849355,77.703241627766},
+{168.240536915958,74.886763742069}, {171.153080947165,72.670612778182},
+{174.254376621460,71.115484349358}, {177.195197519859,72.028789449423},
+{178.991625024084,74.292607819009}, {181.109375000000,74.468750000000},
+{185.450451524944,73.971303012548}, {187.959827357103,72.387828120026},
+{187.937477161568,72.413806379512}, {188.825700085793,70.736033424413},
+{189.093750000000,68.156250000000}, {192.828773519024,65.982608606518},
+{194.057596885389,66.694113140398}, {193.979964663296,66.649875993590},
+{200.870567893994,70.748397127348}, {200.882279521303,70.755873340250},
+{209.532804842082,76.638180315099}, {216.001518054659,81.769313941690},
+{216.041549614192,81.805556480830}, {219.736550554799,85.597619431325},
+{222.481997811828,89.260058553927}, {224.192146066492,92.716513769773},
+{224.781250000000,95.890625000000}, {224.475283943463,97.089046901891},
+{107.893088734820,103.841923410053}, {274.375000000000,74.921875000000},
+{274.375000000000,76.000000000000}, {273.941340954992,77.877573018672},
+{272.878932097861,79.515803527315}, {273.201644884750,79.109789854043},
+{272.240878131027,80.634530144823}, {272.178064435979,80.731878545843},
+{270.366672394243,82.164949472839}, {268.046875000000,82.703125000000},
+{266.183148747233,82.484226579792}, {265.676843902484,82.347511014208},
+{261.919943241226,81.056638412991}, {261.845529920936,81.035610157726},
+{257.771892015055,80.000491652766}, {254.812500000000,79.671875000000},
+{253.064641952966,80.017766952966}, {253.029646790629,80.052082662255},
+{253.183319188544,79.921363850038}, {253.251518993920,79.984611568497},
+{253.185946392942,81.106825858762}, {253.000000000000,86.578125000000},
+{253.496255380785,102.128843883245}, {253.498940253820,102.192840332413},
+{254.068093288267,110.651263719025}, {251.578125000000,113.375000000000},
+{246.875000000000,113.375000000000}, {246.340326851360,113.317155732979},
+{244.239667843345,112.409341061474}, {241.449240399376,110.489665586259},
+{233.966932708158,103.861287459859}, {233.964253154933,103.858697290509},
+{230.739570245917,99.429986748935}, {227.863465886694,92.900734302334},
+{227.865566738278,92.906614054351}, {224.904456445713,83.297192679644},
+{223.890625000000,76.390625000000}, {224.718172891760,73.652424627265},
+{226.991950628026,71.671512863124}, {230.398659300280,70.468125917422},
+{234.625000000000,70.062500000000}, {239.436000436064,69.828681464349},
+{240.453125000000,69.140625000000}, {239.621272369169,63.470278877568},
+{237.983036171748,55.833595299706}, {237.978023315197,55.813489579321},
+{235.265625000000,42.968750000000}, {235.414374888933,43.818233911095},
+{223.164374888933,9.911983911095}, {223.454623060848,7.647483743269},
+{225.610873060848,4.506858743269}, {225.803351703291,4.260965402925},
+{227.719534150475,2.932735689909}, {230.078782966130,2.347671229322},
+{230.218750000000,2.343750000000}, {231.580832848366,2.789728316683},
+{232.871346377781,3.980786060276}, {235.131457239225,7.716876589460},
+{240.051188613236,19.745668022304}, {244.970104457946,33.805503176211},
+{247.762510801176,44.143184476801}, {247.777764624530,44.225329525617},
+{252.184014624530,70.381579525617}, {251.352799675865,68.904817480577},
+{254.575226795957,69.673348314939}, {260.406250000000,70.359375000000},
+{270.523910039912,70.690857394210}, {273.186407177161,72.174765791999},
+{274.049624252688,73.457293811137}, {274.375000000000,74.921875000000},
+{107.893088734820,103.841923410053}, {269.375000000000,74.921875000000},
+{269.694839960088,75.621642605790}, {260.406250000000,75.359375000000},
+{253.596648204043,74.576651685061}, {250.197596782742,73.718304003256},
+{248.084700324135,72.688932519423}, {247.253485375470,71.212170474383},
+{242.847235375470,45.055920474383}, {242.862489198824,45.138065523199},
+{240.182239292054,35.233559323790}, {235.370686386764,21.504331977696},
+{230.614636510775,9.861248410540}, {229.674552059719,7.679370189724},
+{229.774391761009,7.390935745817}, {230.218750000000,7.343750000000},
+{230.358717033870,7.339828770678}, {229.540398296709,7.582784597075},
+{229.732876939152,7.336891256731}, {227.576626939152,10.477516256731},
+{227.866875111067,8.213016088905}, {240.116875111067,42.119266088905},
+{240.265625000000,42.968750000000}, {242.834476684803,54.624010420679},
+{242.829463828252,54.603904700294}, {244.534977630831,62.545346122432},
+{245.453125000000,69.140625000000}, {244.611402180226,71.735213821357},
+{242.306187063936,73.585381035651}, {238.867409665678,74.693638982119},
+{234.625000000000,75.062500000000}, {229.906486871974,75.367549636876},
+{229.092373983240,75.779215997735}, {228.934535185216,76.058687905577},
+{228.890625000000,76.390625000000}, {229.790856054287,82.319994820356},
+{232.571933261722,91.218385945649}, {232.574034113306,91.224265697666},
+{234.986992254083,96.851263251065}, {237.441996845067,100.266302709491},
+{237.439317291842,100.263712540141}, {244.074197100624,106.275959413741},
+{247.409673148640,108.432844267021}, {246.875000000000,108.375000000000},
+{251.578125000000,108.375000000000}, {249.088156711733,111.098736280975},
+{248.501059746180,102.338409667587}, {248.503744619215,102.402406116755},
+{248.000000000000,86.578125000000}, {248.204678607058,80.674424141238},
+{248.635199756080,78.226325931503}, {249.564103209371,76.447917337745},
+{249.529108047034,76.482233047034}, {251.855421271850,75.142541341903},
+{254.812500000000,74.671875000000}, {258.571857984945,75.077633347234},
+{263.279470079064,76.245639842274}, {263.205056758774,76.224611587009},
+{267.479406097516,77.683738985792}, {266.973101252767,77.547023420208},
+{268.046875000000,77.703125000000}, {268.247054721136,77.733964370993},
+{268.227077605757,77.803800527161}, {268.040685564021,77.924371454157},
+{267.977871868973,78.021719855177}, {268.985855115250,76.421460145957},
+{269.308567902139,76.015446472685}, {269.418034045008,75.973989481328},
+{269.375000000000,76.000000000000}, {269.375000000000,74.921875000000},
+{107.893088734820,103.841923410053}, {243.911209450369,105.662056821622},
+{240.832004992147,102.845101845416}, {236.815516984936,97.742848726260},
+{236.813922800164,97.740633958664}, {232.773597278734,91.287437871638},
+{230.710552894044,85.924483215760}, {230.745327869205,86.067653416413},
+{229.840275149638,82.415038683708}, {229.855893749637,82.481339062591},
+{229.093750000000,78.546875000000}, {229.510257350732,77.264688549054},
+{230.557731326090,76.286764971873}, {233.333290689663,75.138571514324},
+{238.843750000000,74.468750000000}, {241.980836948934,74.687319511759},
+{245.189547085049,75.561169162745}, {247.167986856352,77.549353232692},
+{248.217702574415,80.638507879225}, {248.687500000000,88.140625000000},
+{248.194671228610,98.736670034806}, {248.200295344311,98.650162873539},
+{247.698246960594,103.850772804200}, {243.911209450369,105.662056821622},
+{107.893088734820,103.841923410053}, {242.739253039406,103.211727195800},
+{243.205954655689,98.412337126461}, {243.211578771390,98.325829965194},
+{243.687500000000,88.140625000000}, {243.282297425585,81.439617120775},
+{243.185452914951,80.141955837255}, {241.300413051066,79.640805488241},
+{238.843750000000,79.468750000000}, {234.557334310337,79.986428485676},
+{234.323615830224,80.043375869145}, {234.139295619945,80.082650511165},
+{233.899908001681,80.106538837663}, {233.805549923910,79.924172528127},
+{234.093750000000,78.546875000000}, {234.706606250363,81.268660937409},
+{234.722224850362,81.334961316292}, {235.567172130795,84.744846583587},
+{235.601947105956,84.888016784240}, {237.273277721266,89.165687128362},
+{240.873577199836,94.821866041336}, {240.871983015064,94.819651273740},
+{244.355495007853,99.326773154584}, {246.526290549631,101.400443178378},
+{242.739253039406,103.211727195800}, {107.893088734820,103.841923410053},
+{304.579027849556,115.887559254375}, {299.647333003501,118.498603127587},
+{299.601234810263,118.526555579345}, {296.960609810263,120.089055579345},
+{295.687500000000,120.437500000000}, {292.434178516679,119.763451801101},
+{289.591538470777,117.850158805700}, {287.263626957927,114.860898415742},
+{285.554491073762,110.958948033170}, {285.546168760441,110.932189402305},
+{283.409425227272,100.413450166388}, {283.408069329655,100.405281467271},
+{280.968147929764,87.644193704042}, {284.218299056292,87.914012723915},
+{279.519746335556,93.766171451312}, {279.798545332977,93.224824860858},
+{274.937093489612,105.343910553875}, {272.454127837569,109.762553039486},
+{269.772550129691,112.314814767144}, {266.294988321147,110.999865652887},
+{264.699764075525,105.167535274279}, {264.676753039406,105.022647804200},
+{264.221109604112,100.702343060691}, {264.171875000000,98.828125000000},
+{263.607902205199,91.869081828698}, {263.613915250645,91.062865437610},
+{263.781250000000,89.718750000000}, {263.644962649638,88.985351183708},
+{262.873500431741,86.703985451358}, {262.739182179139,86.219942105230},
+{260.786057179139,74.844942105230}, {260.786249814804,74.846062487964},
+{256.958124814804,52.611687487964}, {256.955473276820,52.595988114755},
+{254.892973276820,40.142863114755}, {254.909488793847,40.232428789163},
+{254.331363793847,37.388678789163}, {254.339079247810,37.425229542768},
+{253.651579247810,34.284604542768}, {253.593750000000,33.750000000000},
+{254.239654341050,30.319069019177}, {254.154681406546,30.589185956325},
+{256.319133024351,26.771372253672}, {258.818704827809,25.924919245868},
+{261.217531024880,26.988383072536}, {263.253153025566,28.888095452080},
+{264.856582863559,31.480336604342}, {265.958832572550,34.621386749163},
+{266.013105788729,34.918097636045}, {267.200714432551,44.731495841479},
+{267.198350954149,44.712535224402}, {269.443623734153,61.037071609407},
+{269.421396014347,60.906344576785}, {270.652021489737,67.736566992690},
+{271.992261513603,76.440263813345}, {271.992747064473,76.443809223415},
+{273.038636247453,85.686082548185}, {273.390625000000,92.953125000000},
+{273.238407027301,96.898129287691}, {272.771685367998,99.590064317759},
+{267.989237947004,98.132898258783}, {271.223612947004,86.961023258783},
+{271.391159168632,86.533772766328}, {274.526090303798,81.379570646076},
+{274.584318175231,81.310286998919}, {276.982682022500,78.600716011250},
+{277.142029400154,78.326905342657}, {279.265919333198,75.301911531816},
+{279.298622345235,75.258362091268}, {281.876153531632,73.009942282517},
+{284.906250000000,72.125000000000}, {287.318073492888,72.767987310135},
+{289.339116026344,74.544184270464}, {290.903803647217,77.224443425871},
+{291.946562402359,80.579617321243}, {291.963278527291,80.666832095730},
+{293.477578855570,88.491377103079}, {294.532438780850,92.026218792971},
+{294.690170210143,92.371639700252}, {298.832669585147,102.687317191341},
+{298.821447919079,102.663322107333}, {301.483679194839,107.248880594573},
+{302.541048238599,108.202972500861}, {303.515625000000,108.484375000000},
+{306.015625000000,110.984375000000}, {306.015625000000,113.625000000000},
+{304.579027849556,115.887559254375}, {107.893088734820,103.841923410053},
+{301.015625000000,113.625000000000}, {301.015625000000,110.984375000000},
+{303.515625000000,113.484375000000}, {300.984342386401,112.859527499139},
+{298.555383305161,111.094869405427}, {296.303526841571,108.355227332168},
+{294.303552080921,104.805427892667}, {294.292330414853,104.781432808659},
+{289.997329789857,94.097110299748}, {290.155061219150,94.442531207029},
+{288.709921144430,89.953935396921}, {287.036721472709,81.520667904270},
+{287.053437597641,81.607882678757}, {286.004633973656,77.940190729536},
+{284.906250000000,77.125000000000}, {284.500063101353,77.160595459408},
+{284.155096468369,77.318182717483}, {283.263877654765,78.304137908732},
+{283.296580666802,78.260588468184}, {281.295470599846,81.110594657343},
+{281.454817977500,80.836783988750}, {278.353181824769,84.595963001081},
+{278.411409696202,84.526679353924}, {275.858840831368,88.778727233672},
+{276.026387052996,88.351476741217}, {272.792012052996,99.523351741217},
+{268.009564632002,98.066185682241}, {268.390625000000,92.953125000000},
+{268.055113752547,86.056104951815}, {267.038502935527,77.118690776585},
+{267.038988486397,77.122236186655}, {265.722978510263,68.575933007310},
+{264.516103985653,61.874905423215}, {264.493876265847,61.744178390593},
+{262.239149045851,45.349964775598}, {262.236785567449,45.331004158521},
+{261.049394211271,35.519402363955}, {261.103667427450,35.816113250837},
+{259.699971974434,32.150967047920}, {257.681295172191,30.793830754132},
+{260.180866975649,29.947377746328}, {259.001568593454,31.817064043675},
+{258.916595658950,32.087180980823}, {258.593750000000,33.750000000000},
+{258.535920752190,33.215395457232}, {259.223420752190,36.356020457232},
+{259.231136206153,36.392571210837}, {259.809261206153,39.236321210837},
+{259.825776723180,39.325886885245}, {261.888276723180,51.779011885245},
+{261.885625185196,51.763312512036}, {265.713750185196,73.997687512036},
+{265.713942820861,73.998807894770}, {267.667067820861,85.373807894770},
+{267.532749568259,84.889764548642}, {268.526912350362,87.905273816292},
+{268.781250000000,89.718750000000}, {268.542334749355,91.905884562390},
+{268.548347794801,91.099668171302}, {269.171875000000,98.828125000000},
+{269.216390395888,100.485156939309}, {269.635746960594,104.383602195800},
+{269.612735924475,104.238714725721}, {270.955011678853,109.187634347113},
+{267.477449870309,107.872685232856}, {268.686497162431,106.569478210514},
+{270.375406510388,103.296714446125}, {275.107704667023,91.493925139142},
+{275.386503664444,90.952578548688}, {278.700840527029,86.470174071108},
+{281.281700943708,83.867237276085}, {284.531852070236,84.137056295958},
+{285.408419686884,85.805066273498}, {286.324716189650,88.997159604327},
+{288.341930670345,99.594718532729}, {288.340574772728,99.586549833612},
+{290.328831239559,109.474060597695}, {290.320508926238,109.447301966830},
+{291.419966792073,112.312929709258}, {292.611586529223,114.157653694300},
+{293.999415233321,115.144751323899}, {295.687500000000,115.437500000000},
+{294.414390189737,115.785944420655}, {297.055015189737,114.223444420655},
+{297.008916996499,114.251396872413}, {302.452222150444,111.362440745625},
+{301.015625000000,113.625000000000}, {107.893088734820,103.841923410053},
+{374.437500000000,106.765625000000}, {373.775309600600,109.463093710969},
+{372.064906958700,112.117295697199}, {372.041004786215,112.144602045402},
+{368.522704503395,114.706400007155}, {366.442611342446,115.399541345014},
+{364.281250000000,115.640625000000}, {355.911205219123,114.726652651698},
+{341.052591424867,111.966274658224}, {341.038040421249,111.963294783992},
+{326.905309277070,108.757693347762}, {319.727026481732,106.439595965247},
+{319.807037817648,106.479160754059}, {310.484453831953,101.696158824691},
+{304.482826587959,97.721718623918}, {304.310358047034,97.564641952966},
+{302.095819571999,95.254869206705}, {298.220153609739,90.667578419636},
+{300.367638895226,91.618501549714}, {296.258263895226,91.915376549714},
+{296.078125000000,91.921875000000}, {293.025957236218,91.709450913344},
+{290.151865257421,91.083888117023}, {285.254658796565,88.663603177256},
+{285.219422230119,88.636374171395}, {281.529900243089,84.536170132203},
+{280.513144708967,82.282593311151}, {280.156250000000,80.015625000000},
+{280.896516775664,77.119922391977}, {282.806537684315,74.726645730656},
+{285.448073147177,73.263018105533}, {288.686079158715,72.443690273534},
+{290.750793112766,73.122099563886}, {293.797668112766,76.059599563886},
+{293.736465601749,76.002539206463}, {295.798965601749,77.861914206463},
+{294.222063773555,77.220634985862}, {301.862688773555,77.517509985862},
+{299.265625000000,80.015625000000}, {299.934685624955,74.754308742711},
+{301.898213943218,69.792099871114}, {305.090729619888,65.230982029954},
+{309.446752320064,61.172938863978}, {309.482902906976,61.145713152252},
+{318.065904047846,56.213131631660}, {329.455658353400,51.953267244508},
+{329.496351456999,51.941186017188}, {336.615241964605,50.572965088062},
+{336.666137267666,50.568817238037}, {342.150512267666,50.178192238037},
+{342.328125000000,50.171875000000}, {347.088673798588,50.461178987176},
+{351.635436696472,51.319590054257}, {355.904450990616,52.732856859568},
+{359.831753977986,54.686728061438}, {363.292951645549,57.250115143707},
+{365.880587968213,60.272932122861}, {367.501493801268,63.647371305944},
+{368.062500000000,67.265625000000}, {367.659428864193,69.524372763002},
+{366.507997055207,71.901249483478}, {362.306741008310,76.690232523947},
+{362.309449580203,76.687848273793}, {355.067416613929,81.592460070084},
+{345.579434368324,85.619156329617}, {345.543296906352,85.631025936969},
+{338.856518222681,87.434049611292}, {331.674077585810,88.726763309129},
+{324.032609882622,89.505258086643}, {315.968750000000,89.765625000000},
+{315.697255981477,89.750839477245}, {313.837880981477,89.547714477245},
+{314.109375000000,89.562500000000}, {315.203325765838,88.142787621838},
+{315.234375000000,87.750000000000}, {315.261368553241,87.459370280378},
+{315.416652198286,87.453346686481}, {316.557907675735,88.522399326740},
+{316.429841220906,88.403882310796}, {319.273591220906,90.857007310796},
+{318.935343465338,90.611377991437}, {331.091593465338,97.970752991437},
+{330.612118984109,97.746034726917}, {334.956642245028,98.975789357391},
+{339.851927078584,99.850564497063}, {351.453125000000,100.546875000000},
+{354.203872313810,100.381670729150}, {355.159915151904,99.886038066767},
+{355.055436157189,100.055596900919}, {357.900435727416,97.290434866877},
+{362.379803562479,95.425955323112}, {363.015625000000,95.343750000000},
+{366.828125000000,95.343750000000}, {368.997562855593,96.601357392681},
+{374.106937855593,105.523232392681}, {374.437500000000,106.765625000000},
+{107.893088734820,103.841923410053}, {369.768062144407,108.008017607319},
+{364.658687144407,99.086142607319}, {366.828125000000,100.343750000000},
+{363.015625000000,100.343750000000}, {363.651446437521,100.261544676888},
+{360.724564272584,101.303315133123}, {359.413313842811,102.506903099081},
+{359.308834848096,102.676461933233}, {358.021570604282,103.932262067178},
+{356.186752686190,104.829266770850}, {351.453125000000,105.546875000000},
+{345.006190631125,105.353277680068}, {339.085572921416,104.774435502937},
+{333.730857754972,103.813273142609}, {328.981631015891,102.472715273083},
+{328.502156534662,102.247997008563}, {316.345906534662,94.888622008563},
+{316.007658779094,94.642992689204}, {313.163908779094,92.189867689204},
+{313.035842324265,92.071350673260}, {311.083347801714,89.820090813519},
+{310.234375000000,87.750000000000}, {310.265424234162,87.357212378162},
+{310.780311953087,86.191927459145}, {311.752715552710,85.312201869144},
+{314.109375000000,84.562500000000}, {314.380869018523,84.577285522755},
+{316.240244018523,84.780410522755}, {315.968750000000,84.765625000000},
+{323.705671367377,84.524038788357}, {330.935297414190,83.796674190871},
+{337.694263027319,82.579622263708}, {344.019203093648,80.868974063031},
+{343.983065631676,80.880843670383}, {352.635708386071,77.251289929916},
+{359.003050419797,72.937151726207}, {359.005758991690,72.934767476053},
+{362.163877944793,69.637813016522}, {363.062500000000,67.265625000000},
+{362.747529636232,64.880949006556}, {361.740505781787,62.777849127139},
+{359.948259291951,60.848517668793}, {357.277621022014,58.985146938562},
+{353.920744321884,57.295463452932}, {350.352844553528,56.106191195743},
+{346.509959013911,55.403078825324}, {342.328125000000,55.171875000000},
+{342.505737732334,55.165557761963}, {337.021362732334,55.556182761963},
+{337.072258035395,55.552034911938}, {330.878648543001,56.746313982812},
+{330.919341646600,56.734232755492}, {320.246595952154,60.693118368340},
+{312.454597093024,65.166786847748}, {312.490747679936,65.139561136022},
+{308.794036005112,68.485814845046}, {306.234598556782,72.012587628886},
+{304.746955000045,75.821863132289}, {304.265625000000,80.015625000000},
+{301.668561226445,82.513740014138}, {294.027936226445,82.216865014138},
+{292.451034398251,81.575585793537}, {290.388534398251,79.716210793537},
+{290.327331887234,79.659150436114}, {287.280456887234,76.721650436114},
+{289.345170841285,77.400059726466}, {287.321458102823,77.850263144467},
+{285.927837315685,78.632729269344}, {285.271451974336,79.274608858023},
+{285.175338636761,79.581613557521}, {285.156250000000,80.015625000000},
+{285.837287256911,82.245079867797}, {288.311827769881,84.707375828605},
+{288.276591203435,84.680146822744}, {291.660634742579,86.384861882977},
+{296.078125000000,86.921875000000}, {295.897986104774,86.928373450286},
+{300.007361104774,86.631498450286}, {302.154846390261,87.582421580364},
+{305.732305428001,91.823255793295}, {307.845891952966,94.029108047034},
+{307.673423412041,93.872031376082}, {313.085858668047,97.436653675309},
+{321.942962182352,101.958339245941}, {322.022973518268,101.997904034753},
+{328.415003222930,104.000119152238}, {342.055709578751,107.067955216008},
+{342.041158575133,107.064975341776}, {356.698169780877,109.788972348302},
+{364.281250000000,110.640625000000}, {366.516357996605,110.246724992845},
+{368.302745213785,108.824147954598}, {368.278843041300,108.851454302801},
+{369.437500000000,106.765625000000}, {369.768062144407,108.008017607319},
+{107.893088734820,103.841923410053}, {359.034454681034,69.861443602839},
+{357.173548986071,72.638610976591}, {353.435826646756,75.215386191513},
+{347.992418306797,77.582163291606}, {341.014454609897,79.729336320871},
+{326.426284670840,82.761098429090}, {319.640717587115,83.525315463381},
+{313.234375000000,83.781250000000}, {312.706760041223,83.724940335389},
+{311.331760041223,83.428065335389}, {311.389194323030,83.439762979730},
+{309.920444323030,83.158512979730}, {310.390625000000,83.203125000000},
+{309.032298883605,83.610801187634}, {305.860259182280,80.222501196670},
+{308.487654632717,75.272571710106}, {311.451975717975,70.927537861140},
+{314.718319876723,67.239682598354}, {318.251784547635,64.261288870324},
+{318.235984828743,64.272646821685}, {322.460311501394,61.735717754517},
+{327.134482463160,59.899177687483}, {332.183220900533,58.782772982128},
+{337.531250000000,58.406250000000}, {345.475041381297,58.786142249068},
+{351.020038715603,59.929523334009}, {351.130689531816,59.972424607386},
+{353.699762084814,61.379594420291}, {355.915109055748,63.288105475323},
+{357.703808635445,65.619192847673}, {358.992939014732,68.294091612533},
+{359.034454681034,69.861443602839}, {107.893088734820,103.841923410053},
+{354.288310985268,69.987158387467}, {352.366140944252,66.657207024677},
+{349.213060468184,64.590075392614}, {349.323711284397,64.632976665991},
+{344.735896118703,63.713857750932}, {337.531250000000,63.406250000000},
+{332.857794724467,63.703555142872}, {328.623330036840,64.608634812517},
+{324.752579123606,66.141235370483}, {321.170265171257,68.321103178315},
+{321.154465452365,68.332461129676}, {318.096133248277,70.895083026646},
+{315.305836782025,74.049024638860}, {312.748673492282,77.846568914895},
+{310.389740817720,82.339998803330}, {307.217701116395,78.951698812366},
+{310.390625000000,78.203125000000}, {310.860805676970,78.247737020270},
+{312.329555676970,78.528987020270}, {312.386989958777,78.540684664611},
+{313.761989958777,78.837559664611}, {313.234375000000,78.781250000000},
+{319.326079287885,78.541090786619}, {325.753402829160,77.817026570910},
+{339.735545390103,74.895663679129}, {350.446985853244,71.354926308487},
+{353.125279138929,69.816467148409}, {354.246795318966,68.419806397161},
+{354.288310985268,69.987158387467}, {107.893088734820,103.841923410053},
+{412.906150029990,61.293260146951}, {409.761470127352,62.134684085464},
+{407.280172710472,63.259435125605}, {407.285792255081,63.256184676520},
+{404.793374271599,64.364965077547}, {402.406250000000,64.781250000000},
+{400.799037804796,64.455489160260}, {399.281565012266,63.565560595750},
+{396.896451926356,60.617324020679}, {395.843750000000,59.187500000000},
+{394.132759007664,59.586356110398}, {392.227223295325,60.862510968959},
+{387.514233459670,66.524236094764}, {387.523930329881,66.510005317299},
+{384.972470502350,70.813073903396}, {383.182220364063,75.072391356081},
+{382.127155126215,79.356608210051}, {381.781250000000,83.734375000000},
+{382.036891605602,86.926476407739}, {382.837535469594,90.232985146136},
+{382.953125000000,90.984375000000}, {382.953125000000,110.781250000000},
+{380.453125000000,113.281250000000}, {374.875000000000,113.281250000000},
+{372.797350977108,112.469290573921}, {370.771127450416,110.197059087430},
+{366.940746762890,102.253660683699}, {366.931766441279,102.229357657717},
+{364.988344509233,95.969248633492}, {363.592635453443,89.400212341223},
+{362.750737781251,82.563409292771}, {362.468750000000,75.500000000000},
+{362.469585639102,75.564633561058}, {362.375835639102,71.939633561058},
+{362.376194806642,71.952282634846}, {362.282444806642,68.921032634846},
+{362.281250000000,68.843750000000}, {362.557974048920,65.558176179264},
+{363.371209408870,62.925233614273}, {365.078767647837,60.585701488502},
+{367.830147985199,58.062445160283}, {369.390625000000,57.515625000000},
+{372.609375000000,57.515625000000}, {375.044088155839,59.448023159988},
+{375.637838155839,61.994898159988}, {375.701153736333,62.463240580013},
+{375.794903736333,64.822615580013}, {375.796875000000,64.921875000000},
+{375.796875000000,66.390625000000}, {375.727843254951,66.974057381188},
+{375.364882971473,68.609156073692}, {375.377354243352,68.535253718305},
+{374.986729243352,71.082128718305}, {375.015625000000,70.703125000000},
+{375.946084438562,73.051058522014}, {371.472688855144,73.407169646001},
+{374.338903268299,66.961197216653}, {377.510670879106,61.308691210684},
+{380.962283852915,56.499192859154}, {384.668034355078,52.582243393122},
+{384.668120639869,52.582165462116}, {388.032154904598,50.002880989291},
+{391.626628158728,48.110057708285}, {395.367786243461,46.944465688666},
+{399.171875000000,46.546875000000}, {400.072873198005,46.714879663986},
+{404.885373198005,48.574254663986}, {404.871260445955,48.568850974212},
+{412.883679720929,50.905386234424}, {414.906250000000,53.359375000000},
+{414.906250000000,58.843750000000}, {412.906150029990,61.293260146951},
+{107.893088734820,103.841923410053}, {409.906250000000,58.843750000000},
+{409.906250000000,53.359375000000}, {411.928820279071,55.813363765576},
+{403.097489554045,53.243649025788}, {403.083376801995,53.238245336014},
+{398.270876801995,51.378870336014}, {399.171875000000,51.546875000000},
+{396.227916881538,51.823112436334}, {393.443684341272,52.679004791715},
+{390.735423220402,54.155322135709}, {388.019379360131,56.292834537884},
+{388.019465644922,56.292756606878}, {384.707638022085,59.784010265846},
+{381.637766620894,64.074121289316}, {378.784143606701,69.212630908347},
+{376.121061144856,75.249080353999}, {371.647665561438,75.605191477986},
+{370.464152438185,73.063686657060}, {370.015625000000,70.703125000000},
+{370.044520756648,70.324121281695}, {370.435145756648,67.777246281695},
+{370.447617028527,67.703343926308}, {370.865906745049,65.807192618812},
+{370.796875000000,66.390625000000}, {370.796875000000,64.921875000000},
+{370.798846263667,65.021134419987}, {370.705096263667,62.661759419987},
+{370.768411844161,63.130101840012}, {370.174661844161,60.583226840012},
+{372.609375000000,62.515625000000}, {369.390625000000,62.515625000000},
+{370.951102014801,61.968804839717}, {367.847540591130,65.152891385727},
+{367.281250000000,68.843750000000}, {367.280055193358,68.766467365154},
+{367.373805193358,71.797717365154}, {367.374164360898,71.810366438942},
+{367.467914360898,75.435366438942}, {367.468750000000,75.500000000000},
+{367.725824718749,82.182684457229}, {368.501114546557,88.552912658777},
+{369.800717990767,94.651845116508}, {371.630733558721,100.520642342283},
+{371.621753237110,100.496339316301}, {374.875000000000,108.281250000000},
+{380.453125000000,108.281250000000}, {377.953125000000,110.781250000000},
+{377.953125000000,90.984375000000}, {378.068714530406,91.735764853864},
+{377.111545894398,87.698523592261}, {376.781250000000,83.734375000000},
+{377.206829248785,78.659016789949}, {378.466217135937,73.583858643919},
+{380.533388872650,68.577551096604}, {383.382319670119,63.708744682701},
+{383.392016540330,63.694513905236}, {386.493443824758,59.714265008269},
+{389.655589204675,56.723426531041}, {392.798881617336,54.841378264602},
+{395.843750000000,54.187500000000}, {397.450962195204,54.513260839740},
+{398.968434987734,55.403189404250}, {401.353548073644,58.351425979321},
+{402.406250000000,59.781250000000}, {404.776707744919,58.931315323480},
+{404.782327289528,58.928064874395}, {408.035404872648,57.459065914536},
+{411.906349970010,56.394239853049}, {409.906250000000,58.843750000000},
+{107.893088734820, 103.841923410053}
+};
diff --git a/perf/zrusin.c b/perf/zrusin.c
new file mode 100644
index 0000000..6840775
--- /dev/null
+++ b/perf/zrusin.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright © 2006 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author: Carl D. Worth <cworth at cworth.org>
+ */
+
+#include "cairo-perf.h"
+
+typedef struct {
+    double x;
+    double y;
+} point_t;
+
+#include "zrusin-another.h"
+
+#define ARRAY_SIZE(arr) sizeof(arr)/sizeof(arr[0])
+
+static void
+zrusin_another_path (cairo_t *cr)
+{
+    unsigned int i;
+
+    for (i=0; i < ARRAY_SIZE (zrusin_another); i++)
+	cairo_line_to (cr, zrusin_another[i].x, zrusin_another[i].y);
+}
+
+static cairo_perf_ticks_t
+zrusin_another_tessellate (cairo_t *cr, int width, int height)
+{
+    zrusin_another_path (cr);
+
+    cairo_perf_timer_start ();
+
+    /* We'd like to measure just tessellation without
+     * rasterization. For now, we can do that with cairo_in_fill. But
+     * we'll have to be careful since cairo_in_fill might eventually
+     * be optimized to have an implementation that doesn't necessarily
+     * include tessellation. */
+    cairo_in_fill (cr, 50, 50);
+
+    cairo_perf_timer_stop ();
+
+    cairo_new_path (cr);
+
+    return cairo_perf_timer_elapsed ();
+}
+
+static cairo_perf_ticks_t
+zrusin_another_fill (cairo_t *cr, int width, int height)
+{
+    zrusin_another_path (cr);
+    cairo_set_source_rgb (cr, 0.0, 0.0, 0.8); /* blue */
+
+    cairo_perf_timer_start ();
+
+    cairo_fill (cr);
+
+    cairo_perf_timer_stop ();
+
+    cairo_new_path (cr);
+
+    return cairo_perf_timer_elapsed ();
+}
+
+void
+zrusin (cairo_perf_t *perf, cairo_t *cr, int width, int height)
+{
+    cairo_perf_run (perf, "zrusin_another_tessellate", zrusin_another_tessellate);
+    cairo_perf_run (perf, "zrusin_another_fill", zrusin_another_fill);
+}


More information about the cairo-commit mailing list