The cairo team is very pleased to announce cairo 1.0 available from:
http://cairographics.org/releases/cairo-1.0.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.0.0.tar.gz.sha1
abc50d6a657cba15b3956c8c3aaea080b71172bb cairo-1.0.0.tar.gz
http://cairographics.org/releases/cairo-1.0.0.tar.gz.sha1.asc
(signed by Carl Worth)
All future 1.x.y releases of cairo will be source and binary compatible with cairo 1.0.0.
With this release, we'd like to remind everyone of the proper position for the number 1 in software releases, which is at the beginning. While this release does mark the culmination of months or years of work by many people, it's more significant in marking what is yet to come. Cairo has just begun and we're excited to see where it will go from here.
In this release, we have marked three backends as "supported"
xlib, image, win32
and all other backends as "experimental" which as such, do not have part in the API guarantees of this release. The experimental backends will not be compiled by default, but they are still available for people to experiment with by means of --enable options to configure. We recognize that many people would find the experimental backends useful, (even with existing bugs), and it is with caution that we mark them this way. We are not trying to remove utility, but we do think it is important to carefully advertise which backends are not yet up to the standards of stability, completeness, and rendering fidelity expected from a cairo backend.
These "experimental" backends are certainly not going away, and we hope that each one will become a "supported" backend in a future cairo release quite soon.
-Carl
PS. Call it "cairo" or the "cairo graphics library", but try not to ever call it "Cairo" unless writing it at the beginning of a sentence.
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. Experimental backends include OpenGL (through glitz), Quartz, XCB, PostScript and PDF file output.
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 including stroking and filling cubic B=E9zier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.).
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 1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest releases of cairo can be found at:
http://cairographics.org/releases
Snapshots of in-development versions of cairo:
http://cairographics.org/snapshots
The programming manual for using cairo:
http://cairographics.org/manual
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Answers to some frequently asked questions about cairo:
http://cairographics.org/FAQ
What's new in 1.0.0 compared to 0.9.2
=========================
============
Experimental backends
---------------------
* The Glitz, PS, PDF, Quartz, and XCB backends have been declared
experimental, and are not part of the API guarantees that accompany
this release. They are not built by default, even when the required
libraries are available, and must be enabled explicitly with
--enable options to configure.
It is very painful for us to be pushing out a major release without
these backends enabled. There has been a tremendous amount of work
put into each one and all are quite functional to some
extent. However, each also has some limitations. And none of these
backends have been tested to the level of completeness and
correctness that we expect from cairo backends.
We do encourage people to experiment with these backends and report
success, failure, or means of improving them.
Operator behavior
-----------------
* Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators
behaved in an inconsistent and buggy fashion and could affect areas
outside the clip mask. In 0.9.0, these six "unbounded" operators
were fixed to consistently clear areas outside the shape but within
the clip mask. This is useful behavior for an operator such as IN,
but not what was expected for SOURCE and CLEAR. So, in this release
the behavior of SOURCE and CLEAR has been changed again. They now
affect areas only within both the source and shape. We can write
the new operators as:
SOURCE: dest' = (mask IN clip) ? source : dest
CLEAR: dest' = (mask IN clip) ? 0 : dest
Behavior and API changes
------------------------
* Setting the filter on a gradient pattern would change the
interpolation between color stops away from the normal linear
interpolation. This dubious behavior has been removed.
* The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros --
implementation details that leaked into cairo.h -- have been moved
into an internal header.
* The cairo_show_text function now advances the current point
according to the total advance values of the string.
API additions
-------------
* cairo_set_dash can now detect error and can set
CAIRO_STATUS_INVALID_DASH.
Features
--------
* When compiled against recent versions of fontconfig and FreeType,
artificial bold fonts can now be turned on from fonts.conf using
the FC_EMBOLDEN fontconfig key.
Optimization
------------
* The compositing code from the 'xserver' code tree has now been
completely merged into libpixman. This includes MMX optimization of
common operations.
* The image transformation code in libpixman has been improved and
now performs significantly faster.
Bug fixes
---------
* Several crashes related to corruption in the font caches have been
fixed.
* All test cases now match pixel-for-pixel on x86 and PPC; this
required fixing bugs in the compositing, stroking, and pattern
rendering code.
* Negative dash offsets have been fixed to work correctly.
* The stroking of paths with multiple subpaths has now been fixed to
apply caps to all subpaths rather than just the last one.
* Many build fixes for better portability on various systems.
* Lots of other bug fixes, but we're too tired to describe them in
more detail here.
Acknowledgments
================
We would like to express our appreciation to everyone who has
contributed to making cairo everything it is today. Hundreds of people
have debated API on mailing lists, tested early snapshots, submitted
bug reports, and contributed code.
The following list has been extracted from cairo's ChangeLog, and we
recognize that is only a very small subset of those who have helped.
Josh Aas - Memory leak fix for quartz backend
Shawn T. Amundson - Build fix
Olivier Andrieu - PNG backend
Peter Dennis Bartok - Bug fix for clipping
Dave Beckett - Build fixes, Debian packaging
Billy Biggs - Pixman code merge. Optimization. Fixes for subtle rendering b
ugs.
Damien Carbery - Build fixes
Andrew Chant - Adding const where needed
Steve Chaplin - Bug fixes for PNG reading
Tomasz Cholewo - Bug fixes
John Ehresman - Build fixes for win32
John Ellson - First font/glyph extents functions
Behdad Esfahbod - Release script improvements, bug fixes.
Bertram Felgenhauer - Fixes for subtle arithmetic errors
J. Ali Harlow - win32 backend updates
Richard Henderson - "slim" macros for better shared libraries
James Henstridge - Build fixes related to freetype
Graydon Hoare - Support for non-render X server, first real text support
Thomas Hunger - Initial version of cairo_in_stroke/fill
Kristian H=F8gsberg - PDF backend, PS backend with meta-surfaces
Amaury Jacquot - Documentation review, application testing
Adrian Johnson - PDF backend improvement
Michael Johnson - Bug fix for pre-C99 compilers
=D8yvind Kol=E5s - Bug fixes. Better default values.
Martin Kretzschmar - Arithmetic fix for 64-bit architectures
Alexander Larsson - Profiling and performance fixes.
Tor Lillqvist - win32 build fixes, build scripts
Luke-Jr - Build fix for cross-compiling
Jordi Mas - Bug fix for cairo_show_text
Jeff Muizelaar - Patient, painful, pixman code merge. Test fixes
Peter Nilsson - Glitz backend
Geoff Norton - Build fixes
Robert O'Callahan - Const-correctness fixes.
Mike Owens - Bug fixes
Keith Packard - Original concept, tessellation, dashing, font metrics rewri
te
Stuart Parmenter - Original GDI+ backend, win32 fixes
Christof Petig - Build fixes related to freetype
David Reveman - New pattern API, glitz backend
Calum Robinson - Quartz backend
Tim Rowley - Quartz/ATSUI fixes, X server workarounds, win32 glyph path sup
port
Jamey Sharp - Surface/font backend virtualization, XCB backend
Jason Dorje Short - Build fixes and bug fixes
Travis Spencer - XCB backend fix
Bill Spitzak - Build fix to find Xrender.h without xrender.pc
Owen Taylor - Font rewrite, documentation, win32 backend
Malcolm Tredinnick - Documentation fixes
Sasha Vasko - Build fix to compile without xlib backend
Vladimir Vukicevic - Bug fix for clipping
Carl Worth - Original library, support for paths, images
Richard D. Worth - Build fixes for cygwin
(please let us know if you're aware of someone we've missed)
http://cairographics.org/releases/cairo-1.0.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.0.0.tar.gz.sha1
abc50d6a657cba15b3956c8c3aaea080b71172bb cairo-1.0.0.tar.gz
http://cairographics.org/releases/cairo-1.0.0.tar.gz.sha1.asc
(signed by Carl Worth)
All future 1.x.y releases of cairo will be source and binary compatible with cairo 1.0.0.
With this release, we'd like to remind everyone of the proper position for the number 1 in software releases, which is at the beginning. While this release does mark the culmination of months or years of work by many people, it's more significant in marking what is yet to come. Cairo has just begun and we're excited to see where it will go from here.
In this release, we have marked three backends as "supported"
xlib, image, win32
and all other backends as "experimental" which as such, do not have part in the API guarantees of this release. The experimental backends will not be compiled by default, but they are still available for people to experiment with by means of --enable options to configure. We recognize that many people would find the experimental backends useful, (even with existing bugs), and it is with caution that we mark them this way. We are not trying to remove utility, but we do think it is important to carefully advertise which backends are not yet up to the standards of stability, completeness, and rendering fidelity expected from a cairo backend.
These "experimental" backends are certainly not going away, and we hope that each one will become a "supported" backend in a future cairo release quite soon.
-Carl
PS. Call it "cairo" or the "cairo graphics library", but try not to ever call it "Cairo" unless writing it at the beginning of a sentence.
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. Experimental backends include OpenGL (through glitz), Quartz, XCB, PostScript and PDF file output.
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 including stroking and filling cubic B=E9zier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.).
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 1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest releases of cairo can be found at:
http://cairographics.org/releases
Snapshots of in-development versions of cairo:
http://cairographics.org/snapshots
The programming manual for using cairo:
http://cairographics.org/manual
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Answers to some frequently asked questions about cairo:
http://cairographics.org/FAQ
What's new in 1.0.0 compared to 0.9.2
=========================
============
Experimental backends
---------------------
* The Glitz, PS, PDF, Quartz, and XCB backends have been declared
experimental, and are not part of the API guarantees that accompany
this release. They are not built by default, even when the required
libraries are available, and must be enabled explicitly with
--enable options to configure.
It is very painful for us to be pushing out a major release without
these backends enabled. There has been a tremendous amount of work
put into each one and all are quite functional to some
extent. However, each also has some limitations. And none of these
backends have been tested to the level of completeness and
correctness that we expect from cairo backends.
We do encourage people to experiment with these backends and report
success, failure, or means of improving them.
Operator behavior
-----------------
* Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators
behaved in an inconsistent and buggy fashion and could affect areas
outside the clip mask. In 0.9.0, these six "unbounded" operators
were fixed to consistently clear areas outside the shape but within
the clip mask. This is useful behavior for an operator such as IN,
but not what was expected for SOURCE and CLEAR. So, in this release
the behavior of SOURCE and CLEAR has been changed again. They now
affect areas only within both the source and shape. We can write
the new operators as:
SOURCE: dest' = (mask IN clip) ? source : dest
CLEAR: dest' = (mask IN clip) ? 0 : dest
Behavior and API changes
------------------------
* Setting the filter on a gradient pattern would change the
interpolation between color stops away from the normal linear
interpolation. This dubious behavior has been removed.
* The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros --
implementation details that leaked into cairo.h -- have been moved
into an internal header.
* The cairo_show_text function now advances the current point
according to the total advance values of the string.
API additions
-------------
* cairo_set_dash can now detect error and can set
CAIRO_STATUS_INVALID_DASH.
Features
--------
* When compiled against recent versions of fontconfig and FreeType,
artificial bold fonts can now be turned on from fonts.conf using
the FC_EMBOLDEN fontconfig key.
Optimization
------------
* The compositing code from the 'xserver' code tree has now been
completely merged into libpixman. This includes MMX optimization of
common operations.
* The image transformation code in libpixman has been improved and
now performs significantly faster.
Bug fixes
---------
* Several crashes related to corruption in the font caches have been
fixed.
* All test cases now match pixel-for-pixel on x86 and PPC; this
required fixing bugs in the compositing, stroking, and pattern
rendering code.
* Negative dash offsets have been fixed to work correctly.
* The stroking of paths with multiple subpaths has now been fixed to
apply caps to all subpaths rather than just the last one.
* Many build fixes for better portability on various systems.
* Lots of other bug fixes, but we're too tired to describe them in
more detail here.
Acknowledgments
================
We would like to express our appreciation to everyone who has
contributed to making cairo everything it is today. Hundreds of people
have debated API on mailing lists, tested early snapshots, submitted
bug reports, and contributed code.
The following list has been extracted from cairo's ChangeLog, and we
recognize that is only a very small subset of those who have helped.
Josh Aas - Memory leak fix for quartz backend
Shawn T. Amundson - Build fix
Olivier Andrieu - PNG backend
Peter Dennis Bartok - Bug fix for clipping
Dave Beckett - Build fixes, Debian packaging
Billy Biggs - Pixman code merge. Optimization. Fixes for subtle rendering b
ugs.
Damien Carbery - Build fixes
Andrew Chant - Adding const where needed
Steve Chaplin - Bug fixes for PNG reading
Tomasz Cholewo - Bug fixes
John Ehresman - Build fixes for win32
John Ellson - First font/glyph extents functions
Behdad Esfahbod - Release script improvements, bug fixes.
Bertram Felgenhauer - Fixes for subtle arithmetic errors
J. Ali Harlow - win32 backend updates
Richard Henderson - "slim" macros for better shared libraries
James Henstridge - Build fixes related to freetype
Graydon Hoare - Support for non-render X server, first real text support
Thomas Hunger - Initial version of cairo_in_stroke/fill
Kristian H=F8gsberg - PDF backend, PS backend with meta-surfaces
Amaury Jacquot - Documentation review, application testing
Adrian Johnson - PDF backend improvement
Michael Johnson - Bug fix for pre-C99 compilers
=D8yvind Kol=E5s - Bug fixes. Better default values.
Martin Kretzschmar - Arithmetic fix for 64-bit architectures
Alexander Larsson - Profiling and performance fixes.
Tor Lillqvist - win32 build fixes, build scripts
Luke-Jr - Build fix for cross-compiling
Jordi Mas - Bug fix for cairo_show_text
Jeff Muizelaar - Patient, painful, pixman code merge. Test fixes
Peter Nilsson - Glitz backend
Geoff Norton - Build fixes
Robert O'Callahan - Const-correctness fixes.
Mike Owens - Bug fixes
Keith Packard - Original concept, tessellation, dashing, font metrics rewri
te
Stuart Parmenter - Original GDI+ backend, win32 fixes
Christof Petig - Build fixes related to freetype
David Reveman - New pattern API, glitz backend
Calum Robinson - Quartz backend
Tim Rowley - Quartz/ATSUI fixes, X server workarounds, win32 glyph path sup
port
Jamey Sharp - Surface/font backend virtualization, XCB backend
Jason Dorje Short - Build fixes and bug fixes
Travis Spencer - XCB backend fix
Bill Spitzak - Build fix to find Xrender.h without xrender.pc
Owen Taylor - Font rewrite, documentation, win32 backend
Malcolm Tredinnick - Documentation fixes
Sasha Vasko - Build fix to compile without xlib backend
Vladimir Vukicevic - Bug fix for clipping
Carl Worth - Original library, support for paths, images
Richard D. Worth - Build fixes for cygwin
(please let us know if you're aware of someone we've missed)