| Release 1.14.2 (2014-03-09 Bryce Harrington <bryce@osg.samsung.com>) |
| ==================================================================== |
| This release provides collected bug fixes, along with one feature |
| enhancement for the xcb backend, and a small performance improvement for |
| fonts. |
| |
| The running theme of the bug fixes is platform-specific issues, both |
| build and run-time. Platforms with fixes include Sparc, AIX, Windows |
| (mingw), and Windows (MSVC8). Memory leaks, valgrind issues, and PDF |
| issues round out our list. |
| |
| It's come to light that changes in cairo 1.14 resulted in breakage on |
| MacOS X 10.4. We've not yet determined whether to fix up the support, |
| or excise the 10.4-specific code and support only OS X 10.5 or newer. |
| Meantime, we'll only advertise cairo as working on OS X 10.5. |
| |
| Features |
| -------- |
| * Improve xcb's handling of per-screen subpixel ordering. If no |
| Xft.rgba property is specified, default to the screen's subpixel |
| order. |
| |
| API Changes |
| ----------- |
| None |
| |
| Dependency Changes |
| ------------------ |
| None |
| |
| Performance Optimizations |
| ------------------------- |
| * Improve performance of cpu_to_be32 and be32_to_cpu, making truetype |
| subsetting of large fonts run about 15% faster. |
| |
| Bug Fixes |
| --------- |
| * Fix unaligned access on sparc with the compact font format (CFF). |
| Unlike truetype, all data in CFF is not aligned. |
| (Debian bug #712836) |
| * Fix unaligned access on sparc with tor-scan-converter's memory pool. |
| * Fix crash when loading a PDF with a transformed image. |
| (fdo bug #85151) |
| * Fix regression on mingw for bigendian test due to removal of file |
| extension for executables. |
| (fdo bug #85120) |
| * Fix handling of backslash in PDF interpreter |
| (fdo bug #85662) |
| * Fix crash in xlib and xcb renderers when swapping a 0-sized glyph |
| * Fix bug with RTL text in PDF operators |
| (fdo bug #86461) |
| * Fix compilation 'cairo-path-stroke-traps.c' with MSVC8 |
| (fdo bug #84908) |
| * Fix crash in _fill_xrgb32_lerp_opaque_spans when a span length is |
| negative. |
| * Fix valgrind error by releasing pattern created by |
| cairo_pattern_create_rgb(). |
| * Fix valgrind errors when running cairo-test-suite. |
| * Fix memory leak in recording surface replays |
| (fdo bug #87898) |
| * Fix destruction of fonts in api-special-cases test. |
| (fdo bug #87567) |
| * Fix duplicated surface push on similar-image, preventing trivial GTK3 |
| program traces from being replayable, with an error message about |
| invalid values for the size of the input. |
| (fdo bug #73580) |
| * Fix crash when win32 surface's image size does not cover the entire |
| surface. |
| (fdo bug #53121) |
| * Fix crash due to obsolete CGFontGetGlyphPath call |
| (fdo bug #84324) |
| * Fix several build issues on AIX |
| (fdo bugs #89338, #89340, #89356, #89354) |
| * Fix various documentation warnings and errors |
| |
| Release 1.14.0 (2014-10-13 Bryce Harrington <bryce@osg.samsung.com>) |
| ==================================================================== |
| Hard to believe it's been over a year since our last release, but it's |
| not for lack of activity. This release includes contributions of a wide |
| assortment of bug fixes, build system improvements, warnings cleanups, |
| codebase refactoring, test suite repairs, and static analysis work. |
| |
| This release is lighter on features (compared with 1.12.10) but includes |
| a highly demanded rehaul of our image downscaling functionality, which |
| solves a serious problem experienced by Inkscape users when shrinking |
| embedded bitmaps in SVG files. The new scaling algorithms are used by |
| the image backend and by other backends as needed for fallbacks. |
| |
| |
| Features |
| -------- |
| |
| Filtering improvements for the image backend, in particular |
| down-scaling of images produces filtered images that depend on all the |
| pixels of the source. When using the image backend you get the |
| following settings: |
| |
| CAIRO_FILTER_GOOD: uses a box filter for scales less than .75 in |
| either direction. For scales larger than this, the same filter as |
| CAIRO_FILTER_BILINEAR is used. |
| |
| CAIRO_FILTER_BEST: uses a Catmull-Rom filter always. When upscaling |
| more than 2x this will produce anti-aliased square pixels, similar |
| to OS/X. |
| |
| CAIRO_FILTER_GAUSSIAN: uses PIXMAN_FILTER_BEST, which in current |
| pixman is the same as BILINEAR. (This is subject to change in the |
| future). |
| |
| xlib and xcb also use the image fallback for GOOD/BEST filters, but |
| note that other backends do not implement these filtering fixes yet, |
| however other actions may cause them to use an image fallback which |
| will cause these filters to be used. |
| |
| Improve handling of device transformation and scaling, allowing Cairo |
| to now support scaling at a device level, permitting easier, more |
| transparent HiDPI support. |
| |
| Support JBIG2 mime data in PDF. This allows embedding of more |
| compressed JPEG formats within PDF, rather than including the full |
| uncompressed image. Also, reduce the number of transparency groups |
| used by PDF to keep the file size small and viewing/printing of the |
| PDF fast. |
| |
| Expand the embedding section to include stencil mask support. |
| |
| Reorder font declarations to be in natural order. |
| |
| Update the Skia backend to build against current Skia (as of June |
| 2014). |
| |
| Drop Link-Time Optimization (LTO) support from build system. This |
| seems to have caused much trouble for unclear benefit, and most |
| distros are reverting or disabling it anyway. |
| |
| Optimize VBO size on GL to 1M and to 16k for EGL. This improves |
| (theoretical) performance for desktop GLX use cases while avoiding |
| hitting VBO memory size limitations on embedded devices. |
| |
| API Changes |
| ----------- |
| |
| cairo_surface_set_device_scale, cairo_surface_get_device_scale: |
| |
| Sets a scale that is multiplied to the device coordinates |
| determined by the CTM when drawing to @surface. One common use for |
| this is to render to very high resolution display devices at a scale |
| factor, so that code that assumes 1 pixel will be a certain size |
| will still work. |
| |
| cairo_egl_device_get_display, cairo_egl_device_get_context: |
| |
| Support get/set of EGLContext and EGLDisplay for egl-based cairo |
| devices, similar to GLX. |
| |
| Dependency Changes |
| ------------------ |
| |
| Cairo now requires glib 2.14 for its gobject helper functions, |
| and pixman 0.30 for downscaling. |
| |
| |
| Bug fixes |
| --------- |
| |
| Don't embed CMYK Jpeg images in svg. |
| |
| Fix tests to place output in proper location. |
| |
| Fix determination of alpha for all surfaces when recording. |
| |
| Extend oversize check to cairo_gl_surface_create_for_texture, so an |
| error surface is returned if the texture is too large to render to. |
| |
| Fix embedding of mime data in PDF and PS files. |
| |
| Remove useless error handling in *_reply() functions in XCB. |
| |
| Fix a double-free exposed by multithreaded apps creating and |
| destroying the same font concurrently. |
| https://bugs.freedesktop.org/show_bug.cgi?id=69470 |
| |
| Fix corrupt stacks produced by bugs in operand emission for trace. |
| |
| Fix out of bounds array access in format cache for xlib |
| |
| Don't rename glyphs used by seac operator. This can cause certain |
| combined characters to use their decorations (e.g. umlauts on รถ) to be |
| lost during printing of PDFs using evince. |
| https://bugs.freedesktop.org/show_bug.cgi?id=70364 |
| |
| Fix crash on calling cairo_create with a finished surface |
| |
| Fix SSIZE_T definition problem when making with MSYS on Windows7 |
| |
| Fix one off issue in gl context cleanup |
| |
| Fix usage of CAIRO_STACK_ARRAY_LENGTH |
| |
| Fix rectangle stroke with non rectilinear pen |
| |
| Fix imagemask with pattern source failure on some printers. This bug |
| could cause files converted using pdftops to fail for example on Ricoh |
| printers, or opening in Adobe Distiller on Windows. |
| https://bugs.freedesktop.org/show_bug.cgi?id=69485 |
| |
| Fix whitespace in font names |
| |
| Fix page size in generated PDFs. When printing using pdftocairo on |
| larger page sizes, such as 11x17, the image would be cropped to letter |
| size. |
| https://bugs.freedesktop.org/show_bug.cgi?id=73452 |
| |
| Fix path-currentpoint test by preserving current-point in |
| copy_path()/append_path() sequence |
| |
| Fix generation of HTML in code docs for |
| cairo-format-stride-for-width. Raw HTML code was being passed |
| to the browser, instead of displaying normally. |
| https://bugs.freedesktop.org/show_bug.cgi?id=63257 |
| |
| Fix spelling of "tessellator" throughout code. We're using the |
| American rather than British spelling of this word. |
| https://bugs.freedesktop.org/show_bug.cgi?id=50411 |
| |
| Fix crash in pixman_image_composite32 |
| |
| Fix crash when trying to modify a (const) all-clipped cairo_clip_t |
| https://bugs.freedesktop.org/show_bug.cgi?id=75819 |
| |
| Add check_composite method to all compositors, to fix crashes in the |
| test suite. |
| |
| Fix crash in Firefox when scrolling on certain pages. |
| |
| Fix memory leaks found by static analysis. |
| |
| Fix build of any2ppm if fork is not available. |
| |
| Fix broken build for Qt backend, due to missing libstdc++. |
| |
| Fix typo in two cairo_uint128 functions. Fixes potential build issues |
| on systems without a uint128 type. |
| |
| Fix build when --enable-pdf=no |
| |
| Fix cache_frozen assertions for Win32 print. |
| |
| Correctly check for xcb image surface for inplace upload |
| |
| Fix webkit-based web browser crashes due to empty boxes by skipping |
| over them when tesselating. |
| |
| Make pixman, libpng, and zlib paths commandline configurable for win32 |
| builds. |
| |
| Fix image scale on Win32 when GDI scale is not identity. |
| |
| Fix float endian configure test when using clang -O4 |
| |
| Fix compilation with Android bionic libc |
| |
| Don't try to build util/sphinx on Windows |
| |
| Fix loss of precision when emitting joins. This was caused by |
| discrepancies in line gradients when passing trapezoids around. |
| |
| Fix loss of precision and associated rendering issues in |
| cairo-tor-scan-converter from projection onto sample grid. |
| |
| Fix pixman oversampling of neighbouring edges within a cell by |
| eliminating self-intersections for the pixman traps compositor. |
| |
| Fix multi-line string splitting in PDFs |
| |
| Various cleanups and fixes to warnings, documentation, tests, and |
| build system. Improve error handling and return value checks. |
| Cleanup XFAIL tests and reference images. Cover recently added |
| functionality. |
| |
| |
| Release 1.12.16 (2013-08-21 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| Thanks to everybody who reported a bug and helped us develop a fix, |
| we have amassed quite a few bug fixes. There are still more outstanding |
| bugs that seek attention and a little bit of TLC, but this release has |
| been delayed long enough... |
| |
| Bug fixes |
| --------- |
| |
| Set the correct orientation for simple boxes with a negative scale |
| factor. |
| |
| Fix the creation of the shading dictionary in PDF. |
| |
| Fix a crash in PDF when incorporating an image with CAIRO_EXTEND_PAD. |
| https://bugs.freedesktop.org/show_bug.cgi?id=61451 |
| |
| Avoid upscaling bitmap fonts if possible. |
| |
| Fix an assertion failure within the mempool allocator for shared memory. |
| |
| Fix allocation size for CFF subsets. |
| |
| Export cairo_matrix_t for GObject bindings. |
| |
| Fix a double free in the Quartz backend. |
| https://bugs.freedesktop.org/show_bug.cgi?id=62885 |
| |
| Fix origin of GDI StretchBlits for the Windows backend |
| https://bugs.freedesktop.org/show_bug.cgi?id=61876 |
| |
| Fix error propagation for requests to create a similar surface with |
| negative size. |
| https://bugs.freedesktop.org/show_bug.cgi?id=63196 |
| |
| Fix complex clipping of trapezoids with regions |
| https://bugzilla.gnome.org/show_bug.cgi?id=697357 |
| |
| Stop leaking the image data when loading PNGs |
| |
| Fix unbounded operations with a clip mask through the span compositor |
| https://bugs.freedesktop.org/show_bug.cgi?id=61592 |
| |
| Add missing checks before rendering to a finished surface - so we return |
| an error rather than hit an assert. |
| https://bugs.freedesktop.org/show_bug.cgi?id=68014 |
| |
| Prevent an assertion failure when creating similar GL surfaces larger |
| than supported by hardware. |
| |
| Prevent a double free of a similar image under Windows. |
| https://bugs.freedesktop.org/show_bug.cgi?id=63787 |
| |
| |
| Release 1.12.14 (2013-02-10 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| In the last week we had a few more bugs reported and promptly resolved. |
| As these are a combination of regressions and stability issues, it is |
| time for a prompt update and release. Many thanks to everyone for |
| testing and reporting issues, and helping to make Cairo better. |
| |
| Bug fixes |
| --------- |
| |
| Prevent user callbacks accessing user-data during destroy to prevent |
| use-after-free bugs. |
| https://bugzilla.mozilla.org/show_bug.cgi?id=722975 |
| |
| Use standard names for glyphs in subset fonts (PDF). |
| https://bugs.freedesktop.org/show_bug.cgi?id=60248 |
| |
| Fix detection of Win98. The logic for detecting Win98 (and its broken |
| AlphaBlend()) was inverted, disabling AlphaBlend() for everyone. |
| |
| Prevent numeric overflow from extrapolating polygon edges to the clip |
| boundary and causing severe render artifacts. |
| https://bugs.freedesktop.org/show_bug.cgi?id=60489 |
| |
| Fix computation of glyph string coordinates when breaking up runs |
| for xlib. |
| |
| Fix an assertion in the win32 backend for failing to clear its |
| similar-images. |
| https://bugs.freedesktop.org/show_bug.cgi?id=60519 |
| |
| |
| Release 1.12.12 (2013-01-31 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| The goal of this release is to fix the synchronisation problems that |
| were exhibited in the SHM transport for cairo-xlib. This cropped up |
| any place that tried to rapidly push fresh pixel data to the X server |
| through an ordinary image surface, such as gimp-2.9 and evince. |
| |
| Bug fixes |
| --------- |
| |
| Avoid replacing the entire image when uploading subimages |
| https://bugs.freedesktop.org/show_bug.cgi?id=59635 |
| |
| Force synchronisation for scratch SHM image buffers, so that we do |
| not overwrite data as it is being read by X. |
| https://bugs.freedesktop.org/show_bug.cgi?id=59635 (also) |
| |
| Fix typos in detecting multisampling for the GL (MSAA) backend. |
| |
| Fix a memory leak in the GL (MSAA) backend. |
| |
| Fix a reference counting bug when mapping a GL surface to an image. |
| |
| |
| Release 1.12.10 (2013-01-16 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| A heap of bug fixes everywhere, and the gradual completion of the MSAA |
| backend for cairo-gl. Perhaps the most noteworthy set of the bugfixes |
| was the crusage lead by Behdad Eshfabod to make font handling by |
| pango/cairo/fontconfig fully threadsafe. This testing revealed a couple |
| of races that needed fixing in Cairo's scaled-font and glyph cache. |
| |
| Bug fixes |
| --------- |
| |
| Append coincident elements to the recording's surface bbtree so that |
| the list is not corrupted and the overlapping elements lost. |
| |
| Fix cairo-trace to correctly record map-to-image/unmap-image and then |
| replay them. |
| |
| Ignore MappingNotifies when running the XCB testsuite as they are sent |
| to all clients when the keyboard changes. The testsuite would detect |
| the unexpected event and complain. |
| |
| Handle very large images in the XCB backend. |
| |
| Fix a memory leak in the xlib/shm layer, and prevent use of the SHM |
| surfaces after the display is closed. |
| https://bugs.freedesktop.org/show_bug.cgi?id=58253 |
| |
| Handle resizing of bitmap fonts, in preparation for a fix to |
| fontconfig to correctly pass on the user request for scaling. |
| |
| Always include subroutine 4 (hint replacement idion) when subsetting |
| type 1 fonts in order to prevent a crash in cgpdftops on Mac OS/X |
| |
| Fix a couple of typos in the cairo-gobject.h header files for |
| introspection. |
| |
| Prevent a mutex deadlock when freeing a scaled-glyph containing a |
| recording-surface that itself references another scaled-glyph. |
| https://bugs.freedesktop.org/show_bug.cgi?id=54950 |
| |
| Make scaled-font cache actually thread-safe and prevent |
| use-after-frees. |
| |
| Restore support for older versions of XRender. A couple of typos and a |
| few forgotten chunks prevented the xlib compositor from running |
| correctly with XRender < 0.10. Note that there are still a few |
| regressions remaining. |
| |
| |
| Release 1.12.8 (2012-11-24 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| Another couple of weeks and a few more bugs have been found and fixed, |
| it is time to push the next point release. Many thanks to everyone who |
| reported their issues and helped us track down the bugs and helped |
| testing the fixes. |
| |
| Bug fixes |
| --------- |
| |
| Expand the sanity checking for broken combinations of XSendEvent and |
| ShmCompletionEvent. |
| |
| Notice that "The X.Org Foundation" sometimes also identifies itself |
| as "The Xorg Foundation". |
| |
| Handle various ages of libXext and its Shm headers. |
| |
| Fix the invalid clipping of the source drawable when using SHM |
| transport to upload images. |
| https://bugs.freedesktop.org/show_bug.cgi?id=56547 |
| |
| Handle all Type1 postscript operators for better font compatibility. |
| https://bugs.freedesktop.org/show_bug.cgi?id=56265 |
| |
| Fix a couple of memory leaks in Type1 font subsetting |
| https://bugs.freedesktop.org/show_bug.cgi?id=56566 |
| |
| Tighten the evaluation of the start/stop pen vertices, and catch a few |
| instances where we would use a fan instead of a bevel. |
| https://bugs.freedesktop.org/show_bug.cgi?id=56432 |
| |
| Fix assumption that geometric clipping always succeeds with the |
| span-compositor. |
| https://bugs.freedesktop.org/show_bug.cgi?id=56574 |
| |
| Fix call to spline intersection when evaluating whether a stoke is |
| visible. |
| |
| Remember to copy inferior sources when using SHM to readback the |
| surface for use as a source. |
| |
| Release 1.12.6 (2012-10-22 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| Thanks to everyone who download cairo-1.12.4 and gave us their feedback. |
| It truly was invaluable and has helped us to fix many portability issues |
| that crept in with some of the new features. This release aims to fix |
| those stability issues and run on a wider range of systems. |
| |
| Bug fixes |
| --------- |
| |
| Fix the recording surface to actually snapshot the source and so fix |
| PDF drawing. |
| |
| Calling XSendEvent with an XShmCompletionEvent is incompatabile with |
| older Xorg servers. |
| |
| Reorder CloseDisplay chain so that XShm is not reinstantiated after |
| shutdown, causing a potential crash if the Display was immediately |
| recreated using the same memory address. |
| |
| Make sure that the Xserver has attached to the SHM segment before |
| deleting it from the global namespace on systems that do not support |
| deferred deletion. |
| |
| Type1 subsetting support for PDF (and PS) was once again improved to |
| work with a larger number of PDF readers. |
| |
| GLESv2 build fixes and improved support for embedded GPUs. |
| |
| Tweak the invisible pen detection for applications that are currently |
| using too large values for geometric tolerance. |
| |
| A build fix for older freetype libraries. |
| |
| |
| Release 1.12.4 (2012-10-05 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| More bugs, and more importantly, more fixes. On the cairo-gl side, we |
| have refinements to the MSAA compositor which enables hardware |
| acceleration of comparatively low-quality antialiasing - which is useful |
| in animations and on very high density screens. For cairo-xlib, we have |
| finally enabled SHM transport for image transfers to and from the X |
| server. A long standing required feature, SHM transport offers a notable |
| reduction in rendering latency by reducing the number of copies |
| required to upload image data - given hardware and driver support, |
| cairo-xlib can now perform zero copy uploads onto the GPU. And as usual |
| Adrian Johnson has been very busy fixing many different corner cases in |
| cairo-pdf, impoving opacity groups and font subsetting. Last, but not |
| least, for cairo-image Sรธren Sandmann Pedersen added support for |
| rendering glyphs to pixman and using that from within cairo. The new |
| glyph rendering facility reduces the overhead for setting up the |
| compositing operation, improving glyph thoughput for the image backend |
| by a factor of about 4. And before he did so, he also fixed up a few |
| bugs in the existing glyph rendering code. So many thanks to Andrea |
| Canciani, Adrian Johnson, Chuanbo Weng, Dongyeon Kim, Henry Song, Martin |
| Robinson, Sรธren Sandmann Pedersen and Uli Schlachter for their |
| contributions, finding and fixing bugs. |
| |
| Bug fixes |
| --------- |
| |
| Interior boxes were being dropped when amalgamating regions during |
| tesselation. |
| https://bugs.freedesktop.org/show_bug.cgi?id=49446 |
| |
| Allow building without gtk-doc installed |
| |
| Invalid edge generation whilst reducing complex polygons. |
| https://bugs.freedesktop.org/show_bug.cgi?id=50852 |
| |
| Stroking around tight cusps |
| |
| Use locale correct formats for reading font subsetting and valid |
| buffers. |
| https://bugs.freedesktop.org/show_bug.cgi?id=51443 |
| |
| Ensure that the type1 subset includes all the glyph encodings |
| https://bugs.freedesktop.org/show_bug.cgi?id=53040 |
| |
| Upload the whole source for a repeating pattern. |
| https://bugs.freedesktop.org/show_bug.cgi?id=51910 |
| |
| Fix damage tracking to handle continuation chunks corectly and so |
| prevent crashes on win32. |
| https://bugs.freedesktop.org/show_bug.cgi?id=53384 |
| |
| Avoid emitting miter joins for degenerate line segments |
| https://bugzilla.mozilla.org/show_bug.cgi?id=407107 |
| |
| Convert the relative path semgents into the backend coordinates |
| and then back again to user coordinates (cairo_copy_path, |
| cairo_append_path) |
| https://bugs.freedesktop.org/show_bug.cgi?id=54732 |
| |
| Fix extents computations for a degenerate path consisting only of a |
| move-to |
| https://bugs.freedesktop.org/show_bug.cgi?id=54549 |
| |
| Prevent crashing on a degenerate project edge after polygon |
| intersection |
| https://bugs.freedesktop.org/show_bug.cgi?id=54822 |
| |
| |
| |
| Release 1.12.2 (2012-04-29 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| 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. As |
| a result Adrian Johnson, Alexandros Frantzis, Andrea Canciani, Kalev |
| Lember, Maarten Bosman, Marcus Meissner, Nis Martensen and Uli Schlachter |
| have squashed many more bugs and improved the documentation. I would |
| strongly recommend everyone to upgrade to cairo-1.12.2. |
| -Chris |
| |
| Bug fixes |
| --------- |
| |
| Allow applications to create 0x0 xlib surfaces, such as used by LibreOffice. |
| https://bugs.freedesktop.org/show_bug.cgi?id=49118 |
| |
| Trim composite extents for SOURCE/CLEAR operators to the mask. |
| |
| Use fallback fonts in PDF for unhandled computed glyph widths |
| https://bugs.freedesktop.org/show_bug.cgi?id=48349 |
| |
| Handle snapshots of recording surfaces for analysing pattern extents. |
| Fixes a regression of reporting the PDF bounding box as being the page size. |
| |
| Fix allocation size for PDF pattern ids. |
| Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49089 |
| |
| Fix emission of rectilinear dashed segments, with and without scaling, and |
| application of degenerate line joins. |
| |
| Clamp unbounded fixup polygons to the clip extents. |
| |
| Prevent infinite loop due to rounding errors whilst incrementing along dashes. |
| |
| Prevent overflow for inline a8 span filling. |
| |
| Miscellaneous build fixes for Cygwin on Windows and Solaris. |
| |
| Release 1.12.0 (2012-03-23 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| It's taken over 18 months, but the wait is finally over. A new cairo release! |
| We are pleased to annouce a new stable release of Cairo that brings many |
| new features and performance improvements, all whilst maintaining |
| compatibility with cairo-1.0 and all releases since. We recommend anyone |
| using a previous release of Cairo to upgrade to 1.12.0. |
| |
| The major feature of this release is the introduction of a new procedural |
| pattern; the mesh gradient. This, albeit complex, gradient is constructed |
| from a set of cubic Bezier patches and is a superset of all other gradient |
| surfaces which allows for the construction of incredibily detailed patterns. |
| In PDF parlance, the mesh gradient corresponds with type 7 patterns. Many |
| thanks to Andrea Canciani for bringing this to Cairo, and for his work on |
| making gradient handling robust. |
| |
| Not content with just adding another procedural pattern, Cairo 1.12 also |
| adds new API to create a callback pattern, |
| cairo_pattern_create_raster_source, that allows the application to |
| provide the pixel data for the region of interest at the time of |
| rendering. This can be used for instance, by an application to decode |
| compressed images on demand and to keep a cache of those decompressed |
| images, independently of Cairo. When combined with the recording |
| surface, it should form a useful basis for a deferred renderer. |
| |
| With the release of cairo-1.12, we also introduce a new supported |
| backend for interoperating with X using XCB. Uli Schlachter, also |
| maintainer of awesome and contributor to libxcb, has volunteered to |
| maintain cairo-xcb for us. Thanks Uli! |
| |
| For cairo-1.12, we have also added some common API to address any |
| surface as an image and so allow direct modification of the raster data. |
| Previously, only the Quartz and Win32 backends supported a very narrow |
| interface to allow for efficient pixel upload. Now with |
| cairo_surface_create_similar_image, cairo_surface_map_to_image, and |
| cairo_surface_unmap_image, Cairo exports a consistent method for |
| treating those surfaces as an image and so allow modification inplace. |
| These are the same routines used internally, and should support |
| efficient transfer or direct mapping of the target surfaces as |
| applicable. |
| |
| Another focus over the past year has been to address many performance |
| issues, without sacrificing the composition model. To accomplish the |
| goal, once again the rasterisation pipeline was overhauled and made |
| explicit, giving the backends the freedom to implement their own |
| specific pipeline whilst also providing a library of common routines |
| from which to build the pipeline. For instance, this allows the image |
| backend and the gl backend to composite scan line primitives inplace, |
| and to then implement custom fallbacks to catch the corner cases that do |
| not map onto their fastest paths. Similarly, this allows for the Xlib |
| backend to implement trapezoidation without compromising the other |
| backends, yet still allow for the pipeline to be used elsewhere for |
| testing and fallbacks. Clipping was once again overhauled, so that the |
| common cases for the raster pipelines could be captured and processed |
| with fast paths with the emphasis on performing geometric clipping to |
| reduce the frequency of using multi-pass clipmasks. Stroking was made |
| faster, both by providing specialised fast-paths for simple, yet frequent, |
| cases (such as stroking around a rectangle) and by reducing the number |
| of edges generated by the general stroker. |
| |
| As part of the focus on performance, Cairo 1.12 introduces some |
| antialias hints (NONE, FAST, GOOD, BEST) that are interpolated by the |
| rasterisers to fine tune their performance versus quality. Cairo 1.12 |
| also introduces a new observation architecture, |
| cairo_surface_observer_t, which can be used to analyse the amount of |
| time consumed by drawing commands and help identify inefficiencies in |
| both Cairo and the application. |
| |
| Last, but by no means least, the OpenGL backend has seen significant |
| work including the port to GLESv2 and the exploitation of advanced |
| hardware features. Interesting times. |
| |
| As always, I would like to thank everyone who contributed to Cairo, |
| not only through writing code, but also submitting documentation, bug |
| reports, suggestions and generally having fun with Cairo! In particular |
| though this release could not have happened without the efforts of |
| Adrian Johnson, Alexandros Frantiz, Andrea Canicani, Martin Robinson, |
| Nis Martensen, and Uli Schlachter. Thanks. |
| -Chris |
| |
| Snapshot 1.11.4 (2012-13-12) |
| ============================ |
| The cairo community is pleased to finally announce the long aniticpated |
| release candidate for 1.12, 1.11.4, of the cairo graphics library. This |
| is the first major update to cairo in over a year and brings a large |
| number of new features; undoubtably a few bugs as well. |
| |
| While many people have contributed and have helped to test the release, |
| providing feedback on 1.10 and suggesting improvements, this release |
| is the result of a few persevering souls who deserve recognition for their |
| outstanding contributions: Andrea Canciani (all round bug fixing, |
| performance tuning and master of the gradients), Adrian Johnson (PDF |
| supremo) and Uli Schlachter (who stepped forward as maintainer for the |
| XCB backend). |
| |
| Major additions since 1.11.2: |
| |
| * cairo_surface_map_to_image API for pixel level access to any surface |
| |
| * New antialias hints to control the trade-off between speed and quality |
| |
| * A callback pattern, cairo_pattern_create_raster_source, for lazy |
| decoding of image data. |
| |
| * cairo_surface_observer_t, a new type of surface to gather performance |
| statistics |
| |
| * XCB as a supported backend |
| |
| * A rewritten compositor pipeline for performance improvements for, but not |
| limited to, the xlib and image backends. |
| From ION and PineView through to SandyBridge, every machine I have shows |
| across the board performance improvement on the cairo-traces: |
| |
| i5-2520m gnome-system-monitor: 5.97x speedup |
| pnv gnome-system-monitor: 4.86x speedup |
| i5-2520m firefox-asteroids: 4.66x speedup |
| pnv firefox-asteroids: 4.43x speedup |
| image firefox-canvas: 3.82x speedup |
| i5-2520m firefox-canvas-alpha: 3.49x speedup |
| image firefox-asteroids: 2.87x speedup |
| pnv firefox-talos-svg: 2.83x speedup |
| ion grads-heat-map: 2.75x speedup |
| pnv firefox-canvas-alpha: 2.66x speedup |
| image gnome-system-monitor: 2.66x speedup |
| image swfdec-giant-steps: 2.46x speedup |
| image firefox-canvas-alpha: 2.14x speedup |
| i5-2520m firefox-talos-svg: 2.03x speedup |
| image grads-heat-map: 2.02x speedup |
| ion gnome-system-monitor: 2.00x speedup |
| pnv firefox-particles: 1.99x speedup |
| i5-2520m grads-heat-map: 1.96x speedup |
| pnv firefox-canvas: 1.92x speedup |
| ion firefox-particles: 1.80x speedup |
| image poppler-reseau: 1.77x speedup |
| pnv xfce4-terminal-a1: 1.72x speedup |
| image firefox-talos-svg: 1.65x speedup |
| pnv grads-heat-map: 1.63x speedup |
| i5-2520m firefox-canvas: 1.63x speedup |
| pnv swfdec-youtube: 1.62x speedup |
| image ocitysmap: 1.59x speedup |
| i5-2520m firefox-fishbowl: 1.56x speedup |
| i5-2520m poppler-reseau: 1.50x speedup |
| i5-2520m evolution: 1.50x speedup |
| i5-2520m midori-zoomed: 1.43x speedup |
| pnv firefox-planet-gnome: 1.42x speedup |
| i5-2520m firefox-talos-gfx: 1.41x speedup |
| i5-2520m gvim: 1.41x speedup |
| pnv ocitysmap: 1.37x speedup |
| image poppler: 1.31x speedup |
| ion firefox-canvas-alpha: 1.35x speedup |
| ion firefox-talos-svg: 1.34x speedup |
| i5-2520m ocitysmap: 1.32x speedup |
| pnv poppler-reseau: 1.31x speedup |
| i5-2520m firefox-planet-gnome: 1.31x speedup |
| pnv firefox-fishbowl: 1.30x speedup |
| pnv evolution: 1.28x speedup |
| image gvim: 1.27x speedup |
| i5-2520m swfdec-youtube: 1.25x speedup |
| pnv gnome-terminal-vim: 1.27x speedup |
| pnv gvim: 1.25x speedup |
| image firefox-planet-gnome: 1.25x speedup |
| image swfdec-youtube: 1.25x speedup |
| ... |
| |
| And a plethora of minor improvements everywhere! |
| -Chris |
| |
| Snapshot 1.11.2 (2011-01-23) |
| =========================== |
| |
| In this first snapshot along the way to cairo-1.12.0, we are very excited |
| to announce the introduction of Bezier surface gradients, known as type |
| 6/7 gradients in PS/PDF parlance. This is the culmination of much work by |
| the dynamic duo: Adrian Johnson and Andrea Canciani. Thanks guys! |
| |
| Also, I want to warmly welcome Uli Schlachter who recently joined the |
| Cairo community on a mission. That mission is to make cairo-xcb a |
| supported backend for 1.12. And for this snapshot he has made great |
| strides in fixing all the bugs I had left behind. Thanks Uli! |
| |
| And we have also seen a new contributor, Alexandros Frantzis, who has |
| begun bringing up cairo-gl for GLESv2 devices. Thanks Alex! |
| |
| And lastly, I must also thank Adrian and Andrea for the vast numbers of |
| bugs that they have tackled between them, fixing all those little corner |
| cases that lie hidden until too late. |
| |
| API additions: |
| |
| The ability to construct piece-wise Bezier surface gradients: |
| |
| cairo_pattern_create_mesh |
| |
| constructs a pattern of type CAIRO_PATTERN_TYPE_MESH using |
| |
| cairo_pattern_mesh_begin_patch |
| cairo_pattern_mesh_end_patch |
| cairo_pattern_mesh_curve_to |
| cairo_pattern_mesh_line_to |
| cairo_pattern_mesh_move_to |
| cairo_pattern_mesh_set_control_point |
| cairo_pattern_mesh_set_corner_color_rgb |
| cairo_pattern_mesh_set_corner_color_rgba |
| cairo_pattern_mesh_get_patch_count |
| cairo_pattern_mesh_get_path |
| cairo_pattern_mesh_get_corner_color_rgba |
| cairo_pattern_mesh_get_control_point |
| |
| The introduction of a unique ID accessible via the mime data type: |
| CAIRO_MIME_TYPE_UNIQUE_ID |
| |
| |
| |
| |
| |
| Release 1.10.2 (2010-12-25 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| The cairo community is pleased to announce the 1.10.2 release of the |
| cairo graphics library. This is the first update to cairo's stable 1.10 |
| series and contains a large number of bug fixes. |
| |
| While many people have contributed and have help to test the release, |
| 2 people deserve special recognition for their efforts in tracking down |
| and fixing bugs, Andrea Canciani and Adrian Johnson. Thanks to their |
| tremendous efforts, and of all cairo contributors, it is much |
| appreciated. |
| |
| We recommend everyone upgrade to cairo 1.10.2 and hope that everyone |
| will continue to have lots of fun with cairo! |
| |
| -Chris |
| |
| Bug fixes |
| --------- |
| |
| Fix embedding of grayscale jpegs in PS. |
| https://bugs.freedesktop.org/show_bug.cgi?id=31632 |
| |
| Fix the reported path of extents containing a curve. |
| |
| Fix the compositing of unaligned boxes. |
| |
| Reset the clipper in PDF upon finish. |
| |
| Fix degenerates arcs to become a degenerate line. |
| |
| Build support for autoconf 2.67 |
| |
| Fix painting of transformed patterns in PS |
| |
| Fix the EPS bounding box for PS |
| https://bugs.freedesktop.org/show_bug.cgi?id=24688 |
| |
| Fix the missing content for EPS |
| https://bugs.freedesktop.org/show_bug.cgi?id=24688 |
| |
| Fix regression upon changing page size in PS/PDF |
| https://bugs.freedesktop.org/show_bug.cgi?id=24691 |
| |
| Only use ActualText with PDF-1.5 documents |
| |
| Fix the bbox for type1 fallbacks. |
| |
| Reset the color after ending the context in PDF |
| https://bugs.freedesktop.org/show_bug.cgi?id=31140 |
| |
| Fix the advance of subsetted type1 fonts |
| https://bugs.freedesktop.org/show_bug.cgi?id=31062 |
| |
| Fix handling of EXTEND_NONE gradients for PDF |
| |
| Restrict in-place optimisation for a8 image masks with SOURCE |
| |
| |
| Release 1.10.0 (2010-09-06 Chris Wilson <chris@chris-wilson.co.uk>) |
| =================================================================== |
| The cairo community is astounded (and flabbergast) to finally announce |
| the 1.10.0 release of the cairo graphics library. This is a major update |
| to cairo, with new features and enhanced functionality which maintains |
| compatibility for applications written using any previous major cairo |
| release, (1.8, 1.6, 1.4, 1.2, or 1.0). We recommend that anybody using |
| a previous version of cairo upgrade to cairo 1.10.0. |
| |
| One of the more interesting departures for cairo for this release is the |
| inclusion of a tracing utility, cairo-trace. cairo-trace generates a |
| human-readable, replayable, compact representation of the sequences of |
| drawing commands made by an application. This can be used to inspecting |
| applications to understand issues and as a means for profiling |
| real-world usage of cairo. |
| |
| The traces generated by cairo-trace have been collected in |
| |
| 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 further 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%). |
| |
| |
| Release 1.8.8 (2009-06-16 Chris Wilson <chris@chris-wilson.co.uk>) |
| ================================================================== |
| The cairo community is pleased to announce the 1.8.8 release of the |
| cairo graphics library. This is the fourth update to cairo's stable |
| 1.8 series and contains a small number of bug fixes (in particular a |
| few corrections to the documentation and a few fixes in the FreeType font |
| backend). This is being released just over six months after cairo 1.8.6. |
| |
| We recommend that everyone using cairo upgrade to 1.8.8. |
| |
| -Chris |
| |
| Build fixes |
| ----------- |
| There were reports of incompatibilities with the autotools bundled in with |
| the 1.8.6 tarball. This release has been built with automake-1.10.2 and |
| autoconf-2.63. |
| |
| The configure check for FreeType has been improved: |
| |
| typo in check for version of freetype in configure script |
| https://bugs.freedesktop.org/show_bug.cgi?id=19283 |
| |
| Compilation on 64-bit MacOS/X fixes: |
| |
| Cannot build cairo_quartz_font_face_create_for_atsu_font_id on 64-bit Mac OS X |
| https://bugs.freedesktop.org/show_bug.cgi?id=15702 |
| |
| Bug fixes |
| --------- |
| Uninitialised status return within _cairo_clip_intersect_mask(). This caused |
| random crashes and general mayhem as an error could be generated causing all |
| rendering to the context to stop. |
| |
| Avoid transforming nearly-degenerate matrices into degenerate matrices: |
| |
| Painting stops in this case, using -moz-transform: scale, rotate and video |
| https://bugzilla.mozilla.org/show_bug.cgi?id=467423 |
| |
| A few FreeType font handling bugs were fixed: |
| |
| Rendering with PANGO_GRAVITY_EAST leads to different results with image and pdf |
| https://bugs.freedesktop.org/show_bug.cgi?id=21985 |
| |
| Don't call FT_Done_Face() on faces we did not create |
| |
| zombie ft_font_face / ft_unscaled_font mutual referencing problems |
| http://bugs.freedesktop.org/show_bug.cgi?id=21706 |
| |
| Ensure win32 font backend sets the return value to -1 (indicating the absent |
| glyph) if the font index lookup for the unicode character fails. And |
| similarly fix a bug where a fatal error was raised for an invalid glyph. |
| |
| cairo_scaled_font_glyph_extents breaks with invalid glyph id |
| http://bugs.freedesktop.org/show_bug.cgi?id=20255 |
| |
| Various improvements to the documentation, reported by Truc Troung: |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=20095 |
| https://bugs.freedesktop.org/show_bug.cgi?id=20154 |
| https://bugs.freedesktop.org/show_bug.cgi?id=20180 |
| https://bugs.freedesktop.org/show_bug.cgi?id=20183 |
| https://bugs.freedesktop.org/show_bug.cgi?id=20182 |
| https://bugs.freedesktop.org/show_bug.cgi?id=20441 |
| |
| |
| Release 1.8.6 (2008-12-13 Chris Wilson <chris@chris-wilson.co.uk>) |
| ================================================================== |
| The cairo community is pleased to announce the 1.8.6 release of the |
| cairo graphics library. This is the third update to cairo's stable |
| 1.8 series and contains a small number of bug fixes (in particular a |
| few fixes for failures of cairo 1.8.4 on Quartz and PDF, and build fixes for |
| a couple of backends). This is being released just under a month after |
| cairo 1.8.4. |
| |
| We recommend that everyone using cairo upgrade to 1.8.6. |
| |
| -Chris |
| |
| Build fixes |
| ----------- |
| Fix build of DirectFB backend with debugging enabled: |
| |
| Bug in _cairo_directfb_surface_release_source_image function |
| http://bugs.freedesktop.org/show_bug.cgi?id=18322 |
| |
| Fix build on OS/2. |
| |
| Bug fixes |
| --------- |
| Workaround a mis-compilation of cairo_matrix_invert() that generated invalid |
| matrices and triggered assertion failures later. The issue was reported by |
| Peter Hercek. |
| |
| Invalid computation of the modulus: |
| |
| https://bugzilla.mozilla.org/show_bug.cgi?id=466258 |
| |
| Invalid referencing of patterns in the Quartz backend: |
| |
| Failed assertion `CAIRO_REFERENCE_COUNT_HAS_REFERENCE |
| (&pattern->ref_count)' when using cairo quartz backend |
| http://bugs.freedesktop.org/show_bug.cgi?id=18632 |
| |
| Invalid references to glyphs after early culling, causing segmentation faults |
| in the PDF backend: |
| |
| http://lists.cairographics.org/archives/cairo/2008-December/015976.html |
| |
| Check for XRender in the XCB backend, or else we may attempt an invalid memory |
| access: |
| |
| XCB backend fails with missing render. |
| https://bugs.freedesktop.org/show_bug.cgi?id=18588 |
| |
| Release 1.8.4 (2008-11-14 Carl Worth <cworth@cworth.org>) |
| ========================================================= |
| The cairo community is pleased to announce the 1.8.4 release of the |
| cairo graphics library. This is the second update to cairo's stable |
| 1.8 series and contains a small number of bug fixes, (in particular a |
| few fixes for build failures of cairo 1.8.2 on various systems). This |
| is being released just over two weeks after cairo 1.8.2. |
| |
| We recommend that everyone using cairo upgrade to 1.8.4. |
| |
| -Carl |
| |
| Build fixes |
| ----------- |
| Fix build with older XRender that doesn't define RepeatNone: |
| |
| Build of xlib backend fails against old XRender (RepeatNone undeclared) |
| https://bugs.freedesktop.org/show_bug.cgi?id=18385 |
| |
| Fix build with bash version <= 3.0: |
| |
| doltlibtool broken on linux with bash 3.00.0 |
| https://bugs.freedesktop.org/show_bug.cgi?id=18363 |
| |
| Bug fixes |
| --------- |
| Avoid triggering a bug in X.org server 6.9 resulting in a hung machine |
| requiring a reboot: |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2 |
| |
| Fix display of user fonts as exercised by proposed support for type3 |
| fonts in poppler (unsigned promotion fixes): |
| |
| Use cairo user-font for Type 3 fonts |
| http://lists.freedesktop.org/archives/poppler/2008-October/004181.html |
| |
| Avoid miscomputing size of fallback images required when rendering |
| with CLEAR, IN, or SOURCE operator to vector surfaces, (PS, PDF, SVG, |
| etc.). |
| |
| Be more tolerant of broken fonts when subsetting type1 fonts: |
| |
| Error handling in cairo_type1_font_subset_get_glyph_names_and_widths |
| http://lists.cairographics.org/archives/cairo/2008-October/015569.html |
| |
| Fix cairo_fill_extents, cairo_stroke_extents, cairo_path_extents, to |
| correctly allow NULL parameters as documented. |
| |
| Fix potential crash on emitting a type3 glyph after having drawn text |
| paths from the same font, (for example with cairo_text_path). |
| |
| Release 1.8.2 (2008-10-29 Carl Worth <cworth@cworth.org>) |
| ========================================================= |
| The cairo community is pleased to announce the 1.8.2 release of the |
| cairo graphics library. This is the first update to cairo's stable 1.8 |
| series and contains a large number of bug fixes. It is being released |
| just over one month since cairo 1.8.0. |
| |
| This release consists primarily of bug fixes, but there is one notable |
| new feature, (the ability to build cairo without an external font |
| backend), and there are a few optimizations as well. See below for |
| details on these changes and the most important bug fixes. |
| |
| While many people have contributed to this release, Chris Wilson |
| deserves particular mention. He has contributed well over twice as |
| many changes to cairo since 1.8.0 than everyone else combined. We |
| greatly appreciate the tremendous efforts of Chris and all cairo |
| contributors. |
| |
| We recommend everyone upgrade to cairo 1.8.2 and hope that everyone |
| will have lots of fun with cairo! |
| |
| -Carl |
| |
| New feature |
| ----------- |
| It is now possible to build cairo without any font backend, (such as |
| freetype, win32 or quartz). This is most useful when the application |
| provides custom font rendering through the user-font API. But in the |
| case where no external font backend is available, and no user-font is |
| provided, cairo will render with a failsafe font, (a stroked font |
| covering visible ASCII character). (Behdad Esfahbod) |
| |
| Optimizations |
| ------------- |
| Dramatically speed up compilation with dolt (removes much of the |
| libtool overhead) (Behdad Esfahbod with thanks to Josh Triplett). |
| |
| Several minor optimizations to tessellator (special-cased comparisons, |
| faster insert for skiplist, etc.) (Chris Wilson). |
| |
| Optimize away fractional translation component when doing |
| EXTEND_NEAREST filtering, (for better performance). |
| |
| General bug fixes |
| ----------------- |
| Allow cloning sub-regions of similar surfaces to fix this bug |
| (Chris Wilson): |
| |
| Crafted gif file will crash firefox |
| [XError: 'BadAlloc (insufficient resources for operation)'] |
| https://bugzilla.mozilla.org/show_bug.cgi?id=424333 |
| |
| Fix some matrix confusion to fix this regression (Chris Wilson): |
| |
| Translucent star exports in a wrong way to PDF |
| https://bugs.launchpad.net/inkscape/+bug/234546 |
| |
| Fix some long-standing bugs with respect to properly computing the |
| extents of transformed, filtered surfaces (Owen Taylor, Carl Worth, |
| and Chris Wilson): |
| |
| Bad clipping with EXTEND_NONE |
| http://bugs.freedesktop.org/show_bug.cgi?id=15349 |
| |
| Improve filtering handling in cairo-pattern.c |
| http://bugs.freedesktop.org/show_bug.cgi?id=15367 |
| |
| Many thanks to Chris Wilson for digging out and cleaning up |
| these fixes. |
| |
| Fix compilation on Solaris 10 (Chris Wilson): |
| |
| Cairo requires -DREENTRANT (along with -D_POSIX_THREAD_SEMANTICS) |
| to compile on Solaris 10 with pthreads |
| https://bugs.freedesktop.org/show_bug.cgi?id=18010 |
| |
| Fix very old bug causing dashes to be rendered at the wrong length in |
| fallback images (Adrian Johnson) |
| |
| Dashed strokes too long in fallback images |
| https://bugs.freedesktop.org/show_bug.cgi?id=9189 |
| |
| Fix broken dashing when a dashed path starts outside the clip region |
| (Chris Wilson). |
| |
| Avoid range overflow when computing large patterns (Benjamin Otte and |
| Chris Wilson). |
| |
| Avoid crashing due to an invalid font with an incorrect entry in its |
| CMAP table (Adrian Johnson). |
| |
| Fix bugs in computing maximum size of text requests that can be sent |
| with the Render extension, (avoiding potential crashes when rendering |
| large amounts of text) (Behdad Esfahbod and Chris Wilson). |
| |
| Fix rendering of operators unbounded by the mask (Chris Wilson). |
| |
| Fix compilation on systems without compiler support for a native |
| 64-bit type (Chris Wilson). |
| |
| Fix several cases of missing error-status propagation. (Chris Wilson, |
| doing the work he seems to never tire of). |
| |
| Fix several locking issues found with the lockdep valgrind skin (Chris |
| Wilson). |
| |
| Backend-specific bug fixes |
| -------------------------- |
| xlib: Avoid crash due to attempting XRender calls on pixmaps with |
| formats not supported by the Render extension (Chris Wilson): |
| |
| XRender crashes due to NULL pointer from Cairo on SGI O2 |
| https://bugs.freedesktop.org/show_bug.cgi?id=11734 |
| |
| xlib: Add support for XImages with depth of 4, 20, 24, or 28 bits |
| (Chris Wilson): |
| |
| cairo doesn't support 24 bits per pixel mode on X11 |
| https://bugs.freedesktop.org/show_bug.cgi?id=9102 |
| |
| xlib: Avoid mistakenly considering two surfaces as similar just |
| because their depths match (while their Render formats do not) (Karl |
| Tomlinson). |
| |
| ps: Fix slight mis-scaling of bitmapped fonts (Adrian Johnson) |
| |
| svg: Correctly emit comp-op for paint, mask, and show_glyphs |
| operations (Emmanuel Pacaud). |
| |
| svg: Use finer-grained fallbacks for SVG 1.2 (as PS and PDF backends |
| have been doing since 1.6.0) (Chris Wilson). |
| |
| win32: Fallback to DIB if DDB create fails for |
| cairo_surface_create_similar (Vladimir Vukicevic). |
| |
| win32: Fix compatibility with Windows Mobile (Vladimir Vukicevic). |
| |
| win32: Fix static builds to not do __declspec(dllimport) on public |
| functions. This requires the user to set a CAIRO_WIN32_STATIC_BUILD |
| environment variable when compiling (Behdad Esfahbod). |
| |
| Release 1.8.0 (2008-09-25 Carl Worth <cworth@cworth.org>) |
| ========================================================= |
| The cairo community is happy (and relieved) to announce the 1.8.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.6, 1.4, 1.2, or 1.0). We recommend that anybody using a |
| previous version of cairo upgrade to cairo 1.8.0. |
| |
| 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. |
| |
| See below for more details. |
| |
| User fonts |
| ---------- |
| This new API allows the user of cairo API to provide drawings for |
| glyphs in a font. A common use for this is implementing fonts in |
| non-standard formats, like SVG fonts and Flash fonts. This API can |
| also be used by applications to provide custom glyph shapes for fonts |
| while still getting access to cairo's glyph caches. See |
| test/user-font.c and test/user-font-proxy.c for usage examples. This |
| is based on early work by Kristian Hรธgsberg. Thanks Kristian! |
| |
| This new API consists of the following functions (and corresponding |
| _get functions): |
| |
| cairo_user_font_face_create |
| |
| cairo_user_font_face_set_init_func |
| cairo_user_font_face_set_render_glyph_func |
| cairo_user_font_face_set_text_to_glyphs_func |
| cairo_user_font_face_set_unicode_to_glyph_func |
| |
| An additional, new API is |
| |
| cairo_scaled_font_text_to_glyphs |
| |
| We were previously reluctant to provide this function as |
| text-to-glyphs support in cairo was limited to "toy" font |
| functionality, not really interesting for real-world text |
| processing. However, with user fonts landing, this API is needed to |
| expose full access to how user fonts convert text to glyphs. This is |
| expected to be used by text toolkits like Pango, as well as "proxy" |
| user-font implementations. |
| |
| cairo_show_text_glyphs |
| ---------------------- |
| This new API allows the caller of cairo to provide text data |
| corresponding to glyphs being drawn. The PDF backend implements this |
| new API so that complex text can be copied out of cairo's PDF output |
| correctly and reliably, (assuming the user of cairo calls |
| cairo_show_text_glyphs). The cairo_show_text_glyphs API is definitely |
| the most daunting API to debut in cairo. It is anticipated that pango |
| (and similar high-level text libraries) will be the primary users of |
| this API. In fact, pango 1.22 already uses cairo_show_text_glyphs. |
| Behdad was the architect and implementor of this effort. Thanks, |
| Behdad! |
| |
| The cairo_show_text_glyphs API includes the following new functions: |
| |
| cairo_show_text_glyphs |
| |
| cairo_glyph_allocate |
| cairo_glyph_free |
| |
| cairo_text_cluster_allocate |
| cairo_text_cluster_free |
| |
| cairo_surface_has_show_text_glyphs |
| |
| Build system revamp |
| ------------------- |
| The primary goal of the revamp is to make the build system less |
| fragile, (particularly for non-Linux platforms). For example, now |
| people building on win32 will no longer need to maintain a |
| platform-specific list of files to be built. See the new README.win32 |
| for details. Also, the .so file will now be installed with a different |
| naming scheme, (for example, 1.7.6 will install with a .10800 |
| suffix). Many thanks to Behdad and his small army of helpers! |
| |
| Assorted API additions |
| ---------------------- |
| For API completeness, several missing "getter" functions were added: |
| |
| cairo_scaled_font_get_scale_matrix |
| |
| cairo_surface_get_fallback_resolution |
| |
| cairo_toy_font_face_create |
| cairo_toy_font_face_get_family |
| cairo_toy_font_face_get_slant |
| cairo_toy_font_face_get_weight |
| |
| The new cairo_toy_font_face functions provide access to functionality |
| and settings provided by cairo_select_font_face(). Thanks Behdad! |
| |
| cairo-ps/cairo-pdf: More efficient output |
| ----------------------------------------- |
| Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF |
| backends, as well making them generate much more compact output by |
| avoiding things like re-emitting the color or linestyle on every |
| drawing operation. Thanks Adrian! |
| |
| cairo-xlib: dithering |
| --------------------- |
| Dithering: Cairo now does simple dithering when rendering to legacy X |
| servers. This is most visible with 8-bit visuals. Thanks Behdad! |
| |
| cairo-xlib: Avoid rendering glyphs out of surface bounds |
| -------------------------------------------------------- |
| This seemingly harmless optimization exposed a bug in OpenOffice.org 3 |
| versions where OO.o was passing bogus surface extents to cairo, |
| resulting in no text rendered in OO.o. Please contact your |
| distribution's OO.o maintainers if you see this bug and point them to |
| the following URL: |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=16209 |
| |
| cairo-xlib: Improved performance with X server without Render |
| ------------------------------------------------------------- |
| Cairo now performs better on remote X servers that lack the Render |
| extension by being smarter about using X core protocol facilities |
| instead of falling back to doing all rendering on the client side. |
| |
| cairo-ft: respecting FC_FT_FACE |
| ------------------------------- |
| Previously it was impossible to instruct cairo to do emboldening on a |
| font face object created from an FT_Face. Cairo now respects and uses |
| the FC_FT_FACE fontconfig pattern element, so emboldening can be |
| achieved by using cairo_ft_font_face_create_for_pattern() and a |
| carefully crafted pattern using FC_FT_FACE and FC_EMBOLDEN. Thanks |
| Behdad! |
| |
| cairo-directfb: backend improvements |
| ------------------------------------ |
| The directfb backend, though still unsupported, has seen a good deal |
| of improvements. Thanks Vlad! |
| |
| Bug fixing and optimizations |
| ---------------------------- |
| xlib: Faster bookkeeping (Karl Tomlinson) |
| https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5 |
| |
| PS: Fix gradients with non-constant alpha (Chris Wilson) |
| |
| Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod) |
| http://bugs.freedesktop.org/show_bug.cgi?id=16819 |
| |
| Countless other bugs have been fixed and optimizations made, many of |
| them thanks to Chris Wilson. Thanks Chris and others! |
| |
| Note also that the code that had been in cairo 1.7.x calling into |
| freetype's optional lcd_filter function was removed from cairo before |
| the 1.8.0 release. We do expect this code to come back in some form in |
| the future. |
| |
| Snapshot 1.7.6 (2008-09-17 Carl Worth <cworth@cworth.org>) |
| ========================================================== |
| The cairo community is happy to announce the 1.7.6 snapshot of the |
| cairo graphics library. This is a "release candidate" for the upcoming |
| 1.8.0 release, so we will greatly appreciate any reports of problems |
| in this release, and no major changes are currently planned before |
| 1.8. |
| |
| Notable changes in 1.7.6 |
| ------------------------ |
| The largest number of changes since 1.7.4 did not change the |
| implementation of cairo itself, but instead revamped cairo's build |
| system. The primary goal of the revamp is to make the build system |
| less fragile, (particularly for non-Linux platforms). For example, now |
| people building on win32 will no longer need to maintain a |
| platform-specific list of files to be built. Also, the .so file will |
| now be installed with a different naming scheme, (for example, 1.7.6 |
| will install with a .10706 suffix). Much thanks, Behdad! |
| |
| And, as usual, Chris Wilson has made another large round of robustness |
| improvements, (eliminating dead code, fixing propagation of error |
| status values, test suite improvements, etc. etc.). Thanks as always, |
| Chris! |
| |
| API changes since 1.7.4 |
| ----------------------- |
| There have been a few changes of API that was new during the 1.7 |
| series: |
| |
| * Remove cairo_font_options_set_lcd_filter |
| and cairo_font_options_get_lcd_filter |
| |
| Motivation: At the Cairo Summit, this API was determined to be too |
| specific to the freetype font backend to be in the general |
| API. A similar API with a cairo_ft prefix might be introduced |
| in the future. Note that cairo will still respect the |
| corresponding fontconfig settings for these options. |
| |
| * Replace cairo_has_show_glyphs |
| with cairo_surface_has_show_glyphs |
| |
| Motivation: This really is a surface-specific interface, and the |
| convenience function on the cairo_t is not obviously |
| necessary. An application can easily call: |
| |
| cairo_surface_has_show_glyphs (cairo_get_target (cr)); |
| |
| as needed. |
| |
| * Add cairo_text_cluster_flags_t |
| to cairo_show_text_glyphs |
| cairo_scaled_font_text_to_glyphs |
| cairo_user_scaled_font_text_to_glyphs_func_t |
| |
| Motivation: This flag, (and specifically the |
| CAIRO_TEXT_CLUSTER_FLAG_BACKWARD value), replaces the |
| cairo_bool_t backward argument in each of the above |
| interfaces. This leads to more readable user code, and also |
| allows future extensibility. |
| |
| As always, there are no changes to any API from any major cairo |
| release, (1.0.x, 1.2.x, 1.4.x, 1.6.x). Cairo maintains the same |
| compatibility promise it always has. |
| |
| Bug fixes since 1.7.4 |
| --------------------- |
| xlib: Faster bookkeeping (Karl Tomlinson) |
| https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5 |
| |
| PS: Fix gradients with non-constant alpha (Chris Wilson) |
| |
| Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod) |
| http://bugs.freedesktop.org/show_bug.cgi?id=16819 |
| |
| Several other minor fixes. |
| |
| Snapshot 1.7.4 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>) |
| =============================================================== |
| The cairo community is embarrassed to announce availability of the 1.7.4 |
| snapshot of the cairo graphics library. This is a followup release to the |
| 1.7.2 snapshot to ship a tarball that can actually be built. The only |
| change since 1.7.4 is including the missing header file |
| cairo-user-font-private.h in the distribution. |
| |
| Snapshot 1.7.2 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>) |
| =============================================================== |
| The cairo community is finally ready to announce availability of the 1.7.2 |
| snapshot of the cairo graphics library. This is embarrassingly the first |
| snapshot in the 1.7 unstable series of cairo, leading to the eventual release |
| of cairo 1.8, currently planned for late September. |
| |
| This snapshot comes four months after the 1.6.4 release. We have done a |
| really bad job on getting development snapshots out this cycle, but |
| hopefully all the API changes for 1.8 are now finished and the remaining |
| weeks will be spent on bug-fixing. There is more than 400 commits worth |
| of changes in this snapshot, and those can use some testing. Read on! |
| |
| Text, text, and more text! |
| -------------------------- |
| The dominant theme of this release, and 1.8 in general, is improvements |
| around cairo text API. Here is a high-level list of changes with text |
| handling: |
| |
| User fonts |
| ---------- |
| This is new API allowing the user of cairo API to provide drawings for glyphs |
| in a font. This is most useful in implementing fonts in non-standard formats, |
| like SVG fonts and Flash fonts, but can also be used by games and other |
| applications to draw "funky" fonts. See test/user-font.c and |
| test/user-font-proxy.c for usage examples. This is based on early work by |
| Kristian Hรธgsberg. Thanks Kristian! |
| |
| show_text_glyphs |
| ---------------- |
| This new API allows the caller of cairo to mark text glyphs with their |
| original text. The PDF backend implements this new API and latest Pango |
| master uses it. The result is (when bugs are fixed) that complex text can be |
| copied out of pangocairo's PDF output correctly and reliably. There are bugs |
| to fix though. A few poppler bugs, and some more in cairo and pango. |
| |
| To test show_text_glyph, just grab pango master and this cairo snapshot and |
| print text in gedit. Open in acroread or evince, select all, copy, paste |
| in gedit and compare. The Arabic text with diacritic marks is particularly |
| showing bad. Try with pango/pango-view/HELLO.txt if you are brave |
| enough. The Indic text is showing improvements, but is still coming out |
| buggy. |
| |
| LCD subpixel filtering using FreeType |
| ------------------------------------- |
| FreeType 2.3.5 added support for various LCD subpixel filtering, and |
| fontconfig 2.6.0 added support for configuring LCD filter on a font by font |
| basis. Cairo now relies on FreeType and fontconfig for subpixel filtering. |
| This work is based on David Turner's original patch to cairo, maintained |
| and tested by Sylvain Pasche and others. Thanks all! |
| |
| Toy font face constructor and getter |
| ------------------------------------ |
| Mostly for API completion, but also useful for higher level (like Pango) to |
| hook into what the user has set using cairo_select_font_face(), making that |
| toy API a bit more useful. |
| |
| FreeType: respecting FC_FT_FACE |
| ------------------------------- |
| Previously it was impossible to instruct cairo to do emboldening on a font |
| face object created from an FT_Face. Cairo now respects and uses the |
| FC_FT_FACE fontconfig pattern element, so emboldening can be achieved by |
| using cairo_ft_font_face_create_for_pattern() and a carefully crafted pattern |
| using FC_FT_FACE and FC_EMBOLDEN. |
| |
| |
| PS/PDF: More efficient output |
| ----------------------------- |
| Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF |
| backends, as well making them generate much more compact output by avoiding |
| things like re-emitting the color or linestyle on every drawing operation. |
| Thanks Adrian! |
| |
| |
| Xlib: Dithering |
| --------------- |
| Cairo now does simple dithering when rendering to legacy X servers. This is |
| mostly visible with 8-bit visuals. |
| |
| Xlib: Avoid rendering glyphs out of surface bounds |
| -------------------------------------------------- |
| This seemingly harmless change manifested a bug with OpenOffice.org 3 versions |
| where OO.o was passing bogus surface extents to cairo, resulting in no text |
| rendered in OO.o. Please contact your distro's OO.o maintainers if you see |
| this bug and point them to the following URL: |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=16209 |
| |
| Xlib: Improved performance with Xrender-less X servers |
| ------------------------------------------------------ |
| Cairo now performs better on remote, Xrender-less X servers by being smarter |
| about using X core protocol facilities instead of falling back to doing all |
| rendering on the client side. |
| |
| |
| Directfb: backend improvements |
| ------------------------------ |
| The directfb backend, though still unsupported, has seen a good deal of |
| improvements. Thanks Vlad! |
| |
| |
| Bug fixing and optimizations |
| ---------------------------- |
| Countless bugs have been fixed and optimizations made, many of them thanks to |
| Chris Wilson. Thanks Chris! |
| |
| |
| API additions |
| ------------- |
| |
| cairo_show_text_glyphs |
| |
| This is a new text rendering API. Being a more advanced version of |
| cairo_show_glyphs(), it is aimed for use by higher-level text toolkits like |
| Pango, and enables better text extraction from output generated by backends |
| like PDF and SVG. The PDF backend already implements it, and the upcoming |
| Pango release will use it. |
| |
| To make that API work, a bunch of other additions were made: |
| |
| cairo_glyph_allocate |
| cairo_glyph_free |
| cairo_text_cluster_t |
| cairo_text_cluster_allocate |
| cairo_text_cluster_free |
| cairo_surface_has_show_text_glyphs |
| |
| |
| cairo_user_font_face_create |
| |
| This is the "user" font face constructor, accompanied by a variety of method |
| signatures, getters, and setters for a callback-based font backend: |
| |
| CAIRO_FONT_TYPE_USER |
| cairo_user_scaled_font_init_func_t |
| cairo_user_scaled_font_render_glyph_func_t |
| cairo_user_scaled_font_text_to_glyphs_func_t |
| cairo_user_scaled_font_unicode_to_glyph_func_t |
| cairo_user_font_face_set_init_func |
| cairo_user_font_face_set_render_glyph_func |
| cairo_user_font_face_set_text_to_glyphs_func |
| cairo_user_font_face_set_unicode_to_glyph_func |
| cairo_user_font_face_get_init_func |
| cairo_user_font_face_get_render_glyph_func |
| cairo_user_font_face_get_text_to_glyphs_func |
| cairo_user_font_face_get_unicode_to_glyph_func |
| |
| |
| cairo_scaled_font_text_to_glyphs |
| |
| We were previously reluctant to provide this function as text-to-glyphs |
| support in cairo was limited to "toy" font functionality, not really |
| interesting for real-world text processing. However, with user-fonts |
| landing, this API is needed to expose full access to how user-fonts |
| convert text to glyphs. This is expected to be used by text toolkits like |
| Pango, as well as "proxy" user-font implementations. |
| |
| |
| cairo_lcd_filter_t |
| cairo_font_options_set_lcd_filter |
| cairo_font_options_get_lcd_filter |
| |
| These add the possibility to choose between various available LCD subpixel |
| filters. The available filter values are modelled after what FreeType |
| provides. |
| |
| |
| cairo_toy_font_face_create |
| cairo_toy_font_face_get_family |
| cairo_toy_font_face_get_slant |
| cairo_toy_font_face_get_weight |
| |
| These provide access to functionality and settings provided by |
| cairo_select_font_face(). |
| |
| |
| cairo_scaled_font_get_scale_matrix |
| cairo_surface_get_fallback_resolution |
| |
| For API completeness. |
| |
| |
| Various new values for cairo_status_t enum |
| |
| |
| Known issues: |
| |
| - Type3 fonts generated by cairo's PDF backend may show up in poppler/Evince |
| in a different color than expected. This is fixed in poppler master branch. |
| This mostly affects cairo user fonts. The test case test/user-font.c |
| demonstrates this. |
| |
| - User fonts using other fonts in their rendering are currently embedded in |
| PDF as fallback bitmap glyphs. This will be (hopefully) fixed before 1.8. |
| The test case test/user-font-proxy.c demonstrates this. |
| |
| |
| 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 EXTEND_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
|