diff options
author | Vladimir Vukicevic <vladimir@pobox.com> | 2005-07-15 13:45:19 +0000 |
---|---|---|
committer | Vladimir Vukicevic <vladimir@pobox.com> | 2005-07-15 13:45:19 +0000 |
commit | 8ad8aa63605610eaec78cdbfea321148c02be331 (patch) | |
tree | 033030c1d46a0ce4dce883d9cdeaa4e9f2f3e013 /test/composite-integer-translate-over-repeat.c | |
parent | 2534057cb5df78eb5aa79c24317e4a97f6c0f2c6 (diff) |
Use XCopyArea when possible, for optimization and bug workaround.
Exercise XCopyArea, XRenderComposite, and XSetTile/XFillRectangle paths for _cairo_xlib_surface_composite
Diffstat (limited to 'test/composite-integer-translate-over-repeat.c')
-rw-r--r-- | test/composite-integer-translate-over-repeat.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/composite-integer-translate-over-repeat.c b/test/composite-integer-translate-over-repeat.c new file mode 100644 index 000000000..b681ac9c7 --- /dev/null +++ b/test/composite-integer-translate-over-repeat.c @@ -0,0 +1,61 @@ +#include <math.h> +#include "cairo-test.h" +#include <stdio.h> + +#define SIZE 100 +#define SIZE2 20 +#define OFFSET 10 + +cairo_test_t test = { + "composite-integer-translate-over-repeat", + "Test simple compositing: integer-translation 32->32 OVER, with repeat", + SIZE, SIZE +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *image; + cairo_pattern_t *pat; + cairo_t *cr2; + + image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, SIZE2, SIZE2); + + cr2 = cairo_create (image); + cairo_set_source_rgba (cr2, 1, 0, 0, 1); + cairo_rectangle (cr2, 0, 0, SIZE2/2, SIZE2/2); + cairo_fill (cr2); + cairo_set_source_rgba (cr2, 0, 1, 0, 1); + cairo_rectangle (cr2, SIZE2/2, 0, SIZE2/2, SIZE2/2); + cairo_fill (cr2); + cairo_set_source_rgba (cr2, 0, 0, 1, 1); + cairo_rectangle (cr2, 0, SIZE2/2, SIZE2/2, SIZE2/2); + cairo_fill (cr2); + cairo_set_source_rgba (cr2, 1, 1, 0, 1); + cairo_rectangle (cr2, SIZE2/2, SIZE2/2, SIZE2/2, SIZE2/2); + cairo_fill (cr2); + cairo_destroy (cr2); + + pat = cairo_pattern_create_for_surface (image); + cairo_pattern_set_extend (pat, CAIRO_EXTEND_REPEAT); + + cairo_set_source_rgba (cr, 0, 0, 0, 1); + cairo_rectangle (cr, 0, 0, SIZE, SIZE); + cairo_fill (cr); + + cairo_translate (cr, OFFSET, OFFSET); + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + cairo_set_source (cr, pat); + cairo_rectangle (cr, 0, 0, SIZE - OFFSET, SIZE - OFFSET); + cairo_fill (cr); + + cairo_surface_destroy (image); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test, draw); +} |