The cairo community is quite pleased to announce the 1.6.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 cairo 1.4, 1.2, or 1.0. We recommend that anybody using a previous version of cairo upgrade to cairo 1.6.0. The most significant new features in this release are dramatically improved PDF and PostScript[*] output, support for arbitrary X server visuals (including PseudoColor), a new Quartz backend, and and a new "win32 printing" backend. See below for more details on these and other new features. Have fun with cairo! -Carl The new cairo 1.6.0 release is now available from: http://cairographics.org/releases/cairo-1.6.0.tar.gz which can be verified with: http://cairographics.org/releases/cairo-1.6.0.tar.gz.sha1 49d9d4c4796021c3ed02e5072e8ffe3a00ee4a77 cairo-1.6.0.tar.gz http://cairographics.org/releases/cairo-1.6.0.tar.gz.sha1.asc (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.6.0 tag which points to a commit named: d6263bec89bcd1565fb0f56a9840cd6f7761097f which can be verified with: git verify-tag 1.6.0 and can be checked out with a command such as: git checkout -b build 1.6.0 Summary of changes from cairo 1.4 to 1.6.0 ========================================== [Note: For people following along, there have been no code changes at all from the cairo 1.5.20 snapshot to cairo 1.6.0] New dependency on external pixman library (Thanks, Søren!) ---------------------------------------------------------- As of cairo 1.6, cairo now depends on the pixman library, for which the latest release can be obtained alongside cairo: http://cairographics.org/releases/pixman-0.10.0.tar.gz This library provides all software rendering for cairo, (the implementation of the image backend as well as any image fallbacks required for other backends). This is the same code that was previously included as part of cairo itself, but is now an external library so that it can be shared by both cairo and by the X server, (which is where the code originated). Improved PDF, PostScript, and SVG output (Thanks, Adrian!) ---------------------------------------------------------- Users of the cairo-pdf, cairo-ps, and cairo-svg should see a dramatic improvement from cairo 1.2/1.4 to 1.6. With this release there are now almost no operations that will result in unnecessary rasterization in the PDF and PostScript. Rasterized "image fallbacks" are restricted only to minimal portions of the document where something is being drawn with cairo that is beyond the native capabilities of the document, (this is rare for PDF or SVG, but occurs when blending translucent objects for PostScript). This means that the final output will be of higher quality, and will also be much smaller, and therefore will print more quickly. The machinery for doing analysis and minimal fallbacks also benefits the win32-printing surface described below. In addition to doing less rasterization, the PostScript and PDF output also has several other improvements to make the output more efficient and more compatible with specifications. [*] Note: Just before this release, a bug has been reported that the PostScript output from cairo can crash some printers, (so far the following models have been reported as problematic Xerox Workcentre 7228 or 7328 and Dell 5100cn). We will implement a workaround as soon as we can learn exactly what in cairo's output these printers object to, (and we could use help from users that have access to misbehaving printers). This bug is being tracked here: Printing some PDFs from evince is crashing our Xerox printer http://bugs.freedesktop.org/show_bug.cgi?id=15348 New support for arbitrary X server visuals (Thanks, Keith and Behdad!) ---------------------------------------------------------------------- As of cairo 1.6, cairo should now work with an arbitrary TrueColor or 8-bit PseudoColor X server visual. Previous versions of cairo did not support these X servers and refused to draw anything. We're pleased to announce that this limitation has been lifted and people stuck with ancient display systems need no longer be stuck with ancient software just because of cairo. New, supported Quartz backend for Mac OS X (Thanks, Brian and Vladimir!) ------------------------------------------------------------------------ As of cairo 1.6, the cairo-quartz backend is now marked as "supported" rather than "experimental" as in previous cairo releases. Its API now has guarantees of API stability into future cairo releases, and its output quality is comparable to other backends. There have been significant improvements to cairo-quartz since 1.4. It now uses many fewer image fallbacks, (meaning better performance), and has greatly improved text rendering. New, "win32 printing" backend (Thanks, Adrian and Vladimir!) ------------------------------------------------------------ A new win32-printing surface has been added with an interface very similar to the original win32 surface, (both accept an HDC parameter). But this new surface should only be called with a printing DC, and will result in all drawing commands being stored into a meta-surface and emitted after each page is complete. This allows cairo to analyze the contents, (as it does with PDF, PostScript, and SVG backends), and to do minimal image-based fallbacks as necessary. The analysis keeps things as efficient as possible, while the presence of fallbacks, (when necessary), ensure the consistent, high-quality output expected from cairo. Robustness fixes (Thanks, Chris!) --------------------------------- There has been a tremendous number of improvements to cairo's robustness. Areas that have been improved include: * Proper reporting of errors * Responding correctly to invalid input * Avoiding integer overflows * Avoiding memory leaks on error-recovery paths * Making reference counting thread safe * Exhaustive testing of memory allocation points Other fixes (Thanks, everybody!) -------------------------------- Cairo's internal fixed-point representation has been changed from 16.16 to 24.8. This has a direct impact on applications as it allows much larger objects to be drawn before internal limits in cairo make the drawing not work. The CAIRO_EXTEND_PAD mode is now fully supported by surface patterns. This mode allows applications to use cairo_rectangle and cairo_fill to draw scaled images with high-quality bilinear filtering for the internal of the image, but without any objectionably blurry edges, (as would happen with the default EXTEND_NONE and cairo_paint). Rendering with CAIRO_ANTIALIAS_NONE has been fixed to be more predictable, (previously image rendering and geometry rendering would be slightly misaligned with respect to each other). The reference manual at http://cairographics.org/manual now documents 100% of the functions and types in cairo's public API. API additions ------------- Several small features have been added to cairo with new API functions: cairo_format_stride_for_width Must be called to compute a properly aligned stride value before calling cairo_image_surface_create_for_data. cairo_has_current_point Allows querying if there is a current point defined for the current path. cairo_path_extents Allows querying for path extents, (independent of any fill or stroke parameters). cairo_surface_copy_page cairo_surface_show_page Allow beginning a new document page without requiring a cairo_t object. cairo_ps_surface_restrict_to_level cairo_ps_get_levels cairo_ps_level_to_string cairo_ps_surface_set_eps Allow controlling the Post PostScript level, (2 or 3), to target, as well as to generate Encapsulated PostScript (EPS). cairo_quartz_font_face_create_for_cgfont Create a quartz-specific cairo_font_face_t from a CGFontRef. cairo_win32_font_face_create_for_logfontw_hfont Create a win32-specific cairo_font_face from a LOGFONTW and an HFONT together. Thanks, Everyone! ----------------- I've accounted for 32 distinct people with attributed code added to cairo between 1.4.14 and 1.6.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, Alp Toker, Antoine Azar, Behdad Esfahbod, Benjamin Otte, Bernardo Innocenti, Bertram Felgenhauer, Boying Lu, Brian Ewins, Carl Worth, Chris Heath, Chris Wilson, Claudio Ciccani, Emmanuel Pacaud, Jeff Muizelaar, Jeremy Huddleston, Jim Meyering, Jinghua Luo, Jody Goldberg, Jonathan Gramain, Keith Packard, Ken Herron, Kouhei Sutou, Kristian Høgsberg, Larry Ewing, Martin Ejdestig, Nis Martensen, Peter Weilbacher, Richard Hult, Shailendra Jain, Søren Sandmann Pedersen, Vladimir Vukicevic 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, 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 versions of cairo can always be found at: http://cairographics.org/download Documentation on using cairo and frequently-asked questions: http://cairographics.org/documentation http://cairographics.org/FAQ Mailing lists for contacting cairo users and developers: http://cairographics.org/lists Roadmap and unscheduled things to do, (please feel free to help out): http://cairographics.org/roadmap http://cairographics.org/todo
Attachment:
pgpBOJq4GR7iy.pgp
Description: PGP signature