Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Add extra pixel on each side of the glyph's black box returned by
GetGlyphOutlineW, to avoid clipping ClearType pixels.
From https://bugzilla.mozilla.org/show_bug.cgi?id=445087
|
|
the gradient line of a nonrepeating linear gradient.
I discovered a small bug in cairo-quartz gradients. If you have multiple stops
at position 0, then cairo-quartz pads with the *last* stop at position 0,
instead of the first stop at position 0. This patch fixes that.
From https://bugzilla.mozilla.org/show_bug.cgi?id=513395
|
|
quality problems when there are lots of repeated color stops.
-- Add a parameter to _cairo_quartz_setup_source so we can pass down the
extents of the object we're drawing
-- Compute fill/stroke/glyph extents and pass them down in the cases we need to
(repeating/reflecting gradients)
-- Pass those extents on down to where we set up the gradients
-- Make _cairo_quartz_setup_linear_source fall back to pixman for the
degenerate case where the linear gradient vector has no length
-- In CreateRepeatingRadialGradientFunction and
CreateRepeatingLinearGradientFunction, use the object extents (or surface
extents, for the paint() case) instead of the clip box to calculate the
parameters for the gradient
-- I've changed the way CreateRepeatingLinearGradientFunction calculates the
repetition count. The new approach gives much more precise bounds on the number
of repetitions needed (and is very similar to what we do for radial gradients).
This is important because if we specify a much larger input range than we
really need for our gradient color function, Quartz samples it too coarsely
over the range we actually care about, and the gradients look bad.
For example, suppose start = (5,0), end = (6,10), the CTM is identity and the
bounds we want to cover is (0,0)-(10,10). I think the current approach sets up
the gradient to be repeated 10 times. In fact only 3 repetitions are needed.
Also, using 'width' here didn't look right:
- y_rep_end = (int) ceil((surface->extents.width - MAX(mstart.y, mend.y))
/ dy
From https://bugzilla.mozilla.org/show_bug.cgi?id=508730
|
|
globals.
From https://bugzilla.mozilla.org/show_bug.cgi?id=508730
|
|
Figuring out where the outer circle should move to is tricky. I hope the
algebra in there is understandable.
This is a nice performance improvement, probably because we avoid painting the
gradient over the entire clipBox (which is usually the entire surface).
I tried to write reftests that compared a repeating radial gradient to a
non-repeating gradient with manually repeated stops, but it didn't work because
the rasterization was slightly different --- I'm not sure why.
This patch also forces us to use pixman for all degenerate cases where the
circles intersect. This at least makes us consistent across platforms.
From https://bugzilla.mozilla.org/show_bug.cgi?id=508227
|
|
|
|
We have to be careful to disambuigate an internal call by FreeType from
the application.
|
|
The non-__GNUC__ version of the container_of macro would do wrong
when used like container_of(...)-> because '->' binds tighter
than the cast in the container_of macro. Adding an additional
set of parantheses fixes this.
|
|
The first fixes required to kick-start memfault testing of the xcb
backend.
|
|
Avoid leaks when reporting memfault associated with constructing
regions.
|
|
When choosing the xcb_screen_t to use for the xlib-xcb backing surface,
it helps if it matches the screen used to generate similar surfaces and
snapshots - otherwise we end up pulling the image back from the XServer
every time we want to use the Picture.
|
|
A common operation is to store an image in a similar surface, so
construct a fast path to avoid the allocation and double-blit through a
temporary pixmap.
|
|
Clear the local picture variable if we cannot use the snapshot so that
we are forced to create a new and valid picture.
|
|
Set the CAIRO_TEST_FORCE_PASS environment variable to run through the
test suite and ignore errors. Useful for forcing distcheck to continue
past a broken test suite.
|
|
If we have a subsurface of a subsurface then the device offset has
already been applied to the extents that we use to offset the new
subsurface.
|
|
|
|
Don't scatter calls to error printing around everywhere, instead do it
in the one place where it matters.
Also, convert the functions to macros, so we can use __FILE__ and
__LINE__ when printing a warning
|
|
Note that we didn't lock the device previously, so the function was
broken.
|
|
Avoid allocation for the potential user error of attempting to use
cairo_create(NULL).
|
|
|
|
More memfault detected error path errors.
|
|
'a' and 'b' are dereferenced before being checked for null.
From https://bugzilla.mozilla.org/show_bug.cgi?id=555706
|
|
glyphs in Al Bayan font
This resolves the problem by checking for the crazy glyph bbox result from
CoreGraphics, and replacing it with an empty rect.
From https://bugzilla.mozilla.org/show_bug.cgi?id=534260
|
|
|
|
Adjust the subsurface extents so that the user specifies the extents in
world space rather than device space.
|
|
|
|
Through a very simple mistake we were triggering fallbacks after
detecting we were not able to perform the composite using GLSL -- we
were just returning the UNSUPPORTED status instead of enabling the
fixed-function path.
|
|
Corporation"
From https://bugzilla.mozilla.org/show_bug.cgi?id=507387
|
|
The implementation is the same as the atomic one (bar the use of atomic
primitives to manipulate the occupancy!).
Patch based on the original by Jeff Muizelaar.
|
|
As the user is likely to attach the underlying resources to the device
for automatic collection upon finalization, it is important that the
user data is then destroy last (so that those resources are still
available in the surface and device cleanup routines).
|
|
As we actually use the GLXContext to create the device, we only want to
free those resources upon the final unreference of the device (and not
the initial surface).
|
|
|
|
Don't be lazy, propagate the error rather than asserting.
|
|
Exercise using GL sources.
|
|
|
|
Test handling of source clipping with an image - principally to check
handling of mime types and zero-copy image snapshotting in the vector
surfaces and ensure that they work with subsurface patterns as well.
|
|
The screen is owned by the cairo_xlib_display_t device, so we can
simplify and close the refleak by removing the surplus reference
counting.
|
|
It's simpler and more memory efficient.
|
|
Use the info from the display instead.
|
|
The display lock is now held for the duration of the screen creation, so
there is no race. Remove the false comment.
|
|
|
|
Apparently we can get to this point without evaluating the clip surface,
so return the error status rather than assert.
|
|
|
|
|
|
In converting to cairo_list_t, it helps to preserve the semantics of
appending the page to the end of the list where it is expected to be
plucked in the event of an allocation failure.
|
|
|
|
The code used renderer->ctx and ctx interchangably, that was confusing.
|
|
This patch isn't strictly necessary, but it cleans up the code.
|
|
|