summaryrefslogtreecommitdiff
path: root/test/pattern-getters.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/pattern-getters.c')
-rw-r--r--test/pattern-getters.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/test/pattern-getters.c b/test/pattern-getters.c
index 657159c..2d7d904 100644
--- a/test/pattern-getters.c
+++ b/test/pattern-getters.c
@@ -183,6 +183,88 @@ draw (cairo_t *cr, int width, int height)
cairo_pattern_destroy (pat);
}
+ /* Test mesh getters */
+ {
+ unsigned int count;
+ int i;
+ pat = cairo_pattern_create_mesh ();
+
+ status = cairo_pattern_mesh_get_patch_count (pat, &count);
+ CHECK_SUCCESS;
+
+ if (count != 0) {
+ cairo_pattern_destroy (pat);
+ return CAIRO_TEST_FAILURE;
+ }
+
+ cairo_pattern_mesh_begin_patch (pat);
+ cairo_pattern_mesh_move_to (pat, 0, 0);
+ cairo_pattern_mesh_line_to (pat, 0, 3);
+ cairo_pattern_mesh_line_to (pat, 3, 3);
+ cairo_pattern_mesh_line_to (pat, 3, 0);
+
+ status = cairo_pattern_mesh_get_patch_count (pat, &count);
+ CHECK_SUCCESS;
+
+ if (count != 0) {
+ cairo_pattern_destroy (pat);
+ return CAIRO_TEST_FAILURE;
+ }
+
+ cairo_pattern_mesh_end_patch (pat);
+
+ status = cairo_pattern_mesh_get_patch_count (pat, &count);
+ CHECK_SUCCESS;
+
+ if (count != 1) {
+ cairo_pattern_destroy (pat);
+ return CAIRO_TEST_FAILURE;
+ }
+
+ for (i = 0; i < 4; i++) {
+ double cp_x[4] = { 1, 1, 2, 2 };
+ double cp_y[4] = { 1, 2, 2, 1 };
+ double x, y;
+
+ status = cairo_pattern_mesh_get_control_point (pat, 0, i, &x, &y);
+ CHECK_SUCCESS;
+
+ if (!CAIRO_TEST_DOUBLE_EQUALS(x,cp_x[i]) ||
+ !CAIRO_TEST_DOUBLE_EQUALS(y,cp_y[i]))
+ {
+ cairo_pattern_destroy (pat);
+ return CAIRO_TEST_FAILURE;
+ }
+ }
+
+ cairo_pattern_mesh_begin_patch (pat);
+ cairo_pattern_mesh_move_to (pat, 0, 0);
+ cairo_pattern_mesh_line_to (pat, 1, 0);
+ cairo_pattern_mesh_line_to (pat, 1, 1);
+ cairo_pattern_mesh_set_corner_color_rgb (pat, 0, 1, 1, 1);
+ cairo_pattern_mesh_end_patch (pat);
+
+ for (i = 0; i < 4; i++) {
+ double corner_color[4] = { 1, 0, 0, 1 };
+ double a, r, g, b;
+
+ status = cairo_pattern_mesh_get_corner_color_rgba (pat, 1, i,
+ &r, &g, &b, &a);
+ CHECK_SUCCESS;
+
+ if (!CAIRO_TEST_DOUBLE_EQUALS(a,corner_color[i]) ||
+ !CAIRO_TEST_DOUBLE_EQUALS(r,corner_color[i]) ||
+ !CAIRO_TEST_DOUBLE_EQUALS(g,corner_color[i]) ||
+ !CAIRO_TEST_DOUBLE_EQUALS(b,corner_color[i]))
+ {
+ cairo_pattern_destroy (pat);
+ return CAIRO_TEST_FAILURE;
+ }
+ }
+
+ cairo_pattern_destroy (pat);
+ }
+
cairo_set_source_rgb (cr, 0, 1, 0);
cairo_paint (cr);