cairo/src
Chris Wilson d7873eecc5 [spline] Eliminate intermediate allocations during spline decomposition.
The spline decomposition code allocates and stores points in a temporary
buffer which is immediately consumed by the caller. If the caller supplies
a callback that handles each point computed along the spline, then we can
use the point immediately and avoid the allocation.
2008-11-16 16:21:25 +00:00
..
.gitignore [Makefile.am] Only rerun headers-standalone if a header file has changed 2008-09-30 11:11:47 +01:00
cairo-analysis-surface-private.h [analysis] Merge two analysis status codes. 2008-09-26 13:42:28 +01:00
cairo-analysis-surface.c Make meta-surface store and replay extents of each operation 2008-11-02 20:12:29 +10:30
cairo-arc-private.h Add cairo_private to several function prototypes that were missing it. 2005-08-09 13:01:14 +00:00
cairo-arc.c Remove some bogus XXX marks 2008-05-28 19:10:09 -04:00
cairo-array.c [array] Rearrange user_data_fini() to optimize common case. 2008-10-30 17:14:27 +00:00
cairo-atomic-private.h Make sure feature macros are checked using #if, not #ifdef; add a test for it 2008-09-20 17:20:36 -04:00
cairo-atomic.c Make sure feature macros are checked using #if, not #ifdef; add a test for it 2008-09-20 17:20:36 -04:00
cairo-base85-stream.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-bentley-ottmann.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-beos-surface.cpp Fix now-detected doc formatting issues 2008-06-01 19:14:13 -04:00
cairo-beos.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-cache-private.h Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-cache.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-cff-subset.c [hash] Return lookup entry. 2008-11-07 20:50:34 +00:00
cairo-clip-private.h Revamp the build system. 2008-09-02 20:24:08 -04:00
cairo-clip.c [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents. 2008-11-13 13:10:18 +02:00
cairo-color.c [directfb] When blitting check if we need the un-premultiplied color. 2008-10-20 23:20:24 +01:00
cairo-combsort-private.h [tessellator] Use a combsort for sorting the event queue. 2008-10-30 19:08:24 +00:00
cairo-compiler-private.h Add predicate likelihood macros. 2008-11-13 11:36:44 +00:00
cairo-debug.c [mime-data] Allow embedding of arbitrary mime-types. 2008-11-03 11:24:12 +00:00
cairo-deflate-stream.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-deprecated.h [cairo-deprecated.h] Remove mention of cairoint.h from public header 2008-05-09 15:54:10 +02:00
cairo-directfb-surface.c Add an extents argument to the high level surface backend functions 2008-11-02 20:12:22 +10:30
cairo-directfb.h Make sure feature macros are checked using #if, not #ifdef; add a test for it 2008-09-20 17:20:36 -04:00
cairo-features-uninstalled.pc.in Build -uninstalled.pc files 2008-09-11 00:38:30 -04:00
cairo-features.pc.in More fixes for pkgconfig files 2008-09-10 12:41:57 -04:00
cairo-fixed-private.h [cairo-fixed] Implement _cairo_fixed_mul_div() 2008-05-15 20:02:33 -04:00
cairo-fixed-type-private.h Change cairo's fixed-point format from 16.16 to 24.8 2008-02-27 15:08:18 -08:00
cairo-fixed.c [fixpt] Make fixed point methods static inline and generic 2007-07-18 22:45:21 +02:00
cairo-font-face-twin-data.c [twin-font] Clean up font data by joining lines and closing paths 2008-09-25 19:25:11 -04:00
cairo-font-face-twin.c [twin-font] Make the stroke lighter 2008-10-06 11:40:34 -04:00
cairo-font-face.c [hash] Separate out unique patterns of iterating over the table. 2008-11-13 11:36:42 +00:00
cairo-font-options.c Remove all lcd_filter code. 2008-09-25 13:31:20 -07:00
cairo-freelist-private.h Revamp the build system. 2008-09-02 20:24:08 -04:00
cairo-freelist.c [src] Make sure all source files #include "cairoint.h" as their first include 2007-04-03 20:28:11 -04:00
cairo-ft-font.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-ft-private.h Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-ft.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-glitz-private.h [slim] hide cairo_glitz_surface_create() (#8551) 2006-10-08 17:07:17 -04:00
cairo-glitz-surface.c [pattern] Avoid needless copying of patterns. 2008-10-30 17:52:05 +00:00
cairo-glitz.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-gstate-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-gstate.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-hash-private.h [hash] Return lookup entry. 2008-11-07 20:50:34 +00:00
cairo-hash.c [hash] Separate out unique patterns of iterating over the table. 2008-11-13 11:36:42 +00:00
cairo-hull.c [hull] Replace open-coding of 64bit arithmetic. 2008-10-07 01:45:45 +01:00
cairo-image-surface.c [matrix] Compensate pixman_matrix in device space. 2008-11-05 11:16:08 +00:00
cairo-jpeg-info-private.h [mime-data] Allow embedding of arbitrary mime-types. 2008-11-03 11:24:12 +00:00
cairo-jpeg-info.c [mime-data] Allow embedding of arbitrary mime-types. 2008-11-03 11:24:12 +00:00
cairo-lzw.c [src/check-doc-syntax.sh] Fix some bugs in the check and fix errors found 2008-05-09 15:54:04 +02:00
cairo-malloc-private.h [malloc] Check for integer overflow when realloc'ing. 2007-10-04 00:42:29 +01:00
cairo-matrix.c [matrix] Remove stray offset from previous commit. 2008-11-05 12:16:47 +00:00
cairo-meta-surface-private.h Make meta-surface store and replay extents of each operation 2008-11-02 20:12:29 +10:30
cairo-meta-surface.c Make meta-surface store and replay extents of each operation 2008-11-02 20:12:29 +10:30
cairo-misc.c [hash] Return lookup entry. 2008-11-07 20:50:34 +00:00
cairo-mutex-impl-private.h Ensure that the scaled font is frozen for the lifetime of the scaled glyph. 2008-10-22 00:53:55 +01:00
cairo-mutex-list-private.h [mime-data] Allow embedding of arbitrary mime-types. 2008-11-03 11:24:12 +00:00
cairo-mutex-private.h [cairo-mutex] Move semicolons out of cairo-mutex-list-private.h 2008-09-19 18:45:44 -04:00
cairo-mutex-type-private.h Ensure that the scaled font is frozen for the lifetime of the scaled glyph. 2008-10-22 00:53:55 +01:00
cairo-mutex.c [cairo-mutex] Move semicolons out of cairo-mutex-list-private.h 2008-09-19 18:45:44 -04:00
cairo-os2-private.h [os2] Fix includes 2008-11-13 10:50:41 +01:00
cairo-os2-surface.c [os2] Fix includes 2008-11-13 10:50:41 +01:00
cairo-os2.h [os2] Move include cairo.h before os2.h 2008-11-16 16:21:23 +00:00
cairo-output-stream-private.h Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-output-stream.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-paginated-private.h [svg] Use finer-grained fallbacks for SVG 1.2 2008-10-08 12:43:35 +01:00
cairo-paginated-surface-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-paginated-surface.c Add an extents argument to the high level surface backend functions 2008-11-02 20:12:22 +10:30
cairo-path-bounds.c [cairo-path-bounds] _cairo_path_fixed_bounds() can fail... 2008-02-27 09:47:35 +00:00
cairo-path-fill.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-path-fixed-private.h Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-path-fixed.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-path-in-fill.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-path-private.h [cairo-path] Make _cairo_path_nil static. 2007-10-30 10:58:16 +00:00
cairo-path-stroke.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-path.c [doc] Replace 'NOTE' by 'Note' and add it to test 2008-01-28 21:53:44 -05:00
cairo-pattern.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-pdf-operators-private.h [show_text_glyphs] Replace the bool backward with cairo_text_cluster_flags 2008-09-18 00:26:07 -04:00
cairo-pdf-operators.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-pdf-surface-private.h PDF: Store the operation extents in each pattern 2008-11-02 20:12:29 +10:30
cairo-pdf-surface.c [mime-type] Request the mime-data for the source surface, not ourselves! 2008-11-04 13:03:24 +00:00
cairo-pdf.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-pen.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-png.c [surface] Pass a separate closure for the mime-type destroy notifier. 2008-11-07 19:30:33 +00:00
cairo-polygon.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-private.h [cairo] Cache freed gstates. 2008-06-13 21:34:41 +01:00
cairo-ps-surface-private.h PS: Implement EXTEND_PAD for image patterns 2008-11-02 20:12:29 +10:30
cairo-ps-surface.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-ps.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-quartz-font.c Map toy font face to implementation. 2008-10-22 16:38:12 +01:00
cairo-quartz-image-surface.c [quartz] Completely remove CAIRO_HAS_QUARTZ_IMAGE_SURFACE check 2008-10-15 13:41:03 -04:00
cairo-quartz-image.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-quartz-private.h Make sure feature macros are checked using #if, not #ifdef; add a test for it 2008-09-20 17:20:36 -04:00
cairo-quartz-surface.c [quartz] Add the proper propagation of extents 2008-11-11 08:41:31 -05:00
cairo-quartz.h Make sure feature macros are checked using #if, not #ifdef; add a test for it 2008-09-20 17:20:36 -04:00
cairo-rectangle.c Review users of cairo_rectangle_int_t for incorrect unsigned promotion. 2008-10-30 16:19:38 +00:00
cairo-reference-count-private.h Make sure (and check) that all private headers include some cairo header first 2008-09-19 17:19:10 -04:00
cairo-region-private.h Review users of cairo_rectangle_int_t for incorrect unsigned promotion. 2008-10-30 16:19:38 +00:00
cairo-region.c [traps] Whitespace. 2008-10-30 17:52:13 +00:00
cairo-scaled-font-private.h Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-scaled-font-subsets-private.h Put user fonts in a separate subset 2008-09-11 08:37:02 +09:30
cairo-scaled-font-subsets.c [hash] Return lookup entry. 2008-11-07 20:50:34 +00:00
cairo-scaled-font.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-script-surface.c Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-script.h Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo-sdl-surface.c [pattern] Avoid needless copying of patterns. 2008-10-30 17:52:05 +00:00
cairo-sdl.h [sdl] Add new backend. 2008-10-30 17:04:53 +00:00
cairo-skiplist-private.h [cairo-skiplist] Use one random number per insertion, instead of two 2007-04-09 19:39:50 -04:00
cairo-skiplist.c [skiplist] Inline testing. 2008-11-16 16:21:23 +00:00
cairo-slope.c [slope] Replace open-coding 64bit integer arithmetic. 2008-10-07 01:45:45 +01:00
cairo-spline.c [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-stroke-style.c Do correct calculation of pen dimensions for stroke optimization 2008-02-06 13:07:13 -08:00
cairo-surface-fallback-private.h [pattern] Avoid needless copying of patterns. 2008-10-30 17:52:05 +00:00
cairo-surface-fallback.c [png] Attach the png representation to cairo_surface_create_from_png(). 2008-11-05 18:13:09 +00:00
cairo-surface-private.h [mime-data] Allow embedding of arbitrary mime-types. 2008-11-03 11:24:12 +00:00
cairo-surface.c [surface] Pass a separate closure for the mime-type destroy notifier. 2008-11-07 19:30:33 +00:00
cairo-svg-surface-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-svg-surface.c [svg] Embed original PNG data. 2008-11-05 18:13:10 +00:00
cairo-svg.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-system.c [cairo.h] Don't define cairo_public to __declspec(dllimport) for static build 2008-09-26 13:27:42 -04:00
cairo-traps.c [traps] Whitespace. 2008-10-30 17:52:13 +00:00
cairo-truetype-subset-private.h Revamp the build system. 2008-09-02 20:24:08 -04:00
cairo-truetype-subset.c Check that reads in truetype_reverse_cmap are within valid data 2008-10-11 23:44:37 +10:30
cairo-type1-fallback.c [type1] Bind the RD procedure 2008-11-13 11:36:50 +00:00
cairo-type1-private.h Revamp the build system. 2008-09-02 20:24:08 -04:00
cairo-type1-subset.c [type1] Propagate fatal NO_MEMORY erro from FreeType. 2008-11-16 16:21:24 +00:00
cairo-type3-glyph-surface-private.h Don't add a notdef glyph to Type 3 font subsets 2008-10-22 22:00:31 +10:30
cairo-type3-glyph-surface.c Add an extents argument to the high level surface backend functions 2008-11-02 20:12:22 +10:30
cairo-types-private.h [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
cairo-unicode.c [doc] Fix a few gtk-doc errors. 2008-10-14 14:42:48 +01:00
cairo-uninstalled.pc.in Build -uninstalled.pc files 2008-09-11 00:38:30 -04:00
cairo-user-font-private.h Revamp the build system. 2008-09-02 20:24:08 -04:00
cairo-user-font.c [user-font] Eliminate shadowed variable 2008-10-30 17:52:15 +00:00
cairo-version.c Some nasty tracks to make changing version number not cause a total rebuild 2008-08-28 18:18:23 -04:00
cairo-version.h Some nasty tracks to make changing version number not cause a total rebuild 2008-08-28 18:18:23 -04:00
cairo-wideint-private.h [tessellator] Compile fixes for !HAVE_INT64_T 2008-10-07 22:16:26 +01:00
cairo-wideint-type-private.h Make sure (and check) that all private headers include some cairo header first 2008-09-19 17:19:10 -04:00
cairo-wideint.c [tessellator] Replace open-coding _cairo_int64_cmp(). 2008-10-06 12:07:41 +01:00
cairo-win32-font.c [pattern] Avoid needless copying of patterns. 2008-10-30 17:52:05 +00:00
cairo-win32-printing-surface.c win32-printing: Implement JPEG support 2008-11-06 00:21:35 +10:30
cairo-win32-private.h win32-printing: Implement JPEG support 2008-11-06 00:21:35 +10:30
cairo-win32-surface.c Add an extents argument to the high level surface backend functions 2008-11-02 20:12:22 +10:30
cairo-win32.h Make sure feature macros are checked using #if, not #ifdef; add a test for it 2008-09-20 17:20:36 -04:00
cairo-xcb-surface.c cairo-xcb: avoid leaking memory 2008-11-08 14:41:21 +00:00
cairo-xcb-xrender.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-xcb.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-xlib-display.c Merge branch '1.8' 2008-11-14 15:27:34 +01:00
cairo-xlib-private.h [xlib] Only clear the GC clip mask as necessary. 2008-10-30 17:52:14 +00:00
cairo-xlib-screen.c [xlib] Only clear the GC clip mask as necessary. 2008-10-30 17:52:14 +00:00
cairo-xlib-surface-private.h [xlib] Keep a pointer to the cairo_xlib_display_t on the surface. 2008-09-02 10:49:12 +01:00
cairo-xlib-surface.c [matrix] Minimise pixman conversion error. 2008-11-05 08:01:27 +00:00
cairo-xlib-visual.c [xlib] Implement dithering 2008-06-19 21:54:23 -04:00
cairo-xlib-xrender-private.h Define RepeatNone, etc if the available Render version doesn't (#18385) 2008-11-05 11:54:54 -05:00
cairo-xlib-xrender.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo-xlib.h Use #include "cairo-*." instead of #include <cairo-*.h> 2008-06-23 00:30:04 -04:00
cairo.c [cairo] FLush surface on cairo_destroy() 2008-11-16 16:21:24 +00:00
cairo.h Add CairoScript backend. 2008-11-13 11:36:54 +00:00
cairo.pc.in Improve backend .pc files generation: 2006-07-12 04:27:55 -04:00
cairoint.h [spline] Eliminate intermediate allocations during spline decomposition. 2008-11-16 16:21:25 +00:00
check-def.sh [check-*.sh] Redirect error reports to stderr 2008-09-26 11:08:22 -04:00
check-doc-syntax.sh [check-doc-syntax.sh] Allow quoting. 2008-10-14 13:44:47 +01:00
check-has-hidden-symbols.c [check] Move the hidden symbol check into check-{def,plt}.sh 2008-01-11 21:21:34 +00:00
check-headers.sh [check-*.sh] Redirect error reports to stderr 2008-09-26 11:08:22 -04:00
check-link.c [src/check-link.c] Simple test to check we can link to the built cairo.so 2008-09-02 21:31:43 -04:00
check-plt.sh [check-*.sh] Redirect error reports to stderr 2008-09-26 11:08:22 -04:00
check-preprocessor-syntax.sh [check-*.sh] Redirect error reports to stderr 2008-09-26 11:08:22 -04:00
Makefile.am [skiplist] Inline testing. 2008-11-16 16:21:23 +00:00
Makefile.am.analysis [Makefile.am] Only rerun headers-standalone if a header file has changed 2008-09-30 11:11:47 +01:00
Makefile.sources Add CairoScript backend. 2008-11-13 11:36:54 +00:00
Makefile.win32 [win32] Use -MDd and -LDd instead of -MD and -LD for debug build 2008-10-04 00:35:43 -04:00
README [src/README] s/Source.mk/Makefile.sources/ 2008-09-15 14:50:29 -04:00
test-fallback-surface.c clone_similar(): s/device_offset/clone_offset/ 2008-09-27 17:27:21 +01:00
test-fallback-surface.h [test-surfaces] Prefix public symbols with _cairo 2007-03-13 05:14:19 -04:00
test-meta-surface.c Add an extents argument to the high level surface backend functions 2008-11-02 20:12:22 +10:30
test-meta-surface.h [test-surfaces] Prefix public symbols with _cairo 2007-03-13 05:14:19 -04:00
test-paginated-surface.c Add an extents argument to the high level surface backend functions 2008-11-02 20:12:22 +10:30
test-paginated-surface.h [test-surfaces] Prefix public symbols with _cairo 2007-03-13 05:14:19 -04:00

Cairo Library Source Code
=========================

This directory contains the source code to the cairo library.


Source Code Listing
-------------------

The canonical list of source files is the file Makefile.sources.  See that
file for how it works.


New Backends
------------

The rule of the thumb for adding new backends is to see how other
backends are integrated.  Pick one of the simpler, unsupported, backends
and search the entire tree for it, and go from there.

To add new backends you need to basically:

  * Modify $(top_srcdir)/configure.in to add checks for your backend.

  * Modify Makefile.sources to add source files for your backend,

  * Modify $(top_srcdir)/boilerplate/ to add boilerplate code for
    testing your new backend.


New API
-------

After adding new API, run "make check" in this directory and fix any
reported issues.  Also add new API to the right location in
$(top_srcdir)/doc/public/cairo-sections.txt and run "make check"
in $(top_builddir)/doc/public to make sure that any newly added
documentation is correctly hooked up.

Do not forget to add tests for the new API.  See next section.


Tests
-----

There are some tests in this directory that check the source code and
the build for various issues.  The tests are very quick to run, and
particularly should be run after any documentation or API changes.  It
does not hurt to run them after any source modification either.  Run
them simply by calling:

	make check

There are also extensive regression tests in $(top_srcdir)/test.  It is
a good idea to run that test suite for any changes made to the source
code.  Moreover, for any new feature, API, or bug fix, new tests should
be added to the regression test suite to test the new code.


Bibliography
------------

A detailed list of academic publications used in cairo code is availagle
in the file $(top_srcdir)/BIBLIOGRAPHY.  Feel free to update as you
implement more papers.

For more technical publications (eg. Adobe technical reports) just
point them out in a comment in the header of the file implementing them.