head 1.17; access; symbols pkgsrc-2023Q3:1.16.0.88 pkgsrc-2023Q3-base:1.16 pkgsrc-2023Q2:1.16.0.86 pkgsrc-2023Q2-base:1.16 pkgsrc-2023Q1:1.16.0.84 pkgsrc-2023Q1-base:1.16 pkgsrc-2022Q4:1.16.0.82 pkgsrc-2022Q4-base:1.16 pkgsrc-2022Q3:1.16.0.80 pkgsrc-2022Q3-base:1.16 pkgsrc-2022Q2:1.16.0.78 pkgsrc-2022Q2-base:1.16 pkgsrc-2022Q1:1.16.0.76 pkgsrc-2022Q1-base:1.16 pkgsrc-2021Q4:1.16.0.74 pkgsrc-2021Q4-base:1.16 pkgsrc-2021Q3:1.16.0.72 pkgsrc-2021Q3-base:1.16 pkgsrc-2021Q2:1.16.0.70 pkgsrc-2021Q2-base:1.16 pkgsrc-2021Q1:1.16.0.68 pkgsrc-2021Q1-base:1.16 pkgsrc-2020Q4:1.16.0.66 pkgsrc-2020Q4-base:1.16 pkgsrc-2020Q3:1.16.0.64 pkgsrc-2020Q3-base:1.16 pkgsrc-2020Q2:1.16.0.60 pkgsrc-2020Q2-base:1.16 pkgsrc-2020Q1:1.16.0.40 pkgsrc-2020Q1-base:1.16 pkgsrc-2019Q4:1.16.0.62 pkgsrc-2019Q4-base:1.16 pkgsrc-2019Q3:1.16.0.58 pkgsrc-2019Q3-base:1.16 pkgsrc-2019Q2:1.16.0.56 pkgsrc-2019Q2-base:1.16 pkgsrc-2019Q1:1.16.0.54 pkgsrc-2019Q1-base:1.16 pkgsrc-2018Q4:1.16.0.52 pkgsrc-2018Q4-base:1.16 pkgsrc-2018Q3:1.16.0.50 pkgsrc-2018Q3-base:1.16 pkgsrc-2018Q2:1.16.0.48 pkgsrc-2018Q2-base:1.16 pkgsrc-2018Q1:1.16.0.46 pkgsrc-2018Q1-base:1.16 pkgsrc-2017Q4:1.16.0.44 pkgsrc-2017Q4-base:1.16 pkgsrc-2017Q3:1.16.0.42 pkgsrc-2017Q3-base:1.16 pkgsrc-2017Q2:1.16.0.38 pkgsrc-2017Q2-base:1.16 pkgsrc-2017Q1:1.16.0.36 pkgsrc-2017Q1-base:1.16 pkgsrc-2016Q4:1.16.0.34 pkgsrc-2016Q4-base:1.16 pkgsrc-2016Q3:1.16.0.32 pkgsrc-2016Q3-base:1.16 pkgsrc-2016Q2:1.16.0.30 pkgsrc-2016Q2-base:1.16 pkgsrc-2016Q1:1.16.0.28 pkgsrc-2016Q1-base:1.16 pkgsrc-2015Q4:1.16.0.26 pkgsrc-2015Q4-base:1.16 pkgsrc-2015Q3:1.16.0.24 pkgsrc-2015Q3-base:1.16 pkgsrc-2015Q2:1.16.0.22 pkgsrc-2015Q2-base:1.16 pkgsrc-2015Q1:1.16.0.20 pkgsrc-2015Q1-base:1.16 pkgsrc-2014Q4:1.16.0.18 pkgsrc-2014Q4-base:1.16 pkgsrc-2014Q3:1.16.0.16 pkgsrc-2014Q3-base:1.16 pkgsrc-2014Q2:1.16.0.14 pkgsrc-2014Q2-base:1.16 pkgsrc-2014Q1:1.16.0.12 pkgsrc-2014Q1-base:1.16 pkgsrc-2013Q4:1.16.0.10 pkgsrc-2013Q4-base:1.16 pkgsrc-2013Q3:1.16.0.8 pkgsrc-2013Q3-base:1.16 pkgsrc-2013Q2:1.16.0.6 pkgsrc-2013Q2-base:1.16 pkgsrc-2013Q1:1.16.0.4 pkgsrc-2013Q1-base:1.16 pkgsrc-2012Q4:1.16.0.2 pkgsrc-2012Q4-base:1.16 pkgsrc-2012Q3:1.15.0.2 pkgsrc-2012Q3-base:1.15 pkgsrc-2012Q2:1.14.0.16 pkgsrc-2012Q2-base:1.14 pkgsrc-2012Q1:1.14.0.14 pkgsrc-2012Q1-base:1.14 pkgsrc-2011Q4:1.14.0.12 pkgsrc-2011Q4-base:1.14 pkgsrc-2011Q3:1.14.0.10 pkgsrc-2011Q3-base:1.14 pkgsrc-2011Q2:1.14.0.8 pkgsrc-2011Q2-base:1.14 pkgsrc-2011Q1:1.14.0.6 pkgsrc-2011Q1-base:1.14 pkgsrc-2010Q4:1.14.0.4 pkgsrc-2010Q4-base:1.14 pkgsrc-2010Q3:1.14.0.2 pkgsrc-2010Q3-base:1.14 pkgsrc-2010Q2:1.13.0.14 pkgsrc-2010Q2-base:1.13 pkgsrc-2010Q1:1.13.0.12 pkgsrc-2010Q1-base:1.13 pkgsrc-2009Q4:1.13.0.10 pkgsrc-2009Q4-base:1.13 pkgsrc-2009Q3:1.13.0.8 pkgsrc-2009Q3-base:1.13 pkgsrc-2009Q2:1.13.0.6 pkgsrc-2009Q2-base:1.13 pkgsrc-2009Q1:1.13.0.4 pkgsrc-2009Q1-base:1.13 pkgsrc-2008Q4:1.13.0.2 pkgsrc-2008Q4-base:1.13 pkgsrc-2008Q3:1.12.0.8 pkgsrc-2008Q3-base:1.12 cube-native-xorg:1.12.0.6 cube-native-xorg-base:1.12 pkgsrc-2008Q2:1.12.0.4 pkgsrc-2008Q2-base:1.12 cwrapper:1.12.0.2 pkgsrc-2008Q1:1.10.0.8 pkgsrc-2008Q1-base:1.10 pkgsrc-2007Q4:1.10.0.6 pkgsrc-2007Q4-base:1.10 pkgsrc-2007Q3:1.10.0.4 pkgsrc-2007Q3-base:1.10 pkgsrc-2007Q2:1.10.0.2 pkgsrc-2007Q2-base:1.10 pkgsrc-2007Q1:1.9.0.2 pkgsrc-2007Q1-base:1.9 pkgsrc-2006Q4:1.8.0.4 pkgsrc-2006Q4-base:1.8 pkgsrc-2006Q3:1.8.0.2 pkgsrc-2006Q3-base:1.8 pkgsrc-2006Q2:1.6.0.6 pkgsrc-2006Q2-base:1.6 pkgsrc-2006Q1:1.6.0.4 pkgsrc-2006Q1-base:1.6 pkgsrc-2005Q4:1.6.0.2 pkgsrc-2005Q4-base:1.6 pkgsrc-2005Q3:1.4.0.4 pkgsrc-2005Q3-base:1.4 pkgsrc-2005Q2:1.4.0.2 pkgsrc-2005Q2-base:1.4 pkgsrc-2005Q1:1.3.0.2 pkgsrc-2005Q1-base:1.3 pkgsrc-2004Q4:1.2.0.2 pkgsrc-2004Q4-base:1.2 pkgsrc-2004Q3:1.1.0.2 pkgsrc-2004Q3-base:1.1; locks; strict; comment @# @; 1.17 date 2023.11.14.13.48.19; author wiz; state dead; branches; next 1.16; commitid 1aBHNz1jlaqK9AME; 1.16 date 2012.11.04.23.48.54; author wiz; state Exp; branches; next 1.15; 1.15 date 2012.09.07.15.24.03; author adam; state Exp; branches; next 1.14; 1.14 date 2010.09.13.12.23.01; author wiz; state Exp; branches; next 1.13; 1.13 date 2008.10.16.10.55.09; author drochner; state Exp; branches; next 1.12; 1.12 date 2008.05.14.15.26.14; author obache; state Exp; branches; next 1.11; 1.11 date 2008.04.21.11.29.33; author tnn; state Exp; branches; next 1.10; 1.10 date 2007.06.08.07.20.53; author wiz; state Exp; branches; next 1.9; 1.9 date 2007.03.20.15.29.18; author drochner; state Exp; branches; next 1.8; 1.8 date 2006.08.10.13.50.37; author wiz; state Exp; branches; next 1.7; 1.7 date 2006.07.04.15.14.49; author drochner; state Exp; branches; next 1.6; 1.6 date 2005.12.06.23.14.11; author joerg; state Exp; branches; next 1.5; 1.5 date 2005.10.02.10.54.37; author jmmv; state Exp; branches; next 1.4; 1.4 date 2005.03.27.12.29.17; author recht; state dead; branches; next 1.3; 1.3 date 2005.02.17.13.34.16; author xtraeme; state Exp; branches; next 1.2; 1.2 date 2004.11.15.03.59.49; author rh; state dead; branches; next 1.1; 1.1 date 2004.07.03.23.01.36; author recht; state Exp; branches; next ; desc @@ 1.17 log @cairo: update to 1.18.0. Merge cairo-gobject into this, per discussion on tech-pkg. Release 1.18.0 (2023-09-20 Emmanuele Bassi ) ============================================================== The first stable cairo release in five years should be cause for celebration. All the API added in the 1.17 development cycle is now considered stable, and will not change. Many thanks to all the contributors for this release. The cairo-sphinx tool has been removed; we could not find any instruction on how to use it, and no user answered our call for help. If you were using cairo-sphinx, please reach out to the cairo maintainers. Cairo now implements Type 3 color fonts for PDF. Thanks to Adrian Johnson for his work on this feature. Khaled Hosny contributed multiple documentation fixes, to ensure that the cairo API reference is up to date. Khaled also fixed multiple compiler warnings generated when building cairo. The XML surface has been removed; it was disabled by default when building cairo, and we could not find any downstream distributor that would enable it. The Tee surface is now automatically enabled. Downstream distributors of cairo have been enabling for years it in order to build Firefox. Fujii Hironori and Adrian Johnson fixed multiple issues with the DWrite font backend. John Ralls improved the Quartz surface; mainly, Quartz surfaces now use the main display ColorSpace, speeding up rendering operations. Cairo now hides all private symbols by default on every platform; the old "slim" symbols hack to alias internally used symbols has been dropped, in favor of using `-Bsymbolic-functions` with toolchains that support it. Uli Schlachter fixed multiple memory leaks in the code base and test suite, and helped with many reviews and general maintenance. Marc Jeanmougin added new API to expose the Pixman dithering filter to cairo patterns; this is currently implemented only for image surfaces. Release 1.17.8 (2023-01-30 Emmanuele Bassi ) ============================================================== A new cairo snapshot! And it only took less than one year, this time! Many thanks to everyone who contributed to cairo, and especially to (in no particular order): - Adrian Johnson - Khaled Hosny - Behdad Esfahbod - Matthias Clasen - Uli Schlachter - Manuel Stoeckl - Fujii Hironori - Tim-Philipp Müller - Luca Bacci - Caolán McNamara - John Ralls In a continuing effort to reduce the amount of legacy code, and increase the long-term maintainability of cairo, the following backends have been removed: - GL and GLES drawing Additionally, cairo's Autotools build system has been removed; from now on, cairo will only support the Meson build system. While the end result should be identical, further testing is appreciated. In this snapshot, cairo gained support for rendering COLRv1 fonts, and rendering SVG and COLRv1 fonts with custom palettes. Support for macOS and Windows has been improved, with lots of build and bug fixes. Lots of safety issues have been fixed, with array bounds checking and plugging memory leaks, as well as fixes for bugs identified via fuzzying. This is going to be the last snapshot of the 1.17 development cycle; we only expect minor bug fixing and improvements until the 1.18.0 release. Release 1.17.6 (2022-03-18 Emmanuele Bassi ) ============================================================== I spy with my little eye… a cairo snapshot! First of all, many, many thanks to everyone who contributed to cairo during this development cycle. A special thank you goes to: - Adrian Johnson - Uli Schlachter for their tireless efforts in ensuring that the lights are still on in the cairo project. This snapshot sees the removal of the following backends and platform support: - Qt4 - BeOS - OS/2 - DirectFB - DRM - Cogl - OpenVG Thanks to all past contributors for their work on them. If you were using any of these backends then you will need to stick to cairo 1.16. To offset the removal of the backends above, Adrian Johnson landed the DWrite font rendering backend on Windows. There have been multiple improvements in the Quartz backend, courtesy of John Ralls. Tim-Philipp Müller has kept the Meson build in top shape. This snapshot is going to be the **last** release of cairo with the Autotools build system. The Meson build has seen many improvements and it is considerably easier to maintain and faster to build. Release 1.17.4 (2020-11-27 Bryce Harrington ) ======================================================================== Thank you to the many people who have contributed the large number of bug fixes and refinements since 1.17.2. A particularly noteworthy improvement in this release is the addition of the meson build system as an alternative to autotools. Autotools is still used for producing the releases, so will be the default in the tarball and presumably will still be preferred by distro packagers of Cairo. It should be possible to build the release tarball using meson, but as this is new functionality consider it still a work in progress. The meson configuration has striven to track the autotools implementation but be aware there may still be some differences between the two. Continuous Integration configurations have been added that enable testing on a variety of platforms including Fedora, Windows MSVC, etc. This work has helped in identifying updates and fixes including adjusting to changes in API calls in dependencies like rsvg and fontconfig, and to fix platform-specific build issues. The cogl Cairo backend underwent significant development this cycle. Cogl provides GPU accelerated drawing support. The development work includes implementation of core functionality, performance optimizations, and stabilization. Subpixel positioning support allows improved glyph outlines with the FreeType font backend. For a complete log of changes, please see https://cairographics.org/releases/ChangeLog.1.17.4 [On a personal note, this will be my last release for Cairo. My Cairo time availability has been non-existent (particularly this crazy past year). The release process is well documented and hopefully will help whomever picks up the baton from here.] Release 1.17.2 (2019-01-31 Bryce Harrington ) ======================================================================== This snapshot provides the new support for writing floating point formats as 16 bpc PNGs, with support for RGBA128F and RGB96F formats. This new feature increases Cairo's pixman version requirement to 0.36.0. Beyond this are a range of bugfixes and some work on establishing CI for Cairo. For a complete log of changes, please see https://cairographics.org/releases/ChangeLog.1.17.2 API Changes ----------- None Dependency Changes ------------------ pixman 0.36.0 @ text @$NetBSD: patch-aa,v 1.16 2012/11/04 23:48:54 wiz Exp $ revision 1.6 date: 2005/12/06 23:14:11; author: joerg; state: Exp; lines: +2 -2 Fix a bug in the thread linkage I introduced earlier. This was most noticable on NetBSD 1.6, where PTHREAD_LDFLAGS is not set at all. ---------------------------- revision 1.5 date: 2005/10/02 10:54:37; author: jmmv; state: Exp; lines: +21 -168 Cairo uses pthreads, so link it against the threading library. Fixes build problems of other packages using cairo (nothing could be linked with -lcairo before), at least under NetBSD 2.0. Bump PKGREVISION to 2. --- src/Makefile.in.orig 2012-04-29 18:49:55.000000000 +0000 +++ src/Makefile.in @@@@ -928,9 +928,9 @@@@ AUTOMAKE = @@AUTOMAKE@@ AWK = @@AWK@@ BFD_LIBS = @@BFD_LIBS@@ CAIROBOILERPLATE_LIBS = @@CAIROBOILERPLATE_LIBS@@ -CAIRO_CFLAGS = @@CAIRO_CFLAGS@@ +CAIRO_CFLAGS = @@CAIRO_CFLAGS@@ ${PTHREAD_CFLAGS} CAIRO_LDFLAGS = @@CAIRO_LDFLAGS@@ -CAIRO_LIBS = @@CAIRO_LIBS@@ +CAIRO_LIBS = @@CAIRO_LIBS@@ ${PTHREAD_LDFLAGS} ${PTHREAD_LIBS} CAIRO_LIBTOOL_VERSION_INFO = @@CAIRO_LIBTOOL_VERSION_INFO@@ CAIRO_NONPKGCONFIG_CFLAGS = @@CAIRO_NONPKGCONFIG_CFLAGS@@ CAIRO_NONPKGCONFIG_LIBS = @@CAIRO_NONPKGCONFIG_LIBS@@ @ 1.16 log @Add comments to patches. @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.15 2012/09/07 15:24:03 adam Exp $ @ 1.15 log @Changes 1.12.2: After such a long gestation period for the release of Cairo 1.12, we inevitably accumulated a few bugs that were flushed out by broadening the test base. Thanks to everybody who tried the release, apologies to any one unfortunate enough to encounter a bug and many thanks for reporting it. @ text @d1 12 a12 1 $NetBSD$ @ 1.14 log @Update to 1.10.0. Add default-on xcb option (implying x11 option). Release 1.10.0 (2010-09-06 Chris Wilson ) =================================================================== The cairo community is astounded (and flabbergast) to finally announce the 1.10.0 release of the cairo graphics library. This is a major update to cairo, with new features and enhanced functionality which maintains compatibility for applications written using any previous major cairo release, (1.8, 1.6, 1.4, 1.2, or 1.0). We recommend that anybody using a previous version of cairo upgrade to cairo 1.10.0. One of the more interesting departures for cairo for this release is the inclusion of a tracing utility, cairo-trace. cairo-trace generates a human-readable, replayable, compact representation of the sequences of drawing commands made by an application. This can be used to inspecting applications to understand issues and as a means for profiling real-world usage of cairo. The traces generated by cairo-trace have been collected in git://git.cairographics.org/git/cairo-traces and have driven the performance tuning of cairo over the last couple of years. In particular, the image backend is much faster with a new polygon rasterisation and a complete overhaul of the tessellator. Not only is this faster, but also eliminates visual artifacts from self-intersecting strokes. Not only has cairo-trace been driving performance improvements within cairo, but as a repeatable means of driving complex graphics it has been used to tune OpenGL, DDX, and pixman. Cairo's API has been extended to better support printing, notably through the ability to include a single compressed representation of an image for patterns used throughout a document, leading to dramatic file size reductions. Also the meta-surface used to record the vector commands compromising a drawing sequence is now exposed as a CAIRO_SURFACE_TYPE_RECORDING, along with a new surface that is a child of a larger surface, CAIRO_SURFACE_TYPE_SUBSURFACE. One typical usage of a subsurface would be as a source glyph in a texture atlas, or as a restricted subwindow within a canvas. Cairo's API has also resurrected the RGB16 format from the past as the prevalence of 16-bit framebuffers has not diminished and is a fore-taste of the extended format support we anticipate in the future. Increasing cairo's utility, we introduce the cairo_region_t for handling sets of pixel aligned rectangles commonly used in graphics applications. This is a merger of the GdkRegion and the pixman_region_t, hopefully providing the utility of the former with the speed of the latter. Furthermore cairo has been reworked to interoperate more closely with various acceleration architectures, gaining the ability to share those hardware resources through the new cairo_device_t. For instance, with the new OpenGL backend that supersedes the Glitz backend, hardware and rendering operations can be shared between a classic OpenGL application mixing libVA for the hardware assisted video decode with cairo for high quality overlays all within the same OpenGL canvas. Many thanks for the hard work of Adrian Johnson, Andrea Canciani, Behdad Esfahbod, Benjamin Otte, Carl Worth, Carlos Garcia Campos, Chris Wilson, Eric Anholt, Jeff Muizelaar, Karl Tomlinson, M Joonas Pihlaja, Søren Sandmann Pedersen and many others that have contributed over the last couple of years to cairo. Thank you all! Snapshot 1.9.14 (2010-07-26) ============================ A quiet couple of weeks, hopefully Cairo is seeing widescale deployment and we are being to see the results of the stabilisation effort. Clipping bugs seems to have been the order of the last couple of weeks, with a couple reported and duly fixed. Thank you Igor Nikitin and Karl Tomlinsion for finding those regressions. At this point all that seems to remain to do is to fix the outstanding regressions in the PDF backend... Bugs fixes ---------- Clip doesn't work for text on the image backend https://bugs.freedesktop.org/show_bug.cgi?id=29008 Add explicit dependency for cxx https://bugs.freedesktop.org/show_bug.cgi?id=29114 Fix regressions in reporting clip extents https://bugs.freedesktop.org/show_bug.cgi?id=29120 https://bugs.freedesktop.org/show_bug.cgi?id=29121 https://bugs.freedesktop.org/show_bug.cgi?id=29122 https://bugs.freedesktop.org/show_bug.cgi?id=29124 https://bugs.freedesktop.org/show_bug.cgi?id=29125 Snapshot 1.9.12 (2010-07-12) ============================ A couple of weeks spent fixing those annoying bugs and cleaning up the build system; the list of outstanding tasks to complete for the stable release is finally shrinking. The chief bug fixer has been Benjamin Otte who not only made sure that the public API is consistent and being tested for its consistency, but also ensured that the documentation was up-to-date and spent time clarifying cases where even the Cairo developers have come unstuck in the past. Many thanks, Benjamin. However, he was not alone, as Andrea Canciani continued his fine work in isolating broken corner cases and proceeding to fix them, and tidying up the quartz backend. And last, but definitely not least, M Joonas Pihlaja tried building Cairo across a perverse range of systems and fixed up all the loose bits of code that came unravelled. Thanks everybody! API Changes ----------- cairo_surface_set_mime_data, cairo_surface_get_mime_data: The length parameter is now an unsigned long (as opposed to an unsigned int). The parameter is intended to be an equivalent to a size_t without requiring POSIX types and be large enough to store the size of the largest possible allocation. cairo_gl_surface_create_for_texture: This a new surface constructor for cairo-gl that explicitly enables render-to-texture for foreign, i.e. application, textures. cairo_region_xor, cairo_region_xor_rectangle A couple of utility routines add to the region handling interface for the purpose of replacing existing GdkRegion functionality. Bugs fixes ---------- https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 Inkscape was caught in the act of attempting to modify a finished surface. Unfortunately, we had the ordering of our guards and assertions wrong and so an ordinary application error was triggering an assert in Cairo. This lead Benjamin to add a test case to ensure that the entire public API could handle erroneous input and then proceeded to fix a whole slew of uncovered bugs. https://bugs.freedesktop.org/show_bug.cgi?id=28888 A regression introduced by the special casing of uploading images to an xlib surface in-place which was ignoring the translation applied to the image. Snapshot 1.9.10 (2010-06-26) ============================ The first "quick" snapshot in the run up to the stable release. The last snapshot was picked up by the bleeding edge distributions and so the bug reports have to started to roll in. The most frequent of these are the introduction of rendering errors by applications that modify a surface without subsequently calling cairo_surface_mark_dirty(). Make sure the application developers are aware of increased reliance on strict use of the Cairo API before 1.10 is released! The usual slew of bugs reported and we would like to thank Zoxc for contributing the WGL interface for cairo-gl, and finding more build failures on win32. And it just wouldn't be a 1.9 snapshot unless Benjamin Otte improved the error handling within cairo-gl, as well as isolating and fixing some more errors in the test suite. The biggest bug of the snapshot turned out to be a major sign extension issue that had lain hidden for many years and was suddenly exposed by incorrectly rounding rectangles when performing non-antialiased rendering. Also to the relief of many we have included the downstream patch to honour the user's LCD filtering preferences for subpixel rendering of fonts. The interface remains private for the time being, whilst the proposed public API is finalized. API changes ----------- None. Snapshot 1.9.8 (2010-06-12) =========================== One major API changes since the last snapshot, and a whole slew of bugs fixed and inconsistencies eliminated. Far too many bugs fixed to individually identify. We need to thank Benjamin Otte for his fantastic work on the cairo-gl backend making it faster and more robust, Andrea Canciani for finding so many bugs and developing test cases for them, as well fixing them. And last but not least we must all thank Adrian Johnson for continuing to eliminate bugs and improving the PostScript and PDF backends. This snapshot represents almost 4 months of bug fixing, bringing Cairo to a point where we consider it almost ready to be a candidate for release. There are a few known bugs left to be fixed, being tracked in https://bugs.freedesktop.org/show_bug.cgi?id=24384, so please give Cairo a whirl and report any regressions. The plan is to release a new snapshot every other week leading to a 1.10 release with a target date of 2010-08-16. API additions ------------- CAIRO_FORMAT_RGB16_565 16 bit devices still remain popular, and so with great demand, CAIRO_FORMAT_RGB16_565 has been restored enabling applications to create and use 16 bit images as sources and render targets. cairo_surface_create_for_rectangle() It is common practice to cut an image up into many smaller pieces and use each of those as a source - a technique called texture atlasing. cairo_surface_create_for_rectangle() extends Cairo to directly support use of these subregions of another cairo_surface_t both as a source and as a render target. cairo_region_create() cairo_region_create_rectangle() cairo_region_create_rectangles() cairo_region_copy() cairo_region_reference() cairo_region_destroy() cairo_region_equal() cairo_region_status() cairo_region_get_extents() cairo_region_num_rectangles() cairo_region_get_rectangle() cairo_region_is_empty() cairo_region_contains_rectangle() cairo_region_contains_point() cairo_region_translate() cairo_region_subtract() cairo_region_subtract_rectangle() cairo_region_intersect() cairo_region_intersect_rectangle() cairo_region_union() cairo_region_union_rectangle() The Cairo region API was actually added a couple of snapshots ago, but we forgot to mention it at the time. A simple API for the handling of rectangular pixel-aligned regions by Soeren Sandmann. Backend-specific improvements ----------------------------- cairo-gl Benjamin Otte made more than 200 commits in which he refactored the cairo-gl backend, reducing a lot of code duplication and enabled him to begin working on improving performance by reducing state changes and associated overhead. cairo-xlib Access to the underlying connection to the Display is now thread-safe enabling cairo-xlib to be used in a multi-threaded application without fear of random corruption. Thanks Benjamin Otte! cairo-xlib will now attempt to use PolyModeImprecise when compositing trapezoids (i.e. a fill or a stroke operation with a non-trivial path) which should allow hardware drivers more scope for accelerating the operation at the cost of potentially incurring minute rendering errors. The mode can be forced back to PolyModePrecise by setting the antialias parameter to CAIRO_ANTIALIAS_SUBPIXEL. cairo-svg A notable improvement was contributed by Alexander Shulgin to enable SVG to reference external image through the use an extended MIME data type. Snapshot 1.9.6 (2010-02-19) =========================== API additions ------------- Add cairo_device_t The device is a generic method for accessing the underlying interface with the native graphics subsystem, typically the X connection or perhaps the GL context. By exposing a cairo_device_t on a surface and its various methods we enable finer control over interoperability with external interactions of the device by applications. The use case in mind is, for example, a multi-threaded gstreamer which needs to serialise its own direct access to the device along with Cairo's across many threads. Secondly, the cairo_device_t is a unifying API for the mismash of backend specific methods for controlling creation of surfaces with explicit devices and a convenient hook for debugging and introspection. The principal components of the API are the memory management of: cairo_device_reference(), cairo_device_finish() and cairo_device_destroy(); along with a pair of routines for serialising interaction: cairo_device_acquire() and cairo_device_release() and a method to flush any outstanding accesses: cairo_device_flush(). The device for a particular surface may be retrieved using: cairo_surface_get_device(). The device returned is owned by the surface. API changes (to API new in the cairo 1.9.x series) -------------------------------------------------- cairo_recording_surface_create() cairo_recording_surface_ink_extents() These are the replacement names for the functions previously named cairo_meta_surface_create and cairo_meta_surface_ink_extents. cairo_surface_set_mime_data This interface is now changed such that the MIME data will be detached if the surface is modified at all. This guarantees that the MIME data will not become out of synch due to surface modifications, and also means that for the MIME data to be useful, it must be set after all modifications to the surface are complete. API removal (of experiment API) ------------------------------- The cairo-glitz backend is removed entirely, (in favor of the new cairo-gl backend). See below for more on cairo-gl. Generic fixes ------------- Many improvements for drawing of dashed strokes Fix incorrect handling of negative offset Faster computation of first dash (avoids near-infinite looping) Approximate extremely fine dash patterns with appropriate alpha value Optimize spans-based renderers for repeated rows, (such as in a rounded rectangle) Backend-specific improvements ----------------------------- cairo-drm This is a new, direct-rendering backend that supports Intel graphics chipsets in the i915 and i965 families. It's still experimental and will likely remain that way for a while. It's already got extremely good performance on the hardware it supports, so if nothing else provides a working proof and performance target for the cairo-gl work for Intel graphics. cairo-gl Start using GLSL to accelerate many operations. Many thanks to Eric Anholt and T. Zachary Laine for this work. For the first time, we have what looks like what will be a very compelling OpenGL-based backend for cairo (in terms of both quality and performance). See this writeup from Eric for more details on recent progress of cairo-gl (which he presented at FOSDEM 2010): http://anholt.livejournal.com/42146.html cairo-image The image backend is made dramatically faster (3-5 times faster for benchmarks consisting primarily of glyph rendering). cairo-quartz fixes: Many fixes from Robert O'Callahan and Andrea Canciani including: Fixed gradient pattern painting Improved A8 image handling Fixes for "unbounded" and other compositing operators cairo-pdf fixes: Improvements to embedding of JPEG and JPEG2000 data. cairo-ps fixes: Fix printing of rotated user fonts. Snapshot 1.9.4 (2009-10-15) =========================== API additions: cairo_meta_surface_create() cairo_meta_surface_ink_extents() Finally exporting the internal meta-surface so that applications have a method to record and replay a sequence of drawing commands. cairo_in_clip() Determines whether a given point is inside the current clip. ??? Should this be called cairo_in_paint() instead? in-clip is the test that is performed, but in-paint would be similar to in-fill and in-stroke. New utilities: cairo-test-trace A companion to cairo-perf-trace, this utility replays a trace against multiple targets in parallel and looks for differences in the output, and then records any drawing commands that cause a failure. Future plans: Further minimisation of the fail trace using "delta debugging". More control over test/reference targets. Backend improvements: xlib Server-side gradients. The theory is that we can offload computation of gradients to the GPU and avoid pushing large images over the connection. Even if the driver has to fallback and use pixman to render a temporary source, it should be able to do so in a more efficient manner than Cairo itself. However, cairo-perf suggests otherwise: On tiny, Celeron/i915: before: firefox-20090601 211.585 after: firefox-20090601 270.939 and on tiger, CoreDuo/nvidia: before: firefox-20090601 70.143 after: firefox-20090601 87.326 In particular, looking at tiny: xlib-rgba paint-with-alpha_linear-rgba_over-512 47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%): 2.62x slowdown █▋ xlib-rgba paint-with-alpha_linear3-rgba_over-512 47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%): 2.62x slowdown █▋ New experimental backends: QT OpenVG - The initial work was done by Øyvind Kolås, and made ready for inclusion by Pierre Tardy. OpenGL - An advanced OpenGL compositor. The aim is to write a integrate directed rendering using OpenGL at a high-level into Cairo. In contrast to the previous attempt using Glitz which tried to implement the RENDER protocol on top of OpenGL, using the high-level interface should permit greater flexibility and more offloading onto the GPU. The initial work on the backend was performed by Eric Anholt. Long standing bugs fixed: Self-intersecting strokes. A long standing bug where the coverage from overlapping semi-opaque strokes (including neighbouring edges) was simply summed in lieu of a costly global calculation has been fixed (by performing the costly global calculation!) In order to mitigate the extra cost, the tessellator has been overhauled and tune, which handles the fallback for when we are unable to use the new span rasteriser on the stroke (e.g. when using the current RENDER protocol). The large number of pixel artefacts that implementing self-intersection elimination removes is ample justification for the potential performance regression. If you unfortunately do suffer a substantial performance regression in your application, please consider obtaining a cairo-trace and submitting it to us for analysis and inclusion into our performance suite. Special thanks: To the AuroraUX team for providing access to one of their OpenSolaris machines for cairo and pixman development. http://www.auroraux.org/ Snapshot 1.9.2 (2009-06-12) =========================== API additions: cairo_surface_set_mime_data() cairo_surface_get_mime_data() Should this take unsigned int, unsigned long or size_t for the length parameter? (Some datasets may be >4GiB in size.) Associate an alternate, compressed, representation for a surface. Currently: "image/jp2" (JPEG2000) is understood by PDF >= 1.5 "image/jpeg" is understood by PDF,PS,SVG,win32-printing. "image/png" is understood by SVG. cairo_pdf_version_t cairo_pdf_surface_restrict_to_version() cairo_pdf_get_versions() cairo_pdf_version_to_string() Similar to restrict to version and level found in SVG and PS, these limit the features used in the output to comply with the PDF specification for that version. CAIRO_STATUS_INVALID_SIZE Indicates that the request surface size is not supported by the backend. This generally indicates that the request is too large. CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED Indicates that a required callback for a user-font was not implemented. CAIRO_STATUS_LAST_STATUS This is a special value to indicate the number of status values enumerated at compile time. (This may differ to the number known at run-time.) The built-in twin font is now called "@@cairo:" and supports a limited set of options like "@@cairo:mono". Where are these specified? cairo_in_fill() now uses HTML Canvas semantics, all edges are inside. New experimental backends: CairoScript New utility: cairo-trace and cairo-perf-trace cairo-trace generates a human-readable, replayable, compact(-ish!) representation of the sequences of drawing commands made by an application. Under the util/cairo-script directory is a library to replay traces. perf/cairo-perf-trace replays traces against multiple backends and makes useful benchmark reports. This is integrated with 'make perf'. You may collect your own traces or take advantage of traces collected by the community: git://git.cairographics.org/git/cairo-traces (Put this into perf/cairo-traces to run these as part of "make perf".) There is additional WIP in building a debugging tool for cairo applications based on CairoScript (currently very preliminary, mostly serves to show that GtkSourceView is too slow) : people.freedesktop.org:~ickle/sphinx Test suite overhaul: The test suite is undergoing an overhaul, primarily to improve its speed and utility. (Expect more changes in the near future to improve XFAIL handling.) Optimisations: polygon rasterisation! Joonas implemented the Tor polygon scan converter, on typical geometry is about 30% faster for the image backend. Bovine Polaroids! For those not in on the joke, this is the long awaited "copy-on-write snapshot" or "COW snapshot" support. The user-visible feature is that including the same image multiple times into a PDF file should result in only a single instance of that image in the final output. This is unlike previous versions of cairo which would generate very large PDF files with multiple copies of the same image. Adrian says that the PDF is not quite working as well as it should yet, so we hope for futher improvements before cairo 1.10. Bug fixes: EXTEND_PAD. Better handling of large scale-factors on image patterns. Emit /Interpolate for PS,PDF images. Global glyph cache - cap on the total number of inactive glyphs, should prove fairer for fonts with larger glyph sets. Compilation without fontconfig Improved handling of low-bitdepth sources (e.g. copying the contents of 16-bit xserver windows) Regressions: cairo_traps_extract_region >10x slower. Fix pending. Still to come: Region tracking API (ssp) for damage tracking, hit testing etc mime-surface An expiremental OpenGL backend? Tweaks to tessellator, allocations of patterns, delayed initialisation of the xlib backend (reduce the cairo overhead of render_bench by ~80%). @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.13 2008/10/16 10:55:09 drochner Exp $ d3 1 a3 1 --- src/Makefile.in.orig 2010-09-06 16:16:41.000000000 +0000 d5 2 a6 1 @@@@ -821,9 +821,9 @@@@ AWK = @@AWK@@ a8 1 CAIROPERF_LIBS = @@CAIROPERF_LIBS@@ @ 1.13 log @update to 1.8.0 from the announcement: The dominant theme of this release is improvements to cairo's ability to handle text. The highlights include a new "user fonts" feature as well as a new cairo_show_text_glyphs API which allows glyphs to be embedded in PDF output along with their original text, (for searching, selection, and copy-and-paste). Another major feature is a revamp of cairo's build system making it much easier to build cairo on various platforms. @ text @d1 1 a1 1 $NetBSD$ d3 1 a3 1 --- src/Makefile.in.orig 2008-09-26 00:57:32.000000000 +0200 d5 3 a7 3 @@@@ -405,8 +405,8 @@@@ AUTOHEADER = @@AUTOHEADER@@ AUTOMAKE = @@AUTOMAKE@@ AWK = @@AWK@@ d10 2 a12 1 +CAIRO_CFLAGS = @@CAIRO_CFLAGS@@ ${PTHREAD_CFLAGS} @ 1.12 log @Fix to instal cairo-quartz-font.pc. (and while here, enable quartz-image) Then atsui support for pango again. Bump pkgrevision. @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.11 2008/04/21 11:29:33 tnn Exp $ d3 1 a3 1 --- src/Makefile.in.orig 2008-04-11 21:33:41.000000000 +0000 d5 1 a5 9 @@@@ -81,6 +81,7 @@@@ host_triplet = @@host@@ @@CAIRO_HAS_FT_FONT_TRUE@@am__append_45 = $(ft_headers) @@CAIRO_HAS_FT_FONT_TRUE@@am__append_46 = $(ft_sources) @@CAIRO_HAS_FT_FONT_TRUE@@am__append_47 = cairo-ft.pc +@@CAIRO_HAS_QUARTZ_FONT_TRUE@@am__append_48 = cairo-quartz-font.pc subdir = src DIST_COMMON = $(am__cairoinclude_HEADERS_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/cairo.pc.in @@@@ -288,9 +289,9 @@@@ AUTOHEADER = @@AUTOHEADER@@ d10 1 a11 2 CAIRO_LDADD = @@CAIRO_LDADD@@ -CAIRO_LIBS = @@CAIRO_LIBS@@ d13 1 a15 10 CAIRO_REQUIRES = @@CAIRO_REQUIRES@@ @@@@ -456,7 +457,7 @@@@ backend_pkgconfigs = $(am__append_4) $(a $(am__append_21) $(am__append_24) $(am__append_26) \ $(am__append_31) $(am__append_33) $(am__append_36) \ $(am__append_38) $(am__append_41) $(am__append_44) \ - $(am__append_47) + $(am__append_47) $(am__append_48) cairo_base_headers = cairo.h cairo_base_sources = \ cairo.c \ @ 1.11 log @Update to cairo-1.6.4. Major changes between the 1.4 and 1.6 branch: - Now uses external "pixman" library instead of a bundled one. - Improvements to PDF, SVG and PostScript output - New support for arbitrary X server visuals (the 8-bit display support patch (patch-ae in pkgsrc) is integrated) - rendering backend improvements - various new API additions, while maintaining ABI compatibility - New Quartz backend - bug fixes @ text @d1 1 a1 1 $NetBSD$ d3 1 a3 1 --- src/Makefile.in.orig 2008-04-11 23:33:41.000000000 +0200 d5 9 a13 1 @@@@ -288,9 +288,9 @@@@ AUTOHEADER = @@AUTOHEADER@@ d25 9 @ 1.10 log @Update to 1.4.6: Release 1.4.6 (2007-05-01 Carl Worth ) ========================================================= 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). Release 1.4.4 (2007-04-13 Carl Worth ) ========================================================= 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. 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! @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.9 2007/03/20 15:29:18 drochner Exp $ d3 1 a3 1 --- src/Makefile.in.orig 2007-05-01 20:25:14.000000000 +0000 d5 4 a8 4 @@@@ -244,7 +244,7 @@@@ CAIRO_CAN_TEST_PDF_SURFACE_FALSE = @@CAIR CAIRO_CAN_TEST_PDF_SURFACE_TRUE = @@CAIRO_CAN_TEST_PDF_SURFACE_TRUE@@ CAIRO_CAN_TEST_SVG_SURFACE_FALSE = @@CAIRO_CAN_TEST_SVG_SURFACE_FALSE@@ CAIRO_CAN_TEST_SVG_SURFACE_TRUE = @@CAIRO_CAN_TEST_SVG_SURFACE_TRUE@@ a10 6 CAIRO_HAS_ATSUI_FONT_FALSE = @@CAIRO_HAS_ATSUI_FONT_FALSE@@ CAIRO_HAS_ATSUI_FONT_TRUE = @@CAIRO_HAS_ATSUI_FONT_TRUE@@ CAIRO_HAS_BEOS_SURFACE_FALSE = @@CAIRO_HAS_BEOS_SURFACE_FALSE@@ @@@@ -282,7 +282,7 @@@@ CAIRO_HAS_XLIB_SURFACE_TRUE = @@CAIRO_HAS CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE = @@CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE@@ CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE = @@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@@ @ 1.9 log @update to 1.4.2 This switches to the new stable branch. Too many changes to list here, see the changelog. Most notably: speed improvements, PDF output improvement, API additions, bugfixes. @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.8 2006/08/10 13:50:37 wiz Exp $ d3 1 a3 1 --- src/Makefile.in.orig 2007-03-06 09:21:16.000000000 +0000 d5 1 a5 1 @@@@ -235,7 +235,7 @@@@ CAIRO_CAN_TEST_PDF_SURFACE_FALSE = @@CAIR d14 1 a14 2 @@@@ -272,7 +272,7 @@@@ CAIRO_HAS_XLIB_SURFACE_FALSE = @@CAIRO_HA CAIRO_HAS_XLIB_SURFACE_TRUE = @@CAIRO_HAS_XLIB_SURFACE_TRUE@@ d17 1 @ 1.8 log @Update to 1.2.2, some pkglint cleanup: Release 1.2.2 (2006-08-08 Carl Worth) ========================================================= 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 calue 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 betwen 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 (particulary 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 peformance 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. @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.7 2006/07/04 15:14:49 drochner Exp $ d3 1 a3 1 --- src/Makefile.in.orig 2006-08-08 23:11:38.000000000 +0000 d5 1 a5 1 @@@@ -225,7 +225,7 @@@@ CAIRO_CAN_TEST_PDF_SURFACE_FALSE = @@CAIR d14 1 a14 1 @@@@ -260,7 +260,7 @@@@ CAIRO_HAS_XLIB_SURFACE_FALSE = @@CAIRO_HA @ 1.7 log @update to 1.2.0 changes: New, supported backends (PDF, PostScript, and SVG) misc API extensions Optimizations and bug fixes @ text @d1 1 a1 1 $NetBSD$ d3 1 a3 1 --- src/Makefile.in.orig 2006-07-01 03:25:10.000000000 +0200 d5 1 a5 1 @@@@ -230,7 +230,7 @@@@ CAIRO_CAN_TEST_PDF_SURFACE_FALSE = @@CAIR d14 1 a14 1 @@@@ -265,7 +265,7 @@@@ CAIRO_HAS_XLIB_SURFACE_FALSE = @@CAIRO_HA d20 2 a22 2 CAIRO_VERSION_MAJOR = @@CAIRO_VERSION_MAJOR@@ CAIRO_VERSION_MICRO = @@CAIRO_VERSION_MICRO@@ @ 1.6 log @Fix a bug in the thread linkage I introduced earlier. This was most noticable on NetBSD 1.6, where PTHREAD_LDFLAGS is not set at all. @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.5 2005/10/02 10:54:37 jmmv Exp $ d3 1 a3 1 --- src/Makefile.in.orig 2005-08-24 18:28:42.000000000 +0200 d5 4 a8 4 @@@@ -145,7 +145,7 @@@@ AUTOCONF = @@AUTOCONF@@ AUTOHEADER = @@AUTOHEADER@@ AUTOMAKE = @@AUTOMAKE@@ AWK = @@AWK@@ d13 2 a14 4 CAIRO_HAS_FT_FONT_FALSE = @@CAIRO_HAS_FT_FONT_FALSE@@ @@@@ -168,7 +168,7 @@@@ CAIRO_HAS_XCB_SURFACE_FALSE = @@CAIRO_HAS CAIRO_HAS_XCB_SURFACE_TRUE = @@CAIRO_HAS_XCB_SURFACE_TRUE@@ CAIRO_HAS_XLIB_SURFACE_FALSE = @@CAIRO_HAS_XLIB_SURFACE_FALSE@@ d16 2 d20 1 a22 1 CAIRO_VERSION_MINOR = @@CAIRO_VERSION_MINOR@@ @ 1.5 log @Cairo uses pthreads, so link it against the threading library. Fixes build problems of other packages using cairo (nothing could be linked with -lcairo before), at least under NetBSD 2.0. Bump PKGREVISION to 2. @ text @d1 1 a1 1 $NetBSD$ d19 1 a19 1 +CAIRO_LIBS = @@CAIRO_LIBS@@ ${PTHREAD_LDFLAGS} @ 1.4 log @update to cairo-0.4.0 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. @ text @d1 1 a1 168 $NetBSD: patch-aa,v 1.3 2005/02/17 13:34:16 xtraeme Exp $ --- src/cairo_glitz_surface.c.orig Thu Jan 20 11:29:19 2005 +++ src/cairo_glitz_surface.c Wed Feb 16 19:20:26 2005 @@@@ -333,7 +333,7 @@@@ if (format == NULL) return NULL; - surface = glitz_surface_create (drawable, format, 1, 1); + surface = glitz_surface_create (drawable, format, 1, 1, 0, NULL); if (surface == NULL) return NULL; @@@@ -355,7 +355,6 @@@@ glitz_drawable_format_t templ; glitz_format_t *format; glitz_drawable_t *pbuffer; - glitz_pbuffer_attributes_t attributes; unsigned long mask; int i; @@@@ -397,21 +396,13 @@@@ if (!dformat) return CAIRO_INT_STATUS_UNSUPPORTED; - attributes.width = glitz_surface_get_width (surface); - attributes.height = glitz_surface_get_height (surface); - mask = GLITZ_PBUFFER_WIDTH_MASK | GLITZ_PBUFFER_HEIGHT_MASK; - - pbuffer = glitz_create_pbuffer_drawable (drawable, dformat, - &attributes, mask); + pbuffer = + glitz_create_pbuffer_drawable (drawable, dformat, + glitz_surface_get_width (surface), + glitz_surface_get_height (surface)); if (!pbuffer) return CAIRO_INT_STATUS_UNSUPPORTED; - if (glitz_drawable_get_width (pbuffer) < attributes.width || - glitz_drawable_get_height (pbuffer) < attributes.height) { - glitz_drawable_destroy (pbuffer); - return CAIRO_INT_STATUS_UNSUPPORTED; - } - glitz_surface_attach (surface, pbuffer, GLITZ_DRAWABLE_BUFFER_FRONT_COLOR, 0, 0); @@@@ -457,7 +448,7 @@@@ if (gformat == NULL) return NULL; - surface = glitz_surface_create (drawable, gformat, width, height); + surface = glitz_surface_create (drawable, gformat, width, height, 0, NULL); if (surface == NULL) return NULL; @@@@ -510,7 +501,8 @@@@ int width, int height, glitz_buffer_t *geometry, - glitz_geometry_format_t *format) + glitz_geometry_format_t *format, + int count) { if (_glitz_ensure_target (dst)) return CAIRO_INT_STATUS_UNSUPPORTED; @@@@ -518,9 +510,10 @@@@ if (glitz_surface_get_status (dst)) return CAIRO_STATUS_NO_TARGET_SURFACE; - glitz_set_geometry (dst, - 0, 0, - format, geometry); + if (geometry) { + glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_VERTEX, format, geometry); + glitz_set_array (dst, 0, 2, count, 0, 0); + } glitz_composite (op, src, @@@@ -531,7 +524,7 @@@@ dst_x, dst_y, width, height); - glitz_set_geometry (dst, 0, 0, NULL, NULL); + glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_NONE, NULL, NULL); if (glitz_surface_get_status (dst) == GLITZ_STATUS_NOT_SUPPORTED) return CAIRO_INT_STATUS_UNSUPPORTED; @@@@ -589,7 +582,7 @@@@ mask_x, mask_y, dst_x, dst_y, width, height, - NULL, NULL); + NULL, NULL, 0); if (src_clone) cairo_surface_destroy (&src_clone->base); @@@@ -624,16 +617,16 @@@@ glitz_buffer_t *buffer; glitz_geometry_format_t gf; cairo_int_status_t status; - int width, height; + int width, height, count; void *data; - gf.mode = GLITZ_GEOMETRY_MODE_DIRECT; - gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_SHARP; - gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS; - gf.type = GLITZ_DATA_TYPE_FLOAT; - gf.first = 0; - gf.count = n_rects * 4; + gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS; + gf.vertex.type = GLITZ_DATA_TYPE_FLOAT; + gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t); + gf.vertex.attributes = 0; + count = n_rects * 4; + data = malloc (n_rects * 8 * sizeof (glitz_float_t)); if (!data) return CAIRO_STATUS_NO_MEMORY; @@@@ -678,7 +671,7 @@@@ 0, 0, 0, 0, width, height, - buffer, &gf); + buffer, &gf, count); glitz_surface_destroy (solid); glitz_buffer_destroy (buffer); @@@@ -715,7 +708,7 @@@@ glitz_buffer_t *buffer; glitz_geometry_format_t gf; cairo_int_status_t status; - int x_dst, y_dst, x_rel, y_rel, width, height; + int x_dst, y_dst, x_rel, y_rel, width, height, count; void *data; if (op == CAIRO_OPERATOR_SATURATE) @@@@ -724,12 +717,12 @@@@ if (generic_src->backend != dst->base.backend) return CAIRO_INT_STATUS_UNSUPPORTED; - gf.mode = GLITZ_GEOMETRY_MODE_DIRECT; - gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_GOOD_SMOOTH; - gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS; - gf.type = GLITZ_DATA_TYPE_FLOAT; - gf.first = 0; - gf.count = n_traps * 4; + gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS; + gf.vertex.type = GLITZ_DATA_TYPE_FLOAT; + gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t); + gf.vertex.attributes = 0; + + count = n_traps * 4; data = malloc (n_traps * 8 * sizeof (glitz_float_t)); if (!data) @@@@ -795,7 +788,7 @@@@ 0, 0, x_dst, y_dst, width, height, - buffer, &gf); + buffer, &gf, count); if (mask) glitz_surface_destroy (mask); d3 20 @ 1.3 log @Update to 0.3.0, this closes PR pkg/29331. Lots of bugfixes, improvements, etc... please see the NEWS file. @ text @d1 1 a1 1 $NetBSD$ @ 1.2 log @Update cairo to 0.2.0. Changes include: 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 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. @ text @d1 1 a1 1 $NetBSD: patch-aa,v 1.1 2004/07/03 23:01:36 recht Exp $ d3 61 a63 5 --- src/cairo_image_surface.c.orig 2004-04-14 03:06:15.000000000 +0200 +++ src/cairo_image_surface.c @@@@ -462,7 +462,17 @@@@ cairo_int_status_t _cairo_image_surface_set_clip_region (cairo_image_surface_t *surface, pixman_region16_t *region) d65 90 a154 3 - pixman_image_set_clip_region (surface->pixman_image, region); + if (region) { + pixman_region16_t *rcopy; d156 10 a165 8 + rcopy = pixman_region_create(); + /* pixman_image_set_clip_region expects to take ownership of the + * passed-in region, so we create a copy to give it. */ + pixman_region_copy (rcopy, region); + pixman_image_set_clip_region (surface->pixman_image, rcopy); + } else { + pixman_image_set_clip_region (surface->pixman_image, region); + } d167 3 a169 2 return CAIRO_STATUS_SUCCESS; } @ 1.1 log @Add a patch from the mono project: pixman_image_set_clip_region expects to take ownership of the passed-in region, so we create a copy to give it. bump PKGREVISION to 1 @ text @d1 1 a1 1 $NetBSD$ @