From ff35ffd2a7baa775e2ef73b844e783434c149057 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Sat, 13 Oct 2007 22:09:04 +0930 Subject: [PATCH] Add meta-surface-pattern test --- test/.gitignore | 1 + test/Makefile.am | 1 + test/meta-surface-pattern-ref.png | Bin 0 -> 3072 bytes test/meta-surface-pattern-rgb24-ref.png | Bin 0 -> 3162 bytes test/meta-surface-pattern.c | 131 ++++++++++++++++++++++++ 5 files changed, 133 insertions(+) create mode 100644 test/meta-surface-pattern-ref.png create mode 100644 test/meta-surface-pattern-rgb24-ref.png create mode 100644 test/meta-surface-pattern.c diff --git a/test/.gitignore b/test/.gitignore index 23026b677..d13f1a4e2 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -79,6 +79,7 @@ mask mask-alpha mask-ctm mask-surface-ctm +meta-surface-pattern move-to-show-surface multi-page multi-page.pdf diff --git a/test/Makefile.am b/test/Makefile.am index 13381c312..37855680e 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -62,6 +62,7 @@ mask \ mask-alpha \ mask-ctm \ mask-surface-ctm \ +meta-surface-pattern \ move-to-show-surface \ new-sub-path \ nil-surface \ diff --git a/test/meta-surface-pattern-ref.png b/test/meta-surface-pattern-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9c56cd5e5fdf5f1bd961e235a28a05ac35bb07 GIT binary patch literal 3072 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 + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +#define PAT_WIDTH 120 +#define PAT_HEIGHT 120 +#define SIZE (PAT_WIDTH*2) +#define PAD 2 +#define WIDTH (PAD + SIZE + PAD) +#define HEIGHT WIDTH + + +/* This test is designed to test painting a meta surface pattern with + * CAIRO_EXTEND_NONE and a non identity pattern matrix. + */ + +cairo_test_t test = { + "meta-surface-pattern", + "Paint meta surface pattern with non identity pattern matrix", + WIDTH, HEIGHT, + draw +}; + + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *pat_surface; + cairo_pattern_t *pattern; + cairo_matrix_t mat; + cairo_t *cr2; + + cairo_translate (cr, PAD, PAD); + + pat_surface = cairo_surface_create_similar (cairo_get_target (cr), + CAIRO_CONTENT_COLOR_ALPHA, + PAT_WIDTH, PAT_HEIGHT); + + cr2 = cairo_create (pat_surface); + + cairo_set_source_rgba (cr2, 1, 0, 1, 0.5); + cairo_rectangle (cr2, PAT_WIDTH/6.0, PAT_HEIGHT/6.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); + cairo_fill (cr2); + + cairo_set_source_rgba (cr2, 0, 1, 1, 0.5); + cairo_rectangle (cr2, PAT_WIDTH/2.0, PAT_HEIGHT/2.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0); + cairo_fill (cr2); + + cairo_set_line_width (cr2, 1); + cairo_move_to (cr2, PAT_WIDTH/6.0, 0); + cairo_line_to (cr2, 0, 0); + cairo_line_to (cr2, 0, PAT_HEIGHT/6.0); + cairo_set_source_rgb (cr2, 1, 0, 0); + cairo_stroke (cr2); + cairo_move_to (cr2, PAT_WIDTH/6.0, PAT_HEIGHT); + cairo_line_to (cr2, 0, PAT_HEIGHT); + cairo_line_to (cr2, 0, 5*PAT_HEIGHT/6.0); + cairo_set_source_rgb (cr2, 0, 1, 0); + cairo_stroke (cr2); + cairo_move_to (cr2, 5*PAT_WIDTH/6.0, 0); + cairo_line_to (cr2, PAT_WIDTH, 0); + cairo_line_to (cr2, PAT_WIDTH, PAT_HEIGHT/6.0); + cairo_set_source_rgb (cr2, 0, 0, 1); + cairo_stroke (cr2); + cairo_move_to (cr2, 5*PAT_WIDTH/6.0, PAT_HEIGHT); + cairo_line_to (cr2, PAT_WIDTH, PAT_HEIGHT); + cairo_line_to (cr2, PAT_WIDTH, 5*PAT_HEIGHT/6.0); + cairo_set_source_rgb (cr2, 1, 1, 0); + cairo_stroke (cr2); + + cairo_set_source_rgb (cr2, 0.5, 0.5, 0.5); + cairo_set_line_width (cr2, PAT_WIDTH/10.0); + + cairo_move_to (cr2, 0, PAT_HEIGHT/4.0); + cairo_line_to (cr2, PAT_WIDTH, PAT_HEIGHT/4.0); + cairo_stroke (cr2); + + cairo_move_to (cr2, PAT_WIDTH/4.0, 0); + cairo_line_to (cr2, PAT_WIDTH/4.0, PAT_WIDTH); + cairo_stroke (cr2); + + cairo_destroy (cr2); + pattern = cairo_pattern_create_for_surface (pat_surface); + cairo_surface_destroy (pat_surface); + + cairo_matrix_init_identity (&mat); + cairo_matrix_scale (&mat, 2, 1.5); + cairo_matrix_rotate (&mat, 1); + cairo_matrix_translate (&mat, -PAT_WIDTH/4.0, -PAT_WIDTH/2.0); + cairo_pattern_set_matrix (pattern, &mat); + cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +}