Commit graph

454 commits

Author SHA1 Message Date
Chris Wilson
c13a09ddb4 [test] Use a different jpeg image for mime-data
Detect when we successfully encode the JPEG data from the mime-type by
using a completely image.
2008-11-04 13:03:24 +00:00
Chris Wilson
8407470409 [test] Adapt pdf-mime-data for non-srcdir build.
Need to look for reference/input images from srcdir as well.
2008-11-04 13:03:24 +00:00
Chris Wilson
8007618837 [test] Fix compilation of imagediff.
imagediff broke once again.
2008-11-04 13:03:24 +00:00
Adrian Johnson
73bc278c7a Add pdf mime data test
To test that images in PDF files correctly embedded the mime data.
2008-11-04 22:39:36 +10:30
Chris Wilson
43e2370b02 [test] Update extend-pad.
extend-pad was not a clear demonstration of the EXTEND_PAD mode, so revamp
it to show the filter extending a 4 pixel surface to cover the entire
output. However, this hides a discrepancy with the vector surfaces that we
cannot prevent the external renders from applying an interpolation to the
border pixels, so we copy the original test to extend-pad-border to check
the desired behaviour on boundary pixels.
2008-11-03 14:24:59 +00:00
Chris Wilson
b3462c5616 [test] Convert a few residual '-out.*'
Catch a few -out.* hiding in boilerplate.
2008-11-03 14:24:39 +00:00
Chris Wilson
8fc3d0ffeb [mime-data] Allow embedding of arbitrary mime-types.
Use the surface user-data array allow to store an arbitrary set of
alternate image representations keyed by an interned string (which
ensures that it has a unique key in the user-visible namespace).

Update the API to mirror that of cairo_surface_set_user_data() [i.e.
return a status indicator] and switch internal users of the mime-data to
the public functions.
2008-11-03 11:24:12 +00:00
Chris Wilson
ab8a0bfd82 Add a COPYING file to each aux. source directory
Include a COPYING inside perf/, test/, util/ to clarify the licensing
conditions beneath the respective directories. This is because cairo
itself (libcairo.so) is LGPL-2.1/MPL-1.1 but that only relates to src/.
The auxiliary source files are under a mix of free licenses and we wish to
be clear just what license applies to each file.

In particular, cairo-trace needs to include the GPL terms and conditions.
2008-10-31 16:14:14 +00:00
Chris Wilson
992f74d884 [test] Use '.' as the field separator in the names
We frequently use '-' within the test name or format name and so we
encounter confusion as '-' is also used as the field separator. At times
this has caused a new test to break an old test because the new test would
match one of the old test's target specific reference images. So switch
everything over to use '.' between fields (test name, target, format,
subtest, etc.).
2008-10-31 13:50:55 +00:00
Chris Wilson
e90073f7dd [test] Build test suite into single binary.
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.
2008-10-31 12:30:11 +00:00
Adrian Johnson
05fce5bced PS/PDF: Set image Interpolation flag
If the filter mode is anything other than DEFAILT, FAST or NEAREST set the
Interpolate flag in the image dictionary so that a smoothing filter is
applied when rasterising the vector file.

As we have no control over the implementation of the Interpolate filter
(the PS/PDF specifications leave it undefined) we need to capture the
output of poppler/GS and update our reference images. (For a couple of
tests, the filtering is irrelevant so for those we set the filter to
NEAREST.)

Note that GhostScript's Interpolate filter does not work on rotated images
(and a variety of other transformations) so several of the PS reference
images have use nearest-neighbour sampling instead of a bilinear filter.
2008-10-30 21:24:54 +00:00
Chris Wilson
4f2f46ef1b Restore the ability to choose the internal font.
Behdad wants to include the feature with 1.10, so we enable it as early as
possible in 1.9 dev cycle to generate as much feedback as possible.

The first change is to use "<cairo>" as being a name unlikely to clash
with any real font names.

This reverts commits:
  a824d284be,
  2922336855,
  e0046aaf41,
  f534bd549e.
2008-10-30 19:14:45 +00:00
Chris Wilson
ab15d76275 [test] Remove XFAIL from user-font-mask
user-font-mask should PASS modulo the scaling anomalies in the external
renderers, so remove it from the XFAIL list.
2008-10-30 16:54:23 +00:00
Carl Worth
2922336855 Remove twin test case.
This test relied on the recently-removed ability to select
the internal twin-based font family with a name of "cairo".

Presumably, we'll want to bring this test case back when
some other means of requesting that font face is added.
2008-10-29 16:25:00 -07:00
Carl Worth
81439b3bc8 Add missing files to CLEANFILES and DISTCLEANFILES.
Without these files in these lists, "make distcheck" is unhappy.
2008-10-29 16:19:30 -07:00
Carl Worth
dd0416f5d4 Add recently added reference images to REFERENCE_IMAGES list.
This is just part of the make-distcheck routine for me. I know
Behdad added a test to check for missing images in the list, but
it doesn't seem to be getting run automatically as part of
'make test' nor 'make distcheck', (or if it it, then I'm not
noticing its output).
2008-10-29 16:19:29 -07:00
Chris Wilson
9cd9644c1d [test] Add a pass-through test.
Check that colour values are correctly passed through all the backends.
Simple test of the most fundamental functionality.
2008-10-29 22:04:34 +00:00
Carl Worth
10fd16a05d Mark user-font-mask as XFAIL.
This test is expected to fail due to a couple of known bugs. Chris
has fixes for both bugs, but is holding off on them until after 1.8.2
to prevent introducing any possible new bugs with his fixes.
2008-10-28 15:41:40 -07:00
Carl Worth
655546243f Rename user-font-image test to user-font-mask.
Otherwise the reference image (user-font-image-ref.png) gets
interpreted as an image-specific reference image for the
user-font test case resulting in a bogus failure.
2008-10-28 15:35:35 -07:00
Adrian Johnson
cdacf55e1b Add user-font-image test
Draws bitmap glyphs using cairo_mask(). This test exposes a bug in the
calculation of the glyph extents.
2008-10-27 22:07:04 +10:30
Chris Wilson
88935947d1 [test] Add leaky-dashed-stroke
A test case for a leak whilst closing a dashed stroke extracted from the
report by Jeff Muizelaar who found the artifact whilst looking at
  firefox http://people.mozilla.com/~jmuizelaar/BerlinDistricts-check.svg
2008-10-26 05:30:56 +00:00
Chris Wilson
86356a9578 [test] Add degenerate-dash to XFAIL.
PS (ghostscript) interprets the degenerate end-caps quite differently, and
perhaps slightly more rationally... Add this to XFAIL, until we have a
definitive specification on how we should behave.
2008-10-20 23:04:03 +01:00
Chris Wilson
6afcd82118 [test] Add a spline test.
Test the decomposition of 5 different types of spline curve. Useful test
for future experiments in improving the decomposition algorithm.

Note: the vector targets all need separate reference images due to their
lack of support for cairo_set_tolerance(). Also GS strokes the Bezier
curve differently using offset curves and opposed to transcribing the
outline of a pen.
2008-10-15 23:27:11 +01:00
Chris Wilson
595414bb78 [test/fallback-resolution] Extend to cover separate ppi x/y.
Adrian Johnson proposed a hack that fixed the current test by simply
scaling the dashed stroke by device_transform.xx. Obviously this exposes a
deficiency in the test case. So add an outer loop to iterate over several
common ppi for both x and y and in doing so reveal more ugly artifacts in
the current fallback code.
2008-10-14 14:24:49 +01:00
Chris Wilson
3eb4bc3757 [pattern] Optimize away fractional translation for NEAREST patterns.
As identified in bug 15479,
  Unpredictable performance of cairo-xlib with non-integer translations of a
  source surface pattern
  (https://bugs.freedesktop.org/show_bug.cgi?id=15479),
source surfaces with a fractional translation hit slow paths for some
drivers, causing seemingly random performance variations. As a work-around
Owen Taylor proposed that cairo could convert non-integer translations on
NEAREST sources patterns to their integer equivalents.

The messy detail involved here is replicating the rounding mode used by
pixman for the sample offset, but otherwise the conversion is fairly
trivial.
2008-10-13 23:34:51 +01:00
Chris Wilson
1d3453eee5 [pattern] Rescale the linear pattern matrix to avoid overflow.
As proof-of-principle, compute a scale factor to avoid overflow when
converting a linear pattern to pixman_fixed_t. Fixes test/huge-pattern,
but the principle should be extended to handle more cases of overflow.
2008-10-12 11:38:42 +01:00
Chris Wilson
6736faba3e [test/any2ppm] Do not attempt to compile PS without spectre
Since CAN_TEST_PS_SURFACE does not currently require spectre, we were
attempting to compile in spectre support for any2ppm even on systems
without libspectre installed. Fix that by adding a separate flag for
CAIRO_HAS_SPECTRE.
2008-10-11 19:01:43 +01:00
Benjamin Otte
b358711162 [test] Add huge pattern.
Add a test case to exercise range overflow during gradient construction.
2008-10-11 18:12:29 +01:00
Carlos Garcia Campos
8ac8e8c523 [test] Add ps2png check program using libspectre
Add a simple program to compliment pdf2png and svg2png.
2008-10-09 12:25:08 +01:00
Carlos Garcia Campos
3e6afb353d [test/any2ppm] Enable PS conversion using libspectre.
Complete the vector trilogy using libspectre to provide a similar
interface (to poppler and librsvg) around GhostScript.
2008-10-09 12:25:08 +01:00
Chris Wilson
96b083d3f0 [test] Exercise degenerate dashes.
Add a test case to capture the current behaviour when a segment ends on
an off/on dash transition.

Originally filed as bug:
  Miter artifacts for dashed strokes
  https://bugs.freedesktop.org/show_bug.cgi?id=17973
2008-10-08 19:04:42 +01:00
Chris Wilson
565c02a37e [svg] Use finer-grained fallbacks for SVG 1.2
The use of fine-grained fallbacks requires the native support of the
SOURCE operator applied to an image on the target surface. SVG 1.2
introduces the "comp-op:src" mode fulfilling this criteria - so we can
enable fine-grained fallbacks for 1.2+.

Update test/fine-grained-fallbacks to exercise this pathway in SVG 1.2 -
as SVG natively supported all the current operations within that test.
This reveals yet another librsvg bug in handling SVG 1.2.
2008-10-08 12:43:35 +01:00
Chris Wilson
308485a3fc [test] Add a test for a reported regression by Michael Natterer.
mitch reported on irc that expose events in the gimp were suffering from
artifacts which he tracked down to a bug with clipping and source
surfaces. This is the cairo test case for that regression.
2008-10-07 20:23:12 +01:00
Chris Wilson
8cf399b944 [test] Add a test to exercise the internal twin font
Although Behdad promises that the rendering is subject to improvement,
introduce a test to check consistency across platforms and update as
required.
2008-10-07 01:45:46 +01:00
Chris Wilson
4aa0991a11 [test] Mark fallback-resolution as XFAIL.
There appears to be no simple solution here, as it seems to be a
fundamental flaw in the design of the meta-surface wrt to replaying into
a fallback image. (I may be wrong, but if Carl found no easy solution then
I feel no shame for my own failure ;-)
2008-10-06 12:02:29 +01:00
Chris Wilson
2a347a92b0 [test/show-glyphs-many] Re-enable test to trigger crash in xlib.
Moral of this story is bugs cluster. If we made a mistake, especially in a
complicated bit of code that is interfacing with another library, then we
are likely to make a similar mistake in future. Disabling this test hid a
regression between 1.4 and 1.6.
2008-09-30 15:28:48 +01:00
Chris Wilson
d9f50d7841 [test/filter-nearest-offset] Remove XFAIL status
I swear that when I said that it was a rounding error, I was looking at an
image where the squares were overlapping the lines and had a listing of
all the coordinates used. However, the current output on all the machines
I have to hand is correct so I believe the underlying bug to be fixed.

Update the reference images for the external renderers because (a) GS
exhibits the same bug cairo had and (b) librvsg/PDF do not use NEAREST
when applying surface patterns, so the squares are blurred as a result.
2008-09-30 11:13:21 +01:00
Chris Wilson
3b33d49d37 [test/filter-bilinear-extents] Remove XFAIL.
With the reintroduction of Carl Worth's and Owen Taylor's work to expand
pattern extents as necessary to include extra samples due to the filter
radius, we expect filter-bilinear-extents to PASS. This patch series is
important as it factors out our assumptions about filter radius into a
single function and cleans up the code in its wake.

However, since the external PS/PDF renderers do not necessarily use the same
filter as cairo (and currently they only use NEAREST due to lack of
/Interpolate emission in those backends) we can expect differences in test
output. So add the respective reference images to capture current
expectations and to highlight future changes.

Fixes bugs:
  Bug 15349 - bad clipping with EXTEND_NONE
  [https://bugs.freedesktop.org/show_bug.cgi?id=15349],
  Bug 15367 -Improve filtering handling in cairo-pattern.c
  [https://bugs.freedesktop.org/show_bug.cgi?id=15367]
2008-09-29 09:46:50 +01:00
Chris Wilson
9841d9d58e Automate error checking for fallback-resolution.
For this we extend the boilerplate get_image() routines to extract a
single page out of a paginated document and then proceed to manually
check each page of the fallback-resolution test.

(Well that's the theory, in practice SVG doesn't support multiple pages
and so we just generate a new surface for each resolution. But the
infrastructure is in place so that we can automate other tests,
e.g. test/multi-pages.)
2008-09-28 14:57:12 +01:00
Chris Wilson
39e4a0bcd0 [test] Update list of REFERENCE_IMAGES
A few typos, deletions and additions from the inclusion of versioned
SVG/PS testing.
2008-09-27 19:33:51 +01:00
Chris Wilson
ffbb67303c [test/gradient-constant-alpha] Remove ps2 reference images.
PostScript level 2 has no support for gradients and so should uses image
fallbacks and hence do not require the GS specific reference images.
2008-09-27 18:54:45 +01:00
Chris Wilson
95c3c06932 [surface] Only return early for no traps if the operator is bounded by a mask.
If the operator is unbounded, then its area of effect extends beyond
the definition of the mask by the trapezoids and so we must always perform
the image composition.

Fixes test/operator*.
2008-09-27 17:17:58 +01:00
Adrian Johnson
1e45da48b5 Update ref images in Makefile.am 2008-09-27 14:38:22 +09:30
Adrian Johnson
c0535e8e33 Remove miter-precision from XFAIL
The miter-precision PS output prints correctly on my LaserJet 4050. So
file a Ghostscript bug, supply PS ref images and remove from XFAIL.
2008-09-27 14:31:50 +09:30
Chris Wilson
5b97ee6525 Allow cloning sub-regions of similar surfaces.
Previously the rule for clone_similar() was that the returned surface
had exactly the same size as the original, but only the contents within
the region of interest needed to be copied. This caused failures for very
large images in the xlib-backend (see test/large-source).

The obvious solution to allow cloning only the region of interest seemed
to be to simply set the device offset on the cloned surface. However, this
fails as a) nothing respects the device offset on the surface at that
layer in the compositing stack and b) possibly returning references to the
original source surface provides further confusion by mixing in another
source of device offset.

The second method was to add extra out parameters so that the
device offset could be returned separately and, for example, mixed into
the pattern matrix. Not as elegant, a couple of extra warts to the
interface, but it works - one less XFAIL...
2008-09-27 02:20:42 +01:00
Chris Wilson
e0f2147107 [boilerplate] Add a PS 2 target.
Ensure that we can generate PS2 output when required by creating a PS
level 2 target and using GhostScript for conformance testing.
2008-09-26 17:26:25 +01:00
Chris Wilson
0c030d3b76 [boilerplate] Add svg-1.2 target.
SVG 1.2 is sufficiently different from 1.1 that it has separate code
paths within cairo-svg-surface and so justifies its own boilerplate
target.
2008-09-26 17:11:51 +01:00
Adrian Johnson
907f550a1b Fix bitmap-font XFAIL
Images in PDF are scaled to a unit square. In PS we set the
ImageMatrix to do the same. When the image is painted we scale the
graphics state to paint the image at the right size. In the case of
Type 3 fonts consisting of bitmap images we want to paint the images
at their original size so we scale the graphics state by the image
width and height.

The bug was that we were scaling by the width/height in the glyph
metrics. For non rotated fonts this worked. However for rotated fonts
the width/height of the glyph images may be larger than the
width/height in the glyph metrics. This resulted in a Type 3 font
where the glyph images were scaled slightly smaller than they should
have been.
2008-09-26 20:26:55 +09:30
Carl Worth
9a210ab228 Add missing reference images REFERENCE_IMAGES list.
The standard ritual before being able to release.
2008-09-25 15:57:06 -07:00
Carl Worth
a172d87b4c Make device-offset-scale an XFAIL test due to SVG failure.
It's sad to have to do this. Back with commit 1a9809baa was the
original fix for device-offset-scale, (right after the test was
added), and it fixed it for all backends, including SVG. The fix
involved combining device_transform and CTM into the pattern matrix.

But then, we added the mask-transformed-image and
mask-transformed-similar tests, and commit 20be3182ef for fixing an
SVG-specific bug with masks. That fix involved subtracting away the
pattern matrix when emitting a mask to adhere to SVG semantics.

Unfortunately, this change also made the device-offset-scale test
start failing. A correct fix would probably subtract away only the CTM
portion and not the devive_transform. However, the
_cairo_svg_surface_mask function sees only a pattern matrix and
doesn't know how to separate it into CTM and device_transform pieces.

So fixing this will probably require a change to the surface-backend
interface. And since we're not willing to do that so close to a major
release, we're adding yet another XFAIL.
2008-09-25 02:49:44 -07:00