Commit graph

10202 commits

Author SHA1 Message Date
Chris Wilson
2587b9dfd3 ft: Export FreeType synthesis options
Currently you can only specify that a cairo_ft_font_face_t should
synthesize a font (to make a bold variant) through an FcPattern. That is
direct consumers of the public cairo-ft API have no control over the
synthesize options.

Rectify this by creating some public API to allow control over the
synthesis flags, and include the ability to construct an oblique as
well an embolden font.

Based on a patch by Deokjin Kim <deokjin81.kim@samsung.com>.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-29 12:04:54 +00:00
Chris Wilson
231f0e32b9 ft: Remove unused HINT_METRICS from ft_font.extra-flags
This is handled through the normal cairo_font_options_t and was not
used.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-29 11:22:13 +00:00
Chris Wilson
a49a26f961 gl: Various fixes for glyphs
Not 100% improvement, there are still a variety of failures with
GLXWindows, but getting there. At least it fixes more things than its
breaks...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-29 10:27:39 +00:00
Chris Wilson
3c665102c2 spans+image: Fix clipping with polygons and spans
Fixes: clip-source, random-clip
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-28 22:27:18 +00:00
Chris Wilson
be5ab6df68 surface-wrapper: Apply the scaled-font ctm and non-default font-options
Improves record*-text-transform.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-28 18:11:22 +00:00
Chris Wilson
2c908f8a42 test: Regenerate reference images for vanilla record tests
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-28 17:59:13 +00:00
Chris Wilson
ef7e57f0fd scaled-font: Assign a temporary hash value for the placeholder
Fixes [large-]twin-antialias-mixed.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-28 17:44:15 +00:00
Chris Wilson
050c246174 test: Add record90 to exercise replaying a rotated recording surface
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-28 17:38:21 +00:00
Chris Wilson
4429c7a301 scaled-font: Refactor the hash computation
Remove the cut'n'paste duplication and replace the hash computation with
a proper function.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-28 15:05:57 +00:00
Chris Wilson
da381da7f3 scaled-font: Key the cache on the original font face
Complete the task started in cd4b2d843b by
remembering to compute the insertion hash on the original font face as
well as the lookup hashes. Also take advantage by deferring resolution
of the implementation for the font face until after we fail to find an
already constructed scaled font.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-28 14:50:16 +00:00
Chris Wilson
1cfd27851e test: Set record2x-fill-alpha as an xfail
As the path is converted to fixed-point prior to application of the
replay scale factor, we currently do anticipate some loss in precision
and slight difference in antialiasing.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-27 15:14:33 +00:00
Chris Wilson
668e8eac3a test/record: Fix typo in record*-text-transform
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-27 15:14:33 +00:00
Chris Wilson
b1b5e9b908 surface-wrapper: Apply replay transforms to scaled font
Improves: record2x-select-font-face, record2x-text-transform
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-27 14:48:59 +00:00
Chris Wilson
78aeb0d14c test: Verify scaled replay of a recording surface
After this works, we may also like to check simple rotations and an
affine transform.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-27 14:47:25 +00:00
Adrian Johnson
2d3a1c7318 pdf: ensure all transparency groups are isolated 2012-02-25 16:57:58 +10:30
Adrian Johnson
2de75b1a34 test: add test to check that pdf transparency groups are non-isolated 2012-02-25 16:53:26 +10:30
Adrian Johnson
589216c1e3 win32: fix compilation on cygwin 2012-02-25 09:52:10 +10:30
Chris Wilson
7154f646d3 pdf,ps: The device offset only needs to taken into account for raster patterns
Ordinary patterns have their device offsets pre-baked into the pattern
matrix. The difference with raster patterns is that the surface is
generated upon use by the pdf,ps and so its device offset is not known
until then.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 16:15:31 +00:00
Chris Wilson
99ec915b97 test: a1-line-width is a test of rasterisation, so skip for the vector backends
PDF/PS do not have the concept of aliased rendering, so like many of the
other rasterisation tests, a1-line-width cannot be tested satisfactorily
on those backends.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 14:30:14 +00:00
Chris Wilson
513841263e recording: Remove superfluous reset
When merging the two-clauses, I forgot to remove the second
_cairo_recording_surface_reset()

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 14:07:10 +00:00
Chris Wilson
61050f5445 test: Add a couple of reference images for the recording surface
In tests where we apply a scale factor to a similar source, the
recording surface will produce different results to image as the scaling
of the source is performed on the geometry and not on a raster image and
so avoids scaling artefacts.
2012-02-24 13:56:41 +00:00
Chris Wilson
c39cb77d64 subsurface: Fix typo in snapshot creation
I need to remember that the translation for the pattern matrix is the
inverse of the translation for drawing.

Fixes: subsurface-modify-parent
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 13:51:25 +00:00
Chris Wilson
b2cb9ec31e recording: Optimize a copy of one recording surface onto another
Rather than store a command to copy from a reference of another recording
surface onto this, just replay the other recording surface.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 13:51:25 +00:00
Chris Wilson
8028f04a91 debug: Add some TRACE statements for recording surfaces and snapshots
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 13:51:25 +00:00
Chris Wilson
6b5199645a image: Handle recursive drawing of recording surface
Borrow the technique for installing a proxy-snapshot developed for
acquiring the image from a recording surface.

This prevents the cairo from exploding and using up all memory due to
infinite recursion, but it does break a few tests that perform
self-copies with differing transformations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 13:50:11 +00:00
Chris Wilson
080bcfcb1a {mask,traps}-composite: Restore unsetting of the is-clear flags for the mask
I forgot that creating any image by defaults results in pixman
calloc'ing the pixel data and so cairo helpfully sets the is-clear flag
on the surface.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-24 12:14:48 +00:00
Chris Wilson
b079f18fad xlib: Handle window-to-window copies by avoiding the use of a clip region
Rather than compress the copies into a clip + copy, iterate over and
perform each copy separately so as to avoid the confusion for
window-to-window copies and the solitary GC->pCompositeClip.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-23 13:44:28 +00:00
Chris Wilson
cc09b29752 xlib: Tidy conversion of xrender format to cairo_content_t
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-23 13:44:28 +00:00
Andrea Canciani
d95cf87c03 boilerplate: Use any2ppm from ANY2PPM env variable
If the environment variable ANY2PPM is set, use it as the path to the
any2ppm program. Otherwise, default to "./any2ppm" as before.

This makes it possible to set the ANY2PPM variable in the
Makefile.win32 build system, which makes it possible to use the "test"
target on the script backend.
2012-02-23 00:16:44 +01:00
Chris Wilson
716a79bfcb xlib-xcb: Wrap cairo_xlib_device_debug_cap_xrender_version
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 21:33:43 +00:00
Chris Wilson
7e3c963191 surface-wrapper: Transform the clip by the device-transform correctly
Fixes paginated fallbacks.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 19:55:22 +00:00
Chris Wilson
d6908135f4 image: Tidy reduction to EXTEND_NONE for replay surfaces
As _cairo_surface_get_source() returns the limits of the source, a chunk
of code to query the source extents became redundant.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 19:54:43 +00:00
Chris Wilson
58639857f9 script: Update mesh pattern for earlier change of csi operators
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 17:42:16 +00:00
Chris Wilson
1b1b1ecc6f traps-compositor: add a missing release()
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 15:57:36 +00:00
Chris Wilson
e5cb567f5d xlib: Trim the ximage to match the trimming of the intermediate
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 15:49:34 +00:00
Chris Wilson
1111cc50d3 xlib: Make the core compositor actually paint
It helps to actually set the fill colour when drawing...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 15:44:55 +00:00
Chris Wilson
5b107587e7 xlib: Correct the device-offset applied to the map-to-image result
A typo, a typo surely, to use extents->y twice instead of the more
normal x, y.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 15:13:26 +00:00
Chris Wilson
85110d9ce1 xlib: Trim the intermediate upload image to match the upload extents
Rather than transform the whole image, just convert the region of
interest.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 15:06:48 +00:00
Chris Wilson
89fddc38eb traps-compositor: Reduce a complex clip generation to an ADD operator
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 12:57:12 +00:00
Chris Wilson
9e640c7ae2 mask-compositor: Acquire the target surface when creating the composite mask
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 12:32:44 +00:00
Chris Wilson
605f23d155 xlib: Hook up copy_boxes for the mask compositor
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 11:27:05 +00:00
Chris Wilson
6ab1deb5c6 boilerplate/xlib: Exercise the mask based compositor for xrender version 0.0
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 11:24:14 +00:00
Chris Wilson
08de30d8b5 test: Add a set of reference images for the mask-based compositor
Serves as another reference for some xlib targets.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 10:51:30 +00:00
Chris Wilson
3d499ea901 xlib: Replace obsolete disable-xrender with shiny new device debug interface
As prototyped with xcb.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 10:41:37 +00:00
Chris Wilson
73df8eb8db test/xlib: Remove stale reference images
We know have a swrast reference compositor for xlib (test-traps) and so
should not need these old xlib specific reference images.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 10:19:18 +00:00
Chris Wilson
b2132eed79 boilerplate/xlib: The xlib-fallback should be visually identical to image 2012-02-22 10:18:56 +00:00
Chris Wilson
cd4fd8a802 test: Update traps for changes in reference font 2012-02-22 10:11:16 +00:00
Chris Wilson
c9f18bb034 test: Update base reference images for new reference font
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 10:09:05 +00:00
Chris Wilson
da8841cc5e test/README: Update sha1sums for fonts used
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-22 09:30:32 +00:00
Chris Wilson
2d74eaf92f image: Add the get-font-options callback again.
In the midst of trying to simply export the
_cairo_image_surface_get_font_options() for subclassing, I accidentally
decoupled it from the image surface backend. Mea culpa.

Fixes regression from 8bea52bb (Add preliminary damage tracking), which
should not have even touched the backend structure except for an ugly
rebasing.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-02-20 21:05:54 +00:00