Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
reflected-stroke crashed because the function used a wrong closure
|
|
|
|
|
|
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>
|
|
This fixes "text-rotate" in the test suite for the image backend and
"overlapping-glyphs" for the xcb backend.
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
|
The previous commit only added this option and made sure it gets set, but it
didn't actually have any effect. This commit now implements this option.
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
|
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
|
This ports commits 36b4b0631 and 7ab9ce1b9 from the image backend to xcb. Look
there for an explanation of why this is correct, I only copied this over and the
test suite said it was good. :-)
This fixes unantialiased-shapes, a1-rasterisation-rectangles and
a1-rasterisation-triangles.
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
|
_cairo_xcb_surface_fixup_unbounded_boxes() calculated a list of boxes that it
has to clear to make an unbounded operator work correctly. Then it cleared the
boxes that were drawn instead of clearing the list of boxes that it has to
clear.
The reason that this wasn't noticed before is that there is an optimization in
case we have only one box instead of a whole list of boxes. This hid the bug.
This fixes the "unbounded-operator" test case.
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
|
Calling _cairo_xcb_surface_ensure_picture() on a XCB surface whose fallback
member is non-null is always an error. It's possible that the surface first gets
a picture assigned and later it's fallback member is set. In this situation,
it's still wrong to use the surface's picture for any drawing-
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
|
Currently we print the backend description before every time, which is
overly verbose. As the information doesn't^Wshouldn't change, simply
print it before running the first test of each target.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Spotted by Uli Schlachter.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Spotted by Uli Schlachter when I copied the image glyphs clipping to
xcb.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
when one circle not inside the other. Pixman now follows the PDF
specification.
|
|
when one circle not inside the other. Pixman now follows the PDF
specification.
|
|
The test for zero stops is now in gstate.
|
|
The test for opaque gradients in _cairo_pdf_surface_add_pdf_pattern()
must be identical to the test in
_cairo_pdf_surface_emit_pattern_stops() other wise the PDF file will
reference a smask that does not exist.
The _cairo_pattern_is_opaque() test is too strict for PDF as PDF can
draw EXTEND_NONE gradients with opaque color stops without requiring a
smask.
|
|
It seems like the idea here was to optimize for the special case of a
rectangular clip, where the region operation could be replace by
direction operation on the draw extents. However, we cannot modify the
geometry for all operations, and in particular the glyphs. So remove
this from the common compositing path.
This fixes partial-clip-text in the test suite.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
I was looking around for changes that I could do. This what I came up with.
Seems boring, but nothing better came up this time.
Signed-off-by: Uli Schlachter <psychon@znc.in>
[ickle: Apologies for not doing it on your behalf.]
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
We want surface->depth to end up as "32", so we have to invent an alpha mask.
This mask is not used anyway (only its popcount), but still this should get a
less ugly fix.
This was found because "assert (reply->depth == surface->depth);" in
_get_image() failed.
Original-patch-by: Ross Alexander <Ross.Alexander@EU.NEC.COM>
Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
If a cairo surface's fallback member is set, the current content of that surface
is in-memory and the X server has an outdated version of stuff. Our
optimizations for doing in-server copies are wrong in this case and we should do
stuff in cairo instead of the X server.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When an XCB surface's fallback member is not NULL, we did some rendering that
the X server couldn't do for us and thus did that internally in cairo instead.
This means the X drawable's content is out of date and should not be used for
drawing anything.
This adds an assert which checks for that situation.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
imageSurface was used to store a reference to the fallback image
generated by during fallbacks for gradients. The fallback code
has been removed as it is not needed anymore, thus this field can
be removed as well.
|
|
Gradient setup does not depend anymore on the surface on which the
gradient will be composited.
|
|
Some pattern types (gradients, surface patterns) require some
temporary information to be stored as "graphic state", because it
doesn't belong to CGContext. Previously all of this data was stored
inside the surface during the drawing operations, now it's in a
stack-allocated structure (of type cairo_quartz_drawing_state_t).
Based on a patch by Robert O'Callahan <robert@ocallahan.org>.
See https://bugzilla.mozilla.org/show_bug.cgi?id=522859
|
|
DO_SHADING, DO_IMAGE and DO_TILED_IMAGE sources all require the source
to be painted over the whole surface (inside the clip region), thus can
share the same code path in drawing functions.
|
|
Both DO_SOLID and DO_PATTERN setup the underlying CGContext to directly
use the chosen color/pattern when filling and stroking, thus require no
additional drawing operations and can share the same drawing code.
|
|
Share some code between the drawing functions by saving the state
and setting the operator when setting up the source and by restoring
the state during teardown.
Based on a patch by Robert O'Callahan <robert@ocallahan.org>.
See https://bugzilla.mozilla.org/show_bug.cgi?id=522859
|
|
DO_NOTHING and DO_UNSUPPORTED are not actual actions and are better
handled by returning an appropriate cairo_int_status_t (and falling
back, if needed).
|
|
Instead of extending the range of the interpolation parameter to make
sure that pixels exactly on the edge get drawn, we are now asking
quartz to extend the gradient.
|
|
Make PAD extended gardients more robust, by computing the color
explicitly like for REPEAT and REFLECT extend modes.
This removes a hack introducing a small but non-0 negative value
that ensured that the gradient started with the correct color (but
not that it ended with the correct one, too).
Fixes linear-gradient-large.
|
|
By keeping "virtual extents", quartz surfaces now keep track of
the extents where they want the gradients to be consistent.
This works across various API for surface creation and editing:
- cairo_surface_create_for_rectangle
- cairo_surface_create_similar + cairo_surface_set_device_offset
- cairo_push_group/cairo_pop_group
This method does not use clip extents, so it also makes gradient
rasterization independent of clip/path extents.
|
|
Implement _cairo_rectangle_union(), a function to compute a rectangle
containing two input rectangles.
|
|
|
|
The gradient fallback path is not used anymore.
|
|
Pixman master (soon to become pixman 0.20) implements radial
gradients based on the PDF specification (section 8.7.4.5.4).
Quartz natively implements them, so falling back is not needed
anymore.
|
|
Degenerate linear gradients are reduced to solid gradients in
gstate, so backends do not need to handle them.
|
|
Pixman master now rasterizes radial gradients following the PDF
specification (see section 8.7.4.5.4 of PDF 32000-1:2008).
|
|
to fix some bugs
|
|
The new image is more accurate as a result of the fix in 165a14b5
|
|
it is not yet implemented
|
|
|
|
The new dynamic html page supersedes the old make-generated static
html page.
|
|
This page uses JavaScript to parse test log files and create the
test table according to the results. It also allows dynamic selection
and hiding of rows/columns based on a chosen parameter and table
structure change, by dragging a field from rows to columns and vice
versa.
Left click selects the cells with the chosen parameter-value association.
If these cells are exactly the only show cells, it hides them and shows
all the other ones, instead.
Right click inverts the visibility of the cells with the chosen
parameter-value association.
When some rows are hidden, the PASS/NEW/FAIL/XFAIL/CRASH counters show
both the currently shown test case count and the total count, if they are
different: "23[62]" means that there are 62 test case in that category,
but only 23 are currently visible.
Dragging a field from the row (or column) header to the column (or row)
header rebuilds the table to have that field along the columns (or rows),
updating PASS/NEW/FAIL/... counters and showing the whole table again.
Test names are hyperlinks to the test log.
Images are hyperlinks to themselves.
|
|
When tests are registered, they are prepended to a list.
Reverting the list, we get a list whose order is the same as that
of registration.
|