The pattern handling code ensures that 0 stops patterns are reduced
to clear solid patterns before being passed down to the backend.
An assertion is used to make sure that the assumption actually holds,
removing the duplication of the reduce-to-solid-clear logic.
Invalid enum values were being ignored (and replaced by a default
value). This behavior is not desirable on development builds,
because an explicit failure is much easier to track.
Assertions allow release builds to keep on with the old behaviour,
while development builds fail as soon as the invalid operaiton is
performed.
Sun Studio Compiler complains:
"cairo-xcb-surface.c", line 585: void function cannot return value
even if the returned value is void.
Some minor code restructuring removes the issue.
Calling _cairo_xcb_surface_render_paint() with CAIRO_OPERATOR_CLEAR and no clip
just results in the surface's deferred_clear flag to be set to TRUE. Fix this by
calling _cairo_xcb_surface_clear() directly instead.
This half-fixes the clip-shape test in the test-suite. The difference to the
reference image becomes much smaller at least. :(
Signed-off-by: Uli Schlachter <psychon@znc.in>
The if that is being removed here resulted in no drawing done at all when it
skipped the call to _render_fill_boxes(). This is obviously not what
CAIRO_OPERATOR_IN wants.
This fixes the "operator" test in the test suite.
Signed-off-by: Uli Schlachter <psychon@znc.in>
In the XCB backend, drawing a surface pattern always caused an extend of
CAIRO_EXTEND_NONE to be used. This caused e.g. all the
surface-pattern-scale-down-extend-* tests in the test suite to fail.
Signed-off-by: Uli Schlachter <psychon@znc.in>
This is required to allow PDF/PS output to use "(this is ascii)" style
strings that can be post processed by applications like psfrag. It
will also reduce the file size when a large amount of latin text is
used due to the 8-bit encoding instead of the 16-bit used for CID
fonts.
The winansi encoding (CP1252) is used for the latin subset as this is
a standard PDF encoding. Some PDF readers have buggy support for non
standard PDF 8-bit encodings.
cairo-image-surface.c: In function ‘_cairo_image_reset_static_data’:
cairo-image-surface.c:1006: warning: old-style function definition
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Image has static caches which needs to be reset to make
cairo_debug_reset_static_data behave as expected.
Silences a bunch of leak reports by check-valgrind.
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
This should help clarify the documentation by not mentioning non-existent
devices and prevent any assumed coupling between surface-type values and
devices.
The cairo-freelist-private.h header has a number of static inline
functions which call hidden functions in libcairo. This poses
a problem on Solaris where the native compiler compiles inline
functions whether they are used or not, thereby adding the
link time requirements on hidden functions from whatever code
that includes cairo-freelist-private.h. Unfortunately the
boilerplate code includes cairo-private headers and indirectly
the freelist header, so linking the boilerplate helper library
fails on Solaris.
This patch separates the structure definitions from the function
prototypes and static inlines in cairo-freelist-private.h by moving
the datatypes to a new cairo-freelist-type-private.h.
A stray backslash bwetween two assignment lines apparently
invokes a GNU make extension for conditional assignments.
This patch fixes the build when using the native Solaris make.
The exact semantics of the device API can't be spelled out
out in the device API docs since the effects are so tied
to the specific backend. To use a particular device in
practice the user should refer to the backend docs.