summaryrefslogtreecommitdiff
path: root/src/cairo-wideint.c
Commit message (Collapse)AuthorAgeFilesLines
* cairo-wideint: Fix typo in two cairo_uint128 functionsBryce Harrington2014-07-241-4/+4
| | | | | | | | | _cairo_int128_negate and _cairo_int128_not are #defines of _cairo_uint128_negate and _cairo_uint128_not respectively. The function implementations should use the actual function name not the aliases. On systems without a uint128 type, these could lead to build issues. Credit for finding this go to Dr. Peter Barnes, LLNL.
* doc: Manually fix remaining warnings about symmetryAndrea Canciani2012-03-291-1/+2
| | | | | | | | The Python script is unable to fix all of the warnings, because some point to comments that are not actually documentation. Fixes the remaining 'documentation comment not closed with **/' warnings.
* Introduce a new compositor architectureChris Wilson2011-09-121-0/+16
| | | | | | | | | | | | | | | | | | Having spent the last dev cycle looking at how we could specialize the compositors for various backends, we once again look for the commonalities in order to reduce the duplication. In part this is motivated by the idea that spans is a good interface for both the existent GL backend and pixman, and so they deserve a dedicated compositor. xcb/xlib target an identical rendering system and so they should be using the same compositor, and it should be possible to run that same compositor locally against pixman to generate reference tests. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> P.S. This brings massive upheaval (read breakage) I've tried delaying in order to fix as many things as possible but now this one patch does far, far, far too much. Apologies in advance for breaking your favourite backend, but trust me in that the end result will be much better. :)
* time: Add cairo_time_t typeAndrea Canciani2011-09-021-0/+16
| | | | | | | | | | | | | Add the cairo_time_t type (currently based on cairo_uint64_t) and use it in cairo-observer and in the perf suite. Fixes the build on MacOS X (for the src/ subdir) and Win32, whch failed because they don't provide clock_gettime: cairo-surface-observer.c:629: error: implicit declaration of function 'clock_gettime' cairo-surface-observer.c:629: warning: nested extern declaration of 'clock_gettime' cairo-surface-observer.c:629: error: 'CLOCK_MONOTONIC' undeclared (first use in this function) ...
* Remove excessive semicolonsBenjamin Otte2010-04-291-1/+1
| | | | s/;;/;/ basically
* Update FSF addressAndrea Canciani2010-04-271-1/+1
| | | | | | | | | | | I updated the Free Software Foundation address using the following script. for i in $(git grep Temple | cut -d: -f1 ) do sed -e 's/59 Temple Place[, -]* Suite 330, Boston, MA *02111-1307[, ]* USA/51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA/' -i "$i" done Fixes http://bugs.freedesktop.org/show_bug.cgi?id=21356
* Use __uint128_t and __int128_t if availableSebastian Dröge2009-09-151-49/+42
| | | | | | | | | | | GCC uses a peculiar name for a real 128-bit integer on x86-64. Speedups, xlib on a gm45 ======================== poppler 41246.56 -> 35102.82: 1.18x speedup swfdec-youtube 12623.01 -> 11936.79: 1.06x speedup Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Eliminate self-intersecting strokes.Chris Wilson2009-08-291-34/+0
| | | | | | | | | | | | | | | | | | | | We refactor the surface fallbacks to convert full strokes and fills to the intermediate polygon representation (as opposed to before where we returned the trapezoidal representation). This allow greater flexibility to choose how then to rasterize the polygon. Where possible we use the local spans rasteriser for its increased performance, but still have the option to use the tessellator instead (for example, with the current Render protocol which does not yet have a polygon image). In order to accommodate this, the spans interface is tweaked to accept whole polygons instead of a path and the tessellator is tweaked for speed. Performance Impact ================== ... Still measuring, expecting some severe regressions. ...
* [tessellator] Replace open-coding _cairo_int64_cmp().Chris Wilson2008-10-061-0/+48
| | | | | | | | | | | | | | | We often use the construct: if (_cairo_int64_lt (A, B) return -1; if (_cairo_int64_gt (A, B) return 1; return 0; to compare two large integers (int64, or int128) which does twice the required work on CPUs without large integer support. So replace it with a single wideint function _cairo_int64_cmp() and therefore allow opportunities to both shrink the code size and write a more efficient comparison. (The primarily motivation is to simply replace each block with a single more expressive line.)
* cairo-wideint: Fix to eliminate comparison of signed and unsigned valuesCarl Worth2007-01-201-1/+3
|
* Spell check the docsBehdad Esfahbod2007-01-071-1/+1
|
* bugfix: fix cairo-wideint.c uint64_t usage and const return qualifiersMathieu Lacage2006-12-051-7/+7
| | | | | | | | | | | | | | | | | | | These patches were sent to the cairo mailing list by Mathieu Lacage <Mathieu.Lacage@sophia.inria.fr>: http://lists.freedesktop.org/archives/cairo/2006-December/008741.html _cairo_uint_96by64_32x64_divrem(): fixes misuse of the uint64_t type and cairo-wideint-private.h functions. http://lists.freedesktop.org/archives/cairo/2006-December/008742.html Remove const qualifiers from return types from cairo-wideint.c functions. http://lists.freedesktop.org/archives/cairo/2006-December/008747.html Fixes a typo in cairo-wideint-private.h: _cairo_uint128_to_int128_ had an extra trailing underscore.
* A 96 by 64 bit divrem that produces a 32 bit quotient and 64 bit remainder.Joonas Pihlaja2006-11-221-0/+152
|
* Remove all remaining trailing whitespace.Carl Worth2006-06-061-1/+1
| | | | | | | | | | | 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.
* Remove extraneous whitespace from "blank" lines.Carl Worth2006-06-061-8/+8
| | | | | | | | This patch was produced with the following (GNU) sed script: sed -i -r -e 's/^[ \t]+$//' run on all *.[ch] files within cairo.
* Remove unused RCS $Id:$ tags.Carl Worth2006-02-271-2/+1
|
* Replace wide integer divide algorithms with trivial bit-at-a-time code. ↵Keith Packard2005-07-301-415/+46
| | | | Original code was of unclear provenance, this new code is completely different.
* Add CODING_STYLE document to standardize on some style issues.Carl Worth2005-06-031-1/+5
| | | | Standardize brace handling around all else clauses according to new CODING_STYLE guidelines.
* Remove useless const qualifier from functions returning simple values, ↵Carl Worth2005-01-191-41/+41
| | | | (quiets the warning in gcc4). Thanks to John Ellson <ellson@research.att.com>. Closes bug #2299.
* Scale factors shouldn't include mirroring.Keith Packard2005-01-111-1/+27
| | | | int32x32_64_mul and int64x64_128_mul are different from their unsigned compatriots
* Fix math library detection to use autotools helperKeith Packard2005-01-111-17/+29
| | | | | | | | | | | Remove cache memory usage assertions as single objects can be larger than the cache size Decompose font matrix transformations into a couple of helper routines. Return all metrics in font space. Eliminate compiler warning Expect glyph metrics to be in font space. Compute text extents by fetching one glyph metric at a time, transforming to user space and computing the overall bounding box. use 'sincos' where available. Scale factors now ensure the non-scale transform is area preserving. Scale factors requires another parameter to mark the fixed axis. Change license to LGPL Mark int32x32_64_mul as broken (which it still is) Ensure each glyph is located as close to the specified position as possible interface change to _cairo_matrix_compute_scale_factors
* Add WARN_CFLAGS, autodetection for 64/128 bit ints and cairo_wideint.[ch]Keith Packard2004-05-281-0/+986
Check status return from _cairo_gstate_glyph_extents Quiet compiler warnings about uninitialized variables Switch to alternate exact line intersection code. Add 64/128-bit wide integer arithmetic. Switch to stdint.h types (and new wide types).