Commit graph

28 commits

Author SHA1 Message Date
Chris Wilson
0ab14a6b21 [polygon] Reduce number of branches.
Minimise the number of conditionals taken whilst constructing the polygon.
2008-09-18 09:06:29 +01:00
Chris Wilson
335ed74589 Enlarge the embedded arrays to eliminate frequent allocations.
Enlarge the embedded arrays of edges and points for cairo_polygon_t and
cairo_spline_t respectively, such that the frequent allocations are
eliminated whilst running a firefox3 benchmark.
2008-06-13 21:34:42 +01:00
Chris Wilson
bed8239f03 [cairo-error] Clean up all the warnings and missing _cairo_error() calls.
Every time we assign or return a hard-coded error status wrap that value
with a call to _cairo_error(). So the idiom becomes:
    status = _cairo_error (CAIRO_STATUS_NO_MEMORY);
or
    return _cairo_error (CAIRO_STATUS_INVALID_DASH);

This ensures that a breakpoint placed on _cairo_error() will trigger
immediately cairo detects the error.
2007-10-04 13:31:44 +01:00
Chris Wilson
e49bcde27f [malloc] Check for integer overflow when realloc'ing.
Perform similar sanity checks to Vlad's _cairo_malloc_ab() but on the
arguments to realloc instead.
2007-10-04 00:42:29 +01:00
Chris Wilson
8cba73a36c [cairo-polygon] Add a _cairo_error().
Add a _cairo_error() to an originating error site.
2007-10-04 00:42:29 +01:00
Vladimir Vukicevic
5c7d2d14d7 [fix] Avoid int overflow when allocating large buffers
This patch introduces three macros: _cairo_malloc_ab,
_cairo_malloc_abc, _cairo_malloc_ab_plus_c and replaces various calls
to malloc(a*b), malloc(a*b*c), and malloc(a*b+c) with them.  The macros
return NULL if int overflow would occur during the allocation.  See
CODING_STYLE for more information.
2007-06-29 09:46:08 -07:00
Carl Worth
b1086caf3b Add a status field to cairo_polygon_t
Now, the functions to add new data to a polygon all become void,
and there's a new _cairo_polygon_status call to query the status
at the end of a sequence of operations.

With this change, we fix many callerswhich were previously not
checking the return values of _cairo_polygon functions by adding
only a single call to _cairo_polygon_status rathern than several
new checks.
2007-04-10 10:45:15 -07:00
Carl Worth
01955a6e82 Rename ARRAY_LEN to ARRAY_LENGTH
Yet another victim in my hunt against abbreviations within cairo's implementation.
2007-04-10 10:14:49 -07:00
Chris Wilson
619425a8b3 cairo-polygon - trivial propagation of error status
_cairo_polygon_move_to() returns an error status so use it.
2007-04-09 15:06:11 +01:00
Behdad Esfahbod
8fbf50d31d [src] Make sure all source files #include "cairoint.h" as their first include
This is necessary to avoid many portability problems as cairoint.h includes
config.h.  Without a test, we will regress again, hence add it.

The inclusion idiom for cairo now is:

	#include "cairoint.h"

	#include "cairo-something.h"
	#include "cairo-anotherthing-private.h"

	#include <some-library.h>
	#include <other-library/other-file.h>

Moreover, some standard headers files are included from cairoint.h and need
not be included again.
2007-04-03 20:28:11 -04:00
Behdad Esfahbod
ad51ee5aa0 Define and use ARRAY_LEN 2007-03-20 18:59:19 -04:00
Behdad Esfahbod
deed0f4734 [polygon,spline,traps] Avoid free(NULL) 2007-03-13 06:09:09 -04:00
Behdad Esfahbod
b706bd9b38 [cairo-polygon] Add a cache of eight edges to cairo_polygon_t
Many, if not most, of polygons have very few edges.  This avoids
calling malloc() for those cases.
2007-03-13 06:07:03 -04:00
Behdad Esfahbod
cca7e3fec3 [cairo_polygon_t] Change has_current_point from int to cairo_bool_t 2007-03-13 05:56:38 -04:00
Behdad Esfahbod
3ce84390de [cairo-polygon] Clean-up realloc algorithm for clarity 2007-03-13 05:51:39 -04:00
Carl Worth
5278de0997 Remove all remaining trailing whitespace.
This patch was produced with the following (GNU) sed script:

	sed -i -r -e 's/[ \t]+$//'

run on all *.[ch] files within cairo.

Note that the above script would have also created all the changes
from the previous commits to remove trailing whitespace.
2006-06-06 15:41:31 -07:00
Carl Worth
dcfb0d8a2b Switch from broken cworth@isi.edu address to canonical cworth@cworth.org address. 2005-02-22 11:35:03 +00:00
Carl Worth
7a5a3cb208 Remove unused CAIRO_TRAPS_GROWTH_INC.
Resize arrays by doubling rather than by linear increments.
Add new bug exposed centi_unfinished.svg.
2004-12-23 13:49:56 +00:00
Carl Worth
bf8374dba2 Convert all files to utf-8. Add copyright information to cairo_png_surface.c. 2004-10-21 18:40:50 +00:00
Carl Worth
0f3ce6a240 Add the MPL as a new license option, in addition to the LGPL. 2004-09-04 06:38:34 +00:00
Carl Worth
e5afa03605 Fix to explicitly refer to GNU Lesser Public License 2.1 rather than the Library Public License version 2 or 'any later version' 2004-08-02 17:04:00 +00:00
Carl Worth
d5e92dd1c8 Change from MIT license to LGPL. 2004-08-02 13:13:28 +00:00
Carl Worth
08553e75b7 Clean up cairo_path_callbacks to have move_to, line_to, curve_to, abd close_path instead of add_edge, add_spline, and done_sub_path. Much, much nicer.
Provide cairo_polygon_move_to and cairo_polygon_line_to instead of cairo_polygon_add_point.
Track change in cairo_polygon interface.
2003-12-08 13:38:26 +00:00
Carl Worth
765a1ad0fd Use 0 and 1 not False and True, (to avoid false dependency on X headers).
Use cairo_point_double_t not XPointDouble, (to avoid false dependency on X headers). Thanks to "Sasha V." <sasha@aftercode.net> for pointing these out.
2003-11-21 06:22:02 +00:00
Carl Worth
2c9d1913cc Fixed copyright attribution to refer to "University of Southern California 2003-10-23 07:47:29 +00:00
Carl Worth
a249bd717c Remove abbreviation of "point" as "pt". Fix cairo_destrot, cairo_set_target_surface, and cairo_set_target_image to act appropriately in the face of non-zero status. 2003-10-04 09:06:15 +00:00
Carl Worth
e97cfd5eae Made all changes necessary to abandon the Xc library, (sucking the functionality up into cairo_surface_t instead). Eliminated most of the remaining X datatypes (XFixed, XPointFixed, XLineFixed, XTrapezoid). Fixed some numerical problems relating to pen initialization and intersection calculation. 2003-07-30 08:30:50 +00:00
Carl Worth
dc1e96ae35 Renamed everything from Xr* to cairo_* 2003-07-18 11:34:19 +00:00