[cairo-announce] cairo snapshot 1.5.10 now available
cworth at cworth.org
Wed Feb 20 10:22:17 PST 2008
A new cairo snapshot 1.5.10 is now available from:
which can be verified with:
(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.10 tag which points to a commit named:
which can be verified with:
git verify-tag 1.5.10
and can be checked out with a command such as:
git checkout -b build 1.5.10
This is the fifth snapshot in cairo's unstable 1.5 series. It comes 3
weeks after the 1.5.8 snapshot. This snapshot adds one new API
function, (cairo_has_current_point), and the usual mix of
improvements, (more efficient PostScript/PDF output, optimized
stroking), and fixes (more robust error-handling, etc.).
With this snapshot we're getting *really* close to cairo 1.6. The
number of test-suite failures is rapidly approaching zero and the
list of things still needing to be done is getting very short.
I am a bit disappointed to not have the change from 16.16 fixed point
to 24.8 fixed point in this snapshot. We did a ton of work to make
this possible, (including fixing the infinite loop bug it was exposing
earlier), and I even had the change in place just before releasing the
snapshot. But at the last moment we noticed that the change caused
some regressions in PS/PDF/SVG rendering, (pattern offsets are wrong
at least), so we pulled it out. But look for another snapshot soon
with that change. And see details below on what *did* make it in.
Do have fun with this. And try your best to break it. We're especially
interested in learning of any regressions in quality or performance of
1.5.10 compared to any 1.4.x release of cairo.
What's new in cairo 1.5.10 compared to cairo 1.5.8
Add a new function to query if there is a current point:
cairo_has_current_point (cairo_t *cr);
There is no current point immediately after cairo_create(), nor after
cairo_new_path() or cairo_new_sub_path(). There is a current point
after any of the path-creation functions, (cairo_move_to,
cairo_line_to, cairo_curve_to, etc.).
With this new function, we also revert the change of the return type
of cairo_get_current_point from cairo 1.5.8, (it's now a void function
Optimize stroking code to avoid repeated calculation of redundant
values, (particularly significant for very large, offscreen paths).
Patch a few more potential buffer overruns, (due to integer
Many fixes and improvements to cairo's error-handling, (ensure that
correct error values are returned, clean up memory leaks on
error-handling paths, etc.).
Fix a potential infinite loop when stroking a spline with a pen that
has been transformed to a line segment.
Remove treating NULL as a synonym for a valid cairo_font_options_t*
with default values, (a change that had been introduced as of cairo
Remove the altered handling of tolerance and fallback-resolution that
had been introduced as of cairo 1.5.4.
Pass the original Drawable, (as opposed to the root window), to
XCreatePixmap when creating a similar surface. This gives the X server
more information so that it can be clever and efficient.
Fix the rendering of repeating and reflecting patterns.
Ensure miter limit is always >= 1, (smaller limits are not meaningful,
but they can cause some PDF viewers to fail to display pages).
Generate more efficient output when the same path is used for both
fill and stroke.
Start sharing much of the cairo-pdf code rather than implementing very
similar code in cairo-ps.
Implement native support for repeating and reflecting linear
Implement reflected surface patterns.
Ensure miter limit is always >= 1, (smaller limits are not meaningful,
but they can cause some PostScript viewers to crash).
Generate PostScript that will perform more efficiently and use less
memory on printers, (use currentfile instead of a giant string array
for image data, and avoid using PostScript patterns for paint() and
fill() when possible).
Avoid unnecessary rasterization when copying a "similar" surface to
another svg surface, (allow the SOURCE operator to be implemented with
all-vector operations if there are no underlying objects).
Eliminate infinite loop when attempting to render an empty string.
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):
Summary of all changes from cairo 1.5.8 to 1.5.10
Adrian Johnson (34):
PDF: Use correct surface size when emitting patterns
Update operator-source PS ref images
PS: Implement linear gradient repeat and reflect
Update clip-operator ps ref image
Add operator-clear ps ref image
PS: Implement reflected surface patterns
Add linear-gradient-reflect ps ref image
Update gradient-alpha ps ref images
Update over-around-source ps ref image
Ensure PS/PDF miter is >= 1.0
Add dash-curve ps ref image
Update operator-source ps ref images
PDF: Fix uninitialized variable in previous commit
PDF: Remove stale comments
Add word_wrap stream to pdf-operators
Add PS linecap path workarounds to pdf_operators
pdf-operators: only one path matrix is required
PS: Remove the Type 3 outline glyph code
Make PS backend use cairo-pdf-operators.c
PS: Don't use patterns for paint surface extend none
Update rotate-image-surface-paint ps ref image
PS: Don't use patterns for fill surface extend none
PS: Use InterleaveType 2 for image and mask
PS: Use currentfile as the image data source
Update PS ref images
Win32-printing: Fix meta surface patterns
PDF: Word wrap _cairo_pdf_operators_show_glyphs output
PDF: Allow word_wrap_stream to split hex strings
Implement PDF fill-stroke
PS: Remove unused code
PDF/PS: No need to use save/restore for solid colors
PDF/PS: Fix mismatched save restore when using fill-stroke
Use correct prefix for _cairo_pdf_operators_stroke
Change PDF newline characters from \r\n to \n
Alp Toker (2):
Revert "Change cairo_get_current_point() to return cairo_status_t instead of void"
Antoine Azar (2):
Fixed rounding function call
Added cairo-misc.c to makefile
Azar at .(none) (2):
replaced round with _cairo_lround. Round doesn't compile on Win32
Some fixes and improvements to the Win32 build
Behdad Esfahbod (5):
[xlib] Move multiple CAIRO_MUTEX_INITIALIZE into one place they all end up anyway
[configure.in] Make PS/PDF/SVG default enabled
[docs] Fix typo
[cairo-pdf-operators] Pass matrix by reference, not by value
[cairo-misc.c] Add misc functions to this file
Bertram Felgenhauer (1):
[perf] add tests for magnified and minified image sources.
Carl Worth (25):
Increment cairo version to 1.5.9 after the 1.5.8 snapshot
cairo_xlib_surface_create_similar: Pass the original drawable to XCreatePixmap
Add several Makefile.win32 files to EXTRA_DIST
Make _cairo_slope_compare return a non-zero result for slopes that differ by pi
Eliminate a potential infinite loop in spline stroking
Add a spline to the degenerate-pen test case
Revert "[meta-surface] Adjust tolerance when replaying to surfaces with device scale"
cairo-svg: Make operation_supported depend on analyze_operation instead of the other way around.
Add svg-specific reference images for meta-surface-pattern test
svg: Add support for flattening SOURCE painting when there's nothing beneath it
Re-enable some pdf tests now that poppler has knockout support
Re-enable pdf tests with gradients and add poppler-based reference images
Add poppler-specific reference image for text-pattern
Add poppler-specific reference images for tests needing EXTEND_PAD
Add poppler-specific reference image for push-group
Add poppler-specific reference image for source-clip-scale
Update ps-specific reference images
Expand the documentation of cairo/test/README
Update ps-specific reference images for ghostscript 8.61
Add svg-specific reference image for mask-alpha
NEWS: Add notes for cairo 1.5.10
Increment cairo version to 1.5.10 and libtool versioning to 17:0:15
Mention that cairo_get_current_point is void again
Update REFERENCE_IMAGES for distcheck
Chris Wilson (29):
[test/invalid] Test cairo_translate() and friends for NaN safety.
[test/font-options] Check the defaults values.
[cairo-pdf-surface] Minor code tidy.
[cairo-png] Improve error return for invalid parameters.
[xmalloc] Hide valgrind warning.
[test/a1-sample-image] Fix the memleak.
[cairo-surface] Hide the compiler warnings.
[check] Only build documents during make check if we have GTK_DOC
[test] Add tests using each backend as a source.
[cairo-ft-font] Tidy usage of cairo_error().
[test/a8-mask] Fix memleak.
[test] Summarise the tests failures per backend.
[cairo-output-stream] Add format(printf) markup.
[cairo-ps-surface] Tidy return from _analyze_image_transparency().
[test/font-options] Check for HAVE_FCFINI
[boilerplage] Add getopts to the boilerplate library.
[cairo-font-options] Disallow use of NULL font-options.
[cairo-ft-font] Propagate error detected during determination of scale factors.
[cairo-scaled-font] Create error objects on demand.
[test/invalid-matrix] Promote incorrect status warning to an error.
[test/invalid-matrix] Check scale(0,0)
[test/invalid-matrix] Test detection of infinities.
[test/bitmap-font] Destroy the font options after use.
[pdf] Minor make check fix.
[pdf-operators] Missing private markup.
[cairo-pdf-operators] Cleanup word_wrap_stream
[cairo-surface] Check surface status on internal paths as well.
[cairo-scaled-font-subsets] Fix memleak on failure to reserve .notdef glyph.
[gitignore] Ignore cairo-no-features.h
Kristian Høgsberg (1):
[pdf] Use compressed PDF stream instead of compress_dup()
Peter Weilbacher (4):
[os2] Improve documentation
Merge branch 'master' of ssh://firstname.lastname@example.org/git/cairo
[os2] only call FcInit/Fini when compiled with FT font backend
[os2] fix typo in comment
Shailendra Jain (1):
Compile fix for AIX.
Vladimir Vukicevic (10):
Remove get-xrender-format from list of tests to be run on all platforms
Fix text-zero-len on ATSUI to not infinite loop
Optimize stroker by hoisting some calculations out of loops
Optimize dashed strokes, part 2
Update test ref images that changed with stroking changes
Followup patch to dashed stroke optimization
Do correct calculation of pen dimensions for stroke optimization
Avoid buffer overflow in ps/pdf surface
[pdf] restore alpha_size back to correct bit size
[stroker] fix _compute_normalized_device_slope to return correct sign
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: not available
Url : http://lists.cairographics.org/archives/cairo-announce/attachments/20080220/ada49c81/attachment.pgp
More information about the cairo-announce