summaryrefslogtreecommitdiffstats
path: root/gfx/cairo/cairo/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/cairo/cairo/NEWS')
-rw-r--r--gfx/cairo/cairo/NEWS5121
1 files changed, 0 insertions, 5121 deletions
diff --git a/gfx/cairo/cairo/NEWS b/gfx/cairo/cairo/NEWS
deleted file mode 100644
index 9be4062ca..000000000
--- a/gfx/cairo/cairo/NEWS
+++ /dev/null
@@ -1,5121 +0,0 @@
-Release 1.6.4 (2008-04-11 Carl Worth <cworth@cworth.org>)
-=========================================================
-The cairo community is wildly embarrassed to announce the 1.6.4
-release of the cairo graphics library. This release reverts the xlib
-locking change introduced in 1.6.4, (and the application crashes that
-it caused). The community would be glad to sack its current release
-manager and is accepting applications for someone who could do the job
-with more discipline.
-
-Revert 'add missing locking in cairo-xlib'
-------------------------------------------
-This change was introduced in cairo 1.6.2, but also introduced a bug
-which causes many cairo-xlib applications to crash, (with a
-segmentation fault inside of XSetClipMask). Instead of attempting
-another fix for the broken fix, the change in 1.6.2 has been
-reverted. The original bug which the change was addressing has been
-present since at least cairo 1.4, so it is not expected that leaving
-this bug unfixed will cause any new problems for applications moving
-from cairo 1.4 to cairo 1.6.
-
-At this point, the code of cairo 1.6.4 differs from cairo 1.6.0 only
-in the fix for the PostScript-printer crashes.
-
-Tweak build to avoid linking with g++
--------------------------------------
-Cairo 1.6.4 avoids a quirk in automake that was causing the cairo
-library to be linked with g++ and linked against libstdc++ even when
-only C source files were compiled for the library.
-
-Release 1.6.2 (2008-04-11 Carl Worth <cworth@cworth.org>)
-=========================================================
-The cairo community is pleased (but somewhat sheepish) to announce the
-1.6.2 release of the cairo graphics library. This is an update to
-yesterday's 1.6.0 release with an important fix to prevent cairo's
-PostScript output from crashing some printers. This release also
-includes a locking fix for cairo's xlib backend to improve thread
-safety. There are no changes beyond these two fixes.
-
-Fix for PostScript printer crash
---------------------------------
-Adrian Johnson discovered that cairo 1.6.0 was being a bit hard on
-PostScript printers, by changing the font matrix very frequently. This
-causes some PostScript interpreters to allocate new font objects every
-few glyphs, eventually exhausting available resources. The fix
-involves leaving translational components of the font matrix as zero,
-so that the PostScript interpreter sees an identical font matrix
-repeatedly, and can more easily share internal font object resources.
-
-This fix has been tested to resolve the bugs posted here, (for both
-Xerox and Dell printers):
-
- Printing some PDFs from evince is crashing our Xerox printer
- http://bugs.freedesktop.org/show_bug.cgi?id=15348
-
- Cairo-generated postscript blocks Dell 5100cn
- http://bugs.freedesktop.org/show_bug.cgi?id=15445
-
-Add missing locking in cairo-xlib
----------------------------------
-Chris Wilson noticed that cairo 1.6.0 was manipulating an internal
-cache of GC object within cairo's Xlib backend without proper
-locking. The missing locking could cause failures for multi-threaded
-applications. He fixed this in 1.6.2 by adding the missing locks.
-
-Release 1.6.0 (2008-04-10 Carl Worth <cworth@cworth.org>)
-=========================================================
-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.
-
-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
-
-Snapshot 1.5.20 (2008-04-04 Carl Worth <cworth@cworth.org>)
-===========================================================
-This is the tenth snapshot in cairo's unstable 1.5 series. It comes
-just two days (and only one working day) after the 1.5.18
-snapshot. The quick snapshot is due to two embarrassing bugs (both
-affecting cairo-xlib) that had been introduced in the 1.5.18
-snapshot. The fixes for these are described below along with a few
-other fixes, (which hopefully aren't introducing new bugs this time).
-
-cairo-xlib
-----------
-Revert fix from 1.5.18 to allow pattern expansion based on the filter
-mode. This fix seemed so boring, (the use case it addresses is almost
-never used in practice), that it didn't even get mentioned in the
-1.5.18 release notes. However, the "fix" happened to break rendering
-that is always used resulting in corrupt image rendering in mozilla,
-evolution, and probably everything else that uses cairo.
-
-Fix to avoid BadMatch errors in cairo_surface_create_similar. These
-were introduced, (inadvertently, of course), as part of the fix in
-1.5.18 for creating similar surfaces without the Render
-extension. Again, thanks to mozilla, (and Vladimir Vukicevic in
-particular), for noticing our mistake.
-
-general
--------
-Correctly handle an in-error surface in
-cairo_surface_write_to_png. Previously this function would cause an
-assertion failure if you gave it a finished surface. Now it cleanly
-returns a CAIRO_STATUS_SURFACE_FINISHED result instead.
-
-Avoid potentially infinite wandering through memory inside
-_cairo_hull_prev_valid. Thanks to Jonathan Watt for noticing this
-problem:
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=306649#c21
-
-cairo-pdf
----------
-Fix generation of "soft" masks made by drawing to a similar surface
-and then calling cairo_mask_surface() with it.
-
-cairo-svg
----------
-Fix for code that uses cairo_mask() on an intermediate surface which
-is later passed to cairo_mask_surface().
-
-Snapshot 1.5.18 (2008-04-05 Carl Worth <cworth@cworth.org>)
-===========================================================
-This is the ninth snapshot in cairo's unstable 1.5 series. It comes
-just 4 days after the 1.5.16 snapshot. We had hoped to not need
-another snapshot before the final 1.6.0 release, but several critical
-bugs were found and fixed in the last few days, so we thought it
-important to let people test the fixes with this snapshot. See below
-for details.
-
-documentation
--------------
-The README now lists necessary dependencies.
-
-Various graphics state defaults are now documented, (source pattern is
-opaque black, line width is 2.0, line join is miter, line cap is butt,
-miter limit is 10.0, etc.).
-
-general
--------
-Several cleanups have been made along many error-path returns,
-(carefully propagating up the original error status values, cleaning
-up memory leaks during error recovery, etc.). This is yet another in
-Chris "ickle" Wilson's long series of error-handling cleanups during
-the 1.5 series.
-
-Avoid undesired clipping when drawing scaled surface patterns with
-bilinear filtering.
-
-cairo-pdf
----------
-Fix emission of 1-bit alpha masks in PDF output.
-
-Fix a bug that would cause glyphs to be misplaced along the Y axis:
-
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136
-
- Originally, an issue about a crash, but later leading to the
- misplaced glyphs issue being discovered.
-
-cairo-ps
---------
-Fix misplaced glyphs in cairo's PostScript output.
-
- This issue occurs when consecutive glyphs are placed far
- apart. This case is exercised by the new ft-show-glyphs-table test
- case, which was originally inspired by the Debian bug #23474136
- mentioned above.
-
-Fix more misplaced glyphs in cairo's PostScript output:
-
- The issue here showed up under very particular circumstance, (when
- converting a PDF file with a CFF font with CID Identity-H encoding
- and using glyph 0, (defined by the CFF specification as .notdef)
- as a space instead). More concretely, this problem appeared when
- converting the UbuntuDesktop.pdf file mentioned in this bug
- report:
-
- https://bugs.freedesktop.org/show_bug.cgi?id=15348#c3
-
- As usual with arcane font-encoding-specific bugs like this, many
- thanks to Adrian Johnson for his magical ability to dive into
- specifications and emerge almost instantaneously with fixes. And
- thanks to Sebastien Bacher for bringing the bug to our attention.
-
-cairo-xlib
-----------
-Fix serious failure on X servers without the Render extension.
-
- Since the 1.5.14 snapshot (with support for PseudoColor visuals),
- any application attempting to create a "similar" xlib surface would
- fail on an X server without the Render extension. Thanks to
- Frederic Crozat for pointing out that cairo's test suite was
- entirely failing when run against Xvfb.
-
-Avoid crashing cairo-xlib applications for too-large glyphs
-
- Naively sending glyphs of any size to the X server will eventually
- violate the X limit on maximum request sizes. We now properly
- detect when a glyph would be too large and use existing fallbacks
- to render the glyph rather than trying to send it to the X server.
-
-Enable the buggy_repeat workaround for Xorg servers < 1.4
-
- We have determined that Xorg 1.3.0 (as packaged in Fedora 8 at
- least) has a bug that can result in an X server crash when cairo
- uses certain X Render repeat operations, (as exercised by cairo's
- extend-reflect test). We avoid this crash by using fallbacks
- whenever a repeating surface is needed for any Xorg server with a
- version less than 1.4. This is slower, but should prevent the
- crash.
-
- (Meanwhile, there appears to be a separate bug where some X
- servers or specific X-server drivers will use random pixmap data
- when asked to draw a repeating surface. The buggy_repeat
- workaround would also avoid those problems, but we have not yet
- characterized whether the new "version < 1.4" is a good
- characterization of those problems or not.)
-
-cairo-quartz-font
------------------
-Implement cairo_font_extents for this backend.
-
-The cairo-quartz-font implementation added in the 1.5.14 snapshot was
-entirely missing support for the cairo_font_extents function. Thanks to
-Richard Hult for pointing out this obvious shortcoming, (and obvious
-lack of coverage in our test suite):
-
- CGFont backend returns 0 font extents
- https://bugs.freedesktop.org/show_bug.cgi?id=15319
-
-Snapshot 1.5.16 (2008-04-01 Carl Worth <cworth@cworth.org>)
-===========================================================
-This is the eighth snapshot in cairo's unstable 1.5 series. It comes
-less than two weeks after the 1.5.14 snapshot and it really is a
-legitimate snapshot, (in spite of sharing this date with that of many
-bogus announcements). The major change in this snapshot is that the
-cairo-quartz backend is now officially "supported", including new API
-to construct a font face from a CGFontRef . Also several bug fixes
-have been fixed in many backends. See below for details.
-
-general
--------
-Cairo now depends on pixman 0.10.0 which was recently released. The
-latest pixman release can always be found alongside cairo releases at:
-
- http://cairographics.org/releases
-
-Increase the precision of color stops for gradients. This fixes a
-regression in gradient rendering that had been present since the
-1.5.12 snapshot.
-
-paginated (all of ps, pdf, svg, and win32-printing)
----------------------------------------------------
-Fix assertion failure when some drawing elements are outside the page
-boundaries, (this bug was noticed when using Inkscape to print a
-drawing with landscape orientation to a portrait-oriented piece of
-paper).
-
-cairo-ps
---------
-Fix of bug causing incorrect glyph positioning.
-
-Fix handling of CAIRO_OPERATOR_SOURCE.
-
-cairo-pdf
----------
-More reduction of unnecessary digits of precision in PDF output.
-
-Fix handling of CAIRO_OPERATOR_SOURCE.
-
-cairo-svg
----------
-Fix bug in usage of libpng that was preventing cairo_mask from working
-with the svg backend.
-
-Fix transformation of source pattern for cairo_stroke().
-
-cairo-win32-printing
---------------------
-Fix fallback resolution, (thanks again to inkscape users/developers
-for helping us find this one).
-
-cairo-quartz
-------------
-Mark the cairo-quartz backend as "supported" rather than
-"experimental". This means the following:
-
- * The backend will now be built by default (if possible).
-
- * We are committing that the backend-specific API (as published in
- cairo-quartz.h) are stable and will be supported in all future
- cairo 1.x releases.
-
- * We are committing that the output quality of this backend
- compares favorably with other cairo backends, (and that quality
- is ensured by good results from the cairo test suite).
-
- * We recommend that distributions build and distribute this
- backend when possible.
-
-Note that the cairo_quartz_image API (in cairo-quartz-image.h) is
-still experimental, will not build by default, (pass
---enable-quartz-image to configure to build it), and may see API
-changes before it is marked as "supported" in a future release.
-
-Put the CAIRO_FONT_TYPE_ATSUI name back into
-cairo-deprecated.h. Without this, the cairo 1.5.14 snapshot broke all
-builds for applications using the C++ cairomm bindings (and perhaps
-others) which have the CAIRO_FONT_TYPE_ATSUI name in their header
-files. This breakage happened even for applications not using
-cairo-quartz at all.
-
- Note: Even though the CAIRO_FONT_TYPE_ATSUI name is provided to
- avoid this build breakage, we still recommend that bindings and
- applications move to the new, and more accurate,
- CAIRO_FONT_TYPE_QUARTZ name.
-
-Replace the implementation of cairo-quartz-font to use CFFont instead
-of ATSUI. The CGFont API is a better fit than ATSUI, and this new
-implementation is also more correct than the old one as well.
-
-This also adds the following new API call:
-
- cairo_public cairo_font_face_t *
- cairo_quartz_font_face_create_for_cgfont (CGFontRef font);
-
-The previous cairo_quartz_font_face_create_for_atsu_font_id function
-continues to exist and is part of the supported API going
-forward. (However, the old name of that same function, which was
-cairo_atsui_font_face_create_for_atsu_font_id is officially
-deprecated. Any source code using the old name should be updated to
-use the new name.)
-
-Fix transformation of source pattern for cairo_stroke().
-
-cairo-win32
------------
-Avoid crash in create_similar is cairo_win32_surface_create fails.
-
-Snapshot 1.5.14 (2008-03-20 Carl Worth <cworth@cworth.org>)
-===========================================================
-This is the seventh snapshot in cairo's unstable 1.5 series. It comes
-3 weeks after the 1.5.12 snapshot. This snapshot includes support for
-arbitrary X server visuals, (including PseudoColor), which was the
-final remaining cairo-specific item on the cairo 1.6 roadmap. It also
-includes a huge number of improvements to the cairo-quartz backend. So
-this is effectively a cairo 1.6 release candidate. We expect very few
-changes from now until 1.6 and only for specific bug fixes.
-
-API Change
-----------
-Rename ATSUI font backend to Quartz font backend. This affects the
-following usage:
-
- --enable-atsui -> --enable-quartz-font
- CAIRO_HAS_ATSUI_FONT -> CAIRO_HAS_QUARTZ_FONT
- CAIRO_FONT_TYPE_ATSUI -> CAIRO_FONT_TYPE_QUARTZ
-
- cairo_atsui_font_face_create_for_atsu_font_id ->
- cairo_quartz_font_font_create_for_atsu_font_id
-
-This API change is justified by the cairo-quartz backend still be
-marked as "experimental" rather than "supported", (though this is one
-step toward making the change to "supported" before 1.6). Cairo will
-still provide ABI compatibility with the old symbol name, however.
-
-paginated (all of ps, pdf, svg, and win32-printing)
----------------------------------------------------
-Optimize by not analyzing an image surface for transparency more than
-once, (previously all images were analyzed twice).
-
-cairo-ps and cairo-pdf
-----------------------
-Avoiding emitting a matrix into the stroke output when unnecessary,
-(making output size more efficient).
-
-Reduce rounding error of path shapes by factoring large scale factors
-out of the path matrix, (ensuring that a fixed-number of printed
-digits for path coordinates contains as much information as possible).
-
-Reduce excess digits for text position coordinates. This makes the
-output file size much smaller without making the result any less
-correct.
-
-cairo-ps
---------
-Eliminate bug causing extraneous text repetition on Linux PostScript
-output in some cases.
-
- See: Mozilla Bug 419917 – Printed page contents are reflected
- inside bordered tables (Linux-only)
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=419917
-
-Optimize output when EXTEND_PAD is used.
-
-cairo-pdf
----------
-Fix to not use fill-stroke operator with transparent fill, (else PDF
-output doesn't match the cairo-defined correct result). See:
-
- https://bugs.launchpad.net/inkscape/+bug/202096
-
-cairo-svg
----------
-Fix stroke of path with a non-solid-color source pattern:
-
- http://bugs.freedesktop.org/show_bug.cgi?id=14556
-
-cairo-quartz
-------------
-Fix text rendering with gradient or image source pattern.
-
-Handling antialiasing correctly for cairo_stroke(), cairo_clip(), and
-cairo_show_text()/cairo_show_glyphs().
-
-Correctly handle gradients with non-identity transformations:
-
- Fixes http://bugs.freedesktop.org/show_bug.cgi?id=14248
-
-Add native implementation of REPEAT and REFLECT extend modes for
-gradients.
-
-Fix implementation for the "unbounded" operators, (CAIRO_OPERATOR_OUT,
-_IN, _DEST_IN, and _DEST_ATOP).
-
-Correctly handle endiannees in multi-architecture compiles on Mac OS
-X.
-
-Avoid behavior which would cause Core Graphics to print warnings to
-the console in some cases.
-
-cairo-win32
------------
-Fix handling of miter limit.
-
-cairo-win32-printing
---------------------
-Fix to not use a 1bpp temporary surface in some cases while printing,
-(so grayscale data is preserved rather than just becoming black and
-white).
-
-cairo-xlib
-----------
-Add support for rendering to arbitrary TrueColor X server
-visuals. This fixes at least the following bugs:
-
- cairo doesn't support 8-bit truecolor visuals
- https://bugs.freedesktop.org/show_bug.cgi?id=7735
-
- cairo doesn't support 655 xlib format
- https://bugs.freedesktop.org/show_bug.cgi?id=9719
-
-Add support for rendering to 8-bit PseudoColor X server visuals. This
-fixes the following bug:
-
- Cairo doesn't support 8-bit pseudocolor visuals
- https://bugs.freedesktop.org/show_bug.cgi?id=4945
-
-Snapshot 1.5.12 (2008-02-28 Carl Worth <cworth@cworth.org>)
-===========================================================
-This is the sixth snapshot in cairo's unstable 1.5 series. It comes 1
-week after the 1.5.10 snapshot. This snapshot includes the
-long-awaited change from 16.16 to 24.8 fixed-point values, (see below
-for why you should care). It also includes several backend-specific
-bug fixes.
-
-24.8 fixed-point format
------------------------
-Cairo has always converted path coordinates to a fixed-point
-representation very early in its processing. Historically, this has
-been a 32-bit representation with 16 bits of integer for the
-device-pixel grid and 16 bits of sub-pixel positioning. The choice of
-16 bits for the integer coordinate space was based on the 16-bit limit
-for X Window drawables.
-
-This 16-bit limit has proven problematic for many applications. It's
-an especially vexing problem when targeting non-X backends that don't
-have any 16-bit restriction. But even when targeting cairo-xlib, it's
-often desirable to draw a large shape, (say a background rectangle),
-that extends beyond the surface bounds and expect it to fill the
-surface completely, (rather than overflowing and triggering random
-behavior).
-
-Meanwhile, nobody has ever really needed 16 bits of sub-pixel
-precision.
-
-With this snapshot, the fixed-point system is still in place and is
-still using a 32-bit representation, (future versions of cairo might
-move entirely to floating-point when targeting PDF output for
-example). But the representation now provides 24 bits of pixel
-addressing and only 8 bits of sub-pixel positioning. This should give
-a much less stifling space to many applications.
-
-However, the underlying pixman library still has 16-bit limitations in
-many places, (it has its roots in the X server as well). Until those
-are also fixed, applications targeting cairo image surfaces, or
-hitting software fallbacks when targeting other surfaces will still
-encounter problems with device-space values needing more than 16
-integer bits.
-
-generic fixes
--------------
-Add a few tests to the test suite to increase coverage.
-
-Cleanup a few error-handling paths, (propagate error correctly).
-
-cairo-ft
---------
-Fix handling of font sizes smaller than 1 device pixel.
-
-cairo-pdf
----------
-Fix to properly save/restore clip when analyzing meta-surface
-patterns, (fixing a couple of test-suite failures).
-
-Implement native support for CAIRO_OPERATOR_SOURCE when the source
-pattern is opaque.
-
-Emit rectangles as PDF rectangles ("re" operator) rather than as
-general paths.
-
-cairo-ps
---------
-Fix to work properly with the 16.16->24.8 change.
-
-cairo-svg
----------
-Fix CAIRO_EXTEND_REFLECT by using an image fallback, (there's no
-direct SVG support for reflected patterns).
-
-Fix the use of alpha-only masks, (such as CAIRO_FORMAT_A8).
-
-cairo-quartz
-------------
-Add new API for efficiently using image data as a source:
-
- cairo_surface_t *
- cairo_quartz_image_surface_create (cairo_surface_t *image_surface);
-
- cairo_surface_t *
- cairo_quartz_image_surface_get_image (cairo_surface_t *surface);
-
-For full documentation, see:
-
- http://cairographics.org/manual/cairo-Quartz-Surfaces.html#cairo-quartz-image-surface-create
-
-Several fixes for cairo_mask().
-
-cairo-atsui
------------
-Change default from from Monaco to Helvetica to be more consistent
-with other font backends.
-
-Snapshot 1.5.10 (2008-02-20 Carl Worth <cworth@cworth.org>)
-===========================================================
-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.). See below for
-details.
-
-New API
--------
-Add a new function to query if there is a current point:
-
- cairo_bool_t
- 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
-again).
-
-Optimizations
--------------
-Optimize stroking code to avoid repeated calculation of redundant
-values, (particularly significant for very large, offscreen paths).
-
-General fixes
--------------
-Patch a few more potential buffer overruns, (due to integer
-overflow).
-
-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
-1.5.8).
-
-Remove the altered handling of tolerance and fallback-resolution that
-had been introduced as of cairo 1.5.4.
-
-cairo-xlib
-----------
-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.
-
-cairo-pdf
----------
-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.
-
-cairo-ps
---------
-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
-gradients.
-
-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).
-
-cairo-svg
----------
-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).
-
-cairo-atsui
------------
-Eliminate infinite loop when attempting to render an empty string.
-
-Snapshot 1.5.8 (2008-01-30 Carl Worth <cworth@cworth.org>)
-==========================================================
-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
-value. See below for more details.
-
-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_image_surface_create_for_data:
-
- int
- 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):
-
- void
- 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*. [NOTE:
-On discussion afterwards, we decided against this change so it has
-been removed as of cairo 1.5.10.]
-
-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.
-
-cairo-pdf
----------
-Implement a more correct and more efficient approach for patterns with
-an extend mode of CAIRO_EXTEND_REFLECT.
-
-cairo-ps
---------
-Fix image masks to properly pack and pad mask bits.
-
-cairo-quartz
-------------
-Take care to only use DrawTiledImage for integer-aligned images, (and
-use slower paths to get the correct result in other cases).
-
-cairo-win32
------------
-Fix for older versions of mingw.
-
-Improve the handling of the clipping with the win32 and win32-printing
-surfaces.
-
-Fix rendering of non black/white text.
-
-Snapshot 1.5.6 (2008-01-15 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the third snapshot in cairo's unstable 1.5 series. It comes
-about 6 weeks after the 1.5.4 snapshot. The only API addition compared
-to 1.5.4 is very minor, (a new value CAIRO_STATUS_TEMP_FILE_ERROR).
-The remainder of the changes are the usual accumulation of bug fixes
-and improvements. See below for details.
-
-General bug fixes
------------------
-Fix handling of fonts that contain a mixture of outline and bitmapped
-glyphs. There was a change in this handling in 1.5.4 that improved
-some cases and also regressed other cases. Now, all cases should be
-handled quite well.
-
-Fix alignment issues that were causing SIGBUS failures on SPARC.
-
-Fix a regression (which first appeared in 1.5.2) where stroking under
-a large scale would sometimes incorrectly replace a miter join with a
-bevel join. (Thanks to Keith Packard.)
-
-Fix reporting of zero-sized extents to be {0,0} rather than
-{INT_MAX,INT_MIN}. This avoids several integer overflow and
-allocations of massive regions in some cases.
-
-Fix failures of gradients with no stops, (quartz, ps, and pdf).
-
-Fix handling of Type 1 fonts on Windows platforms.
-
-Fix handling of Type 1 fonts with no specific family name in the font
-itself, (generate a CairoFont-x-y name).
-
-Handle NULL string values in cairo_show_text, cairo_show_glyphs, and
-friends.
-
-Many robustness improvements along error-handling paths, (thanks as
-always, to Chris "ickle" Wilson).
-
-Various other minor fixes.
-
-Paginated backends (PDF/PostScript/win32-printing)
---------------------------------------------------
-Avoid unnecessary rasterization when using a paginated surface as a
-source, (such as drawing from one pdf surface to another).
-
-Fix replaying of paginated surface with more than one level of push/pop
-group.
-
-cairo-xlib
-----------
-Fix xlib backend to not consider recent X server release as having a
-buggy repeat implementation in the Render extension.
-
-cairo-pdf
----------
-Fix PDF output to avoid triggering very slow rendering in PDF viewers,
-(avoid starting and stopping the content stream for each pattern
-emission).
-
-Support CAIRO_OPERATOR_SOURCE in cases where there is nothing below
-the object being drawn.
-
-Fix to avoid seams appearing between multiple fallback regions.
-
-cairo-ps (PostScript)
----------------------
-Use correct bounding box in Type 3 fonts.
-
-Fix several bugs in cairo's PostScript output. These include making
-the PostScript output more compatible with recent versions of
-ghostscript that are more strict about Type 3 fonts, for
-example.
-
-Fix for win32 to not attempt to create temporary files in the root
-directory, (where the user may not have write permission).
-
-Avoid generating Level 3 PostScript if Level 2 is sufficient. Also,
-add code in output documents to alert the user if Level 3 PostScript
-is handed to a device that cannot handle PostScript beyond Level
-2.
-
-cairo-directfb
---------------
-Various performance optimizations.
-
-Fixed support for small surfaces (less than 8x8).
-
-Provide support for environment variables CAIRO_DIRECTFB_NO_ACCEL to
-disable acceleration and CAIRO_DIRECTFB_ARGB_FONT to enable ARGB fonts
-instead of A8.
-
-cairo-os2
----------
-Allow OS/2 APIs instead of C library allocation functions.
-
-Snapshot 1.5.4 (2007-12-05 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the second snapshot in cairo's unstable 1.5 series. It comes
-just over 1 month after the 1.5.2 snapshot. There are no API changes
-or additions in 1.5.4 compared to 1.5.2, but there are several bug
-fixes, and some optimizations. Most of these apply to particular
-backends. See below for details.
-
-General improvements
---------------------
-Use less memory for spline approximation calculations.
-
-Change how the tolerance value is interpreted with regard to
-fallback-resolution. [Note: On further discussion, we decided against
-this change for now. It is removed as of cairo 1.5.10.]
-
-Fix precision of floating-point values in vector-output backends to
-avoid rounding errors with very small numbers.
-
-Xlib improvements
------------------
-Fix bug in glyph rendering with xlib, (due to everything being clipped
-out). This was a regression in the 1.5.2 snapshot that was visible in
-the GIMP, for example. See:
-
- cairo 1.5.2 causes font problems in GIMP 2.4 status bar and evolution 2.12.1
- https://bugs.freedesktop.org/show_bug.cgi?id=13084
-
-PostScript improvements
------------------------
-Fix bug leading to invalid PostScript files when rendering
-text, (need "0 0 xyshow" instead of "0 xyshow").
-
-Fix many issues with Type 3 fonts, including making the resulting text
-extractable.
-
-Quartz improvements
--------------------
-Fix font metrics height value for ATSUI, (helps webkit on GTK+ OS X
-layout nicely).
-
-Fix gradients.
-
-Fix EXTEND_NONE mode for patterns.
-
-Fix cairo_quartz_surface_create to properly clear the new surface
-in cairo_quartz_surface_create.
-
-Fix to correctly handle 0x0 sized surfaces.
-
-Optimize drawing of ExtendMode::REPEAT patterns for OS X 10.5.
-
-Snapshot 1.5.2 (2007-10-30 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the first snapshot in cairo's unstable 1.5 series. It comes 4
-months after the 1.4.10 release. This snapshot includes significant
-improvements to PDF and PostScript output, which is one of the things
-in which we're most interested in getting feedback. There are a couple
-of minor API additions, and several optimizations, (primarily in the
-"print/vector" backends). And there are dozens of bug fixes and
-robustness improvements.
-
-New dependency on external pixman library
------------------------------------------
-A significant change in this snapshot compared to all previous cairo
-releases is that cairo now depends on an external "pixman" library for
-its software rendering. Previously this same code was compiled
-internally as part of cairo, but now the code is separate so that both
-cairo and the X server can now share common code, (thanks very much to
-Søren Sandmann for his work on separating pixman and maintaining it).
-
-So users will need to acquire and build pixman before being able to
-build cairo. The current release is 0.9.6 and can be obtained from
-here:
-
- http://cairographics.org/releases/pixman-0.9.6.tar.gz
-
- which can be verified with:
-
- http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1
- 66f01a682c64403a3d7a855ba5aa609ed93bcb9e pixman-0.9.6.tar.gz
-
- http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1.asc
- (signed by Carl Worth)
-
-Major PDF/PostScript improvements
----------------------------------
-Adrian Johnson has done some long-awaited work to make cairo's PDF and
-PostScript output more interesting than ever before. First, many
-operations that previously triggered image fallbacks will now be
-rendered as native vectors. These operations include:
-
- PDF: cairo_push_group, cairo_surface_create_similar,
- cairo_mask, A8/A1 surface sources, repeating/reflecting linear
- gradients.
-
- PostScript: cairo_push_group, cairo_surface_create_similar,
- gradients, bilevel alpha masks, (for example, all values either 0 or
- 255 for an A8 mask).
-
-Not only that, but when an image fallback is required, it will now be
-limited to only the necessary region. For example, a tiny translucent
-image overlaying a small portion of text would previously caused an
-entire PostScript page to be rendered as a giant image. Now, the
-majority of that page will be nice text, and there will only be a tiny
-image in the output.
-
-Additionally, the PostScript output now carefully encodes text so that
-if it is subsequently converted to PDF, the text will be
-selectable.
-
-This is very exciting progress, and we're hoping to hear from users
-during the 1.5 series about how things have improved, (for example,
-inkscape users doing cairo-based PDF export: please let us know how
-things look). And feel free to pass your thanks along to Adrian for his excellent work.
-
-NOTE: This much improved PDF output makes more sophisticated use of
-functionality in the PDF specification. This means that cairo's output
-will sometimes expose bugs in some free software PDF viewers, (evince,
-poppler, and xpdf, for example), that are not yet ready for such PDF
-files. We're working with the poppler maintainers to get these bugs
-fixed as quickly as possible. In the meantime, please double-check
-with other PDF viewers if cairo-generated PDF files are not being
-rendered correctly. It may be due to a bug in the viewer rather than
-in the PDF file that cairo has created.
-
-Robustness improvements
------------------------
-Chris Wilson has made the largest contribution by far to cairo 1.5.2,
-(in number of commits). His more than 150 commits include a huge
-number of fixes to increase cairo's robustness. These fixes make cairo
-more robust against invalid and degenerate input, (NaN, empty path,
-etc.), against size-0 malloc calls, against memory leaks on
-error-recovery paths, and against other failures during error
-handling. He also implemented atomic operations to cairo, and used
-them to fix cairo's previously non-thread-safe reference counting,
-again improving robustness.
-
-Chris has put a tremendous amount of time and effort into writing
-analysis tools for this work, and in running those tools and fixing
-the problems they report. We're very grateful for this work, and hope
-that all cairo users appreciate the more robust implementation that
-results from it.
-
-This work is largely thankless, so it might make sense to notice
-sometime that cairo has been running quite smoothly for you, and when
-you do, send a quick "thank you" off to Chris Wilson, since it
-is all definitely running smoother thanks to his work.
-
-New API
--------
-There are no major additions to cairo's core API. The only new,
-generic functions are:
-
- void
- cairo_surface_copy_page (cairo_surface_t *surface);
-
- void
- cairo_surface_show_page (cairo_surface_t *surface);
-
-which can now be used much more conveniently than the existing
-cairo_copy_page and cairo_show_page functions in some
-situations. These functions act identically, but require only a
-cairo_surface_t* and not a cairo_t*.
-
-All other API additions are specific to particular backends.
-
-New cairo-win32 API (new font face function and "win32 printing" surface)
--------------------------------------------------------------------------
-There is a new function for creating a win32 font face for both a
-logfontw and an hfont together. This complements the existing
-functions for creating a font face from one or the other:
-
- cairo_font_face_t *
- cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont,
- HFONT font);
-
-There is also a new "win32 printing" surface:
-
- cairo_surface_t *
- cairo_win32_printing_surface_create (HDC hdc);
-
-This interface looks identical to the original
-cairo_win32_surface_create, (both accept and HDC), but the behavior of
-this new surface is very different. It 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, with analysis
-to do as minimal image-based fallbacks as necessary. The behavior and
-implementation shares much with the PDF and PostScript backends.
-
-New cairo-ps API (EPS and PostScript level control)
----------------------------------------------------
-An often requested feature has been the ability to generate
-Encapsulated PostScript (EPS) with cairo. We have that now with the
-following very simple API. Just do cairo_ps_surface_create as usual
-then call this function with a true value:
-
- void
- cairo_ps_surface_set_eps (cairo_surface_t *surface,
- cairo_bool_t eps);
-
-[NOTE: As always with snapshots, it's possible---though not very
-likely---that the API could still be modified before a final
-release. For example, this is the first public cairo function that
-accepts a Boolean parameter. I'm generally opposed to Boolean
-parameters, but this is probably the one case where I'm willing to
-accept one, (namely a "set" function that accepts a single Boolean).]
-
-Also, it is now possible to control what PostScript level to target,
-(either level 2 or level 3), with the following new API:
-
- typedef enum _cairo_ps_level {
- CAIRO_PS_LEVEL_2,
- CAIRO_PS_LEVEL_3
- } cairo_ps_level_t;
-
- void
- cairo_ps_surface_restrict_to_level (cairo_surface_t *surface,
- cairo_ps_level_t level);
-
- void
- cairo_ps_get_levels (cairo_ps_level_t const **levels,
- int *num_levels);
-
- const char *
- cairo_ps_level_to_string (cairo_ps_level_t level);
-
-Improvement for cairo-quartz
-----------------------------
-Brian Ewins had contributed several improvements to cairo-quartz. These
-include an implementation of EXTEND_NONE for linear and radial
-gradients, (so this extend mode will no longer trigger image fallbacks
-for these gradients), as well as native surface-mask clipping, (only
-on OS X 10.4+ where the CGContextClipToMask function is available).
-
-He also fixed a semantic mismatch between cairo and quartz for dashing
-with an odd number of entries in the dash array.
-
-We're grateful for Brian since not many quartz-specific improvements
-to cairo would be happening without him.
-
-Optimizations
--------------
-Optimize SVG output for when the same path is both filled and stroked,
-and avoid unnecessary identity matrix in SVG output. (Emmanuel Pacaud).
-
-Optimize PS output to take less space (Ken Herron).
-
-Make PS output more compliant with DSC recommendations (avoid initclip
-and copy_page) (Adrian Johnson).
-
-Make PDF output more compact (Adrian Johnson).
-
-Release glyph surfaces after uploading them to the X server, (should
-save some memory for many xlib-using cairo application). (Behdad
-Esfahbod).
-
-Optimize cairo-win32 to use fewer GDI objects (Vladimir Vukicevic).
-
-win32-printing: Avoid falling back to images when alpha == 255
-everywhere. (Adrian Johnson).
-
-win32-printing: Avoid falling back for cairo_push_group and
-cairo_surface_create_similar. (Adrian Johnson)
-
-Bug fixes
----------
-Avoid potential integer overflows when allocating large buffers
-(Vladimir Vukicevic).
-
-Preparations to allow the 16.16 fixed-point format to change to
-24.8 (Vladimir Vukicevic).
-
-Fix bugs for unsupported X server visuals (rgb565, rgb555, bgr888, and
-abgr8888). (Carl Worth and Vladimir Vukicevic)
-
-Fix bugs in PDF gradients (Adrian Johnson).
-
-Fix cairo-xlib to build without requiring Xrender header
-files (Behdad Esfahbod).
-
-Make cairo more resilient in the case of glyphs not being available in
-the current font. (Behdad Esfahbod)
-
-Prevent crashes when both atsui and ft font backends are compiled in
-(Brian Ewins).
-
-Make font subsetting code more robust against fonts that don't include
-optional tables (Adrian Johnson).
-
-Fix CFF subsetting bug, (which manifested by generating PDF files that
-Apple's Preview viewer could not read) (Adrian Johnson).
-
-Fixed error handling for quartz and ATSUI backends (Brian Ewins).
-
-Avoid rounding problems by pre-transforming to avoid integer-only
-restrictions on transformation in GDI (Adrian Johnson).
-
-Fixed an obscure bug (#7245) computing extents for some stroked
-paths (Carl Worth).
-
-Fix crashes due to extreme transformation of the pen, (seems to show
-up in many .swf files for some reason) (Carl Worth).
-
-Release 1.4.10 (2007-06-27 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the fifth update in cairo's stable 1.4 series. It comes
-roughly three weeks after the 1.4.8 release. The most significant
-change in this release is a fix to avoid an X error in certain cases,
-(that were causing OpenOffice.org to crash in Fedora). There is also a
-semantic change to include child window contents when using an xlib
-surface as a source, an optimization when drawing many rectangles, and
-several minor fixes.
-
-Eliminate X errors that were killing OO.o (Chris Wilson)
---------------------------------------------------------
-Cairo is fixed to avoid the X errors propagated when cleaning up
-Render Pictures after the application had already destroyed the
-Drawable they reference. (It would be nice if the X server wouldn't
-complain that some cleanup work is already done, but there you have
-it.) This fixes the bug causing OpenOffice.org to crash as described
-here:
-
- XError on right click menus in OOo.
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811
-
-Use IncludeInferiors when using xlib surface as a source (Ryan Lortie)
-----------------------------------------------------------------------
-When an xlib surface is used as the source of a draw operation the
-contents of child windows are now included in the source data. The
-semantics of drawing to xlib surfaces are unchanged (ie: draws are
-still clipped by child windows overlapping the destination window).
-
-Optimize drawing of many rectangles (Vladimir Vukicevic)
---------------------------------------------------------
-Avoid O(N*N) loop when filling many axis-aligned rectangles, (either
-many rectangles as separate sub-paths or due to dashing).
-
-Miscellaneous fixes
--------------------
-Fix cairo-perf on Solaris by linking to librt. (Behdad Esfahbod)
-
-Fix make check for systems that require executable files to have a
-particular extension. (Behdad Esfahbod)
-
-Eliminate some warnings in cairo-quartz. (Brian Ewins)
-
-Fix build-breaking typo for cairo-directfb. (Chris Wilson)
-
-Release 1.4.8 (2007-06-07 Carl Worth <cworth@cworth.org>)
-=========================================================
-This is the fourth update in cairo's stable 1.4 series. It comes just
-over five weeks after the 1.4.6 release. This release includes a
-thread-safe surface-cache for solid patterns which significantly
-improves text rendering with the xlib backend. Also, dozens of error
-paths in cairo have been fixed thanks to extensive fault-injection
-testing by Chris Wilson.
-
-Surface cache for solid patterns
---------------------------------
-Originally written by Jorn Baayen, the introduction of a small cache
-for surfaces created for solid patterns improves performance
-dramatically. For example, this reduces the volume of X requests
-during text rendering to the same level as Xft.
-
-This cache first made its appearance in a 1.3.x snapshot, but was
-removed before appearing in any previous major release due to
-complications with multi-threaded programs. For example, programs like
-evince that would carefully restrict usage of cairo-xlib to a single
-thread were unpleasantly surprised to find that using cairo-image in a
-separate thread could trigger X requests.
-
-Behdad Esfahbod designed a fix which was implemented by Chris
-Wilson. Now, the necessary X requests are queued up until the next
-time the application directly operates on an xlib surface.
-
-Improved error handling paths
-------------------------------
-Chris Wilson continued the excellent work he started in cairo 1.4.4 to
-make cairo much more robust against out-of-memory and other errors. He
-applied his memory allocation fault injection cairo's main test suite,
-(previously he had applied it to cairo's performance suite).
-
-Chris's testing found dozens of bugs which he fixed. Many of these
-bugs had perhaps never been hit by any users. But at least one was
-hit by the gnome-about program which resulted in dozens of duplicated
-bug reports against that program:
-
- http://bugzilla.gnome.org/show_bug.cgi?id=431990
-
-We were very pleasantly surprised to see this bug get fixed as a
-side-effect of Chris's work. Well done, Chris!
-
-Other fixes
------------
-Cleanup of mutex declarations (Behdad Esfahbod)
-
-Remove unnecessary clip region from SVG output (Emmanuel Pacaud)
-
-Remove Xsun from the buggy_repeat blacklist (Elaine Xiong)
-
-ATSUI: Fix glyph measurement: faster and more correct (Brian Ewins)
-
-Quartz: fixed 'extend' behaviour for patterns, improved pattern performance,
-and a few smaller correctness fixes. (Brian Ewins, Vladimir Vukicevic)
-
-Release 1.4.6 (2007-05-01 Carl Worth <cworth@cworth.org>)
-=========================================================
-This is the third update in cairo's stable 1.4 series. It comes a
-little less than three weeks since the 1.4.4 release. This release
-fixes the broken mutex initialization that made cairo 1.4.4 unusable
-on win32, OS/2, and BeOS systems. This release also adds significant
-improvements to cairo's PDF backend, (native gradients!), and a couple
-of performance optimizations, (one of which is very significant for
-users of the xlib backend). See below for more details.
-
-Repaired mutex initialization
------------------------------
-We apologize that cairo 1.4.4 did little more than crash on many
-platforms which are less-frequently used by the most regular cairo
-maintainers, (win32, OS/2, and BeOS). The mutex initialization
-problems that caused those crashes should be fixed now. And to avoid
-similar problems in the future, we've now started posting pre-release
-snapshots to get better testing, (subscribe to cairo@cairographics.org
-if you're interested in getting notified of those and testing them).
-
-PDF Improvements
-----------------
-Thanks to Adrian Johnson, (cairo PDF hacker extraordinaire), we have
-several improvements to cairo's PDF backend to announce:
-
-Native gradients:
-
- As of cairo 1.4.6, cairo will now generate native PDF gradients in
- many cases, (previously, the presence of a gradient on any page
- would force rasterized output for that page). Currently, only
- gradients with extend types of PAD (the default) or NONE will
- generate native PDF gradients---others will still trigger
- rasterization, (but look for support for other extend modes in a
- future release). Many thanks to Miklós Erdélyi as well, who did the
- initial work for this support.
-
-Better compatibility with PDF viewers:
-
- The PDF output from cairo should now be displayed correctly by a
- wider range of PDF viewers. Adrian tested cairo's PDF output against
- many PDF viewers, identified a common bug in many of those viewers
- (ignoring the CTM matrix in some cases), and modified cairo's output
- to avoid triggering that bugs (pre-transforming coordinates and
- using an identity matrix).
-
-Better OpenType/CFF subsetting:
-
- Cairo will now embed CFF and TrueType fonts as CID fonts.
-
-Performance optimizations
--------------------------
-Faster cairo_paint_with_alpha:
-
- The cairo_paint_with_alpha call is used to apply a uniform alpha
- mask to a pattern. For example, it can be used to gradually fade an
- image out or in. Jeff Muizelaar fixed some missing/broken
- optimizations within the implementation of this function resulting
- in cairo_paint_with_alpha being up to 4 times faster when using
- cairo's image backend.
-
-Optimize rendering of "off-screen" geometry:
-
- Something that applications often do is to ask cairo to render
- things that are either partially or wholly outside the current clip
- region. Since 1.4.0 the image backend has been fixed to not waste
- too much time in this case. But other backends have still been
- suffering.
-
- In particular, the xlib backend has often performed quite badly in
- this situation. This is due to a bug in the implementation of
- trapezoid rasterization in many X servers.
-
- Now, in cairo 1.4.6 there is a higher-level fix for this
- situation. Cairo now eliminates or clips trapezoids that are wholly
- or partially outside the clip region before handing the trapezoids
- to the backend. This means that the X server's performance bug is
- avoided in almost all cases.
-
- The net result is that doing an extreme zoom-in of vector-based
- objects drawn with cairo might have previously brought the X server
- to its knees as it allocated buffers large enough to fit all of the
- geometry, (whether visible or not). But now the memory usage should
- be bounded and performance should be dramatically better.
-
-Miscellaneous
--------------
-Behdad contributed an impressively long series of changes that
-organizes cairo's internals in several ways that will be very
-beneficial to cairo developers. Thanks, Behdad!
-
-Behdad has also provided a utility for generating malloc statistics,
-(which was used during the great malloc purges of 1.4.2 and
-1.4.4). This utility isn't specific to cairo so may be of benefit to
-others. It is found in cairo/util/malloc-stats.c and here are Behdad's
-notes on using it:
-
- To build, do:
-
- make malloc-stats.so
-
- inside util/, and to use, run:
-
- LD_PRELOAD=malloc-stats.so some-program
-
- For binaries managed by libtool, eg, cairo-perf, do:
-
- ../libtool --mode=execute /bin/true ./cairo-perf
- LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf
-
-Finally, the cairo-perf-diff-files utility was enhanced to allow for
-generating performance reports from several runs of the same backend
-while some system variables were changed. For example, this is now
-being used to allow cairo-perf to measure the performance of various
-different acceleration architectures and configuration options of the
-X.org X server.
-
-Release 1.4.4 (2007-04-13 Carl Worth <cworth@cworth.org>)
-=========================================================
-This is the second update release in cairo's stable 1.4 series. It
-comes just less than a month after 1.4.2. The changes since 1.4.2
-consist primarily of bug fixes, but also include at least one
-optimization. See below for details.
-
-Of all the work that went into the 1.4.4 release
-
-There have been lots of individuals doing lots of great work on cairo,
-but two efforts during the 1.4.4 series deserve particular mention:
-
-Internal cleanup of error handling, (Chris Wilson)
---------------------------------------------------
-Chris contributed a tremendous series of patches (74 patches!) to
-improve cairo's handling of out-of-memory and other errors. He began
-by adding gcc's warn_unused_attribute to as many functions as
-possible, and then launched into the ambitious efforts of adding
-correct code to quiet the dozens of resulting warnings.
-
-Chris also wrote a custom valgrind skin to systematically inject
-malloc failures into cairo, and did all the work necessary to verify
-that cairo's performance test suite runs to completion without
-crashing.
-
-The end result is a much more robust implementation. Previously, many
-error conditions would have gone unnoticed and would have led to
-assertion failures, segmentation faults, or other harder-to-diagnose
-problems. Now, more than ever, cairo should cleanly let the user know
-of problems through cairo_status and other similar status
-functions. Well done, Chris!
-
-More malloc reduction, (Mathias Hasselmann)
--------------------------------------------
-After 1.4.0, Behdad launched an effort to chase down excessive calls
-to malloc within the implementation of cairo. He fixed a lot of
-malloc-happy objects for 1.4.2, but one of the worst offenders,
-(pixman regions), was left around. Mathias contributed an excellent
-series of 15 patches to finish off this effort.
-
-The end result is a cairo that calls malloc much less often than it
-did before. Compared to 1.4.2, 55% of the calls to malloc have been
-eliminate, (and 60% have been eliminated compared to 1.4.0). Well
-done, Mathias!
-
-Other improvements since 1.4.2
-------------------------------
-• Centralize mutex declarations (will reduce future build breaks),
- (Mathias Hasselmann)
-
-• Reduce malloc by caching recently freed pattern objects (Chris
- Wilson)
-
-• Fix some broken composite operations (David Reveman)
- https://bugs.freedesktop.org/show_bug.cgi?id=5777
-
-Backend-specific fixes
-----------------------
-PDF:
- • Use TJ operator for more compact representation of glyphs (Adrian
- Johnson)
-
- • Fix glyph positioning bug when glyphs are not horizontal
- http://lists.freedesktop.org/archives/cairo/2007-April/010337.html
-
-win32:
- • Fix crash when rendering with bitmap fonts (Carl Worth)
- https://bugzilla.mozilla.org/show_bug.cgi?id=376498
-
-xlib:
- • Turn metrics-hinting on by default (Behdad Esfahbod)
-
- • Fix edge-effect problem with transformed images drawn to xlib
- (Behdad Esfahbod)
- https://bugs.freedesktop.org/show_bug.cgi?id=10508
-
- • Avoid dereferencing a NULL screen. (Chris Wilson)
- https://bugs.freedesktop.org/show_bug.cgi?id=10517
-
-Quartz/ATSUI:
- • Fix scaling of glyph surfaces
- (Brian Ewins)
- https://bugs.freedesktop.org/show_bug.cgi?id=9568
-
- • Fix compilation failure when both xlib and quartz enabled
- (Brian Ewins)
-
- • Fix rounding bug leading to incorrectly positioned glyphs
- (Robert O'Callahan)
- https://bugs.freedesktop.org/show_bug.cgi?id=10531
-
-Release 1.4.2 (2007-03-19 Carl Worth <cworth@cworth.org>)
-=========================================================
-This is the first update release in cairo's stable 1.4 series. It
-comes just less than 2 weeks after 1.4.0. We hadn't anticipated an
-update this early, but we've managed to collect some important fixes
-that we wanted to get out to cairo users as soon as possible, (6 fixes
-for crashes, 1 case where graphical elements would not be drawn at
-all, a handful of backend-specific bugs, and several important build
-fixes).
-
-There's almost nothing but bug fixes in this release, (see below one
-optimization that Behdad did sneak in), so we recommend that everyone
-upgrade to this release when possible.
-
-Thanks to the many people that worked to fix these bugs, and those
-that did the work to report them and to test the fixes, (wherever
-possible both names are credited below).
-
-Critical fixes
---------------
-• Fix a crash due to a LOCK vs. UNLOCK typo (M. Drochner fixing Carl
- Worth's embarrassing typo).
-
- http://bugs.freedesktop.org/show_bug.cgi?id=10235
-
-• Fix potential buffer overflow, which on some systems with a checking
- variant of snprintf would lead to a crash (Adrian Johnson, Stanislav
- Brabec, and sangu).
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10267
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232576
-
-• Fix a crash in cairo_stroke_extents or cairo_in_stroke when line
- width is 0.0. (Carl Worth and Sebastien Bacher)
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10231
-
-• Fix a crash on certain combinations of X server/video drivers (Carl
- Worth and Tomas Carnecky).
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10250
-
-• Fix a crash due to mishandling of invalid user input (Carl Worth and
- Alexander Darovsky).
-
- https://bugs.freedesktop.org/show_bug.cgi?id=9844
-
-• xlib: Cleanup server-side glyph caches on XCloseDisplay. This
- eliminated a crash detected by the perf suite, (and that
- applications could have run into as well). (Chris Wilson)
-
-Other bug fixes
----------------
-• Fix for some geometry which simply disappeared under some
- transformations---a stroked line with an extreme skew in X, for
- example (Carl Worth and Jonathan Watt).
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=373632
-
-• SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 > r1
- (Emmanuel Pacaud).
-
-• PDF: Set page group color space to DeviceRGB.
-
- This fixes incorrect (muddy) transparent colors when rendering cairo
- PDF output in some viewers. (Adrian Johnson, Adam Goode, and
- MenTaLguY).
-
- http://lists.freedesktop.org/archives/cairo/2006-November/008551.html
-
-• win32: Return correct metrics when hinting is off, and fix font
- descent computation (Behdad Esfahbod).
-
-• quartz: Fix glyph interfaces to correctly return user-space rather
- than device-space coordinates (Brian Ewins).
-
- https://bugs.freedesktop.org/show_bug.cgi?id=9568
-
-• xcb: Fix parameter-order confusion with xcb_create_pixmap, which now
- makes all tests that pass with xlib now pass with xcb (Carl Worth,
- Jamey Sharp).
-
-• Fix some memory leaks in the perf suite (Chris Wilson).
-
-• Fix perf suite to consider changes in pixman/src (Mathias
- Hasselmann).
-
-Build fixes
------------
-• Don't include pre-generated cairo-features.h file. This was causing
- build failures when building with the directfb backend enabled
- (Behdad Esfahbod).
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10189
-
-• Eliminate use of maintainer mode from cairo's automake/configure
- script. This means that updates to files such as Makefile.am will
- take effect, (by rerunning automake and friends as necessary) when
- invoking make rather than being silently ignored. (Behdad Esfahbod)
-
-• Don't compile cairo-deflate-stream.c, which depends on zlib, unless
- building the pdf backend which requires it. (Carl Worth, Tor
- Lillqvist)
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10202
-
-• Don't make the ps backend link against zlib anymore, since it
- doesn't require it (Carl Worth).
-
-• Use "find !" rather than "find -not" for better portability (Thomas
- Klausner).
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10226
-
-• Don't use unsupported visibility attribute "hidden" on Solaris
- (Gilles Dauphin, Thomas Klausner).
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10227
-
-Optimization
-------------
-• It was Behdad that suggested we focus strictly on bug fixes now that
- we shipped so many performance improvements in 1.4.0, but it was
- also Behdad that got distracted by the chance to remove a lot of
- mallocs from cairo. Paths, gstates, trapezoids, splines, polygons,
- and gradient color stops will now use small, stack-allocated buffers
- in the most common cases rather than calling malloc as
- often. (Behdad Esfahbod). And look for more from Mathias Hasselmann
- soon.
-
-Release 1.4.0 (2007-03-06 Carl Worth <cworth@cworth.org>)
-=========================================================
-The many people[*] who have been working hard on cairo are very
-pleased to announce the long-awaited release of cairo 1.4. This
-release comes 4 months after the last stable update release (1.2.6)
-and 9 months since the initial release of 1.2.0.
-
-The release notes below are intended to capture the highlights of the
-changes that have occurred from the 1.2 series to the new 1.4.0
-release.
-
-Performance improvements
-------------------------
-Within the cairo project, the last 6 months or so has seen an intense
-effort focusing on the performance of cairo itself. That effort has
-paid off considerably, as can be seen in the following highlights of
-some of the performance differences from cairo 1.2.6 to cairo 1.4.0.
-
-(Note: The performance results reported here were measured on an x86
-laptop. Many of the improvements in 1.4---particular those involving
-text rendering---are even more dramatic on embedded platforms without
-hardware floating-point units. Such devices played an important part
-of many of the optimizations that found their way into cairo over the
-last few months.)
-
-• Dramatic improvement when drawing objects that are mostly off-screen
- with the image backend (with the xlib backend this case is still
- slow due to an X server bug):
-
- image-rgba long-lines-uncropped-100 479.64 -> 4.98: 96.24x speedup
- ███████████████████████████████████████████████▋
-
-• Dramatic improvement when copying a small fraction of an image
- surface to an xlib surface:
-
- xlib-rgba subimage_copy-512 3.93 -> 0.07: 54.52x speedup
- ██████████████████████████▊
-
-• Dramatic improvement to tessellation speed for complex objects:
-
- image-rgb tessellate-256-100 874.16 -> 34.79: 25.13x speedup
- ████████████▏
- xlib-rgba zrusin_another_fill-415 148.40 -> 13.85: 10.72x speedup
- ████▉
- xlib-rgb world_map-800 680.20 -> 345.54: 1.97x speedup
- ▌
-
-• Dramatic improvement to the speed of stroking rectilinear shapes,
- (such as the outline of a rectangle or "box"):
-
- image-rgb box-outline-stroke-100 0.18 -> 0.01: 24.22x speedup
- ███████████▋
- xlib-rgb box-outline-stroke-100 0.46 -> 0.06: 8.05x speedup
- ███▌
-
-
-• Dramatic improvements to text rendering speeds:
-
- xlib-rgba text_image_rgba_over-256 63.12 -> 9.61: 6.57x speedup
- ██▊
-
-• 3x improvements to floating-point to fixed-point conversion speeds:
-
- image-rgba pattern_create_radial-16 9.29 -> 3.44: 2.70x speedup
- ▉
-
-• 2x improvements to linear gradient computation:
-
- image-rgb paint_linear_rgb_source-512 26.22 -> 11.61: 2.26x speedup
- ▋
-
-• 2x improvement to a case common in PDF rendering:
-
- image-rgb unaligned_clip-100 0.10 -> 0.06: 1.81x speedup
- ▍
-
-• 1.3x improvement to rectangle filling speed (note: this improvement
- is new since 1.3.16---previously this test case was a 1.3x slowdown
- compared to 1.2.6):
-
- image-rgba rectangles-512 6.19 -> 4.37: 1.42x speedup
- ▎
- xlib-rgba rectangles-512 7.48 -> 5.58: 1.34x speedup
- ▏
-
-NOTE: In spite of our best efforts, there are some measurable
-performance regressions in 1.4 compared to 1.2. It appears that the
-primary problem is the increased overhead of the new tessellator when
-drawing many, very simple shapes. The following test cases capture
-some of that slowdown:
-
- image-rgba mosaic_tessellate_lines-800 11.03 -> 14.29: 1.30x slowdown
- ▏
- image-rgba box-outline-fill-100 0.01 -> 0.01: 1.26x slowdown
- ▏
- image-rgba fill_solid_rgb_over-64 0.20 -> 0.22: 1.12x slowdown
-
- image-rgba fill_image_rgba_over-64 0.23 -> 0.25: 1.10x slowdown
-
- xlib-rgb paint_image_rgba_source-256 3.24 -> 3.47: 1.07x slowdown
-
-We did put some special effort into eliminating this slowdown for the
-very common case of drawing axis-aligned rectangles with an identity
-matrix (see the box-outline-stroke and rectangles speedup numbers
-above). Eliminating the rest of this slowdown will be a worthwhile
-project going forward.
-
-Also note that the "box-outline-fill" case is a slowdown while
-"box-outline-stroke" is a (huge) speedup. These two test cases
-resulted from the fact that some GTK+ theme authors were filling
-between two rectangles to avoid slow performance from the more natural
-means of achieving the same shape by stroking a single rectangle. With
-1.4 that workaround should definitely be eliminated as it will now
-cause things to perform more slowly.
-
-Greatly improved PDF output
----------------------------
-We are very happy to be able to announce that cairo-generated PDF
-output will now have text that can be selected, cut-and-pasted, and
-searched with most capable PDF viewer applications. This is something
-that was not ever possible with cairo 1.2.
-
-Also, the PDF output now has much more compact encoding of text than
-before. Cairo is now much more careful to not embed multiple copies of
-the same font at different sizes. It also compresses text and font
-streams within the PDF output.
-
-API additions
--------------
-There are several new functions available in 1.4 that were not
-available in 1.2. Curiously, almost all of the new functions simply
-allow the user to query state that has been set in cairo (many new
-"get" functions) rather than providing any fundamentally new
-operations. The new functionality is:
-
-• Getting information about the current clip region
-
- cairo_clip_extents
- cairo_copy_clip_rectangle_list
- cairo_rectangle_list_destroy
-
-• Getting information about the current dash setting
-
- cairo_get_dash_count
- cairo_get_dash
-
-• Getting information from a pattern
-
- cairo_pattern_get_rgba
- cairo_pattern_get_surface
- cairo_pattern_get_color_stop_rgba
- cairo_pattern_get_color_stop_count
- cairo_pattern_get_linear_points
- cairo_pattern_get_radial_circles
-
-• Getting the current scaled font
-
- cairo_get_scaled_font
-
-• Getting reference counts
-
- cairo_get_reference_count
- cairo_surface_get_reference_count
- cairo_pattern_get_reference_count
- cairo_font_face_get_reference_count
- cairo_scaled_font_get_reference_count
-
-• Setting/getting user data on objects
-
- cairo_set_user_data
- cairo_get_user_data
- cairo_pattern_set_user_data
- cairo_pattern_get_user_data
- cairo_scaled_font_set_user_data
- cairo_scaled_font_get_user_data
-
-• New cairo-win32 functions:
-
- cairo_win32_surface_create_with_ddb
- cairo_win32_surface_get_image
- cairo_win32_scaled_font_get_logical_to_device
- cairo_win32_scaled_font_get_device_to_logical
-
-API deprecation
----------------
-The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
-worked as a format value for cairo_image_surface_create, and it wasn't
-necessary for supporting 16-bit 565 X server visuals.
-
-A sampling of bug fixes in cairo 1.4
-------------------------------------
- • Fixed radial gradients
- • Fixed dashing (degenerate and "leaky" cases)
- • Fixed transformed images in PDF/PS output (eliminate bogus repeating)
- • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
- • cairo_show_page no longer needed for single-page output
- • SVG: Fix bug preventing text from appearing in many viewers
- • cairo-ft: Return correct metrics when hinting is off
- • Eliminate crash in cairo_create_similar if nil surface is returned
- • Eliminate crash after INVALID_RESTORE error
- • Fix many bugs related to multi-threaded use and locking
- • Fix for glyph spacing 32 times larger than desired (cairo-win32)
- • Fixed several problems in cairo-atsui (assertion failures)
- • Fix PDF output to avoid problems when printing from Acrobat Reader
- • Fix segfault on Mac OS X (measuring a zero-length string)
- • Fix text extents to not include the size of non-inked characters
- • Fix for glyph cache race condition in glitz backend (Jinghua Luo)
- • Fix make check to work on OPD platforms (IA64 or PPC64)
- • Fix compilation problems of cairo "wideint" code on some platforms
- • Many, many others...
-
-Experimental backends (quartz, XCB, OS/2, BeOS, directfb)
----------------------------------------------------------
-None of cairo's experimental backends are graduating to "supported"
-status with 1.4.0, but two of them in particular (quartz and xcb), are
-very close.
-
-The quartz baceknd has been entirely rewritten and is now much more
-efficient. The XCB backend has been updated to track the latest XCB
-API (which recently had a 1.0 release).
-
-We hope to see these backends become supported in a future release,
-(once they are passing all the tests in cairo's test suite).
-
-The experimental OS/2 backend is new in cairo 1.4 compared to cairo
-1.2.
-
-Documentation improvements
---------------------------
-We have added documentation for several functions and types that
-were previously undocumented, and improved documentation on other
-ones. As of this release, there remain only two undocumented
-symbols: cairo_filter_t and cairo_operator_t.
-
-[*]Thanks to everyone
----------------------
-I've accounted for 41 distinct people with attributed code added to
-cairo between 1.2.6 and 1.4.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, Alfred Peng, Alp Toker, Behdad Esfahbod,
-Benjamin Otte, Brian Ewins, Carl Worth, Christian Biesinger,
-Christopher (Monty) Montgomery, Daniel Amelang, Dan Williams,
-Dave Yeo, David Turner, Emmanuel Pacaud, Eugeniy Meshcheryakov,
-Frederic Crozat, Hans Breuer, Ian Osgood, Jamey Sharp, Jeff Muizelaar,
-Jeff Smith, Jinghua Luo, Jonathan Watt, Joonas Pihlaja, Jorn Baayen,
-Kalle Vahlman, Kjartan Maraas, Kristian Høgsberg, M Joonas Pihlaja,
-Mathias Hasselmann, Mathieu Lacage, Michael Emmel, Nicholas Miell,
-Pavel Roskin, Peter Weilbacher, Robert O'Callahan,
-Soren Sandmann Pedersen, Stuart Parmenter, T Rowley,
-Vladimir Vukicevic
-
-Snapshot 1.3.16 (2007-03-02 Carl Worth <cworth@cworth.org>)
-===========================================================
-New API functions
------------------
-A few new public functions have been added to the cairo API since the
-1.3.14 snapshot. These include a function to query the current scaled
-font:
-
- cairo_get_scaled_font
-
-New functions to query the reference count of all cairo objects:
-
- cairo_get_reference_count
-
- cairo_surface_get_reference_count
- cairo_pattern_get_reference_count
-
- cairo_font_face_get_reference_count
- cairo_scaled_font_get_reference_count
-
-And new functions to allow the use of user_data with any cairo object,
-(previously these were only available on cairo_surface_t and
-cairo_font_face_t objects):
-
- cairo_set_user_data
- cairo_get_user_data
-
- cairo_pattern_set_user_data
- cairo_pattern_get_user_data
-
- cairo_scaled_font_set_user_data
- cairo_scaled_font_get_user_data
-
-Usability improvement for PDF/PS/SVG generation
------------------------------------------------
-In previous versions of cairo, generating single-page output with the
-cairo-pdf, cairo-ps, or cairo-svg backends required a final call to
-cairo_show_page. This was often quite confusing as people would port
-functional code from a non-paginated backend and be totally mystified
-as to why the output was blank until they learned to add this call.
-
-Now that call to cairo_show_page is optional, (it will be generated
-implicitly if the user does not call it). So cairo_show_page is only
-needed to explicitly separate multiple pages.
-
-Greatly improved PDF output
----------------------------
-We are very happy to be able to announce that cairo-generated PDF
-output will now have text that can be selected, cut-and-paste, and
-searched with most capable PDF viewer applications. This is something
-that was not ever possible with cairo 1.2.
-
-Also, the PDF output now has much more compact encoding of text than
-before. Cairo is now much more careful to not embed multiple copies of
-the same font at different sizes. It also compresses text and font
-streams within the PDF output.
-
-Major bug fixes
----------------
- • Fixed radial gradients
-
- The rendering of radial gradients has been greatly improved. In
- the cairo 1.2 series, there was a serious regression affecting
- radial gradients---results would be very incorrect unless one of
- the gradient circles had a radius of 0.0 and a center point within
- the other circle. These bugs have now been fixed.
-
- • Fixed dashing
-
- Several fixes have been made to the implementation of dashed
- stroking. Previously, some dashed, stroked rectangles would
- mis-render and fill half of the rectangle with a large triangular
- shape. This bug has now been fixed.
-
- • Fixed transformed images in PDF/PS output
-
- In previous versions of cairo, painting with an image-based source
- surface pattern to the PDF or PS backends would cause many kinds
- of incorrect results. One of the most common problems was that an
- image would be repeated many times even when the user had
- explicitly requested no repetition with CAIRO_EXTEND_NONE. These
- bugs have now been fixed.
-
- • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
-
- In the 1.2 version of cairo any use of CAIRO_EXTEND_REFLECT or
- CAIRO_EXTEND_PAD with a surface-based pattern resulted in an
- error, (cairo would stop rendering). This bug has now been
- fixed.
-
- Now, CAIRO_EXTEND_REFLECT should work properly with surface
- patterns.
-
- CAIRO_EXTEND_PAD is still not working correctly, but it will now
- simply behave as CAIRO_EXTEND_NONE rather than triggering the
- error.
-
-New rewrite of quartz backend (still experimental)
---------------------------------------------------
-Cairo's quartz backend has been entirely rewritten and is now much
-more efficient. This backend is still marked as experimental, not
-supported, but it is now much closer to becoming an officially
-supported backend. (For people that used the experimental nquartz
-backend in previous snapshots, that implementation has now been
-renamed from "nquartz" to "quartz" and has replaced the old quartz
-backend.)
-
-Documentation improvements
---------------------------
-We have added documentation for several functions and types that
-were previously undocumented, and improved documentation on other
-ones. As of this release, there remain only two undocumented
-symbols: cairo_filter_t and cairo_operator_t.
-
-Other bug fixes
----------------
- • cairo-svg: Fix bug that was preventing text from appearing in many
- viewers
-
- • cairo-ft: Return correct metrics when hinting is off
-
- • Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or
- _cairo_ft_unscaled_font_lock_face
-
- https://bugs.freedesktop.org/show_bug.cgi?id=10035
-
- • cairo crashes in cairo_create_similar if nil surface returned by
- other->backend->create_similar
-
- https://bugs.freedesktop.org/show_bug.cgi?id=9844
-
- • evolution crash in _cairo_gstate_backend_to_user()
- https://bugs.freedesktop.org/show_bug.cgi?id=9906
-
- • Fix memory leak in rectilinear stroking code
-
-Things not in this release
---------------------------
- • Solid-surface-pattern cache: This patch had been applied during
- the 1.3.x series, but it was reverted due to some inter-thread
- problems it caused. The patch is interesting since it made a big
- benefit for text rendering performance---so we'll work to bring a
- corrected version of this patch back as soon as possible.
-
-Snapshot 1.3.14 (2006-02-13 Carl Worth <cworth@cworth.org>)
-===========================================================
-This is the seventh development snapshot in the 1.3 series, (and there
-likely won't be many more before the 1.4.0 release). It comes just
-over 3 weeks after the 1.3.12 snapshot.
-
-Since we're so close to the 1.4.0 release, there are not a lot of new
-features nor even a lot of new performance improvements in this
-snapshot. Instead, there are a great number of bug fixes. Some are
-long-standing bugs that we're glad to say goodbye to, and several are
-fixes for regressions that were introduced as part of the optimization
-efforts during the 1.3.x series.
-
-PDF text selection fixed
-------------------------
-The inability to correctly select text in cairo-generated PDF has been
-a defect ever since the initial support for the PDF backend in the
-cairo 1.2.0 release. With the 1.3.14 snapshot, in most situations, and
-with most PDF viewer applications, the PDF generated by cairo will
-allow text to be correctly selected for copy-and-paste, (as well as
-searching).
-
-We're very excited about this new functionality, (and very grateful to
-Adrian Johnson, Behdad Esfahbod, and others that have put a lot of
-work into this lately). Please test this new ability and give feedback
-on the cairo@cairographics.org list.
-
-Many thread-safety issues fixed
--------------------------------
-We've discovered that no release of cairo has ever provided safe text
-rendering from a multi-threaded application. With the 1.3.14 snapshot
-a huge number of the bugs in this area have been fixed, and multiple
-application dvelopers have now reported success at writing
-multi-threaded applications with cairo.
-
-Other fixes
------------
-Fixed a bug that was causing glyph spacing to be 32 times larger than
-desired when using cairo-win32.
-
-Fixed a regression in the rendering of linear gradients that had been
-present since the 1.3.8 snapshot.
-
-Fixed several problems in cairo-atsui that were leading to assertion
-failures when rendering text.
-
-Fix corrupted results when rendering a transformed source image
-surface to an xlib surface. This was a regression that had been
-present since the 1.3.2 snapshot.
-
-Fixed PDF output to prevent problems printing from some versions of
-Acrobat Reader, (a single glyph was being substituted for every
-glyph).
-
-And many other fixes as well, (see the logs for details).
-
-Snapshot 1.3.12 (2007-01-20 Carl Worth <cworth@cworth.org>)
-===========================================================
-The relentless march toward the cairo 1.4 release continues, (even if
-slightly late out of the starting blocks in 2007). This is the sixth
-development snapshot in the 1.3 series. It comes 4 weeks after the
-1.3.10 snapshot.
-
-Performance
------------
-As usual, this snapshot has some fun performance improvements to show
-off:
-
-image-rgba long-lines-uncropped-100 470.08 -> 4.95: 94.91x speedup
-███████████████████████████████████████████████
-image-rgb long-lines-uncropped-100 461.60 -> 4.96: 93.02x speedup
-██████████████████████████████████████████████
-
-This 100x improvement, (and yes, that's 100x, not 100%), in the image
-backend occurs when drawing large shapes where only a fraction of the
-shape actually appears in the final result, (the rest being outside
-the bounds of the destination surface). Many applications should see
-speedups here, and the actual amount of speedup depends on the ratio
-of non-visible to visible portions of geometry.
-
-[Note: There remains a similar performance bug when drawing mostly
-non-visible objects with the xlib backend. This is due to a similar
-bug in the X server itself, but we hope a future cairo snapshot will
-workaround that bug to get a similar speedup with the xlib backend.]
-
-image-rgba unaligned_clip-100 0.09 -> 0.06: 1.67x speedup
-▍
-image-rgb unaligned_clip-100 0.09 -> 0.06: 1.66x speedup
-▍
-
-This speedup is due to further MMX optimization by Soeren Sandmann for
-a case commonly hit when rendering PDF files, (and thanks to Jeff
-Muizelaar for writing code to extract the test case for us).
-
-There's another MMX optimization in this snapshot (without a fancy
-speedup chart) by Dan Williams which improves compositing performance
-specifically for the OLPC machine.
-
-Thanks to Adrian Johnson, cairo's PDF output is now much more
-efficient in the way it encodes text output. By reducing redundant
-information and adding compression to text output streams, Adrian
-achieved a ~25x improvement in the efficiency of encoding text in PDF
-files, (was ~45 bytes per glyph and is now ~1.6 bytes per glyph).
-
-Bug fixes
----------
-In addition to those performance improvements, this snapshot includes
-several bug fixes:
-
- * A huge number of bug fixes for cairo-atsui text rendering, (for mac
- OS X). These bugs affect font selection, glyph positioning, glyph
- rendering, etc. One noteworthy bug fixes is that
- cairo_select_font_face will no longer arbitrarily select bold nor
- italic when not requested, (at least not when using a standard CSS2
- font family name such as "serif", "sans-serif", "monospace", etc.).
- All these fixes are thanks to Brian Ewins who continues to do a
- great job as the new cairo-atsui maintainer.
-
- * Fix PDF output so that images that are scaled down no longer
- mysteriously repeat (Carl Worth).
-
- * Fix segfault on Mac OS X dues to attempt to measure extents of a
- zero-length string (Behdad Esfahbod).
-
- * Fix text extents to not include the size of initial/trailing
- non-inked characters (Behdad Esfahbod).
-
-API tweaks
-----------
-Three functions have had API changes to improve consistency. Note that
-the API functions being changed here are all functions that were
-introduced as new functions during these 1.3.x snapshots. As always,
-there will not be any API changes to functions included in a major
-release (1.2.x, 1.4.x, etc.) of cairo.
-
-The changes are as follows:
-
- * Rename of cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list.
-
- * Change cairo_get_dash_count to return an int rather than accepting a
- pointer to an int for the return value.
-
- * Change cairo_get_dash to have a void return type rather than
- returning cairo_status_t.
-
-It's possible there will be one more round of changes to these
-functions, (and perhaps cairo_get_color_stop as well), as we seek to
-establish a unifying convention for returning lists of values.
-
-Snapshot 1.3.10 (2006-12-23 Carl Worth <cworth@cworth.org>)
-===========================================================
-Santa Claus is coming just a little bit early this year, and he's
-bringing a shiny new cairo snapshot for all the good little boys and
-girls to play with.
-
-This is the fifth development snapshot in the 1.3 series. It comes 9
-days after the 1.3.8 snapshot, and still well within our goal of
-having a new snapshot every week, (though don't expect one next
-week---we'll all be too stuffed with sugar plums).
-
-Speaking of sugar plums, there's a sweet treat waiting in this cairo
-snapshot---greatly improved performance for stroking rectilinear
-shapes, like the ever common rectangle:
-
-image-rgb box-outline-stroke-100 0.18 -> 0.01: 25.58x speedup
-████████████████████████▋
-image-rgba box-outline-stroke-100 0.18 -> 0.01: 25.57x speedup
-████████████████████████▋
-xlib-rgb box-outline-stroke-100 0.49 -> 0.06: 8.67x speedup
-███████▋
-xlib-rgba box-outline-stroke-100 0.22 -> 0.04: 5.39x speedup
-████▍
-
-In past releases of cairo, some people had noticed that using
-cairo_stroke to draw rectilinear shapes could be awfully slow. Many
-people had worked around this by using cairo_fill with a more complex
-path and gotten a 5-15x performance benefit from that.
-
-If you're one of those people, please rip that workaround out, as now
-the more natural use of cairo_stroke should be 1.2-2x faster than the
-unnatural use of cairo_fill.
-
-And if you hadn't ever implemented that workaround, then you just
-might get to see your stroked rectangles now get drawn 5-25x faster.
-
-Beyond that performance fix, there are a handful of bug fixes in this
-snapshot:
-
- * Fix for glyph cache race condition in glitz backend (Jinghua Luo)
-
- * Many fixes for ATSUI text rendering (Brian Ewins)
-
- * Un-break recent optimization-triggered regression in rendering text
- with a translation in the font matrix (Behdad Esfahbod)
-
- * Fix make check to work on OPD platforms (IA64 or PPC64)
- (Frederic Crozat)
-
- * Fix a couple of character spacing issues on Windows
- (Jonathan Watt)
-
-Have fun with that, everybody, and we'll be back for more in the new
-year, (with a plan to add the last of our performance improvements in
-this round, fix a few bad, lingering bugs, and then finish off a nice,
-stable 1.4 release before the end of January).
-
--Carl
-
-Snapshot 1.3.8 (2006-12-14 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the fourth development snapshot in the 1.3 series. It comes
-just slightly more than one week after the 1.3.6 snapshot.
-
-After the bug fixes in 1.3.6, we're back to our original program of
-weekly snapshots, each one faster than the one from the week
-before. Cairo 1.3.8 brings a 2x improvement in the speed of rendering
-linear gradients (thanks to David Turner), and a significant reduction
-in X traffic when rendering text (thanks to Xan Lopez and Behdad
-Esfahbod), making cairo behave very much like Xft does.
-
-A few other things in the 1.3.8 snapshot worth noting include a more
-forgiving image comparator in the test suite, (using the "perceptual
-diff" metric and GPL implementation by Hector Yee[*]), a bug fix for
-broken linking on x86_64 (thanks to M Joonas Pihlaja) and an even
-better implementation of _cairo_lround, (not faster, but supporting a
-more complete input range), from Daniel Amelang.
-
-[*] http://pdiff.sourceforge.net/
-
-Snapshot 1.3.6 (2006-12-06 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the third development snapshot in the 1.3 series. It comes two
-weeks after the 1.3.4 snapshot.
-
-We don't have fancy performance charts this week as the primary
-changes in this snapshot are bug fixes. The performance work continues
-and the next snapshot (planned for one week from today) should include
-several improvements. The bug fixes in this snapshot include:
-
- * Fix undesirable rounding in glyph positioning (Dan Amelang)
-
- This bug was noticed by several users, most commonly by seeing
- improper text spacing or scrambled glyphs as drawn by nautilus. For
- example:
-
- Update to cairo-1.3.4 worsen font rendering
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217819
-
- * Fix reduced range of valid input coordinates to tessellator
- (M Joonas Pihlaja)
-
- This bug was causing lots of assertion failures in mozilla as
- mentioned here:
-
- CAIRO_BO_GUARD_BITS and coordinate space?
- http://lists.freedesktop.org/archives/cairo/2006-December/008743.html
-
- * Fix several regressions in new tessellator (M Joonas Pihlaja)
-
- Joonas just had a good eye for detail here. I don't think any
- external cairo users had noticed any of these bugs yet.
-
- * Fix compilation problems of cairo "wideint" code on some platforms
- (Mathieu Lacage)
-
- * Fix failed configure due to broken grep (Dan Amelang)
-
- This bug was reported here:
-
- AX_C_FLOAT_WORDS_BIGENDIAN doesn't work because grep doesn't
- work with binary file
- https://bugs.freedesktop.org/show_bug.cgi?id=9124
-
- * Remove the pkg-config minimum version requirement (Behdad Esfahbod)
-
- Some systems ship with pkg-config 0.15 and there was really no good
- reason for cairo to insist on having version 0.19 before it would
- build.
-
-There is also one new (but inert) feature in this snapshot. There's a
-new option that can be passed to cairo's configure script:
-
- --disable-some-floating-point
-
- Disable certain code paths that rely heavily on double precision
- floating-point calculation. This option can improve
- performance on systems without a double precision floating-point
- unit, but might degrade performance on those that do.
-
-As of this snapshot, this option does not make any change to cairo,
-but it is possible that future versions of cairo will respect this
-option and change the implementation of various functions as
-appropriate.
-
-Snapshot 1.3.4 (2006-11-22 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the second development snapshot in the 1.3 series. It comes
-one week after the 1.3.2 snapshot.
-
-This snapshot has a couple of significant performance improvements,
-and also adds new support for producing multi-page SVG output, (when
-targeting SVG 1.2)---thanks to Emmanuel Pacaud. The details of the
-performance improvements are as follows:
-
-1. The long-awaited "new tessellator".
-
- The credit for this being an improvement goes to Joonas Pihlaja. He
- took my really slow code and really put it through its paces to get
- the dramatic performance improvement seen below (up to 38x faster
- on realistic cases, and more than 10x faster for the zrusin_another
- test).
-
- His own writeup of the work he did is quite thorough, but more than
- can be quoted here. Please see his post for the interesting details:
-
- http://lists.freedesktop.org/archives/cairo/2006-November/008483.html
-
- (Though note that this snapshot also includes some additional,
- significant improvements that were only sketched out in that
- email---see "Generating fewer trapezoids").
-
-2. More floating-point improvements
-
- Daniel Amelang continues to work the magic he began in the 1.3.2
- snapshot. This time he short-circuits floating-point
- transformations by identity matrices and applies the earlier
- floating-to-fixed-point technique to the problem of rounding.
-
- The improvements here will primarily benefit text performance, and
- will benefit platforms without hardware floating-point more than
- those that have it, (some text tests show 20% improvement on an x86
- machine and closer to 80% improvement on arm).
-
-The performance chart comparing 1.3.2 to 1.3.4 really speaks for
-itself, (this is on an x86 laptop). This is quite a lot of progress
-for one week:
-
- xlib-rgb stroke_similar_rgba_over-256 74.99 1.45% -> 2.03 68.38%: 36.86x speedup
-███████████████████████████████████▉
- xlib-rgb stroke_similar_rgba_source-256 78.23 1.43% -> 3.30 67.05%: 23.71x speedup
-██████████████████████▊
- xlib-rgba tessellate-256-100 820.42 0.15% -> 35.06 2.84%: 23.40x speedup
-██████████████████████▍
-image-rgba tessellate-256-100 819.55 0.32% -> 35.04 3.56%: 23.39x speedup
-██████████████████████▍
- xlib-rgb stroke_image_rgba_over-256 78.10 1.43% -> 4.33 65.56%: 18.04x speedup
-█████████████████
- xlib-rgb stroke_image_rgba_source-256 80.11 1.63% -> 5.75 63.99%: 13.94x speedup
-█████████████
- xlib-rgba zrusin_another_tessellate-415 89.22 0.35% -> 8.38 5.23%: 10.65x speedup
-█████████▋
-image-rgba zrusin_another_tessellate-415 87.38 0.89% -> 8.37 5.22%: 10.44x speedup
-█████████▍
-image-rgba zrusin_another_fill-415 117.67 1.34% -> 12.88 2.77%: 9.14x speedup
-████████▏
- xlib-rgba zrusin_another_fill-415 140.52 1.57% -> 15.79 2.88%: 8.90x speedup
-███████▉
-image-rgba tessellate-64-100 9.68 3.42% -> 1.42 0.60%: 6.82x speedup
-█████▉
- xlib-rgba tessellate-64-100 9.78 4.35% -> 1.45 0.83%: 6.72x speedup
-█████▊
- xlib-rgb stroke_linear_rgba_over-256 46.01 2.44% -> 7.74 54.51%: 5.94x speedup
-█████
- xlib-rgb stroke_linear_rgba_source-256 48.09 2.15% -> 9.14 53.00%: 5.26x speedup
-████▎
- xlib-rgb stroke_radial_rgba_over-256 50.96 2.34% -> 12.46 47.99%: 4.09x speedup
-███▏
- xlib-rgb stroke_radial_rgba_source-256 53.06 1.57% -> 13.96 46.57%: 3.80x speedup
-██▊
-image-rgba paint_similar_rgba_source-256 0.12 1.57% -> 0.08 9.92%: 1.42x speedup
-▍
-image-rgba paint_image_rgba_source-256 0.12 2.49% -> 0.08 10.70%: 1.41x speedup
-▍
-image-rgba world_map-800 356.28 0.46% -> 275.72 1.15%: 1.29x speedup
-▎
- xlib-rgba world_map-800 456.81 0.39% -> 357.95 1.39%: 1.28x speedup
-▎
-image-rgb tessellate-16-100 0.09 0.57% -> 0.07 3.43%: 1.23x speedup
-▎
-image-rgba tessellate-16-100 0.09 0.06% -> 0.07 2.46%: 1.23x speedup
-▎
-image-rgba text_solid_rgb_over-256 5.39 4.01% -> 4.47 0.70%: 1.21x speedup
-▎
-image-rgba text_solid_rgba_over-256 5.37 0.82% -> 4.45 0.75%: 1.21x speedup
-▎
-image-rgba text_image_rgb_over-64 0.78 0.10% -> 0.65 0.74%: 1.20x speedup
-▎
-image-rgba text_image_rgba_over-64 0.78 0.29% -> 0.65 0.68%: 1.19x speedup
-▎
-image-rgb text_solid_rgb_over-64 0.76 2.45% -> 0.63 0.81%: 1.19x speedup
-▎
-image-rgba text_solid_rgba_over-64 0.76 0.33% -> 0.64 0.66%: 1.19x speedup
-▎
-image-rgba text_similar_rgba_over-256 5.99 4.72% -> 5.04 1.09%: 1.19x speedup
-▎
-
-We should point out that there is some potential for slowdown in this
-snapshot. The following are the worst slowdowns reported by the cairo
-performance suite when comparing 1.3.2 to 1.3.4:
-
-image-rgba subimage_copy-256 0.01 0.87% -> 0.01 3.61%: 1.45x slowdown
-▌
- xlib-rgb paint_solid_rgb_over-256 0.31 10.23% -> 0.38 0.33%: 1.26x slowdown
-▎
-image-rgba box-outline-fill-100 0.01 0.30% -> 0.01 2.52%: 1.21x slowdown
-▎
-image-rgba fill_solid_rgb_over-64 0.20 1.22% -> 0.22 1.59%: 1.12x slowdown
-▏
-image-rgb fill_similar_rgb_over-64 0.21 1.04% -> 0.24 1.06%: 1.11x slowdown
-▏
-image-rgba fill_image_rgb_over-64 0.21 1.19% -> 0.24 0.72%: 1.11x slowdown
-▏
-image-rgba fill_similar_rgb_over-64 0.21 0.18% -> 0.24 0.30%: 1.11x slowdown
-▏
-image-rgb fill_solid_rgba_over-64 0.22 1.66% -> 0.24 1.15%: 1.11x slowdown
-▏
-image-rgb fill_image_rgb_over-64 0.21 0.14% -> 0.24 0.80%: 1.11x slowdown
-▏
-image-rgba fill_image_rgba_over-64 0.22 1.34% -> 0.25 0.20%: 1.11x slowdown
-▏
-image-rgba fill_solid_rgba_over-64 0.22 1.48% -> 0.24 0.95%: 1.11x slowdown
-▏
-image-rgb fill_similar_rgba_over-64 0.22 1.13% -> 0.25 1.25%: 1.10x slowdown
-▏
-
-The 45% slowdown for subimage_copy is an extreme case. It's unlikely
-to hit many applications unless they often use cairo_rectangle;
-cairo_fill to copy a single pixel at a time. In any case, it shows a
-worst-case impact of the overhead of the new tessellator. The other
-slowdowns (~ 10%) are probably more realistic, and still very
-concerning.
-
-We will work to ensure that performance regressions like these are not
-present from one major release of cairo to the next, (for example,
-from 1.2 to 1.4).
-
-But we're putting this 1.3.4 snapshot out there now, even with this
-potential slowdown so that people can experiment with it. If you've
-got complex geometry, we hope you will see some benefit from the new
-tessellator. If you've got primarily simple geometry, we hope things
-won't slowdown too much, but please let us know what slowdown you see,
-if any, so we can calibrate our performance suite against real-world
-impacts.
-
-Thanks, and have fun with cairo!
-
-Snapshot 1.3.2 (2006-11-14 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the first development snapshot since the 1.2 stable series
-branched off shortly after the 1.2.4 release in August 2006.
-
-This snapshot includes all the bug fixes from the 1.2.6 release,
-(since they originated here on the 1.3 branch first and were
-cherry-picked over to 1.2). But more importantly, it contains some new
-API in preparation for a future 1.4 release, and most importantly, it
-contains several performance improvements.
-
-The bug fixes will not be reviewed here, as most of them are already
-described in the 1.2.6 release notes. But details for the new API and
-some performance improvements are included here.
-
-As with all snapshots, this is experimental code, and the new API
-added here is still experimental and is not guaranteed to appear
-unchanged in any future release of cairo.
-
-API additions
--------------
-Several new API additions are available in this release. There is a
-common theme among all the additions in that they allow cairo to
-advertise information about its state that it was refusing to
-volunteer earlier. So this isn't groundbreaking new functionality, but
-it is essential for easily achieving several tasks.
-
-The new functions can be divided into three categories:
-
- Getting information about the current clip region
- -------------------------------------------------
- cairo_clip_extents
- cairo_copy_clip_rectangles
- cairo_rectangle_list_destroy
-
- Getting information about the current dash setting
- --------------------------------------------------
- cairo_get_dash_count
- cairo_get_dash
-
- Getting information from a pattern
- ----------------------------------
- cairo_pattern_get_rgba
- cairo_pattern_get_surface
- cairo_pattern_get_color_stop_rgba
- cairo_pattern_get_color_stop_count
- cairo_pattern_get_linear_points
- cairo_pattern_get_radial_circles
-
-In each of these areas, we have new API for providing a list of
-uniform values from cairo. The closest thing we had to this before was
-cairo_copy_path, (which is rather unique in providing a list of
-non-uniform data).
-
-The copy_clip_rectangles/rectangle_list_destroy functions follow a
-style similar to that of cairo_copy_path. Meanwhile, the dash and
-pattern color stop functions introduce a new style in which there is a
-single call to return the number of elements available (get_dash_count
-and get_color_stop_count) and then a function to be called once to get
-each element (get_dash and get_color_stop_rgba).
-
-I'm interested in hearing feedback from users of these new API
-functions, particularly from people writing language bindings. One
-open question is whether the clip "getter" functionality should adopt
-a style similar to that of the new dash and color_stop interfaces.
-
-API deprecation
----------------
-The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
-worked as a format value for cairo_image_surface_create, and it wasn't
-necessary for supporting 16-bit 565 X server visuals.
-
-XCB backend changes
--------------------
-The XCB backend has been updated to track the latest XCB API (which
-recently had a 1.0 release).
-
-New quartz backend
-------------------
-Vladimir Vukicevic has written a new "native quartz" backend which
-will eventually replace the current "image-surface wrapping" quartz
-backend. For now, both backends are available, (the old one is
-"quartz" and the new one is "nquartz"). But it is anticipated that the
-new backend will replace the old one and take on the "quartz" name
-before this backend is marked as supported in a release of cairo.
-
-New OS/2 backend
-----------------
-Doodle and Peter Weilbacher have contributed a new, experimental
-backend for using cairo on OS/2 systems.
-
-Performance improvements
-------------------------
-Here are some highlights from cairo's performance suite showing
-improvements from cairo 1.2.6 to cairo 1.3.2. The command used to
-generate this data is:
-
- ./cairo-perf-diff 1.2.6 HEAD
-
-available in the perf/ directory of a recent checkout of cairo's
-source, (the cairo-perf-diff script does require a git checkout and
-will not work from a tar file---though ./cairo-perf can still be used
-to generate a single report there and ./cairo-perf-diff-files can be
-used to compare two reports).
-
-Results are described below both for an x86 laptop (with an old Radeon
-video card, recent X.org build, XAA, free software drivers), as well
-as for a Nokia 770. First the x86 results with comments on each, (all
-times are reported in milliseconds).
-
-Copying subsets of an image surface to an xlib surface (much faster)
---------------------------------------------------------------------
- xlib-rgba subimage_copy-512 10.50 -> : 53.97x speedup
-█████████████████████████████████████████████████████
-
-Thanks to Christopher (Monty) Montgomery for this big performance
-improvement. Any application which has a large image surface and is
-copying small pieces of it at a time to an xlib surface, (imagine an
-application that loads a single image containing all the "sprites" for
-that application), will benefit from this fix. The larger the ratio of
-the image surface to the portion being copied, the larger the benefit.
-
-Floating-point conversion (3x faster)
--------------------------------------
- xlib-rgba pattern_create_radial-16 27.75 -> 3.93 : 2.94x speedup
-██
-image-rgb pattern_create_radial-16 26.06 -> 3.74 : 2.90x speedup
-█▉
-
-Thanks to Daniel Amelang, (and others who had contributed the idea
-earlier), for this nice improvement in the speed of converting
-floating-point values to fixed-point.
-
-Text rendering (1.3 - 2x faster)
-------------------------------
- xlib-rgba text_image_rgba_source-256 319.73 -> 62.40 : 2.13x speedup
-█▏
-image-rgb text_solid_rgba_over-64 2.85 -> 0.88 : 1.35x speedup
-▍
-
-I don't think we've ever set out to improve text performance
-specifically, but we did it a bit anyway. I believe the extra
-improvement in the xlib backend is due to Monty's image copying fix
-above, and the rest is due to the floating-point conversion speedup.
-
-Thin stroke improvements (1.5x faster)
----------------------------------------------
-image-rgb world_map-800 1641.09 -> 414.77 : 1.65x speedup
-▋
- xlib-rgba world_map-800 1939.66 -> 529.94 : 1.52x speedup
-▌
-
-The most modest stuff to announce in this release is the 50%
-improvement I made in the world_map case. This is in improvement that
-should help basically anything that is doing strokes with many
-straight line segments, (and the thinner the better, since that makes
-tessellation dominate rasterization). The fixes here are to use a
-custom quadrilateral tessellator rather than the generic tessellator
-for straight line segments and the miter joins.
-
-Performance results from the Nokia 770
---------------------------------------
- xlib-rgba subimage_copy-512 55.88 -> 2.04 : 27.34x speedup
-██████████████████████████▍
- xlib-rgb text_image_rgb_over-256 1487.58 -> 294.43 : 5.05x speedup
-████
-image-rgb pattern_create_radial-16 187.13 -> 91.86 : 2.04x speedup
-█
- xlib-rgba world_map-800 21261.41 -> 15628.02 : 1.36x speedup
-▍
-
-Here we see that the subimage_copy improvement was only about half as
-large as the corresponding improvement on my laptop, (27x faster
-compared to 54x) and the floating-point conversion fix also was quite
-as significant, (2x compared to 3x). Oddly the improvement to text
-rendering performance was more than twice as good (5x compared to
-2x). I don't know what the reason for that is, but I don't think it's
-anything anybody should complain about.
-
-Release 1.2.6 (2006-11-02 Behdad Esfahbod <behdad@behdad.org>)
-==============================================================
-This is the third bug fix release in the 1.2 series, coming less than
-two months after the 1.2.4 release made on August 18.
-
-The 1.2.4 release turned out to be a pretty solid one, except for a crasher
-bug when forwarding an X connection where the client and the server have
-varying byte orders, eg. from a PPC to an i686. Other than that, various
-other small bugs have been fixed.
-
-Various improvements have been made in the testing infrastructure to prevent
-false positives, and to make sure the generated cairo shared object behaves as
-expected in terms of exported symbols and relocations.
-
-There were a total of 89 changes since 1.2.4. The following list the most
-important ones:
-
-Common fixes
-------------
-- Avoid unsigned loop control variable to eliminate infinite,
- memory-scribbling loop. (#7593)
-- Fix cairo_image_surface_create to report INVALID_FORMAT errors.
- Previously the detected error was being lost and a nil surface was
- returned that erroneously reported CAIRO_STATUS_NO_MEMORY.
-- Change _cairo_color_compute_shorts to not rely on any particular
- floating-point epsilon value. (#7497)
-- Fix infinite-join test case (bug #8379)
-- Pass correct surface to create_similar in _cairo_clip_init_deep_copy().
-
-PS/PDF fixes
-------------
-- Fix Type 1 embedding in PDF.
-- Correct the value of /LastChar in the PDF Type 1 font dictionary.
-- Improve error checking in TrueType subsetting.
-- Compute right index when looking up left side bearing. (bug #8180)
-- Correct an unsigned to signed conversion problem in truetype subsetting
- bbox.
-- Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs.
-- Add cairo version to PS header / PDF document info dictionary.
-- Set CTM before path construction.
-
-Win32 fixes
------------
-- Get correct unhinted outlines on win32. (bug 7603)
-- Make cairo as a win32 static library possible.
-- Use CAIRO_FORMAT_RGB24 for BITSPIXEL==32 surfaces too.
-
-Build system fixes
-------------------
-- Define WINVER if it's not defined. (bug 6456)
-- Fix the AMD64 final link by removing SLIM from pixman.
-- Misc win32 compilation fixes.
-- Add Sun Pro C definition of pixman_private.
-- Use pixman_private consistently as prefix not suffix.
-- Added three tests check-plt.sh, check-def.sh, and check-header.sh that check
- that the shared object, the .def file, and the public headers agree about
- the exported symbols.
-- Require pkg-config 0.19. (#8686)
-
-
-Release 1.2.4 (2006-08-18 Carl Worth <cworth@cworth.org>)
-=========================================================
-This is the second bug fix release in the 1.2 series, coming less than
-two weeks after the 1.2.2 release made on August 8.
-
-The big motivation for a quick release was that there were a log of
-build system snags that people ran into with the 1.2.2 release. But,
-by the time we got those all done, we found that we had a bunch of
-fixes for cairo's rendering as well. So there's a lot of goodness in
-here for such a short time period.
-
-Rendering fixes
----------------
-Fix image surfaces to not be clipped when used as a source (Vladimir Vukicevic)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=72e25648c4c4bc82ddd938aa4e05887a293f0d8b
-
-Fix a couple of corner cases in dashing degenerate paths (Jeff Muizelaar)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=fbb1758ba8384650157b2bbbc93d161b0c2a05f0
-
-Fix support for type1 fonts on win32 (Adrian Johnson)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=da1019c9138695cb838a54f8b871bbfd0e8996d7
-
-Fix assertion failure when rotating bitmap fonts (Carl Worth)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0bfa6d4f33b8ddb5dc55bbe419c15df4af856ff9
-
-Fix assertion failure when calling cairo_text_path with bitmap fonts (Carl Worth)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9878a033531e6b96b5f27e69e10e90dee7440cd9
-
-Fix mis-handling of cairo_close_path in some situations (Tim Rowley, Carl Worth)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=53f74e59faf1af78f2f0741ccf1f23aa5dad4efc
-
-Respect font_matrix translation in _cairo_gstate_glyph_path (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f183b835b111d23e838889178aa8106ec84663b3
-
-Fix vertical metrics adjustment to work with non-identity shapes (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7bc263842a798d657a95e539e1693372448837f
-
-[PS] Set correct ImageMatrix in _cairo_ps_surface_emit_bitmap_glyph_data (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=d47388ad759b0a1a0869655a87d9b5eb6ae2445d
-
-Build system fixes
-------------------
-Fix xlib detection to prefer pkg-config to avoid false libXt dependency (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0e78e7144353703cbd28aae6a67cd9ca261f1d68
-
-Fix typos causing win32 build problem with PS,PDF, and SVG backends (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=aea83b908d020e26732753830bb3056e6702a774
-
-Fix configure cache to not use stale results (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6d0e3260444a2d5b6fb0cb223ac79f1c0e7b3a6e
-
-Fix to not pass unsupported warning options to the compiler (Jens Granseuer)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=97524a8fdb899de1ae4a3e920fb7bda6d76c5571
-
-Fix to allow env. variables such as png_REQUIRES to override configure detection (Jens Granseuer)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=abd16e47d6331bd3811c908e524b4dcb6bd23bf0
-
-Fix test suite to not use an old system cairo when converting svg2png (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6122cc85c8f71b1ba2df3ab86907768edebe1781
-
-Fix test suite to not require signal.h to be present (Behdad Esfahbod)
-http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6f8cf53b1e1ccdbe1ab6a275656b19c6e5120e40
-
-Code cleanups
--------------
-Many useful warnings cleanups from sparse, valgrind, and careful eyes
-(Kjartan Maraas, Pavel Roskin)
-
-Release 1.2.2 (2006-08-08 Carl Worth <cworth@cworth.org>)
-=========================================================
-This is the first bug fix release in the 1.2 series since the original
-1.2.0 release made six weeks ago.
-
-There were some very serious bugs in the 1.2.0 release, (see below),
-so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2
-release maintains source and binary compatibility with 1.2.0 and does
-not make any API additions.
-
-Fix crashes with BGR X servers
-------------------------------
-With cairo 1.2.0 many people reported problems with all cairo-using
-programs, (including all GTK+ programs with GTK+ >= 2.8) immediately
-crashing with a complaint about an unsupported image format. This bug
-affected X servers that do not provide the Render extension and that
-provide a visual with BGR rather than RGB channel order.
-
-report: https://bugs.freedesktop.org/show_bug.cgi?id=7294
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59
-
-Fix the "disappearing text" bug
--------------------------------
-With cairo 1.2.0 many people reported that text would disappear from
-applications, sometimes reappearing with mouse motion or
-selection. The text would disappear after the first space in a string
-of text. This bug was caused by an underlying bug in (very common) X
-servers, and only affected text rendered without antialiasing, (either
-a bitmap font or a vector font with antialiasing disabled). The bug
-was also exacerbated by a KDE migration bug that caused antialiasing
-to be disabled more than desired.
-
-report: https://bugs.freedesktop.org/show_bug.cgi?id=7494
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14
-see also:
-Xorg: https://bugs.freedesktop.org/show_bug.cgi?id=7681
-KDE: http://qa.mandriva.com/show_bug.cgi?id=23990
-
-Fix broken image fallback scaling (aka. "broken printing")
-----------------------------------------------------------
-The various "print" backends, (pdf, ps, and svg), sometimes fallback
-to using image-based rendering for some operations. In cairo 1.2.0
-these image fallbacks were scaled improperly. Applications using cairo
-can influence the resolution of the image fallbacks with
-cairo_surface_set_fallback_resolution. With the bug, any value other
-than 72.0 would lead to incorrect results, (larger values would lead
-to increasingly shrunken output).
-
-report: https://bugs.freedesktop.org/show_bug.cgi?id=7533
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb
-
-Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod)
-----------------------------------------------------------------------------
-The 1.2.0 release introduced an inadvertent change to how the
-translation components of a font matrix are interpreted. In the 1.0
-series, font matrix translation could be used to offset the glyph
-origin, (though glyph metrics were reported incorrectly in
-1.0). However in 1.2.0, the translation was applied to the advance
-values between each glyph. The 1.2.0 behavior is fairly useless in
-practice, and it was not intentional to introduce a semantic
-change. With 1.2.2 we return to the 1.0 semantics, with a much better
-implementation that provides correct glyph metrics.
-
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051
-
-Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod)
--------------------------------------------------------------------------------------
-There has been a long-standing issue with cairo_surface_create_similar
-such that font options and other settings from the original
-destination surface would not be preserved to the intermediate
-"similar" surface. This could result in incorrect rendering
-(particularly with respect to text hinting/antialiasing) with
-fallbacks, for example.
-
-report: https://bugs.freedesktop.org/show_bug.cgi?id=4106
-fixes: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=bdb4e1edadb78a2118ff70b28163f8bd4317f1ec
-
-xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic)
-----------------------------------------------------------------------------
-Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0
-caused a significant performance regression when using the xlib
-backend. This performance regression was particularly noticeable when
-doing lots of text rendering and when using a high-latency connection
-to the X server, (such as a remote X server over an ssh
-connection). The slowdown was identified and fixed in 1.2.2.
-
-report: https://bugs.freedesktop.org/show_bug.cgi?id=7514
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c
-
-PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson)
--------------------------------------------------------------------------
-The cairo 1.2 series adds a supported pdf backend to cairo. In cairo
-1.2.0 this backend required the freetype library, which was an
-undesirable dependency on systems such as win32, (cairo is designed to
-always prefer the "native" font system). As of cairo 1.2.2 the
-freetype library is not required to use the pdf backend on the win32
-platform.
-
-report: https://bugs.freedesktop.org/show_bug.cgi?id=7538
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691
-
-PDF: Fix broken output on amd64 (Adrian Johnson)
-------------------------------------------------
-report: http://bugzilla.gnome.org/show_bug.cgi?id=349826
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60
-
-PS: Fix broken output for truetype fonts > 64k (Adrian Johnson)
----------------------------------------------------------------
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94
-
-PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop)
-------------------------------------------------------------
-Kent notices that with the PDF backend in cairo 1.2.0 as soon as a
-stroke was performed with dashing, all subsequent strokes would also
-be dashed. There was no way to turn dashing off again.
-
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256
-
-Fix memory leaks in failure paths in gradient creation (Alfred Peng)
---------------------------------------------------------------------
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2
-
-Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson)
-------------------------------------------------------------
-report: https://bugs.freedesktop.org/show_bug.cgi?id=7766
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd
-
-Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng)
------------------------------------------------------------------------------
-report: https://bugzilla.mozilla.org/show_bug.cgi?id=341874
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6
-
-Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron)
--------------------------------------------------------------------------------------
-report: https://bugs.freedesktop.org/show_bug.cgi?id=7483
-fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235
-
-Various memory leak fixes
--------------------------
-Fix memory leak in _cairo_surface_show_glyphs (bug 7766)
-Fix file handle leak in failure path (bug 7616)
-Fix some memory leaks in the test cases.
-Fix some memory leaks in font subsetting code used in print backends.
-
-Documentation improvements (Behdad Esfahbod)
---------------------------------------------
-Added new documentation for several functions (cairo_show_page,
-cairo_copy_page, cairo_in_stroke, cairo_in_fill).
-
-Fixed some syntax errors that were preventing some existing
-documentation from being published.
-
-Fixed several minor typographical errors.
-
-Added an index for new symbols in 1.2.
-
-Release 1.2.0 (2006-06-27 Carl Worth <cworth@cworth.org>)
-=========================================================
-This is the culmination of the work that has gone on within the 1.1
-branch of cairo.
-
-There has been one API addition since the cairo 1.1.10 snapshot:
-
- cairo_xlib_surface_get_width
- cairo_xlib_surface_get_height
-
-There's also a new feature without any API change:
-
- Dots can now be drawn by using CAIRO_LINE_CAP_ROUND with
- degenerate sub-paths, (cairo_move_to() followed by either
- cairo_close_path() or a cairo_line_to() to the same location).
-
-And at least the following bugs have been fixed:
-
- 6759 fontconfig option AntiAlias doesn't work in cairo 1.1.2
- 6955 Some characters aren't displayed when using xlib (cache u...
- 7268 positive device_offset values don't work as source
- * PDF emit_glyph function needs to support bitmapped glyphs
- * PS emit_glyph function needs to support bitmapped glyphs
- * SVG emit_glyph function needs to support bitmapped glyphs
- * PDF: minefield page one is falling back unnecessarily
- * PS/PDF: Fix broken placement for vertical glyphs
- * PS: Fix to not draw BUTT-capped zero-length dash segments
- * Do device offset before float->fixed conversion
- http://bugzilla.gnome.org/show_bug.cgi?id=332266
- * PS: Fix source surfaces with transformations
- * PS: Fix to not draw BUTT-capped degnerate sub-paths
- * PS: Don't walk off end of array when printing "~>"
- * Fix some memory leaks in the test suite rig
- * SVG: Fix memory leak when using cairo_mask
- * Fix ExtendMode::REFLECT and EXTEND_PAD to not crash (though these are
- still not yet fully implemented for surface patterns).
-
-This has been a tremendous effort by everyone, and I'm proud to have
-been a part of it. Congratulations to all contributors to cairo!
-
-Snapshot 1.1.10 (2006-06-16 Carl Worth <cworth@cworth.org>)
-===========================================================
-This is the fifth in a series of snapshots working toward the 1.2
-release of cairo.
-
-The primary motivation for this snapshot is to fix a long-standing bug
-that had long been silent, but as of the 1.1.8 snapshot started
-causing crashes when run against 16-bit depth X servers, (often Xvnc
-or Xnest). The fix for this adds a new CAIRO_FORMAT_RGB16_565 to the
-API.
-
-This snapshot also includes a rewrite of cairo's SVG backend to
-eliminate the dependency on libxml2. With this in place, cairo 1.2
-will not depend on any libraries that cairo 1.0 did not.
-
-As usual, there are also a few fixes for minor bugs.
-
-Snapshot 1.1.8 (2006-06-14 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the fourth in a series of snapshots working toward the 1.2
-release of cairo. At this point, all major features of the 1.2 release
-are in place, leaving just a few bug fixes left.
-
-In particular, there well be no additional API changes between this
-1.1.8 snapshot and the 1.2 release.
-
-The announcement for 1.1.6 mentioned several API changes being
-considered. Only one of these changes was actually implemented
-(set_dpi -> fallback_resolution). This change does introduce one
-source-level incompatibility with respect to previous 1.1.x snapshots,
-so see below for details.
-
-Here is an abbreviated summary of changes since the 1.1.6 snapshot:
-
-** API Change **
-----------------
-According to the plan mentioned in the 1.1.6 notes, one source-level
-incompatible change has been implemented. The following three
-functions have been removed from cairo's API:
-
- cairo_pdf_surface_set_dpi
- cairo_ps_surface_set_dpi
- cairo_svg_surface_set_dpi
-
-and in their place the following function has been added:
-
- cairo_surface_set_fallback_resolution
-
-The signature and semantics of the function remains the same, so it is
-a simple matter of changing the name of the function when calling
-it. As a transition mechanism, this snapshot will (on many systems)
-build to include the old symbols so that code previously compiled will
-still run. However, all source code using the old names must be
-updated before it will compile. And the upcoming 1.2 release is not
-anticipated to include the old symbols.
-
-Finally, it should be pointed out that the old symbols never existed
-in the supported API of any stable release of cairo. (In the stable
-1.0 releases the PDF, PS, and SVG backends were advertised as
-experimental and unstable.)
-
-And, as always, cairo continues to maintain source and binary
-compatibility between major releases. So applications compiled against
-supported backends in a stable release of cairo (1.0.4 say) will
-continue to compile and run without modification against new major
-releases (1.2.0 say) without modification.
-
-API additions
--------------
-The following new functions have been added to cairo's API:
-
- cairo_surface_get_content
- cairo_debug_reset_static_data
- cairo_image_surface_get_data
- cairo_image_surface_get_format
- cairo_image_surface_get_stride
- cairo_win32_font_face_create_for_hfont
-
-New, backend-specific pkg-config files
---------------------------------------
-In addition to the original cairo.pc file, cairo will also now install
-a pkg-config files for each configured backend, (for example
-cairo-pdf.pc, cairo-svg.pc, cairo-xlib.pc, cairo-win32.pc, etc.) this
-also includes optional font backends (such as cairo-ft.pc) and the
-optional png functionality (cairo-png.pc).
-
-These new pkg-config files should be very convenient for allowing
-cairo-using code to easily check for the existing of optional
-functionality in cairo without having to write complex rules to grub
-through cairo header files or the compiled library looking for
-symbols.
-
-Printing backend (PS, PDF, and SVG)
------------------------------------
-Improving the quality of the "printing" backends has been a priority
-of the development between cairo 1.1.6 and cairo 1.1.8.
-
-The big improvement here is in the area of text output. Previously, at
-best, text was output as paths without taking advantage of any font
-support available in the output file format.
-
-Now, at the minimum text paths will be shared by using type3 fonts
-(for PS and PDF---and similarly, defs for SVG). Also, if possible,
-type3 and truetype fonts will be embedded in PostScript and PDF
-output. There are still some known bugs with this, (for example,
-selecting text in a cairo-generated PDF file with an embedded truetype
-font does not work). So there will be some more changes in this area
-before cairo 1.2, but do try test this feature out as it exists so
-far.
-
-Many thanks to Kristian Høgsberg for the truetype and type1 font
-embedding.
-
-win32 backend
--------------
-Performance improvements by preferring GDI over pixman rendering when possible.
-Fixes for text rendering.
-
-xlib backend
-------------
-Fix potentially big performance bug by making xlib's create_similar
-try harder to create a pixmap of a depth matching that of the screen.
-
-Bug fixes
----------
-Among various other fixes, the following bugs listed in bugzilla have
-been fixed:
-
- Bug 2488: Patch to fix pixman samping location bug (#2488).
- https://bugs.freedesktop.org/show_bug.cgi?id=2488
-
- Bug 4196: undef MIN an MAX before defining to avoid duplicate definition
- https://bugs.freedesktop.org/show_bug.cgi?id=4196
-
- Bug 4723: configure.in: Fix m4 quoting when examining pkg-config version
- https://bugs.freedesktop.org/show_bug.cgi?id=4723
-
- Bug 4882: Flag Sun's X server has having buggy_repeat.
- https://bugs.freedesktop.org/show_bug.cgi?id=4882
-
- Bug 5306: test/pdf2png: Add missing include of stdio.h
- https://bugs.freedesktop.org/show_bug.cgi?id=5306
-
- Bug 7075: Fix make clean to remove cairo.def
- https://bugs.freedesktop.org/show_bug.cgi?id=7075
-
-(Many thanks to Behdad Esfahbod for helping us track down and fix many
-of these.)
-
-Snapshot 1.1.6 (2006-05-04 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the third in a series of snapshots working toward the imminent
-1.2 release of cairo. For a list of items still needing work on the
-cairo 1.2 roadmap, please see:
-
- http://cairographics.org/ROADMAP
-
-As can be seen in that list, there are no longer any API additions
-left on the roadmap. Instead, there is a feature (PDF type 3 fonts) a
-performance optimization (X server gradients) and a list of bug
-fixes. This gives us a fair amount of freedom to cut the 1.2 release
-at almost any point by deciding to defer remaining bug fixes to
-subsequent maintenance releases such as 1.2.2 and 1.2.4.
-
-Before we will do that, we must first be wiling to commit to all the
-new API additions. As a heads-up, there are a couple of potential API
-changes being considered. (Note that these are changes to new API
-introduced during 1.1 so these will not introduce API
-incompatibilities compared to the stable 1.0 series). The changes
-being considered are:
-
- cairo_get_group_target: may acquire x and y offset return
- parameters. May also be eliminated in favor of
- cairo_get_target assuming its role
-
- cairo_pdf_surface_set_dpi:
- cairo_ps_surface_set_dpi:
- cairo_svg_surface_set_dpi: These functions may be removed in favor
- of a new cairo_surface_set_fallback_resolution
-
-Additionally there is the possibility of a slight change in the
-semantics of cairo_set_line_width. We believe the current behavior of the sequence:
-
- cairo_set_line_width; ... change CTM ...; cairo_stroke;
-
-is buggy. It is currently behaving the same as:
-
- ... change CTM ...; cairo_set_line_width; cairo_stroke;
-
-We are considering fixing this bug before 1.2 with the hope that
-nobody is already relying on the buggy behavior described here. Do
-shout if you suspect you might be in that position.
-
-The items included in this snapshot (since the 1.1.4 snapshot) are
-described below.
-
-API additions
--------------
-The long-awaited group-rendering support is now available with the
-following function calls:
-
- cairo_push_group
- cairo_push_group_with_content
- cairo_pop_group
- cairo_pop_group_to_source
- cairo_get_group_target
-
-This API provides a much more convenient mechanism for doing rendering
-to an intermediate surface without the need to manually create a
-temporary cairo_surface_t and a temporary cairo_t and clean them up
-afterwards.
-
-Add the following missing get function to complement
-cairo_surface_set_device_offset:
-
- cairo_surface_get_device_offset
-
-PDF backend (API addition)
---------------------------
-The PDF backend now provides for per-page size changes, (similar to
-what the PostScript backend got in the 1.1.4 snapshot). The new API
-is:
-
- cairo_pdf_surface_set_size
-
-Xlib backend (API additions)
-----------------------------
-The following functions have been added to allow the extraction of
-Xlib surface:
-
- cairo_xlib_surface_get_display
- cairo_xlib_surface_get_drawable
- cairo_xlib_surface_get_screen
- cairo_xlib_surface_get_visual
- cairo_xlib_surface_get_depth
-
-XCB backend (experimental)
---------------------------
-Update backend so that it now compiles with the recent XCB 0.9 release.
-
-Bug fixes and memory leak cleanup
----------------------------------
-Various little things, nothing too significant though.
-
-Snapshot 1.1.4 (2006-05-03 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the second in a series of snapshots working toward the
-upcoming 1.2 release of cairo. For a list of items still needing work
-on the cairo 1.2 roadmap, please see:
-
- http://cairographics.org/ROADMAP
-
-The items included in this snapshot (since the 1.1.2 snapshot) are
-described below.
-
-PostScript backend: new printing-oriented API
----------------------------------------------
-We anticipate that with cairo 1.2, toolkits will begin to use cairo
-for printing on systems that use PostScript as the spool format. To
-support this use case, we have added 4 new function calls that are
-specific to the PostScript backend:
-
- cairo_ps_surface_set_size
- cairo_ps_surface_dsc_comment
- cairo_ps_surface_dsc_begin_setup
- cairo_ps_surface_dsc_begin_page_setup
-
-These functions allow variation of the page size/orientation from one
-page to the next in the PostScript output. They also allow the toolkit
-to provide per-document and per-page printer control options in a
-device-independent way, (for example, by using PPD options and
-emitting them as DSC comments into the PostScript output). This should
-allow toolkits to provide very fine-grained control of many options
-available in printers, (media size, media type, tray selection, etc.).
-
-SVG backend: builds by default, version control
------------------------------------------------
-The SVG backend continues to see major improvements. It is expected
-that the SVG backend will be a supported backend in the 1.2
-release. This backend will now be built by default if its dependencies
-(freetype and libxml2) are met.
-
-Additionally, the SVG backend now has flexibility with regard to what
-version of SVG it targets. It will target SVG 1.1 by default, which
-will require image fallbacks for some of the "fancier" cairo
-compositing operators. Or with the following new function calls:
-
- cairo_svg_surface_restrict_to_version
- cairo_svg_get_versions
- cairo_svg_version_to_string
-
-it can be made to target SVG 1.2 in which there is native support for
-these compositing operators.
-
-Bug fixes
----------
-At least the following bugs have been fixed since the 1.1.2 snapshot:
-
-crash at XRenderAddGlyphs
-https://bugs.freedesktop.org/show_bug.cgi?id=4705
-
-Can't build cairo-1.1.2 on opensolaris due to " void function cannot return value"
-https://bugs.freedesktop.org/show_bug.cgi?id=6792
-
-Missing out-of-memory check at gfx/cairo/cairo/src/cairo-atsui-font.c:185
-https://bugzilla.mozilla.org/show_bug.cgi?id=336129
-
-A couple of memory leaks.
-
-Snapshot 1.1.2 (2006-04-25 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is the first in a series of snapshots working toward the upcoming
-1.2 release of cairo. (Subsequent snapshot will use successive even
-numbers for the third digit, 1.1.4, 1.1.6, etc.) This snapshot is
-backwards-compatible with the 1.0 series---it makes a few API
-additions but does not remove any API.
-
-PostScript and PDF backends are no longer "experimental"
---------------------------------------------------------
-The major theme of the 1.2 release is improved PostScript and PDF
-backends for cairo. Unlike the 1.0 series, in the 1.2 series these
-backends will not be marked as experimental and will be enabled by
-default. We encourage people to test this snapshot and the PS/PDF
-backends in particular as much as possible.
-
-The PostScript and PDF output is not yet ideal.
-
- * One major problem with the PostScript output is that image
- fallbacks are used more often than strictly necessary, and the
- image fallbacks are at a lower resolution than desired, (the
- cairo_ps_surface_set_dpi call is ignored).
-
- * The major drawback of the current PDF backend implementation is
- its text support. Every glyph is represented by a filled path in
- the PDF file. The causes file sizes to be much larger and
- rendering to be much slower than desired.
-
-It is anticipated that both of these shortcomings will see some
-improvements before the final 1.2 release.
-
-In spite of those shortcomings, we hope that the PS and PDF backends
-will yield faithful results for pretty much any cairo operations you
-can throw at them. Please let us know if you are getting obviously
-"different" results from the PS/PDF backends than from the image or
-xlib backends.
-
-Other new experimental backends
--------------------------------
-This snapshot includes three new backends that did not exist in the
-1.0 series:
-
- * beos backend
-
- * directfb backend
-
- * svg backend
-
-These are all currently marked "experimental" and are disabled by
-default. But the SVG backend in particular has seen a lot of recent
-development and is very close to passing the entire cairo test
-suite. It is possible that this backend will become a fully supported
-backend by the time of the cairo 1.2 release.
-
-Public API additions
---------------------
-There have been a few new API functions added to cairo, including:
-
-New get_type functions for querying sub-types of object:
-
- cairo_surface_get_type
- cairo_pattern_get_type
- cairo_font_face_get_type
- cairo_scaled_font_get_type
-
-More convenience in working with cairo_scaled_font_t with new getter
-functions:
-
- cairo_scaled_font_get_font_face
- cairo_scaled_font_get_font_matrix
- cairo_scaled_font_get_ctm
- cairo_scaled_font_get_font_options
-
-As well as a convenience function for setting a scaled font into a
-cairo context:
-
- cairo_set_scaled_font
-
-and a function to allow text extents to be queried directly from a
-scaled font, (without requiring a cairo_surface_t or a cairo_t):
-
- cairo_scaled_font_text_extents
-
-These new scaled font functions were motivated by the needs of the
-pango library.
-
-Finally, a new path-construction function was added which clears the
-current point in preparation for a new sub path. This makes cairo_arc
-easier to use in some situations:
-
- cairo_new_sub_path
-
-Before the 1.2 release is final we do still plan a few more API
-additions specifically motivated by the needs of Mozilla/Firefox.
-
-Optimizations and bug fixes
----------------------------
-Shortly after the 1.0 maintenance series branched off the mainline
-there was a major rework of the cairo font internals. This should
-provide some good performance benefits, but it's also another area
-people should look at closely for potential regressions.
-
-There has not yet been any widespread, systematic optimization of
-cairo, but various performance improvements have been made, (and some
-of them are fairly significant). So if some things seem faster than
-1.0 then things are good. If there are any performance regressions
-compared to 1.0 then there is a real problem and we would like to hear
-about that.
-
-There has been a huge number of bug fixes---too many to mention in
-detail. Again, things should be better, and never worse compared to
-1.0. Please let us know if your testing shows otherwise.
-
-Release 1.0.2 (2005-10-03 Carl Worth <cworth@cworth.org>)
-=========================================================
-For each bug number XXXX below, see:
-
- https://bugs.freedesktop.org/show_bug.cgi?id=XXXX
-
-for more details.
-
-General bug fixes
------------------
- * 4408 - Add support for dashing of stroked curves
- (Carl Worth)
-
- * 4409 - Fix dashing so that each dash is capped on both ends
- (Carl Worth)
-
- * 4414 - Prevent SIGILL failures (proper use of -mmmx and -msse flags)
- (Sebastien Bacher, Billy Biggs)
-
- * 4299 - Fix crashes with text display in multi-threaded program
- (Alexey Shabalin, Carl Worth)
-
- * 4401 - Do not use sincos function since it is buggy on some platforms)
- (Tim Mooney, Carl Worth)
-
- * 4245 - Fix several bugs in the test suite exposed by amd64 systems
- (Seemant Kulleen, Carl Worth)
-
- * 4321 - Add missing byteswapping on GetImage/PutImage
- (Sjoerd Simons, Owen Taylor)
-
- * 4220 - Make the check for rectangular trapezoids simpler and more accurate
- (Richard Stellingwerff, Owen Taylor)
-
- * 4260 - Add missing channel-order swapping for antialised fonts
- (Barbie LeVile, Owen Taylor)
-
- * 4283 - Fix compilation failure with aggressive inlining (gcc -O3)
- (Marco Manfredini, Owen Taylor)
-
- * 4208 - Fix some warnings from sparse
- (Kjartan Maraas, Billy Biggs)
-
- * 4269 - Fix to not crash when compiled with -fomit-frame-pointer
- (Ronald Wahl, Owen Taylor)
-
- * 4263 - Improve performance for vertical gradients
- (Richard Stellingwerff, Owen Taylor)
-
- * 4231
- * 4298 - Accomodate gentoo and Mandriva versions in X server vendor string check
- (Billy Biggs, Frederic Crozat, Owen Taylor)
-
-win32-specific fixes
---------------------
- * 4599 - Fix "missing wedges" on some stroked paths (win32)
- (Tim Rowley, Jonathan Watt, Bertram Felgenhauer, Carl Worth, Keith Packard)
-
- * 4612 - Fix disappearing text if first character out of surface (win32)
- (Tim Rowley)
-
- * 4602 - Fix shutdown of cairo from failing intermediate, size-0 bitmaps (win32)
- Aka. the "white rectangles" bug from mozilla-svg testing
- (Tim Rowley)
-
- * Various portability improvements for win32
- (Hans Breuer, Owen Taylor, Carl Worth)
-
- * 4593 - Fix font sizes to match user expectations (win32)
- (Tor Lillqvist, Owen Taylor)
-
- * 3927 - Fix to report metrics of size 0 for glyph-not-available (win32)
- (Hans Breuer, Owen Taylor, Tor Lillqvist)
-
- * Add locking primitives for win32
- (Hans Breuer)
-
-xlib-specific fixes
--------------------
- * Fix crash from size-0 pixmap due to empty clip region (xlib)
- (Radek Doulík, Carl Worth)
-
-Release 1.0.0 (2005-08-24 Carl Worth <cworth@cworth.org>)
-=========================================================
-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-ps, --enable-pdf, --enable-quartz or --enable-xcb.
-
- 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 mutiple 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.
-
-Release 0.9.2 (2005-08-13 Carl Worth <cworth@cworth.org>)
-=========================================================
-Release numbering
------------------
- * You will notice that this release jumped from 0.9.0 to 0.9.2. We've
- decided to use an odd micro version number (eg. 0.9.1) to indicate
- in-progress development between releases. As soon as 0.9.2 is
- tagged, the version will be incremented in CVS to 0.9.3 where it
- will stay until just before 0.9.4 is built, uploaded, and tagged.
-
- So, even-micro == a released version, odd-micro == something in-between.
-
-Libpixman dependency dropped
-----------------------------
- * As of this release, the dependency on an external libpixman has
- been dropped. Instead, the code from libpixman needed for cairo has
- been incorporated into the cairo source tree. The motivation for
- this change is that while cairo's API is stable and ready to be
- maintained after the 1.0 release, libpixman's API is not, so we do
- not want to expose it at this time.
-
- Also, the incorporation of libpixman into cairo also renames all
- previously-public libpixman symbols in order to avoid any conflict
- with a future release of libpixman
-
-API additions
--------------
- * Macros and functions have been added so that the version of cairo
- can be queried at either compile-time or at run-time. The version
- is made available as both a human-readable string and as a single
- integer:
-
- CAIRO_VERSION_STRING eg. "0.9.2"
- CAIRO_VERSION eg. 000902
-
- const char*
- cairo_version_string (void); /* eg. "0.9.2" */
-
- int
- cairo_version (void); /* eg. 000902 */
-
- A macro is provided to convert a three-part component version into
- the encoded single-integer form:
-
- CAIRO_VERSION_ENCODE(X,Y,Z)
-
- For example, the CAIRO_VERSION value of 000902 is obtained as
- CAIRO_VERSION_ENCODE(0,9,2). The intent is to make version
- comparisons easy, either at compile-time:
-
- #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(0,9,2)
- ...
- #endif
-
- Or at run-time:
-
- if (cairo_version() >= CAIRO_VERSION_ENCODE(0,9,2)) { /* ... */ }
-
-Thread safety
--------------
- * This release adds pthread-based locking (when available) to make
- the caches used by cairo safe for threaded programs. Some may
- remember a failed experiment with this locking between the 0.5.1
- and 0.5.2 snapshots, (where even single-threaded programs that
- linked with -lpthread would deadlock). We believe that that problem
- has been fixed, so we are looking forward to testing and reports
- from users with threaded applications.
-
-Bug fixes
----------
- * The XCB and Quartz backends failed to compiled in the 0.9.0 release
- due to minor syntax errors. These have now been fixed.
-
- * Various crashes in glitz and pixman due to size 0 glyphs have been
- fixed.
-
-Release 0.9.0 (2005-08-08 Carl Worth <cworth@cworth.org>)
-=========================================================
-Soname change
--------------
- * In all prior snapshots, the libtool library versioning was set to
- 1:0:0. As this release is intended to mark the beginning of
- backwards-compatible releases, the versioning has been incremented
- to 2:0:0. You will notice that the numeric extension on the
- installed library filename will change similarly.
-
- This change will also require all cairo-using applications to be
- recompiled. We recognize that this may cause some frustration since
- this release is backwards-compatible with 0.6.0 and in that sense
- "shouldn't" require re-compilation. However, since all historical
- snapshots have used the same 1:0:0 version in spite of incompatible
- API changes between them, it was essential that the upcoming 1.0
- release series have distinct library versioning.
-
- All future releases will use the library versioning to properly
- indicate compatibility between releases. So, any application
- re-compiled now to work with the 0.9.0 will not need to be
- recompiled when a compatible 1.0 release of cairo is made in the
- future.
-
-API additions
--------------
- * Add new function calls to set/get the current antialiasing mode in
- the graphics state:
-
- cairo_set_antialias
- cairo_get_antialias
-
- This call accepts the same modes recently added for font options
- (NONE or GRAY) but affects the rendering of geometry other than
- text. The intent of this call is to enable more precise control of
- which pixels are affected by each operation, for example to allow
- for full-scene antialiasing for seam-free rendering. It is not
- expected that non-antialiased rendering will perform better than
- anti-aliased rendering.
-
- * Three new functions were added to provide support for mixed cairo-
- and non-cairo drawing to the same surface:
-
- cairo_surface_mark_dirty
- cairo_surface_mark_dirty_rectangle
- cairo_surface_flush
-
- * The return type of the several "reference" functions was change,
- (API compatibly), from void to the same type as the argument. The
- affected functions are:
-
- cairo_font_face_reference
- cairo_scaled_font_reference
- cairo_pattern_reference
- cairo_surface_reference
- cairo_reference
-
- This allows a convenient way to assign and reference in a single
- statement.
-
-Semantic changes
-----------------
- * The behavior of cairo_set_source with a pattern with a non-identity
- matrix was previously not well-defined. The new behavior is as
- follows:
-
- The pattern's transformation matrix will be locked to the
- user space in effect at the time of cairo_set_source(). This means
- that further modifications of the CTM will not affect the source
- pattern.
-
-cairo-win32
------------
- * Some portability improvements, (eg. workaround for missing stdint.h).
-
-cairo-ft
---------
- * Updated to allow compilation with older versions of freetype.
-
-Bug fixes
----------
- * Fix the unbounded operators to actually produce a correct result,
- (previously the results were artificially restricted to the
- bounding box of whatever shape was being drawn rather than
- extending out infinitely). The fixed operators are:
-
- CAIRO_OPERATOR_CLEAR
- CAIRO_OPERATOR_SOURCE
- CAIRO_OPERATOR_OUT
- CAIRO_OPERATOR_IN
- CAIRO_OPERATOR_DEST_IN
- CAIRO_OPERATOR_DEST_ATOP
-
- * Fix cairo_mask and cairo_mask_surface to transform the mask by the
- current transformation matrix (CTM).
-
- * Fix cairo_set_source to lock the CTM used to transform the pattern.
-
- * Workaround for X server Render bug involving repeating patterns
- with a general transformation matrix.
-
- * cairo_get_font_face fixed to return a "nil" font face object rather
- than NULL on error.
-
- * cairo_set_font_face fixed to not crash if given a NULL font face,
- (which is the documented interface for restoring the default font
- face).
-
- * Fix xlib glyphset caching to not try to free a NULL glyph.
-
-Snapshot 0.6.0 (2005-07-28 Carl Worth <cworth@cworth.org>)
-==========================================================
-API changes
------------
-* The prototypes of the following functions have changed:
-
- cairo_xlib_surface_create_with_xrender_format
- cairo_xlib_surface_create_for_bitmap
-
- A Screen* parameter has been added to each. This allows the cairo
- xlib backend to work correctly with multi-head X servers.
-
-* The following function has been modified:
-
- cairo_scaled_font_create
-
- to accept a cairo_font_options_t*. See below fore more details.
-
-* All opaque, reference-counted cairo objects have now been moved to a
- standard error-handling scheme. The new objects to receive this
- treatment are cairo_font_face_t, cairo_scaled_font_t, and
- cairo_surface_t. (Previous snapshots already provided this scheme
- for cairo_t, cairo_path_t, and cairo_pattern_t.)
-
- This changes two functions to have a return type of void rather than
- cairo_status_t:
-
- cairo_scaled_font_extent
- cairo_surface_finish
-
- And significantly, none of the create functions for any of the
- objects listed above will return NULL. The pointer returned from any
- function will now always be a valid pointer and should always be
- passed to the corresponding destroy function when finished
-
- The simplest strategy for porting code is to switch from:
-
- object = cairo_<object>_create ();
- if (object == NULL)
- goto BAILOUT;
-
- /* act on object */
-
- cairo_<object>_destroy (object);
-
- to:
-
- object = cairo_<object>_create ();
- if (cairo_<object>_status (object))
- goto BAILOUT;
-
- /* act on object */
-
- cairo_<object>_destroy (object);
-
- But significantly, it is not required to check for an error status
- before the "act on object" portions of the code above. All
- operations on an object with an error status are, by definition,
- no-ops without side effect. So new code might be written in an
- easier-to-read style of:
-
- object = cairo_<object>_create ();
-
- /* act on object */
-
- cairo_<object>_destroy (object);
-
- with cairo_<object>_status checks placed only at strategic
- locations. For example, passing an error object to another object,
- (eg. cairo_set_source with an in-error pattern), will propagate the
- error to the subsequent object (eg. the cairo_t). This means that
- error checking can often be deferred even beyond the destruction of
- a temporary object.
-
-API additions
--------------
-* New functions for checking the status of objects that have been
- switched to the common error-handling scheme:
-
- cairo_font_face_status
- cairo_scaled_font_status
- cairo_surface_status
-
-* The _cairo_error function which was added in 0.5.1 has now been made
- much more useful. In 0.5.1 only errors on cairo_t objects passed
- through _cairo_error. Now, an error on any object should pass
- through _cairo_error making it much more reliable as a debugging
- mechanism for finding when an error first occurs.
-
-* Added new font options support with a myriad of functions:
-
- cairo_font_options_create
- cairo_font_options_copy
- cairo_font_options_destroy
-
- cairo_font_options_status
-
- cairo_font_options_merge
- cairo_font_options_equal
- cairo_font_options_hash
-
- cairo_font_options_set_antialias
- cairo_font_options_get_antialias
- cairo_font_options_set_subpixel_order
- cairo_font_options_get_subpixel_order
- cairo_font_options_set_hint_style
- cairo_font_options_get_hint_style
- cairo_font_options_set_hint_metrics
- cairo_font_options_get_hint_metrics
-
- cairo_surface_get_font_options
-
- cairo_ft_font_options_substitute
-
- cairo_set_font_options
- cairo_get_font_options
-
- This new font options support allows the application to have much
- more fine-grained control over how fonts are rendered.
- Significantly, it also allows surface backends to have some
- influence over the process. For example, the xlib backend now
- queries existing Xft properties to set font option defaults.
-
-* New function:
-
- cairo_xlib_surface_set_drawable
-
- which allows the target drawable for an xlib cairo_surface_t to be
- changed to another with the same format, screen, and display. This
- is necessary in certain double-buffering techniques.
-
-New features
-------------
-* Sub-pixel text antialiasing is now supported.
-
-Bug fixes
----------
-* Fixed assertion failure in cairo_surface_create_similar when
- application commits an error by passing a cairo_format_t rather than
- a cairo_content_t.
-
-* Avoid division by zero in various places (cairo-ft).
-
-* Fix infinite loop when using non-default visuals (cairo-xlib).
-
-* Eliminate segfault in cairo_image_surface_create_from_png_stream.
-
-* Prevent errant sign-extension of masks on 64-bit architectures
- (cairo-xlib and cairo-xcb).
-
-* Other miscellaneous fixes.
-
-Snapshot 0.5.2 (2005-07-18 Carl Worth <cworth@cworth.org>)
-==========================================================
-API changes
------------
-* New functions for creating patterns of a single color:
-
- cairo_pattern_create_rgb
- cairo_pattern_create_rgba
-
-* Change cairo_surface_create_similar to accept a new type of
- cairo_content_t rather than cairo_format_t:
-
- typedef enum _cairo_content {
- CAIRO_CONTENT_COLOR = 0x1000,
- CAIRO_CONTENT_ALPHA = 0x2000,
- CAIRO_CONTENT_COLOR_ALPHA = 0x3000
- } cairo_content_t;
-
-* Add new CAIRO_FORMAT_VALID and CAIRO_CONTENT_VALID macros.
-
-* Remove unused status value:
-
- CAIRO_STATUS_NO_TARGET_SURFACE
-
-* Add new status values:
-
- CAIRO_STATUS_INVALID_STATUS
-
-* Require libpixman >= 0.1.5 (for necessary bug fixes)
-
-Bug fixes
----------
-* Fix cairo_surface_write_to_png for RGB24 images.
-
-* Fix broken metrics and rendering for bitmap fonts. Add mostly
- useless bitmap glyph transformation.
-
-* Fix glyph caches to not eject entries that might be immediately
- needed, (fixing intermittent crashes when rendering text).
-
-* Fix all memory leaks found by running "make check-valgrind".
-
-ATSUI backend changes
----------------------
-* Allow building against < 10.3 SDK.
-
-* Prevent crash on empty strings.
-
-Glitz backend changes
----------------------
-* Require glitz >= 0.4.4.
-
-* Use frame buffer objects instead of pbuffers for accelerated
- offscreen drawing.
-
-* Minor improvement to gradient pattern creation.
-
-PostScript backend fixes
-------------------------
-* Rewrite of the PS backend to generate more interesting output that
- the old big-image implementation.
-
-Win32 backend fixes
--------------------
-* Implement glyph path support.
-
-* Fix swap of blue and green values in the fill_rectangles path.
-
-Xlib backend fixes
-------------------
-* Add optimization to use XCopyArea rather than XRenderComposite when
- transforming only with an integer translation, and using SOURCE
- operator or OVER with a source pattern without alpha.
-
-Snapshot 0.5.1 (2005-06-20 Carl Worth <cworth@cworth.org>)
-==========================================================
-API changes
------------
-* Removed cairo_status_string(cairo_t*) and add
- cairo_status_to_string(cairo_status_t) in its place. Code using
- cairo_status_string can be ported forward as follows:
-
- cairo_status (cr);
- ->
- cairo_status_to_string (cairo_status (cr));
-
-* Removed the BAD_NESTING restriction which means that two different
- cairo_t objects can now interleave drawing to the same
- cairo_surface_t without causing an error.
-
-* The following functions which previously had a return type of
- cairo_status_t now have a return type of void:
-
- cairo_pattern_add_color_stop_rgba
- cairo_pattern_set_matrix
- cairo_pattern_get_matrix
- cairo_pattern_set_extend
- cairo_pattern_set_filter
-
- See discussion of cairo_pattern_status below for more details.
-
-API additions
--------------
-* Improved error handling:
-
- cairo_status_t
- cairo_pattern_status (cairo_pattern_t *pattern);
-
- This snapshot expands the status-based error handling scheme from
- cairo_t to cairo_path_t and cairo_pattern_t. It also expands the
- scheme so that object-creating functions, (cairo_create,
- cairo_pattern_create_*, cairo_copy_path_*), are now guaranteed to
- not return NULL. Instead, in the case of out-of-memory these
- functions will return a static object with
- status==CAIRO_STATUS_NO_MEMORY. The status can be checked with the
- functions cairo_status and cairo_pattern_status, or by direct
- inspection of the new status field in cairo_path_t.
-
- Please note that some objects, including cairo_surface_t and all of
- the font-related objects have not been converted to this
- error-handling scheme.
-
-* In addition to the above changes, a new private function has been added:
-
- _cairo_error
-
- This function can be used to set a breakpoint in a debugger to make
- it easier to find programming error in cairo-using code. (Currently,
- _cairo_error is called when any error is detected within a cairo_t
- context, but is not called for non-cairo_t errors such as for
- cairo_path_t and cairo_pattern_t).
-
-* Fixed cairo_path_data_t so that its enum is visible to C++ code, (as
- cairo_path_data_type_t).
-
-Performance improvements
-------------------------
-* Made a minor performance improvement for clipping, (restrict clip
- surface to the new intersected bounds).
-
-* Optimize rendering of a solid source pattern with a pixel-aligned
- rectangular path to use backend clipping rather than rasterization
- and backend compositing.
-
-* Optimize cairo_paint_with_alpha to defer to cairo_paint when alpha
- is 1.0.
-
-Bug fixes
----------
-* Fixed memory leak in cairo_copy_path.
-
-* A build fix for non-srcdir builds.
-
-PDF backend fixes
------------------
-* New support for path-based clipping.
-
-* Fix for text rotated to angles other than multiples of π/2.
-
-Win32 backend fixes
--------------------
-* Fix for text extents.
-
-Xlib backend
-------------
-* Implemented a complex workaround for X server bug[*] related to
- Render-based compositing with untransformed, repeating source
- pictures. The workaround uses core Xlib when possible for
- performance, (ie. with CAIRO_OPERATOR_SOURCE or CAIRO_OPERATOR_OVER
- with an opaque source surface), and falls back to the pixman
- image-based compositing otherwise.
-
- [*] https://bugs.freedesktop.org/show_bug.cgi?id=3566
-
-* Various bug fixes, particularly in the fallback paths.
-
-Snapshot 0.5.0 (2005-05-17 Carl Worth <cworth@cworth.org>)
-==========================================================
-This is a pretty big, and fairly significant snapshot. It represents
-between 2 and 3 months of solid work from a lot of people on improving
-the API as much as possible. I'd like to express my appreciation and
-congratulations to everyone who has worked on the big API Shakeup,
-(whether in email battles over names, or fixing my silly bugs).
-
-This snapshot will require some effort on the part of users, since
-there are a _lot_ of API changes (ie. no cairo program ever written is
-safe --- they're all broken now in at least one way). But, in spite of
-that, we do encourage everyone to move their code to this snapshot as
-soon as possible. And we're doing everything we can think of to make
-the transition as smooth as possible.
-
-The idea behind 0.5 is that we've tried to make every good API change
-we could want now, and get them all done with. That is, between now
-and the 1.0 release of cairo, we expect very few new API changes,
-(though some will certainly sneak in). We will have some significant
-additions, but the pain of moving code from cairo 0.4 to cairo 0.5
-should be a one time experience, and things should be much smoother as
-we continue to move toward cairo 1.0.
-
-And with so many changes coming out for the first time in this 0.5
-release, we really do need a lot of people trying this out to make
-sure the ideas are solid before we freeze the API in preparation for
-the 1.0 release.
-
-OK, enough introduction. Here is a (not-quite-complete) description of
-the API removals, changes and additions in this snapshot, (compared to
-0.4.0)
-
-API removals
-============
-The following public functions have been removed:
-
-- cairo_set_target_*
-
- This is a big change. See the description of cairo_create in
- the API changes section for how to deal with this.
-
-- cairo_set_alpha
-
- Alpha blending hasn't gone away; there's just a much more
- unified rendering model now. Almost all uses of
- cairo_set_alpha will be trivially replaced with
- cairo_set_source_rgba and a few others will be replaced just
- as easily with cairo_paint_with_alpha.
-
-- cairo_show_surface
-
- Another useful function that we realized was muddling up the
- rendering model. The replacement is quite easy:
- cairo_set_source_surface and cairo_paint.
-
-- cairo_matrix_create
-- cairo_matrix_destroy
-- cairo_matrix_copy
-- cairo_matrix_get_affine
-
- These functions supported an opaque cairo_matrix_t. We now
- have an exposed cairo_matrix_t structure, so these can be
- dropped.
-
-- cairo_surface_set_repeat
-- cairo_surface_set_matrix
-- cairo_surface_set_filter
-
- These properties don't belong on surfaces. If you were using
- them, you'll just want to instead use
- cairo_pattern_create_for_surface and then set these properties
- on the pattern.
-
-- cairo_copy
-
- This was a confusing function and hopefully nobody will miss
- it. But if you really don't find cairo_save/restore adequate,
- let us know and we have another idea for a potential
- replacement.
-
-And while we're on the subject of removals, we carefully tightened up
-the cairo header files so they no longer gratuitously include header
-files that are not strictly necessary, (stdio.h, stdint.h, pixman.h,
-Xrender.h, etc. and their dependencies). This may lead to some
-surprising errors, so keep your eyes open for that.
-
-API changes
-===========
-Here are some of the API changes that have occurred:
-
-~ cairo_create(void) -> cairo_create(cairo_surface_t *)
-
- This is the big change that breaks every program. The ability
- to re-target a cairo_t was not particularly useful, but it did
- introduce a lot of muddy semantic questions. To eliminate
- that, cairo_create now requires its target surface to be
- passed in at creation time. This isn't too hard to cope with
- as the typical first operation after cairo_create was often
- cairo_set_target_foo. So the order of those two swap and the
- application instead has cairo_foo_surface_create, then
- cairo_create.
-
-~ cairo_current_* -> cairo_get_*
-
- We had a strange mixture of cairo_get and cairo_current
- functions. They've all been standardized on cairo_get, (though
- note one is cairo_get_current_point).
-
-~ CAIRO_OPERATOR_SRC -> CAIRO_OPERATOR_SOURCE
-~ CAIRO_OPERATOR_OVER_REVERSE -> CAIRO_OPERATOR_DEST_OVER
-
- Many of the cairo_operator_t symbolic values were renamed to
- reduce the amount of abbreviation. The confusing "OP_REVERSE"
- naming was also changed to use "DEST_OP" instead which is
- easier to read and has wider acceptance in other
- libraries/languages.
-
-~ cairo_set_pattern -> cairo_set_source
-~ cairo_set_rgb_color -> cairo_set_source_rgb
-
- All of the various functions that changed the source
- color/pattern were unified to use cairo_set_source names to
- make the relation more clear.
-
-~ cairo_transform_point -> cairo_user_to_device
-~ cairo_transform_distance -> cairo_user_to_device_distance
-~ cairo_inverse_transform_point -> cairo_device_to_user
-~ cairo_inverse_transform_distance -> cairo_device_to_user_distance
-
- These names just seemed a lot more clear.
-
-~ cairo_init_clip -> cairo_reset_clip
-~ cairo_concat_matrix -> cairo_transform
-
- More abbreviation elimination
-
-~ cairo_current_path -> cairo_copy_path
-~ cairo_current_path_flat -> cairo_copy_path_flat
-
- The former mechanism for examining the current path was a
- function that required 3 or 4 callbacks. This was more
- complexity than warranted in most situations. The new
- cairo_copy_path function copies the current path into an
- exposed data structure, and the documentation provides a
- convenient idiom for navigating the path data.
-
-API additions
--------------
-+ cairo_paint
-
- A generalized version of the painting operators cairo_stroke
- and cairo_fill. The cairo_paint call applies the source paint
- everywhere within the current clip region. Very useful for
- clearing a surface to a solid color, or painting an image,
- (see cairo_set_source_surface).
-
-+ cairo_paint_with_alpha
-
- Like cairo_paint but applying some alpha to the source,
- (making the source paint translucent, eg. to blend an image on
- top of another).
-
-+ cairo_mask
-
- A more generalized version of cairo_paint_with_alpha which
- allows a pattern to specify the amount of translucence at each
- point rather than using a constant value everywhere.
-
-+ cairo_mask_surface
-
- A convenience function on cairo_mask for when the mask pattern
- is already contained within a surface.
-
-+ cairo_surface_set_user_data
-+ cairo_surface_get_user_data
-+ cairo_font_face_set_user_data
-+ cairo_font_face_get_user_data
-
- Associate arbitrary data with a surface or font face for later
- retrieval. Get notified when a surface or font face object is
- destroyed.
-
-+ cairo_surface_finish
-
- Allows the user to instruct cairo to finish all of its
- operations for a given surface. This provides a safe point for
- doing things such as flushing and closing files that the
- surface may have had open for writing.
-
-+ cairo_fill_preserve
-+ cairo_stroke_preserve
-+ cairo_clip_preserve
-
- One interesting change in cairo is that the path is no longer
- part of the graphics state managed by
- cairo_save/restore. This allows functions to construct paths
- without interfering with the graphics state. But it prevents
- the traditional idiom for fill-and-stroke:
-
- cairo_save; cairo_fill; cairo_restore; cairo_stroke
-
- Instead we know have alternate versions cairo cairo_fill,
- cairo_stroke, and cairo_clip that preserve the current path
- rather than consuming it. So the idiom now becomes simply:
-
- cairo_fill_preserve; cairo_stroke
-
-+ cairo_surface_write_to_png
-+ cairo_surface_write_to_png_stream
-
- In place of a single PNG backend, now a surface created
- through any backend (except PDF currently) can be written out
- to a PNG image.
-
-+ cairo_image_surface_create_from_png
-+ cairo_image_surface_create_from_png_stream
-
- And its just as easy to load a PNG image into a surface as well.
-
-+ cairo_append_path
-
- With the new, exposed path data structure, it's now possible
- to append bulk path data to the current path, (rather than
- issuing a long sequence of cairo_move_to/line_to/curve_to
- function calls).
-
-Xlib and XCB backends
----------------------
-
-Any cairo_format_t and Colormap arguments have been dropped from
-cairo_xlib_surface_create. There are also two new
-cairo_xlib|xcb_surface_create functions:
-
- cairo_xlib|xcb_surface_create_for_bitmap
- (Particular for creating A1 surfaces)
- cairo_xlib|xcb_surface_create_with_xrender_format
- (For any other surface types, not described by a Visual*)
-
-All of these surface create functions now accept width and height. In
-addition, there are new cairo_xlib|xcb_surface_set_size functions
-which must be called each time a window that is underlying a surface
-changes size.
-
-Print backends (PS and PDF)
----------------------------
-The old FILE* based interfaces have been eliminated. In their place we
-have two different functions. One accepts a simple const char
-*filename. The other is a more general function which accepts a
-callback write function and a void* closure. This should allow the
-flexibility needed to hook up with various stream object in many
-languages.
-
-In addition, when specifying the surface size during construction, the
-units are now device-space units (ie. points) rather than inches. This
-provides consistency with all the other surface types and also makes
-it much easier to reason about the size of the surface when drawing to
-it with the default identity matrix.
-
-Finally, the DPI parameters, which are only needed to control the
-quality of fallbacks, have been made optional. Nothing is required
-during surface_create (300 DPI is assumed) and
-cairo_ps|pdf_surface_set_dpi can be used to set alternate values if
-needed.
-
-Font system
------------
-Owen very graciously listened to feedback after the big font rework he
-had done for 0.4, and came up with way to improve it even more. In 0.4
-there was a cairo_font_t that was always pre-scaled. Now, there is an
-unscaled cairo_font_face_t which is easier to construct, (eg. no
-scaling matrix required) and work with, (it can be scaled and
-transformed after being set on the graphics state). And the font size
-manipulation functions are much easier. You can set an explicit size
-and read/modify/write the font matrix with:
-
- cairo_set_font_size
- cairo_get_font_matrix
- cairo_set_font_matrix
-
-(Previously you could only multiply in a scale factor or a matrix.) A
-pleasant side effect is that we can (and do) now have a default font
-size that is reasonable, as opposed to the old default height of one
-device-space unit which was useless until scaled.
-
-Of course, the old pre-scaled font had allowed some performance
-benefits when getting many metrics for a font. Those benefits are
-still made available through the new cairo_scaled_font_t. And a
-cairo_font_face_t can be "promoted" to a cairo_scaled_font_t by
-suppling a font_matrix and the desired CTM.
-
-Quartz backend
---------------
-Tim Rowley put in the work to bring the Quartz backend back after it
-had been disabled in the 0.4.0 snapshot. He was not able to bring back
-the function that allows one to create a cairo_font_t from an ATSUI
-style:
-
- cairo_font_t *
- cairo_atsui_font_create (ATSUStyle style);
-
-because he didn't have a test case for it. If you care about this
-function, please provide a fairly minimal test and we'll try to bring
-it back in an upcoming snapshot.
-
-Snapshot 0.4.0 (2005-03-08 Carl Worth <cworth@cworth.org>)
-==========================================================
-New documentation
------------------
-Owen Taylor has converted cairo's documentation system to gtk-doc and
-has begun some long-needed work on the documentation, which can now be
-viewed online here:
-
- http://cairographics.org/manual/
-
-New backend: win32
-------------------
-This is the first snapshot to include a functional win32 backend,
-(thanks to Owen Taylor). The interface is as follows:
-
- #include <cairo-win32.h>
-
- void
- cairo_set_target_win32 (cairo_t *cr,
- HDC hdc);
-
- cairo_surface_t *
- cairo_win32_surface_create (HDC hdc);
-
- cairo_font_t *
- cairo_win32_font_create_for_logfontw (LOGFONTW *logfont,
- cairo_matrix_t *scale);
-
- cairo_status_t
- cairo_win32_font_select_font (cairo_font_t *font,
- HDC hdc);
-
- void
- cairo_win32_font_done_font (cairo_font_t *font);
-
- double
- cairo_win32_font_get_scale_factor (cairo_font_t *font);
-
-And see also the documentation at:
-
-http://cairographics.org/manual/cairo-Microsoft-Windows-Backend.html
-
-Disabled backend: quartz
-------------------------
-Unfortunately, the quartz backend code is currently out of date with
-respect to some recent backend interface changes. So, the quartz
-backend is disabled in this snapshot.
-
-If the quartz backend is brought up-to-date before the next snapshot,
-we would be glad to make a 0.4.1 snapshot that re-enables it, (we do
-not expect many more big backend interface changes).
-
-API Changes
------------
-The font system has been revamped, (as Owen Taylor's work with
-integrating pango and cairo gave us the first serious usage of the
-non-toy font API).
-
-One fundamental, user-visible change is that the cairo_font_t object
-now represents a font that is scaled to a particular device
-resolution. Further changes are described below.
-
- cairo.h
- -------
- Removed cairo_font_set_transform and cairo_font_current_transform.
-
- Added cairo_font_extents and cairo_font_glyph_extents. See
- documentation for details:
-
- http://cairographics.org/manual/cairo-cairo-t.html#cairo-font-extents
-
- cairo-ft.h
- ----------
- The cairo_ft_font API changed considerably. Please see the
- documentation for details:
-
- http://cairographics.org/manual/cairo-FreeType-Fonts.html
-
-Performance
------------
-Make the fast-path clipping (pixel-aligned rectangles) faster.
-
-Add optimization for applying a constant alpha to a pattern.
-
-Optimize gradients that are horizontal or vertical in device space.
-
-Xlib: When RENDER is not available, use image surfaces for
-intermediate surfaces rather than xlib surfaces.
-
-Backend-specific changes
-------------------------
- Glitz
- -----
- Major update to glitz backend. The output quality should now be just
- as good as the image and xlib backends.
-
- Track changes to glitz 0.4.0.
-
- PDF
- ---
- Various improvements to produce more conformant output.
-
-Internals
----------
-David Reveman contributed a large re-work of the cairo_pattern_t
-implementation, providing cleaner code and more optimization
-opportunities.
-
- Backend interface changes
- -------------------------
- Rework backend interface to accept patterns, not surfaces for source
- and mask.
-
- Remove set_matrix, set_filter, and set_repeat functions.
-
- More sophisticated backend interface for image fallbacks,
- ({acquire,release}_{source,dest}_image() and clone_similar).
-
-Bug fixes
----------
-Only install header files for backends that have been compiled.
-
-Fixed some rounding errors leading to incorrectly placed glyphs.
-
-Many other minor fixes.
-
-Snapshot 0.3.0 (2005-01-21 Carl Worth <cworth@cworth.org>)
-==========================================================
-Major API changes
------------------
-1) The public header files will no longer be directly installed into
- the system include directory. They will now be installed in a
- subdirectory named "cairo", (eg. in /usr/include/cairo rather than
- in /usr/include).
-
- As always, the easiest way for applications to discover the
- location of the header file is to let pkg-config generate the
- necessary -I CFLAGS and -L/-l LDFLAGS. For example:
-
- cc `pkg-config --cflags --libs cairo` -o foo foo.c
-
- IMPORTANT: Users with old versions of cairo installed will need to
- manually remove cairo.h and cairo-features.h from the
- system include directories in order to prevent the old
- headers from being used in preference to the new ones.
-
-2) The backend-specific portions of the old monolithic cairo.h have
- been split out into individual public header files. The new files
- are:
-
- cairo-atsui.h
- cairo-ft.h
- cairo-glitz.h
- cairo-pdf.h
- cairo-png.h
- cairo-ps.h
- cairo-quartz.h
- cairo-xcb.h
- cairo-xlib.h
-
- Applications will need to be modified to explicitly include the new
- header files where appropriate.
-
-3) There are two new graphics backends in this snapshot, a PDF
- backend, and a Quartz backend. There is also one new font backend,
- ATSUI.
-
-PDF backend
------------
-Kristian Høgsberg has contributed a new backend to allow cairo-based
-applications to generate PDF output. The interface for creating a PDF
-surface is similar to that of the PS backend, as can be seen in
-cairo-pdf.h:
-
- void
- cairo_set_target_pdf (cairo_t *cr,
- FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
-
- cairo_surface_t *
- cairo_pdf_surface_create (FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
-
-Once a PDF surface has been created, applications can draw to it as
-any other cairo surface.
-
-This code is still a bit rough around the edges, and does not yet
-support clipping, surface patterns, or transparent gradients. Text
-only works with TrueType fonts at this point and only black text is
-supported. Also, the size of the generated PDF files is currently
-quite big.
-
-Kristian is still actively developing this backend, so watch this
-space for future progress.
-
-Quartz backend
---------------
-Calum Robinson has contributed a new backend to allow cairo
-applications to target native Mac OS X windows through the Quartz
-API. Geoff Norton integrated this backend into the current
-configure-based build system, while Calum also provided Xcode build
-support in the separate "macosx" module available in CVS.
-
-The new interface, available in cairo-quartz.h, is as follows:
-
- void
- cairo_set_target_quartz_context (cairo_t *cr,
- CGContextRef context,
- int width,
- int height);
-
- cairo_surface_t *
- cairo_quartz_surface_create (CGContextRef context,
- int width,
- int height);
-
-There is an example program available in CVS in cairo-demo/quartz. It
-is a port of Keith Packard's fdclock program originally written for
-the xlib backend. A screenshot of this program running on Mac OS X is
-available here:
-
- http://cairographics.org/~cworth/images/fdclock-quartz.png
-
-ATSUI font backend
-------------------
-This new font backend complements the Quartz backend by allowing
-applications to use native font selection on Mac OS X. The interface
-is a single new function:
-
- cairo_font_t *
- cairo_atsui_font_create (ATSUStyle style);
-
-Minor API changes
------------------
-Prototype for non-existent function "cairo_ft_font_destroy" removed.
-
-Now depends on libpixman 0.1.2 or newer, (0.1.3 is being released
-concurrently and has some useful performance improvements).
-
-Default paint color is now opaque black, (was opaque white). Default
-background color is transparent (as before).
-
-Renamed "struct cairo" to "struct _cairo" to free up the word "cairo"
-from the C++ identifier name space.
-
-Functions returning multiple return values through provided pointers,
-(cairo_matrix_get_affine, cairo_current_point, and
-cairo_current_color_rgb), will now accept NULL for values the user
-wants to ignore.
-
-CAIRO_HAS_FREETYPE_FONT has now been renamed to CAIRO_HAS_FT_FONT.
-
-Performance improvements
-------------------------
-Alexander Larsson provided some fantastic performance improvements
-yielding a 10000% performance improvement in his application, (when
-also including his performance work in libpixman-0.1.3). These include
-
- * Fixed handling of cache misses.
-
- * Creating intermediate clip surfaces at the minimal size required.
-
- * Eliminating roundtrips when creating intermediate Xlib surfaces.
-
-Implementation
---------------
-Major re-work of font metrics system by Keith Packard. Font metrics
-should now be much more reliable.
-
-Glitz backend
--------------
-Updated for glitz-0.3.0.
-Bug fixes in reference counting.
-
-Test suite
-----------
-New tests for cache crashing, rotating text, improper filling of
-complex polygons, and leaky rasterization.
-
-Bug fixes
----------
-Fixed assertion failure when selecting the same font multiple times in
-sequence.
-
-Fixed reference counting so cache_destroy functions work.
-
-Remove unintended copyright statement from files generated with
-PostScript backend.
-
-Fixed to eliminate new warnings from gcc 3.4 and gcc 4.
-
-Snapshot 0.2.0 (2004-10-27 Carl Worth <cworth@cworth.org>)
-===========================================================
-New license: LGPL/MPL
----------------------
-The most significant news with this release is that the license of
-cairo has changed. It is now dual-licensed under the LGPL and the
-MPL. For details see the COPYING file as well as COPYING-LGPL-2.1 and
-COPYING-MPL-1.1.
-
-I express my thanks to everyone involved in the license change process
-for their patience and support!
-
-New font and glyph internals
-----------------------------
-Graydon Hoare has put a tremendous amount of work into new internals
-for handling fonts and glyphs, including caches where appropriate.
-This work has no impact on the user-level API, but should result in
-great performance improvements for applications using text.
-
-New test suite
---------------
-This snapshot of cairo includes a (small) test suite in
-cairo/test. The tests can be run with "make check". The test suite was
-designed to make it very easy to add new tests, and we hope to see
-many contributions here. As you find bugs, please try adding a minimal
-test case to the suite, and submit it with the bug report to the
-cairo@cairographics.org mailing list. This will make it much easier
-for us to track progress in fixing bugs.
-
-New name for glitz backend
---------------------------
-The gl backend has now been renamed to the glitz backend. This means
-that the following names have changed:
-
- CAIRO_HAS_GL_SURFACE -> CAIRO_HAS_GLITZ_SURFACE
- cairo_set_target_gl -> cairo_set_target_glitz
- cairo_gl_surface_create -> cairo_glitz_surface_create
-
-This change obviously breaks backwards compatibility for applications
-using the old gl backend.
-
-Up-to-date with latest glitz snapshots
---------------------------------------
-This snapshot of cairo is now up to date with the latest glitz
-snapshot, (currently 0.2.3). We know that the latest cairo and glitz
-snapshots have been incompatible for a very long time. We've finally
-fixed that now and we're determined to not let that happen again.
-
-Revert some tessellation regression bugs
-----------------------------------------
-People that have been seeing some tessellation bugs, (eg. leaked
-fills), in the CVS version of cairo may have better luck with this
-release. A change since the last snapshot was identified to trigger
-some of these bugs and was reverted before making the snapshot. The
-behavior should be the same as the previous (0.1.23) snapshot.
-
-Miscellaneous changes
----------------------
-Changed CAIRO_FILTER_DEFAULT to CAIRO_FILTER_BEST to make gradients
-easier.
-
-Track XCB API change regarding iterators.
-
-Various bug fixes
------------------
-Fix calculation of required number of vertices for pen.
-
-Fix to avoid zero-dimensioned pixmaps.
-
-Fix broken sort of pen vertices.
-
-Fix bug when cairo_show_text called with a NULL string.
-
-Fix clipping bugs.
-
-Fix bug in computing image length with XCB.
-
-Fix infinite loop bug in cairo_arc.
-
-Fix memory management interactions with libpixman.
-
-Snapshot 0.1.23 (2004-05-11 Carl Worth <cworth@isi.edu>)
-========================================================
-Fixes for gcc 3.4
------------------
-Fix prototype mismatches so that cairo can be built by gcc 3.4.
-
-Updates to track glitz
-----------------------
-Various fixes to support the latest glitz snapshot (0.1.2).
-
-Gradient updates
-----------------
-Radial gradients now support both inner and outer circles.
-Transformed linear gradients are now properly handled.
-Fixes for extend type reflect.
-
-Glitz updates
--------------
-Converted shading routines to use fixed point values and introduced a
-shading operator structure for more efficient shading calculations.
-Support compositing with mask surface when mask is solid or
-multi-texturing is available.
-
-PNG backend cleanups
---------------------
-Fix output to properly compensate for pre-multiplied alpha format in cairo.
-Add support for A8 and A1 image formats.
-
-Bug fixes
----------
-Avoid crash or infinite loop on null strings and degeneratively short
-splines.
-
-New? bugs in cairo_clip
------------------------
-There are some fairly serious bugs in cairo_clip. It is sometimes
-causing an incorrect result. And even when it does work, it is
-sometimes so slow as to be unusable. Some of these bugs may not be
-new, (indeed cairo_clip has only ever had a braindead-slow
-implementation), but I think they're worth mentioning here.
-
-Snapshot 0.1.22 (2004-04-16 Carl Worth <cworth@isi.edu>)
-========================================================
-Cairo was updated to track the changes in libpixman, and now depends
-on libpixman version 0.1.1.
-
-Snapshot 0.1.21 (2004-04-09 David Reveman <c99drn@cs.umu.se>)
-=============================================================
-New OpenGL backend
-------------------
-The OpenGL backend provides hardware accelerated output for
-X11 and OS X. The significant new functions are:
-
- cairo_set_target_gl
- cairo_gl_surface_create
-
-Automatic detection of available backends
------------------------------------------
-The configure script now automatically detect what backends are
-available, (use ./configure --disable-`backend' to prevent
-compilation of specific backends).
-
-Snapshot 0.1.20 (2004-04-06 Carl Worth <cworth@isi.edu>)
-========================================================
-New pattern API
----------------
-David Reveman has contributed a new pattern API which enable linear
-and radial gradient patterns in addition to the original surface-based
-patterns. The significant new top-level functions are:
-
- cairo_pattern_create_linear
- cairo_pattern_create_radial
- cairo_pattern_create_for_surface
- cairo_pattern_add_color_stop
- cairo_set_pattern
-
-Any code using the old cairo_set_pattern, (which accepted a
-cairo_surface_t rather than a cairo_pattern_t), will need to be
-updated.
-
-Update to XCB backend
----------------------
-The XCB backend is now enabled by default, (use ./configure
---disable-xcb to turn it off).
-
-Faster clipping
----------------
-Graydon Hoare has added optimizations that make cairo_clip much faster
-when the path is a pixel-aligned, rectangular region.
-
-Bug fixes.
-
-Snapshot 0.1.19 (2004-02-24 Carl Worth <cworth@isi.edu>)
-========================================================
-New PNG backend
----------------
-Olivier Andrieu contributed a new PNG backend. It builds on the
-existing image backend to make it easy to render "directly" to a
-.png file. The user never needs to deal with the actual image
-buffer. The significant new functions are:
-
- cairo_set_target_png
- cairo_png_surface_create
-
-The PNG backend is not enabled by default so that by default there is
-not a new dependency on libpng. Use ./configure --enable-png to enable
-this backend.
-
-Snapshot 0.1.18 (2004-02-17 Carl Worth <cworth@isi.edu>)
-========================================================
-Path query functionality
-------------------------
-It's now possible to query the current path. The two new functions
-are:
-
- cairo_current_path
- cairo_current_path_flat
-
-Each function accepts a number of callback functions that will be
-called for each element in the path (move_to, line_to, curve_to,
-close_path). The cairo_current_path_flat function does not accept a
-curve_to callback. Instead, all curved portions of the path will be
-converted to line segments, (within the current tolerance value). This
-can be handy for doing things like text-on-path without having to
-manually interpolate Bézier splines.
-
-New XCB backend
----------------
-Jamey Sharp has contributed a second X backend that uses the new, lean
-XCB library rather than Xlib. It cannot currently be compiled at the
-same time as the Xlib backend. See ./configure --enable-xcb.
-
-Build fixes for cygwin.
-
-Bug fixes.
-
-Snapshot 0.1.17 (2003-12-16 Carl Worth <cworth@isi.edu>)
-========================================================
-
-Better text support
--------------------
-This snapshot provides much better text support by implementing the
-following four functions:
-
- cairo_text_extents
- cairo_glyph_extents
- cairo_text_path
- cairo_glyph_path
-
-The text/glyph_extents functions can be used to determine the bounding
-box (and advance) for text as if drawn by show_text/glyphs.
-
-The text/glyph_path objects functions place text shapes on the current
-path, where they can be subsequently manipulated. For example,
-following these functions with cairo_stroke allows outline text to be
-drawn. Calling cairo_clip allows clipping to a text-shaped region.
-
-Combined dependencies
----------------------
-The cairo core now depends only on the libpixman library. This single
-library replaces the three previous libraries libic, libpixregion, and
-slim. Thanks to Dave Beckett <dave.beckett@bristol.ac.uk> for all of
-the heavy lifting with this renaming effort.
-
-Conditional compilation of backends
------------------------------------
-Cairo now allows optional backends to be disabled at compile time. The
-following options may now be passed to the configure script:
-
- --disable-xlib
- --disable-ps
-
-Note that the first option is a change from the old --without-x option
-which will no longer have any effect.
-
-OS X supported - several byte-order issues resolved
----------------------------------------------------
-Cairo has now been successfully compiled under OS X. Testing revealed
-that there were some byte-order problems in the PostScript backend and
-the PNG generation in the demos. These have now been resolved.
-
-2003-10
-=======
-Graydon Hoare <graydon@redhat.com> implemented the first real text
-support using Freetype/fontconfig, (previous versions of cairo used
-Xft and could only draw text when using an X backend).
-
-2003-09
-=======
-Graydon Hoare <graydon@redhat.com> added the first real support for
-running cairo with a non-render-aware X server.
-
-Jamey Sharp <jamey@minilop.net> virtualized the backend font and
-surface interfaces in September, 2003.
-
-2003-06
-=======
-Xr is renamed cairo to avoid confusion since it no longer had a strict
-dependence on X.
-
-2003-05
-=======
-A new image surface backend is added to Xr. Keith Packard
-<keithp@keithp.com> wrote the image compositing code in libic that is
-used for the image_surface backend. This code was originally written
-as the software fallback for the render extension within the X
-server.
-
-2002-06
-=======
-Carl Worth <cworth@isi.edu> wrote the first lines of Xr, after Keith
-Packard <keithp@keithp.com> proposed the plan for a stateful drawing
-library in C providing a PostScript-like rendering model.
-
- LocalWords: mutex BeOS extraordinaire