Age | Commit message (Collapse) | Author | Files | Lines |
|
Fixes crash in fill-and-stroke-alpha.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Fixes crash in a8-mask.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
|
|
Having spent the last dev cycle looking at how we could specialize the
compositors for various backends, we once again look for the
commonalities in order to reduce the duplication. In part this is
motivated by the idea that spans is a good interface for both the
existent GL backend and pixman, and so they deserve a dedicated
compositor. xcb/xlib target an identical rendering system and so they
should be using the same compositor, and it should be possible to run
that same compositor locally against pixman to generate reference tests.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
P.S. This brings massive upheaval (read breakage) I've tried delaying in
order to fix as many things as possible but now this one patch does far,
far, far too much. Apologies in advance for breaking your favourite
backend, but trust me in that the end result will be much better. :)
|
|
|
|
File data used by a shading pattern must reusable since the pattern
may read the file multiple times. As currentfile is not reusable, use
the /ReusableStreamDecode to make it reusable.
|
|
|
|
When the mask is an A1 image (or can be reduced to A1) use the imagemask operator.
|
|
|
|
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
to ensure that when the PS is converted to PDF the text can be extracted.
|
|
Printing PDFs with large monochrome or grayscale images would result
in the images being blown up to 24-bit color images. Some printers are
very slow to print huge color images.
|
|
that was preventing string of glyphs from separate calls to
cairo_show_glyphs() being merged.
|
|
If the clip wholly covers the operation, we do not need to set one, and
if the current clip similarly covers the operation we do not to unset
it.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
For an unbounded surface we cannot assume (0, 0, surface_width,
surface_height) as that is wrong and causes the operation to appear
clipped.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
A common requirement is the fast upload of pixel data. In order to
allocate the most appropriate image buffer, we need knowledge of the
destination. The most obvious example is that we could use a
shared-memory region for the image to avoid the transfer cost of
uploading the pixels to the X server. Similarly, gl, win32, quartz...
The other side of the equation is that for manual modification of a
remote surface, it would be more efficient if we can create a similar
image to reduce the transfer costs. This strategy is already followed
for the destination fallbacks and this merely exposes the same
capability for the application fallbacks.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
|
|
Should have been removed when the FT dependency was removed from type 1.
|
|
Step 1, fix the failings sighted recently by tracking clip-boxes as an
explicit property of the clipping and of composition.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Remove all remaining FT dependencies from the Type1 subsetting.
|
|
Allow a backend to completely reimplement the Cairo API as it wants. The
goal is to pass operations to the native backends such as Quartz,
Direct2D, Qt, Skia, OpenVG with no overhead. And to permit complete
logging contexts, and whatever else the imagination holds. Perhaps to
experiment with double-paths?
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Now that the page size is specified by %%DocumentMedia
we can make %%BoundingBox compliant.
|
|
The tolerance argument of _cairo_gradient_pattern_box_to_parameter ()
is in pattern space, so to have it constant in device space, it should
depend on the pattern matrix.
In ps and pdf the fallback resolution alone is not meaningful. The
resolution/fallback_resolution ratio should be used instead.
|
|
The gtk-doc comments contain some typos and are missing some escaping.
|
|
PS and PDF have native support for mesh patterns, but they have encode
mesh points and colors in an appropriate binary stream.
cairo_pdf_shading_* functions implement the encoding, which is the
same for PDF and PS.
|
|
If all the stops of the gradient have the same offset and the
pattern's extend mode is EXTEND_PAD, then we cannot use the stops'
domain as the interpolation parameter range because this would produce
a gradient with the same start and end objects. Such ranges tickle
bad behaviour in rasterisers.
We replace the color function with an appropriate step function
defined on [0 1].
Fixes radial-gradient-one-stop for pdf and ps3.
Reviewed-by: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
|
|
To draw repeated gradients in ps, which only supports none and pad
extended gradients, we need an appropriate reparametrization of the
gradients that will cover the whole clip region without needing
repeats.
This commit adds support for the drawing of reflect/repeat-extended
radial gradients through native ps patterns, using pad-extension and
no fallbacks.
Reviewed-by: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
|
|
_cairo_pattern_is_opaque() returns false for none-extended linear
gradients and for radial gradients, but fallback is only needed if
they have non-opaque stops.
This can be tested using _cairo_pattern_alpha_range(), which only
analyses the part of the pattern which is drawn.
Reviewed-by: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
|
|
Both the ps and pdf backends are open coding analyses of the
range of pattern alphas. This patch factors out a new function
_cairo_pattern_alpha_range() to do that for them.
Reviewed-by: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
|
|
This ensures that the compiler is able to automatically point out any
unhandled pattern type.
Reviewed-by: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
|
|
Painting of some pattern was broken because the paint operation was
implemented as a fill to a rect containing the clip, but this rect was
not transformed as appropriate (using the cairo_to_ps matrix).
PDF simply fills the whole surface rect, so we implement the same
behavior in PS.
Fixes clip-group-shapes-circles, clip-stroke, linear-gradient-extend,
linear-gradient-one-stop, radial-gradient-one-stop.
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=24688
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=24691
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=31632
|
|
This sets CAIRO_ROUND_GLYPH_POS_OFF in all surface backends that didn't use
CAIRO_ROUND_GLYPH_POS_ON.
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
|
when one circle not inside the other. Pixman now follows the PDF
specification.
|
|
The test for zero stops is now in gstate.
|
|
|
|
it doesn't print on a LaserJet 4050
|
|
Make PS TrueType embedding use the winansi glyph mapping for latin subsets.
Enable use of latin subsets in PS.
|
|
|
|
What we want to use is size_t, but we don't want the implied POSIX
dependency. However, POSIX does say that size_t is an unsigned integer
that is no longer than a long, so it would appear safe to use an
unsigned long as a replacement. Safer at least than unsigned int.
|
|
I did this manually so I could review the docs at the same time.
If anyone finds typos or other mistakes I did, please complain to me (or
better: fix them).
|
|
Getters should not set errors on passed in input. So we don't.
Caught by api-special-cases test
|