[cairo-announce] cairo release 1.10.0 now available
chris at chris-wilson.co.uk
Mon Sep 6 10:52:09 PDT 2010
A new cairo release 1.10.0 is now available from:
which can be verified with:
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.10.0 tag which points to a commit named:
which can be verified with:
git verify-tag 1.10.0
and can be checked out with a command such as:
git checkout -b build 1.10.0
Release 1.10.0 (2010-09-06 Chris Wilson <chris at chris-wilson.co.uk>)
The cairo community is astounded (and flabbergast) to finally announce
the 1.10.0 release of the cairo graphics library. This is a major update
to cairo, with new features and enhanced functionality which maintains
compatibility for applications written using any previous major cairo
release, (1.8, 1.6, 1.4, 1.2, or 1.0). We recommend that anybody using
a previous version of cairo upgrade to cairo 1.10.0.
One of the more interesting departures for cairo for this release is the
inclusion of a tracing utility, cairo-trace. cairo-trace generates a
human-readable, replayable, compact representation of the sequences of
drawing commands made by an application. This can be used to inspecting
applications to understand issues and as a means for profiling
real-world usage of cairo.
The traces generated by cairo-trace have been collected in
and have driven the performance tuning of cairo over the last couple of
years. In particular, the image backend is much faster with a new
polygon rasterisation and a complete overhaul of the tessellator. Not
nly is this faster, but also eliminates visual artifacts from
self-intersecting strokes. Not only has cairo-trace been driving
performance improvements within cairo, but as a repeatable means of
driving complex graphics it has been used to tune OpenGL, DDX, and
Cairo's API has been extended to better support printing, notably
through the ability to include a single compressed representation of an
image for patterns used throughout a document, leading to dramatic file
size reductions. Also the meta-surface used to record the vector
commands compromising a drawing sequence is now exposed as a
CAIRO_SURFACE_TYPE_RECORDING, along with a new surface that is a child of a
larger surface, CAIRO_SURFACE_TYPE_SUBSURFACE. One typical usage of a
subsurface would be as a source glyph in a texture atlas, or as a
restricted subwindow within a canvas.
Cairo's API has also resurrected the RGB16 format from the past as
the prevalence of 16-bit framebuffers has not diminished and is a
fore-taste of the extended format support we anticipate in the future.
Increasing cairo's utility, we introduce the cairo_region_t for handling
sets of pixel aligned rectangles commonly used in graphics applications.
This is a merger of the GdkRegion and the pixman_region_t, hopefully
providing the utility of the former with the speed of the latter.
Furthermore cairo has been reworked to interoperate more closely with
various acceleration architectures, gaining the ability to share
those hardware resources through the new cairo_device_t. For instance,
with the new OpenGL backend that supersedes the Glitz backend, hardware
and rendering operations can be shared between a classic OpenGL
application mixing libVA for the hardware assisted video decode with
cairo for high quality overlays all within the same OpenGL canvas.
Many thanks for the hard work of Adrian Johnson, Andrea Canciani, Behdad
Esfahbod, Benjamin Otte, Carl Worth, Carlos Garcia Campos, Chris Wilson,
Eric Anholt, Jeff Muizelaar, Karl Tomlinson, M Joonas Pihlaja, SÃ¸ren
Sandmann Pedersen and many others that have contributed over the last
couple of years to cairo. Thank you all!
List of all changes between 1.9.14 and 1.10.0
ndrea Canciani (15):
test: improve clip-*-unbounded tests
quartz: fix stroking with unbounded operators
quartz: fix solid masking fallback
quartz: improve backend detection
Fix configuration if gobject is absent
Correct color stops comparison function
gstate: Correct comment
pattern: Add gradient degeneracy testing functions
pattern: Simplify degenerate linear pattern to solid colors
perf: Improve calibration
Replace insertion sort with mergesort in the scan converter
test: Update linear-gradient-large ref image
subsurface: Silence compiler warnings
subsurface: Avoid invalid accesses
subsurface: Correct cloning condition
Benjamin Otte (20):
tee: Move definitions into separate header
configure: Disable tee backend by default
configure: Disable xml backend by default
Add cairo-gobject library
configure: Fix gobject handling
gl: Handle errors from _cairo_gl_gradient_render()
gobject: Include the extra library in the pkgconfig file
build: Fudge the build system some more so it handles extra libs
subsurface: Properly account for device offsets in the target
subsurface: Make subsurfaces their own type
subsurface: Don't crash when the device transform isn't integer
subsurface: Make CAIRO_SURFACE_TYPE_SUBSURFACE public
subsurface: Don't apply device transform twice for source/mask
subsurface: Don't clip size to target size
surface-offset: Use right variable in mask
test: Add subsurface-outside-target
subsurface: Fix acquire_source_surface for out-of-bounds surfaces
gobject: Fix pkgconfig file variable
build: Work around caching not reevaluating uncached variables
gobject: Fix header defines
Chris Wilson (12):
version: 1.9.15 post-snapshot bump
Mark the context as invalid on the final cairo_destroy()
check: Fix for link-time-optimisation
Reduce the cairo_device_type_t to only hold the used entries.
check: Make the actual error stand out
Bump pixman requirements to 0.18.4 for assorted fixes.
check: Ignore the documentation errors.
test: Rename clip-fill-*-unbounded.image16 ref to match REFERENCE_IMAGES
test: Add subsurface-outside-target refs to REFERENCE_IMAGES
NEWS: Sum up 2 years of development for 1.10.0 in 60 lines
version: 1.10.0 *release*
version: 1.10.1 open for bugfixing
David Schleef (1):
perf: Fix README to say cairo-perf-micro
Kristian HÃ¸gsberg (1):
egl: Use EGL_KHR_surfaceless_opengl extension when available
Krzysztof KosiÅski (1):
tests: Add linear-gradient-large test
M Joonas Pihlaja (6):
script: Fix script backend build.
subsurface: Fix crash when acquiring a source image.
subsurface: Add a note to the docs about usage restrictions.
device: Refer the user to per-backend docs about devices.
build: Remove stray backslash.
freelist: Separate freelist inlines from the datatype in headers.
Maarten Bosmans (1):
build: prefer libpng14 over older versions
Nicolaus L Hepler (1):
ft-font: Make alpha mapping consistent
Rich Walsh (9):
os2: New API to create surfaces without a persistent HPS.
os2: Fix blitting 24 bpp pixel data.
os2: Fix buffer allocator behaviour on arithmetic overflow.
os2: Don't fake an Anchor Block when one isn't needed.
os2: Document ownership of OS/2 objects passed to surfaces.
os2: Consolidate error paths of cairo_os2_surface_create().
os2: Tweak an inline declaration.
os2: Fix clipping to bounds when blitting pixels.
os2: Restore surface type checking in the get_extents method.
SÃ¸ren Sandmann Pedersen (1):
Update documentation to reflect that rgb565 is no longer deprecated.
What is cairo
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, quartz, win32, and image buffers, as well as PDF, PostScript,
and SVG file output. Experimental backends include OpenGL, 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):
Chris Wilson, Intel Open Source Technology Centre
More information about the cairo-announce