summaryrefslogtreecommitdiff
path: root/test/clip-operator.c
Commit message (Collapse)AuthorAgeFilesLines
* test: fix include order for AIX, bug#89354Michael Haubenwallner2015-03-051-1/+1
|
* test: Cleanup macrosAndrea Canciani2011-03-171-3/+2
| | | | | | | | The ARRAY_LENGTH macro is used by many tests, although sometimes it is named ARRAY_SIZE. Define it just once in cairo-test.h and reuse it. In a similar way, MAX() and MIN() are currently defined in some specific tests, while they could be reused.
* test: make test font family a defineAndrea Canciani2010-06-121-1/+1
| | | | | | In order to make it easier to change the test font family, add it as a define in the global header and always reference the macro in the tests.
* [test] Track XFAIL using expected results stored as xfail.pngChris Wilson2009-07-131-1/+1
| | | | | | | | | | | | | | | | Instead of tagging the sources, which is insensitive to changes, track the known failure modes by recording the current fail as an xfail.png reference. (We also introduce a new.png to track a fresh error, so that they are not lost in the noise of the old XFAILs and hopefully do not cause everyone to fret). As we have removed the XFAIL tagging we find, surprise surprise, that some tests are now working -- so review all the reference images (as also some .ref.png now should be .xfail.png). Note: I've only checked image,pdf,ps,svg. The test surfaces report some failures that probably need to addressed in source. I've not correct the changes for win32 and quartz. Nor fixed up the experimental backends.
* [test] Build test suite into single binary.Chris Wilson2008-10-311-14/+7
| | | | | | | | | Avoid calling libtool to link every single test case, by building just one binary from all the sources. This binary is then given the task of choosing tests to run (based on user selection and individual test requirement), forking each test into its own process and accumulating the results.
* [test/clip-operator] Propagate error from secondary context.Chris Wilson2008-10-171-4/+2
| | | | | Use the cairo_get_target() to propagate any errors from the secondary context.
* [test] Preparatory work for running under memfault.Chris Wilson2008-08-131-4/+5
| | | | | | | | | | | | | | | | | | | | In order to run under memfault, the framework is first extended to handle running concurrent tests - i.e. multi-threading. (Not that this is a requirement for memfault, instead it shares a common goal of storing per-test data). To that end all the global data is moved into a per-test context and the targets are adjusted to avoid overlap on shared, global resources (such as output files and frame buffers). In order to preserve the simplicity of the standard draw routines, the context is not passed explicitly as a parameter to the routines, but is instead attached to the cairo_t via the user_data. For the masochist, to enable the tests to be run across multiple threads simply set the environment variable CAIRO_TEST_NUM_THREADS to the desired number. In the long run, we can hope the need for memfault (runtime testing of error paths) will be mitigated by static analysis. A promising candidate for this task would appear to be http://hal.cs.berkeley.edu/cil/.
* [test/*] Create new surfaces using the group target.Chris Wilson2007-12-201-1/+1
| | | | | | | | | | cairo_get_target() returns the original surface passed to cairo_create(), and not the current destination as required when testing drawing to the same surface using multiple contexts. For completeness we also use the group target when creating similar surfaces within the tests (to check that similar surfaces of similar surfaces also work).
* [test] Remove unused variableBehdad Esfahbod2007-03-051-2/+0
|
* Optimize gradient computationsDavid Turner2006-12-141-3/+3
| | | | | | | | | | | | | | | | | | | | | | | We update the test suite reference images where needed, (pdiff avoided a few, but most still needed updating). We take advantage of the need for new reference images to shrink some of the giant tests to speed them up a bit. This optimization provides a 2x improvement in linear gradient generation performance (numbers from an x86 laptop): image-rgb paint_linear_rgba_source-512 26.13 -> 11.13: 2.35x speedup █▍ image-rgb paint_linear_rgba_source-256 6.47 -> 2.76: 2.34x speedup █▍ image-rgba paint_linear_rgb_over-256 6.51 -> 2.86: 2.28x speedup █▎ image-rgb paint_linear_rgba_over-512 28.62 -> 13.70: 2.09x speedup █▏ image-rgba fill_linear_rgb_over-256 3.24 -> 1.94: 1.66x speedup ▋ image-rgb stroke_linear_rgba_over-256 5.68 -> 4.10: 1.39x speedup ▍
* Purge cairo-test of all calls to round()Dan Amelang2006-12-011-2/+2
| | | | | Although round() is in the C99 standard, it isn't available in all toolchains on which cairo is compiled (VC++, for example).
* test/clip-operator: Use round to pass only integers to cairo_show_glyphsCarl Worth2006-11-221-2/+2
| | | | | | | We were previously passing half-integer values here, which will not be robust to changes in the rounding mode used for cairo_show_glyphs. Use round() to match the rounding expected by the reference images.
* [test] Fix warnings in tests on 64-bit systemsPavel Roskin2006-08-131-2/+2
| | | | | Cast argiments from size_t to int. size_t is 64-bit on 64-bit systems, which causes a warning. The actual data should fit 32 bit comfortably.
* Eliminate most compiler warnings from the test suiteCarl Worth2006-08-081-1/+1
|
* Set font options in the test context and make tests not do thatBehdad Esfahbod2006-07-311-9/+0
| | | | | This should help with not requiring many backend-specific reference images, and some should be removed now.
* Add prototype for draw in each test file and remove it from the header.Behdad Esfahbod2006-07-131-0/+2
|
* More test suite infrastructure improvements:Behdad Esfahbod2006-07-111-3/+4
| | | | | | | | | | | | | | | | | - Remove cairo_test_expect_failure. cairo-test.c now checks env var CAIRO_XFAIL_TESTS to see if the running test is expected to fail. The reason for expected failure is appended to the test description. - Test description is written out. - Failed/crashed tests also write a line out to stderr (in red), so one can now redirect stdout to /dev/null to only see failures. - cairo_test() has been changed to not take the draw function anymore, instead, draw function is now part of the test struct. - "make check" doesn't allow limiting backends to test using env var anymore. To limit backends to test, one should use the TARGETS variable on the make command line. - "make check-valgrind" now writes its log to valgrind-log instead of valgrind.log, to not interfere with test log file processing.
* Remove trailing whitespace from lines with a single brace.Carl Worth2006-06-061-1/+1
| | | | | | | | This patch was produced with the following (GNU) sed script: sed -i -r -e '/^[ \t]*[{}][ \t]*/ s/[ \t]+$//' run on all *.[ch] files within cairo.
* Remove extraneous whitespace from "blank" lines.Carl Worth2006-06-061-6/+6
| | | | | | | | This patch was produced with the following (GNU) sed script: sed -i -r -e 's/^[ \t]+$//' run on all *.[ch] files within cairo.
* Note that PS is now passing all tests except for self-copy.Carl Worth2005-11-081-1/+1
| | | | | | | | Add missing glue to hook up PS backend with new meta-surface support for the 5 basic drawing operations. Currently, this forces image fallbacks for all operations. Switch from gs device of pngalpha to png16m which for some reason gives the correct result for nil-surface now, while pngalpha does not. Key off of N_OPERATORS as the loop control for easier trimming down of this test case when debugging. Rename stroke_style parameter to style in backend->stroke parameter list. Remove PS-specific reference images for many tests which are now using more fallback paths than before.
* Add a function to test whether a cairo_operator_t is bounded (does nothing ↵Owen Taylor2005-08-081-0/+205
for 0 src/mask) cairoint.h: Add a helper function to take clearing areas that are outside the source/mask but are cleared by unbounded operations. src/cairo-xlib-surface.c (_cairo_xlib_surface_composite): Use _cairo_surface_composite_fixup_unbounded() as needed. src/cairo-image-surface.c src/cairint.h: Keep track of whether the surface has a clip or not ... we need this for determining when we can bypass an intermediate mask for composite_trapezoids(). Create an intermediate mask of the right size with pixman_add_trapezoids() and composite that. When rendering with an unbounded operator, create the intermediate mask ourselves and render with ADD to that, then composite the result. Create an intermediate surface the size of the extents, render the glyphs to that then composite the results. Add the size of the glyph Compute the size of the glyph mask, then use _cairo_surface_composite_fixup_unbounded(). Use the right mask format. (Unrelated bugfix) New function taking a drawing function as a parameter to encapsulate shared logic between compositing trapezoid, glyphs, and masks. Use _cairo_gstate_clip_and_composite(). Also fix extents computations for unbounded operators. src/cairo-clip.c src/cairo-clip-private.h (_cairo_clip_combine_to_surface): Add the destination as an extra parameter to allow combining to an intermediate surface. tests/unbounded-operator.c tests/Makefile.am: Add a test for the operation of the 6 unbounded operators against different shapes. tests/clip-operator.c tests/Makefile.am: Add a test that tests surface clipping with different shapes against all the operators. Make use OVER like the name and description. With fixed semantics, SOURCE does something different.