[cairo-commit] 3 commits - AUTHORS NEWS src/cairo.h

Carl Worth cworth at kemper.freedesktop.org
Tue Mar 6 01:20:10 PST 2007

 AUTHORS     |   52 +++++++++++-
 NEWS        |  251 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 src/cairo.h |   14 +--
 3 files changed, 304 insertions(+), 13 deletions(-)

New commits:
diff-tree d0d2c4030741619accd1eb554531bb6a97dd7ae4 (from 0578929fa4add0cf366e200a5bd6b9f2dfcd0b79)
Author: Carl Worth <cworth at cworth.org>
Date:   Tue Mar 6 01:20:03 2007 -0800

    Clarify that extra elements in cairo_path_data is only available in cairo >= 1.4

diff --git a/src/cairo.h b/src/cairo.h
index cdb9a02..68169a3 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -1333,13 +1333,13 @@ typedef enum _cairo_path_data_type {
  *      cairo_path_destroy (path);
  * </programlisting></informalexample>
- * Cairo does not mind if there are more elements in a portion
- * of the path than needed.  Such elements can be used by users of
- * the cairo API to hold extra values in the path data structure.
- * For this reason, it is recommended that applications always use
- * <literal>data->header.length</literal> to advance iterate over
- * the path data, instead of hardcoding the number of elements for
- * each element type.
+ * As of cairo 1.4, cairo does not mind if there are more elements in
+ * a portion of the path than needed.  Such elements can be used by
+ * users of the cairo API to hold extra values in the path data
+ * structure.  For this reason, it is recommended that applications
+ * always use <literal>data->header.length</literal> to advance
+ * iterate over the path data, instead of hardcoding the number of
+ * elements for each element type.
 typedef union _cairo_path_data_t cairo_path_data_t;
 union _cairo_path_data_t {
diff-tree 0578929fa4add0cf366e200a5bd6b9f2dfcd0b79 (from 66d1dc8b9c3d7c1e26321bdb621ef55779c2fd6d)
Author: Carl Worth <cworth at cworth.org>
Date:   Tue Mar 6 01:09:02 2007 -0800

    NEWS: Add release notes for 1.4.0 release

diff --git a/NEWS b/NEWS
index 19d8e9b..b4fcd2e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,252 @@
+Release 1.4.0 (2007-03-06 Carl Worth <cworth at cworth.org>)
+The many people[*] who have been working hard on cairo are very
+pleased to announce the long-awaited release of cairo 1.4. This
+release comes 4 months after the last stable update release (1.2.6)
+and 9 months since the initial release of 1.2.0.
+The release notes below are intended to capture the highlights of the
+changes that have occurred from the 1.2 series to the new 1.4.0
+Performance improvements
+Within the cairo project, the last 6 months or so has seen an intense
+effort focusing on the performance of cairo itself. That effort has
+paid off considerably, as can be seen in the following highlights of
+some of the performance differences from cairo 1.2.6 to cairo 1.4.0:
+• Dramatic improvement when drawing objects that are mostly off-screen
+  with the image backend (with the xlib backend this case is still
+  slow due to an X server bug):
+  image-rgba       long-lines-uncropped-100  479.64 ->  4.98: 96.24x speedup
+  ███████████████████████████████████████████████▋
+• Dramatic improvement when copying a small fraction of an image
+  surface to an xlib surface:
+   xlib-rgba              subimage_copy-512    3.93 ->  0.07: 54.52x speedup
+  ██████████████████████████▊
+• Dramatic improvement to tessellation speed for complex objects:
+  image-rgb              tessellate-256-100  874.16 -> 34.79: 25.13x speedup
+  ████████████▏
+   xlib-rgba        zrusin_another_fill-415  148.40 -> 13.85: 10.72x speedup
+  ████▉
+   xlib-rgb                  world_map-800  680.20 -> 345.54:  1.97x speedup
+  ▌
+• Dramatic improvement to the speed of stroking rectilinear shapes,
+  (such as the outline of a rectangle or "box"):
+  image-rgb          box-outline-stroke-100    0.18 ->  0.01: 24.22x speedup
+  ███████████▋
+   xlib-rgb          box-outline-stroke-100    0.46 ->  0.06:  8.05x speedup
+  ███▌
+• Dramatic improvements to text rendering speeds:
+   xlib-rgba       text_image_rgba_over-256   63.12 ->  9.61:  6.57x speedup
+  ██▊
+• 3x improvements to floating-point to fixed-point conversion speeds:
+  image-rgba      pattern_create_radial-16     9.29 ->  3.44:  2.70x speedup
+  â–‰
+• 2x improvements to linear gradient computation:
+  image-rgb     paint_linear_rgb_source-512   26.22 -> 11.61:  2.26x speedup
+  â–‹
+• 2x improvement to a case common in PDF rendering:
+  image-rgb              unaligned_clip-100    0.10 ->  0.06:  1.81x speedup
+  ▍
+• 1.3x improvement to rectangle filling speed (note: this improvement
+  is new since 1.3.16---previously this test case was a 1.3x slowdown
+  compared to 1.2.6):
+  image-rgba                 rectangles-512    6.19 ->  4.37:  1.42x speedup
+  â–Ž
+  xlib-rgba                  rectangles-512    7.48 ->  5.58:  1.34x speedup
+  ▏
+NOTE: In spite of our best efforts, there are some measurable
+performance regressions in 1.4 compared to 1.2. It appears that the
+primary problem is the increased overhead of the new tessellator when
+drawing many, very simple shapes. The following test cases capture
+some of that slowdown:
+  image-rgba    mosaic_tessellate_lines-800   11.03 -> 14.29:  1.30x slowdown
+  ▏
+  image-rgba           box-outline-fill-100    0.01 ->  0.01:  1.26x slowdown
+  ▏
+  image-rgba        fill_solid_rgb_over-64     0.20 ->  0.22:  1.12x slowdown
+  image-rgba       fill_image_rgba_over-64     0.23 ->  0.25:  1.10x slowdown
+   xlib-rgb     paint_image_rgba_source-256    3.24 ->  3.47:  1.07x slowdown
+We did put some special effort into eliminating this slowdown for the
+very common case of drawing axis-aligned rectangles with an identity
+matrix (see the box-outline-stroke and rectangles speedup numbers
+above). Eliminating the rest of this slowdown will be a worthwhile
+project going forward.
+Also note that the "box-outline-fill" case is a slowdown while
+"box-outline-stroke" is a (huge) speedup. These two test cases
+resulted from the fact that some GTK+ theme authors were filling
+between two rectangles to avoid slow performance from the more natural
+means of achieving the same shape by stroking a single rectangle. With
+1.4 that workaround should definitely be eliminated as it will now
+cause things to perform more slowly.
+Greatly improved PDF output
+We are very happy to be able to announce that cairo-generated PDF
+output will now have text that can be selected, cut-and-pasted, and
+searched with most capable PDF viewer applications. This is something
+that was not ever possible with cairo 1.2.
+Also, the PDF output now has much more compact encoding of text than
+before. Cairo is now much more careful to not embed multiple copies of
+the same font at different sizes. It also compresses text and font
+streams within the PDF output.
+API additions
+There are several new functions available in 1.4 that were not
+available in 1.2. Curiously, almost all of the new functions simply
+allow the user to query state that has been set in cairo (many new
+"get" functions) rather than providing any fundamentally new
+operations. The new functionality is:
+• Getting information about the current clip region
+  cairo_clip_extents
+  cairo_copy_clip_rectangle_list
+  cairo_rectangle_list_destroy
+• Getting information about the current dash setting
+  cairo_get_dash_count
+  cairo_get_dash
+• Getting information from a pattern
+  cairo_pattern_get_rgba
+  cairo_pattern_get_surface
+  cairo_pattern_get_color_stop_rgba
+  cairo_pattern_get_color_stop_count
+  cairo_pattern_get_linear_points
+  cairo_pattern_get_radial_circles
+• Getting the current scaled font
+  cairo_get_scaled_font
+• Getting reference counts
+  cairo_get_reference_count
+  cairo_surface_get_reference_count
+  cairo_pattern_get_reference_count
+  cairo_font_face_get_reference_count
+  cairo_scaled_font_get_reference_count
+• Setting/getting user data on objects
+  cairo_set_user_data
+  cairo_get_user_data
+  cairo_pattern_set_user_data
+  cairo_pattern_get_user_data
+  cairo_scaled_font_set_user_data
+  cairo_scaled_font_get_user_data
+• New cairo-win32 functions:
+  cairo_win32_surface_create_with_ddb
+  cairo_win32_surface_get_image
+  cairo_win32_scaled_font_get_logical_to_device
+  cairo_win32_scaled_font_get_device_to_logical
+API deprecation
+The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
+worked as a format value for cairo_image_surface_create, and it wasn't
+necessary for supporting 16-bit 565 X server visuals.
+A sampling of bug fixes in cairo 1.4
+  • Fixed radial gradients
+  • Fixed dashing (degenerate and "leaky" cases)
+  • Fixed transformed images in PDF/PS output (eliminate bogus repeating)
+  • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
+  • cairo_show_page no longer needed for single-page output
+  • SVG: Fix bug preventing text from appearing in many viewers
+  • cairo-ft: Return correct metrics when hinting is off
+  • Eliminate crash in cairo_create_similar if nil surface is returned
+  • Eliminate crash after INVALID_RESTORE error
+  • Fix many bugs related to multi-threaded use and locking
+  • Fix for glyph spacing 32 times larger than desired (cairo-win32)
+  • Fixed several problems in cairo-atsui (assertion failures)
+  • Fix PDF output to avoid problems when printing from Acrobat Reader
+  • Fix segfault on Mac OS X (measuring a zero-length string)
+  • Fix text extents to not include the size of non-inked characters
+  • Fix for glyph cache race condition in glitz backend (Jinghua Luo)
+  • Fix make check to work on OPD platforms (IA64 or PPC64)
+  • Fix compilation problems of cairo "wideint" code on some platforms
+  • Many, many others...
+Experimental backends (quartz, XCB, OS/2, BeOS, directfb)
+None of cairo's experimental backends are graduating to "supported"
+status with 1.4.0, but two of them in particular (quartz and xcb), are
+very close.
+The quartz baceknd has been entirely rewritten and is now much more
+efficient. The XCB backend has been updated to track the latest XCB
+API (which recently had a 1.0 release).
+We hope to see these backends become supported in a future release,
+(once they are passing all the tests in cairo's test suite).
+The experimental OS/2 backend is new in cairo 1.4 compared to cairo
+Documentation improvements
+We have added documentation for several functions and types that
+were previously undocumented, and improved documentation on other
+ones.  As of this release, there remain only two undocumented
+symbols: cairo_filter_t and cairo_operator_t.
+[*]Thanks to everyone
+I've accounted for 41 distinct people with attributed code added to
+cairo between 1.2.6 and 1.4.0, (their names are below). That's an
+impressive number, but there are certainly dozens more that
+contributed with testing, suggestions, clarifying questions, and
+encouragement. I'm grateful for the friendships that have developed as
+we have worked on cairo together. Thanks to everyone for making this
+all so much fun!
+Adrian Johnson, Alfred Peng, Alp Toker, Behdad Esfahbod,
+Benjamin Otte, Brian Ewins, Carl Worth, Christian Biesinger,
+Christopher (Monty) Montgomery, Daniel Amelang, Dan Williams,
+Dave Yeo, David Turner, Emmanuel Pacaud, Eugeniy Meshcheryakov,
+Frederic Crozat, Hans Breuer, Ian Osgood, Jamey Sharp, Jeff Muizelaar,
+Jeff Smith, Jinghua Luo, Jonathan Watt, Joonas Pihlaja, Jorn Baayen,
+Kalle Vahlman, Kjartan Maraas, Kristian Høgsberg, M Joonas Pihlaja,
+Mathias Hasselmann, Mathieu Lacage, Michael Emmel, Nicholas Miell,
+Pavel Roskin, Peter Weilbacher, Robert O'Callahan,
+Soren Sandmann Pedersen, Stuart Parmenter, T Rowley,
+Vladimir Vukicevic
 Snapshot 1.3.16 (2007-03-02 Carl Worth <cworth at cworth.org>)
 New API functions
@@ -2518,7 +2767,7 @@ This is the first snapshot to include a 
 	#include <cairo-win32.h>
-	void 
+	void
 	cairo_set_target_win32 (cairo_t *cr,
 				HDC      hdc);
diff-tree 66d1dc8b9c3d7c1e26321bdb621ef55779c2fd6d (from 2f4ddc85a50641a7f6e1f467fa94610875f8ed02)
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Mar 5 23:55:05 2007 -0800

    Update AUTHORS with 47 (!) new authors since 1.0

diff --git a/AUTHORS b/AUTHORS
index 1322c7f..d637289 100644
@@ -4,19 +4,29 @@ Shawn T. Amundson <amundson at gtk.org> Bui
 Olivier Andrieu <oliv__a at users.sourceforge.net> PNG backend
 Peter Dennis Bartok <peter at novonyx.com> Bug fix for clipping
 Dave Beckett <dajobe at debian.org> Build fixes, Debian packaging
+Christian Biesinger <cbiesinger at web.de> BeOS backend
 Billy Biggs <vektor at dumbterm.net> Pixman code merge. Optimization. Fixes for subtle rendering bugs.
 Hans Breuer <hans at breuer.org> win32 bug fixes, build fixes, and improvements
+Brian Cameron <brian.cameron at sun.com> Flag bug in Sun's X server
 Damien Carbery <damien.carbery at sun.com> Build fixes
 Andrew Chant <andrew.chant at utoronto.ca> Adding const where needed
 Steve Chaplin <stevech1097 at yahoo.com.au> Bug fixes for PNG reading
 Tomasz Cholewo <cholewo at ieee-cis.org> Bug fixes
+Manu Cornet <manu at manucornet.net> SVG build fix
+Frederic Crozat <fcrozat at mandriva.com> Fix test suite for OPD platforms (IA64 or PPC64)
 Radek Doulík <rodo at novell.com> Bug report and test case
 John Ehresman <jpe at wingide.com> Build fixes for win32
 John Ellson <ellson at research.att.com> First font/glyph extents functions
-Behdad Esfahbod <behdad at behdad.org> Release script improvements, bug fixes.
+Michael Emmel <mike.emmel at gmail.com> DirectFB backend
+Miklós Erdélyi <erdelyim at gmail.com> Fix typo leading to a crash
+Behdad Esfahbod <behdad at behdad.org> Huge piles of bug fixes, improvements, and general maintenance
+Brian Ewins <Brian.Ewins at gmail.com> ATSUI maintenance (first success at making it really work)
 Bertram Felgenhauer <int-e at gmx.de> Fixes for subtle arithmetic errors
 Bdale Garbee <bdale at gag.com> Provided essential support for cairo achitecture sessions
+Jens Granseuer <jensgr at gmx.net> Fixes to generate proper compiler flags
+Laxmi Harikumar <laxmi.harikumar at digital.com> Build fix
 J. Ali Harlow <ali at avrc.city.ac.uk> win32 backend updates
+Mathias Hasselmann <mathias.hasselmann at gmx.de> Build fixes
 Richard Henderson <rth at twiddle.net> "slim" macros for better shared libraries 
 James Henstridge <james at daa.com.au> Build fixes related to freetype
 Graydon Hoare <graydon at redhat.com> Support for non-render X server, first real text support
@@ -25,33 +35,65 @@ Kristian Høgsberg <krh at redhat.com> PDF 
 Amaury Jacquot <sxpert at esitcom.org> Documentation review, appplication testing
 Adrian Johnson <ajohnson at redneon.com> PDF backend improvement
 Michael Johnson <ahze at ahze.net> Bug fix for pre-C99 compilers
+Jonathon Jongsma <jonathon.jongsma at gmail.com> Fix documentation typos
 Øyvind Kolås <pippin at freedesktop.org> Bug fixes. Better default values.
 Martin Kretzschmar <martink at gnome.org> Arithmetic fix for 64-bit architectures
+Mathieu Lacage <Mathieu.Lacage at sophia.inria.fr> several bug/typo fixes
+Dominic Lachowicz <domlachowicz at gmail.com> PDF conformance fix, fix image surface to zero out contents
 Alexander Larsson <alexl at redhat.com> Profiling and performance fixes.
 Tor Lillqvist <tml at novell.com> win32 build fixes, build scripts
+Jinghua Luo <sunmoon1997 at gmail.com> Add bitmap glyph transformation, many freetype and glitz fixes
 Luke-Jr <luke-jr at utopios.org> Build fix for cross-compiling
+Kjartan Maraas <kmaraas at gnome.org> Several fixes for sparse, lots of debug help for multi-thread bugs
 Jordi Mas <jordi at ximian.com> Bug fix for cairo_show_text
-Jeff Muizelaar <jeff at infidigm.net> Patient, painful, pixman code merge. Test fixes
+Nicholas Miell <nmiell at gmail.com> Fixes for linking bugs on AMD64
+Eugeniy Meshcheryakov <eugen at debian.org> PS/PDF font subsetting improvements
+Zakharov Mikhail <zmey20000 at yahoo.com> Build fix for HP-UX
+Christopher (Monty) Montgomery <xiphmont at gmail.com> Performnace fix (subimage_copy), multi-thread testing
+Tim Mooney <enchanter at users.sourceforge.net> Fix test suite to compile with Solaris compiler
+Jeff Muizelaar <jeff at infidigm.net> Patient, painful, pixman code merge. Many fixes for intricacies of dashing.
+Yevgen Muntyan <muntyan at tamu.edu> win32 build fix
+Declan Naughton <piratepenguin at gmail.com> Fix documentation typos
 Peter Nilsson <c99pnn at cs.umu.se> Glitz backend
+Henning Noren <henning.noren.402 at student.lu.se> Fix memory leak
 Geoff Norton <gnorton at customerdna.com> Build fixes
-Robert O'Callahan <rocallahan at novell.com> Const-correctness fixes.
+Robert O'Callahan <rocallahan at novell.com> Const-correctness fixes, several new API functions for completeness (and to help mozilla)
+Ian Osgood <iano at quirkster.com> XCB backend maintenance
+Benjamin Otte <in7y118 at public.uni-hamburg.de> Refinements to cairo/perf timing
 Mike Owens <etc at filespanker.com> Bug fixes
+Emmanuel Pacaud <emmanuel.pacaud at lapp.in2p3.fr> SVG backend
 Keith Packard <keithp at keithp.com> Original concept, polygon tessellation, dashing, font metrics rewrite
 Stuart Parmenter <pavlov at pavlov.net> Original GDI+ backend, win32 fixes
+Alfred Peng <alfred.peng at sun.com> Fixes for Sun compilers and for a memory leak
 Christof Petig <christof at petig-baender.de> Build fixes related to freetype
 Joonas Pihlaja <jpihlaja at cc.helsinki.fi> Huge improvements to the tessellator performance
+Mart Raudsepp <leio at dustbite.net> Build fixes
 David Reveman <davidr at novell.com> New pattern API, glitz backend
 Calum Robinson <calumr at mac.com> Quartz backend
-Tim Rowley <tim.rowley at gmail.com> Quartz/ATSUI fixes, X server workarounds, win32 glyph path support
+Pavel Roskin <proski at gnu.org> Several cleanups to eliminate warnings
+Tim Rowley <tim.rowley at gmail.com> Quartz/ATSUI fixes, X server workarounds, win32 glyph path support, test case to expose gradient regression
+Soeren Sandmann <sandmann at daimi.au.dk> Lots of MMX love for pixman compositing
+Torsten Schönfeld <kaffeetisch at gmx.de> Build fixes
 Jamey Sharp <jamey at minilop.net> Surface/font backend virtualization, XCB backend
 Jason Dorje Short <jdorje at users.sf.net> Build fixes and bug fixes
+Jeff Smith <whydoubt at yahoo.com> Fixes for intricacies of stroking code
 Travis Spencer <tspencer at cs.pdx.edu> XCB backend fix
 Bill Spitzak <spitzak at d2.com> Build fix to find Xrender.h without xrender.pc
+Zhe Su <james.su at gmail.com> Add support for fontconfig's embeddedbitmap option
 Owen Taylor <otaylor at redhat.com> Font rewrite, documentation, win32 backend
+Alp Toker <alp at atoker.com> Fix several code/comment typos
 Malcolm Tredinnick <malcolm at commsecure.com.au> Documentation fixes
+David Turner <david at freetype.org> Optimize gradient calculations
+Kalle Vahlman <kalle.vahlman at gmail.com> Allow perf reports to be compared across different platforms
 Sasha Vasko <sasha at aftercode.net> Build fix to compile without xlib backend
-Vladimir Vukicevic <vladimir at pobox.com> Bug fix for clipping
+Vladimir Vukicevic <vladimir at pobox.com> Quartz backend rewrite, win32/quartz maintenance
+Jonathan Watt <jwatt at jwatt.org> win32 fixes
+Peter Weilbacher <pmw at avila.aip.de> OS/2 backend
+Dan Williams <dcbw at redhat.com> Implemnt MMX function to help OLPC
+Chris Wilson <cpwilson at taz.qinetiq.com> Fix memory leak
 Carl Worth <cworth at isi.edu> Original library, support for paths, images
 Richard D. Worth <richard at theworths.org> Build fixes for cygwin
+Kent Worsnop <kworsnop at accesswave.ca> Fix PDF dashing bug
+Dave Yeo <daveryeo at telus.net> Build fix for win32
 (please let us know if we have missed anyone)

More information about the cairo-commit mailing list