[cairo-announce] cairo snapshot 1.5.8 now available

Carl Worth cworth at cworth.org
Wed Jan 30 05:44:02 PST 2008

A new cairo snapshot 1.5.8 is now available from:


    which can be verified with:

        8ab70db0eec1db3b730537d9076ddabf7e0ba537  cairo-1.5.8.tar.gz

        (signed by Carl Worth)

  Additionally, a git clone of the source tree:

        git clone git://git.cairographics.org/git/cairo

    will include a signed 1.5.8 tag which points to a commit named:

    which can be verified with:
        git verify-tag 1.5.8

    and can be checked out with a command such as:
        git checkout -b build 1.5.8

This is the fourth snapshot in cairo's unstable 1.5 series. It comes 2
weeks after the 1.5.6 snapshot. It adds a few new API functions. Most
notably all callers of cairo_image_surface_create_for_data should now
be calling cairo_format_stride_for_width to compute a legal stride

With this snapshot we are getting extrmely close to a final 1.6.0
release. We would appreciate as much testing as possible so that we
can eliminate bugs before that release rather than after. So give this
snapshot a try and let us know how things go for you.

And have fun with cairo!


Changes in cairo 1.5.8 since 1.5.6
New API in cairo 1.5.8
We've added a new function that should be called to compute a legal
stride value before allocating data to be used with

	cairo_format_stride_for_width (cairo_format_t	format,
				       int		width);

We've also added a new cairo_path_extents function that can be used to
compute a bounding box for geometry such as a single line segment,
(contrast with cairo_path_extents and cairo_stroke_extents):

	cairo_path_extents (cairo_t *cr,
			    double *x1, double *y1,
			    double *x2, double *y2);

And finally, we've added a function to allow for querying the
XRenderPictFormat of a cairo-xlib surface:

	XRenderPictFormat *
	cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface);

API changes
Fix return types of cairo_surface_show_page and
cairo_surface_copy_page. This is an API change to functions that are
new in the 1.5 series, so not an API break compared to any stable
cairo release, (1.0.x, 1.2.x, 1.4.x).

Change the return type of cairo_get_current_point() from void to
cairo_status_t. This allows the caller to receive a
CAIRO_STATUS_NO_CURRENT_POINT value to distinguish the a current point
at the origin from no current point existing.

Performance improvement
Improve performance of clipping by using an optimized code path
internally, (with the ADD operator instead of IN).

General bug fixes
Fix various cairo_*_extents functions to initialize the return-value
variables even in the case of a cairo_t in error.

Treat NULL as a legitimate value for cairo_font_options_t*. [XXX: On
discussion afterwards, we decided against this change so we plan to
remove this again before 1.6.0]

Fix rendering with CAIRO_ANTIALIAS_NONE to be more predictable, (that
is, to avoid seams appearing when geometry and imagery share an
identical edge). Portions of this fix are in the pixman library and
will appear in a future release of that library.

Avoid triggering an error for a font size of 0.

Miscellaneous changes
Require pixman >= 0.9.6.

There has been a tremendous amount improvement to cairo's
documentation. We're delighted that 100% of the public API has at
least some documentation in the API reference manual. Many thanks to
Behdad Esfahbod and Nis Martensen for leading this effort.

cairo-pdf and cairo-ps
Eliminate failure when a Type 1 font is embedded with an explicit
glyph 0.

Implement a more correct and more efficient approach for patterns with
an extend mode of CAIRO_EXTEND_REFLECT.

Fix image masks to properly pack and pad mask bits.

Take care to only use DrawTiledImage for integer-aligned images, (and
use slower paths to get the correct result in other cases).

Fix for older versions of mingw.

Improve the handling of the clipping with the win32 and win32-printing

Fix rendering of non black/white text.

What is cairo
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers, as well as PDF, PostScript, and SVG
file output. Experimental backends include OpenGL (through glitz),
Quartz, XCB, BeOS, OS/2, and DirectFB.

Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).

The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo include stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,

Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface.  At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.

Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version

Where to get more information about cairo
The primary source of information about cairo is:


The latest versions of cairo can always be found at:


Documentation on using cairo and frequently-asked questions:


Mailing lists for contacting cairo users and developers:


Roadmap and unscheduled things to do, (please feel free to help out):


List of all changes from cairo 1.5.6 to 1.5.8
Adrian Johnson (5):
      win32-printing: define GRADIENT_FILL_RECT_H  bug #14107
      Fix PDF extend-reflect test failure
      Type1-subset: Add newline to the end of the font
      Fix PS/PDF Type 1 font embedding when glyph 0 is used
      Fix undefined macro that was preventing the tests from compiling

Behdad Esfahbod (62):
      [cairo-fixed/wideint-private.h] Split out typedefs from prototypes
      [cairoint.h] Move MSC inline macros into cairo-compiler-private.h
      [cairo-operator] Remove unused cairo-operator.c
      [cairo-path-stroke] Use M_SQRT2 for constant value
      [test] Only summarize check results for the tests tested!
      [ROADMAP] Add item: Make cairo-ft respect FC_FT_FACE pattern element
      [test] Also check for reference images listed in Makefile.am but missing
      [test] Minor fix for check-ref-dups rule
      [cairo-scaled-font] Don't err on font size 0
      [cairo-scaled-font] Oops, return err if not handling it
      [cairo-scaled-font] Don't err on font size 0, really
      [cairo-scaled-font] Unbreak it after my recent commit
      [configure.in] Require pixman >= 0.9.6
      [cairo-scaled-font] Fix bug in glyphs bounding box computation
      [test] Test that cairo_text_extents() and cairo_scaled_font_text_extents() match
      [test/text-zero-len] Test text and font extents for font size 0
      [test/bitmap-font] Test under all combinations of hinting, test font metrics too
      [cairo-ft] Fix font metrics computation for bitmap fonts and no metrics-hinting
      [.gitignore] Add check-has-hidden-symbols.i
      [cairo-ft] Disable embedded bitmaps if hinting style NONE is requested
      [cairo_surface_show/copy_page()] Make them return void, like cairo_show/copy_page() do
      [cairo-pdf-operators] Reformat typedef to not confuse gtk-doc
      [doc] Update for recent API changes
      [doc] Update list of private header files
      Change cairo_get_current_point() to return cairo_status_t instead of void
      [src] Fix make check
      [test/font-matrix-translation] Fix function signature
      [src] Fix gtk-doc warnings
      [doc] Add Long_Description and some See_Also for all chapters
      [cairo_operator_t] Improve docs
      [doc] Expand a couple nicks to full enum names
      [src/check-*] Shut make up
      [doc] Update templates for recently added APIs
      [doc] Another enum nick expansion
      [doc] Make sure all macro names in docs are prefixed by %
      [doc] Make sure all type names in docs are prefixed by #
      [doc] Improve docs for new API
      [doc/public/check-doc-coverage.sh] Test that doc coverage is 100%
      [doc] Minor improvement
      [doc] Improve syntax
      [src/check-doc-syntax.sh] Check for various doc syntax consistency rules
      [doc] Make sure all function names in docs are followed by ()
      [doc] Replace 'NOTE' by 'Note' and add it to test
      [doc] Stricter syntax check for type names, update test
      [doc] Fix typo
      [doc] Document the surface type of win32-printing surface being different
      [doc] Rename cairo-font.sgml to cairo-font-face.sgml
      [configure.in] Add commented-out #undef's for disable stable backends in cairo-features.h
      [doc] More syntax fixes
      [doc] Remove excess paranthesis
      [configure.in] Generate a cairo-no-features.h with macros for disabled supported backends
      [doc] Document CAIRO_HAS_* macros.  We now finally have real 100% coverage.
      [configure.in] Minor change to cairo-features.h comments to make tests pass
      [src/check-doc-syntax.sh] Skip test if GNU grep is not available
      [doc] Run check-doc-syntax.sh for SGML docs too
      [cairo_image_surface_create_for_data] Document stride error status
      [Makefile.am] Remove ROADMAP and TODO from dist files
      [cairo-image-surface.c] Cleanup stride checking and improve docs
      [Makefile.am] Minor wording change
      [doc] Fix cairo_operator_t docs to make Carl (and Keith) happy
      [cairo_operator_t] Mark DestAtop unbounded and document boundedness
      [src/Makefile.am] Reorganize

Bertram Felgenhauer (3):
      anchor pattern transformations at the pattern origin
      update reference images for some non-aa testcases
      improve comments for the pixman transformation anchoring math.

Brian Ewins (5):
      [path-fixed] add _cairo_path_fixed_interpret_flat
      [path-fixed] make _cairo_path_fixed_bounds use _cairo_path_fixed_interpret_flat
      [cairo] Add cairo_path_extents()
      [path] Use new interpret_flat infrastructure for path_count.
      [path] use new interpret_flat infrastructure for path_populate

Carl Worth (41):
      Increment version to 1.5.7 after the 1.5.6 snapshot
      Remove some gratuitous assert statements
      Quiet a warning about switch without some cairo_surface_type_t enum values
      Add a1-image-sample and a1-traps-sample tests
      Clarify documentation of cairo_{fill,stroke,path}_extents
      Define repeated string literal once
      Correct near-pangram to be an actual pangram
      Fix cairo_path_extents to ignore lone cairo_move_to points.
      Add cairo_path_extents testing to several cases missing it
      Test and document extents of degenerate "dots"
      Rename trailing_move_to_point to move_to_point
      Add new rectilinear-miter-limit test to demonstrate bug
      Disable rectilinear stroke optimization for small miter limit values
      Test and document that fill rule has no effect on cairo_path_extents
      Make Carl return from his time-traveling expedition
      Remove ROADMAP and TODO, mentioning their URLs in README
      Rename cairo_format_width to cairo_format_bits_per_pixel and correct its logic
      Add cairo_image_surface_stride_for_width
      Rename cairo_image_surface_stride_for_width to cairo_format_stride_for_width
      Clarify the documentation of stride within cairo_image_surface_create_for_data
      Add missing cairo_private (for _pixman_format_to_masks)
      Add new API cairo_xlib_surface_get_render_format
      Return NULL from cairo_xlib_surface_get_xrender_format without an error
      Add get-xrender-format test to test cairo_xlib_surface_get_xrender_format
      Test the no-Render-extension-available case in get-xrender-format
      Add pdf-specific reference images for meta-surface-pattern
      Add documentation for cairo_filter_t
      Add example to documentation of cairo_pattern_set_filter
      Fix some documentation typos
      Fix bitmap-font test by using near-equality for double comparison
      Add missing libcairo_font_subset_sources to fix the build
      Initialize return values for cairo_*_extents in case of error
      wAdd proper error propagation to _cairo_matrix_compute_scale_factors
      Fix typo in printf arguments in error message
      NEWS: Add notes for the 1.5.8 snapshot
      Remove extend-pad-similar test case
      Add doc/public test scripts to EXTRA_DIST
      check-doc-syntax.sh: Fix for non-srcdir builds (such as make distcheck)
      Add a1-image-sample and a1-traps-sample reference images to the dist list
      Increment cairo version to 1.5.8 and libtool version to 16:0:14
      Add some more reference images to REFERENCE_IMAGES

Chris Wilson (21):
      [Makefile.am] Further massage lcov paths for srcdir != builddir.
      [test/dash-curve] Add a new test case for dashes along splines.
      [cairo-path-stroke] Convert degenerate splines into lines.
      [Makefile.am] Couple check-ref-missing into release-check
      [Makefile.am] Another path massage for lcov.
      [test/get-path-extents] Check extents of degenerate paths.
      [cairo-analysis-surface] Return the nil surface rather than NULL.
      [cairo-region] Review status propagation.
      [test/in-fill-trapezoid] Add test to exercise _cairo_trap_contains().
      [test/in-fill-trapezoid] Add a few holes.
      [test/text-zero-len] Test the public cairo_scaled_font_* with NULLs.
      [text] Set the extents on the error paths.
      [test/get-path-extents] Exercise cairo_scaled_font_text_extents()
      [cairo-xlib] Remove the NULL safeguards.
      [cairo-scaled-font] Typo.
      [cairo-scaled-font] Propagate the error to the font.
      [cairo-{ps,pdf}-surface] Assert the font is supported during emission.
      [test/extend-*] Add various cairo_pattern_set_extend() test cases.
      [cairo-font-options] Check for a NULL cairo_font_options_t
      [cairo-font-options] Use cairo_font_options_status() rather open-coding.
      [cairo-font-options] Treat NULL as a default cairo_font_options_t

Jeff Muizelaar (1):
      Use ADD instead of IN for clipping.

Nis Martensen (6):
      [cairo-surface] Fix doc typo
      Describe cairo_operator_t, add link to operators/ wiki page
      Add index of new symbols in 1.6
      remove empty tutorial stub and one level of structuring
      re-indent xml after removal of structuring level
      Fix typos

Peter Weilbacher (2):
      [cairo-ft] Add FC_PIXEL_SIZE as double, not int
      [cairo-ft] Fix typo in comment

Vladimir Vukicevic (9):
      Fix usage of cairo_rectangle_int16_t leading to memory corruption
      cairo_point_int32_t is really int32_t, not int16_t
      [win32] Better tracking of initial clip
      [win32] Print non-black/white text correctly in show_glyphs
      [quartz] Clean up unused APIs a bit
      [quartz] Do dynamic symbol lookups for 10.4/10.5 optimization symbols
      [ps] Pad image mask lines out to full lines
      [win32] Fix initial clip region test
      [quartz] only use DrawTiledImage if transformed image is integer aligned
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.cairographics.org/archives/cairo-announce/attachments/20080130/2519233b/attachment.pgp 

More information about the cairo-announce mailing list