Age | Commit message (Collapse) | Author | Files | Lines |
|
The paginated surface layer was missing its get_font_options function.
It now defers to the target surface. The PDF backend already had a
get_font_options function, but the PS backend was also missing it.
This should fix the problem with 72DPI hinting seen in glyph paths in
PostScript output.
Thanks to Owen Taylor for identifying this problem and the correct
fix.
|
|
params are interpreted correctly
|
|
With this SMask support, the PDF backend is now able to handle a very
large subset of the things that are likely to be thrown at it in
common operation, (for example, when handling images and text from web
pages).
|
|
Since the switch to using paginated, we have a guarantee that the following functions
will never be called. So we drop them now:
_cairo_pdf_surface_composite
_cairo_pdf_surface_fill_rectangles
_cairo_pdf_surface_composite_trapezoids
_cairo_pdf_surface_old_show_glyphs
|
|
There's a bunch of careful matrix transformation here needed to
resolve the differences between cairo and PDF pattern matrices,
(primarily due to the different location for the origin).
This fixes the several PDF test suite failures that recently appeared
when we switched from ARGB32 to RGB24 source surface patterns.
|
|
|
|
|
|
|
|
paths).
This isn't very exciting text output---it simply turns every call to
cairo_show_glyphs into a single filled path. But at the very least,
text will no longer trigger image fallbacks for the PDF backend.
With this commit, the following tests change from all-fallback to
all-native for the PDF backend:
show-text-current-point
text-antialias-gray
text-antialias-none
text-antialias-subpixel
text-cache-crash
text-rotate
There are rasterization differences in the output (cairo vs. freetype)
so this commit also adds new PDF-specific reference images for some of
those tests so that the suite continues to report PASS.
|
|
Perhaps there's a way to preserve that hint in PDF output, but until
we have code that actually does that, the correct thing to do is to
call it unsupported and let the fallbacks do their thing.
With this commit, the two regressions that were recently introduced
now pass again. Specifically:
rectangle-rounding-error
unantialiased-shapes
|
|
Fix general broken-ness in emit_surface_pattern, enough so that a new
implementation of _cairo_pdf_surface_paint does something useful. With
this commit, the following tests switch from all-fallback to
all-native and still pass the test suite with flying colors:
caps-joins
caps-sub-paths
clip-fill-rule
clip-fill-rule-pixel-aligned
clip-nesting
clip-twice
dash-caps-joins
dash-offset-negative
leaky-polygon
line-width
paint
path-data
transforms
Meanwhile, the following two tests also switch from fallback to
native, but cause the test suite to complain about failures. These
both look like a mostly harmless failure to respect the ANTIALIAS_NONE
hint in the PDF output:
rectangle-rounding-error-pdf-argb32-out.pdf
unantialiased-shapes-pdf-argb32-out.pdf
|
|
|
|
The merge in 66ed9811cc542d99cb5a6b6b792c9a9f0832fbf9
re-added this line, which makes cairo link to C++
libraries even on non-BeOS systems.
This was originally fixed in 69acfa6576e8d2b97e3e3b8c06badf5486ae0315
|
|
Generalize all functions that emit a source pattern to emit both
for the stroking and non-stroking PDF properties. Also add an
implementation of _cairo_pdf_surface_stroke.
With this commit in place, the following tests change from
all-fallback to all-native output while no tests report any new
failures:
dash-zero-legnth
fill-and-stroke
multi-page
new-sub-path
rel-path
self-intersecting
|
|
|
|
Conflicts:
src/cairo-path-stroke.c
src/cairo-pdf-surface.c
src/cairo-ps-surface.c
|
|
After this patch we have three PDF tests passing with native output:
clip-all
fill-rule
nil-surface
|
|
Cairo and SVG differ in their implementation of mask. Cairo only uses alpha channel where SVG uses all channels. So, before using a surface for masking, we use a filter that sets RGB channels to 1.0.
Support for CAIRO_CONTENT_ALPHA is similar and use the same filter when a SVG alpha surface is composited.
|
|
That doesn't work since libxml replace them by
They were intended to ease readability of generated files.
|
|
modified when clearing it.
|
|
Also add support for testing this feature in test/cairo-test.c
And a bunch of unwanted commit of sgml files.
|
|
|
|
|
|
cairo-ps-surface.c.
We're setting things up here for better sharing as PDF surface (and
others) now want to do some of the same analysis.
|
|
|
|
|
|
This closes bug #5816:
Image surfaces do not start out blank by default
https://bugs.freedesktop.org/show_bug.cgi?id=5816
This also fixes all of the test suite failures introduced by moving
the CLEAR on blank page optimization up to the paginated surface from
the PS surface.
|
|
|
|
These new stubs explicitly return UNSUPPORTED unconditionally. This is
no different than the implicit UNSUPPORTED which the analysis surface
was inferring from NULL for 4 of the functions before.
However, _cairo_pdf_surface_fill was actually trying to draw things,
but without correctly characterizing it during the analysis stage.
This was just an oversight, as the PDF surface was always triggereing
full page fall backs anway due to the initial unsupported paint with
CLEAR.
Now, we explicitly return UNSUPPORTED for all drawing operations so we
get image fallbacks by design and not by accident.
|
|
|
|
This allows for any surface using the paginated_surface backend to
easily do stuff at the beginning of each page, (such as writing out
any per-page header necessary).
This replaces some of the per-page state tracking that the PS surface
was doing, (though it still has some left for its optimization of
CLEAR on a blank page).
|
|
|
|
CAIRO_CONTENT_COLOR
|
|
region is defined.
|
|
function pointer.
|
|
|
|
This adds an aactual test_paginated_surface_backend rather than just
having this test surface create a paginated surface around an image
surface. This is a more realistic test of what a paginated surface is
and should be more useful as an example of how to use the paginated
surface, (and in particular the analysis portions).
|
|
|
|
The extra check makes sure zero length segments are not skipped when computing
the dash start state. This is needed so that we get proper line capping if, for
example, the first dash segment has zero length and we have a dash offset of
zero.
|
|
Face computation still works if a line has zero length, all that is needed is a
slope and a point. This patch fixes bug #5561 because the faces are initialized
even if the segment has zero length as expected by
_cairo_stroker_line_to_dashed.
|
|
This makes the slope calculation more accurate for dashed lines by computing it
once for the entire line instead for each individual dash segment. It also
adjusts stroker_line_to() to match the new convention for
stroker_add_sub_edge().
|
|
This makes line_to_dashed more like line_to by returning immediately on
degenerate paths. This is needed so that we can do the slope calculation for
the entire line.
|
|
|
|
This is based on a suggestion by Michael Sweet.
|
|
|
|
Conflicts:
src/cairo-hash.c
src/cairo-ps-surface.c
|
|
|
|
|
|
|
|
|