Commit graph

6866 commits

Author SHA1 Message Date
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
Chris Wilson
b580a4a8d6 [test] Improve fault injection coverage
In order to exercise the meta-surfaces, we need to inject faults into
cairo_surface_finish().
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
aee71e2063 [test] Memfault checks.
Don't assume an error means the test failed, check for injected allocation
errors.
2009-03-30 13:41:00 +01: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
Søren Sandmann Pedersen
15564d1949 [region] Add _cairo_region_union 2009-03-28 18:01:19 -04:00
Søren Sandmann Pedersen
df883aa937 [region] Add a cairo_region_overlap_t type 2009-03-28 18:01:19 -04:00
Søren Sandmann Pedersen
ebd0e685ae [region] Consistently use rectangles in the API of regions
Usually, rectangles are more useful than boxes, so regions should only
expose rectangles in their public API.

Specifically,
  _cairo_region_num_boxes becomes _cairo_region_num_rectangles
  _cairo_region_get_box becomes _cairo_region_get_rectangle

Remove the cairo_box_int_t type
2009-03-28 18:01:19 -04:00
Søren Sandmann
c29aeee2d3 [region] Change sense of _cairo_region_not_empty() to _cairo_region_empty()
Having "not" in the name causes double negatives.
2009-03-28 18:01:19 -04:00
Søren Sandmann
c88321d0a2 [region] Miscellaneous bug fixes.
- Initialize region->status in _cairo_region_create_boxes()
- Make _cairo_region_copy() actually return a region.
- Fix a bug where a NULL region could be dereferenced

Also add an assertion that the result of cairo_region_copy() is never
NULL.
2009-03-28 18:01:19 -04:00
Søren Sandmann
93b285dc2c [region] Get rid of clip->has_region 2009-03-28 18:01:19 -04:00
Søren Sandmann
e3e1b35eb9 [region] Make cairo_region_t a malloced object. 2009-03-28 17:58:48 -04:00
Søren Sandmann Pedersen
c2c637cf1d Simplify _cairo_clip_intersect_region()
The intermediate intersection region is not necessary because if the
operation fails, clip->region will end up as a pixman error region.
2009-03-28 04:26:10 -04:00
Bertram Felgenhauer
fe10cd6467 [spline] fix wrong sign in _cairo_spline_bound. 2009-03-27 07:10:21 +01:00
Bertram Felgenhauer
53107de63a [in_fill] Correctly track current point in curve_to.
When discarding a bezier path segment, we still need to update the
current point.
2009-03-26 04:56:27 +01:00
Chris Wilson
578b06a978 [perf] Use CAIRO_LDFLAGS
Use CAIRO_LDFLAGS in order to pull in additional link options, such as
--coverage.
2009-03-24 07:50:58 +00:00
Chris Wilson
ac30ced613 [test] Check for surface create failure.
If the image surface creation fails, the data pointer will be NULL leading
to a segfault -- so check!
2009-03-24 07:50:58 +00:00
Chris Wilson
b5a4a2c4b1 [test] Early test for memfault.
Check the error status within after each iteration in
solid-pattern-cache-stress.
2009-03-24 07:50:58 +00:00
Chris Wilson
1a7b94f934 [test] Check for errors during get-path-extents.
Need to check that an error was not raised on the context before checking
whether the extents match expectations.
2009-03-24 07:50:58 +00:00
Vladimir Vukicevic
3b54533088 [win32] Use _hypot instead of hypot
The hypot symbol is deprecated on Win32, and nonexistent on Windows CE
2009-03-21 11:56:18 -07:00
Stefan Klug
895fce1632 [wince] Use the official _WIN32_WCE define instead of WINCE 2009-03-20 17:20:22 -04:00
Jeff Muizelaar
86a935de42 [msvc] Fix definition of CAIRO_ENSURE_UNIQUE for non-x86
The current definition of CAIRO_ENSURE_UNIQUE uses x86 assembly so make sure we
only compile it when targeting x86.
2009-03-20 17:14:08 -04:00
Chris Wilson
c932a809d6 [test] Propagate allocation failure.
Check for memfaults during rel-path test.
2009-03-18 09:44:33 +00:00
Chris Wilson
7db55b37d4 [test] Destroy pattern on error paths.
Destroy the pattern after encountering an error in pattern-getters test.
2009-03-18 09:44:33 +00:00
Chris Wilson
dc176d88ac [test] Trivial leak on error in show-glyphs-many.
Free the allocated glyph array after failure.
2009-03-18 09:44:33 +00:00
Chris Wilson
a4b44ca89e [pattern] Report the true error status from getters.
As the getters actually return an error status, use it to report any
pre-existing error status on the pattern.
2009-03-18 09:44:33 +00:00
Behdad Esfahbod
496bbcf582 Make CAIRO_STATUS_LAST_STATUS public 2009-03-17 19:46:25 -04:00