Commit graph

4179 commits

Author SHA1 Message Date
Chris Wilson
1d609d6722 [image] Treat A1 image surfaces as BILEVEL_ALPHA
Categorise the transparency of FORMAT_A1 image surfaces as BILEVEL_ALPHA.
2009-05-05 21:17:05 +01:00
Chris Wilson
aac132a76a [image] Make _cairo_image_analayze_transparency() more format agnostic
Use the content in preference to the format to determine
CAIRO_IMAGE_IS_OPAQUE/CAIRO_IMAGE_HAS_ALPHA.
2009-05-05 21:17:05 +01:00
Chris Wilson
4be6de9fc6 [image] Return FORMAT_INVALID for an error surface.
The default error value should be CAIRO_FORMAT_INVALID [-1] not 0 (which
corresponds to CAIRO_FORMAT_ARGB32).
2009-05-05 21:17:05 +01:00
Chris Wilson
1ae2ddc1dd [memfault] Manually inject faults when using stack allocations
Ensure that no assumptions are made that a small allocation will succeed
by manually injecting faults when we may be simply allocating from an
embedded memory pool.

The main advantage in manual fault injection is improved code coverage -
from within the test suite most allocations are handled by the embedded
memory pools.
2009-04-23 09:22:51 +01:00
Chris Wilson
be27e844c8 [ft] Propagate status from font creation
Return the true error status whel
_cairo_ft_unscaled_font_create_internal(). This ensures that the original
error is not masked and we are able to report the error during fontconfig
pattern resolution.
2009-04-20 10:21:24 +01:00
Chris Wilson
d46c56f18c [ft] Check for pattern duplication failure.
Check the return of FcPatternDuplicate() for failure, and propagate the
error.
2009-04-20 10:21:23 +01:00
Chris Wilson
50302f156d [ft] Check (correctly!) for pattern duplication failure.
Check the return from FcPatternDuplicate() for allocation failure (and not
the original pattern)!
2009-04-20 10:21:23 +01:00
Chris Wilson
8bf109bd2a [pattern] Silence compiler with impossible case.
Assert that the pattern is one of the four known types, and return an
error so that the compiler knows that the local variable can not be used
uninitialised.
2009-04-20 10:21:23 +01:00
Chris Wilson
5a76c233bf [type3] Propagate error from font creation.
Perform an error check after creating a scaled-font to prevent operations
on a nil-object.
2009-04-16 09:34:03 +01:00
Chris Wilson
d46bd67c8b [type3] Add status checks.
Propagate error from the stream when creating the surface and add status
guards before writing to the potential nil object.
2009-04-16 09:34:03 +01:00
Chris Wilson
a6ffb69a54 [type3] Check error status before emit_image().
Be careful not to pass an error object down to emit_image() hook,
propagate the error instead. This relieves the burden of the error check
from the callee -- which was causing an assertion failure in the ps
backend.
2009-04-16 09:34:03 +01:00
Chris Wilson
21d1138da9 [scaled-font-subsets] Check for malloc failure.
Check that the utf8 string is successfully allocated before writing to it,
otherwise propagate the error status back to the callers.
2009-04-16 09:34:03 +01:00
Chris Wilson
0f0e2d7384 [pdf] Propagate failure from type3 glyph surface creation.
Add an early check that we successfully created the glyph surface.
2009-04-16 09:34:02 +01:00
Chris Wilson
1496c5cf51 [analysis] Use _cairo_region_init()
Avoid secondary allocations of the thin region wrappers during surface
creation by embedding them into the parent structure. This has the
satisfactory side-effect of not requiring status checks which current code
lacks.
2009-04-16 09:34:02 +01:00
Chris Wilson
ad83765a14 [xlib] Allocate bounded region on stack.
Eliminate the extremely short-lived and oft unnecessary heap allocation
of the region by first checking to see whether the clip exceeds the
surface bounds and only then intersect the clip with a local
stack-allocated region.
2009-04-16 09:34:02 +01:00
Chris Wilson
75b06b8bdb [pattern] Do not modify outparam on error path.
The pdf backend was crashing as a failed pattern copy stored an invalid
pointer with the resource group.
2009-04-16 09:34:02 +01:00
Adrian Johnson
1798fc6607 Fix the TrueType subsetting fix in 9b496af5c
Oops.
2009-04-05 11:17:02 +09:30
Adrian Johnson
fe97e815e8 Fix TrueType subsetting bug
Fix incorrect counting of arguments in composite glyphs
2009-04-05 01:09:32 +10:30
Adrian Johnson
9b496af5c2 Fix buffer size check in TrueType subsetting
Andrew Cowie reported a problem with the Charis SIL font being
embedded as a fallback font.

The buffer size check for composite glyphs was incorrect causing the
subsetting to fail for some fonts.
2009-04-05 00:44:02 +10:30
Jeff Muizelaar
ba2ec8e1d9 Remove trailing comma in cairo_region_overlap_t enum. 2009-04-01 13:29:12 -04:00
Søren Sandmann Pedersen
0f21893b05 [region] pixman_region32_contains_point() does not allow NULL for box 2009-04-01 08:56:10 -04:00
Chris Wilson
e46c1d7fa3 [scaled-font-subset] Cleanup after failure to convert to utf16.
Avoid leaking the local hashtable and strings after failing to convert the
string to utf16.
2009-03-31 12:16:03 +01:00
Chris Wilson
180b964aac [scaled-font-subset] Propagate error from scaled-font to collection.
Don't attempt to collect the sub_font if it is in error.
2009-03-31 12:16:02 +01:00
Chris Wilson
8362c6f726 [type1] Fixup error path during write_charstrings()
On the common error path we attempted to unlock a mutex that was not
always held, so reorder the error paths appropriately.
2009-03-31 12:16:02 +01:00
Chris Wilson
88956cd42e [ps] Check for error during stroking.
Add a missing error status check that caused errors during stroke to be
masked.
2009-03-31 12:16:02 +01:00
Chris Wilson
043352aa8d [pdf] Prevent leak of pad_image on error path.
Ensure that the local pad_image is destroyed after an error.
2009-03-31 12:16:02 +01:00
Chris Wilson
b0689f5611 Check for errors during get_mime_data()
cairo_surface_get_mime_data() may raise an error on the surface, so we
need to check lest it goes unnoticed and we generate a corrupt file.
2009-03-31 12:16:02 +01:00
Chris Wilson
9f63cbb870 [pdf] Free compressed stream after error.
Ensure that the compressed stream is destroyed after encountering an
error.
2009-03-31 12:16:02 +01:00
Chris Wilson
ba1a0fa601 [truetype] Free local names on failure.
Ensure that all local allocations are freed on the error path.
2009-03-31 12:16:01 +01:00
Chris Wilson
edce97a750 [pdf] Remove false assertion.
The stream itself may be in an error state, so an error could be raised.
2009-03-31 12:16:01 +01:00
Søren Sandmann Pedersen
80d5b53b47 [region] Change name of cairo_region_empty() to cairo_region_is_empty() 2009-03-31 05:47:44 -04:00
Jonathan Kew
77ee65fd03 [win32] Fix horizontal glyph positioning bug
The _cairo_win32_scaled_font_backend version of show_glyphs collects
glyph runs to hand to ExtTextOutW until the y-offset changes, then flushes the
glyphs buffered so far. As each glyph is buffered, it also calculates and
buffers the dx value for the preceding glyph.

However, when it sees a change in dy and decides to flush, it should *not*
append an entry to the dx buffer, as this would be the "dx" of the previous
glyph, and instead the new start_x value will be used for the new glyph run
that's being collected. This bug means that after any vertically-offset glyph,
the remaining glyphs in the run will get incorrect dx values (horizontal
escapement).

Mozilla bug #475092
2009-03-30 14:45:48 -04:00
Chris Wilson
ea6197c2f5 [surface] Propagate region allocation failure.
Propagate the error status from failing to allocate the region.
2009-03-30 10:54:26 +01:00
Chris Wilson
c35d226f7d [traps] Propagate allocation failure.
Report failure to allocation region.
2009-03-30 10:46:37 +01:00
Chris Wilson
e238d10b30 [region] Use const cairo_rectangle_int_t consistently.
Add the const declaration to a couple of functions.
2009-03-30 10:23:30 +01:00
Chris Wilson
de1612bdd7 [region] Use _cairo_status_is_error
Replace the open-coded version with the more readable macro.
2009-03-30 10:17:49 +01:00
Chris Wilson
f027405429 [region] Add leading underscore to private _cairo_region_set_error()
Differentiate the private _cairo_region_set_error() function by using a
leading underscore.
2009-03-30 10:12:41 +01:00
Chris Wilson
ed7188a471 [region] Add slim_hidden_def.
Fixes for check-plt.sh (and a few adjacent whitespace).
2009-03-30 10:11:14 +01:00
Chris Wilson
f31c6548f8 Silence compiler warnings for CAIRO_STATUS_LAST_STATUS
Add ASSERT_NOT_REACHED (or similar) cases to the error handling switches
to silence the compiler.
2009-03-29 08:31:15 +01:00
Søren Sandmann Pedersen
62d84847c3 [region] Add documentation for all the new region methods. 2009-03-28 18:02:58 -04:00
Søren Sandmann Pedersen
980e9f0dbd [region] Fix status propagation for regions
When an operation fails, store the status code in the destination
region rather than leaving it unchanged.
2009-03-28 18:02:58 -04:00
Søren Sandmann Pedersen
64e490a464 [region] Use signed ints for width and height in cairo_rectangle_int_t 2009-03-28 18:02:58 -04:00
Søren Sandmann
26999e5aa8 [region] Add cairo_region_intersect_rectangle() and _subtract_rectangle()
Intersecting with and subtracting rectangles is quite common, and we
already have cairo_union_rectangle().
2009-03-28 18:02:58 -04:00
Søren Sandmann Pedersen
4b3245481c [region] Expand rect to rectangle in a couple of names
Specifically,

	cairo_region_union_rect  ->  cairo_region_union_rectangle
	cairo_region_create_rect ->  cairo_region_create_rectangle

Also delete cairo_region_clear() which is not that useful.
2009-03-28 18:02:57 -04:00
Søren Sandmann Pedersen
bf6d9bc175 [region] Delete cairo_region_create_rectangles()
It was only used in _cairo_traps_extract_region() which could be
simplified significantly by calling cairo_region_union_rect()
repeatedly instead.
2009-03-28 18:02:57 -04:00
Søren Sandmann
e6d82afcab [region] Add slim_hidden_proto for region functions 2009-03-28 18:02:57 -04:00
Søren Sandmann
e29103c081 [region] Move region function prototypes to cairo.h along with helper types.
Move struct _cairo_region to cairoint.h and delete
cairo-region-private.h. Delete cairo_private from the function
definitions that had it.
2009-03-28 18:02:57 -04:00
Søren Sandmann
1cca5a1348 [region] Remove underscores from _cairo_region_* 2009-03-28 18:02:07 -04:00
Søren Sandmann
fcdca96694 [region] Always define cairo_rectangle_int_t with ints
Use ints in cairo_rectangle_int_t, no matter the fixed type.
2009-03-28 18:01:19 -04:00
Søren Sandmann
cfa7a384b7 [region] Add _cairo_region_contains_point() 2009-03-28 18:01:19 -04:00