summaryrefslogtreecommitdiff
path: root/test/composite-integer-translate-over-repeat.c
diff options
context:
space:
mode:
authorVladimir Vukicevic <vladimir@pobox.com>2005-07-15 13:45:19 +0000
committerVladimir Vukicevic <vladimir@pobox.com>2005-07-15 13:45:19 +0000
commit8ad8aa63605610eaec78cdbfea321148c02be331 (patch)
tree033030c1d46a0ce4dce883d9cdeaa4e9f2f3e013 /test/composite-integer-translate-over-repeat.c
parent2534057cb5df78eb5aa79c24317e4a97f6c0f2c6 (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.c61
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);
+}