mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-08 06:48:03 +02:00
test: Extend pattern-get-type and pattern-getters for mesh patterns
Add testing for mesh patterns to pattern-get-type and pattern-getters.
This commit is contained in:
parent
96426fdf01
commit
b164187ff6
2 changed files with 88 additions and 1 deletions
|
|
@ -29,7 +29,7 @@ static cairo_test_status_t
|
|||
preamble (cairo_test_context_t *Ctx)
|
||||
{
|
||||
cairo_surface_t *surface;
|
||||
cairo_pattern_t *solid_rgb, *solid_rgba, *surface_pattern, *linear, *radial;
|
||||
cairo_pattern_t *solid_rgb, *solid_rgba, *surface_pattern, *linear, *radial, *mesh;
|
||||
cairo_test_status_t result = CAIRO_TEST_SUCCESS;
|
||||
|
||||
solid_rgb = cairo_pattern_create_rgb (0.0, 0.1, 0.2);
|
||||
|
|
@ -40,6 +40,7 @@ preamble (cairo_test_context_t *Ctx)
|
|||
linear = cairo_pattern_create_linear (0.0, 0.0, 10.0, 10.0);
|
||||
radial = cairo_pattern_create_radial (10.0, 10.0, 0.1,
|
||||
10.0, 10.0, 1.0);
|
||||
mesh = cairo_pattern_create_mesh ();
|
||||
|
||||
if (cairo_pattern_get_type (solid_rgb) != CAIRO_PATTERN_TYPE_SOLID)
|
||||
result = CAIRO_TEST_FAILURE;
|
||||
|
|
@ -56,12 +57,16 @@ preamble (cairo_test_context_t *Ctx)
|
|||
if (cairo_pattern_get_type (radial) != CAIRO_PATTERN_TYPE_RADIAL)
|
||||
result = CAIRO_TEST_FAILURE;
|
||||
|
||||
if (cairo_pattern_get_type (mesh) != CAIRO_PATTERN_TYPE_MESH)
|
||||
result = CAIRO_TEST_FAILURE;
|
||||
|
||||
cairo_pattern_destroy (solid_rgb);
|
||||
cairo_pattern_destroy (solid_rgba);
|
||||
cairo_pattern_destroy (surface_pattern);
|
||||
cairo_surface_destroy (surface);
|
||||
cairo_pattern_destroy (linear);
|
||||
cairo_pattern_destroy (radial);
|
||||
cairo_pattern_destroy (mesh);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue