1Release 1.17.4 (2020-11-27 Bryce Harrington <bryce@bryceharrington.org>) 2======================================================================== 3 4Thank you to the many people who have contributed the large number of 5bug fixes and refinements since 1.17.2. 6 7A particularly noteworthy improvement in this release is the addition of 8the meson build system as an alternative to autotools. Autotools is 9still used for producing the releases, so will be the default in the 10tarball and presumably will still be preferred by distro packagers of 11Cairo. It should be possible to build the release tarball using meson, 12but as this is new functionality consider it still a work in progress. 13The meson configuration has striven to track the autotools 14implementation but be aware there may still be some differences between 15the two. 16 17Continuous Integration configurations have been added that enable 18testing on a variety of platforms including Fedora, Windows MSVC, etc. 19This work has helped in identifying updates and fixes including 20adjusting to changes in API calls in dependencies like rsvg and 21fontconfig, and to fix platform-specific build issues. 22 23The cogl Cairo backend underwent significant development this cycle. 24Cogl provides GPU accelerated drawing support. The development work 25includes implementation of core functionality, performance 26optimizations, and stabilization. 27 28Subpixel positioning support allows improved glyph outlines with the 29Freetype font backend. 30 31For a complete log of changes, please see 32 33 https://cairographics.org/releases/ChangeLog.1.17.4 34 35[On a personal note, this will be my last release for Cairo. My Cairo 36time availability has been non-existent (particularly this crazy past 37year). The release process is well documented and hopefully will help 38whomever picks up the baton from here.] 39 40 41Release 1.17.2 (2019-01-31 Bryce Harrington <bryce@bryceharrington.org>) 42======================================================================== 43This snapshot provides the new support for writing floating point 44formats as 16 bpc PNGs, with support for RGBA128F and RGB96F formats. 45This new feature increases Cairo's pixman version requirement to 0.36.0. 46 47Beyond this are a range of bugfixes and some work on establishing CI for 48Cairo. 49 50For a complete log of changes, please see 51 52 https://cairographics.org/releases/ChangeLog.1.17.2 53 54API Changes 55----------- 56None 57 58Dependency Changes 59------------------ 60pixman 0.36.0 61 62 63Release 1.16.0 (2018-10-19 Bryce Harrington <bryce@bryceharrington.org>) 64======================================================================== 65This new stable release incorporates a number of improvements made in 66the four years since 1.14.0. 67 68Of particular note is a wealth of work by Adrian Johnson to enhance PDF 69functionality, including restoring support for MacOSX 10.4, metadata, 70hyperlinks, and more. 71 72Much attention also went into fonts, including new colored emoji glyph 73support, variable fonts, and fixes for various font idiosyncrasies. 74 75Other noteworthy changes include GLESv3 support for the cairo_gl 76backend, tracking of SVG units in generated SVG documents, and cleanups 77for numerous test failures and related issues in the PDF and Postscript 78backends. 79 80For a complete log of changes, please see 81 82 https://cairographics.org/releases/ChangeLog.1.16.0 83 84Features and Enhancements 85------------------------- 86* Add support for OpenGL ES 3.0 to the gl backend. 87* The PDF backend has gained support for a range of widely used 88 features, including thumbnails, page labels, metadata, document 89 outlines, structured text, hyperlinks, and tags. Tags permit adding 90 logical info such as headings, tables, figures, etc. that facilitates 91 indexing, accessibility, text reflow, searching, and extraction of the 92 tagged items to other software. For details on this new PDF 93 functionality, see: 94 https://lists.cairographics.org/archives/cairo/2016-June/027427.html 95* Variable font support. Variable fonts are single font files with 96 various typography characteristics, such as weight or slant, that users 97 of the font can adjust between two points. Effectively this enables a 98 single font to behave as multiple fonts. 99* Restore MacOSX 10.4 support. Cairo had dropped 10.4 support when 100 moving to the CoreText API. Now we automatically detect which API to 101 use via dynamic linking, so can resume supporting this older version 102 of MacOSX. 103* Support colored emoji glyphs, stored as PNG images in OpenType fonts. 104* Skia backend is removed 105* Use Reusable streams for forms in Level 3 Postscript. 106* Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files. 107* Add CCITT_FAX mime type for PDF and PS surfaces 108* svg: add a new function to specify the SVG document unit 109 (Bug #90166) 110* Use UTF-8 filenames on Windows 111 112 113API Changes 114----------- 115Several new APIs were added. No existing APIs were altered. 116 117New PDF functionality: 118 119 * cairo_pdf_surface_add_outline 120 * cairo_pdf_surface_set_metadata 121 * cairo_pdf_surface_set_page_label 122 * cairo_pdf_surface_set_thumbnail_size 123 * cairo_tag_begin 124 * cairo_tag_end 125 * CAIRO_STATUS_TAG_ERROR 126 127New error status items for problems relating to PDF tagging: 128 129 * CAIRO_STATUS_WIN32_GDI_ERROR 130 * CAIRO_STATUS_FREETYPE_ERROR 131 * CAIRO_STATUS_PNG_ERROR 132 133 New error status items for handling of GDI, libfreetype, and libpng 134 errors, respectively. 135 136 137Setting up Win32 surfaces for HDC with alpha channels: 138 139 * cairo_win32_surface_create_with_format 140 141 New API for added PDF functionality (see above), and new error 142 status item for problems relating to PDF tagging. 143 144Variable fonts: 145 146 * cairo_font_options_get_variations 147 * cairo_font_options_set_variations 148 149Tracking units in SVG documents: 150 151 * cairo_svg_surface_set_document_unit 152 * cairo_svg_surface_get_document_unit 153 154 155 156Dependency Changes 157------------------ 158None 159 160 161Performance Optimizations 162------------------------- 163None 164 165 166Notable Bug Fixes 167----------------- 168* Fix thin lines that don't show up when printing in Inkscape due to 169 overly aggressive culling. 170 (Bug #77298) 171* Fix playback of recording surfaces into PDF surfaces, where objects 172 with negative coordinates were not getting drawn. To address this, 173 the coordinate systems for PDF and PS have been changed to match 174 cairo's coordinate system. This allows recording surfaces to be 175 emitted in cairo coordinates, and results in the same origin being 176 used for all operations when using the recording surface XObject. 177 Test cases for PDF and PS have also been updated accordingly. 178 (Bug #89232) 179* Fix "invalidfont" error on some printers when printing PDFs with 180 embedded fonts that have glyphs (such as spaces) with 181 num_contours == 0. (Bug #79897) 182* Fix missing glyphs such as thin dashes, which get scaled to 0 in 183 userspace and thus have their drawing operations culled. (Bug #94615) 184* Fix other oddities caused by variously idiosyncratic fonts. 185* Fix a data race in freed_pool discovered by Firefox's cairo usage. 186 The patch adads atomic int load and store functions, with relaxed 187 memory ordering. (Bug #90318) 188* Handle SOURCE and CLEAR operators when painting color glyphs. 189 (Bug #102661) 190* Fix falling back to system font with PDFs using certain embedded 191 fonts, due to truncated font names. 192 (Bug #103249) 193* Prevent curved strokes in small ctms from being culled from vector 194 surfaces 195 (Bug #103071) 196* Fix assertion hit with PDFs using Type 4 fonts rendered with user 197 fonts, due to error when destroying glyph page. 198 (Bug #103335) 199* Prevent invalid ptr access for > 4GB images. 200 (Bug #98165) 201* pdf: Fix internal links pointing to other pages, by pre-calculating 202 page heights so that link positions can be calculated more accurately. 203* Fix error reporting in the xcb backend if fallback fails. Instead of 204 returning NULL when the X11 server can't do some operation, return a 205 surface in an error state. 206* Clarify documentation regarding device scale inheritance and the units 207 used in cairo_surface_create_similar_image. 208 (Bug #99094) 209* Call XSync in the xlib backend before setting the error handler to 210 ignore errors for certain requests, to make sure all pending errors 211 are handled first. 212* Fix regression with text containing space character on Win32. 213 (Bug: https://gitlab.freedesktop.org/cairo/cairo/issues/339) 214 215For a more comprehensive listing of fixed bugs, see the release notes for the 216individual 1.15.x releases. 217 218 219Release 1.15.14 (2018-09-19 Bryce Harrington <bryce@bryceharrington.org>) 220============================================================================ 221We're nearly ready to finalize the 1.16.0 release, so this snapshot 222can be considered a beta for 1.16. 223 224The most notable change this release is a performance optimization for 225windows, discussed below. Other than that, much of the development 226focus was on final polish and stability as we prepare for 1.16. 227 228Some attention went into getting the testsuite passing at least for the 229image backend. The Cairo testsuite depends on external software like 230Pixman, and changes in the rendering behavior of these dependencies 231change test behavior, leading to false positives. 232 233Results from the Coverity static testing tool were also reviewed. Most 234of the issues flagged were false positives, but there were several 235legitimate problems found and fixed. 236 237For a complete log of changes, please see 238 239 https://cairographics.org/releases/ChangeLog.1.15.14 240 241Features and Enhancements 242------------------------- 243* Add more FreeeType font color conversions to support COLR/CPAL 244* Update test reference images against current pixman 245 246API Changes 247----------- 248None 249 250Dependency Changes 251------------------ 252None 253 254Performance Optimizations 255------------------------- 256Vasily Galkin introduced a Win32 performance optimization for 257CAIRO_OPERATOR_SOURCE when copying data from a backbuffer to an argb32 258surface corresponding to a Win32 DC. With this, argb32 drawing should 259perform as fast as typical dibsection-buffered GDI drawing. See the 260Cairo mailing list for April 2018 for data and discussion of the 261performance improvements. 262 263 264Bug Fixes 265--------- 266* Fix crash when rendering Microsoft's Segoe UI Emoji Regular font. 267* Fix build breakage with glesv3 enabled due to non-existant glesv3.pc. 268* Fix memory leaks found by Coverity 269* Fix incorrect null ptr handling found by Coverity 270* Fix test compilation when font-config is disabled 271* Use _cairo_malloc instead of malloc (Bug #101547) (CVE-2017-9814) 272* Fix assertion failure in the freetype backend (Bug #105746) 273 274 275Release 1.15.12 (2018-04-04 Bryce Harrington <bryce@osg.samsung.com>) 276======================================================================== 277The main focus for this release is the addition of Variable Font 278support. Variable fonts are single font files with various typography 279characteristics, such as weight or slant, that users of the font can 280adjust between two points. Effectively this enables a single font to 281behave as multiple fonts. 282 283The Skia backend is disabled in this release, due to severe bitrot, and 284will be removed in future releases. Contact the cairo team if you have 285a need of this backend. 286 287For a complete log of changes, please see 288 289 https://cairographics.org/releases/ChangeLog.1.15.12 290 291Features and Enhancements 292------------------------- 293* Variable font support 294* Skia backend is disabled 295 296API Changes 297----------- 298* cairo_font_options_get_variations() and 299 cairo_font_options_set_variations() are added. 300 301Dependency Changes 302------------------ 303None 304 305Performance Optimizations 306------------------------- 307None 308 309Bug Fixes 310--------- 311* Fix errors in csi-trace --help and --version options 312* Fix a 'memory leak' in the image compositor, with 313 pixman_glyph_cache_t. 314* Fix access of uninitialized memory found by valgrind 315 (Bug #91271) 316* Fix improper initialization of memory in 317 _cairo_ft_font_face_create_for_pattern() 318 (Bug #105084) 319* Fix multi-monitor virtual desktop with negative coords on Win32 320 (Bug #100793) 321* Fix issues occurring with older FreeType versions. 322 323 324Release 1.15.10 (2017-12-07 Bryce Harrington <bryce@osg.samsung.com>) 325======================================================================== 326This release adds GLESv3 support to the cairo_gl backend, adds 327tracking of SVG units in generated svg documents, and cleans up numerous 328test failures and related issues in the PDF and Postscript backends. 329 330For a complete log of changes, please see 331 332 https://cairographics.org/releases/ChangeLog.1.15.10 333 334Features and Enhancements 335------------------------- 336* Add support for OpenGL ES 3.0 to the gl backend. 337* Use Reusable streams for forms in Level 3 Postscript. 338* Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files. 339* Add CCITT_FAX mime type for PDF and PS surfaces 340* svg: add a new function to specify the SVG document unit 341 (Bug #90166) 342* Use UTF-8 filenames on Windows 343 344API Changes 345----------- 346* cairo_svg_surface_set_document_unit() and 347 cairo_svg_surface_get_document_unit() 348 349Dependency Changes 350------------------ 351None 352 353Performance Optimizations 354------------------------- 355None 356 357Bug Fixes 358--------- 359* Fix regression in gles version detection 360* Fix undefined-behavior with integer math. 361* Handle SOURCE and CLEAR operators when painting color glyphs. 362 (Bug #102661) 363* Convert images to rgba or a8 formats when uploading with GLESv2 364* Use _WIN32 instead of windows.h to check for windows build. 365* Fix sigabrt printing documents with fonts lacking the mandatory .nodef 366 glyph. 367 (Bug #102922) 368* Prevent curved strokes in small ctms from being culled from vector 369 surfaces 370 (Bug #103071) 371* Fix painting an unbounded recording surface with the SVG backend. 372* Fix falling back to system font with PDFs using certain embedded 373 fonts, due to truncated font names. 374 (Bug #103249) 375* Fix handling of truetype fonts with excessively long font names 376 (Bug #103249) 377* Fix race conditions with cairo_mask_compositor_t 378 (Bug #103037) 379* Fix build error with util/font-view 380* Fix assertion hit with PDFs using Type 4 fonts rendered with user 381 fonts, due to error when destroying glyph page. 382 (Bug #103335) 383* Set default creation date for PDFs 384* Prevent invalid ptr access for > 4GB images. 385 (Bug #98165) 386* Prevent self-copy infinite loop in Postscript surface. 387* Fix padded image crash in Postscript surface. 388* Fix annotation bugs in PDFs and related memory leaks 389* Fix test failures and other assorted issues in ps and pdf code. 390* Fix code generation when using GCC legacy atomic operations 391 (Bug #103559) 392* Fix various compilation warnings and errors. 393* Fix various distcheck errors with private symbols, doxygen formatting, 394 etc. 395 396Release 1.15.8 (2017-08-29 Bryce Harrington <bryce@osg.samsung.com>) 397======================================================================== 398This small snapshot provides new colored emoji glyph support, and a 399handful of minor fixes. 400 401For a complete log of changes, please see 402 403 https://cairographics.org/releases/ChangeLog.1.15.8 404 405Features and Enhancements 406------------------------- 407* Support colored emoji glyphs, stored as PNG images in OpenType fonts. 408 409 410API Changes 411----------- 412None 413 414Dependency Changes 415------------------ 416None 417 418Performance Optimizations 419------------------------- 420None 421 422Bug Fixes 423--------- 424 425* pdf: Fix internal links pointing to other pages, by pre-calculating 426 page heights so that link positions can be calculated more accurately. 427 428* image: Fix crash on negative lengths 429 430* win32: Fix initialization of mutexes for static builds 431 432* pdf: Don't emit /PageLabel dict when no labels defined 433 434* font: Fix color font loading on big-endian systems 435 436* font: Fix color font support infinite-loop with empty glyphs 437 438* Fix off by one check in cairo-image-info.c 439 440 441 442Release 1.15.6 (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>) 443======================================================================== 444This new snapshot incorporates changes over the past half-year since the 4451.15.4 snapshot, including all the fixes from the 1.14 release series. 446 447The PDF code continues to be enhanced, and we're restored MacOSX 10.4 448support. Font-related fixes and improved error handling for X round out 449the release. 450 451For a complete log of changes, please see 452 453 https://cairographics.org/releases/ChangeLog.1.15.6 454 455 456Features and Enhancements 457------------------------- 458* Detect if variable fonts have synthesized bold/italic or non-default 459 variants, and use a fallback font where needed. 460 461* Restore MacOSX 10.4 support. Cairo had dropped 10.4 support when 462 moving to the CoreText API. Now we automatically detect which API to 463 use via dynamic linking, so can resume supporting this older version 464 of MacOSX. 465 466 467API Changes 468----------- 469None 470 471Dependency Changes 472------------------ 473None 474 475Performance Optimizations 476------------------------- 477None 478 479Bug Fixes 480--------- 481* Fix error reporting in the xcb backend if fallback fails. Instead of 482 returning NULL when the X11 server can't do some operation, return a 483 surface in an error state. 484 485* Call XSync in the xlib backend before setting the error handler to 486 ignore errors for certain requests, to make sure all pending errors 487 are handled first. 488 489* Fix text-glyph-range for quartz-font. Use 0xFFFF instead of 0 for 490 invalid index tracking. 491 492* Fix handling of Supplementary Multilingual Plane (SMP) Unicode 493 characters in quartz-font. 494 495* Fix various issues in the drm backend including updating API usage and 496 general code cleanup. 497 498* Clarify documentation regarding device scale inheritance and the units 499 used in cairo_surface_create_similar_image. 500 Bug #99094. 501 502 503Release 1.15.4 (2016-12-9 Bryce Harrington <bryce@osg.samsung.com>) 504======================================================================= 505This new snapshot incorporates changes over the past year since the 5061.15.2 snapshot, including all the fixes from the 1.14 release series. 507 508Of particular note in this snapshot is a wealth of work by Adrian 509Johnson to enhance PDF support, as well as numerous bug fixes provided 510by him and other contributors. 511 512For a complete log of changes since the last release, please see: 513 514 https://cairographics.org/releases/ChangeLog.1.15.4 515 516Features 517-------- 518* The PDF backend has gained support for a range of widely used 519 features, including thumbnails, page labels, metadata, document 520 outlines, structured text, hyperlinks, and tags. Tags permit adding 521 logical info such as headings, tables, figures, etc. that facilitates 522 indexing, accessibility, text reflow, searching, and extraction of the 523 tagged items to other software. For details on this new PDF 524 functionality, see: 525 526 https://lists.cairographics.org/archives/cairo/2016-June/027427.html 527 528 529API Changes 530----------- 531 532 cairo_win32_surface_create_with_format 533 534 Added a cairo API to set up Win32 surfaces for HDC with alpha channels. 535 536 cairo_pdf_surface_add_outline 537 cairo_pdf_surface_set_metadata 538 cairo_pdf_surface_set_page_label 539 cairo_pdf_surface_set_thumbnail_size 540 cairo_tag_begin 541 cairo_tag_end 542 CAIRO_STATUS_TAG_ERROR 543 544 New API for added PDF functionality (see above), and new error 545 status item for problems relating to PDF tagging. 546 547 CAIRO_STATUS_WIN32_GDI_ERROR 548 CAIRO_STATUS_FREETYPE_ERROR 549 CAIRO_STATUS_PNG_ERROR 550 551 New error status items for handling of GDI, libfreetype, and libpng 552 errors, respectively. 553 554Dependency Changes 555------------------ 556None 557 558Performance Optimizations 559------------------------- 560None 561 562Bug Fixes 563--------- 564* Bug fixes from 1.15.2 (see the 1.15.2 NEWS for details) 565 566* Fix playback of recording surfaces into PDF surfaces, where objects 567 with negative coordinates were not getting drawn. To address this, 568 the coordinate systems for PDF and PS have been changed to match 569 cairo's coordinate system. This allows recording surfaces to be 570 emitted in cairo coordinates, and results in the same origin being 571 used for all operations when using the recording surface XObject. 572 Test cases for PDF and PS have also been updated accordingly. 573 (Bug #89232) 574 575* Fix "invalidfont" error on some printers when printing PDFs with 576 embedded fonts that have glyphs (such as spaces) with 577 num_contours == 0. (Bug #79897) 578 579* Fix missing glyphs such as thin dashes, which get scaled to 0 in 580 userspace and thus have their drawing operations culled. (Bug #94615) 581 582* Fix other oddities caused by variously idiosyncratic fonts. 583 584* Fix deadlock when destruction of a scaled font indirectly triggers 585 destruction of a second scaled font, causing the global cache to be 586 locked twice. (Bug #93891) 587 588* Fix X errors reported to applications when shmdt() is called before 589 the Attach request is processed, due to missing xcb and xlib calls. 590 591* Fix random failure in record-paint-alpha-clip-mast test case, caused 592 by an incorrect assumption that a deferred clear can be skipped. 593 (Bug #84330) 594 595* Fix crash when dealing with an XShmGetImage() failure, caused by a 596 double free in _get_image_surface(). (Bug #91967) 597 598* Fix invalid execution of ASCII85 data by the PS interpreter that the 599 image operator didn't use, by flushing the extraneous data after 600 drawing the image. (Bug #84811) 601 602* Fix decoding of Adobe Photoshop's inverted CMYK JPEG files in PDF 603 export. 604 605* Fix unbounded surface assertion in win32-print code. 606 607* Fix a data race in freed_pool discovered by Firefox's cairo usage. 608 The patch adads atomic int load and store functions, with relaxed 609 memory ordering. (Bug #90318) 610 611* Cleanup debugging text sent to stdout instead of log. (Bug #95227) 612 613* Fix build issue when using non-GNU strings utility. (Bug #88639) 614 615* Fix build of cairo modules as regular modules, not as versioned shared 616 libraries. (Bug #29319) 617 618* Fix build on win32 using gcc 5.4. 619 620* Fix build of script backend to require zlib. 621 622* Update test suite reference images using Debian Jessie 64-bit and 623 poppler current as of June, 2016. 624 625* Various improvements to documentation and tests, compiler warning 626 fixes, and an assortment of code refactoring and cleanup. 627 628 629Release 1.15.2 (2015-12-10 Bryce Harrington <bryce@osg.samsung.com>) 630======================================================================== 631This release is largely a rollup to include a variety of fixes that 632didn't make the cut for the stable 1.14.2 and 1.14.4 releases, as well 633as all the fixes from those releases. Notably this includes a highly 634requested new API for Win32 surfaces. 635 636For a complete log of changes since the last release, please see: 637 638 https://cairographics.org/releases/ChangeLog.1.15.2 639 640Features 641-------- 642None 643 644API Changes 645----------- 646 647 cairo_win32_surface_create_with_format 648 649 Added a cairo API to set up Win32 surfaces for HDC with alpha channels. 650 651Dependency Changes 652------------------ 653None 654 655Performance Optimizations 656------------------------- 657None 658 659Bug Fixes 660--------- 661* All the bug fixes from 1.14.2, 1.14.4, and 1.14.6 662 663* Fix xcb/xlib compilation and calls. Make image boxes behave when SHM 664 is not available. 665 666* Fix various issues with printing and transparent images on Win32. 667 668* Fix thin lines that don't show up when printing in Inkscape due to 669 overly aggressive culling. 670 (Bug #77298) 671 672* Fix broken printing via pdf when glyph 0 is used for rendering, 673 resulting in missing spaces and letters. 674 (Bug #89082) 675 676* Fix crash for certain glyphs in opentype fonts. 677 (Bug #91902) 678 679* Fix incorrect rendering of SVG paths with more than one subpath. If 680 more than one trap is passed in then it's guaranteed that the returned 681 traps will have their left edge to the left of their right edge, but 682 if only one trap is passed in then the function always returns without 683 doing anything. 684 (Bug #90984) 685 686* Improve rendering with Quartz to better match pixman's blending and 687 filtering behavior. 688 689 690Release 1.14.6 (2015-12-09 Bryce Harrington <bryce@osg.samsung.com>) 691======================================================================== 692Simple bugfix release to fix one Windows issue. 693 694For a complete log of changes since 1.14.4, please see: 695 696 https://cairographics.org/releases/ChangeLog.1.14.6 697 698Features 699-------- 700None 701 702API Changes 703----------- 704None 705 706Dependency Changes 707------------------ 708None 709 710Performance Optimizations 711------------------------- 712None 713 714Bug Fixes 715--------- 716* Fix failure on Windows due to reference of the function 717 cairo_win32_surface_create_with_format(), which isn't included in the 718 1.14.4 release. (Bug #92771) 719 720 721Release 1.14.4 (2015-10-28 Bryce Harrington <bryce@osg.samsung.com>) 722======================================================================== 723Just in time for Halloween we see another bug-fix release for Cairo. 724This brings a few dozen straightforward bug fixes with no API changes. 725 726In addition, this includes a typical assortment of fixes to tests, 727cleanup of warnings and memory leaks, correction of misspellings, 728updates to documentation, etc. 729 730For a complete log of changes since 1.14.2, please see: 731 732 https://cairographics.org/releases/ChangeLog.cairo-1.14.4 733 734Features 735-------- 736None 737 738API Changes 739----------- 740None 741 742Dependency Changes 743------------------ 744None 745 746Performance Optimizations 747------------------------- 748None 749 750Bug Fixes 751--------- 752* Avoid appending empty slots to user data arrays. Fixes a memory 753 consumption regression since commit 9341c254a. 754 755* Return a better error (file-not-found) when setting up pango on 756 devices where the font files don't have read permissions. 757 758* Fix regression in the font size of canvas text in Inkscape when 759 compiled with the Quartz backend. (Bug #84324) 760 761* Fix _cairo_gl_shader_bind_matrix() to maintain compatibility with 762 OpenGL ES 2.0. Manually transpose the matrix. 763 764* Fix incorrect font descriptor conversion when the font matrix yy is 765 negative. (Bug #90538) 766 767* Fix crash when using a complex path for clip and stroke due to 768 discarding the intersection exactly at the top edge. 769 (Bug #74779) 770 771* Fix cairo_get_locale_decimal_point() on Android 772 773* Fix compilation problem on AIX due to conflicting usage of symbol 774 'jmpbuf'. (Bug #89339) 775 776* Fix broken rendering with XCB due to snapshotting of uploaded part of 777 surfaces. (Bug #67505) 778 779* Fix loss of alpha when copying a mask for a cairo recording surface, 780 resulting in a double copy. (Bugs #73038, #73901) 781 782* Fix incorrect recording of certain paths with script surfaces. 783 (Bug #91054) 784 785* Fix typo in definition of MAYBE_WARN in configure script. 786 (Bug #89750) 787 788* Fix use of filename variable after it's been freed. 789 (Bug #91206) 790 791* Fix out of bounds access when printing pattern. 792 (Bug #91266) 793 794* Fix incorrect size calculation in glyph cache unlocking for Cairo GL 795 compositor. 796 (Bug #91321) 797 798* Fix memory leak in _cairo_gl_pattern_texture_setup() 799 (Bug #91537) 800 801* Fix transparent images in win32-print. 802 (Bug #91835) 803 804* Fix _put_shm_image_boxes and _put_image_boxes when no SHM available 805 with XCB. 806 807 808Release 1.14.2 (2015-03-09 Bryce Harrington <bryce@osg.samsung.com>) 809==================================================================== 810This release provides collected bug fixes, along with one feature 811enhancement for the xcb backend, and a small performance improvement for 812fonts. 813 814The running theme of the bug fixes is platform-specific issues, both 815build and run-time. Platforms with fixes include Sparc, AIX, Windows 816(mingw), and Windows (MSVC8). Memory leaks, valgrind issues, and PDF 817issues round out our list. 818 819It's come to light that changes in cairo 1.14 resulted in breakage on 820MacOS X 10.4. We've not yet determined whether to fix up the support, 821or excise the 10.4-specific code and support only OS X 10.5 or newer. 822Meantime, we'll only advertise cairo as working on OS X 10.5. 823 824Features 825-------- 826 * Improve xcb's handling of per-screen subpixel ordering. If no 827 Xft.rgba property is specified, default to the screen's subpixel 828 order. 829 830API Changes 831----------- 832None 833 834Dependency Changes 835------------------ 836None 837 838Performance Optimizations 839------------------------- 840 * Improve performance of cpu_to_be32 and be32_to_cpu, making truetype 841 subsetting of large fonts run about 15% faster. 842 843Bug Fixes 844--------- 845 * Fix unaligned access on sparc with the compact font format (CFF). 846 Unlike truetype, all data in CFF is not aligned. 847 (Debian bug #712836) 848 * Fix unaligned access on sparc with tor-scan-converter's memory pool. 849 * Fix crash when loading a PDF with a transformed image. 850 (fdo bug #85151) 851 * Fix regression on mingw for bigendian test due to removal of file 852 extension for executables. 853 (fdo bug #85120) 854 * Fix handling of backslash in PDF interpreter 855 (fdo bug #85662) 856 * Fix crash in xlib and xcb renderers when swapping a 0-sized glyph 857 * Fix bug with RTL text in PDF operators 858 (fdo bug #86461) 859 * Fix compilation 'cairo-path-stroke-traps.c' with MSVC8 860 (fdo bug #84908) 861 * Fix crash in _fill_xrgb32_lerp_opaque_spans when a span length is 862 negative. 863 * Fix valgrind error by releasing pattern created by 864 cairo_pattern_create_rgb(). 865 * Fix valgrind errors when running cairo-test-suite. 866 * Fix memory leak in recording surface replays 867 (fdo bug #87898) 868 * Fix destruction of fonts in api-special-cases test. 869 (fdo bug #87567) 870 * Fix duplicated surface push on similar-image, preventing trivial GTK3 871 program traces from being replayable, with an error message about 872 invalid values for the size of the input. 873 (fdo bug #73580) 874 * Fix crash when win32 surface's image size does not cover the entire 875 surface. 876 (fdo bug #53121) 877 * Fix crash due to obsolete CGFontGetGlyphPath call 878 (fdo bug #84324) 879 * Fix several build issues on AIX 880 (fdo bugs #89338, #89340, #89356, #89354) 881 * Fix various documentation warnings and errors 882 883 884Release 1.14.0 (2014-10-13 Bryce Harrington <bryce@osg.samsung.com>) 885==================================================================== 886Hard to believe it's been over a year since our last release, but it's 887not for lack of activity. This release includes contributions of a wide 888assortment of bug fixes, build system improvements, warnings cleanups, 889codebase refactoring, test suite repairs, and static analysis work. 890 891This release is lighter on features (compared with 1.12.10) but includes 892a highly demanded rehaul of our image downscaling functionality, which 893solves a serious problem experienced by Inkscape users when shrinking 894embedded bitmaps in SVG files. The new scaling algorithms are used by 895the image backend and by other backends as needed for fallbacks. 896 897 898Features 899-------- 900 901 Filtering improvements for the image backend, in particular 902 down-scaling of images produces filtered images that depend on all the 903 pixels of the source. When using the image backend you get the 904 following settings: 905 906 CAIRO_FILTER_GOOD: uses a box filter for scales less than .75 in 907 either direction. For scales larger than this, the same filter as 908 CAIRO_FILTER_BILINEAR is used. 909 910 CAIRO_FILTER_BEST: uses a Catmull-Rom filter always. When upscaling 911 more than 2x this will produce anti-aliased square pixels, similar 912 to OS/X. 913 914 CAIRO_FILTER_GAUSSIAN: uses PIXMAN_FILTER_BEST, which in current 915 pixman is the same as BILINEAR. (This is subject to change in the 916 future). 917 918 xlib and xcb also use the image fallback for GOOD/BEST filters, but 919 note that other backends do not implement these filtering fixes yet, 920 however other actions may cause them to use an image fallback which 921 will cause these filters to be used. 922 923 Improve handling of device transformation and scaling, allowing Cairo 924 to now support scaling at a device level, permitting easier, more 925 transparent HiDPI support. 926 927 Support JBIG2 mime data in PDF. This allows embedding of more 928 compressed JPEG formats within PDF, rather than including the full 929 uncompressed image. Also, reduce the number of transparency groups 930 used by PDF to keep the file size small and viewing/printing of the 931 PDF fast. 932 933 Expand the embedding section to include stencil mask support. 934 935 Reorder font declarations to be in natural order. 936 937 Update the Skia backend to build against current Skia (as of June 938 2014). 939 940 Drop Link-Time Optimization (LTO) support from build system. This 941 seems to have caused much trouble for unclear benefit, and most 942 distros are reverting or disabling it anyway. 943 944 Optimize VBO size on GL to 1M and to 16k for EGL. This improves 945 (theoretical) performance for desktop GLX use cases while avoiding 946 hitting VBO memory size limitations on embedded devices. 947 948API Changes 949----------- 950 951 cairo_surface_set_device_scale, cairo_surface_get_device_scale: 952 953 Sets a scale that is multiplied to the device coordinates 954 determined by the CTM when drawing to @surface. One common use for 955 this is to render to very high resolution display devices at a scale 956 factor, so that code that assumes 1 pixel will be a certain size 957 will still work. 958 959 cairo_egl_device_get_display, cairo_egl_device_get_context: 960 961 Support get/set of EGLContext and EGLDisplay for egl-based cairo 962 devices, similar to GLX. 963 964Dependency Changes 965------------------ 966 967 Cairo now requires glib 2.14 for its gobject helper functions, 968 and pixman 0.30 for downscaling. 969 970 971Bug fixes 972--------- 973 974 Don't embed CMYK Jpeg images in svg. 975 976 Fix tests to place output in proper location. 977 978 Fix determination of alpha for all surfaces when recording. 979 980 Extend oversize check to cairo_gl_surface_create_for_texture, so an 981 error surface is returned if the texture is too large to render to. 982 983 Fix embedding of mime data in PDF and PS files. 984 985 Remove useless error handling in *_reply() functions in XCB. 986 987 Fix a double-free exposed by multithreaded apps creating and 988 destroying the same font concurrently. 989 https://bugs.freedesktop.org/show_bug.cgi?id=69470 990 991 Fix corrupt stacks produced by bugs in operand emission for trace. 992 993 Fix out of bounds array access in format cache for xlib 994 995 Don't rename glyphs used by seac operator. This can cause certain 996 combined characters to use their decorations (e.g. umlauts on ö) to be 997 lost during printing of PDFs using evince. 998 https://bugs.freedesktop.org/show_bug.cgi?id=70364 999 1000 Fix crash on calling cairo_create with a finished surface 1001 1002 Fix SSIZE_T definition problem when making with MSYS on Windows7 1003 1004 Fix one off issue in gl context cleanup 1005 1006 Fix usage of CAIRO_STACK_ARRAY_LENGTH 1007 1008 Fix rectangle stroke with non rectilinear pen 1009 1010 Fix imagemask with pattern source failure on some printers. This bug 1011 could cause files converted using pdftops to fail for example on Ricoh 1012 printers, or opening in Adobe Distiller on Windows. 1013 https://bugs.freedesktop.org/show_bug.cgi?id=69485 1014 1015 Fix whitespace in font names 1016 1017 Fix page size in generated PDFs. When printing using pdftocairo on 1018 larger page sizes, such as 11x17, the image would be cropped to letter 1019 size. 1020 https://bugs.freedesktop.org/show_bug.cgi?id=73452 1021 1022 Fix path-currentpoint test by preserving current-point in 1023 copy_path()/append_path() sequence 1024 1025 Fix generation of HTML in code docs for 1026 cairo-format-stride-for-width. Raw HTML code was being passed 1027 to the browser, instead of displaying normally. 1028 https://bugs.freedesktop.org/show_bug.cgi?id=63257 1029 1030 Fix spelling of "tessellator" throughout code. We're using the 1031 American rather than British spelling of this word. 1032 https://bugs.freedesktop.org/show_bug.cgi?id=50411 1033 1034 Fix crash in pixman_image_composite32 1035 1036 Fix crash when trying to modify a (const) all-clipped cairo_clip_t 1037 https://bugs.freedesktop.org/show_bug.cgi?id=75819 1038 1039 Add check_composite method to all compositors, to fix crashes in the 1040 test suite. 1041 1042 Fix crash in Firefox when scrolling on certain pages. 1043 1044 Fix memory leaks found by static analysis. 1045 1046 Fix build of any2ppm if fork is not available. 1047 1048 Fix broken build for Qt backend, due to missing libstdc++. 1049 1050 Fix typo in two cairo_uint128 functions. Fixes potential build issues 1051 on systems without a uint128 type. 1052 1053 Fix build when --enable-pdf=no 1054 1055 Fix cache_frozen assertions for Win32 print. 1056 1057 Correctly check for xcb image surface for inplace upload 1058 1059 Fix webkit-based web browser crashes due to empty boxes by skipping 1060 over them when tesselating. 1061 1062 Make pixman, libpng, and zlib paths commandline configurable for win32 1063 builds. 1064 1065 Fix image scale on Win32 when GDI scale is not identity. 1066 1067 Fix float endian configure test when using clang -O4 1068 1069 Fix compilation with Android bionic libc 1070 1071 Don't try to build util/sphinx on Windows 1072 1073 Fix loss of precision when emitting joins. This was caused by 1074 discrepancies in line gradients when passing trapezoids around. 1075 1076 Fix loss of precision and associated rendering issues in 1077 cairo-tor-scan-converter from projection onto sample grid. 1078 1079 Fix pixman oversampling of neighbouring edges within a cell by 1080 eliminating self-intersections for the pixman traps compositor. 1081 1082 Fix multi-line string splitting in PDFs 1083 1084 Various cleanups and fixes to warnings, documentation, tests, and 1085 build system. Improve error handling and return value checks. 1086 Cleanup XFAIL tests and reference images. Cover recently added 1087 functionality. 1088 1089 1090Release 1.12.16 (2013-08-21 Chris Wilson <chris@chris-wilson.co.uk>) 1091=================================================================== 1092Thanks to everybody who reported a bug and helped us develop a fix, 1093we have amassed quite a few bug fixes. There are still more outstanding 1094bugs that seek attention and a little bit of TLC, but this release has 1095been delayed long enough... 1096 1097Bug fixes 1098--------- 1099 1100 Set the correct orientation for simple boxes with a negative scale 1101 factor. 1102 1103 Fix the creation of the shading dictionary in PDF. 1104 1105 Fix a crash in PDF when incorporating an image with CAIRO_EXTEND_PAD. 1106 https://bugs.freedesktop.org/show_bug.cgi?id=61451 1107 1108 Avoid upscaling bitmap fonts if possible. 1109 1110 Fix an assertion failure within the mempool allocator for shared memory. 1111 1112 Fix allocation size for CFF subsets. 1113 1114 Export cairo_matrix_t for GObject bindings. 1115 1116 Fix a double free in the Quartz backend. 1117 https://bugs.freedesktop.org/show_bug.cgi?id=62885 1118 1119 Fix origin of GDI StretchBlits for the Windows backend 1120 https://bugs.freedesktop.org/show_bug.cgi?id=61876 1121 1122 Fix error propagation for requests to create a similar surface with 1123 negative size. 1124 https://bugs.freedesktop.org/show_bug.cgi?id=63196 1125 1126 Fix complex clipping of trapezoids with regions 1127 https://bugzilla.gnome.org/show_bug.cgi?id=697357 1128 1129 Stop leaking the image data when loading PNGs 1130 1131 Fix unbounded operations with a clip mask through the span compositor 1132 https://bugs.freedesktop.org/show_bug.cgi?id=61592 1133 1134 Add missing checks before rendering to a finished surface - so we return 1135 an error rather than hit an assert. 1136 https://bugs.freedesktop.org/show_bug.cgi?id=68014 1137 1138 Prevent an assertion failure when creating similar GL surfaces larger 1139 than supported by hardware. 1140 1141 Prevent a double free of a similar image under Windows. 1142 https://bugs.freedesktop.org/show_bug.cgi?id=63787 1143 1144 1145Release 1.12.14 (2013-02-10 Chris Wilson <chris@chris-wilson.co.uk>) 1146=================================================================== 1147In the last week we had a few more bugs reported and promptly resolved. 1148As these are a combination of regressions and stability issues, it is 1149time for a prompt update and release. Many thanks to everyone for 1150testing and reporting issues, and helping to make Cairo better. 1151 1152Bug fixes 1153--------- 1154 1155 Prevent user callbacks accessing user-data during destroy to prevent 1156 use-after-free bugs. 1157 https://bugzilla.mozilla.org/show_bug.cgi?id=722975 1158 1159 Use standard names for glyphs in subset fonts (PDF). 1160 https://bugs.freedesktop.org/show_bug.cgi?id=60248 1161 1162 Fix detection of Win98. The logic for detecting Win98 (and its broken 1163 AlphaBlend()) was inverted, disabling AlphaBlend() for everyone. 1164 1165 Prevent numeric overflow from extrapolating polygon edges to the clip 1166 boundary and causing severe render artifacts. 1167 https://bugs.freedesktop.org/show_bug.cgi?id=60489 1168 1169 Fix computation of glyph string coordinates when breaking up runs 1170 for xlib. 1171 1172 Fix an assertion in the win32 backend for failing to clear its 1173 similar-images. 1174 https://bugs.freedesktop.org/show_bug.cgi?id=60519 1175 1176 1177Release 1.12.12 (2013-01-31 Chris Wilson <chris@chris-wilson.co.uk>) 1178=================================================================== 1179The goal of this release is to fix the synchronisation problems that 1180were exhibited in the SHM transport for cairo-xlib. This cropped up 1181any place that tried to rapidly push fresh pixel data to the X server 1182through an ordinary image surface, such as gimp-2.9 and evince. 1183 1184Bug fixes 1185--------- 1186 1187 Avoid replacing the entire image when uploading subimages 1188 https://bugs.freedesktop.org/show_bug.cgi?id=59635 1189 1190 Force synchronisation for scratch SHM image buffers, so that we do 1191 not overwrite data as it is being read by X. 1192 https://bugs.freedesktop.org/show_bug.cgi?id=59635 (also) 1193 1194 Fix typos in detecting multisampling for the GL (MSAA) backend. 1195 1196 Fix a memory leak in the GL (MSAA) backend. 1197 1198 Fix a reference counting bug when mapping a GL surface to an image. 1199 1200 1201Release 1.12.10 (2013-01-16 Chris Wilson <chris@chris-wilson.co.uk>) 1202=================================================================== 1203A heap of bug fixes everywhere, and the gradual completion of the MSAA 1204backend for cairo-gl. Perhaps the most noteworthy set of the bugfixes 1205was the crusage lead by Behdad Eshfabod to make font handling by 1206pango/cairo/fontconfig fully threadsafe. This testing revealed a couple 1207of races that needed fixing in Cairo's scaled-font and glyph cache. 1208 1209Bug fixes 1210--------- 1211 1212 Append coincident elements to the recording's surface bbtree so that 1213 the list is not corrupted and the overlapping elements lost. 1214 1215 Fix cairo-trace to correctly record map-to-image/unmap-image and then 1216 replay them. 1217 1218 Ignore MappingNotifies when running the XCB testsuite as they are sent 1219 to all clients when the keyboard changes. The testsuite would detect 1220 the unexpected event and complain. 1221 1222 Handle very large images in the XCB backend. 1223 1224 Fix a memory leak in the xlib/shm layer, and prevent use of the SHM 1225 surfaces after the display is closed. 1226 https://bugs.freedesktop.org/show_bug.cgi?id=58253 1227 1228 Handle resizing of bitmap fonts, in preparation for a fix to 1229 fontconfig to correctly pass on the user request for scaling. 1230 1231 Always include subroutine 4 (hint replacement idion) when subsetting 1232 type 1 fonts in order to prevent a crash in cgpdftops on Mac OS/X 1233 1234 Fix a couple of typos in the cairo-gobject.h header files for 1235 introspection. 1236 1237 Prevent a mutex deadlock when freeing a scaled-glyph containing a 1238 recording-surface that itself references another scaled-glyph. 1239 https://bugs.freedesktop.org/show_bug.cgi?id=54950 1240 1241 Make scaled-font cache actually thread-safe and prevent 1242 use-after-frees. 1243 1244 Restore support for older versions of XRender. A couple of typos and a 1245 few forgotten chunks prevented the xlib compositor from running 1246 correctly with XRender < 0.10. Note that there are still a few 1247 regressions remaining. 1248 1249 1250Release 1.12.8 (2012-11-24 Chris Wilson <chris@chris-wilson.co.uk>) 1251=================================================================== 1252Another couple of weeks and a few more bugs have been found and fixed, 1253it is time to push the next point release. Many thanks to everyone who 1254reported their issues and helped us track down the bugs and helped 1255testing the fixes. 1256 1257Bug fixes 1258--------- 1259 1260 Expand the sanity checking for broken combinations of XSendEvent and 1261 ShmCompletionEvent. 1262 1263 Notice that "The X.Org Foundation" sometimes also identifies itself 1264 as "The Xorg Foundation". 1265 1266 Handle various ages of libXext and its Shm headers. 1267 1268 Fix the invalid clipping of the source drawable when using SHM 1269 transport to upload images. 1270 https://bugs.freedesktop.org/show_bug.cgi?id=56547 1271 1272 Handle all Type1 postscript operators for better font compatibility. 1273 https://bugs.freedesktop.org/show_bug.cgi?id=56265 1274 1275 Fix a couple of memory leaks in Type1 font subsetting 1276 https://bugs.freedesktop.org/show_bug.cgi?id=56566 1277 1278 Tighten the evaluation of the start/stop pen vertices, and catch a few 1279 instances where we would use a fan instead of a bevel. 1280 https://bugs.freedesktop.org/show_bug.cgi?id=56432 1281 1282 Fix assumption that geometric clipping always succeeds with the 1283 span-compositor. 1284 https://bugs.freedesktop.org/show_bug.cgi?id=56574 1285 1286 Fix call to spline intersection when evaluating whether a stoke is 1287 visible. 1288 1289 Remember to copy inferior sources when using SHM to readback the 1290 surface for use as a source. 1291 1292Release 1.12.6 (2012-10-22 Chris Wilson <chris@chris-wilson.co.uk>) 1293=================================================================== 1294Thanks to everyone who download cairo-1.12.4 and gave us their feedback. 1295It truly was invaluable and has helped us to fix many portability issues 1296that crept in with some of the new features. This release aims to fix 1297those stability issues and run on a wider range of systems. 1298 1299Bug fixes 1300--------- 1301 1302 Fix the recording surface to actually snapshot the source and so fix 1303 PDF drawing. 1304 1305 Calling XSendEvent with an XShmCompletionEvent is incompatabile with 1306 older Xorg servers. 1307 1308 Reorder CloseDisplay chain so that XShm is not reinstantiated after 1309 shutdown, causing a potential crash if the Display was immediately 1310 recreated using the same memory address. 1311 1312 Make sure that the Xserver has attached to the SHM segment before 1313 deleting it from the global namespace on systems that do not support 1314 deferred deletion. 1315 1316 Type1 subsetting support for PDF (and PS) was once again improved to 1317 work with a larger number of PDF readers. 1318 1319 GLESv2 build fixes and improved support for embedded GPUs. 1320 1321 Tweak the invisible pen detection for applications that are currently 1322 using too large values for geometric tolerance. 1323 1324 A build fix for older freetype libraries. 1325 1326 1327Release 1.12.4 (2012-10-05 Chris Wilson <chris@chris-wilson.co.uk>) 1328=================================================================== 1329More bugs, and more importantly, more fixes. On the cairo-gl side, we 1330have refinements to the MSAA compositor which enables hardware 1331acceleration of comparatively low-quality antialiasing - which is useful 1332in animations and on very high density screens. For cairo-xlib, we have 1333finally enabled SHM transport for image transfers to and from the X 1334server. A long standing required feature, SHM transport offers a notable 1335reduction in rendering latency by reducing the number of copies 1336required to upload image data - given hardware and driver support, 1337cairo-xlib can now perform zero copy uploads onto the GPU. And as usual 1338Adrian Johnson has been very busy fixing many different corner cases in 1339cairo-pdf, improving opacity groups and font subsetting. Last, but not 1340least, for cairo-image Søren Sandmann Pedersen added support for 1341rendering glyphs to pixman and using that from within cairo. The new 1342glyph rendering facility reduces the overhead for setting up the 1343compositing operation, improving glyph thoughput for the image backend 1344by a factor of about 4. And before he did so, he also fixed up a few 1345bugs in the existing glyph rendering code. So many thanks to Andrea 1346Canciani, Adrian Johnson, Chuanbo Weng, Dongyeon Kim, Henry Song, Martin 1347Robinson, Søren Sandmann Pedersen and Uli Schlachter for their 1348contributions, finding and fixing bugs. 1349 1350Bug fixes 1351--------- 1352 1353 Interior boxes were being dropped when amalgamating regions during 1354 tessellation. 1355 https://bugs.freedesktop.org/show_bug.cgi?id=49446 1356 1357 Allow building without gtk-doc installed 1358 1359 Invalid edge generation whilst reducing complex polygons. 1360 https://bugs.freedesktop.org/show_bug.cgi?id=50852 1361 1362 Stroking around tight cusps 1363 1364 Use locale correct formats for reading font subsetting and valid 1365 buffers. 1366 https://bugs.freedesktop.org/show_bug.cgi?id=51443 1367 1368 Ensure that the type1 subset includes all the glyph encodings 1369 https://bugs.freedesktop.org/show_bug.cgi?id=53040 1370 1371 Upload the whole source for a repeating pattern. 1372 https://bugs.freedesktop.org/show_bug.cgi?id=51910 1373 1374 Fix damage tracking to handle continuation chunks correctly and so 1375 prevent crashes on win32. 1376 https://bugs.freedesktop.org/show_bug.cgi?id=53384 1377 1378 Avoid emitting miter joins for degenerate line segments 1379 https://bugzilla.mozilla.org/show_bug.cgi?id=407107 1380 1381 Convert the relative path semgents into the backend coordinates 1382 and then back again to user coordinates (cairo_copy_path, 1383 cairo_append_path) 1384 https://bugs.freedesktop.org/show_bug.cgi?id=54732 1385 1386 Fix extents computations for a degenerate path consisting only of a 1387 move-to 1388 https://bugs.freedesktop.org/show_bug.cgi?id=54549 1389 1390 Prevent crashing on a degenerate project edge after polygon 1391 intersection 1392 https://bugs.freedesktop.org/show_bug.cgi?id=54822 1393 1394 1395 1396Release 1.12.2 (2012-04-29 Chris Wilson <chris@chris-wilson.co.uk>) 1397=================================================================== 1398After such a long gestation period for the release of Cairo 1.12, we 1399inevitably accumulated a few bugs that were flushed out by broadening the 1400test base. Thanks to everybody who tried the release, apologies to any one 1401unfortunate enough to encounter a bug and many thanks for reporting it. As 1402a result Adrian Johnson, Alexandros Frantzis, Andrea Canciani, Kalev 1403Lember, Maarten Bosman, Marcus Meissner, Nis Martensen and Uli Schlachter 1404have squashed many more bugs and improved the documentation. I would 1405strongly recommend everyone to upgrade to cairo-1.12.2. 1406-Chris 1407 1408Bug fixes 1409--------- 1410 1411 Allow applications to create 0x0 xlib surfaces, such as used by LibreOffice. 1412 https://bugs.freedesktop.org/show_bug.cgi?id=49118 1413 1414 Trim composite extents for SOURCE/CLEAR operators to the mask. 1415 1416 Use fallback fonts in PDF for unhandled computed glyph widths 1417 https://bugs.freedesktop.org/show_bug.cgi?id=48349 1418 1419 Handle snapshots of recording surfaces for analysing pattern extents. 1420 Fixes a regression of reporting the PDF bounding box as being the page size. 1421 1422 Fix allocation size for PDF pattern ids. 1423 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49089 1424 1425 Fix emission of rectilinear dashed segments, with and without scaling, and 1426 application of degenerate line joins. 1427 1428 Clamp unbounded fixup polygons to the clip extents. 1429 1430 Prevent infinite loop due to rounding errors whilst incrementing along dashes. 1431 1432 Prevent overflow for inline a8 span filling. 1433 1434 Miscellaneous build fixes for Cygwin on Windows and Solaris. 1435 1436Release 1.12.0 (2012-03-23 Chris Wilson <chris@chris-wilson.co.uk>) 1437=================================================================== 1438It's taken over 18 months, but the wait is finally over. A new cairo release! 1439We are pleased to announce a new stable release of Cairo that brings many 1440new features and performance improvements, all whilst maintaining 1441compatibility with cairo-1.0 and all releases since. We recommend anyone 1442using a previous release of Cairo to upgrade to 1.12.0. 1443 1444The major feature of this release is the introduction of a new procedural 1445pattern; the mesh gradient. This, albeit complex, gradient is constructed 1446from a set of cubic Bezier patches and is a superset of all other gradient 1447surfaces which allows for the construction of incredibily detailed patterns. 1448In PDF parlance, the mesh gradient corresponds with type 7 patterns. Many 1449thanks to Andrea Canciani for bringing this to Cairo, and for his work on 1450making gradient handling robust. 1451 1452Not content with just adding another procedural pattern, Cairo 1.12 also 1453adds new API to create a callback pattern, 1454cairo_pattern_create_raster_source, that allows the application to 1455provide the pixel data for the region of interest at the time of 1456rendering. This can be used for instance, by an application to decode 1457compressed images on demand and to keep a cache of those decompressed 1458images, independently of Cairo. When combined with the recording 1459surface, it should form a useful basis for a deferred renderer. 1460 1461With the release of cairo-1.12, we also introduce a new supported 1462backend for interoperating with X using XCB. Uli Schlachter, also 1463maintainer of awesome and contributor to libxcb, has volunteered to 1464maintain cairo-xcb for us. Thanks Uli! 1465 1466For cairo-1.12, we have also added some common API to address any 1467surface as an image and so allow direct modification of the raster data. 1468Previously, only the Quartz and Win32 backends supported a very narrow 1469interface to allow for efficient pixel upload. Now with 1470cairo_surface_create_similar_image, cairo_surface_map_to_image, and 1471cairo_surface_unmap_image, Cairo exports a consistent method for 1472treating those surfaces as an image and so allow modification inplace. 1473These are the same routines used internally, and should support 1474efficient transfer or direct mapping of the target surfaces as 1475applicable. 1476 1477Another focus over the past year has been to address many performance 1478issues, without sacrificing the composition model. To accomplish the 1479goal, once again the rasterisation pipeline was overhauled and made 1480explicit, giving the backends the freedom to implement their own 1481specific pipeline whilst also providing a library of common routines 1482from which to build the pipeline. For instance, this allows the image 1483backend and the gl backend to composite scan line primitives inplace, 1484and to then implement custom fallbacks to catch the corner cases that do 1485not map onto their fastest paths. Similarly, this allows for the Xlib 1486backend to implement trapezoidation without compromising the other 1487backends, yet still allow for the pipeline to be used elsewhere for 1488testing and fallbacks. Clipping was once again overhauled, so that the 1489common cases for the raster pipelines could be captured and processed 1490with fast paths with the emphasis on performing geometric clipping to 1491reduce the frequency of using multi-pass clipmasks. Stroking was made 1492faster, both by providing specialised fast-paths for simple, yet frequent, 1493cases (such as stroking around a rectangle) and by reducing the number 1494of edges generated by the general stroker. 1495 1496As part of the focus on performance, Cairo 1.12 introduces some 1497antialias hints (NONE, FAST, GOOD, BEST) that are interpolated by the 1498rasterisers to fine tune their performance versus quality. Cairo 1.12 1499also introduces a new observation architecture, 1500cairo_surface_observer_t, which can be used to analyse the amount of 1501time consumed by drawing commands and help identify inefficiencies in 1502both Cairo and the application. 1503 1504Last, but by no means least, the OpenGL backend has seen significant 1505work including the port to GLESv2 and the exploitation of advanced 1506hardware features. Interesting times. 1507 1508As always, I would like to thank everyone who contributed to Cairo, 1509not only through writing code, but also submitting documentation, bug 1510reports, suggestions and generally having fun with Cairo! In particular 1511though this release could not have happened without the efforts of 1512Adrian Johnson, Alexandros Frantiz, Andrea Canicani, Martin Robinson, 1513Nis Martensen, and Uli Schlachter. Thanks. 1514-Chris 1515 1516Snapshot 1.11.4 (2012-13-12) 1517============================ 1518The cairo community is pleased to finally announce the long aniticpated 1519release candidate for 1.12, 1.11.4, of the cairo graphics library. This 1520is the first major update to cairo in over a year and brings a large 1521number of new features; undoubtably a few bugs as well. 1522 1523While many people have contributed and have helped to test the release, 1524providing feedback on 1.10 and suggesting improvements, this release 1525is the result of a few persevering souls who deserve recognition for their 1526outstanding contributions: Andrea Canciani (all round bug fixing, 1527performance tuning and master of the gradients), Adrian Johnson (PDF 1528supremo) and Uli Schlachter (who stepped forward as maintainer for the 1529XCB backend). 1530 1531Major additions since 1.11.2: 1532 1533 * cairo_surface_map_to_image API for pixel level access to any surface 1534 1535 * New antialias hints to control the trade-off between speed and quality 1536 1537 * A callback pattern, cairo_pattern_create_raster_source, for lazy 1538 decoding of image data. 1539 1540 * cairo_surface_observer_t, a new type of surface to gather performance 1541 statistics 1542 1543 * XCB as a supported backend 1544 1545 * A rewritten compositor pipeline for performance improvements for, but not 1546 limited to, the xlib and image backends. 1547 From ION and PineView through to SandyBridge, every machine I have shows 1548 across the board performance improvement on the cairo-traces: 1549 1550 i5-2520m gnome-system-monitor: 5.97x speedup 1551 pnv gnome-system-monitor: 4.86x speedup 1552 i5-2520m firefox-asteroids: 4.66x speedup 1553 pnv firefox-asteroids: 4.43x speedup 1554 image firefox-canvas: 3.82x speedup 1555 i5-2520m firefox-canvas-alpha: 3.49x speedup 1556 image firefox-asteroids: 2.87x speedup 1557 pnv firefox-talos-svg: 2.83x speedup 1558 ion grads-heat-map: 2.75x speedup 1559 pnv firefox-canvas-alpha: 2.66x speedup 1560 image gnome-system-monitor: 2.66x speedup 1561 image swfdec-giant-steps: 2.46x speedup 1562 image firefox-canvas-alpha: 2.14x speedup 1563 i5-2520m firefox-talos-svg: 2.03x speedup 1564 image grads-heat-map: 2.02x speedup 1565 ion gnome-system-monitor: 2.00x speedup 1566 pnv firefox-particles: 1.99x speedup 1567 i5-2520m grads-heat-map: 1.96x speedup 1568 pnv firefox-canvas: 1.92x speedup 1569 ion firefox-particles: 1.80x speedup 1570 image poppler-reseau: 1.77x speedup 1571 pnv xfce4-terminal-a1: 1.72x speedup 1572 image firefox-talos-svg: 1.65x speedup 1573 pnv grads-heat-map: 1.63x speedup 1574 i5-2520m firefox-canvas: 1.63x speedup 1575 pnv swfdec-youtube: 1.62x speedup 1576 image ocitysmap: 1.59x speedup 1577 i5-2520m firefox-fishbowl: 1.56x speedup 1578 i5-2520m poppler-reseau: 1.50x speedup 1579 i5-2520m evolution: 1.50x speedup 1580 i5-2520m midori-zoomed: 1.43x speedup 1581 pnv firefox-planet-gnome: 1.42x speedup 1582 i5-2520m firefox-talos-gfx: 1.41x speedup 1583 i5-2520m gvim: 1.41x speedup 1584 pnv ocitysmap: 1.37x speedup 1585 image poppler: 1.31x speedup 1586 ion firefox-canvas-alpha: 1.35x speedup 1587 ion firefox-talos-svg: 1.34x speedup 1588 i5-2520m ocitysmap: 1.32x speedup 1589 pnv poppler-reseau: 1.31x speedup 1590 i5-2520m firefox-planet-gnome: 1.31x speedup 1591 pnv firefox-fishbowl: 1.30x speedup 1592 pnv evolution: 1.28x speedup 1593 image gvim: 1.27x speedup 1594 i5-2520m swfdec-youtube: 1.25x speedup 1595 pnv gnome-terminal-vim: 1.27x speedup 1596 pnv gvim: 1.25x speedup 1597 image firefox-planet-gnome: 1.25x speedup 1598 image swfdec-youtube: 1.25x speedup 1599 ... 1600 1601And a plethora of minor improvements everywhere! 1602-Chris 1603 1604Snapshot 1.11.2 (2011-01-23) 1605=========================== 1606 1607In this first snapshot along the way to cairo-1.12.0, we are very excited 1608to announce the introduction of Bezier surface gradients, known as type 16096/7 gradients in PS/PDF parlance. This is the culmination of much work by 1610the dynamic duo: Adrian Johnson and Andrea Canciani. Thanks guys! 1611 1612Also, I want to warmly welcome Uli Schlachter who recently joined the 1613Cairo community on a mission. That mission is to make cairo-xcb a 1614supported backend for 1.12. And for this snapshot he has made great 1615strides in fixing all the bugs I had left behind. Thanks Uli! 1616 1617And we have also seen a new contributor, Alexandros Frantzis, who has 1618begun bringing up cairo-gl for GLESv2 devices. Thanks Alex! 1619 1620And lastly, I must also thank Adrian and Andrea for the vast numbers of 1621bugs that they have tackled between them, fixing all those little corner 1622cases that lie hidden until too late. 1623 1624API additions: 1625 1626The ability to construct piece-wise Bezier surface gradients: 1627 1628 cairo_pattern_create_mesh 1629 1630 constructs a pattern of type CAIRO_PATTERN_TYPE_MESH using 1631 1632 cairo_pattern_mesh_begin_patch 1633 cairo_pattern_mesh_end_patch 1634 cairo_pattern_mesh_curve_to 1635 cairo_pattern_mesh_line_to 1636 cairo_pattern_mesh_move_to 1637 cairo_pattern_mesh_set_control_point 1638 cairo_pattern_mesh_set_corner_color_rgb 1639 cairo_pattern_mesh_set_corner_color_rgba 1640 cairo_pattern_mesh_get_patch_count 1641 cairo_pattern_mesh_get_path 1642 cairo_pattern_mesh_get_corner_color_rgba 1643 cairo_pattern_mesh_get_control_point 1644 1645The introduction of a unique ID accessible via the mime data type: 1646 CAIRO_MIME_TYPE_UNIQUE_ID 1647 1648 1649 1650 1651 1652Release 1.10.2 (2010-12-25 Chris Wilson <chris@chris-wilson.co.uk>) 1653=================================================================== 1654The cairo community is pleased to announce the 1.10.2 release of the 1655cairo graphics library. This is the first update to cairo's stable 1.10 1656series and contains a large number of bug fixes. 1657 1658While many people have contributed and have help to test the release, 16592 people deserve special recognition for their efforts in tracking down 1660and fixing bugs, Andrea Canciani and Adrian Johnson. Thanks to their 1661tremendous efforts, and of all cairo contributors, it is much 1662appreciated. 1663 1664We recommend everyone upgrade to cairo 1.10.2 and hope that everyone 1665will continue to have lots of fun with cairo! 1666 1667-Chris 1668 1669Bug fixes 1670--------- 1671 1672 Fix embedding of grayscale jpegs in PS. 1673 https://bugs.freedesktop.org/show_bug.cgi?id=31632 1674 1675 Fix the reported path of extents containing a curve. 1676 1677 Fix the compositing of unaligned boxes. 1678 1679 Reset the clipper in PDF upon finish. 1680 1681 Fix degenerates arcs to become a degenerate line. 1682 1683 Build support for autoconf 2.67 1684 1685 Fix painting of transformed patterns in PS 1686 1687 Fix the EPS bounding box for PS 1688 https://bugs.freedesktop.org/show_bug.cgi?id=24688 1689 1690 Fix the missing content for EPS 1691 https://bugs.freedesktop.org/show_bug.cgi?id=24688 1692 1693 Fix regression upon changing page size in PS/PDF 1694 https://bugs.freedesktop.org/show_bug.cgi?id=24691 1695 1696 Only use ActualText with PDF-1.5 documents 1697 1698 Fix the bbox for type1 fallbacks. 1699 1700 Reset the color after ending the context in PDF 1701 https://bugs.freedesktop.org/show_bug.cgi?id=31140 1702 1703 Fix the advance of subsetted type1 fonts 1704 https://bugs.freedesktop.org/show_bug.cgi?id=31062 1705 1706 Fix handling of EXTEND_NONE gradients for PDF 1707 1708 Restrict in-place optimisation for a8 image masks with SOURCE 1709 1710 1711Release 1.10.0 (2010-09-06 Chris Wilson <chris@chris-wilson.co.uk>) 1712=================================================================== 1713The cairo community is astounded (and flabbergast) to finally announce 1714the 1.10.0 release of the cairo graphics library. This is a major update 1715to cairo, with new features and enhanced functionality which maintains 1716compatibility for applications written using any previous major cairo 1717release, (1.8, 1.6, 1.4, 1.2, or 1.0). We recommend that anybody using 1718a previous version of cairo upgrade to cairo 1.10.0. 1719 1720One of the more interesting departures for cairo for this release is the 1721inclusion of a tracing utility, cairo-trace. cairo-trace generates a 1722human-readable, replayable, compact representation of the sequences of 1723drawing commands made by an application. This can be used to inspecting 1724applications to understand issues and as a means for profiling 1725real-world usage of cairo. 1726 1727The traces generated by cairo-trace have been collected in 1728 1729 git://git.cairographics.org/git/cairo-traces 1730 1731and have driven the performance tuning of cairo over the last couple of 1732years. In particular, the image backend is much faster with a new 1733polygon rasterisation and a complete overhaul of the tessellator. Not 1734only is this faster, but also eliminates visual artifacts from 1735self-intersecting strokes. Not only has cairo-trace been driving 1736performance improvements within cairo, but as a repeatable means of 1737driving complex graphics it has been used to tune OpenGL, DDX, and 1738pixman. 1739 1740Cairo's API has been extended to better support printing, notably 1741through the ability to include a single compressed representation of an 1742image for patterns used throughout a document, leading to dramatic file 1743size reductions. Also the meta-surface used to record the vector 1744commands compromising a drawing sequence is now exposed as a 1745CAIRO_SURFACE_TYPE_RECORDING, along with a new surface that is a child of a 1746larger surface, CAIRO_SURFACE_TYPE_SUBSURFACE. One typical usage of a 1747subsurface would be as a source glyph in a texture atlas, or as a 1748restricted subwindow within a canvas. 1749 1750Cairo's API has also resurrected the RGB16 format from the past as 1751the prevalence of 16-bit framebuffers has not diminished and is a 1752fore-taste of the extended format support we anticipate in the future. 1753Increasing cairo's utility, we introduce the cairo_region_t for handling 1754sets of pixel aligned rectangles commonly used in graphics applications. 1755This is a merger of the GdkRegion and the pixman_region_t, hopefully 1756providing the utility of the former with the speed of the latter. 1757 1758Furthermore cairo has been reworked to interoperate more closely with 1759various acceleration architectures, gaining the ability to share 1760those hardware resources through the new cairo_device_t. For instance, 1761with the new OpenGL backend that supersedes the Glitz backend, hardware 1762and rendering operations can be shared between a classic OpenGL 1763application mixing libVA for the hardware assisted video decode with 1764cairo for high quality overlays all within the same OpenGL canvas. 1765 1766Many thanks for the hard work of Adrian Johnson, Andrea Canciani, Behdad 1767Esfahbod, Benjamin Otte, Carl Worth, Carlos Garcia Campos, Chris Wilson, 1768Eric Anholt, Jeff Muizelaar, Karl Tomlinson, M Joonas Pihlaja, Søren 1769Sandmann Pedersen and many others that have contributed over the last 1770couple of years to cairo. Thank you all! 1771 1772Snapshot 1.9.14 (2010-07-26) 1773============================ 1774 1775 A quiet couple of weeks, hopefully Cairo is seeing widescale deployment and 1776 we are being to see the results of the stabilisation effort. Clipping bugs 1777 seems to have been the order of the last couple of weeks, with a couple 1778 reported and duly fixed. Thank you Igor Nikitin and Karl Tomlinsion for 1779 finding those regressions. At this point all that seems to remain to do is 1780 to fix the outstanding regressions in the PDF backend... 1781 1782Bugs fixes 1783---------- 1784 1785 Clip doesn't work for text on the image backend 1786 https://bugs.freedesktop.org/show_bug.cgi?id=29008 1787 1788 Add explicit dependency for cxx 1789 https://bugs.freedesktop.org/show_bug.cgi?id=29114 1790 1791 Fix regressions in reporting clip extents 1792 https://bugs.freedesktop.org/show_bug.cgi?id=29120 1793 https://bugs.freedesktop.org/show_bug.cgi?id=29121 1794 https://bugs.freedesktop.org/show_bug.cgi?id=29122 1795 https://bugs.freedesktop.org/show_bug.cgi?id=29124 1796 https://bugs.freedesktop.org/show_bug.cgi?id=29125 1797 1798 1799Snapshot 1.9.12 (2010-07-12) 1800============================ 1801 1802 A couple of weeks spent fixing those annoying bugs and cleaning up the build 1803 system; the list of outstanding tasks to complete for the stable release is 1804 finally shrinking. The chief bug fixer has been Benjamin Otte who not only 1805 made sure that the public API is consistent and being tested for its 1806 consistency, but also ensured that the documentation was up-to-date and 1807 spent time clarifying cases where even the Cairo developers have come 1808 unstuck in the past. Many thanks, Benjamin. However, he was not alone, 1809 as Andrea Canciani continued his fine work in isolating broken corner cases 1810 and proceeding to fix them, and tidying up the quartz backend. And last, but 1811 definitely not least, M Joonas Pihlaja tried building Cairo across a 1812 perverse range of systems and fixed up all the loose bits of code that came 1813 unravelled. Thanks everybody! 1814 1815API Changes 1816----------- 1817 1818 cairo_surface_set_mime_data, cairo_surface_get_mime_data: 1819 1820 The length parameter is now an unsigned long (as opposed to an unsigned 1821 int). The parameter is intended to be an equivalent to a size_t without 1822 requiring POSIX types and be large enough to store the size of the 1823 largest possible allocation. 1824 1825 cairo_gl_surface_create_for_texture: 1826 1827 This a new surface constructor for cairo-gl that explicitly enables 1828 render-to-texture for foreign, i.e. application, textures. 1829 1830 cairo_region_xor, cairo_region_xor_rectangle 1831 1832 A couple of utility routines add to the region handling interface for 1833 the purpose of replacing existing GdkRegion functionality. 1834 1835Bugs fixes 1836---------- 1837 1838 https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 1839 1840 Inkscape was caught in the act of attempting to modify a finished surface. 1841 Unfortunately, we had the ordering of our guards and assertions wrong and 1842 so an ordinary application error was triggering an assert in Cairo. This 1843 lead Benjamin to add a test case to ensure that the entire public API 1844 could handle erroneous input and then proceeded to fix a whole slew of 1845 uncovered bugs. 1846 1847 1848 https://bugs.freedesktop.org/show_bug.cgi?id=28888 1849 1850 A regression introduced by the special casing of uploading images to an 1851 xlib surface in-place which was ignoring the translation applied to the 1852 image. 1853 1854 1855Snapshot 1.9.10 (2010-06-26) 1856============================ 1857 1858 The first "quick" snapshot in the run up to the stable release. The 1859 last snapshot was picked up by the bleeding edge distributions and so the 1860 bug reports have to started to roll in. The most frequent of these are the 1861 introduction of rendering errors by applications that modify a surface 1862 without subsequently calling cairo_surface_mark_dirty(). Make sure the 1863 application developers are aware of increased reliance on strict use of the 1864 Cairo API before 1.10 is released! 1865 1866 The usual slew of bugs reported and we would like to thank Zoxc for 1867 contributing the WGL interface for cairo-gl, and finding more build 1868 failures on win32. And it just wouldn't be a 1.9 snapshot unless 1869 Benjamin Otte improved the error handling within cairo-gl, as well as 1870 isolating and fixing some more errors in the test suite. The biggest bug of 1871 the snapshot turned out to be a major sign extension issue that had lain 1872 hidden for many years and was suddenly exposed by incorrectly rounding 1873 rectangles when performing non-antialiased rendering. Also to the relief 1874 of many we have included the downstream patch to honour the user's LCD 1875 filtering preferences for subpixel rendering of fonts. The interface 1876 remains private for the time being, whilst the proposed public API is 1877 finalized. 1878 1879API changes 1880----------- 1881 None. 1882 1883Snapshot 1.9.8 (2010-06-12) 1884=========================== 1885 1886 One major API changes since the last snapshot, and a whole slew of bugs 1887 fixed and inconsistencies eliminated. Far too many bugs fixed to 1888 individually identify. We need to thank Benjamin Otte for his fantastic 1889 work on the cairo-gl backend making it faster and more robust, Andrea 1890 Canciani for finding so many bugs and developing test cases for them, as 1891 well fixing them. And last but not least we must all thank Adrian Johnson for 1892 continuing to eliminate bugs and improving the PostScript and PDF backends. 1893 1894 This snapshot represents almost 4 months of bug fixing, bringing Cairo to 1895 a point where we consider it almost ready to be a candidate for release. 1896 There are a few known bugs left to be fixed, being tracked in 1897 https://bugs.freedesktop.org/show_bug.cgi?id=24384, so please give Cairo a 1898 whirl and report any regressions. The plan is to release a new snapshot 1899 every other week leading to a 1.10 release with a target date of 1900 2010-08-16. 1901 1902API additions 1903------------- 1904 CAIRO_FORMAT_RGB16_565 1905 1906 16 bit devices still remain popular, and so with great demand, 1907 CAIRO_FORMAT_RGB16_565 has been restored enabling applications to create 1908 and use 16 bit images as sources and render targets. 1909 1910 cairo_surface_create_for_rectangle() 1911 1912 It is common practice to cut an image up into many smaller pieces and use 1913 each of those as a source - a technique called texture atlasing. 1914 cairo_surface_create_for_rectangle() extends Cairo to directly support use 1915 of these subregions of another cairo_surface_t both as a source and as a 1916 render target. 1917 1918 cairo_region_create() 1919 cairo_region_create_rectangle() 1920 cairo_region_create_rectangles() 1921 cairo_region_copy() 1922 cairo_region_reference() 1923 cairo_region_destroy() 1924 cairo_region_equal() 1925 cairo_region_status() 1926 cairo_region_get_extents() 1927 cairo_region_num_rectangles() 1928 cairo_region_get_rectangle() 1929 cairo_region_is_empty() 1930 cairo_region_contains_rectangle() 1931 cairo_region_contains_point() 1932 cairo_region_translate() 1933 cairo_region_subtract() 1934 cairo_region_subtract_rectangle() 1935 cairo_region_intersect() 1936 cairo_region_intersect_rectangle() 1937 cairo_region_union() 1938 cairo_region_union_rectangle() 1939 1940 The Cairo region API was actually added a couple of snapshots ago, but we 1941 forgot to mention it at the time. A simple API for the handling of 1942 rectangular pixel-aligned regions by Soeren Sandmann. 1943 1944 1945Backend-specific improvements 1946----------------------------- 1947cairo-gl 1948 1949 Benjamin Otte made more than 200 commits in which he refactored the cairo-gl 1950 backend, reducing a lot of code duplication and enabled him to begin working 1951 on improving performance by reducing state changes and associated overhead. 1952 1953cairo-xlib 1954 1955 Access to the underlying connection to the Display is now thread-safe 1956 enabling cairo-xlib to be used in a multi-threaded application without fear 1957 of random corruption. Thanks Benjamin Otte! 1958 1959 cairo-xlib will now attempt to use PolyModeImprecise when compositing 1960 trapezoids (i.e. a fill or a stroke operation with a non-trivial path) which 1961 should allow hardware drivers more scope for accelerating the operation at 1962 the cost of potentially incurring minute rendering errors. The mode can be 1963 forced back to PolyModePrecise by setting the antialias parameter to 1964 CAIRO_ANTIALIAS_SUBPIXEL. 1965 1966cairo-svg 1967 1968 A notable improvement was contributed by Alexander Shulgin to enable SVG to 1969 reference external image through the use an extended MIME data type. 1970 1971Snapshot 1.9.6 (2010-02-19) 1972=========================== 1973API additions 1974------------- 1975 Add cairo_device_t 1976 1977 The device is a generic method for accessing the underlying interface 1978 with the native graphics subsystem, typically the X connection or 1979 perhaps the GL context. By exposing a cairo_device_t on a surface and 1980 its various methods we enable finer control over interoperability with 1981 external interactions of the device by applications. The use case in 1982 mind is, for example, a multi-threaded gstreamer which needs to serialise 1983 its own direct access to the device along with Cairo's across many 1984 threads. 1985 1986 Secondly, the cairo_device_t is a unifying API for the mismash of 1987 backend specific methods for controlling creation of surfaces with 1988 explicit devices and a convenient hook for debugging and introspection. 1989 1990 The principal components of the API are the memory management of: 1991 1992 cairo_device_reference(), 1993 cairo_device_finish() and 1994 cairo_device_destroy(); 1995 1996 along with a pair of routines for serialising interaction: 1997 1998 cairo_device_acquire() and 1999 cairo_device_release() 2000 2001 and a method to flush any outstanding accesses: 2002 2003 cairo_device_flush(). 2004 2005 The device for a particular surface may be retrieved using: 2006 2007 cairo_surface_get_device(). 2008 2009 The device returned is owned by the surface. 2010 2011API changes (to API new in the cairo 1.9.x series) 2012-------------------------------------------------- 2013 cairo_recording_surface_create() 2014 cairo_recording_surface_ink_extents() 2015 2016 These are the replacement names for the functions previously named 2017 cairo_meta_surface_create and cairo_meta_surface_ink_extents. 2018 2019 cairo_surface_set_mime_data 2020 2021 This interface is now changed such that the MIME data will be 2022 detached if the surface is modified at all. This guarantees that 2023 the MIME data will not become out of synch due to surface 2024 modifications, and also means that for the MIME data to be useful, 2025 it must be set after all modifications to the surface are 2026 complete. 2027 2028API removal (of experiment API) 2029------------------------------- 2030 The cairo-glitz backend is removed entirely, (in favor of the new 2031 cairo-gl backend). See below for more on cairo-gl. 2032 2033Generic fixes 2034------------- 2035 2036 Many improvements for drawing of dashed strokes 2037 2038 Fix incorrect handling of negative offset 2039 Faster computation of first dash (avoids near-infinite looping) 2040 Approximate extremely fine dash patterns with appropriate alpha value 2041 2042 Optimize spans-based renderers for repeated rows, (such as in a rounded rectangle) 2043 2044Backend-specific improvements 2045----------------------------- 2046cairo-drm 2047 2048 This is a new, direct-rendering backend that supports Intel graphics 2049 chipsets in the i915 and i965 families. It's still experimental and 2050 will likely remain that way for a while. It's already got extremely 2051 good performance on the hardware it supports, so if nothing else 2052 provides a working proof and performance target for the cairo-gl 2053 work for Intel graphics. 2054 2055cairo-gl 2056 2057 Start using GLSL to accelerate many operations. Many thanks to Eric 2058 Anholt and T. Zachary Laine for this work. For the first time, we 2059 have what looks like what will be a very compelling OpenGL-based 2060 backend for cairo (in terms of both quality and performance). 2061 2062 See this writeup from Eric for more details on recent progress of 2063 cairo-gl (which he presented at FOSDEM 2010): 2064 2065 http://anholt.livejournal.com/42146.html 2066 2067cairo-image 2068 2069 The image backend is made dramatically faster (3-5 times faster for 2070 benchmarks consisting primarily of glyph rendering). 2071 2072cairo-quartz fixes: 2073 2074 Many fixes from Robert O'Callahan and Andrea Canciani including: 2075 2076 Fixed gradient pattern painting 2077 Improved A8 image handling 2078 Fixes for "unbounded" and other compositing operators 2079 2080cairo-pdf fixes: 2081 2082 Improvements to embedding of JPEG and JPEG2000 data. 2083 2084cairo-ps fixes: 2085 2086 Fix printing of rotated user fonts. 2087 2088Snapshot 1.9.4 (2009-10-15) 2089=========================== 2090API additions: 2091 2092 cairo_meta_surface_create() 2093 cairo_meta_surface_ink_extents() 2094 2095 Finally exporting the internal meta-surface so that applications 2096 have a method to record and replay a sequence of drawing commands. 2097 2098 cairo_in_clip() 2099 2100 Determines whether a given point is inside the current clip. 2101 ??? Should this be called cairo_in_paint() instead? in-clip is the test 2102 that is performed, but in-paint would be similar to in-fill and in-stroke. 2103 2104New utilities: 2105 2106 cairo-test-trace 2107 2108 A companion to cairo-perf-trace, this utility replays a trace against 2109 multiple targets in parallel and looks for differences in the output, 2110 and then records any drawing commands that cause a failure. 2111 Future plans: 2112 Further minimisation of the fail trace using "delta debugging". 2113 More control over test/reference targets. 2114 2115Backend improvements: 2116 2117 xlib 2118 2119 Server-side gradients. The theory is that we can offload computation 2120 of gradients to the GPU and avoid pushing large images over the 2121 connection. Even if the driver has to fallback and use pixman to render 2122 a temporary source, it should be able to do so in a more efficient manner 2123 than Cairo itself. However, cairo-perf suggests otherwise: 2124 2125 On tiny, Celeron/i915: 2126 2127 before: firefox-20090601 211.585 2128 after: firefox-20090601 270.939 2129 2130 and on tiger, CoreDuo/nvidia: 2131 2132 before: firefox-20090601 70.143 2133 after: firefox-20090601 87.326 2134 2135 In particular, looking at tiny: 2136 2137 xlib-rgba paint-with-alpha_linear-rgba_over-512 47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%): 2.62x slowdown 2138 █▋ 2139 xlib-rgba paint-with-alpha_linear3-rgba_over-512 47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%): 2.62x slowdown 2140 █▋ 2141 2142 2143New experimental backends: 2144 2145 QT 2146 2147 OpenVG - The initial work was done by Øyvind Kolås, and made ready for 2148 inclusion by Pierre Tardy. 2149 2150 OpenGL - An advanced OpenGL compositor. The aim is to write a integrate 2151 directed rendering using OpenGL at a high-level into Cairo. In 2152 contrast to the previous attempt using Glitz which tried to 2153 implement the RENDER protocol on top of OpenGL, using the 2154 high-level interface should permit greater flexibility and 2155 more offloading onto the GPU. 2156 The initial work on the backend was performed by Eric Anholt. 2157 2158Long standing bugs fixed: 2159 2160 Self-intersecting strokes. 2161 2162 A long standing bug where the coverage from overlapping semi-opaque 2163 strokes (including neighbouring edges) was simply summed in lieu of 2164 a costly global calculation has been fixed (by performing the costly 2165 global calculation!) In order to mitigate the extra cost, the 2166 tessellator has been overhauled and tune, which handles the fallback 2167 for when we are unable to use the new span rasteriser on the stroke 2168 (e.g. when using the current RENDER protocol). The large number of 2169 pixel artifacts that implementing self-intersection elimination 2170 removes is ample justification for the potential performance 2171 regression. If you unfortunately do suffer a substantial performance 2172 regression in your application, please consider obtaining a 2173 cairo-trace and submitting it to us for analysis and inclusion into 2174 our performance suite. 2175 2176Special thanks: 2177 2178 To the AuroraUX team for providing access to one of their OpenSolaris 2179 machines for cairo and pixman development. http://www.auroraux.org/ 2180 2181Snapshot 1.9.2 (2009-06-12) 2182=========================== 2183API additions: 2184 2185 cairo_surface_set_mime_data() 2186 cairo_surface_get_mime_data() 2187 2188 Should this take unsigned int, unsigned long or size_t for the length 2189 parameter? (Some datasets may be >4GiB in size.) 2190 2191 Associate an alternate, compressed, representation for a surface. 2192 Currently: 2193 "image/jp2" (JPEG2000) is understood by PDF >= 1.5 2194 "image/jpeg" is understood by PDF,PS,SVG,win32-printing. 2195 "image/png" is understood by SVG. 2196 2197 cairo_pdf_version_t 2198 cairo_pdf_surface_restrict_to_version() 2199 cairo_pdf_get_versions() 2200 cairo_pdf_version_to_string() 2201 2202 Similar to restrict to version and level found in SVG and PS, 2203 these limit the features used in the output to comply with the PDF 2204 specification for that version. 2205 2206 CAIRO_STATUS_INVALID_SIZE 2207 Indicates that the request surface size is not supported by the 2208 backend. This generally indicates that the request is too large. 2209 2210 CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED 2211 Indicates that a required callback for a user-font was not implemented. 2212 2213 CAIRO_STATUS_LAST_STATUS 2214 This is a special value to indicate the number of status values enumerated 2215 at compile time. (This may differ to the number known at run-time.) 2216 2217 The built-in twin font is now called "@cairo:" and supports a limited set 2218 of options like "@cairo:mono". Where are these specified? 2219 2220 cairo_in_fill() now uses HTML Canvas semantics, all edges are inside. 2221 2222New experimental backends: 2223 2224 CairoScript 2225 2226New utility: 2227 2228 cairo-trace and cairo-perf-trace 2229 2230 cairo-trace generates a human-readable, replayable, compact(-ish!) 2231 representation of the sequences of drawing commands made by an 2232 application. 2233 2234 Under the util/cairo-script directory is a library to replay traces. 2235 2236 perf/cairo-perf-trace replays traces against multiple backends 2237 and makes useful benchmark reports. This is integrated with 2238 'make perf'. You may collect your own traces or take advantage 2239 of traces collected by the community: 2240 2241 git://git.cairographics.org/git/cairo-traces 2242 2243 (Put this into perf/cairo-traces to run these as part of "make perf".) 2244 2245 There is additional WIP in building a debugging tool for cairo applications 2246 based on CairoScript (currently very preliminary, mostly serves to show 2247 that GtkSourceView is too slow) : 2248 2249 people.freedesktop.org:~ickle/sphinx 2250 2251Test suite overhaul: 2252 2253 The test suite is undergoing an overhaul, primarily to improve its speed 2254 and utility. (Expect more changes in the near future to improve XFAIL 2255 handling.) 2256 2257Optimisations: 2258 polygon rasterisation! Joonas implemented the Tor polygon scan converter, 2259 on typical geometry is about 30% faster for the image backend. 2260 2261 Bovine Polaroids! For those not in on the joke, this is the long 2262 awaited "copy-on-write snapshot" or "COW snapshot" support. The 2263 user-visible feature is that including the same image multiple times 2264 into a PDF file should result in only a single instance of that 2265 image in the final output. This is unlike previous versions of cairo 2266 which would generate very large PDF files with multiple copies of 2267 the same image. Adrian says that the PDF is not quite working as 2268 well as it should yet, so we hope for further improvements before 2269 cairo 1.10. 2270 2271Bug fixes: 2272 2273 EXTEND_PAD. 2274 2275 Better handling of large scale-factors on image patterns. 2276 2277 Emit /Interpolate for PS,PDF images. 2278 2279 Global glyph cache - cap on the total number of inactive glyphs, 2280 should prove fairer for fonts with larger glyph sets. 2281 2282 Compilation without fontconfig 2283 2284 Improved handling of low-bitdepth sources (e.g. copying the contents 2285 of 16-bit xserver windows) 2286 2287Regressions: 2288 2289 cairo_traps_extract_region >10x slower. Fix pending. 2290 2291Still to come: 2292 2293 Region tracking API (ssp) for damage tracking, hit testing etc 2294 mime-surface 2295 2296 An expiremental OpenGL backend? 2297 2298 Tweaks to tessellator, allocations of patterns, delayed 2299 initialisation of the xlib backend (reduce the cairo overhead of 2300 render_bench by ~80%). 2301 2302 2303Release 1.8.8 (2009-06-16 Chris Wilson <chris@chris-wilson.co.uk>) 2304================================================================== 2305The cairo community is pleased to announce the 1.8.8 release of the 2306cairo graphics library. This is the fourth update to cairo's stable 23071.8 series and contains a small number of bug fixes (in particular a 2308few corrections to the documentation and a few fixes in the FreeType font 2309backend). This is being released just over six months after cairo 1.8.6. 2310 2311We recommend that everyone using cairo upgrade to 1.8.8. 2312 2313-Chris 2314 2315Build fixes 2316----------- 2317There were reports of incompatibilities with the autotools bundled in with 2318the 1.8.6 tarball. This release has been built with automake-1.10.2 and 2319autoconf-2.63. 2320 2321The configure check for FreeType has been improved: 2322 2323 typo in check for version of freetype in configure script 2324 https://bugs.freedesktop.org/show_bug.cgi?id=19283 2325 2326Compilation on 64-bit MacOS/X fixes: 2327 2328 Cannot build cairo_quartz_font_face_create_for_atsu_font_id on 64-bit Mac OS X 2329 https://bugs.freedesktop.org/show_bug.cgi?id=15702 2330 2331Bug fixes 2332--------- 2333Uninitialised status return within _cairo_clip_intersect_mask(). This caused 2334random crashes and general mayhem as an error could be generated causing all 2335rendering to the context to stop. 2336 2337Avoid transforming nearly-degenerate matrices into degenerate matrices: 2338 2339 Painting stops in this case, using -moz-transform: scale, rotate and video 2340 https://bugzilla.mozilla.org/show_bug.cgi?id=467423 2341 2342A few FreeType font handling bugs were fixed: 2343 2344 Rendering with PANGO_GRAVITY_EAST leads to different results with image and pdf 2345 https://bugs.freedesktop.org/show_bug.cgi?id=21985 2346 2347 Don't call FT_Done_Face() on faces we did not create 2348 2349 zombie ft_font_face / ft_unscaled_font mutual referencing problems 2350 https://bugs.freedesktop.org/show_bug.cgi?id=21706 2351 2352Ensure win32 font backend sets the return value to -1 (indicating the absent 2353glyph) if the font index lookup for the unicode character fails. And 2354similarly fix a bug where a fatal error was raised for an invalid glyph. 2355 2356 cairo_scaled_font_glyph_extents breaks with invalid glyph id 2357 https://bugs.freedesktop.org/show_bug.cgi?id=20255 2358 2359Various improvements to the documentation, reported by Truc Troung: 2360 2361 https://bugs.freedesktop.org/show_bug.cgi?id=20095 2362 https://bugs.freedesktop.org/show_bug.cgi?id=20154 2363 https://bugs.freedesktop.org/show_bug.cgi?id=20180 2364 https://bugs.freedesktop.org/show_bug.cgi?id=20183 2365 https://bugs.freedesktop.org/show_bug.cgi?id=20182 2366 https://bugs.freedesktop.org/show_bug.cgi?id=20441 2367 2368 2369Release 1.8.6 (2008-12-13 Chris Wilson <chris@chris-wilson.co.uk>) 2370================================================================== 2371The cairo community is pleased to announce the 1.8.6 release of the 2372cairo graphics library. This is the third update to cairo's stable 23731.8 series and contains a small number of bug fixes (in particular a 2374few fixes for failures of cairo 1.8.4 on Quartz and PDF, and build fixes for 2375a couple of backends). This is being released just under a month after 2376cairo 1.8.4. 2377 2378We recommend that everyone using cairo upgrade to 1.8.6. 2379 2380-Chris 2381 2382Build fixes 2383----------- 2384Fix build of DirectFB backend with debugging enabled: 2385 2386 Bug in _cairo_directfb_surface_release_source_image function 2387 https://bugs.freedesktop.org/show_bug.cgi?id=18322 2388 2389Fix build on OS/2. 2390 2391Bug fixes 2392--------- 2393Workaround a mis-compilation of cairo_matrix_invert() that generated invalid 2394matrices and triggered assertion failures later. The issue was reported by 2395Peter Hercek. 2396 2397Invalid computation of the modulus: 2398 2399 https://bugzilla.mozilla.org/show_bug.cgi?id=466258 2400 2401Invalid referencing of patterns in the Quartz backend: 2402 2403 Failed assertion `CAIRO_REFERENCE_COUNT_HAS_REFERENCE 2404 (&pattern->ref_count)' when using cairo quartz backend 2405 https://bugs.freedesktop.org/show_bug.cgi?id=18632 2406 2407Invalid references to glyphs after early culling, causing segmentation faults 2408in the PDF backend: 2409 2410 https://lists.cairographics.org/archives/cairo/2008-December/015976.html 2411 2412Check for XRender in the XCB backend, or else we may attempt an invalid memory 2413access: 2414 2415 XCB backend fails with missing render. 2416 https://bugs.freedesktop.org/show_bug.cgi?id=18588 2417 2418Release 1.8.4 (2008-11-14 Carl Worth <cworth@cworth.org>) 2419========================================================= 2420The cairo community is pleased to announce the 1.8.4 release of the 2421cairo graphics library. This is the second update to cairo's stable 24221.8 series and contains a small number of bug fixes, (in particular a 2423few fixes for build failures of cairo 1.8.2 on various systems). This 2424is being released just over two weeks after cairo 1.8.2. 2425 2426We recommend that everyone using cairo upgrade to 1.8.4. 2427 2428-Carl 2429 2430Build fixes 2431----------- 2432Fix build with older XRender that doesn't define RepeatNone: 2433 2434 Build of xlib backend fails against old XRender (RepeatNone undeclared) 2435 https://bugs.freedesktop.org/show_bug.cgi?id=18385 2436 2437Fix build with bash version <= 3.0: 2438 2439 doltlibtool broken on linux with bash 3.00.0 2440 https://bugs.freedesktop.org/show_bug.cgi?id=18363 2441 2442Bug fixes 2443--------- 2444Avoid triggering a bug in X.org server 6.9 resulting in a hung machine 2445requiring a reboot: 2446 2447 https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2 2448 2449Fix display of user fonts as exercised by proposed support for type3 2450fonts in poppler (unsigned promotion fixes): 2451 2452 Use cairo user-font for Type 3 fonts 2453 https://lists.freedesktop.org/archives/poppler/2008-October/004181.html 2454 2455Avoid miscomputing size of fallback images required when rendering 2456with CLEAR, IN, or SOURCE operator to vector surfaces, (PS, PDF, SVG, 2457etc.). 2458 2459Be more tolerant of broken fonts when subsetting type1 fonts: 2460 2461 Error handling in cairo_type1_font_subset_get_glyph_names_and_widths 2462 https://lists.cairographics.org/archives/cairo/2008-October/015569.html 2463 2464Fix cairo_fill_extents, cairo_stroke_extents, cairo_path_extents, to 2465correctly allow NULL parameters as documented. 2466 2467Fix potential crash on emitting a type3 glyph after having drawn text 2468paths from the same font, (for example with cairo_text_path). 2469 2470Release 1.8.2 (2008-10-29 Carl Worth <cworth@cworth.org>) 2471========================================================= 2472The cairo community is pleased to announce the 1.8.2 release of the 2473cairo graphics library. This is the first update to cairo's stable 1.8 2474series and contains a large number of bug fixes. It is being released 2475just over one month since cairo 1.8.0. 2476 2477This release consists primarily of bug fixes, but there is one notable 2478new feature, (the ability to build cairo without an external font 2479backend), and there are a few optimizations as well. See below for 2480details on these changes and the most important bug fixes. 2481 2482While many people have contributed to this release, Chris Wilson 2483deserves particular mention. He has contributed well over twice as 2484many changes to cairo since 1.8.0 than everyone else combined. We 2485greatly appreciate the tremendous efforts of Chris and all cairo 2486contributors. 2487 2488We recommend everyone upgrade to cairo 1.8.2 and hope that everyone 2489will have lots of fun with cairo! 2490 2491-Carl 2492 2493New feature 2494----------- 2495It is now possible to build cairo without any font backend, (such as 2496freetype, win32 or quartz). This is most useful when the application 2497provides custom font rendering through the user-font API. But in the 2498case where no external font backend is available, and no user-font is 2499provided, cairo will render with a failsafe font, (a stroked font 2500covering visible ASCII character). (Behdad Esfahbod) 2501 2502Optimizations 2503------------- 2504Dramatically speed up compilation with dolt (removes much of the 2505libtool overhead) (Behdad Esfahbod with thanks to Josh Triplett). 2506 2507Several minor optimizations to tessellator (special-cased comparisons, 2508faster insert for skiplist, etc.) (Chris Wilson). 2509 2510Optimize away fractional translation component when doing 2511EXTEND_NEAREST filtering, (for better performance). 2512 2513General bug fixes 2514----------------- 2515Allow cloning sub-regions of similar surfaces to fix this bug 2516(Chris Wilson): 2517 2518 Crafted gif file will crash firefox 2519 [XError: 'BadAlloc (insufficient resources for operation)'] 2520 https://bugzilla.mozilla.org/show_bug.cgi?id=424333 2521 2522Fix some matrix confusion to fix this regression (Chris Wilson): 2523 2524 Translucent star exports in a wrong way to PDF 2525 https://bugs.launchpad.net/inkscape/+bug/234546 2526 2527Fix some long-standing bugs with respect to properly computing the 2528extents of transformed, filtered surfaces (Owen Taylor, Carl Worth, 2529and Chris Wilson): 2530 2531 Bad clipping with EXTEND_NONE 2532 https://bugs.freedesktop.org/show_bug.cgi?id=15349 2533 2534 Improve filtering handling in cairo-pattern.c 2535 https://bugs.freedesktop.org/show_bug.cgi?id=15367 2536 2537 Many thanks to Chris Wilson for digging out and cleaning up 2538 these fixes. 2539 2540Fix compilation on Solaris 10 (Chris Wilson): 2541 2542 Cairo requires -DREENTRANT (along with -D_POSIX_THREAD_SEMANTICS) 2543 to compile on Solaris 10 with pthreads 2544 https://bugs.freedesktop.org/show_bug.cgi?id=18010 2545 2546Fix very old bug causing dashes to be rendered at the wrong length in 2547fallback images (Adrian Johnson) 2548 2549 Dashed strokes too long in fallback images 2550 https://bugs.freedesktop.org/show_bug.cgi?id=9189 2551 2552Fix broken dashing when a dashed path starts outside the clip region 2553(Chris Wilson). 2554 2555Avoid range overflow when computing large patterns (Benjamin Otte and 2556Chris Wilson). 2557 2558Avoid crashing due to an invalid font with an incorrect entry in its 2559CMAP table (Adrian Johnson). 2560 2561Fix bugs in computing maximum size of text requests that can be sent 2562with the Render extension, (avoiding potential crashes when rendering 2563large amounts of text) (Behdad Esfahbod and Chris Wilson). 2564 2565Fix rendering of operators unbounded by the mask (Chris Wilson). 2566 2567Fix compilation on systems without compiler support for a native 256864-bit type (Chris Wilson). 2569 2570Fix several cases of missing error-status propagation. (Chris Wilson, 2571doing the work he seems to never tire of). 2572 2573Fix several locking issues found with the lockdep valgrind skin (Chris 2574Wilson). 2575 2576Backend-specific bug fixes 2577-------------------------- 2578xlib: Avoid crash due to attempting XRender calls on pixmaps with 2579formats not supported by the Render extension (Chris Wilson): 2580 2581 XRender crashes due to NULL pointer from Cairo on SGI O2 2582 https://bugs.freedesktop.org/show_bug.cgi?id=11734 2583 2584xlib: Add support for XImages with depth of 4, 20, 24, or 28 bits 2585(Chris Wilson): 2586 2587 cairo doesn't support 24 bits per pixel mode on X11 2588 https://bugs.freedesktop.org/show_bug.cgi?id=9102 2589 2590xlib: Avoid mistakenly considering two surfaces as similar just 2591because their depths match (while their Render formats do not) (Karl 2592Tomlinson). 2593 2594ps: Fix slight mis-scaling of bitmapped fonts (Adrian Johnson) 2595 2596svg: Correctly emit comp-op for paint, mask, and show_glyphs 2597operations (Emmanuel Pacaud). 2598 2599svg: Use finer-grained fallbacks for SVG 1.2 (as PS and PDF backends 2600have been doing since 1.6.0) (Chris Wilson). 2601 2602win32: Fallback to DIB if DDB create fails for 2603cairo_surface_create_similar (Vladimir Vukicevic). 2604 2605win32: Fix compatibility with Windows Mobile (Vladimir Vukicevic). 2606 2607win32: Fix static builds to not do __declspec(dllimport) on public 2608functions. This requires the user to set a CAIRO_WIN32_STATIC_BUILD 2609environment variable when compiling (Behdad Esfahbod). 2610 2611Release 1.8.0 (2008-09-25 Carl Worth <cworth@cworth.org>) 2612========================================================= 2613The cairo community is happy (and relieved) to announce the 1.8.0 2614release of the cairo graphics library. This is a major update to 2615cairo, with new features and enhanced functionality which maintains 2616compatibility for applications written using any previous major cairo 2617release, (1.6, 1.4, 1.2, or 1.0). We recommend that anybody using a 2618previous version of cairo upgrade to cairo 1.8.0. 2619 2620The dominant theme of this release is improvements to cairo's ability 2621to handle text. The highlights include a new "user fonts" feature as 2622well as a new cairo_show_text_glyphs API which allows glyphs to be 2623embedded in PDF output along with their original text, (for searching, 2624selection, and copy-and-paste). Another major feature is a revamp of 2625cairo's build system making it much easier to build cairo on various 2626platforms. 2627 2628See below for more details. 2629 2630User fonts 2631---------- 2632This new API allows the user of cairo API to provide drawings for 2633glyphs in a font. A common use for this is implementing fonts in 2634non-standard formats, like SVG fonts and Flash fonts. This API can 2635also be used by applications to provide custom glyph shapes for fonts 2636while still getting access to cairo's glyph caches. See 2637test/user-font.c and test/user-font-proxy.c for usage examples. This 2638is based on early work by Kristian Høgsberg. Thanks Kristian! 2639 2640This new API consists of the following functions (and corresponding 2641_get functions): 2642 2643 cairo_user_font_face_create 2644 2645 cairo_user_font_face_set_init_func 2646 cairo_user_font_face_set_render_glyph_func 2647 cairo_user_font_face_set_text_to_glyphs_func 2648 cairo_user_font_face_set_unicode_to_glyph_func 2649 2650An additional, new API is 2651 2652 cairo_scaled_font_text_to_glyphs 2653 2654We were previously reluctant to provide this function as 2655text-to-glyphs support in cairo was limited to "toy" font 2656functionality, not really interesting for real-world text 2657processing. However, with user fonts landing, this API is needed to 2658expose full access to how user fonts convert text to glyphs. This is 2659expected to be used by text toolkits like Pango, as well as "proxy" 2660user-font implementations. 2661 2662cairo_show_text_glyphs 2663---------------------- 2664This new API allows the caller of cairo to provide text data 2665corresponding to glyphs being drawn. The PDF backend implements this 2666new API so that complex text can be copied out of cairo's PDF output 2667correctly and reliably, (assuming the user of cairo calls 2668cairo_show_text_glyphs). The cairo_show_text_glyphs API is definitely 2669the most daunting API to debut in cairo. It is anticipated that pango 2670(and similar high-level text libraries) will be the primary users of 2671this API. In fact, pango 1.22 already uses cairo_show_text_glyphs. 2672Behdad was the architect and implementor of this effort. Thanks, 2673Behdad! 2674 2675The cairo_show_text_glyphs API includes the following new functions: 2676 2677 cairo_show_text_glyphs 2678 2679 cairo_glyph_allocate 2680 cairo_glyph_free 2681 2682 cairo_text_cluster_allocate 2683 cairo_text_cluster_free 2684 2685 cairo_surface_has_show_text_glyphs 2686 2687Build system revamp 2688------------------- 2689The primary goal of the revamp is to make the build system less 2690fragile, (particularly for non-Linux platforms). For example, now 2691people building on win32 will no longer need to maintain a 2692platform-specific list of files to be built. See the new README.win32 2693for details. Also, the .so file will now be installed with a different 2694naming scheme, (for example, 1.7.6 will install with a .10800 2695suffix). Many thanks to Behdad and his small army of helpers! 2696 2697Assorted API additions 2698---------------------- 2699For API completeness, several missing "getter" functions were added: 2700 2701 cairo_scaled_font_get_scale_matrix 2702 2703 cairo_surface_get_fallback_resolution 2704 2705 cairo_toy_font_face_create 2706 cairo_toy_font_face_get_family 2707 cairo_toy_font_face_get_slant 2708 cairo_toy_font_face_get_weight 2709 2710The new cairo_toy_font_face functions provide access to functionality 2711and settings provided by cairo_select_font_face(). Thanks Behdad! 2712 2713cairo-ps/cairo-pdf: More efficient output 2714----------------------------------------- 2715Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF 2716backends, as well making them generate much more compact output by 2717avoiding things like re-emitting the color or linestyle on every 2718drawing operation. Thanks Adrian! 2719 2720cairo-xlib: dithering 2721--------------------- 2722Dithering: Cairo now does simple dithering when rendering to legacy X 2723servers. This is most visible with 8-bit visuals. Thanks Behdad! 2724 2725cairo-xlib: Avoid rendering glyphs out of surface bounds 2726-------------------------------------------------------- 2727This seemingly harmless optimization exposed a bug in OpenOffice.org 3 2728versions where OO.o was passing bogus surface extents to cairo, 2729resulting in no text rendered in OO.o. Please contact your 2730distribution's OO.o maintainers if you see this bug and point them to 2731the following URL: 2732 2733 https://bugs.freedesktop.org/show_bug.cgi?id=16209 2734 2735cairo-xlib: Improved performance with X server without Render 2736------------------------------------------------------------- 2737Cairo now performs better on remote X servers that lack the Render 2738extension by being smarter about using X core protocol facilities 2739instead of falling back to doing all rendering on the client side. 2740 2741cairo-ft: respecting FC_FT_FACE 2742------------------------------- 2743Previously it was impossible to instruct cairo to do emboldening on a 2744font face object created from an FT_Face. Cairo now respects and uses 2745the FC_FT_FACE fontconfig pattern element, so emboldening can be 2746achieved by using cairo_ft_font_face_create_for_pattern() and a 2747carefully crafted pattern using FC_FT_FACE and FC_EMBOLDEN. Thanks 2748Behdad! 2749 2750cairo-directfb: backend improvements 2751------------------------------------ 2752The directfb backend, though still unsupported, has seen a good deal 2753of improvements. Thanks Vlad! 2754 2755Bug fixing and optimizations 2756---------------------------- 2757xlib: Faster bookkeeping (Karl Tomlinson) 2758 https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5 2759 2760PS: Fix gradients with non-constant alpha (Chris Wilson) 2761 2762Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod) 2763 https://bugs.freedesktop.org/show_bug.cgi?id=16819 2764 2765Countless other bugs have been fixed and optimizations made, many of 2766them thanks to Chris Wilson. Thanks Chris and others! 2767 2768Note also that the code that had been in cairo 1.7.x calling into 2769freetype's optional lcd_filter function was removed from cairo before 2770the 1.8.0 release. We do expect this code to come back in some form in 2771the future. 2772 2773Snapshot 1.7.6 (2008-09-17 Carl Worth <cworth@cworth.org>) 2774========================================================== 2775The cairo community is happy to announce the 1.7.6 snapshot of the 2776cairo graphics library. This is a "release candidate" for the upcoming 27771.8.0 release, so we will greatly appreciate any reports of problems 2778in this release, and no major changes are currently planned before 27791.8. 2780 2781Notable changes in 1.7.6 2782------------------------ 2783The largest number of changes since 1.7.4 did not change the 2784implementation of cairo itself, but instead revamped cairo's build 2785system. The primary goal of the revamp is to make the build system 2786less fragile, (particularly for non-Linux platforms). For example, now 2787people building on win32 will no longer need to maintain a 2788platform-specific list of files to be built. Also, the .so file will 2789now be installed with a different naming scheme, (for example, 1.7.6 2790will install with a .10706 suffix). Much thanks, Behdad! 2791 2792And, as usual, Chris Wilson has made another large round of robustness 2793improvements, (eliminating dead code, fixing propagation of error 2794status values, test suite improvements, etc. etc.). Thanks as always, 2795Chris! 2796 2797API changes since 1.7.4 2798----------------------- 2799There have been a few changes of API that was new during the 1.7 2800series: 2801 2802* Remove cairo_font_options_set_lcd_filter 2803 and cairo_font_options_get_lcd_filter 2804 2805 Motivation: At the Cairo Summit, this API was determined to be too 2806 specific to the freetype font backend to be in the general 2807 API. A similar API with a cairo_ft prefix might be introduced 2808 in the future. Note that cairo will still respect the 2809 corresponding fontconfig settings for these options. 2810 2811* Replace cairo_has_show_glyphs 2812 with cairo_surface_has_show_glyphs 2813 2814 Motivation: This really is a surface-specific interface, and the 2815 convenience function on the cairo_t is not obviously 2816 necessary. An application can easily call: 2817 2818 cairo_surface_has_show_glyphs (cairo_get_target (cr)); 2819 2820 as needed. 2821 2822* Add cairo_text_cluster_flags_t 2823 to cairo_show_text_glyphs 2824 cairo_scaled_font_text_to_glyphs 2825 cairo_user_scaled_font_text_to_glyphs_func_t 2826 2827 Motivation: This flag, (and specifically the 2828 CAIRO_TEXT_CLUSTER_FLAG_BACKWARD value), replaces the 2829 cairo_bool_t backward argument in each of the above 2830 interfaces. This leads to more readable user code, and also 2831 allows future extensibility. 2832 2833As always, there are no changes to any API from any major cairo 2834release, (1.0.x, 1.2.x, 1.4.x, 1.6.x). Cairo maintains the same 2835compatibility promise it always has. 2836 2837Bug fixes since 1.7.4 2838--------------------- 2839xlib: Faster bookkeeping (Karl Tomlinson) 2840 https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5 2841 2842PS: Fix gradients with non-constant alpha (Chris Wilson) 2843 2844Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod) 2845 https://bugs.freedesktop.org/show_bug.cgi?id=16819 2846 2847Several other minor fixes. 2848 2849Snapshot 1.7.4 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>) 2850=============================================================== 2851The cairo community is embarrassed to announce availability of the 1.7.4 2852snapshot of the cairo graphics library. This is a followup release to the 28531.7.2 snapshot to ship a tarball that can actually be built. The only 2854change since 1.7.4 is including the missing header file 2855cairo-user-font-private.h in the distribution. 2856 2857Snapshot 1.7.2 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>) 2858=============================================================== 2859The cairo community is finally ready to announce availability of the 1.7.2 2860snapshot of the cairo graphics library. This is embarrassingly the first 2861snapshot in the 1.7 unstable series of cairo, leading to the eventual release 2862of cairo 1.8, currently planned for late September. 2863 2864This snapshot comes four months after the 1.6.4 release. We have done a 2865really bad job on getting development snapshots out this cycle, but 2866hopefully all the API changes for 1.8 are now finished and the remaining 2867weeks will be spent on bug-fixing. There is more than 400 commits worth 2868of changes in this snapshot, and those can use some testing. Read on! 2869 2870Text, text, and more text! 2871-------------------------- 2872The dominant theme of this release, and 1.8 in general, is improvements 2873around cairo text API. Here is a high-level list of changes with text 2874handling: 2875 2876User fonts 2877---------- 2878This is new API allowing the user of cairo API to provide drawings for glyphs 2879in a font. This is most useful in implementing fonts in non-standard formats, 2880like SVG fonts and Flash fonts, but can also be used by games and other 2881applications to draw "funky" fonts. See test/user-font.c and 2882test/user-font-proxy.c for usage examples. This is based on early work by 2883Kristian Høgsberg. Thanks Kristian! 2884 2885show_text_glyphs 2886---------------- 2887This new API allows the caller of cairo to mark text glyphs with their 2888original text. The PDF backend implements this new API and latest Pango 2889master uses it. The result is (when bugs are fixed) that complex text can be 2890copied out of pangocairo's PDF output correctly and reliably. There are bugs 2891to fix though. A few poppler bugs, and some more in cairo and pango. 2892 2893To test show_text_glyph, just grab pango master and this cairo snapshot and 2894print text in gedit. Open in acroread or evince, select all, copy, paste 2895in gedit and compare. The Arabic text with diacritic marks is particularly 2896showing bad. Try with pango/pango-view/HELLO.txt if you are brave 2897enough. The Indic text is showing improvements, but is still coming out 2898buggy. 2899 2900LCD subpixel filtering using FreeType 2901------------------------------------- 2902FreeType 2.3.5 added support for various LCD subpixel filtering, and 2903fontconfig 2.6.0 added support for configuring LCD filter on a font by font 2904basis. Cairo now relies on FreeType and fontconfig for subpixel filtering. 2905This work is based on David Turner's original patch to cairo, maintained 2906and tested by Sylvain Pasche and others. Thanks all! 2907 2908Toy font face constructor and getter 2909------------------------------------ 2910Mostly for API completion, but also useful for higher level (like Pango) to 2911hook into what the user has set using cairo_select_font_face(), making that 2912toy API a bit more useful. 2913 2914FreeType: respecting FC_FT_FACE 2915------------------------------- 2916Previously it was impossible to instruct cairo to do emboldening on a font 2917face object created from an FT_Face. Cairo now respects and uses the 2918FC_FT_FACE fontconfig pattern element, so emboldening can be achieved by 2919using cairo_ft_font_face_create_for_pattern() and a carefully crafted pattern 2920using FC_FT_FACE and FC_EMBOLDEN. 2921 2922 2923PS/PDF: More efficient output 2924----------------------------- 2925Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF 2926backends, as well making them generate much more compact output by avoiding 2927things like re-emitting the color or linestyle on every drawing operation. 2928Thanks Adrian! 2929 2930 2931Xlib: Dithering 2932--------------- 2933Cairo now does simple dithering when rendering to legacy X servers. This is 2934mostly visible with 8-bit visuals. 2935 2936Xlib: Avoid rendering glyphs out of surface bounds 2937-------------------------------------------------- 2938This seemingly harmless change manifested a bug with OpenOffice.org 3 versions 2939where OO.o was passing bogus surface extents to cairo, resulting in no text 2940rendered in OO.o. Please contact your distro's OO.o maintainers if you see 2941this bug and point them to the following URL: 2942 2943 https://bugs.freedesktop.org/show_bug.cgi?id=16209 2944 2945Xlib: Improved performance with Xrender-less X servers 2946------------------------------------------------------ 2947Cairo now performs better on remote, Xrender-less X servers by being smarter 2948about using X core protocol facilities instead of falling back to doing all 2949rendering on the client side. 2950 2951 2952Directfb: backend improvements 2953------------------------------ 2954The directfb backend, though still unsupported, has seen a good deal of 2955improvements. Thanks Vlad! 2956 2957 2958Bug fixing and optimizations 2959---------------------------- 2960Countless bugs have been fixed and optimizations made, many of them thanks to 2961Chris Wilson. Thanks Chris! 2962 2963 2964API additions 2965------------- 2966 2967cairo_show_text_glyphs 2968 2969 This is a new text rendering API. Being a more advanced version of 2970 cairo_show_glyphs(), it is aimed for use by higher-level text toolkits like 2971 Pango, and enables better text extraction from output generated by backends 2972 like PDF and SVG. The PDF backend already implements it, and the upcoming 2973 Pango release will use it. 2974 2975 To make that API work, a bunch of other additions were made: 2976 2977cairo_glyph_allocate 2978cairo_glyph_free 2979cairo_text_cluster_t 2980cairo_text_cluster_allocate 2981cairo_text_cluster_free 2982cairo_surface_has_show_text_glyphs 2983 2984 2985cairo_user_font_face_create 2986 2987 This is the "user" font face constructor, accompanied by a variety of method 2988 signatures, getters, and setters for a callback-based font backend: 2989 2990CAIRO_FONT_TYPE_USER 2991cairo_user_scaled_font_init_func_t 2992cairo_user_scaled_font_render_glyph_func_t 2993cairo_user_scaled_font_text_to_glyphs_func_t 2994cairo_user_scaled_font_unicode_to_glyph_func_t 2995cairo_user_font_face_set_init_func 2996cairo_user_font_face_set_render_glyph_func 2997cairo_user_font_face_set_text_to_glyphs_func 2998cairo_user_font_face_set_unicode_to_glyph_func 2999cairo_user_font_face_get_init_func 3000cairo_user_font_face_get_render_glyph_func 3001cairo_user_font_face_get_text_to_glyphs_func 3002cairo_user_font_face_get_unicode_to_glyph_func 3003 3004 3005cairo_scaled_font_text_to_glyphs 3006 3007 We were previously reluctant to provide this function as text-to-glyphs 3008 support in cairo was limited to "toy" font functionality, not really 3009 interesting for real-world text processing. However, with user-fonts 3010 landing, this API is needed to expose full access to how user-fonts 3011 convert text to glyphs. This is expected to be used by text toolkits like 3012 Pango, as well as "proxy" user-font implementations. 3013 3014 3015cairo_lcd_filter_t 3016cairo_font_options_set_lcd_filter 3017cairo_font_options_get_lcd_filter 3018 3019 These add the possibility to choose between various available LCD subpixel 3020 filters. The available filter values are modelled after what FreeType 3021 provides. 3022 3023 3024cairo_toy_font_face_create 3025cairo_toy_font_face_get_family 3026cairo_toy_font_face_get_slant 3027cairo_toy_font_face_get_weight 3028 3029 These provide access to functionality and settings provided by 3030 cairo_select_font_face(). 3031 3032 3033cairo_scaled_font_get_scale_matrix 3034cairo_surface_get_fallback_resolution 3035 3036 For API completeness. 3037 3038 3039Various new values for cairo_status_t enum 3040 3041 3042Known issues: 3043 3044- Type3 fonts generated by cairo's PDF backend may show up in poppler/Evince 3045 in a different color than expected. This is fixed in poppler master branch. 3046 This mostly affects cairo user fonts. The test case test/user-font.c 3047 demonstrates this. 3048 3049- User fonts using other fonts in their rendering are currently embedded in 3050 PDF as fallback bitmap glyphs. This will be (hopefully) fixed before 1.8. 3051 The test case test/user-font-proxy.c demonstrates this. 3052 3053 3054Release 1.6.4 (2008-04-11 Carl Worth <cworth@cworth.org>) 3055========================================================= 3056The cairo community is wildly embarrassed to announce the 1.6.4 3057release of the cairo graphics library. This release reverts the xlib 3058locking change introduced in 1.6.4, (and the application crashes that 3059it caused). The community would be glad to sack its current release 3060manager and is accepting applications for someone who could do the job 3061with more discipline. 3062 3063Revert 'add missing locking in cairo-xlib' 3064------------------------------------------ 3065This change was introduced in cairo 1.6.2, but also introduced a bug 3066which causes many cairo-xlib applications to crash, (with a 3067segmentation fault inside of XSetClipMask). Instead of attempting 3068another fix for the broken fix, the change in 1.6.2 has been 3069reverted. The original bug which the change was addressing has been 3070present since at least cairo 1.4, so it is not expected that leaving 3071this bug unfixed will cause any new problems for applications moving 3072from cairo 1.4 to cairo 1.6. 3073 3074At this point, the code of cairo 1.6.4 differs from cairo 1.6.0 only 3075in the fix for the PostScript-printer crashes. 3076 3077Tweak build to avoid linking with g++ 3078------------------------------------- 3079Cairo 1.6.4 avoids a quirk in automake that was causing the cairo 3080library to be linked with g++ and linked against libstdc++ even when 3081only C source files were compiled for the library. 3082 3083Release 1.6.2 (2008-04-11 Carl Worth <cworth@cworth.org>) 3084========================================================= 3085The cairo community is pleased (but somewhat sheepish) to announce the 30861.6.2 release of the cairo graphics library. This is an update to 3087yesterday's 1.6.0 release with an important fix to prevent cairo's 3088PostScript output from crashing some printers. This release also 3089includes a locking fix for cairo's xlib backend to improve thread 3090safety. There are no changes beyond these two fixes. 3091 3092Fix for PostScript printer crash 3093-------------------------------- 3094Adrian Johnson discovered that cairo 1.6.0 was being a bit hard on 3095PostScript printers, by changing the font matrix very frequently. This 3096causes some PostScript interpreters to allocate new font objects every 3097few glyphs, eventually exhausting available resources. The fix 3098involves leaving translational components of the font matrix as zero, 3099so that the PostScript interpreter sees an identical font matrix 3100repeatedly, and can more easily share internal font object resources. 3101 3102This fix has been tested to resolve the bugs posted here, (for both 3103Xerox and Dell printers): 3104 3105 Printing some PDFs from evince is crashing our Xerox printer 3106 https://bugs.freedesktop.org/show_bug.cgi?id=15348 3107 3108 Cairo-generated postscript blocks Dell 5100cn 3109 https://bugs.freedesktop.org/show_bug.cgi?id=15445 3110 3111Add missing locking in cairo-xlib 3112--------------------------------- 3113Chris Wilson noticed that cairo 1.6.0 was manipulating an internal 3114cache of GC object within cairo's Xlib backend without proper 3115locking. The missing locking could cause failures for multi-threaded 3116applications. He fixed this in 1.6.2 by adding the missing locks. 3117 3118Release 1.6.0 (2008-04-10 Carl Worth <cworth@cworth.org>) 3119========================================================= 3120The cairo community is quite pleased to announce the 1.6.0 release of 3121the cairo graphics library. This is a major update to cairo, with new 3122features and enhanced functionality which maintains compatibility for 3123applications written using cairo 1.4, 1.2, or 1.0. We recommend that 3124anybody using a previous version of cairo upgrade to cairo 1.6.0. 3125 3126The most significant new features in this release are dramatically 3127improved PDF and PostScript[*] output, support for arbitrary X server 3128visuals (including PseudoColor), a new Quartz backend, and and a new 3129"win32 printing" backend. See below for more details on these and 3130other new features. 3131 3132New dependency on external pixman library (Thanks, Søren!) 3133---------------------------------------------------------- 3134As of cairo 1.6, cairo now depends on the pixman library, for which 3135the latest release can be obtained alongside cairo: 3136 3137 https://cairographics.org/releases/pixman-0.10.0.tar.gz 3138 3139This library provides all software rendering for cairo, (the 3140implementation of the image backend as well as any image fallbacks 3141required for other backends). This is the same code that was 3142previously included as part of cairo itself, but is now an external 3143library so that it can be shared by both cairo and by the X server, 3144(which is where the code originated). 3145 3146Improved PDF, PostScript, and SVG output (Thanks, Adrian!) 3147---------------------------------------------------------- 3148Users of the cairo-pdf, cairo-ps, and cairo-svg should see a dramatic 3149improvement from cairo 1.2/1.4 to 1.6. With this release there are now 3150almost no operations that will result in unnecessary rasterization in 3151the PDF and PostScript. Rasterized "image fallbacks" are restricted 3152only to minimal portions of the document where something is being 3153drawn with cairo that is beyond the native capabilities of the 3154document, (this is rare for PDF or SVG, but occurs when blending 3155translucent objects for PostScript). 3156 3157This means that the final output will be of higher quality, and will 3158also be much smaller, and therefore will print more quickly. The 3159machinery for doing analysis and minimal fallbacks also benefits the 3160win32-printing surface described below. 3161 3162In addition to doing less rasterization, the PostScript and PDF output 3163also has several other improvements to make the output more efficient 3164and more compatible with specifications. 3165 3166[*] Note: Just before this release, a bug has been reported that the 3167PostScript output from cairo can crash some printers, (so far the 3168following models have been reported as problematic Xerox Workcentre 31697228 or 7328 and Dell 5100cn). We will implement a workaround as soon 3170as we can learn exactly what in cairo's output these printers object 3171to, (and we could use help from users that have access to misbehaving 3172printers). This bug is being tracked here: 3173 3174 Printing some PDFs from evince is crashing our Xerox printer 3175 https://bugs.freedesktop.org/show_bug.cgi?id=15348 3176 3177New support for arbitrary X server visuals (Thanks, Keith and Behdad!) 3178---------------------------------------------------------------------- 3179As of cairo 1.6, cairo should now work with an arbitrary TrueColor or 31808-bit PseudoColor X server visual. Previous versions of cairo did not 3181support these X servers and refused to draw anything. We're pleased to 3182announce that this limitation has been lifted and people stuck with 3183ancient display systems need no longer be stuck with ancient software 3184just because of cairo. 3185 3186New, supported Quartz backend for Mac OS X (Thanks, Brian and Vladimir!) 3187------------------------------------------------------------------------ 3188As of cairo 1.6, the cairo-quartz backend is now marked as "supported" 3189rather than "experimental" as in previous cairo releases. Its API now 3190has guarantees of API stability into future cairo releases, and its 3191output quality is comparable to other backends. There have been 3192significant improvements to cairo-quartz since 1.4. It now uses many 3193fewer image fallbacks, (meaning better performance), and has greatly 3194improved text rendering. 3195 3196New, "win32 printing" backend (Thanks, Adrian and Vladimir!) 3197------------------------------------------------------------ 3198A new win32-printing surface has been added with an interface very 3199similar to the original win32 surface, (both accept an HDC 3200parameter). But this new surface should only be called with a printing 3201DC, and will result in all drawing commands being stored into a 3202meta-surface and emitted after each page is complete. This allows 3203cairo to analyze the contents, (as it does with PDF, PostScript, and 3204SVG backends), and to do minimal image-based fallbacks as 3205necessary. The analysis keeps things as efficient as possible, while 3206the presence of fallbacks, (when necessary), ensure the consistent, 3207high-quality output expected from cairo. 3208 3209Robustness fixes (Thanks, Chris!) 3210--------------------------------- 3211There has been a tremendous number of improvements to cairo's 3212robustness. Areas that have been improved include: 3213 3214 * Proper reporting of errors 3215 3216 * Responding correctly to invalid input 3217 3218 * Avoiding integer overflows 3219 3220 * Avoiding memory leaks on error-recovery paths 3221 3222 * Making reference counting thread safe 3223 3224 * Exhaustive testing of memory allocation points 3225 3226Other fixes (Thanks, everybody!) 3227-------------------------------- 3228Cairo's internal fixed-point representation has been changed from 322916.16 to 24.8. This has a direct impact on applications as it allows 3230much larger objects to be drawn before internal limits in cairo make 3231the drawing not work. 3232 3233The CAIRO_EXTEND_PAD mode is now fully supported by surface 3234patterns. This mode allows applications to use cairo_rectangle and 3235cairo_fill to draw scaled images with high-quality bilinear filtering 3236for the internal of the image, but without any objectionably blurry 3237edges, (as would happen with the default EXTEND_NONE and cairo_paint). 3238 3239Rendering with CAIRO_ANTIALIAS_NONE has been fixed to be more 3240predictable, (previously image rendering and geometry rendering would 3241be slightly misaligned with respect to each other). 3242 3243The reference manual at https://cairographics.org/manual now documents 3244100% of the functions and types in cairo's public API. 3245 3246API additions 3247------------- 3248Several small features have been added to cairo with new API functions: 3249 3250cairo_format_stride_for_width 3251 3252 Must be called to compute a properly aligned stride value before 3253 calling cairo_image_surface_create_for_data. 3254 3255cairo_has_current_point 3256 3257 Allows querying if there is a current point defined for the 3258 current path. 3259 3260cairo_path_extents 3261 3262 Allows querying for path extents, (independent of any fill or 3263 stroke parameters). 3264 3265cairo_surface_copy_page 3266cairo_surface_show_page 3267 3268 Allow beginning a new document page without requiring a cairo_t 3269 object. 3270 3271cairo_ps_surface_restrict_to_level 3272cairo_ps_get_levels 3273cairo_ps_level_to_string 3274cairo_ps_surface_set_eps 3275 3276 Allow controlling the Post PostScript level, (2 or 3), to 3277 target, as well as to generate Encapsulated PostScript (EPS). 3278 3279cairo_quartz_font_face_create_for_cgfont 3280 3281 Create a quartz-specific cairo_font_face_t from a CGFontRef. 3282 3283cairo_win32_font_face_create_for_logfontw_hfont 3284 3285 Create a win32-specific cairo_font_face from a LOGFONTW and an 3286 HFONT together. 3287 3288Thanks, Everyone! 3289----------------- 3290I've accounted for 32 distinct people with attributed code added to 3291cairo between 1.4.14 and 1.6.0, (their names are below). That's an 3292impressive number, but there are certainly dozens more that 3293contributed with testing, suggestions, clarifying questions, and 3294encouragement. I'm grateful for the friendships that have developed as 3295we have worked on cairo together. Thanks to everyone for making this 3296all so much fun! 3297 3298Adrian Johnson, Alp Toker, Antoine Azar, Behdad Esfahbod, 3299Benjamin Otte, Bernardo Innocenti, Bertram Felgenhauer, 3300Boying Lu, Brian Ewins, Carl Worth, Chris Heath, Chris Wilson, 3301Claudio Ciccani, Emmanuel Pacaud, Jeff Muizelaar, Jeremy Huddleston, 3302Jim Meyering, Jinghua Luo, Jody Goldberg, Jonathan Gramain, 3303Keith Packard, Ken Herron, Kouhei Sutou, Kristian Høgsberg, 3304Larry Ewing, Martin Ejdestig, Nis Martensen, Peter Weilbacher, 3305Richard Hult, Shailendra Jain, Søren Sandmann Pedersen, 3306Vladimir Vukicevic 3307 3308Snapshot 1.5.20 (2008-04-04 Carl Worth <cworth@cworth.org>) 3309=========================================================== 3310This is the tenth snapshot in cairo's unstable 1.5 series. It comes 3311just two days (and only one working day) after the 1.5.18 3312snapshot. The quick snapshot is due to two embarrassing bugs (both 3313affecting cairo-xlib) that had been introduced in the 1.5.18 3314snapshot. The fixes for these are described below along with a few 3315other fixes, (which hopefully aren't introducing new bugs this time). 3316 3317cairo-xlib 3318---------- 3319Revert fix from 1.5.18 to allow pattern expansion based on the filter 3320mode. This fix seemed so boring, (the use case it addresses is almost 3321never used in practice), that it didn't even get mentioned in the 33221.5.18 release notes. However, the "fix" happened to break rendering 3323that is always used resulting in corrupt image rendering in mozilla, 3324evolution, and probably everything else that uses cairo. 3325 3326Fix to avoid BadMatch errors in cairo_surface_create_similar. These 3327were introduced, (inadvertently, of course), as part of the fix in 33281.5.18 for creating similar surfaces without the Render 3329extension. Again, thanks to mozilla, (and Vladimir Vukicevic in 3330particular), for noticing our mistake. 3331 3332general 3333------- 3334Correctly handle an in-error surface in 3335cairo_surface_write_to_png. Previously this function would cause an 3336assertion failure if you gave it a finished surface. Now it cleanly 3337returns a CAIRO_STATUS_SURFACE_FINISHED result instead. 3338 3339Avoid potentially infinite wandering through memory inside 3340_cairo_hull_prev_valid. Thanks to Jonathan Watt for noticing this 3341problem: 3342 3343 https://bugzilla.mozilla.org/show_bug.cgi?id=306649#c21 3344 3345cairo-pdf 3346--------- 3347Fix generation of "soft" masks made by drawing to a similar surface 3348and then calling cairo_mask_surface() with it. 3349 3350cairo-svg 3351--------- 3352Fix for code that uses cairo_mask() on an intermediate surface which 3353is later passed to cairo_mask_surface(). 3354 3355Snapshot 1.5.18 (2008-04-05 Carl Worth <cworth@cworth.org>) 3356=========================================================== 3357This is the ninth snapshot in cairo's unstable 1.5 series. It comes 3358just 4 days after the 1.5.16 snapshot. We had hoped to not need 3359another snapshot before the final 1.6.0 release, but several critical 3360bugs were found and fixed in the last few days, so we thought it 3361important to let people test the fixes with this snapshot. See below 3362for details. 3363 3364documentation 3365------------- 3366The README now lists necessary dependencies. 3367 3368Various graphics state defaults are now documented, (source pattern is 3369opaque black, line width is 2.0, line join is miter, line cap is butt, 3370miter limit is 10.0, etc.). 3371 3372general 3373------- 3374Several cleanups have been made along many error-path returns, 3375(carefully propagating up the original error status values, cleaning 3376up memory leaks during error recovery, etc.). This is yet another in 3377Chris "ickle" Wilson's long series of error-handling cleanups during 3378the 1.5 series. 3379 3380Avoid undesired clipping when drawing scaled surface patterns with 3381bilinear filtering. 3382 3383cairo-pdf 3384--------- 3385Fix emission of 1-bit alpha masks in PDF output. 3386 3387Fix a bug that would cause glyphs to be misplaced along the Y axis: 3388 3389 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136 3390 3391 Originally, an issue about a crash, but later leading to the 3392 misplaced glyphs issue being discovered. 3393 3394cairo-ps 3395-------- 3396Fix misplaced glyphs in cairo's PostScript output. 3397 3398 This issue occurs when consecutive glyphs are placed far 3399 apart. This case is exercised by the new ft-show-glyphs-table test 3400 case, which was originally inspired by the Debian bug #23474136 3401 mentioned above. 3402 3403Fix more misplaced glyphs in cairo's PostScript output: 3404 3405 The issue here showed up under very particular circumstance, (when 3406 converting a PDF file with a CFF font with CID Identity-H encoding 3407 and using glyph 0, (defined by the CFF specification as .notdef) 3408 as a space instead). More concretely, this problem appeared when 3409 converting the UbuntuDesktop.pdf file mentioned in this bug 3410 report: 3411 3412 https://bugs.freedesktop.org/show_bug.cgi?id=15348#c3 3413 3414 As usual with arcane font-encoding-specific bugs like this, many 3415 thanks to Adrian Johnson for his magical ability to dive into 3416 specifications and emerge almost instantaneously with fixes. And 3417 thanks to Sebastien Bacher for bringing the bug to our attention. 3418 3419cairo-xlib 3420---------- 3421Fix serious failure on X servers without the Render extension. 3422 3423 Since the 1.5.14 snapshot (with support for PseudoColor visuals), 3424 any application attempting to create a "similar" xlib surface would 3425 fail on an X server without the Render extension. Thanks to 3426 Frederic Crozat for pointing out that cairo's test suite was 3427 entirely failing when run against Xvfb. 3428 3429Avoid crashing cairo-xlib applications for too-large glyphs 3430 3431 Naively sending glyphs of any size to the X server will eventually 3432 violate the X limit on maximum request sizes. We now properly 3433 detect when a glyph would be too large and use existing fallbacks 3434 to render the glyph rather than trying to send it to the X server. 3435 3436Enable the buggy_repeat workaround for Xorg servers < 1.4 3437 3438 We have determined that Xorg 1.3.0 (as packaged in Fedora 8 at 3439 least) has a bug that can result in an X server crash when cairo 3440 uses certain X Render repeat operations, (as exercised by cairo's 3441 extend-reflect test). We avoid this crash by using fallbacks 3442 whenever a repeating surface is needed for any Xorg server with a 3443 version less than 1.4. This is slower, but should prevent the 3444 crash. 3445 3446 (Meanwhile, there appears to be a separate bug where some X 3447 servers or specific X-server drivers will use random pixmap data 3448 when asked to draw a repeating surface. The buggy_repeat 3449 workaround would also avoid those problems, but we have not yet 3450 characterized whether the new "version < 1.4" is a good 3451 characterization of those problems or not.) 3452 3453cairo-quartz-font 3454----------------- 3455Implement cairo_font_extents for this backend. 3456 3457The cairo-quartz-font implementation added in the 1.5.14 snapshot was 3458entirely missing support for the cairo_font_extents function. Thanks to 3459Richard Hult for pointing out this obvious shortcoming, (and obvious 3460lack of coverage in our test suite): 3461 3462 CGFont backend returns 0 font extents 3463 https://bugs.freedesktop.org/show_bug.cgi?id=15319 3464 3465Snapshot 1.5.16 (2008-04-01 Carl Worth <cworth@cworth.org>) 3466=========================================================== 3467This is the eighth snapshot in cairo's unstable 1.5 series. It comes 3468less than two weeks after the 1.5.14 snapshot and it really is a 3469legitimate snapshot, (in spite of sharing this date with that of many 3470bogus announcements). The major change in this snapshot is that the 3471cairo-quartz backend is now officially "supported", including new API 3472to construct a font face from a CGFontRef . Also several bug fixes 3473have been fixed in many backends. See below for details. 3474 3475general 3476------- 3477Cairo now depends on pixman 0.10.0 which was recently released. The 3478latest pixman release can always be found alongside cairo releases at: 3479 3480 https://cairographics.org/releases 3481 3482Increase the precision of color stops for gradients. This fixes a 3483regression in gradient rendering that had been present since the 34841.5.12 snapshot. 3485 3486paginated (all of ps, pdf, svg, and win32-printing) 3487--------------------------------------------------- 3488Fix assertion failure when some drawing elements are outside the page 3489boundaries, (this bug was noticed when using Inkscape to print a 3490drawing with landscape orientation to a portrait-oriented piece of 3491paper). 3492 3493cairo-ps 3494-------- 3495Fix of bug causing incorrect glyph positioning. 3496 3497Fix handling of CAIRO_OPERATOR_SOURCE. 3498 3499cairo-pdf 3500--------- 3501More reduction of unnecessary digits of precision in PDF output. 3502 3503Fix handling of CAIRO_OPERATOR_SOURCE. 3504 3505cairo-svg 3506--------- 3507Fix bug in usage of libpng that was preventing cairo_mask from working 3508with the svg backend. 3509 3510Fix transformation of source pattern for cairo_stroke(). 3511 3512cairo-win32-printing 3513-------------------- 3514Fix fallback resolution, (thanks again to inkscape users/developers 3515for helping us find this one). 3516 3517cairo-quartz 3518------------ 3519Mark the cairo-quartz backend as "supported" rather than 3520"experimental". This means the following: 3521 3522 * The backend will now be built by default (if possible). 3523 3524 * We are committing that the backend-specific API (as published in 3525 cairo-quartz.h) are stable and will be supported in all future 3526 cairo 1.x releases. 3527 3528 * We are committing that the output quality of this backend 3529 compares favorably with other cairo backends, (and that quality 3530 is ensured by good results from the cairo test suite). 3531 3532 * We recommend that distributions build and distribute this 3533 backend when possible. 3534 3535Note that the cairo_quartz_image API (in cairo-quartz-image.h) is 3536still experimental, will not build by default, (pass 3537--enable-quartz-image to configure to build it), and may see API 3538changes before it is marked as "supported" in a future release. 3539 3540Put the CAIRO_FONT_TYPE_ATSUI name back into 3541cairo-deprecated.h. Without this, the cairo 1.5.14 snapshot broke all 3542builds for applications using the C++ cairomm bindings (and perhaps 3543others) which have the CAIRO_FONT_TYPE_ATSUI name in their header 3544files. This breakage happened even for applications not using 3545cairo-quartz at all. 3546 3547 Note: Even though the CAIRO_FONT_TYPE_ATSUI name is provided to 3548 avoid this build breakage, we still recommend that bindings and 3549 applications move to the new, and more accurate, 3550 CAIRO_FONT_TYPE_QUARTZ name. 3551 3552Replace the implementation of cairo-quartz-font to use CFFont instead 3553of ATSUI. The CGFont API is a better fit than ATSUI, and this new 3554implementation is also more correct than the old one as well. 3555 3556This also adds the following new API call: 3557 3558 cairo_public cairo_font_face_t * 3559 cairo_quartz_font_face_create_for_cgfont (CGFontRef font); 3560 3561The previous cairo_quartz_font_face_create_for_atsu_font_id function 3562continues to exist and is part of the supported API going 3563forward. (However, the old name of that same function, which was 3564cairo_atsui_font_face_create_for_atsu_font_id is officially 3565deprecated. Any source code using the old name should be updated to 3566use the new name.) 3567 3568Fix transformation of source pattern for cairo_stroke(). 3569 3570cairo-win32 3571----------- 3572Avoid crash in create_similar is cairo_win32_surface_create fails. 3573 3574Snapshot 1.5.14 (2008-03-20 Carl Worth <cworth@cworth.org>) 3575=========================================================== 3576This is the seventh snapshot in cairo's unstable 1.5 series. It comes 35773 weeks after the 1.5.12 snapshot. This snapshot includes support for 3578arbitrary X server visuals, (including PseudoColor), which was the 3579final remaining cairo-specific item on the cairo 1.6 roadmap. It also 3580includes a huge number of improvements to the cairo-quartz backend. So 3581this is effectively a cairo 1.6 release candidate. We expect very few 3582changes from now until 1.6 and only for specific bug fixes. 3583 3584API Change 3585---------- 3586Rename ATSUI font backend to Quartz font backend. This affects the 3587following usage: 3588 3589 --enable-atsui -> --enable-quartz-font 3590 CAIRO_HAS_ATSUI_FONT -> CAIRO_HAS_QUARTZ_FONT 3591 CAIRO_FONT_TYPE_ATSUI -> CAIRO_FONT_TYPE_QUARTZ 3592 3593 cairo_atsui_font_face_create_for_atsu_font_id -> 3594 cairo_quartz_font_font_create_for_atsu_font_id 3595 3596This API change is justified by the cairo-quartz backend still be 3597marked as "experimental" rather than "supported", (though this is one 3598step toward making the change to "supported" before 1.6). Cairo will 3599still provide ABI compatibility with the old symbol name, however. 3600 3601paginated (all of ps, pdf, svg, and win32-printing) 3602--------------------------------------------------- 3603Optimize by not analyzing an image surface for transparency more than 3604once, (previously all images were analyzed twice). 3605 3606cairo-ps and cairo-pdf 3607---------------------- 3608Avoiding emitting a matrix into the stroke output when unnecessary, 3609(making output size more efficient). 3610 3611Reduce rounding error of path shapes by factoring large scale factors 3612out of the path matrix, (ensuring that a fixed-number of printed 3613digits for path coordinates contains as much information as possible). 3614 3615Reduce excess digits for text position coordinates. This makes the 3616output file size much smaller without making the result any less 3617correct. 3618 3619cairo-ps 3620-------- 3621Eliminate bug causing extraneous text repetition on Linux PostScript 3622output in some cases. 3623 3624 See: Mozilla Bug 419917 – Printed page contents are reflected 3625 inside bordered tables (Linux-only) 3626 3627 https://bugzilla.mozilla.org/show_bug.cgi?id=419917 3628 3629Optimize output when EXTEND_PAD is used. 3630 3631cairo-pdf 3632--------- 3633Fix to not use fill-stroke operator with transparent fill, (else PDF 3634output doesn't match the cairo-defined correct result). See: 3635 3636 https://bugs.launchpad.net/inkscape/+bug/202096 3637 3638cairo-svg 3639--------- 3640Fix stroke of path with a non-solid-color source pattern: 3641 3642 https://bugs.freedesktop.org/show_bug.cgi?id=14556 3643 3644cairo-quartz 3645------------ 3646Fix text rendering with gradient or image source pattern. 3647 3648Handling antialiasing correctly for cairo_stroke(), cairo_clip(), and 3649cairo_show_text()/cairo_show_glyphs(). 3650 3651Correctly handle gradients with non-identity transformations: 3652 3653 Fixes https://bugs.freedesktop.org/show_bug.cgi?id=14248 3654 3655Add native implementation of REPEAT and REFLECT extend modes for 3656gradients. 3657 3658Fix implementation for the "unbounded" operators, (CAIRO_OPERATOR_OUT, 3659_IN, _DEST_IN, and _DEST_ATOP). 3660 3661Correctly handle endiannees in multi-architecture compiles on Mac OS 3662X. 3663 3664Avoid behavior which would cause Core Graphics to print warnings to 3665the console in some cases. 3666 3667cairo-win32 3668----------- 3669Fix handling of miter limit. 3670 3671cairo-win32-printing 3672-------------------- 3673Fix to not use a 1bpp temporary surface in some cases while printing, 3674(so grayscale data is preserved rather than just becoming black and 3675white). 3676 3677cairo-xlib 3678---------- 3679Add support for rendering to arbitrary TrueColor X server 3680visuals. This fixes at least the following bugs: 3681 3682 cairo doesn't support 8-bit truecolor visuals 3683 https://bugs.freedesktop.org/show_bug.cgi?id=7735 3684 3685 cairo doesn't support 655 xlib format 3686 https://bugs.freedesktop.org/show_bug.cgi?id=9719 3687 3688Add support for rendering to 8-bit PseudoColor X server visuals. This 3689fixes the following bug: 3690 3691 Cairo doesn't support 8-bit pseudocolor visuals 3692 https://bugs.freedesktop.org/show_bug.cgi?id=4945 3693 3694Snapshot 1.5.12 (2008-02-28 Carl Worth <cworth@cworth.org>) 3695=========================================================== 3696This is the sixth snapshot in cairo's unstable 1.5 series. It comes 1 3697week after the 1.5.10 snapshot. This snapshot includes the 3698long-awaited change from 16.16 to 24.8 fixed-point values, (see below 3699for why you should care). It also includes several backend-specific 3700bug fixes. 3701 370224.8 fixed-point format 3703----------------------- 3704Cairo has always converted path coordinates to a fixed-point 3705representation very early in its processing. Historically, this has 3706been a 32-bit representation with 16 bits of integer for the 3707device-pixel grid and 16 bits of sub-pixel positioning. The choice of 370816 bits for the integer coordinate space was based on the 16-bit limit 3709for X Window drawables. 3710 3711This 16-bit limit has proven problematic for many applications. It's 3712an especially vexing problem when targeting non-X backends that don't 3713have any 16-bit restriction. But even when targeting cairo-xlib, it's 3714often desirable to draw a large shape, (say a background rectangle), 3715that extends beyond the surface bounds and expect it to fill the 3716surface completely, (rather than overflowing and triggering random 3717behavior). 3718 3719Meanwhile, nobody has ever really needed 16 bits of sub-pixel 3720precision. 3721 3722With this snapshot, the fixed-point system is still in place and is 3723still using a 32-bit representation, (future versions of cairo might 3724move entirely to floating-point when targeting PDF output for 3725example). But the representation now provides 24 bits of pixel 3726addressing and only 8 bits of sub-pixel positioning. This should give 3727a much less stifling space to many applications. 3728 3729However, the underlying pixman library still has 16-bit limitations in 3730many places, (it has its roots in the X server as well). Until those 3731are also fixed, applications targeting cairo image surfaces, or 3732hitting software fallbacks when targeting other surfaces will still 3733encounter problems with device-space values needing more than 16 3734integer bits. 3735 3736generic fixes 3737------------- 3738Add a few tests to the test suite to increase coverage. 3739 3740Cleanup a few error-handling paths, (propagate error correctly). 3741 3742cairo-ft 3743-------- 3744Fix handling of font sizes smaller than 1 device pixel. 3745 3746cairo-pdf 3747--------- 3748Fix to properly save/restore clip when analyzing meta-surface 3749patterns, (fixing a couple of test-suite failures). 3750 3751Implement native support for CAIRO_OPERATOR_SOURCE when the source 3752pattern is opaque. 3753 3754Emit rectangles as PDF rectangles ("re" operator) rather than as 3755general paths. 3756 3757cairo-ps 3758-------- 3759Fix to work properly with the 16.16->24.8 change. 3760 3761cairo-svg 3762--------- 3763Fix CAIRO_EXTEND_REFLECT by using an image fallback, (there's no 3764direct SVG support for reflected patterns). 3765 3766Fix the use of alpha-only masks, (such as CAIRO_FORMAT_A8). 3767 3768cairo-quartz 3769------------ 3770Add new API for efficiently using image data as a source: 3771 3772 cairo_surface_t * 3773 cairo_quartz_image_surface_create (cairo_surface_t *image_surface); 3774 3775 cairo_surface_t * 3776 cairo_quartz_image_surface_get_image (cairo_surface_t *surface); 3777 3778For full documentation, see: 3779 3780 https://cairographics.org/manual/cairo-Quartz-Surfaces.html#cairo-quartz-image-surface-create 3781 3782Several fixes for cairo_mask(). 3783 3784cairo-atsui 3785----------- 3786Change default from from Monaco to Helvetica to be more consistent 3787with other font backends. 3788 3789Snapshot 1.5.10 (2008-02-20 Carl Worth <cworth@cworth.org>) 3790=========================================================== 3791This is the fifth snapshot in cairo's unstable 1.5 series. It comes 3 3792weeks after the 1.5.8 snapshot. This snapshot adds one new API 3793function, (cairo_has_current_point), and the usual mix of 3794improvements, (more efficient PostScript/PDF output, optimized 3795stroking), and fixes (more robust error-handling, etc.). See below for 3796details. 3797 3798New API 3799------- 3800Add a new function to query if there is a current point: 3801 3802 cairo_bool_t 3803 cairo_has_current_point (cairo_t *cr); 3804 3805There is no current point immediately after cairo_create(), nor after 3806cairo_new_path() or cairo_new_sub_path(). There is a current point 3807after any of the path-creation functions, (cairo_move_to, 3808cairo_line_to, cairo_curve_to, etc.). 3809 3810With this new function, we also revert the change of the return type 3811of cairo_get_current_point from cairo 1.5.8, (it's now a void function 3812again). 3813 3814Optimizations 3815------------- 3816Optimize stroking code to avoid repeated calculation of redundant 3817values, (particularly significant for very large, offscreen paths). 3818 3819General fixes 3820------------- 3821Patch a few more potential buffer overruns, (due to integer 3822overflow). 3823 3824Many fixes and improvements to cairo's error-handling, (ensure that 3825correct error values are returned, clean up memory leaks on 3826error-handling paths, etc.). 3827 3828Fix a potential infinite loop when stroking a spline with a pen that 3829has been transformed to a line segment. 3830 3831Remove treating NULL as a synonym for a valid cairo_font_options_t* 3832with default values, (a change that had been introduced as of cairo 38331.5.8). 3834 3835Remove the altered handling of tolerance and fallback-resolution that 3836had been introduced as of cairo 1.5.4. 3837 3838cairo-xlib 3839---------- 3840Pass the original Drawable, (as opposed to the root window), to 3841XCreatePixmap when creating a similar surface. This gives the X server 3842more information so that it can be clever and efficient. 3843 3844cairo-pdf 3845--------- 3846Fix the rendering of repeating and reflecting patterns. 3847 3848Ensure miter limit is always >= 1, (smaller limits are not meaningful, 3849but they can cause some PDF viewers to fail to display pages). 3850 3851Generate more efficient output when the same path is used for both 3852fill and stroke. 3853 3854cairo-ps 3855-------- 3856Start sharing much of the cairo-pdf code rather than implementing very 3857similar code in cairo-ps. 3858 3859Implement native support for repeating and reflecting linear 3860gradients. 3861 3862Implement reflected surface patterns. 3863 3864Ensure miter limit is always >= 1, (smaller limits are not meaningful, 3865but they can cause some PostScript viewers to crash). 3866 3867Generate PostScript that will perform more efficiently and use less 3868memory on printers, (use currentfile instead of a giant string array 3869for image data, and avoid using PostScript patterns for paint() and 3870fill() when possible). 3871 3872cairo-svg 3873--------- 3874Avoid unnecessary rasterization when copying a "similar" surface to 3875another svg surface, (allow the SOURCE operator to be implemented with 3876all-vector operations if there are no underlying objects). 3877 3878cairo-atsui 3879----------- 3880Eliminate infinite loop when attempting to render an empty string. 3881 3882Snapshot 1.5.8 (2008-01-30 Carl Worth <cworth@cworth.org>) 3883========================================================== 3884This is the fourth snapshot in cairo's unstable 1.5 series. It comes 2 3885weeks after the 1.5.6 snapshot. It adds a few new API functions. Most 3886notably all callers of cairo_image_surface_create_for_data should now 3887be calling cairo_format_stride_for_width to compute a legal stride 3888value. See below for more details. 3889 3890New API in cairo 1.5.8 3891---------------------- 3892We've added a new function that should be called to compute a legal 3893stride value before allocating data to be used with 3894cairo_image_surface_create_for_data: 3895 3896 int 3897 cairo_format_stride_for_width (cairo_format_t format, 3898 int width); 3899 3900We've also added a new cairo_path_extents function that can be used to 3901compute a bounding box for geometry such as a single line segment, 3902(contrast with cairo_path_extents and cairo_stroke_extents): 3903 3904 void 3905 cairo_path_extents (cairo_t *cr, 3906 double *x1, double *y1, 3907 double *x2, double *y2); 3908 3909And finally, we've added a function to allow for querying the 3910XRenderPictFormat of a cairo-xlib surface: 3911 3912 XRenderPictFormat * 3913 cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface); 3914 3915API changes 3916----------- 3917Fix return types of cairo_surface_show_page and 3918cairo_surface_copy_page. This is an API change to functions that are 3919new in the 1.5 series, so not an API break compared to any stable 3920cairo release, (1.0.x, 1.2.x, 1.4.x). 3921 3922Change the return type of cairo_get_current_point() from void to 3923cairo_status_t. This allows the caller to receive a 3924CAIRO_STATUS_NO_CURRENT_POINT value to distinguish the a current point 3925at the origin from no current point existing. 3926 3927Performance improvement 3928----------------------- 3929Improve performance of clipping by using an optimized code path 3930internally, (with the ADD operator instead of IN). 3931 3932General bug fixes 3933----------------- 3934Fix various cairo_*_extents functions to initialize the return-value 3935variables even in the case of a cairo_t in error. 3936 3937Treat NULL as a legitimate value for cairo_font_options_t*. [NOTE: 3938On discussion afterwards, we decided against this change so it has 3939been removed as of cairo 1.5.10.] 3940 3941Fix rendering with CAIRO_ANTIALIAS_NONE to be more predictable, (that 3942is, to avoid seams appearing when geometry and imagery share an 3943identical edge). Portions of this fix are in the pixman library and 3944will appear in a future release of that library. 3945 3946Avoid triggering an error for a font size of 0. 3947 3948Miscellaneous changes 3949--------------------- 3950Require pixman >= 0.9.6. 3951 3952There has been a tremendous amount improvement to cairo's 3953documentation. We're delighted that 100% of the public API has at 3954least some documentation in the API reference manual. Many thanks to 3955Behdad Esfahbod and Nis Martensen for leading this effort. 3956 3957cairo-pdf and cairo-ps 3958---------------------- 3959Eliminate failure when a Type 1 font is embedded with an explicit 3960glyph 0. 3961 3962cairo-pdf 3963--------- 3964Implement a more correct and more efficient approach for patterns with 3965an extend mode of CAIRO_EXTEND_REFLECT. 3966 3967cairo-ps 3968-------- 3969Fix image masks to properly pack and pad mask bits. 3970 3971cairo-quartz 3972------------ 3973Take care to only use DrawTiledImage for integer-aligned images, (and 3974use slower paths to get the correct result in other cases). 3975 3976cairo-win32 3977----------- 3978Fix for older versions of mingw. 3979 3980Improve the handling of the clipping with the win32 and win32-printing 3981surfaces. 3982 3983Fix rendering of non black/white text. 3984 3985Snapshot 1.5.6 (2008-01-15 Carl Worth <cworth@cworth.org>) 3986========================================================== 3987This is the third snapshot in cairo's unstable 1.5 series. It comes 3988about 6 weeks after the 1.5.4 snapshot. The only API addition compared 3989to 1.5.4 is very minor, (a new value CAIRO_STATUS_TEMP_FILE_ERROR). 3990The remainder of the changes are the usual accumulation of bug fixes 3991and improvements. See below for details. 3992 3993General bug fixes 3994----------------- 3995Fix handling of fonts that contain a mixture of outline and bitmapped 3996glyphs. There was a change in this handling in 1.5.4 that improved 3997some cases and also regressed other cases. Now, all cases should be 3998handled quite well. 3999 4000Fix alignment issues that were causing SIGBUS failures on SPARC. 4001 4002Fix a regression (which first appeared in 1.5.2) where stroking under 4003a large scale would sometimes incorrectly replace a miter join with a 4004bevel join. (Thanks to Keith Packard.) 4005 4006Fix reporting of zero-sized extents to be {0,0} rather than 4007{INT_MAX,INT_MIN}. This avoids several integer overflow and 4008allocations of massive regions in some cases. 4009 4010Fix failures of gradients with no stops, (quartz, ps, and pdf). 4011 4012Fix handling of Type 1 fonts on Windows platforms. 4013 4014Fix handling of Type 1 fonts with no specific family name in the font 4015itself, (generate a CairoFont-x-y name). 4016 4017Handle NULL string values in cairo_show_text, cairo_show_glyphs, and 4018friends. 4019 4020Many robustness improvements along error-handling paths, (thanks as 4021always, to Chris "ickle" Wilson). 4022 4023Various other minor fixes. 4024 4025Paginated backends (PDF/PostScript/win32-printing) 4026-------------------------------------------------- 4027Avoid unnecessary rasterization when using a paginated surface as a 4028source, (such as drawing from one pdf surface to another). 4029 4030Fix replaying of paginated surface with more than one level of push/pop 4031group. 4032 4033cairo-xlib 4034---------- 4035Fix xlib backend to not consider recent X server release as having a 4036buggy repeat implementation in the Render extension. 4037 4038cairo-pdf 4039--------- 4040Fix PDF output to avoid triggering very slow rendering in PDF viewers, 4041(avoid starting and stopping the content stream for each pattern 4042emission). 4043 4044Support CAIRO_OPERATOR_SOURCE in cases where there is nothing below 4045the object being drawn. 4046 4047Fix to avoid seams appearing between multiple fallback regions. 4048 4049cairo-ps (PostScript) 4050--------------------- 4051Use correct bounding box in Type 3 fonts. 4052 4053Fix several bugs in cairo's PostScript output. These include making 4054the PostScript output more compatible with recent versions of 4055ghostscript that are more strict about Type 3 fonts, for 4056example. 4057 4058Fix for win32 to not attempt to create temporary files in the root 4059directory, (where the user may not have write permission). 4060 4061Avoid generating Level 3 PostScript if Level 2 is sufficient. Also, 4062add code in output documents to alert the user if Level 3 PostScript 4063is handed to a device that cannot handle PostScript beyond Level 40642. 4065 4066cairo-directfb 4067-------------- 4068Various performance optimizations. 4069 4070Fixed support for small surfaces (less than 8x8). 4071 4072Provide support for environment variables CAIRO_DIRECTFB_NO_ACCEL to 4073disable acceleration and CAIRO_DIRECTFB_ARGB_FONT to enable ARGB fonts 4074instead of A8. 4075 4076cairo-os2 4077--------- 4078Allow OS/2 APIs instead of C library allocation functions. 4079 4080Snapshot 1.5.4 (2007-12-05 Carl Worth <cworth@cworth.org>) 4081========================================================== 4082This is the second snapshot in cairo's unstable 1.5 series. It comes 4083just over 1 month after the 1.5.2 snapshot. There are no API changes 4084or additions in 1.5.4 compared to 1.5.2, but there are several bug 4085fixes, and some optimizations. Most of these apply to particular 4086backends. See below for details. 4087 4088General improvements 4089-------------------- 4090Use less memory for spline approximation calculations. 4091 4092Change how the tolerance value is interpreted with regard to 4093fallback-resolution. [Note: On further discussion, we decided against 4094this change for now. It is removed as of cairo 1.5.10.] 4095 4096Fix precision of floating-point values in vector-output backends to 4097avoid rounding errors with very small numbers. 4098 4099Xlib improvements 4100----------------- 4101Fix bug in glyph rendering with xlib, (due to everything being clipped 4102out). This was a regression in the 1.5.2 snapshot that was visible in 4103the GIMP, for example. See: 4104 4105 cairo 1.5.2 causes font problems in GIMP 2.4 status bar and evolution 2.12.1 4106 https://bugs.freedesktop.org/show_bug.cgi?id=13084 4107 4108PostScript improvements 4109----------------------- 4110Fix bug leading to invalid PostScript files when rendering 4111text, (need "0 0 xyshow" instead of "0 xyshow"). 4112 4113Fix many issues with Type 3 fonts, including making the resulting text 4114extractable. 4115 4116Quartz improvements 4117------------------- 4118Fix font metrics height value for ATSUI, (helps webkit on GTK+ OS X 4119layout nicely). 4120 4121Fix gradients. 4122 4123Fix EXTEND_NONE mode for patterns. 4124 4125Fix cairo_quartz_surface_create to properly clear the new surface 4126in cairo_quartz_surface_create. 4127 4128Fix to correctly handle 0x0 sized surfaces. 4129 4130Optimize drawing of EXTEND_REPEAT patterns for OS X 10.5. 4131 4132Snapshot 1.5.2 (2007-10-30 Carl Worth <cworth@cworth.org>) 4133========================================================== 4134This is the first snapshot in cairo's unstable 1.5 series. It comes 4 4135months after the 1.4.10 release. This snapshot includes significant 4136improvements to PDF and PostScript output, which is one of the things 4137in which we're most interested in getting feedback. There are a couple 4138of minor API additions, and several optimizations, (primarily in the 4139"print/vector" backends). And there are dozens of bug fixes and 4140robustness improvements. 4141 4142New dependency on external pixman library 4143----------------------------------------- 4144A significant change in this snapshot compared to all previous cairo 4145releases is that cairo now depends on an external "pixman" library for 4146its software rendering. Previously this same code was compiled 4147internally as part of cairo, but now the code is separate so that both 4148cairo and the X server can now share common code, (thanks very much to 4149Søren Sandmann for his work on separating pixman and maintaining it). 4150 4151So users will need to acquire and build pixman before being able to 4152build cairo. The current release is 0.9.6 and can be obtained from 4153here: 4154 4155 https://cairographics.org/releases/pixman-0.9.6.tar.gz 4156 4157 which can be verified with: 4158 4159 https://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1 4160 66f01a682c64403a3d7a855ba5aa609ed93bcb9e pixman-0.9.6.tar.gz 4161 4162 https://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1.asc 4163 (signed by Carl Worth) 4164 4165Major PDF/PostScript improvements 4166--------------------------------- 4167Adrian Johnson has done some long-awaited work to make cairo's PDF and 4168PostScript output more interesting than ever before. First, many 4169operations that previously triggered image fallbacks will now be 4170rendered as native vectors. These operations include: 4171 4172 PDF: cairo_push_group, cairo_surface_create_similar, 4173 cairo_mask, A8/A1 surface sources, repeating/reflecting linear 4174 gradients. 4175 4176 PostScript: cairo_push_group, cairo_surface_create_similar, 4177 gradients, bilevel alpha masks, (for example, all values either 0 or 4178 255 for an A8 mask). 4179 4180Not only that, but when an image fallback is required, it will now be 4181limited to only the necessary region. For example, a tiny translucent 4182image overlaying a small portion of text would previously caused an 4183entire PostScript page to be rendered as a giant image. Now, the 4184majority of that page will be nice text, and there will only be a tiny 4185image in the output. 4186 4187Additionally, the PostScript output now carefully encodes text so that 4188if it is subsequently converted to PDF, the text will be 4189selectable. 4190 4191This is very exciting progress, and we're hoping to hear from users 4192during the 1.5 series about how things have improved, (for example, 4193inkscape users doing cairo-based PDF export: please let us know how 4194things look). And feel free to pass your thanks along to Adrian for his excellent work. 4195 4196NOTE: This much improved PDF output makes more sophisticated use of 4197functionality in the PDF specification. This means that cairo's output 4198will sometimes expose bugs in some free software PDF viewers, (evince, 4199poppler, and xpdf, for example), that are not yet ready for such PDF 4200files. We're working with the poppler maintainers to get these bugs 4201fixed as quickly as possible. In the meantime, please double-check 4202with other PDF viewers if cairo-generated PDF files are not being 4203rendered correctly. It may be due to a bug in the viewer rather than 4204in the PDF file that cairo has created. 4205 4206Robustness improvements 4207----------------------- 4208Chris Wilson has made the largest contribution by far to cairo 1.5.2, 4209(in number of commits). His more than 150 commits include a huge 4210number of fixes to increase cairo's robustness. These fixes make cairo 4211more robust against invalid and degenerate input, (NaN, empty path, 4212etc.), against size-0 malloc calls, against memory leaks on 4213error-recovery paths, and against other failures during error 4214handling. He also implemented atomic operations to cairo, and used 4215them to fix cairo's previously non-thread-safe reference counting, 4216again improving robustness. 4217 4218Chris has put a tremendous amount of time and effort into writing 4219analysis tools for this work, and in running those tools and fixing 4220the problems they report. We're very grateful for this work, and hope 4221that all cairo users appreciate the more robust implementation that 4222results from it. 4223 4224This work is largely thankless, so it might make sense to notice 4225sometime that cairo has been running quite smoothly for you, and when 4226you do, send a quick "thank you" off to Chris Wilson, since it 4227is all definitely running smoother thanks to his work. 4228 4229New API 4230------- 4231There are no major additions to cairo's core API. The only new, 4232generic functions are: 4233 4234 void 4235 cairo_surface_copy_page (cairo_surface_t *surface); 4236 4237 void 4238 cairo_surface_show_page (cairo_surface_t *surface); 4239 4240which can now be used much more conveniently than the existing 4241cairo_copy_page and cairo_show_page functions in some 4242situations. These functions act identically, but require only a 4243cairo_surface_t* and not a cairo_t*. 4244 4245All other API additions are specific to particular backends. 4246 4247New cairo-win32 API (new font face function and "win32 printing" surface) 4248------------------------------------------------------------------------- 4249There is a new function for creating a win32 font face for both a 4250logfontw and an hfont together. This complements the existing 4251functions for creating a font face from one or the other: 4252 4253 cairo_font_face_t * 4254 cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont, 4255 HFONT font); 4256 4257There is also a new "win32 printing" surface: 4258 4259 cairo_surface_t * 4260 cairo_win32_printing_surface_create (HDC hdc); 4261 4262This interface looks identical to the original 4263cairo_win32_surface_create, (both accept and HDC), but the behavior of 4264this new surface is very different. It should only be called with a 4265printing DC, and will result in all drawing commands being stored into 4266a meta-surface and emitted after each page is complete, with analysis 4267to do as minimal image-based fallbacks as necessary. The behavior and 4268implementation shares much with the PDF and PostScript backends. 4269 4270New cairo-ps API (EPS and PostScript level control) 4271--------------------------------------------------- 4272An often requested feature has been the ability to generate 4273Encapsulated PostScript (EPS) with cairo. We have that now with the 4274following very simple API. Just do cairo_ps_surface_create as usual 4275then call this function with a true value: 4276 4277 void 4278 cairo_ps_surface_set_eps (cairo_surface_t *surface, 4279 cairo_bool_t eps); 4280 4281[NOTE: As always with snapshots, it's possible---though not very 4282likely---that the API could still be modified before a final 4283release. For example, this is the first public cairo function that 4284accepts a Boolean parameter. I'm generally opposed to Boolean 4285parameters, but this is probably the one case where I'm willing to 4286accept one, (namely a "set" function that accepts a single Boolean).] 4287 4288Also, it is now possible to control what PostScript level to target, 4289(either level 2 or level 3), with the following new API: 4290 4291 typedef enum _cairo_ps_level { 4292 CAIRO_PS_LEVEL_2, 4293 CAIRO_PS_LEVEL_3 4294 } cairo_ps_level_t; 4295 4296 void 4297 cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, 4298 cairo_ps_level_t level); 4299 4300 void 4301 cairo_ps_get_levels (cairo_ps_level_t const **levels, 4302 int *num_levels); 4303 4304 const char * 4305 cairo_ps_level_to_string (cairo_ps_level_t level); 4306 4307Improvement for cairo-quartz 4308---------------------------- 4309Brian Ewins had contributed several improvements to cairo-quartz. These 4310include an implementation of EXTEND_NONE for linear and radial 4311gradients, (so this extend mode will no longer trigger image fallbacks 4312for these gradients), as well as native surface-mask clipping, (only 4313on OS X 10.4+ where the CGContextClipToMask function is available). 4314 4315He also fixed a semantic mismatch between cairo and quartz for dashing 4316with an odd number of entries in the dash array. 4317 4318We're grateful for Brian since not many quartz-specific improvements 4319to cairo would be happening without him. 4320 4321Optimizations 4322------------- 4323Optimize SVG output for when the same path is both filled and stroked, 4324and avoid unnecessary identity matrix in SVG output. (Emmanuel Pacaud). 4325 4326Optimize PS output to take less space (Ken Herron). 4327 4328Make PS output more compliant with DSC recommendations (avoid initclip 4329and copy_page) (Adrian Johnson). 4330 4331Make PDF output more compact (Adrian Johnson). 4332 4333Release glyph surfaces after uploading them to the X server, (should 4334save some memory for many xlib-using cairo application). (Behdad 4335Esfahbod). 4336 4337Optimize cairo-win32 to use fewer GDI objects (Vladimir Vukicevic). 4338 4339win32-printing: Avoid falling back to images when alpha == 255 4340everywhere. (Adrian Johnson). 4341 4342win32-printing: Avoid falling back for cairo_push_group and 4343cairo_surface_create_similar. (Adrian Johnson) 4344 4345Bug fixes 4346--------- 4347Avoid potential integer overflows when allocating large buffers 4348(Vladimir Vukicevic). 4349 4350Preparations to allow the 16.16 fixed-point format to change to 435124.8 (Vladimir Vukicevic). 4352 4353Fix bugs for unsupported X server visuals (rgb565, rgb555, bgr888, and 4354abgr8888). (Carl Worth and Vladimir Vukicevic) 4355 4356Fix bugs in PDF gradients (Adrian Johnson). 4357 4358Fix cairo-xlib to build without requiring Xrender header 4359files (Behdad Esfahbod). 4360 4361Make cairo more resilient in the case of glyphs not being available in 4362the current font. (Behdad Esfahbod) 4363 4364Prevent crashes when both atsui and ft font backends are compiled in 4365(Brian Ewins). 4366 4367Make font subsetting code more robust against fonts that don't include 4368optional tables (Adrian Johnson). 4369 4370Fix CFF subsetting bug, (which manifested by generating PDF files that 4371Apple's Preview viewer could not read) (Adrian Johnson). 4372 4373Fixed error handling for quartz and ATSUI backends (Brian Ewins). 4374 4375Avoid rounding problems by pre-transforming to avoid integer-only 4376restrictions on transformation in GDI (Adrian Johnson). 4377 4378Fixed an obscure bug (#7245) computing extents for some stroked 4379paths (Carl Worth). 4380 4381Fix crashes due to extreme transformation of the pen, (seems to show 4382up in many .swf files for some reason) (Carl Worth). 4383 4384Release 1.4.10 (2007-06-27 Carl Worth <cworth@cworth.org>) 4385========================================================== 4386This is the fifth update in cairo's stable 1.4 series. It comes 4387roughly three weeks after the 1.4.8 release. The most significant 4388change in this release is a fix to avoid an X error in certain cases, 4389(that were causing OpenOffice.org to crash in Fedora). There is also a 4390semantic change to include child window contents when using an xlib 4391surface as a source, an optimization when drawing many rectangles, and 4392several minor fixes. 4393 4394Eliminate X errors that were killing OO.o (Chris Wilson) 4395-------------------------------------------------------- 4396Cairo is fixed to avoid the X errors propagated when cleaning up 4397Render Pictures after the application had already destroyed the 4398Drawable they reference. (It would be nice if the X server wouldn't 4399complain that some cleanup work is already done, but there you have 4400it.) This fixes the bug causing OpenOffice.org to crash as described 4401here: 4402 4403 XError on right click menus in OOo. 4404 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811 4405 4406Use IncludeInferiors when using xlib surface as a source (Ryan Lortie) 4407---------------------------------------------------------------------- 4408When an xlib surface is used as the source of a draw operation the 4409contents of child windows are now included in the source data. The 4410semantics of drawing to xlib surfaces are unchanged (ie: draws are 4411still clipped by child windows overlapping the destination window). 4412 4413Optimize drawing of many rectangles (Vladimir Vukicevic) 4414-------------------------------------------------------- 4415Avoid O(N*N) loop when filling many axis-aligned rectangles, (either 4416many rectangles as separate sub-paths or due to dashing). 4417 4418Miscellaneous fixes 4419------------------- 4420Fix cairo-perf on Solaris by linking to librt. (Behdad Esfahbod) 4421 4422Fix make check for systems that require executable files to have a 4423particular extension. (Behdad Esfahbod) 4424 4425Eliminate some warnings in cairo-quartz. (Brian Ewins) 4426 4427Fix build-breaking typo for cairo-directfb. (Chris Wilson) 4428 4429Release 1.4.8 (2007-06-07 Carl Worth <cworth@cworth.org>) 4430========================================================= 4431This is the fourth update in cairo's stable 1.4 series. It comes just 4432over five weeks after the 1.4.6 release. This release includes a 4433thread-safe surface-cache for solid patterns which significantly 4434improves text rendering with the xlib backend. Also, dozens of error 4435paths in cairo have been fixed thanks to extensive fault-injection 4436testing by Chris Wilson. 4437 4438Surface cache for solid patterns 4439-------------------------------- 4440Originally written by Jorn Baayen, the introduction of a small cache 4441for surfaces created for solid patterns improves performance 4442dramatically. For example, this reduces the volume of X requests 4443during text rendering to the same level as Xft. 4444 4445This cache first made its appearance in a 1.3.x snapshot, but was 4446removed before appearing in any previous major release due to 4447complications with multi-threaded programs. For example, programs like 4448evince that would carefully restrict usage of cairo-xlib to a single 4449thread were unpleasantly surprised to find that using cairo-image in a 4450separate thread could trigger X requests. 4451 4452Behdad Esfahbod designed a fix which was implemented by Chris 4453Wilson. Now, the necessary X requests are queued up until the next 4454time the application directly operates on an xlib surface. 4455 4456Improved error handling paths 4457------------------------------ 4458Chris Wilson continued the excellent work he started in cairo 1.4.4 to 4459make cairo much more robust against out-of-memory and other errors. He 4460applied his memory allocation fault injection cairo's main test suite, 4461(previously he had applied it to cairo's performance suite). 4462 4463Chris's testing found dozens of bugs which he fixed. Many of these 4464bugs had perhaps never been hit by any users. But at least one was 4465hit by the gnome-about program which resulted in dozens of duplicated 4466bug reports against that program: 4467 4468 https://bugzilla.gnome.org/show_bug.cgi?id=431990 4469 4470We were very pleasantly surprised to see this bug get fixed as a 4471side-effect of Chris's work. Well done, Chris! 4472 4473Other fixes 4474----------- 4475Cleanup of mutex declarations (Behdad Esfahbod) 4476 4477Remove unnecessary clip region from SVG output (Emmanuel Pacaud) 4478 4479Remove Xsun from the buggy_repeat blacklist (Elaine Xiong) 4480 4481ATSUI: Fix glyph measurement: faster and more correct (Brian Ewins) 4482 4483Quartz: fixed 'extend' behaviour for patterns, improved pattern performance, 4484and a few smaller correctness fixes. (Brian Ewins, Vladimir Vukicevic) 4485 4486Release 1.4.6 (2007-05-01 Carl Worth <cworth@cworth.org>) 4487========================================================= 4488This is the third update in cairo's stable 1.4 series. It comes a 4489little less than three weeks since the 1.4.4 release. This release 4490fixes the broken mutex initialization that made cairo 1.4.4 unusable 4491on win32, OS/2, and BeOS systems. This release also adds significant 4492improvements to cairo's PDF backend, (native gradients!), and a couple 4493of performance optimizations, (one of which is very significant for 4494users of the xlib backend). See below for more details. 4495 4496Repaired mutex initialization 4497----------------------------- 4498We apologize that cairo 1.4.4 did little more than crash on many 4499platforms which are less-frequently used by the most regular cairo 4500maintainers, (win32, OS/2, and BeOS). The mutex initialization 4501problems that caused those crashes should be fixed now. And to avoid 4502similar problems in the future, we've now started posting pre-release 4503snapshots to get better testing, (subscribe to cairo@cairographics.org 4504if you're interested in getting notified of those and testing them). 4505 4506PDF Improvements 4507---------------- 4508Thanks to Adrian Johnson, (cairo PDF hacker extraordinaire), we have 4509several improvements to cairo's PDF backend to announce: 4510 4511Native gradients: 4512 4513 As of cairo 1.4.6, cairo will now generate native PDF gradients in 4514 many cases, (previously, the presence of a gradient on any page 4515 would force rasterized output for that page). Currently, only 4516 gradients with extend types of PAD (the default) or NONE will 4517 generate native PDF gradients---others will still trigger 4518 rasterization, (but look for support for other extend modes in a 4519 future release). Many thanks to Miklós Erdélyi as well, who did the 4520 initial work for this support. 4521 4522Better compatibility with PDF viewers: 4523 4524 The PDF output from cairo should now be displayed correctly by a 4525 wider range of PDF viewers. Adrian tested cairo's PDF output against 4526 many PDF viewers, identified a common bug in many of those viewers 4527 (ignoring the CTM matrix in some cases), and modified cairo's output 4528 to avoid triggering that bugs (pre-transforming coordinates and 4529 using an identity matrix). 4530 4531Better OpenType/CFF subsetting: 4532 4533 Cairo will now embed CFF and TrueType fonts as CID fonts. 4534 4535Performance optimizations 4536------------------------- 4537Faster cairo_paint_with_alpha: 4538 4539 The cairo_paint_with_alpha call is used to apply a uniform alpha 4540 mask to a pattern. For example, it can be used to gradually fade an 4541 image out or in. Jeff Muizelaar fixed some missing/broken 4542 optimizations within the implementation of this function resulting 4543 in cairo_paint_with_alpha being up to 4 times faster when using 4544 cairo's image backend. 4545 4546Optimize rendering of "off-screen" geometry: 4547 4548 Something that applications often do is to ask cairo to render 4549 things that are either partially or wholly outside the current clip 4550 region. Since 1.4.0 the image backend has been fixed to not waste 4551 too much time in this case. But other backends have still been 4552 suffering. 4553 4554 In particular, the xlib backend has often performed quite badly in 4555 this situation. This is due to a bug in the implementation of 4556 trapezoid rasterization in many X servers. 4557 4558 Now, in cairo 1.4.6 there is a higher-level fix for this 4559 situation. Cairo now eliminates or clips trapezoids that are wholly 4560 or partially outside the clip region before handing the trapezoids 4561 to the backend. This means that the X server's performance bug is 4562 avoided in almost all cases. 4563 4564 The net result is that doing an extreme zoom-in of vector-based 4565 objects drawn with cairo might have previously brought the X server 4566 to its knees as it allocated buffers large enough to fit all of the 4567 geometry, (whether visible or not). But now the memory usage should 4568 be bounded and performance should be dramatically better. 4569 4570Miscellaneous 4571------------- 4572Behdad contributed an impressively long series of changes that 4573organizes cairo's internals in several ways that will be very 4574beneficial to cairo developers. Thanks, Behdad! 4575 4576Behdad has also provided a utility for generating malloc statistics, 4577(which was used during the great malloc purges of 1.4.2 and 45781.4.4). This utility isn't specific to cairo so may be of benefit to 4579others. It is found in cairo/util/malloc-stats.c and here are Behdad's 4580notes on using it: 4581 4582 To build, do: 4583 4584 make malloc-stats.so 4585 4586 inside util/, and to use, run: 4587 4588 LD_PRELOAD=malloc-stats.so some-program 4589 4590 For binaries managed by libtool, eg, cairo-perf, do: 4591 4592 ../libtool --mode=execute /bin/true ./cairo-perf 4593 LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf 4594 4595Finally, the cairo-perf-diff-files utility was enhanced to allow for 4596generating performance reports from several runs of the same backend 4597while some system variables were changed. For example, this is now 4598being used to allow cairo-perf to measure the performance of various 4599different acceleration architectures and configuration options of the 4600X.org X server. 4601 4602Release 1.4.4 (2007-04-13 Carl Worth <cworth@cworth.org>) 4603========================================================= 4604This is the second update release in cairo's stable 1.4 series. It 4605comes just less than a month after 1.4.2. The changes since 1.4.2 4606consist primarily of bug fixes, but also include at least one 4607optimization. See below for details. 4608 4609Of all the work that went into the 1.4.4 release 4610 4611There have been lots of individuals doing lots of great work on cairo, 4612but two efforts during the 1.4.4 series deserve particular mention: 4613 4614Internal cleanup of error handling, (Chris Wilson) 4615-------------------------------------------------- 4616Chris contributed a tremendous series of patches (74 patches!) to 4617improve cairo's handling of out-of-memory and other errors. He began 4618by adding gcc's warn_unused_attribute to as many functions as 4619possible, and then launched into the ambitious efforts of adding 4620correct code to quiet the dozens of resulting warnings. 4621 4622Chris also wrote a custom valgrind skin to systematically inject 4623malloc failures into cairo, and did all the work necessary to verify 4624that cairo's performance test suite runs to completion without 4625crashing. 4626 4627The end result is a much more robust implementation. Previously, many 4628error conditions would have gone unnoticed and would have led to 4629assertion failures, segmentation faults, or other harder-to-diagnose 4630problems. Now, more than ever, cairo should cleanly let the user know 4631of problems through cairo_status and other similar status 4632functions. Well done, Chris! 4633 4634More malloc reduction, (Mathias Hasselmann) 4635------------------------------------------- 4636After 1.4.0, Behdad launched an effort to chase down excessive calls 4637to malloc within the implementation of cairo. He fixed a lot of 4638malloc-happy objects for 1.4.2, but one of the worst offenders, 4639(pixman regions), was left around. Mathias contributed an excellent 4640series of 15 patches to finish off this effort. 4641 4642The end result is a cairo that calls malloc much less often than it 4643did before. Compared to 1.4.2, 55% of the calls to malloc have been 4644eliminate, (and 60% have been eliminated compared to 1.4.0). Well 4645done, Mathias! 4646 4647Other improvements since 1.4.2 4648------------------------------ 4649• Centralize mutex declarations (will reduce future build breaks), 4650 (Mathias Hasselmann) 4651 4652• Reduce malloc by caching recently freed pattern objects (Chris 4653 Wilson) 4654 4655• Fix some broken composite operations (David Reveman) 4656 https://bugs.freedesktop.org/show_bug.cgi?id=5777 4657 4658Backend-specific fixes 4659---------------------- 4660PDF: 4661 • Use TJ operator for more compact representation of glyphs (Adrian 4662 Johnson) 4663 4664 • Fix glyph positioning bug when glyphs are not horizontal 4665 https://lists.freedesktop.org/archives/cairo/2007-April/010337.html 4666 4667win32: 4668 • Fix crash when rendering with bitmap fonts (Carl Worth) 4669 https://bugzilla.mozilla.org/show_bug.cgi?id=376498 4670 4671xlib: 4672 • Turn metrics-hinting on by default (Behdad Esfahbod) 4673 4674 • Fix edge-effect problem with transformed images drawn to xlib 4675 (Behdad Esfahbod) 4676 https://bugs.freedesktop.org/show_bug.cgi?id=10508 4677 4678 • Avoid dereferencing a NULL screen. (Chris Wilson) 4679 https://bugs.freedesktop.org/show_bug.cgi?id=10517 4680 4681Quartz/ATSUI: 4682 • Fix scaling of glyph surfaces 4683 (Brian Ewins) 4684 https://bugs.freedesktop.org/show_bug.cgi?id=9568 4685 4686 • Fix compilation failure when both xlib and quartz enabled 4687 (Brian Ewins) 4688 4689 • Fix rounding bug leading to incorrectly positioned glyphs 4690 (Robert O'Callahan) 4691 https://bugs.freedesktop.org/show_bug.cgi?id=10531 4692 4693Release 1.4.2 (2007-03-19 Carl Worth <cworth@cworth.org>) 4694========================================================= 4695This is the first update release in cairo's stable 1.4 series. It 4696comes just less than 2 weeks after 1.4.0. We hadn't anticipated an 4697update this early, but we've managed to collect some important fixes 4698that we wanted to get out to cairo users as soon as possible, (6 fixes 4699for crashes, 1 case where graphical elements would not be drawn at 4700all, a handful of backend-specific bugs, and several important build 4701fixes). 4702 4703There's almost nothing but bug fixes in this release, (see below one 4704optimization that Behdad did sneak in), so we recommend that everyone 4705upgrade to this release when possible. 4706 4707Thanks to the many people that worked to fix these bugs, and those 4708that did the work to report them and to test the fixes, (wherever 4709possible both names are credited below). 4710 4711Critical fixes 4712-------------- 4713• Fix a crash due to a LOCK vs. UNLOCK typo (M. Drochner fixing Carl 4714 Worth's embarrassing typo). 4715 4716 https://bugs.freedesktop.org/show_bug.cgi?id=10235 4717 4718• Fix potential buffer overflow, which on some systems with a checking 4719 variant of snprintf would lead to a crash (Adrian Johnson, Stanislav 4720 Brabec, and sangu). 4721 4722 https://bugs.freedesktop.org/show_bug.cgi?id=10267 4723 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232576 4724 4725• Fix a crash in cairo_stroke_extents or cairo_in_stroke when line 4726 width is 0.0. (Carl Worth and Sebastien Bacher) 4727 4728 https://bugs.freedesktop.org/show_bug.cgi?id=10231 4729 4730• Fix a crash on certain combinations of X server/video drivers (Carl 4731 Worth and Tomas Carnecky). 4732 4733 https://bugs.freedesktop.org/show_bug.cgi?id=10250 4734 4735• Fix a crash due to mishandling of invalid user input (Carl Worth and 4736 Alexander Darovsky). 4737 4738 https://bugs.freedesktop.org/show_bug.cgi?id=9844 4739 4740• xlib: Cleanup server-side glyph caches on XCloseDisplay. This 4741 eliminated a crash detected by the perf suite, (and that 4742 applications could have run into as well). (Chris Wilson) 4743 4744Other bug fixes 4745--------------- 4746• Fix for some geometry which simply disappeared under some 4747 transformations---a stroked line with an extreme skew in X, for 4748 example (Carl Worth and Jonathan Watt). 4749 4750 https://bugzilla.mozilla.org/show_bug.cgi?id=373632 4751 4752• SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 > r1 4753 (Emmanuel Pacaud). 4754 4755• PDF: Set page group color space to DeviceRGB. 4756 4757 This fixes incorrect (muddy) transparent colors when rendering cairo 4758 PDF output in some viewers. (Adrian Johnson, Adam Goode, and 4759 MenTaLguY). 4760 4761 https://lists.freedesktop.org/archives/cairo/2006-November/008551.html 4762 4763• win32: Return correct metrics when hinting is off, and fix font 4764 descent computation (Behdad Esfahbod). 4765 4766• quartz: Fix glyph interfaces to correctly return user-space rather 4767 than device-space coordinates (Brian Ewins). 4768 4769 https://bugs.freedesktop.org/show_bug.cgi?id=9568 4770 4771• xcb: Fix parameter-order confusion with xcb_create_pixmap, which now 4772 makes all tests that pass with xlib now pass with xcb (Carl Worth, 4773 Jamey Sharp). 4774 4775• Fix some memory leaks in the perf suite (Chris Wilson). 4776 4777• Fix perf suite to consider changes in pixman/src (Mathias 4778 Hasselmann). 4779 4780Build fixes 4781----------- 4782• Don't include pre-generated cairo-features.h file. This was causing 4783 build failures when building with the directfb backend enabled 4784 (Behdad Esfahbod). 4785 4786 https://bugs.freedesktop.org/show_bug.cgi?id=10189 4787 4788• Eliminate use of maintainer mode from cairo's automake/configure 4789 script. This means that updates to files such as Makefile.am will 4790 take effect, (by rerunning automake and friends as necessary) when 4791 invoking make rather than being silently ignored. (Behdad Esfahbod) 4792 4793• Don't compile cairo-deflate-stream.c, which depends on zlib, unless 4794 building the pdf backend which requires it. (Carl Worth, Tor 4795 Lillqvist) 4796 4797 https://bugs.freedesktop.org/show_bug.cgi?id=10202 4798 4799• Don't make the ps backend link against zlib anymore, since it 4800 doesn't require it (Carl Worth). 4801 4802• Use "find !" rather than "find -not" for better portability (Thomas 4803 Klausner). 4804 4805 https://bugs.freedesktop.org/show_bug.cgi?id=10226 4806 4807• Don't use unsupported visibility attribute "hidden" on Solaris 4808 (Gilles Dauphin, Thomas Klausner). 4809 4810 https://bugs.freedesktop.org/show_bug.cgi?id=10227 4811 4812Optimization 4813------------ 4814• It was Behdad that suggested we focus strictly on bug fixes now that 4815 we shipped so many performance improvements in 1.4.0, but it was 4816 also Behdad that got distracted by the chance to remove a lot of 4817 mallocs from cairo. Paths, gstates, trapezoids, splines, polygons, 4818 and gradient color stops will now use small, stack-allocated buffers 4819 in the most common cases rather than calling malloc as 4820 often. (Behdad Esfahbod). And look for more from Mathias Hasselmann 4821 soon. 4822 4823Release 1.4.0 (2007-03-06 Carl Worth <cworth@cworth.org>) 4824========================================================= 4825The many people[*] who have been working hard on cairo are very 4826pleased to announce the long-awaited release of cairo 1.4. This 4827release comes 4 months after the last stable update release (1.2.6) 4828and 9 months since the initial release of 1.2.0. 4829 4830The release notes below are intended to capture the highlights of the 4831changes that have occurred from the 1.2 series to the new 1.4.0 4832release. 4833 4834Performance improvements 4835------------------------ 4836Within the cairo project, the last 6 months or so has seen an intense 4837effort focusing on the performance of cairo itself. That effort has 4838paid off considerably, as can be seen in the following highlights of 4839some of the performance differences from cairo 1.2.6 to cairo 1.4.0. 4840 4841(Note: The performance results reported here were measured on an x86 4842laptop. Many of the improvements in 1.4---particular those involving 4843text rendering---are even more dramatic on embedded platforms without 4844hardware floating-point units. Such devices played an important part 4845of many of the optimizations that found their way into cairo over the 4846last few months.) 4847 4848• Dramatic improvement when drawing objects that are mostly off-screen 4849 with the image backend (with the xlib backend this case is still 4850 slow due to an X server bug): 4851 4852 image-rgba long-lines-uncropped-100 479.64 -> 4.98: 96.24x speedup 4853 ███████████████████████████████████████████████▋ 4854 4855• Dramatic improvement when copying a small fraction of an image 4856 surface to an xlib surface: 4857 4858 xlib-rgba subimage_copy-512 3.93 -> 0.07: 54.52x speedup 4859 ██████████████████████████▊ 4860 4861• Dramatic improvement to tessellation speed for complex objects: 4862 4863 image-rgb tessellate-256-100 874.16 -> 34.79: 25.13x speedup 4864 ████████████▏ 4865 xlib-rgba zrusin_another_fill-415 148.40 -> 13.85: 10.72x speedup 4866 ████▉ 4867 xlib-rgb world_map-800 680.20 -> 345.54: 1.97x speedup 4868 ▌ 4869 4870• Dramatic improvement to the speed of stroking rectilinear shapes, 4871 (such as the outline of a rectangle or "box"): 4872 4873 image-rgb box-outline-stroke-100 0.18 -> 0.01: 24.22x speedup 4874 ███████████▋ 4875 xlib-rgb box-outline-stroke-100 0.46 -> 0.06: 8.05x speedup 4876 ███▌ 4877 4878 4879• Dramatic improvements to text rendering speeds: 4880 4881 xlib-rgba text_image_rgba_over-256 63.12 -> 9.61: 6.57x speedup 4882 ██▊ 4883 4884• 3x improvements to floating-point to fixed-point conversion speeds: 4885 4886 image-rgba pattern_create_radial-16 9.29 -> 3.44: 2.70x speedup 4887 ▉ 4888 4889• 2x improvements to linear gradient computation: 4890 4891 image-rgb paint_linear_rgb_source-512 26.22 -> 11.61: 2.26x speedup 4892 ▋ 4893 4894• 2x improvement to a case common in PDF rendering: 4895 4896 image-rgb unaligned_clip-100 0.10 -> 0.06: 1.81x speedup 4897 ▍ 4898 4899• 1.3x improvement to rectangle filling speed (note: this improvement 4900 is new since 1.3.16---previously this test case was a 1.3x slowdown 4901 compared to 1.2.6): 4902 4903 image-rgba rectangles-512 6.19 -> 4.37: 1.42x speedup 4904 ▎ 4905 xlib-rgba rectangles-512 7.48 -> 5.58: 1.34x speedup 4906 ▏ 4907 4908NOTE: In spite of our best efforts, there are some measurable 4909performance regressions in 1.4 compared to 1.2. It appears that the 4910primary problem is the increased overhead of the new tessellator when 4911drawing many, very simple shapes. The following test cases capture 4912some of that slowdown: 4913 4914 image-rgba mosaic_tessellate_lines-800 11.03 -> 14.29: 1.30x slowdown 4915 ▏ 4916 image-rgba box-outline-fill-100 0.01 -> 0.01: 1.26x slowdown 4917 ▏ 4918 image-rgba fill_solid_rgb_over-64 0.20 -> 0.22: 1.12x slowdown 4919 4920 image-rgba fill_image_rgba_over-64 0.23 -> 0.25: 1.10x slowdown 4921 4922 xlib-rgb paint_image_rgba_source-256 3.24 -> 3.47: 1.07x slowdown 4923 4924We did put some special effort into eliminating this slowdown for the 4925very common case of drawing axis-aligned rectangles with an identity 4926matrix (see the box-outline-stroke and rectangles speedup numbers 4927above). Eliminating the rest of this slowdown will be a worthwhile 4928project going forward. 4929 4930Also note that the "box-outline-fill" case is a slowdown while 4931"box-outline-stroke" is a (huge) speedup. These two test cases 4932resulted from the fact that some GTK+ theme authors were filling 4933between two rectangles to avoid slow performance from the more natural 4934means of achieving the same shape by stroking a single rectangle. With 49351.4 that workaround should definitely be eliminated as it will now 4936cause things to perform more slowly. 4937 4938Greatly improved PDF output 4939--------------------------- 4940We are very happy to be able to announce that cairo-generated PDF 4941output will now have text that can be selected, cut-and-pasted, and 4942searched with most capable PDF viewer applications. This is something 4943that was not ever possible with cairo 1.2. 4944 4945Also, the PDF output now has much more compact encoding of text than 4946before. Cairo is now much more careful to not embed multiple copies of 4947the same font at different sizes. It also compresses text and font 4948streams within the PDF output. 4949 4950API additions 4951------------- 4952There are several new functions available in 1.4 that were not 4953available in 1.2. Curiously, almost all of the new functions simply 4954allow the user to query state that has been set in cairo (many new 4955"get" functions) rather than providing any fundamentally new 4956operations. The new functionality is: 4957 4958• Getting information about the current clip region 4959 4960 cairo_clip_extents 4961 cairo_copy_clip_rectangle_list 4962 cairo_rectangle_list_destroy 4963 4964• Getting information about the current dash setting 4965 4966 cairo_get_dash_count 4967 cairo_get_dash 4968 4969• Getting information from a pattern 4970 4971 cairo_pattern_get_rgba 4972 cairo_pattern_get_surface 4973 cairo_pattern_get_color_stop_rgba 4974 cairo_pattern_get_color_stop_count 4975 cairo_pattern_get_linear_points 4976 cairo_pattern_get_radial_circles 4977 4978• Getting the current scaled font 4979 4980 cairo_get_scaled_font 4981 4982• Getting reference counts 4983 4984 cairo_get_reference_count 4985 cairo_surface_get_reference_count 4986 cairo_pattern_get_reference_count 4987 cairo_font_face_get_reference_count 4988 cairo_scaled_font_get_reference_count 4989 4990• Setting/getting user data on objects 4991 4992 cairo_set_user_data 4993 cairo_get_user_data 4994 cairo_pattern_set_user_data 4995 cairo_pattern_get_user_data 4996 cairo_scaled_font_set_user_data 4997 cairo_scaled_font_get_user_data 4998 4999• New cairo-win32 functions: 5000 5001 cairo_win32_surface_create_with_ddb 5002 cairo_win32_surface_get_image 5003 cairo_win32_scaled_font_get_logical_to_device 5004 cairo_win32_scaled_font_get_device_to_logical 5005 5006API deprecation 5007--------------- 5008The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never 5009worked as a format value for cairo_image_surface_create, and it wasn't 5010necessary for supporting 16-bit 565 X server visuals. 5011 5012A sampling of bug fixes in cairo 1.4 5013------------------------------------ 5014 • Fixed radial gradients 5015 • Fixed dashing (degenerate and "leaky" cases) 5016 • Fixed transformed images in PDF/PS output (eliminate bogus repeating) 5017 • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD 5018 • cairo_show_page no longer needed for single-page output 5019 • SVG: Fix bug preventing text from appearing in many viewers 5020 • cairo-ft: Return correct metrics when hinting is off 5021 • Eliminate crash in cairo_create_similar if nil surface is returned 5022 • Eliminate crash after INVALID_RESTORE error 5023 • Fix many bugs related to multi-threaded use and locking 5024 • Fix for glyph spacing 32 times larger than desired (cairo-win32) 5025 • Fixed several problems in cairo-atsui (assertion failures) 5026 • Fix PDF output to avoid problems when printing from Acrobat Reader 5027 • Fix segfault on Mac OS X (measuring a zero-length string) 5028 • Fix text extents to not include the size of non-inked characters 5029 • Fix for glyph cache race condition in glitz backend (Jinghua Luo) 5030 • Fix make check to work on OPD platforms (IA64 or PPC64) 5031 • Fix compilation problems of cairo "wideint" code on some platforms 5032 • Many, many others... 5033 5034Experimental backends (quartz, XCB, OS/2, BeOS, directfb) 5035--------------------------------------------------------- 5036None of cairo's experimental backends are graduating to "supported" 5037status with 1.4.0, but two of them in particular (quartz and xcb), are 5038very close. 5039 5040The quartz baceknd has been entirely rewritten and is now much more 5041efficient. The XCB backend has been updated to track the latest XCB 5042API (which recently had a 1.0 release). 5043 5044We hope to see these backends become supported in a future release, 5045(once they are passing all the tests in cairo's test suite). 5046 5047The experimental OS/2 backend is new in cairo 1.4 compared to cairo 50481.2. 5049 5050Documentation improvements 5051-------------------------- 5052We have added documentation for several functions and types that 5053were previously undocumented, and improved documentation on other 5054ones. As of this release, there remain only two undocumented 5055symbols: cairo_filter_t and cairo_operator_t. 5056 5057[*]Thanks to everyone 5058--------------------- 5059I've accounted for 41 distinct people with attributed code added to 5060cairo between 1.2.6 and 1.4.0, (their names are below). That's an 5061impressive number, but there are certainly dozens more that 5062contributed with testing, suggestions, clarifying questions, and 5063encouragement. I'm grateful for the friendships that have developed as 5064we have worked on cairo together. Thanks to everyone for making this 5065all so much fun! 5066 5067Adrian Johnson, Alfred Peng, Alp Toker, Behdad Esfahbod, 5068Benjamin Otte, Brian Ewins, Carl Worth, Christian Biesinger, 5069Christopher (Monty) Montgomery, Daniel Amelang, Dan Williams, 5070Dave Yeo, David Turner, Emmanuel Pacaud, Eugeniy Meshcheryakov, 5071Frederic Crozat, Hans Breuer, Ian Osgood, Jamey Sharp, Jeff Muizelaar, 5072Jeff Smith, Jinghua Luo, Jonathan Watt, Joonas Pihlaja, Jorn Baayen, 5073Kalle Vahlman, Kjartan Maraas, Kristian Høgsberg, M Joonas Pihlaja, 5074Mathias Hasselmann, Mathieu Lacage, Michael Emmel, Nicholas Miell, 5075Pavel Roskin, Peter Weilbacher, Robert O'Callahan, 5076Soren Sandmann Pedersen, Stuart Parmenter, T Rowley, 5077Vladimir Vukicevic 5078 5079Snapshot 1.3.16 (2007-03-02 Carl Worth <cworth@cworth.org>) 5080=========================================================== 5081New API functions 5082----------------- 5083A few new public functions have been added to the cairo API since the 50841.3.14 snapshot. These include a function to query the current scaled 5085font: 5086 5087 cairo_get_scaled_font 5088 5089New functions to query the reference count of all cairo objects: 5090 5091 cairo_get_reference_count 5092 5093 cairo_surface_get_reference_count 5094 cairo_pattern_get_reference_count 5095 5096 cairo_font_face_get_reference_count 5097 cairo_scaled_font_get_reference_count 5098 5099And new functions to allow the use of user_data with any cairo object, 5100(previously these were only available on cairo_surface_t and 5101cairo_font_face_t objects): 5102 5103 cairo_set_user_data 5104 cairo_get_user_data 5105 5106 cairo_pattern_set_user_data 5107 cairo_pattern_get_user_data 5108 5109 cairo_scaled_font_set_user_data 5110 cairo_scaled_font_get_user_data 5111 5112Usability improvement for PDF/PS/SVG generation 5113----------------------------------------------- 5114In previous versions of cairo, generating single-page output with the 5115cairo-pdf, cairo-ps, or cairo-svg backends required a final call to 5116cairo_show_page. This was often quite confusing as people would port 5117functional code from a non-paginated backend and be totally mystified 5118as to why the output was blank until they learned to add this call. 5119 5120Now that call to cairo_show_page is optional, (it will be generated 5121implicitly if the user does not call it). So cairo_show_page is only 5122needed to explicitly separate multiple pages. 5123 5124Greatly improved PDF output 5125--------------------------- 5126We are very happy to be able to announce that cairo-generated PDF 5127output will now have text that can be selected, cut-and-paste, and 5128searched with most capable PDF viewer applications. This is something 5129that was not ever possible with cairo 1.2. 5130 5131Also, the PDF output now has much more compact encoding of text than 5132before. Cairo is now much more careful to not embed multiple copies of 5133the same font at different sizes. It also compresses text and font 5134streams within the PDF output. 5135 5136Major bug fixes 5137--------------- 5138 • Fixed radial gradients 5139 5140 The rendering of radial gradients has been greatly improved. In 5141 the cairo 1.2 series, there was a serious regression affecting 5142 radial gradients---results would be very incorrect unless one of 5143 the gradient circles had a radius of 0.0 and a center point within 5144 the other circle. These bugs have now been fixed. 5145 5146 • Fixed dashing 5147 5148 Several fixes have been made to the implementation of dashed 5149 stroking. Previously, some dashed, stroked rectangles would 5150 mis-render and fill half of the rectangle with a large triangular 5151 shape. This bug has now been fixed. 5152 5153 • Fixed transformed images in PDF/PS output 5154 5155 In previous versions of cairo, painting with an image-based source 5156 surface pattern to the PDF or PS backends would cause many kinds 5157 of incorrect results. One of the most common problems was that an 5158 image would be repeated many times even when the user had 5159 explicitly requested no repetition with CAIRO_EXTEND_NONE. These 5160 bugs have now been fixed. 5161 5162 • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD 5163 5164 In the 1.2 version of cairo any use of CAIRO_EXTEND_REFLECT or 5165 CAIRO_EXTEND_PAD with a surface-based pattern resulted in an 5166 error, (cairo would stop rendering). This bug has now been 5167 fixed. 5168 5169 Now, CAIRO_EXTEND_REFLECT should work properly with surface 5170 patterns. 5171 5172 CAIRO_EXTEND_PAD is still not working correctly, but it will now 5173 simply behave as CAIRO_EXTEND_NONE rather than triggering the 5174 error. 5175 5176New rewrite of quartz backend (still experimental) 5177-------------------------------------------------- 5178Cairo's quartz backend has been entirely rewritten and is now much 5179more efficient. This backend is still marked as experimental, not 5180supported, but it is now much closer to becoming an officially 5181supported backend. (For people that used the experimental nquartz 5182backend in previous snapshots, that implementation has now been 5183renamed from "nquartz" to "quartz" and has replaced the old quartz 5184backend.) 5185 5186Documentation improvements 5187-------------------------- 5188We have added documentation for several functions and types that 5189were previously undocumented, and improved documentation on other 5190ones. As of this release, there remain only two undocumented 5191symbols: cairo_filter_t and cairo_operator_t. 5192 5193Other bug fixes 5194--------------- 5195 • cairo-svg: Fix bug that was preventing text from appearing in many 5196 viewers 5197 5198 • cairo-ft: Return correct metrics when hinting is off 5199 5200 • Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or 5201 _cairo_ft_unscaled_font_lock_face 5202 5203 https://bugs.freedesktop.org/show_bug.cgi?id=10035 5204 5205 • cairo crashes in cairo_create_similar if nil surface returned by 5206 other->backend->create_similar 5207 5208 https://bugs.freedesktop.org/show_bug.cgi?id=9844 5209 5210 • evolution crash in _cairo_gstate_backend_to_user() 5211 https://bugs.freedesktop.org/show_bug.cgi?id=9906 5212 5213 • Fix memory leak in rectilinear stroking code 5214 5215Things not in this release 5216-------------------------- 5217 • Solid-surface-pattern cache: This patch had been applied during 5218 the 1.3.x series, but it was reverted due to some inter-thread 5219 problems it caused. The patch is interesting since it made a big 5220 benefit for text rendering performance---so we'll work to bring a 5221 corrected version of this patch back as soon as possible. 5222 5223Snapshot 1.3.14 (2006-02-13 Carl Worth <cworth@cworth.org>) 5224=========================================================== 5225This is the seventh development snapshot in the 1.3 series, (and there 5226likely won't be many more before the 1.4.0 release). It comes just 5227over 3 weeks after the 1.3.12 snapshot. 5228 5229Since we're so close to the 1.4.0 release, there are not a lot of new 5230features nor even a lot of new performance improvements in this 5231snapshot. Instead, there are a great number of bug fixes. Some are 5232long-standing bugs that we're glad to say goodbye to, and several are 5233fixes for regressions that were introduced as part of the optimization 5234efforts during the 1.3.x series. 5235 5236PDF text selection fixed 5237------------------------ 5238The inability to correctly select text in cairo-generated PDF has been 5239a defect ever since the initial support for the PDF backend in the 5240cairo 1.2.0 release. With the 1.3.14 snapshot, in most situations, and 5241with most PDF viewer applications, the PDF generated by cairo will 5242allow text to be correctly selected for copy-and-paste, (as well as 5243searching). 5244 5245We're very excited about this new functionality, (and very grateful to 5246Adrian Johnson, Behdad Esfahbod, and others that have put a lot of 5247work into this lately). Please test this new ability and give feedback 5248on the cairo@cairographics.org list. 5249 5250Many thread-safety issues fixed 5251------------------------------- 5252We've discovered that no release of cairo has ever provided safe text 5253rendering from a multi-threaded application. With the 1.3.14 snapshot 5254a huge number of the bugs in this area have been fixed, and multiple 5255application dvelopers have now reported success at writing 5256multi-threaded applications with cairo. 5257 5258Other fixes 5259----------- 5260Fixed a bug that was causing glyph spacing to be 32 times larger than 5261desired when using cairo-win32. 5262 5263Fixed a regression in the rendering of linear gradients that had been 5264present since the 1.3.8 snapshot. 5265 5266Fixed several problems in cairo-atsui that were leading to assertion 5267failures when rendering text. 5268 5269Fix corrupted results when rendering a transformed source image 5270surface to an xlib surface. This was a regression that had been 5271present since the 1.3.2 snapshot. 5272 5273Fixed PDF output to prevent problems printing from some versions of 5274Acrobat Reader, (a single glyph was being substituted for every 5275glyph). 5276 5277And many other fixes as well, (see the logs for details). 5278 5279Snapshot 1.3.12 (2007-01-20 Carl Worth <cworth@cworth.org>) 5280=========================================================== 5281The relentless march toward the cairo 1.4 release continues, (even if 5282slightly late out of the starting blocks in 2007). This is the sixth 5283development snapshot in the 1.3 series. It comes 4 weeks after the 52841.3.10 snapshot. 5285 5286Performance 5287----------- 5288As usual, this snapshot has some fun performance improvements to show 5289off: 5290 5291image-rgba long-lines-uncropped-100 470.08 -> 4.95: 94.91x speedup 5292███████████████████████████████████████████████ 5293image-rgb long-lines-uncropped-100 461.60 -> 4.96: 93.02x speedup 5294██████████████████████████████████████████████ 5295 5296This 100x improvement, (and yes, that's 100x, not 100%), in the image 5297backend occurs when drawing large shapes where only a fraction of the 5298shape actually appears in the final result, (the rest being outside 5299the bounds of the destination surface). Many applications should see 5300speedups here, and the actual amount of speedup depends on the ratio 5301of non-visible to visible portions of geometry. 5302 5303[Note: There remains a similar performance bug when drawing mostly 5304non-visible objects with the xlib backend. This is due to a similar 5305bug in the X server itself, but we hope a future cairo snapshot will 5306workaround that bug to get a similar speedup with the xlib backend.] 5307 5308image-rgba unaligned_clip-100 0.09 -> 0.06: 1.67x speedup 5309▍ 5310image-rgb unaligned_clip-100 0.09 -> 0.06: 1.66x speedup 5311▍ 5312 5313This speedup is due to further MMX optimization by Soeren Sandmann for 5314a case commonly hit when rendering PDF files, (and thanks to Jeff 5315Muizelaar for writing code to extract the test case for us). 5316 5317There's another MMX optimization in this snapshot (without a fancy 5318speedup chart) by Dan Williams which improves compositing performance 5319specifically for the OLPC machine. 5320 5321Thanks to Adrian Johnson, cairo's PDF output is now much more 5322efficient in the way it encodes text output. By reducing redundant 5323information and adding compression to text output streams, Adrian 5324achieved a ~25x improvement in the efficiency of encoding text in PDF 5325files, (was ~45 bytes per glyph and is now ~1.6 bytes per glyph). 5326 5327Bug fixes 5328--------- 5329In addition to those performance improvements, this snapshot includes 5330several bug fixes: 5331 5332 * A huge number of bug fixes for cairo-atsui text rendering, (for mac 5333 OS X). These bugs affect font selection, glyph positioning, glyph 5334 rendering, etc. One noteworthy bug fixes is that 5335 cairo_select_font_face will no longer arbitrarily select bold nor 5336 italic when not requested, (at least not when using a standard CSS2 5337 font family name such as "serif", "sans-serif", "monospace", etc.). 5338 All these fixes are thanks to Brian Ewins who continues to do a 5339 great job as the new cairo-atsui maintainer. 5340 5341 * Fix PDF output so that images that are scaled down no longer 5342 mysteriously repeat (Carl Worth). 5343 5344 * Fix segfault on Mac OS X dues to attempt to measure extents of a 5345 zero-length string (Behdad Esfahbod). 5346 5347 * Fix text extents to not include the size of initial/trailing 5348 non-inked characters (Behdad Esfahbod). 5349 5350API tweaks 5351---------- 5352Three functions have had API changes to improve consistency. Note that 5353the API functions being changed here are all functions that were 5354introduced as new functions during these 1.3.x snapshots. As always, 5355there will not be any API changes to functions included in a major 5356release (1.2.x, 1.4.x, etc.) of cairo. 5357 5358The changes are as follows: 5359 5360 * Rename of cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list. 5361 5362 * Change cairo_get_dash_count to return an int rather than accepting a 5363 pointer to an int for the return value. 5364 5365 * Change cairo_get_dash to have a void return type rather than 5366 returning cairo_status_t. 5367 5368It's possible there will be one more round of changes to these 5369functions, (and perhaps cairo_get_color_stop as well), as we seek to 5370establish a unifying convention for returning lists of values. 5371 5372Snapshot 1.3.10 (2006-12-23 Carl Worth <cworth@cworth.org>) 5373=========================================================== 5374Santa Claus is coming just a little bit early this year, and he's 5375bringing a shiny new cairo snapshot for all the good little boys and 5376girls to play with. 5377 5378This is the fifth development snapshot in the 1.3 series. It comes 9 5379days after the 1.3.8 snapshot, and still well within our goal of 5380having a new snapshot every week, (though don't expect one next 5381week---we'll all be too stuffed with sugar plums). 5382 5383Speaking of sugar plums, there's a sweet treat waiting in this cairo 5384snapshot---greatly improved performance for stroking rectilinear 5385shapes, like the ever common rectangle: 5386 5387image-rgb box-outline-stroke-100 0.18 -> 0.01: 25.58x speedup 5388████████████████████████▋ 5389image-rgba box-outline-stroke-100 0.18 -> 0.01: 25.57x speedup 5390████████████████████████▋ 5391xlib-rgb box-outline-stroke-100 0.49 -> 0.06: 8.67x speedup 5392███████▋ 5393xlib-rgba box-outline-stroke-100 0.22 -> 0.04: 5.39x speedup 5394████▍ 5395 5396In past releases of cairo, some people had noticed that using 5397cairo_stroke to draw rectilinear shapes could be awfully slow. Many 5398people had worked around this by using cairo_fill with a more complex 5399path and gotten a 5-15x performance benefit from that. 5400 5401If you're one of those people, please rip that workaround out, as now 5402the more natural use of cairo_stroke should be 1.2-2x faster than the 5403unnatural use of cairo_fill. 5404 5405And if you hadn't ever implemented that workaround, then you just 5406might get to see your stroked rectangles now get drawn 5-25x faster. 5407 5408Beyond that performance fix, there are a handful of bug fixes in this 5409snapshot: 5410 5411 * Fix for glyph cache race condition in glitz backend (Jinghua Luo) 5412 5413 * Many fixes for ATSUI text rendering (Brian Ewins) 5414 5415 * Un-break recent optimization-triggered regression in rendering text 5416 with a translation in the font matrix (Behdad Esfahbod) 5417 5418 * Fix make check to work on OPD platforms (IA64 or PPC64) 5419 (Frederic Crozat) 5420 5421 * Fix a couple of character spacing issues on Windows 5422 (Jonathan Watt) 5423 5424Have fun with that, everybody, and we'll be back for more in the new 5425year, (with a plan to add the last of our performance improvements in 5426this round, fix a few bad, lingering bugs, and then finish off a nice, 5427stable 1.4 release before the end of January). 5428 5429-Carl 5430 5431Snapshot 1.3.8 (2006-12-14 Carl Worth <cworth@cworth.org>) 5432========================================================== 5433This is the fourth development snapshot in the 1.3 series. It comes 5434just slightly more than one week after the 1.3.6 snapshot. 5435 5436After the bug fixes in 1.3.6, we're back to our original program of 5437weekly snapshots, each one faster than the one from the week 5438before. Cairo 1.3.8 brings a 2x improvement in the speed of rendering 5439linear gradients (thanks to David Turner), and a significant reduction 5440in X traffic when rendering text (thanks to Xan Lopez and Behdad 5441Esfahbod), making cairo behave very much like Xft does. 5442 5443A few other things in the 1.3.8 snapshot worth noting include a more 5444forgiving image comparator in the test suite, (using the "perceptual 5445diff" metric and GPL implementation by Hector Yee[*]), a bug fix for 5446broken linking on x86_64 (thanks to M Joonas Pihlaja) and an even 5447better implementation of _cairo_lround, (not faster, but supporting a 5448more complete input range), from Daniel Amelang. 5449 5450[*] http://pdiff.sourceforge.net/ 5451 5452Snapshot 1.3.6 (2006-12-06 Carl Worth <cworth@cworth.org>) 5453========================================================== 5454This is the third development snapshot in the 1.3 series. It comes two 5455weeks after the 1.3.4 snapshot. 5456 5457We don't have fancy performance charts this week as the primary 5458changes in this snapshot are bug fixes. The performance work continues 5459and the next snapshot (planned for one week from today) should include 5460several improvements. The bug fixes in this snapshot include: 5461 5462 * Fix undesirable rounding in glyph positioning (Dan Amelang) 5463 5464 This bug was noticed by several users, most commonly by seeing 5465 improper text spacing or scrambled glyphs as drawn by nautilus. For 5466 example: 5467 5468 Update to cairo-1.3.4 worsen font rendering 5469 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217819 5470 5471 * Fix reduced range of valid input coordinates to tessellator 5472 (M Joonas Pihlaja) 5473 5474 This bug was causing lots of assertion failures in mozilla as 5475 mentioned here: 5476 5477 CAIRO_BO_GUARD_BITS and coordinate space? 5478 https://lists.freedesktop.org/archives/cairo/2006-December/008743.html 5479 5480 * Fix several regressions in new tessellator (M Joonas Pihlaja) 5481 5482 Joonas just had a good eye for detail here. I don't think any 5483 external cairo users had noticed any of these bugs yet. 5484 5485 * Fix compilation problems of cairo "wideint" code on some platforms 5486 (Mathieu Lacage) 5487 5488 * Fix failed configure due to broken grep (Dan Amelang) 5489 5490 This bug was reported here: 5491 5492 AX_C_FLOAT_WORDS_BIGENDIAN doesn't work because grep doesn't 5493 work with binary file 5494 https://bugs.freedesktop.org/show_bug.cgi?id=9124 5495 5496 * Remove the pkg-config minimum version requirement (Behdad Esfahbod) 5497 5498 Some systems ship with pkg-config 0.15 and there was really no good 5499 reason for cairo to insist on having version 0.19 before it would 5500 build. 5501 5502There is also one new (but inert) feature in this snapshot. There's a 5503new option that can be passed to cairo's configure script: 5504 5505 --disable-some-floating-point 5506 5507 Disable certain code paths that rely heavily on double precision 5508 floating-point calculation. This option can improve 5509 performance on systems without a double precision floating-point 5510 unit, but might degrade performance on those that do. 5511 5512As of this snapshot, this option does not make any change to cairo, 5513but it is possible that future versions of cairo will respect this 5514option and change the implementation of various functions as 5515appropriate. 5516 5517Snapshot 1.3.4 (2006-11-22 Carl Worth <cworth@cworth.org>) 5518========================================================== 5519This is the second development snapshot in the 1.3 series. It comes 5520one week after the 1.3.2 snapshot. 5521 5522This snapshot has a couple of significant performance improvements, 5523and also adds new support for producing multi-page SVG output, (when 5524targeting SVG 1.2)---thanks to Emmanuel Pacaud. The details of the 5525performance improvements are as follows: 5526 55271. The long-awaited "new tessellator". 5528 5529 The credit for this being an improvement goes to Joonas Pihlaja. He 5530 took my really slow code and really put it through its paces to get 5531 the dramatic performance improvement seen below (up to 38x faster 5532 on realistic cases, and more than 10x faster for the zrusin_another 5533 test). 5534 5535 His own writeup of the work he did is quite thorough, but more than 5536 can be quoted here. Please see his post for the interesting details: 5537 5538 https://lists.freedesktop.org/archives/cairo/2006-November/008483.html 5539 5540 (Though note that this snapshot also includes some additional, 5541 significant improvements that were only sketched out in that 5542 email---see "Generating fewer trapezoids"). 5543 55442. More floating-point improvements 5545 5546 Daniel Amelang continues to work the magic he began in the 1.3.2 5547 snapshot. This time he short-circuits floating-point 5548 transformations by identity matrices and applies the earlier 5549 floating-to-fixed-point technique to the problem of rounding. 5550 5551 The improvements here will primarily benefit text performance, and 5552 will benefit platforms without hardware floating-point more than 5553 those that have it, (some text tests show 20% improvement on an x86 5554 machine and closer to 80% improvement on arm). 5555 5556The performance chart comparing 1.3.2 to 1.3.4 really speaks for 5557itself, (this is on an x86 laptop). This is quite a lot of progress 5558for one week: 5559 5560 xlib-rgb stroke_similar_rgba_over-256 74.99 1.45% -> 2.03 68.38%: 36.86x speedup 5561███████████████████████████████████▉ 5562 xlib-rgb stroke_similar_rgba_source-256 78.23 1.43% -> 3.30 67.05%: 23.71x speedup 5563██████████████████████▊ 5564 xlib-rgba tessellate-256-100 820.42 0.15% -> 35.06 2.84%: 23.40x speedup 5565██████████████████████▍ 5566image-rgba tessellate-256-100 819.55 0.32% -> 35.04 3.56%: 23.39x speedup 5567██████████████████████▍ 5568 xlib-rgb stroke_image_rgba_over-256 78.10 1.43% -> 4.33 65.56%: 18.04x speedup 5569█████████████████ 5570 xlib-rgb stroke_image_rgba_source-256 80.11 1.63% -> 5.75 63.99%: 13.94x speedup 5571█████████████ 5572 xlib-rgba zrusin_another_tessellate-415 89.22 0.35% -> 8.38 5.23%: 10.65x speedup 5573█████████▋ 5574image-rgba zrusin_another_tessellate-415 87.38 0.89% -> 8.37 5.22%: 10.44x speedup 5575█████████▍ 5576image-rgba zrusin_another_fill-415 117.67 1.34% -> 12.88 2.77%: 9.14x speedup 5577████████▏ 5578 xlib-rgba zrusin_another_fill-415 140.52 1.57% -> 15.79 2.88%: 8.90x speedup 5579███████▉ 5580image-rgba tessellate-64-100 9.68 3.42% -> 1.42 0.60%: 6.82x speedup 5581█████▉ 5582 xlib-rgba tessellate-64-100 9.78 4.35% -> 1.45 0.83%: 6.72x speedup 5583█████▊ 5584 xlib-rgb stroke_linear_rgba_over-256 46.01 2.44% -> 7.74 54.51%: 5.94x speedup 5585█████ 5586 xlib-rgb stroke_linear_rgba_source-256 48.09 2.15% -> 9.14 53.00%: 5.26x speedup 5587████▎ 5588 xlib-rgb stroke_radial_rgba_over-256 50.96 2.34% -> 12.46 47.99%: 4.09x speedup 5589███▏ 5590 xlib-rgb stroke_radial_rgba_source-256 53.06 1.57% -> 13.96 46.57%: 3.80x speedup 5591██▊ 5592image-rgba paint_similar_rgba_source-256 0.12 1.57% -> 0.08 9.92%: 1.42x speedup 5593▍ 5594image-rgba paint_image_rgba_source-256 0.12 2.49% -> 0.08 10.70%: 1.41x speedup 5595▍ 5596image-rgba world_map-800 356.28 0.46% -> 275.72 1.15%: 1.29x speedup 5597▎ 5598 xlib-rgba world_map-800 456.81 0.39% -> 357.95 1.39%: 1.28x speedup 5599▎ 5600image-rgb tessellate-16-100 0.09 0.57% -> 0.07 3.43%: 1.23x speedup 5601▎ 5602image-rgba tessellate-16-100 0.09 0.06% -> 0.07 2.46%: 1.23x speedup 5603▎ 5604image-rgba text_solid_rgb_over-256 5.39 4.01% -> 4.47 0.70%: 1.21x speedup 5605▎ 5606image-rgba text_solid_rgba_over-256 5.37 0.82% -> 4.45 0.75%: 1.21x speedup 5607▎ 5608image-rgba text_image_rgb_over-64 0.78 0.10% -> 0.65 0.74%: 1.20x speedup 5609▎ 5610image-rgba text_image_rgba_over-64 0.78 0.29% -> 0.65 0.68%: 1.19x speedup 5611▎ 5612image-rgb text_solid_rgb_over-64 0.76 2.45% -> 0.63 0.81%: 1.19x speedup 5613▎ 5614image-rgba text_solid_rgba_over-64 0.76 0.33% -> 0.64 0.66%: 1.19x speedup 5615▎ 5616image-rgba text_similar_rgba_over-256 5.99 4.72% -> 5.04 1.09%: 1.19x speedup 5617▎ 5618 5619We should point out that there is some potential for slowdown in this 5620snapshot. The following are the worst slowdowns reported by the cairo 5621performance suite when comparing 1.3.2 to 1.3.4: 5622 5623image-rgba subimage_copy-256 0.01 0.87% -> 0.01 3.61%: 1.45x slowdown 5624▌ 5625 xlib-rgb paint_solid_rgb_over-256 0.31 10.23% -> 0.38 0.33%: 1.26x slowdown 5626▎ 5627image-rgba box-outline-fill-100 0.01 0.30% -> 0.01 2.52%: 1.21x slowdown 5628▎ 5629image-rgba fill_solid_rgb_over-64 0.20 1.22% -> 0.22 1.59%: 1.12x slowdown 5630▏ 5631image-rgb fill_similar_rgb_over-64 0.21 1.04% -> 0.24 1.06%: 1.11x slowdown 5632▏ 5633image-rgba fill_image_rgb_over-64 0.21 1.19% -> 0.24 0.72%: 1.11x slowdown 5634▏ 5635image-rgba fill_similar_rgb_over-64 0.21 0.18% -> 0.24 0.30%: 1.11x slowdown 5636▏ 5637image-rgb fill_solid_rgba_over-64 0.22 1.66% -> 0.24 1.15%: 1.11x slowdown 5638▏ 5639image-rgb fill_image_rgb_over-64 0.21 0.14% -> 0.24 0.80%: 1.11x slowdown 5640▏ 5641image-rgba fill_image_rgba_over-64 0.22 1.34% -> 0.25 0.20%: 1.11x slowdown 5642▏ 5643image-rgba fill_solid_rgba_over-64 0.22 1.48% -> 0.24 0.95%: 1.11x slowdown 5644▏ 5645image-rgb fill_similar_rgba_over-64 0.22 1.13% -> 0.25 1.25%: 1.10x slowdown 5646▏ 5647 5648The 45% slowdown for subimage_copy is an extreme case. It's unlikely 5649to hit many applications unless they often use cairo_rectangle; 5650cairo_fill to copy a single pixel at a time. In any case, it shows a 5651worst-case impact of the overhead of the new tessellator. The other 5652slowdowns (~ 10%) are probably more realistic, and still very 5653concerning. 5654 5655We will work to ensure that performance regressions like these are not 5656present from one major release of cairo to the next, (for example, 5657from 1.2 to 1.4). 5658 5659But we're putting this 1.3.4 snapshot out there now, even with this 5660potential slowdown so that people can experiment with it. If you've 5661got complex geometry, we hope you will see some benefit from the new 5662tessellator. If you've got primarily simple geometry, we hope things 5663won't slowdown too much, but please let us know what slowdown you see, 5664if any, so we can calibrate our performance suite against real-world 5665impacts. 5666 5667Thanks, and have fun with cairo! 5668 5669Snapshot 1.3.2 (2006-11-14 Carl Worth <cworth@cworth.org>) 5670========================================================== 5671This is the first development snapshot since the 1.2 stable series 5672branched off shortly after the 1.2.4 release in August 2006. 5673 5674This snapshot includes all the bug fixes from the 1.2.6 release, 5675(since they originated here on the 1.3 branch first and were 5676cherry-picked over to 1.2). But more importantly, it contains some new 5677API in preparation for a future 1.4 release, and most importantly, it 5678contains several performance improvements. 5679 5680The bug fixes will not be reviewed here, as most of them are already 5681described in the 1.2.6 release notes. But details for the new API and 5682some performance improvements are included here. 5683 5684As with all snapshots, this is experimental code, and the new API 5685added here is still experimental and is not guaranteed to appear 5686unchanged in any future release of cairo. 5687 5688API additions 5689------------- 5690Several new API additions are available in this release. There is a 5691common theme among all the additions in that they allow cairo to 5692advertise information about its state that it was refusing to 5693volunteer earlier. So this isn't groundbreaking new functionality, but 5694it is essential for easily achieving several tasks. 5695 5696The new functions can be divided into three categories: 5697 5698 Getting information about the current clip region 5699 ------------------------------------------------- 5700 cairo_clip_extents 5701 cairo_copy_clip_rectangles 5702 cairo_rectangle_list_destroy 5703 5704 Getting information about the current dash setting 5705 -------------------------------------------------- 5706 cairo_get_dash_count 5707 cairo_get_dash 5708 5709 Getting information from a pattern 5710 ---------------------------------- 5711 cairo_pattern_get_rgba 5712 cairo_pattern_get_surface 5713 cairo_pattern_get_color_stop_rgba 5714 cairo_pattern_get_color_stop_count 5715 cairo_pattern_get_linear_points 5716 cairo_pattern_get_radial_circles 5717 5718In each of these areas, we have new API for providing a list of 5719uniform values from cairo. The closest thing we had to this before was 5720cairo_copy_path, (which is rather unique in providing a list of 5721non-uniform data). 5722 5723The copy_clip_rectangles/rectangle_list_destroy functions follow a 5724style similar to that of cairo_copy_path. Meanwhile, the dash and 5725pattern color stop functions introduce a new style in which there is a 5726single call to return the number of elements available (get_dash_count 5727and get_color_stop_count) and then a function to be called once to get 5728each element (get_dash and get_color_stop_rgba). 5729 5730I'm interested in hearing feedback from users of these new API 5731functions, particularly from people writing language bindings. One 5732open question is whether the clip "getter" functionality should adopt 5733a style similar to that of the new dash and color_stop interfaces. 5734 5735API deprecation 5736--------------- 5737The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never 5738worked as a format value for cairo_image_surface_create, and it wasn't 5739necessary for supporting 16-bit 565 X server visuals. 5740 5741XCB backend changes 5742------------------- 5743The XCB backend has been updated to track the latest XCB API (which 5744recently had a 1.0 release). 5745 5746New quartz backend 5747------------------ 5748Vladimir Vukicevic has written a new "native quartz" backend which 5749will eventually replace the current "image-surface wrapping" quartz 5750backend. For now, both backends are available, (the old one is 5751"quartz" and the new one is "nquartz"). But it is anticipated that the 5752new backend will replace the old one and take on the "quartz" name 5753before this backend is marked as supported in a release of cairo. 5754 5755New OS/2 backend 5756---------------- 5757Doodle and Peter Weilbacher have contributed a new, experimental 5758backend for using cairo on OS/2 systems. 5759 5760Performance improvements 5761------------------------ 5762Here are some highlights from cairo's performance suite showing 5763improvements from cairo 1.2.6 to cairo 1.3.2. The command used to 5764generate this data is: 5765 5766 ./cairo-perf-diff 1.2.6 HEAD 5767 5768available in the perf/ directory of a recent checkout of cairo's 5769source, (the cairo-perf-diff script does require a git checkout and 5770will not work from a tar file---though ./cairo-perf can still be used 5771to generate a single report there and ./cairo-perf-diff-files can be 5772used to compare two reports). 5773 5774Results are described below both for an x86 laptop (with an old Radeon 5775video card, recent X.org build, XAA, free software drivers), as well 5776as for a Nokia 770. First the x86 results with comments on each, (all 5777times are reported in milliseconds). 5778 5779Copying subsets of an image surface to an xlib surface (much faster) 5780-------------------------------------------------------------------- 5781 xlib-rgba subimage_copy-512 10.50 -> : 53.97x speedup 5782█████████████████████████████████████████████████████ 5783 5784Thanks to Christopher (Monty) Montgomery for this big performance 5785improvement. Any application which has a large image surface and is 5786copying small pieces of it at a time to an xlib surface, (imagine an 5787application that loads a single image containing all the "sprites" for 5788that application), will benefit from this fix. The larger the ratio of 5789the image surface to the portion being copied, the larger the benefit. 5790 5791Floating-point conversion (3x faster) 5792------------------------------------- 5793 xlib-rgba pattern_create_radial-16 27.75 -> 3.93 : 2.94x speedup 5794██ 5795image-rgb pattern_create_radial-16 26.06 -> 3.74 : 2.90x speedup 5796█▉ 5797 5798Thanks to Daniel Amelang, (and others who had contributed the idea 5799earlier), for this nice improvement in the speed of converting 5800floating-point values to fixed-point. 5801 5802Text rendering (1.3 - 2x faster) 5803------------------------------ 5804 xlib-rgba text_image_rgba_source-256 319.73 -> 62.40 : 2.13x speedup 5805█▏ 5806image-rgb text_solid_rgba_over-64 2.85 -> 0.88 : 1.35x speedup 5807▍ 5808 5809I don't think we've ever set out to improve text performance 5810specifically, but we did it a bit anyway. I believe the extra 5811improvement in the xlib backend is due to Monty's image copying fix 5812above, and the rest is due to the floating-point conversion speedup. 5813 5814Thin stroke improvements (1.5x faster) 5815--------------------------------------------- 5816image-rgb world_map-800 1641.09 -> 414.77 : 1.65x speedup 5817▋ 5818 xlib-rgba world_map-800 1939.66 -> 529.94 : 1.52x speedup 5819▌ 5820 5821The most modest stuff to announce in this release is the 50% 5822improvement I made in the world_map case. This is in improvement that 5823should help basically anything that is doing strokes with many 5824straight line segments, (and the thinner the better, since that makes 5825tessellation dominate rasterization). The fixes here are to use a 5826custom quadrilateral tessellator rather than the generic tessellator 5827for straight line segments and the miter joins. 5828 5829Performance results from the Nokia 770 5830-------------------------------------- 5831 xlib-rgba subimage_copy-512 55.88 -> 2.04 : 27.34x speedup 5832██████████████████████████▍ 5833 xlib-rgb text_image_rgb_over-256 1487.58 -> 294.43 : 5.05x speedup 5834████ 5835image-rgb pattern_create_radial-16 187.13 -> 91.86 : 2.04x speedup 5836█ 5837 xlib-rgba world_map-800 21261.41 -> 15628.02 : 1.36x speedup 5838▍ 5839 5840Here we see that the subimage_copy improvement was only about half as 5841large as the corresponding improvement on my laptop, (27x faster 5842compared to 54x) and the floating-point conversion fix also was quite 5843as significant, (2x compared to 3x). Oddly the improvement to text 5844rendering performance was more than twice as good (5x compared to 58452x). I don't know what the reason for that is, but I don't think it's 5846anything anybody should complain about. 5847 5848Release 1.2.6 (2006-11-02 Behdad Esfahbod <behdad@behdad.org>) 5849============================================================== 5850This is the third bug fix release in the 1.2 series, coming less than 5851two months after the 1.2.4 release made on August 18. 5852 5853The 1.2.4 release turned out to be a pretty solid one, except for a crash 5854bug when forwarding an X connection where the client and the server have 5855varying byte orders, eg. from a PPC to an i686. Other than that, various 5856other small bugs have been fixed. 5857 5858Various improvements have been made in the testing infrastructure to prevent 5859false positives, and to make sure the generated cairo shared object behaves as 5860expected in terms of exported symbols and relocations. 5861 5862There were a total of 89 changes since 1.2.4. The following list the most 5863important ones: 5864 5865Common fixes 5866------------ 5867- Avoid unsigned loop control variable to eliminate infinite, 5868 memory-scribbling loop. (#7593) 5869- Fix cairo_image_surface_create to report INVALID_FORMAT errors. 5870 Previously the detected error was being lost and a nil surface was 5871 returned that erroneously reported CAIRO_STATUS_NO_MEMORY. 5872- Change _cairo_color_compute_shorts to not rely on any particular 5873 floating-point epsilon value. (#7497) 5874- Fix infinite-join test case (bug #8379) 5875- Pass correct surface to create_similar in _cairo_clip_init_deep_copy(). 5876 5877PS/PDF fixes 5878------------ 5879- Fix Type 1 embedding in PDF. 5880- Correct the value of /LastChar in the PDF Type 1 font dictionary. 5881- Improve error checking in TrueType subsetting. 5882- Compute right index when looking up left side bearing. (bug #8180) 5883- Correct an unsigned to signed conversion problem in truetype subsetting 5884 bbox. 5885- Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs. 5886- Add cairo version to PS header / PDF document info dictionary. 5887- Set CTM before path construction. 5888 5889Win32 fixes 5890----------- 5891- Get correct unhinted outlines on win32. (bug 7603) 5892- Make cairo as a win32 static library possible. 5893- Use CAIRO_FORMAT_RGB24 for BITSPIXEL==32 surfaces too. 5894 5895Build system fixes 5896------------------ 5897- Define WINVER if it's not defined. (bug 6456) 5898- Fix the AMD64 final link by removing SLIM from pixman. 5899- Misc win32 compilation fixes. 5900- Add Sun Pro C definition of pixman_private. 5901- Use pixman_private consistently as prefix not suffix. 5902- Added three tests check-plt.sh, check-def.sh, and check-header.sh that check 5903 that the shared object, the .def file, and the public headers agree about 5904 the exported symbols. 5905- Require pkg-config 0.19. (#8686) 5906 5907 5908Release 1.2.4 (2006-08-18 Carl Worth <cworth@cworth.org>) 5909========================================================= 5910This is the second bug fix release in the 1.2 series, coming less than 5911two weeks after the 1.2.2 release made on August 8. 5912 5913The big motivation for a quick release was that there were a log of 5914build system snags that people ran into with the 1.2.2 release. But, 5915by the time we got those all done, we found that we had a bunch of 5916fixes for cairo's rendering as well. So there's a lot of goodness in 5917here for such a short time period. 5918 5919Rendering fixes 5920--------------- 5921Fix image surfaces to not be clipped when used as a source (Vladimir Vukicevic) 5922https://gitweb.freedesktop.org/?p=cairo;a=commit;h=72e25648c4c4bc82ddd938aa4e05887a293f0d8b 5923 5924Fix a couple of corner cases in dashing degenerate paths (Jeff Muizelaar) 5925https://gitweb.freedesktop.org/?p=cairo;a=commit;h=fbb1758ba8384650157b2bbbc93d161b0c2a05f0 5926 5927Fix support for type1 fonts on win32 (Adrian Johnson) 5928https://gitweb.freedesktop.org/?p=cairo;a=commit;h=da1019c9138695cb838a54f8b871bbfd0e8996d7 5929 5930Fix assertion failure when rotating bitmap fonts (Carl Worth) 5931https://gitweb.freedesktop.org/?p=cairo;a=commit;h=0bfa6d4f33b8ddb5dc55bbe419c15df4af856ff9 5932 5933Fix assertion failure when calling cairo_text_path with bitmap fonts (Carl Worth) 5934https://gitweb.freedesktop.org/?p=cairo;a=commit;h=9878a033531e6b96b5f27e69e10e90dee7440cd9 5935 5936Fix mis-handling of cairo_close_path in some situations (Tim Rowley, Carl Worth) 5937https://gitweb.freedesktop.org/?p=cairo;a=commit;h=53f74e59faf1af78f2f0741ccf1f23aa5dad4efc 5938 5939Respect font_matrix translation in _cairo_gstate_glyph_path (Behdad Esfahbod) 5940https://gitweb.freedesktop.org/?p=cairo;a=commit;h=f183b835b111d23e838889178aa8106ec84663b3 5941 5942Fix vertical metrics adjustment to work with non-identity shapes (Behdad Esfahbod) 5943https://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7bc263842a798d657a95e539e1693372448837f 5944 5945[PS] Set correct ImageMatrix in _cairo_ps_surface_emit_bitmap_glyph_data (Behdad Esfahbod) 5946https://gitweb.freedesktop.org/?p=cairo;a=commit;h=d47388ad759b0a1a0869655a87d9b5eb6ae2445d 5947 5948Build system fixes 5949------------------ 5950Fix xlib detection to prefer pkg-config to avoid false libXt dependency (Behdad Esfahbod) 5951https://gitweb.freedesktop.org/?p=cairo;a=commit;h=0e78e7144353703cbd28aae6a67cd9ca261f1d68 5952 5953Fix typos causing win32 build problem with PS,PDF, and SVG backends (Behdad Esfahbod) 5954https://gitweb.freedesktop.org/?p=cairo;a=commit;h=aea83b908d020e26732753830bb3056e6702a774 5955 5956Fix configure cache to not use stale results (Behdad Esfahbod) 5957https://gitweb.freedesktop.org/?p=cairo;a=commit;h=6d0e3260444a2d5b6fb0cb223ac79f1c0e7b3a6e 5958 5959Fix to not pass unsupported warning options to the compiler (Jens Granseuer) 5960https://gitweb.freedesktop.org/?p=cairo;a=commit;h=97524a8fdb899de1ae4a3e920fb7bda6d76c5571 5961 5962Fix to allow env. variables such as png_REQUIRES to override configure detection (Jens Granseuer) 5963https://gitweb.freedesktop.org/?p=cairo;a=commit;h=abd16e47d6331bd3811c908e524b4dcb6bd23bf0 5964 5965Fix test suite to not use an old system cairo when converting svg2png (Behdad Esfahbod) 5966https://gitweb.freedesktop.org/?p=cairo;a=commit;h=6122cc85c8f71b1ba2df3ab86907768edebe1781 5967 5968Fix test suite to not require signal.h to be present (Behdad Esfahbod) 5969https://gitweb.freedesktop.org/?p=cairo;a=commit;h=6f8cf53b1e1ccdbe1ab6a275656b19c6e5120e40 5970 5971Code cleanups 5972------------- 5973Many useful warnings cleanups from sparse, valgrind, and careful eyes 5974(Kjartan Maraas, Pavel Roskin) 5975 5976Release 1.2.2 (2006-08-08 Carl Worth <cworth@cworth.org>) 5977========================================================= 5978This is the first bug fix release in the 1.2 series since the original 59791.2.0 release made six weeks ago. 5980 5981There were some very serious bugs in the 1.2.0 release, (see below), 5982so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2 5983release maintains source and binary compatibility with 1.2.0 and does 5984not make any API additions. 5985 5986Fix crashes with BGR X servers 5987------------------------------ 5988With cairo 1.2.0 many people reported problems with all cairo-using 5989programs, (including all GTK+ programs with GTK+ >= 2.8) immediately 5990crashing with a complaint about an unsupported image format. This bug 5991affected X servers that do not provide the Render extension and that 5992provide a visual with BGR rather than RGB channel order. 5993 5994report: https://bugs.freedesktop.org/show_bug.cgi?id=7294 5995fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59 5996 5997Fix the "disappearing text" bug 5998------------------------------- 5999With cairo 1.2.0 many people reported that text would disappear from 6000applications, sometimes reappearing with mouse motion or 6001selection. The text would disappear after the first space in a string 6002of text. This bug was caused by an underlying bug in (very common) X 6003servers, and only affected text rendered without antialiasing, (either 6004a bitmap font or a vector font with antialiasing disabled). The bug 6005was also exacerbated by a KDE migration bug that caused antialiasing 6006to be disabled more than desired. 6007 6008report: https://bugs.freedesktop.org/show_bug.cgi?id=7494 6009fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14 6010see also: 6011Xorg: https://bugs.freedesktop.org/show_bug.cgi?id=7681 6012KDE: http://qa.mandriva.com/show_bug.cgi?id=23990 6013 6014Fix broken image fallback scaling (aka. "broken printing") 6015---------------------------------------------------------- 6016The various "print" backends, (pdf, ps, and svg), sometimes fallback 6017to using image-based rendering for some operations. In cairo 1.2.0 6018these image fallbacks were scaled improperly. Applications using cairo 6019can influence the resolution of the image fallbacks with 6020cairo_surface_set_fallback_resolution. With the bug, any value other 6021than 72.0 would lead to incorrect results, (larger values would lead 6022to increasingly shrunken output). 6023 6024report: https://bugs.freedesktop.org/show_bug.cgi?id=7533 6025fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb 6026 6027Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod) 6028---------------------------------------------------------------------------- 6029The 1.2.0 release introduced an inadvertent change to how the 6030translation components of a font matrix are interpreted. In the 1.0 6031series, font matrix translation could be used to offset the glyph 6032origin, (though glyph metrics were reported incorrectly in 60331.0). However in 1.2.0, the translation was applied to the advance 6034values between each glyph. The 1.2.0 behavior is fairly useless in 6035practice, and it was not intentional to introduce a semantic 6036change. With 1.2.2 we return to the 1.0 semantics, with a much better 6037implementation that provides correct glyph metrics. 6038 6039fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051 6040 6041Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod) 6042------------------------------------------------------------------------------------- 6043There has been a long-standing issue with cairo_surface_create_similar 6044such that font options and other settings from the original 6045destination surface would not be preserved to the intermediate 6046"similar" surface. This could result in incorrect rendering 6047(particularly with respect to text hinting/antialiasing) with 6048fallbacks, for example. 6049 6050report: https://bugs.freedesktop.org/show_bug.cgi?id=4106 6051fixes: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0 6052 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=bdb4e1edadb78a2118ff70b28163f8bd4317f1ec 6053 6054xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic) 6055---------------------------------------------------------------------------- 6056Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0 6057caused a significant performance regression when using the xlib 6058backend. This performance regression was particularly noticeable when 6059doing lots of text rendering and when using a high-latency connection 6060to the X server, (such as a remote X server over an ssh 6061connection). The slowdown was identified and fixed in 1.2.2. 6062 6063report: https://bugs.freedesktop.org/show_bug.cgi?id=7514 6064fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c 6065 6066PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson) 6067------------------------------------------------------------------------- 6068The cairo 1.2 series adds a supported pdf backend to cairo. In cairo 60691.2.0 this backend required the freetype library, which was an 6070undesirable dependency on systems such as win32, (cairo is designed to 6071always prefer the "native" font system). As of cairo 1.2.2 the 6072freetype library is not required to use the pdf backend on the win32 6073platform. 6074 6075report: https://bugs.freedesktop.org/show_bug.cgi?id=7538 6076fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691 6077 6078PDF: Fix broken output on amd64 (Adrian Johnson) 6079------------------------------------------------ 6080report: https://bugzilla.gnome.org/show_bug.cgi?id=349826 6081fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60 6082 6083PS: Fix broken output for truetype fonts > 64k (Adrian Johnson) 6084--------------------------------------------------------------- 6085fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94 6086 6087PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop) 6088------------------------------------------------------------ 6089Kent notices that with the PDF backend in cairo 1.2.0 as soon as a 6090stroke was performed with dashing, all subsequent strokes would also 6091be dashed. There was no way to turn dashing off again. 6092 6093fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256 6094 6095Fix memory leaks in failure paths in gradient creation (Alfred Peng) 6096-------------------------------------------------------------------- 6097fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2 6098 6099Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson) 6100------------------------------------------------------------ 6101report: https://bugs.freedesktop.org/show_bug.cgi?id=7766 6102fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd 6103 6104Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng) 6105----------------------------------------------------------------------------- 6106report: https://bugzilla.mozilla.org/show_bug.cgi?id=341874 6107fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6 6108 6109Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron) 6110------------------------------------------------------------------------------------- 6111report: https://bugs.freedesktop.org/show_bug.cgi?id=7483 6112fix: https://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235 6113 6114Various memory leak fixes 6115------------------------- 6116Fix memory leak in _cairo_surface_show_glyphs (bug 7766) 6117Fix file handle leak in failure path (bug 7616) 6118Fix some memory leaks in the test cases. 6119Fix some memory leaks in font subsetting code used in print backends. 6120 6121Documentation improvements (Behdad Esfahbod) 6122-------------------------------------------- 6123Added new documentation for several functions (cairo_show_page, 6124cairo_copy_page, cairo_in_stroke, cairo_in_fill). 6125 6126Fixed some syntax errors that were preventing some existing 6127documentation from being published. 6128 6129Fixed several minor typographical errors. 6130 6131Added an index for new symbols in 1.2. 6132 6133Release 1.2.0 (2006-06-27 Carl Worth <cworth@cworth.org>) 6134========================================================= 6135This is the culmination of the work that has gone on within the 1.1 6136branch of cairo. 6137 6138There has been one API addition since the cairo 1.1.10 snapshot: 6139 6140 cairo_xlib_surface_get_width 6141 cairo_xlib_surface_get_height 6142 6143There's also a new feature without any API change: 6144 6145 Dots can now be drawn by using CAIRO_LINE_CAP_ROUND with 6146 degenerate sub-paths, (cairo_move_to() followed by either 6147 cairo_close_path() or a cairo_line_to() to the same location). 6148 6149And at least the following bugs have been fixed: 6150 6151 6759 fontconfig option AntiAlias doesn't work in cairo 1.1.2 6152 6955 Some characters aren't displayed when using xlib (cache u... 6153 7268 positive device_offset values don't work as source 6154 * PDF emit_glyph function needs to support bitmapped glyphs 6155 * PS emit_glyph function needs to support bitmapped glyphs 6156 * SVG emit_glyph function needs to support bitmapped glyphs 6157 * PDF: minefield page one is falling back unnecessarily 6158 * PS/PDF: Fix broken placement for vertical glyphs 6159 * PS: Fix to not draw BUTT-capped zero-length dash segments 6160 * Do device offset before float->fixed conversion 6161 https://bugzilla.gnome.org/show_bug.cgi?id=332266 6162 * PS: Fix source surfaces with transformations 6163 * PS: Fix to not draw BUTT-capped degenerate sub-paths 6164 * PS: Don't walk off end of array when printing "~>" 6165 * Fix some memory leaks in the test suite rig 6166 * SVG: Fix memory leak when using cairo_mask 6167 * Fix EXTEND_REFLECT and EXTEND_PAD to not crash (though these are 6168 still not yet fully implemented for surface patterns). 6169 6170This has been a tremendous effort by everyone, and I'm proud to have 6171been a part of it. Congratulations to all contributors to cairo! 6172 6173Snapshot 1.1.10 (2006-06-16 Carl Worth <cworth@cworth.org>) 6174=========================================================== 6175This is the fifth in a series of snapshots working toward the 1.2 6176release of cairo. 6177 6178The primary motivation for this snapshot is to fix a long-standing bug 6179that had long been silent, but as of the 1.1.8 snapshot started 6180causing crashes when run against 16-bit depth X servers, (often Xvnc 6181or Xnest). The fix for this adds a new CAIRO_FORMAT_RGB16_565 to the 6182API. 6183 6184This snapshot also includes a rewrite of cairo's SVG backend to 6185eliminate the dependency on libxml2. With this in place, cairo 1.2 6186will not depend on any libraries that cairo 1.0 did not. 6187 6188As usual, there are also a few fixes for minor bugs. 6189 6190Snapshot 1.1.8 (2006-06-14 Carl Worth <cworth@cworth.org>) 6191========================================================== 6192This is the fourth in a series of snapshots working toward the 1.2 6193release of cairo. At this point, all major features of the 1.2 release 6194are in place, leaving just a few bug fixes left. 6195 6196In particular, there well be no additional API changes between this 61971.1.8 snapshot and the 1.2 release. 6198 6199The announcement for 1.1.6 mentioned several API changes being 6200considered. Only one of these changes was actually implemented 6201(set_dpi -> fallback_resolution). This change does introduce one 6202source-level incompatibility with respect to previous 1.1.x snapshots, 6203so see below for details. 6204 6205Here is an abbreviated summary of changes since the 1.1.6 snapshot: 6206 6207** API Change ** 6208---------------- 6209According to the plan mentioned in the 1.1.6 notes, one source-level 6210incompatible change has been implemented. The following three 6211functions have been removed from cairo's API: 6212 6213 cairo_pdf_surface_set_dpi 6214 cairo_ps_surface_set_dpi 6215 cairo_svg_surface_set_dpi 6216 6217and in their place the following function has been added: 6218 6219 cairo_surface_set_fallback_resolution 6220 6221The signature and semantics of the function remains the same, so it is 6222a simple matter of changing the name of the function when calling 6223it. As a transition mechanism, this snapshot will (on many systems) 6224build to include the old symbols so that code previously compiled will 6225still run. However, all source code using the old names must be 6226updated before it will compile. And the upcoming 1.2 release is not 6227anticipated to include the old symbols. 6228 6229Finally, it should be pointed out that the old symbols never existed 6230in the supported API of any stable release of cairo. (In the stable 62311.0 releases the PDF, PS, and SVG backends were advertised as 6232experimental and unstable.) 6233 6234And, as always, cairo continues to maintain source and binary 6235compatibility between major releases. So applications compiled against 6236supported backends in a stable release of cairo (1.0.4 say) will 6237continue to compile and run without modification against new major 6238releases (1.2.0 say) without modification. 6239 6240API additions 6241------------- 6242The following new functions have been added to cairo's API: 6243 6244 cairo_surface_get_content 6245 cairo_debug_reset_static_data 6246 cairo_image_surface_get_data 6247 cairo_image_surface_get_format 6248 cairo_image_surface_get_stride 6249 cairo_win32_font_face_create_for_hfont 6250 6251New, backend-specific pkg-config files 6252-------------------------------------- 6253In addition to the original cairo.pc file, cairo will also now install 6254a pkg-config files for each configured backend, (for example 6255cairo-pdf.pc, cairo-svg.pc, cairo-xlib.pc, cairo-win32.pc, etc.) this 6256also includes optional font backends (such as cairo-ft.pc) and the 6257optional png functionality (cairo-png.pc). 6258 6259These new pkg-config files should be very convenient for allowing 6260cairo-using code to easily check for the existing of optional 6261functionality in cairo without having to write complex rules to grub 6262through cairo header files or the compiled library looking for 6263symbols. 6264 6265Printing backend (PS, PDF, and SVG) 6266----------------------------------- 6267Improving the quality of the "printing" backends has been a priority 6268of the development between cairo 1.1.6 and cairo 1.1.8. 6269 6270The big improvement here is in the area of text output. Previously, at 6271best, text was output as paths without taking advantage of any font 6272support available in the output file format. 6273 6274Now, at the minimum text paths will be shared by using type3 fonts 6275(for PS and PDF---and similarly, defs for SVG). Also, if possible, 6276type3 and truetype fonts will be embedded in PostScript and PDF 6277output. There are still some known bugs with this, (for example, 6278selecting text in a cairo-generated PDF file with an embedded truetype 6279font does not work). So there will be some more changes in this area 6280before cairo 1.2, but do try test this feature out as it exists so 6281far. 6282 6283Many thanks to Kristian Høgsberg for the truetype and type1 font 6284embedding. 6285 6286win32 backend 6287------------- 6288Performance improvements by preferring GDI over pixman rendering when possible. 6289Fixes for text rendering. 6290 6291xlib backend 6292------------ 6293Fix potentially big performance bug by making xlib's create_similar 6294try harder to create a pixmap of a depth matching that of the screen. 6295 6296Bug fixes 6297--------- 6298Among various other fixes, the following bugs listed in bugzilla have 6299been fixed: 6300 6301 Bug 2488: Patch to fix pixman samping location bug (#2488). 6302 https://bugs.freedesktop.org/show_bug.cgi?id=2488 6303 6304 Bug 4196: undef MIN an MAX before defining to avoid duplicate definition 6305 https://bugs.freedesktop.org/show_bug.cgi?id=4196 6306 6307 Bug 4723: configure.in: Fix m4 quoting when examining pkg-config version 6308 https://bugs.freedesktop.org/show_bug.cgi?id=4723 6309 6310 Bug 4882: Flag Sun's X server has having buggy_repeat. 6311 https://bugs.freedesktop.org/show_bug.cgi?id=4882 6312 6313 Bug 5306: test/pdf2png: Add missing include of stdio.h 6314 https://bugs.freedesktop.org/show_bug.cgi?id=5306 6315 6316 Bug 7075: Fix make clean to remove cairo.def 6317 https://bugs.freedesktop.org/show_bug.cgi?id=7075 6318 6319(Many thanks to Behdad Esfahbod for helping us track down and fix many 6320of these.) 6321 6322Snapshot 1.1.6 (2006-05-04 Carl Worth <cworth@cworth.org>) 6323========================================================== 6324This is the third in a series of snapshots working toward the imminent 63251.2 release of cairo. For a list of items still needing work on the 6326cairo 1.2 roadmap, please see: 6327 6328 https://cairographics.org/ROADMAP 6329 6330As can be seen in that list, there are no longer any API additions 6331left on the roadmap. Instead, there is a feature (PDF type 3 fonts) a 6332performance optimization (X server gradients) and a list of bug 6333fixes. This gives us a fair amount of freedom to cut the 1.2 release 6334at almost any point by deciding to defer remaining bug fixes to 6335subsequent maintenance releases such as 1.2.2 and 1.2.4. 6336 6337Before we will do that, we must first be wiling to commit to all the 6338new API additions. As a heads-up, there are a couple of potential API 6339changes being considered. (Note that these are changes to new API 6340introduced during 1.1 so these will not introduce API 6341incompatibilities compared to the stable 1.0 series). The changes 6342being considered are: 6343 6344 cairo_get_group_target: may acquire x and y offset return 6345 parameters. May also be eliminated in favor of 6346 cairo_get_target assuming its role 6347 6348 cairo_pdf_surface_set_dpi: 6349 cairo_ps_surface_set_dpi: 6350 cairo_svg_surface_set_dpi: These functions may be removed in favor 6351 of a new cairo_surface_set_fallback_resolution 6352 6353Additionally there is the possibility of a slight change in the 6354semantics of cairo_set_line_width. We believe the current behavior of the sequence: 6355 6356 cairo_set_line_width; ... change CTM ...; cairo_stroke; 6357 6358is buggy. It is currently behaving the same as: 6359 6360 ... change CTM ...; cairo_set_line_width; cairo_stroke; 6361 6362We are considering fixing this bug before 1.2 with the hope that 6363nobody is already relying on the buggy behavior described here. Do 6364shout if you suspect you might be in that position. 6365 6366The items included in this snapshot (since the 1.1.4 snapshot) are 6367described below. 6368 6369API additions 6370------------- 6371The long-awaited group-rendering support is now available with the 6372following function calls: 6373 6374 cairo_push_group 6375 cairo_push_group_with_content 6376 cairo_pop_group 6377 cairo_pop_group_to_source 6378 cairo_get_group_target 6379 6380This API provides a much more convenient mechanism for doing rendering 6381to an intermediate surface without the need to manually create a 6382temporary cairo_surface_t and a temporary cairo_t and clean them up 6383afterwards. 6384 6385Add the following missing get function to complement 6386cairo_surface_set_device_offset: 6387 6388 cairo_surface_get_device_offset 6389 6390PDF backend (API addition) 6391-------------------------- 6392The PDF backend now provides for per-page size changes, (similar to 6393what the PostScript backend got in the 1.1.4 snapshot). The new API 6394is: 6395 6396 cairo_pdf_surface_set_size 6397 6398Xlib backend (API additions) 6399---------------------------- 6400The following functions have been added to allow the extraction of 6401Xlib surface: 6402 6403 cairo_xlib_surface_get_display 6404 cairo_xlib_surface_get_drawable 6405 cairo_xlib_surface_get_screen 6406 cairo_xlib_surface_get_visual 6407 cairo_xlib_surface_get_depth 6408 6409XCB backend (experimental) 6410-------------------------- 6411Update backend so that it now compiles with the recent XCB 0.9 release. 6412 6413Bug fixes and memory leak cleanup 6414--------------------------------- 6415Various little things, nothing too significant though. 6416 6417Snapshot 1.1.4 (2006-05-03 Carl Worth <cworth@cworth.org>) 6418========================================================== 6419This is the second in a series of snapshots working toward the 6420upcoming 1.2 release of cairo. For a list of items still needing work 6421on the cairo 1.2 roadmap, please see: 6422 6423 https://cairographics.org/ROADMAP 6424 6425The items included in this snapshot (since the 1.1.2 snapshot) are 6426described below. 6427 6428PostScript backend: new printing-oriented API 6429--------------------------------------------- 6430We anticipate that with cairo 1.2, toolkits will begin to use cairo 6431for printing on systems that use PostScript as the spool format. To 6432support this use case, we have added 4 new function calls that are 6433specific to the PostScript backend: 6434 6435 cairo_ps_surface_set_size 6436 cairo_ps_surface_dsc_comment 6437 cairo_ps_surface_dsc_begin_setup 6438 cairo_ps_surface_dsc_begin_page_setup 6439 6440These functions allow variation of the page size/orientation from one 6441page to the next in the PostScript output. They also allow the toolkit 6442to provide per-document and per-page printer control options in a 6443device-independent way, (for example, by using PPD options and 6444emitting them as DSC comments into the PostScript output). This should 6445allow toolkits to provide very fine-grained control of many options 6446available in printers, (media size, media type, tray selection, etc.). 6447 6448SVG backend: builds by default, version control 6449----------------------------------------------- 6450The SVG backend continues to see major improvements. It is expected 6451that the SVG backend will be a supported backend in the 1.2 6452release. This backend will now be built by default if its dependencies 6453(freetype and libxml2) are met. 6454 6455Additionally, the SVG backend now has flexibility with regard to what 6456version of SVG it targets. It will target SVG 1.1 by default, which 6457will require image fallbacks for some of the "fancier" cairo 6458compositing operators. Or with the following new function calls: 6459 6460 cairo_svg_surface_restrict_to_version 6461 cairo_svg_get_versions 6462 cairo_svg_version_to_string 6463 6464it can be made to target SVG 1.2 in which there is native support for 6465these compositing operators. 6466 6467Bug fixes 6468--------- 6469At least the following bugs have been fixed since the 1.1.2 snapshot: 6470 6471crash at XRenderAddGlyphs 6472https://bugs.freedesktop.org/show_bug.cgi?id=4705 6473 6474Can't build cairo-1.1.2 on opensolaris due to " void function cannot return value" 6475https://bugs.freedesktop.org/show_bug.cgi?id=6792 6476 6477Missing out-of-memory check at gfx/cairo/cairo/src/cairo-atsui-font.c:185 6478https://bugzilla.mozilla.org/show_bug.cgi?id=336129 6479 6480A couple of memory leaks. 6481 6482Snapshot 1.1.2 (2006-04-25 Carl Worth <cworth@cworth.org>) 6483========================================================== 6484This is the first in a series of snapshots working toward the upcoming 64851.2 release of cairo. (Subsequent snapshot will use successive even 6486numbers for the third digit, 1.1.4, 1.1.6, etc.) This snapshot is 6487backwards-compatible with the 1.0 series---it makes a few API 6488additions but does not remove any API. 6489 6490PostScript and PDF backends are no longer "experimental" 6491-------------------------------------------------------- 6492The major theme of the 1.2 release is improved PostScript and PDF 6493backends for cairo. Unlike the 1.0 series, in the 1.2 series these 6494backends will not be marked as experimental and will be enabled by 6495default. We encourage people to test this snapshot and the PS/PDF 6496backends in particular as much as possible. 6497 6498The PostScript and PDF output is not yet ideal. 6499 6500 * One major problem with the PostScript output is that image 6501 fallbacks are used more often than strictly necessary, and the 6502 image fallbacks are at a lower resolution than desired, (the 6503 cairo_ps_surface_set_dpi call is ignored). 6504 6505 * The major drawback of the current PDF backend implementation is 6506 its text support. Every glyph is represented by a filled path in 6507 the PDF file. The causes file sizes to be much larger and 6508 rendering to be much slower than desired. 6509 6510It is anticipated that both of these shortcomings will see some 6511improvements before the final 1.2 release. 6512 6513In spite of those shortcomings, we hope that the PS and PDF backends 6514will yield faithful results for pretty much any cairo operations you 6515can throw at them. Please let us know if you are getting obviously 6516"different" results from the PS/PDF backends than from the image or 6517xlib backends. 6518 6519Other new experimental backends 6520------------------------------- 6521This snapshot includes three new backends that did not exist in the 65221.0 series: 6523 6524 * beos backend 6525 6526 * directfb backend 6527 6528 * svg backend 6529 6530These are all currently marked "experimental" and are disabled by 6531default. But the SVG backend in particular has seen a lot of recent 6532development and is very close to passing the entire cairo test 6533suite. It is possible that this backend will become a fully supported 6534backend by the time of the cairo 1.2 release. 6535 6536Public API additions 6537-------------------- 6538There have been a few new API functions added to cairo, including: 6539 6540New get_type functions for querying sub-types of object: 6541 6542 cairo_surface_get_type 6543 cairo_pattern_get_type 6544 cairo_font_face_get_type 6545 cairo_scaled_font_get_type 6546 6547More convenience in working with cairo_scaled_font_t with new getter 6548functions: 6549 6550 cairo_scaled_font_get_font_face 6551 cairo_scaled_font_get_font_matrix 6552 cairo_scaled_font_get_ctm 6553 cairo_scaled_font_get_font_options 6554 6555As well as a convenience function for setting a scaled font into a 6556cairo context: 6557 6558 cairo_set_scaled_font 6559 6560and a function to allow text extents to be queried directly from a 6561scaled font, (without requiring a cairo_surface_t or a cairo_t): 6562 6563 cairo_scaled_font_text_extents 6564 6565These new scaled font functions were motivated by the needs of the 6566pango library. 6567 6568Finally, a new path-construction function was added which clears the 6569current point in preparation for a new sub path. This makes cairo_arc 6570easier to use in some situations: 6571 6572 cairo_new_sub_path 6573 6574Before the 1.2 release is final we do still plan a few more API 6575additions specifically motivated by the needs of Mozilla/Firefox. 6576 6577Optimizations and bug fixes 6578--------------------------- 6579Shortly after the 1.0 maintenance series branched off the mainline 6580there was a major rework of the cairo font internals. This should 6581provide some good performance benefits, but it's also another area 6582people should look at closely for potential regressions. 6583 6584There has not yet been any widespread, systematic optimization of 6585cairo, but various performance improvements have been made, (and some 6586of them are fairly significant). So if some things seem faster than 65871.0 then things are good. If there are any performance regressions 6588compared to 1.0 then there is a real problem and we would like to hear 6589about that. 6590 6591There has been a huge number of bug fixes---too many to mention in 6592detail. Again, things should be better, and never worse compared to 65931.0. Please let us know if your testing shows otherwise. 6594 6595Release 1.0.2 (2005-10-03 Carl Worth <cworth@cworth.org>) 6596========================================================= 6597For each bug number XXXX below, see: 6598 6599 https://bugs.freedesktop.org/show_bug.cgi?id=XXXX 6600 6601for more details. 6602 6603General bug fixes 6604----------------- 6605 * 4408 - Add support for dashing of stroked curves 6606 (Carl Worth) 6607 6608 * 4409 - Fix dashing so that each dash is capped on both ends 6609 (Carl Worth) 6610 6611 * 4414 - Prevent SIGILL failures (proper use of -mmmx and -msse flags) 6612 (Sebastien Bacher, Billy Biggs) 6613 6614 * 4299 - Fix crashes with text display in multi-threaded program 6615 (Alexey Shabalin, Carl Worth) 6616 6617 * 4401 - Do not use sincos function since it is buggy on some platforms) 6618 (Tim Mooney, Carl Worth) 6619 6620 * 4245 - Fix several bugs in the test suite exposed by amd64 systems 6621 (Seemant Kulleen, Carl Worth) 6622 6623 * 4321 - Add missing byteswapping on GetImage/PutImage 6624 (Sjoerd Simons, Owen Taylor) 6625 6626 * 4220 - Make the check for rectangular trapezoids simpler and more accurate 6627 (Richard Stellingwerff, Owen Taylor) 6628 6629 * 4260 - Add missing channel-order swapping for antialised fonts 6630 (Barbie LeVile, Owen Taylor) 6631 6632 * 4283 - Fix compilation failure with aggressive inlining (gcc -O3) 6633 (Marco Manfredini, Owen Taylor) 6634 6635 * 4208 - Fix some warnings from sparse 6636 (Kjartan Maraas, Billy Biggs) 6637 6638 * 4269 - Fix to not crash when compiled with -fomit-frame-pointer 6639 (Ronald Wahl, Owen Taylor) 6640 6641 * 4263 - Improve performance for vertical gradients 6642 (Richard Stellingwerff, Owen Taylor) 6643 6644 * 4231 6645 * 4298 - Accommodate gentoo and Mandriva versions in X server vendor string check 6646 (Billy Biggs, Frederic Crozat, Owen Taylor) 6647 6648win32-specific fixes 6649-------------------- 6650 * 4599 - Fix "missing wedges" on some stroked paths (win32) 6651 (Tim Rowley, Jonathan Watt, Bertram Felgenhauer, Carl Worth, Keith Packard) 6652 6653 * 4612 - Fix disappearing text if first character out of surface (win32) 6654 (Tim Rowley) 6655 6656 * 4602 - Fix shutdown of cairo from failing intermediate, size-0 bitmaps (win32) 6657 Aka. the "white rectangles" bug from mozilla-svg testing 6658 (Tim Rowley) 6659 6660 * Various portability improvements for win32 6661 (Hans Breuer, Owen Taylor, Carl Worth) 6662 6663 * 4593 - Fix font sizes to match user expectations (win32) 6664 (Tor Lillqvist, Owen Taylor) 6665 6666 * 3927 - Fix to report metrics of size 0 for glyph-not-available (win32) 6667 (Hans Breuer, Owen Taylor, Tor Lillqvist) 6668 6669 * Add locking primitives for win32 6670 (Hans Breuer) 6671 6672xlib-specific fixes 6673------------------- 6674 * Fix crash from size-0 pixmap due to empty clip region (xlib) 6675 (Radek Doulík, Carl Worth) 6676 6677Release 1.0.0 (2005-08-24 Carl Worth <cworth@cworth.org>) 6678========================================================= 6679Experimental backends 6680--------------------- 6681 * The Glitz, PS, PDF, Quartz, and XCB backends have been declared 6682 experimental, and are not part of the API guarantees that accompany 6683 this release. They are not built by default, even when the required 6684 libraries are available, and must be enabled explicitly with 6685 --enable-ps, --enable-pdf, --enable-quartz or --enable-xcb. 6686 6687 It is very painful for us to be pushing out a major release without 6688 these backends enabled. There has been a tremendous amount of work 6689 put into each one and all are quite functional to some 6690 extent. However, each also has some limitations. And none of these 6691 backends have been tested to the level of completeness and 6692 correctness that we expect from cairo backends. 6693 6694 We do encourage people to experiment with these backends and report 6695 success, failure, or means of improving them. 6696 6697Operator behavior 6698----------------- 6699 * Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators 6700 behaved in an inconsistent and buggy fashion and could affect areas 6701 outside the clip mask. In 0.9.0, these six "unbounded" operators 6702 were fixed to consistently clear areas outside the shape but within 6703 the clip mask. This is useful behavior for an operator such as IN, 6704 but not what was expected for SOURCE and CLEAR. So, in this release 6705 the behavior of SOURCE and CLEAR has been changed again. They now 6706 affect areas only within both the source and shape. We can write 6707 the new operators as: 6708 6709 SOURCE: dest' = (mask IN clip) ? source : dest 6710 CLEAR: dest' = (mask IN clip) ? 0 : dest 6711 6712Behavior and API changes 6713------------------------ 6714 * Setting the filter on a gradient pattern would change the 6715 interpolation between color stops away from the normal linear 6716 interpolation. This dubious behavior has been removed. 6717 6718 * The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros -- 6719 implementation details that leaked into cairo.h -- have been moved 6720 into an internal header. 6721 6722 * The cairo_show_text function now advances the current point 6723 according to the total advance values of the string. 6724 6725API additions 6726------------- 6727 * cairo_set_dash can now detect error and can set 6728 CAIRO_STATUS_INVALID_DASH. 6729 6730Features 6731-------- 6732 * When compiled against recent versions of fontconfig and FreeType, 6733 artificial bold fonts can now be turned on from fonts.conf using 6734 the FC_EMBOLDEN fontconfig key. 6735 6736Optimization 6737------------ 6738 * The compositing code from the 'xserver' code tree has now been 6739 completely merged into libpixman. This includes MMX optimization of 6740 common operations. 6741 6742 * The image transformation code in libpixman has been improved and 6743 now performs significantly faster. 6744 6745Bug fixes 6746--------- 6747 * Several crashes related to corruption in the font caches have been 6748 fixed. 6749 6750 * All test cases now match pixel-for-pixel on x86 and PPC; this 6751 required fixing bugs in the compositing, stroking, and pattern 6752 rendering code. 6753 6754 * Negative dash offsets have been fixed to work correctly. 6755 6756 * The stroking of paths with multiple subpaths has now been fixed to 6757 apply caps to all subpaths rather than just the last one. 6758 6759 * Many build fixes for better portability on various systems. 6760 6761 * Lots of other bug fixes, but we're too tired to describe them in 6762 more detail here. 6763 6764Release 0.9.2 (2005-08-13 Carl Worth <cworth@cworth.org>) 6765========================================================= 6766Release numbering 6767----------------- 6768 * You will notice that this release jumped from 0.9.0 to 0.9.2. We've 6769 decided to use an odd micro version number (eg. 0.9.1) to indicate 6770 in-progress development between releases. As soon as 0.9.2 is 6771 tagged, the version will be incremented in CVS to 0.9.3 where it 6772 will stay until just before 0.9.4 is built, uploaded, and tagged. 6773 6774 So, even-micro == a released version, odd-micro == something in-between. 6775 6776Libpixman dependency dropped 6777---------------------------- 6778 * As of this release, the dependency on an external libpixman has 6779 been dropped. Instead, the code from libpixman needed for cairo has 6780 been incorporated into the cairo source tree. The motivation for 6781 this change is that while cairo's API is stable and ready to be 6782 maintained after the 1.0 release, libpixman's API is not, so we do 6783 not want to expose it at this time. 6784 6785 Also, the incorporation of libpixman into cairo also renames all 6786 previously-public libpixman symbols in order to avoid any conflict 6787 with a future release of libpixman 6788 6789API additions 6790------------- 6791 * Macros and functions have been added so that the version of cairo 6792 can be queried at either compile-time or at run-time. The version 6793 is made available as both a human-readable string and as a single 6794 integer: 6795 6796 CAIRO_VERSION_STRING eg. "0.9.2" 6797 CAIRO_VERSION eg. 000902 6798 6799 const char* 6800 cairo_version_string (void); /* eg. "0.9.2" */ 6801 6802 int 6803 cairo_version (void); /* eg. 000902 */ 6804 6805 A macro is provided to convert a three-part component version into 6806 the encoded single-integer form: 6807 6808 CAIRO_VERSION_ENCODE(X,Y,Z) 6809 6810 For example, the CAIRO_VERSION value of 000902 is obtained as 6811 CAIRO_VERSION_ENCODE(0,9,2). The intent is to make version 6812 comparisons easy, either at compile-time: 6813 6814 #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(0,9,2) 6815 ... 6816 #endif 6817 6818 Or at run-time: 6819 6820 if (cairo_version() >= CAIRO_VERSION_ENCODE(0,9,2)) { /* ... */ } 6821 6822Thread safety 6823------------- 6824 * This release adds pthread-based locking (when available) to make 6825 the caches used by cairo safe for threaded programs. Some may 6826 remember a failed experiment with this locking between the 0.5.1 6827 and 0.5.2 snapshots, (where even single-threaded programs that 6828 linked with -lpthread would deadlock). We believe that that problem 6829 has been fixed, so we are looking forward to testing and reports 6830 from users with threaded applications. 6831 6832Bug fixes 6833--------- 6834 * The XCB and Quartz backends failed to compiled in the 0.9.0 release 6835 due to minor syntax errors. These have now been fixed. 6836 6837 * Various crashes in glitz and pixman due to size 0 glyphs have been 6838 fixed. 6839 6840Release 0.9.0 (2005-08-08 Carl Worth <cworth@cworth.org>) 6841========================================================= 6842Soname change 6843------------- 6844 * In all prior snapshots, the libtool library versioning was set to 6845 1:0:0. As this release is intended to mark the beginning of 6846 backwards-compatible releases, the versioning has been incremented 6847 to 2:0:0. You will notice that the numeric extension on the 6848 installed library filename will change similarly. 6849 6850 This change will also require all cairo-using applications to be 6851 recompiled. We recognize that this may cause some frustration since 6852 this release is backwards-compatible with 0.6.0 and in that sense 6853 "shouldn't" require re-compilation. However, since all historical 6854 snapshots have used the same 1:0:0 version in spite of incompatible 6855 API changes between them, it was essential that the upcoming 1.0 6856 release series have distinct library versioning. 6857 6858 All future releases will use the library versioning to properly 6859 indicate compatibility between releases. So, any application 6860 re-compiled now to work with the 0.9.0 will not need to be 6861 recompiled when a compatible 1.0 release of cairo is made in the 6862 future. 6863 6864API additions 6865------------- 6866 * Add new function calls to set/get the current antialiasing mode in 6867 the graphics state: 6868 6869 cairo_set_antialias 6870 cairo_get_antialias 6871 6872 This call accepts the same modes recently added for font options 6873 (NONE or GRAY) but affects the rendering of geometry other than 6874 text. The intent of this call is to enable more precise control of 6875 which pixels are affected by each operation, for example to allow 6876 for full-scene antialiasing for seam-free rendering. It is not 6877 expected that non-antialiased rendering will perform better than 6878 anti-aliased rendering. 6879 6880 * Three new functions were added to provide support for mixed cairo- 6881 and non-cairo drawing to the same surface: 6882 6883 cairo_surface_mark_dirty 6884 cairo_surface_mark_dirty_rectangle 6885 cairo_surface_flush 6886 6887 * The return type of the several "reference" functions was change, 6888 (API compatibly), from void to the same type as the argument. The 6889 affected functions are: 6890 6891 cairo_font_face_reference 6892 cairo_scaled_font_reference 6893 cairo_pattern_reference 6894 cairo_surface_reference 6895 cairo_reference 6896 6897 This allows a convenient way to assign and reference in a single 6898 statement. 6899 6900Semantic changes 6901---------------- 6902 * The behavior of cairo_set_source with a pattern with a non-identity 6903 matrix was previously not well-defined. The new behavior is as 6904 follows: 6905 6906 The pattern's transformation matrix will be locked to the 6907 user space in effect at the time of cairo_set_source(). This means 6908 that further modifications of the CTM will not affect the source 6909 pattern. 6910 6911cairo-win32 6912----------- 6913 * Some portability improvements, (eg. workaround for missing stdint.h). 6914 6915cairo-ft 6916-------- 6917 * Updated to allow compilation with older versions of freetype. 6918 6919Bug fixes 6920--------- 6921 * Fix the unbounded operators to actually produce a correct result, 6922 (previously the results were artificially restricted to the 6923 bounding box of whatever shape was being drawn rather than 6924 extending out infinitely). The fixed operators are: 6925 6926 CAIRO_OPERATOR_CLEAR 6927 CAIRO_OPERATOR_SOURCE 6928 CAIRO_OPERATOR_OUT 6929 CAIRO_OPERATOR_IN 6930 CAIRO_OPERATOR_DEST_IN 6931 CAIRO_OPERATOR_DEST_ATOP 6932 6933 * Fix cairo_mask and cairo_mask_surface to transform the mask by the 6934 current transformation matrix (CTM). 6935 6936 * Fix cairo_set_source to lock the CTM used to transform the pattern. 6937 6938 * Workaround for X server Render bug involving repeating patterns 6939 with a general transformation matrix. 6940 6941 * cairo_get_font_face fixed to return a "nil" font face object rather 6942 than NULL on error. 6943 6944 * cairo_set_font_face fixed to not crash if given a NULL font face, 6945 (which is the documented interface for restoring the default font 6946 face). 6947 6948 * Fix xlib glyphset caching to not try to free a NULL glyph. 6949 6950Snapshot 0.6.0 (2005-07-28 Carl Worth <cworth@cworth.org>) 6951========================================================== 6952API changes 6953----------- 6954* The prototypes of the following functions have changed: 6955 6956 cairo_xlib_surface_create_with_xrender_format 6957 cairo_xlib_surface_create_for_bitmap 6958 6959 A Screen* parameter has been added to each. This allows the cairo 6960 xlib backend to work correctly with multi-head X servers. 6961 6962* The following function has been modified: 6963 6964 cairo_scaled_font_create 6965 6966 to accept a cairo_font_options_t*. See below fore more details. 6967 6968* All opaque, reference-counted cairo objects have now been moved to a 6969 standard error-handling scheme. The new objects to receive this 6970 treatment are cairo_font_face_t, cairo_scaled_font_t, and 6971 cairo_surface_t. (Previous snapshots already provided this scheme 6972 for cairo_t, cairo_path_t, and cairo_pattern_t.) 6973 6974 This changes two functions to have a return type of void rather than 6975 cairo_status_t: 6976 6977 cairo_scaled_font_extent 6978 cairo_surface_finish 6979 6980 And significantly, none of the create functions for any of the 6981 objects listed above will return NULL. The pointer returned from any 6982 function will now always be a valid pointer and should always be 6983 passed to the corresponding destroy function when finished 6984 6985 The simplest strategy for porting code is to switch from: 6986 6987 object = cairo_<object>_create (); 6988 if (object == NULL) 6989 goto BAILOUT; 6990 6991 /* act on object */ 6992 6993 cairo_<object>_destroy (object); 6994 6995 to: 6996 6997 object = cairo_<object>_create (); 6998 if (cairo_<object>_status (object)) 6999 goto BAILOUT; 7000 7001 /* act on object */ 7002 7003 cairo_<object>_destroy (object); 7004 7005 But significantly, it is not required to check for an error status 7006 before the "act on object" portions of the code above. All 7007 operations on an object with an error status are, by definition, 7008 no-ops without side effect. So new code might be written in an 7009 easier-to-read style of: 7010 7011 object = cairo_<object>_create (); 7012 7013 /* act on object */ 7014 7015 cairo_<object>_destroy (object); 7016 7017 with cairo_<object>_status checks placed only at strategic 7018 locations. For example, passing an error object to another object, 7019 (eg. cairo_set_source with an in-error pattern), will propagate the 7020 error to the subsequent object (eg. the cairo_t). This means that 7021 error checking can often be deferred even beyond the destruction of 7022 a temporary object. 7023 7024API additions 7025------------- 7026* New functions for checking the status of objects that have been 7027 switched to the common error-handling scheme: 7028 7029 cairo_font_face_status 7030 cairo_scaled_font_status 7031 cairo_surface_status 7032 7033* The _cairo_error function which was added in 0.5.1 has now been made 7034 much more useful. In 0.5.1 only errors on cairo_t objects passed 7035 through _cairo_error. Now, an error on any object should pass 7036 through _cairo_error making it much more reliable as a debugging 7037 mechanism for finding when an error first occurs. 7038 7039* Added new font options support with a myriad of functions: 7040 7041 cairo_font_options_create 7042 cairo_font_options_copy 7043 cairo_font_options_destroy 7044 7045 cairo_font_options_status 7046 7047 cairo_font_options_merge 7048 cairo_font_options_equal 7049 cairo_font_options_hash 7050 7051 cairo_font_options_set_antialias 7052 cairo_font_options_get_antialias 7053 cairo_font_options_set_subpixel_order 7054 cairo_font_options_get_subpixel_order 7055 cairo_font_options_set_hint_style 7056 cairo_font_options_get_hint_style 7057 cairo_font_options_set_hint_metrics 7058 cairo_font_options_get_hint_metrics 7059 7060 cairo_surface_get_font_options 7061 7062 cairo_ft_font_options_substitute 7063 7064 cairo_set_font_options 7065 cairo_get_font_options 7066 7067 This new font options support allows the application to have much 7068 more fine-grained control over how fonts are rendered. 7069 Significantly, it also allows surface backends to have some 7070 influence over the process. For example, the xlib backend now 7071 queries existing Xft properties to set font option defaults. 7072 7073* New function: 7074 7075 cairo_xlib_surface_set_drawable 7076 7077 which allows the target drawable for an xlib cairo_surface_t to be 7078 changed to another with the same format, screen, and display. This 7079 is necessary in certain double-buffering techniques. 7080 7081New features 7082------------ 7083* Sub-pixel text antialiasing is now supported. 7084 7085Bug fixes 7086--------- 7087* Fixed assertion failure in cairo_surface_create_similar when 7088 application commits an error by passing a cairo_format_t rather than 7089 a cairo_content_t. 7090 7091* Avoid division by zero in various places (cairo-ft). 7092 7093* Fix infinite loop when using non-default visuals (cairo-xlib). 7094 7095* Eliminate segfault in cairo_image_surface_create_from_png_stream. 7096 7097* Prevent errant sign-extension of masks on 64-bit architectures 7098 (cairo-xlib and cairo-xcb). 7099 7100* Other miscellaneous fixes. 7101 7102Snapshot 0.5.2 (2005-07-18 Carl Worth <cworth@cworth.org>) 7103========================================================== 7104API changes 7105----------- 7106* New functions for creating patterns of a single color: 7107 7108 cairo_pattern_create_rgb 7109 cairo_pattern_create_rgba 7110 7111* Change cairo_surface_create_similar to accept a new type of 7112 cairo_content_t rather than cairo_format_t: 7113 7114 typedef enum _cairo_content { 7115 CAIRO_CONTENT_COLOR = 0x1000, 7116 CAIRO_CONTENT_ALPHA = 0x2000, 7117 CAIRO_CONTENT_COLOR_ALPHA = 0x3000 7118 } cairo_content_t; 7119 7120* Add new CAIRO_FORMAT_VALID and CAIRO_CONTENT_VALID macros. 7121 7122* Remove unused status value: 7123 7124 CAIRO_STATUS_NO_TARGET_SURFACE 7125 7126* Add new status values: 7127 7128 CAIRO_STATUS_INVALID_STATUS 7129 7130* Require libpixman >= 0.1.5 (for necessary bug fixes) 7131 7132Bug fixes 7133--------- 7134* Fix cairo_surface_write_to_png for RGB24 images. 7135 7136* Fix broken metrics and rendering for bitmap fonts. Add mostly 7137 useless bitmap glyph transformation. 7138 7139* Fix glyph caches to not eject entries that might be immediately 7140 needed, (fixing intermittent crashes when rendering text). 7141 7142* Fix all memory leaks found by running "make check-valgrind". 7143 7144ATSUI backend changes 7145--------------------- 7146* Allow building against < 10.3 SDK. 7147 7148* Prevent crash on empty strings. 7149 7150Glitz backend changes 7151--------------------- 7152* Require glitz >= 0.4.4. 7153 7154* Use frame buffer objects instead of pbuffers for accelerated 7155 offscreen drawing. 7156 7157* Minor improvement to gradient pattern creation. 7158 7159PostScript backend fixes 7160------------------------ 7161* Rewrite of the PS backend to generate more interesting output that 7162 the old big-image implementation. 7163 7164Win32 backend fixes 7165------------------- 7166* Implement glyph path support. 7167 7168* Fix swap of blue and green values in the fill_rectangles path. 7169 7170Xlib backend fixes 7171------------------ 7172* Add optimization to use XCopyArea rather than XRenderComposite when 7173 transforming only with an integer translation, and using SOURCE 7174 operator or OVER with a source pattern without alpha. 7175 7176Snapshot 0.5.1 (2005-06-20 Carl Worth <cworth@cworth.org>) 7177========================================================== 7178API changes 7179----------- 7180* Removed cairo_status_string(cairo_t*) and add 7181 cairo_status_to_string(cairo_status_t) in its place. Code using 7182 cairo_status_string can be ported forward as follows: 7183 7184 cairo_status (cr); 7185 -> 7186 cairo_status_to_string (cairo_status (cr)); 7187 7188* Removed the BAD_NESTING restriction which means that two different 7189 cairo_t objects can now interleave drawing to the same 7190 cairo_surface_t without causing an error. 7191 7192* The following functions which previously had a return type of 7193 cairo_status_t now have a return type of void: 7194 7195 cairo_pattern_add_color_stop_rgba 7196 cairo_pattern_set_matrix 7197 cairo_pattern_get_matrix 7198 cairo_pattern_set_extend 7199 cairo_pattern_set_filter 7200 7201 See discussion of cairo_pattern_status below for more details. 7202 7203API additions 7204------------- 7205* Improved error handling: 7206 7207 cairo_status_t 7208 cairo_pattern_status (cairo_pattern_t *pattern); 7209 7210 This snapshot expands the status-based error handling scheme from 7211 cairo_t to cairo_path_t and cairo_pattern_t. It also expands the 7212 scheme so that object-creating functions, (cairo_create, 7213 cairo_pattern_create_*, cairo_copy_path_*), are now guaranteed to 7214 not return NULL. Instead, in the case of out-of-memory these 7215 functions will return a static object with 7216 status==CAIRO_STATUS_NO_MEMORY. The status can be checked with the 7217 functions cairo_status and cairo_pattern_status, or by direct 7218 inspection of the new status field in cairo_path_t. 7219 7220 Please note that some objects, including cairo_surface_t and all of 7221 the font-related objects have not been converted to this 7222 error-handling scheme. 7223 7224* In addition to the above changes, a new private function has been added: 7225 7226 _cairo_error 7227 7228 This function can be used to set a breakpoint in a debugger to make 7229 it easier to find programming error in cairo-using code. (Currently, 7230 _cairo_error is called when any error is detected within a cairo_t 7231 context, but is not called for non-cairo_t errors such as for 7232 cairo_path_t and cairo_pattern_t). 7233 7234* Fixed cairo_path_data_t so that its enum is visible to C++ code, (as 7235 cairo_path_data_type_t). 7236 7237Performance improvements 7238------------------------ 7239* Made a minor performance improvement for clipping, (restrict clip 7240 surface to the new intersected bounds). 7241 7242* Optimize rendering of a solid source pattern with a pixel-aligned 7243 rectangular path to use backend clipping rather than rasterization 7244 and backend compositing. 7245 7246* Optimize cairo_paint_with_alpha to defer to cairo_paint when alpha 7247 is 1.0. 7248 7249Bug fixes 7250--------- 7251* Fixed memory leak in cairo_copy_path. 7252 7253* A build fix for non-srcdir builds. 7254 7255PDF backend fixes 7256----------------- 7257* New support for path-based clipping. 7258 7259* Fix for text rotated to angles other than multiples of π/2. 7260 7261Win32 backend fixes 7262------------------- 7263* Fix for text extents. 7264 7265Xlib backend 7266------------ 7267* Implemented a complex workaround for X server bug[*] related to 7268 Render-based compositing with untransformed, repeating source 7269 pictures. The workaround uses core Xlib when possible for 7270 performance, (ie. with CAIRO_OPERATOR_SOURCE or CAIRO_OPERATOR_OVER 7271 with an opaque source surface), and falls back to the pixman 7272 image-based compositing otherwise. 7273 7274 [*] https://bugs.freedesktop.org/show_bug.cgi?id=3566 7275 7276* Various bug fixes, particularly in the fallback paths. 7277 7278Snapshot 0.5.0 (2005-05-17 Carl Worth <cworth@cworth.org>) 7279========================================================== 7280This is a pretty big, and fairly significant snapshot. It represents 7281between 2 and 3 months of solid work from a lot of people on improving 7282the API as much as possible. I'd like to express my appreciation and 7283congratulations to everyone who has worked on the big API Shakeup, 7284(whether in email battles over names, or fixing my silly bugs). 7285 7286This snapshot will require some effort on the part of users, since 7287there are a _lot_ of API changes (ie. no cairo program ever written is 7288safe --- they're all broken now in at least one way). But, in spite of 7289that, we do encourage everyone to move their code to this snapshot as 7290soon as possible. And we're doing everything we can think of to make 7291the transition as smooth as possible. 7292 7293The idea behind 0.5 is that we've tried to make every good API change 7294we could want now, and get them all done with. That is, between now 7295and the 1.0 release of cairo, we expect very few new API changes, 7296(though some will certainly sneak in). We will have some significant 7297additions, but the pain of moving code from cairo 0.4 to cairo 0.5 7298should be a one time experience, and things should be much smoother as 7299we continue to move toward cairo 1.0. 7300 7301And with so many changes coming out for the first time in this 0.5 7302release, we really do need a lot of people trying this out to make 7303sure the ideas are solid before we freeze the API in preparation for 7304the 1.0 release. 7305 7306OK, enough introduction. Here is a (not-quite-complete) description of 7307the API removals, changes and additions in this snapshot, (compared to 73080.4.0) 7309 7310API removals 7311============ 7312The following public functions have been removed: 7313 7314- cairo_set_target_* 7315 7316 This is a big change. See the description of cairo_create in 7317 the API changes section for how to deal with this. 7318 7319- cairo_set_alpha 7320 7321 Alpha blending hasn't gone away; there's just a much more 7322 unified rendering model now. Almost all uses of 7323 cairo_set_alpha will be trivially replaced with 7324 cairo_set_source_rgba and a few others will be replaced just 7325 as easily with cairo_paint_with_alpha. 7326 7327- cairo_show_surface 7328 7329 Another useful function that we realized was muddling up the 7330 rendering model. The replacement is quite easy: 7331 cairo_set_source_surface and cairo_paint. 7332 7333- cairo_matrix_create 7334- cairo_matrix_destroy 7335- cairo_matrix_copy 7336- cairo_matrix_get_affine 7337 7338 These functions supported an opaque cairo_matrix_t. We now 7339 have an exposed cairo_matrix_t structure, so these can be 7340 dropped. 7341 7342- cairo_surface_set_repeat 7343- cairo_surface_set_matrix 7344- cairo_surface_set_filter 7345 7346 These properties don't belong on surfaces. If you were using 7347 them, you'll just want to instead use 7348 cairo_pattern_create_for_surface and then set these properties 7349 on the pattern. 7350 7351- cairo_copy 7352 7353 This was a confusing function and hopefully nobody will miss 7354 it. But if you really don't find cairo_save/restore adequate, 7355 let us know and we have another idea for a potential 7356 replacement. 7357 7358And while we're on the subject of removals, we carefully tightened up 7359the cairo header files so they no longer gratuitously include header 7360files that are not strictly necessary, (stdio.h, stdint.h, pixman.h, 7361Xrender.h, etc. and their dependencies). This may lead to some 7362surprising errors, so keep your eyes open for that. 7363 7364API changes 7365=========== 7366Here are some of the API changes that have occurred: 7367 7368~ cairo_create(void) -> cairo_create(cairo_surface_t *) 7369 7370 This is the big change that breaks every program. The ability 7371 to re-target a cairo_t was not particularly useful, but it did 7372 introduce a lot of muddy semantic questions. To eliminate 7373 that, cairo_create now requires its target surface to be 7374 passed in at creation time. This isn't too hard to cope with 7375 as the typical first operation after cairo_create was often 7376 cairo_set_target_foo. So the order of those two swap and the 7377 application instead has cairo_foo_surface_create, then 7378 cairo_create. 7379 7380~ cairo_current_* -> cairo_get_* 7381 7382 We had a strange mixture of cairo_get and cairo_current 7383 functions. They've all been standardized on cairo_get, (though 7384 note one is cairo_get_current_point). 7385 7386~ CAIRO_OPERATOR_SRC -> CAIRO_OPERATOR_SOURCE 7387~ CAIRO_OPERATOR_OVER_REVERSE -> CAIRO_OPERATOR_DEST_OVER 7388 7389 Many of the cairo_operator_t symbolic values were renamed to 7390 reduce the amount of abbreviation. The confusing "OP_REVERSE" 7391 naming was also changed to use "DEST_OP" instead which is 7392 easier to read and has wider acceptance in other 7393 libraries/languages. 7394 7395~ cairo_set_pattern -> cairo_set_source 7396~ cairo_set_rgb_color -> cairo_set_source_rgb 7397 7398 All of the various functions that changed the source 7399 color/pattern were unified to use cairo_set_source names to 7400 make the relation more clear. 7401 7402~ cairo_transform_point -> cairo_user_to_device 7403~ cairo_transform_distance -> cairo_user_to_device_distance 7404~ cairo_inverse_transform_point -> cairo_device_to_user 7405~ cairo_inverse_transform_distance -> cairo_device_to_user_distance 7406 7407 These names just seemed a lot more clear. 7408 7409~ cairo_init_clip -> cairo_reset_clip 7410~ cairo_concat_matrix -> cairo_transform 7411 7412 More abbreviation elimination 7413 7414~ cairo_current_path -> cairo_copy_path 7415~ cairo_current_path_flat -> cairo_copy_path_flat 7416 7417 The former mechanism for examining the current path was a 7418 function that required 3 or 4 callbacks. This was more 7419 complexity than warranted in most situations. The new 7420 cairo_copy_path function copies the current path into an 7421 exposed data structure, and the documentation provides a 7422 convenient idiom for navigating the path data. 7423 7424API additions 7425------------- 7426+ cairo_paint 7427 7428 A generalized version of the painting operators cairo_stroke 7429 and cairo_fill. The cairo_paint call applies the source paint 7430 everywhere within the current clip region. Very useful for 7431 clearing a surface to a solid color, or painting an image, 7432 (see cairo_set_source_surface). 7433 7434+ cairo_paint_with_alpha 7435 7436 Like cairo_paint but applying some alpha to the source, 7437 (making the source paint translucent, eg. to blend an image on 7438 top of another). 7439 7440+ cairo_mask 7441 7442 A more generalized version of cairo_paint_with_alpha which 7443 allows a pattern to specify the amount of translucence at each 7444 point rather than using a constant value everywhere. 7445 7446+ cairo_mask_surface 7447 7448 A convenience function on cairo_mask for when the mask pattern 7449 is already contained within a surface. 7450 7451+ cairo_surface_set_user_data 7452+ cairo_surface_get_user_data 7453+ cairo_font_face_set_user_data 7454+ cairo_font_face_get_user_data 7455 7456 Associate arbitrary data with a surface or font face for later 7457 retrieval. Get notified when a surface or font face object is 7458 destroyed. 7459 7460+ cairo_surface_finish 7461 7462 Allows the user to instruct cairo to finish all of its 7463 operations for a given surface. This provides a safe point for 7464 doing things such as flushing and closing files that the 7465 surface may have had open for writing. 7466 7467+ cairo_fill_preserve 7468+ cairo_stroke_preserve 7469+ cairo_clip_preserve 7470 7471 One interesting change in cairo is that the path is no longer 7472 part of the graphics state managed by 7473 cairo_save/restore. This allows functions to construct paths 7474 without interfering with the graphics state. But it prevents 7475 the traditional idiom for fill-and-stroke: 7476 7477 cairo_save; cairo_fill; cairo_restore; cairo_stroke 7478 7479 Instead we know have alternate versions cairo cairo_fill, 7480 cairo_stroke, and cairo_clip that preserve the current path 7481 rather than consuming it. So the idiom now becomes simply: 7482 7483 cairo_fill_preserve; cairo_stroke 7484 7485+ cairo_surface_write_to_png 7486+ cairo_surface_write_to_png_stream 7487 7488 In place of a single PNG backend, now a surface created 7489 through any backend (except PDF currently) can be written out 7490 to a PNG image. 7491 7492+ cairo_image_surface_create_from_png 7493+ cairo_image_surface_create_from_png_stream 7494 7495 And its just as easy to load a PNG image into a surface as well. 7496 7497+ cairo_append_path 7498 7499 With the new, exposed path data structure, it's now possible 7500 to append bulk path data to the current path, (rather than 7501 issuing a long sequence of cairo_move_to/line_to/curve_to 7502 function calls). 7503 7504Xlib and XCB backends 7505--------------------- 7506 7507Any cairo_format_t and Colormap arguments have been dropped from 7508cairo_xlib_surface_create. There are also two new 7509cairo_xlib|xcb_surface_create functions: 7510 7511 cairo_xlib|xcb_surface_create_for_bitmap 7512 (Particular for creating A1 surfaces) 7513 cairo_xlib|xcb_surface_create_with_xrender_format 7514 (For any other surface types, not described by a Visual*) 7515 7516All of these surface create functions now accept width and height. In 7517addition, there are new cairo_xlib|xcb_surface_set_size functions 7518which must be called each time a window that is underlying a surface 7519changes size. 7520 7521Print backends (PS and PDF) 7522--------------------------- 7523The old FILE* based interfaces have been eliminated. In their place we 7524have two different functions. One accepts a simple const char 7525*filename. The other is a more general function which accepts a 7526callback write function and a void* closure. This should allow the 7527flexibility needed to hook up with various stream object in many 7528languages. 7529 7530In addition, when specifying the surface size during construction, the 7531units are now device-space units (ie. points) rather than inches. This 7532provides consistency with all the other surface types and also makes 7533it much easier to reason about the size of the surface when drawing to 7534it with the default identity matrix. 7535 7536Finally, the DPI parameters, which are only needed to control the 7537quality of fallbacks, have been made optional. Nothing is required 7538during surface_create (300 DPI is assumed) and 7539cairo_ps|pdf_surface_set_dpi can be used to set alternate values if 7540needed. 7541 7542Font system 7543----------- 7544Owen very graciously listened to feedback after the big font rework he 7545had done for 0.4, and came up with way to improve it even more. In 0.4 7546there was a cairo_font_t that was always pre-scaled. Now, there is an 7547unscaled cairo_font_face_t which is easier to construct, (eg. no 7548scaling matrix required) and work with, (it can be scaled and 7549transformed after being set on the graphics state). And the font size 7550manipulation functions are much easier. You can set an explicit size 7551and read/modify/write the font matrix with: 7552 7553 cairo_set_font_size 7554 cairo_get_font_matrix 7555 cairo_set_font_matrix 7556 7557(Previously you could only multiply in a scale factor or a matrix.) A 7558pleasant side effect is that we can (and do) now have a default font 7559size that is reasonable, as opposed to the old default height of one 7560device-space unit which was useless until scaled. 7561 7562Of course, the old pre-scaled font had allowed some performance 7563benefits when getting many metrics for a font. Those benefits are 7564still made available through the new cairo_scaled_font_t. And a 7565cairo_font_face_t can be "promoted" to a cairo_scaled_font_t by 7566suppling a font_matrix and the desired CTM. 7567 7568Quartz backend 7569-------------- 7570Tim Rowley put in the work to bring the Quartz backend back after it 7571had been disabled in the 0.4.0 snapshot. He was not able to bring back 7572the function that allows one to create a cairo_font_t from an ATSUI 7573style: 7574 7575 cairo_font_t * 7576 cairo_atsui_font_create (ATSUStyle style); 7577 7578because he didn't have a test case for it. If you care about this 7579function, please provide a fairly minimal test and we'll try to bring 7580it back in an upcoming snapshot. 7581 7582Snapshot 0.4.0 (2005-03-08 Carl Worth <cworth@cworth.org>) 7583========================================================== 7584New documentation 7585----------------- 7586Owen Taylor has converted cairo's documentation system to gtk-doc and 7587has begun some long-needed work on the documentation, which can now be 7588viewed online here: 7589 7590 https://cairographics.org/manual/ 7591 7592New backend: win32 7593------------------ 7594This is the first snapshot to include a functional win32 backend, 7595(thanks to Owen Taylor). The interface is as follows: 7596 7597 #include <cairo-win32.h> 7598 7599 void 7600 cairo_set_target_win32 (cairo_t *cr, 7601 HDC hdc); 7602 7603 cairo_surface_t * 7604 cairo_win32_surface_create (HDC hdc); 7605 7606 cairo_font_t * 7607 cairo_win32_font_create_for_logfontw (LOGFONTW *logfont, 7608 cairo_matrix_t *scale); 7609 7610 cairo_status_t 7611 cairo_win32_font_select_font (cairo_font_t *font, 7612 HDC hdc); 7613 7614 void 7615 cairo_win32_font_done_font (cairo_font_t *font); 7616 7617 double 7618 cairo_win32_font_get_scale_factor (cairo_font_t *font); 7619 7620And see also the documentation at: 7621 7622https://cairographics.org/manual/cairo-Microsoft-Windows-Backend.html 7623 7624Disabled backend: quartz 7625------------------------ 7626Unfortunately, the quartz backend code is currently out of date with 7627respect to some recent backend interface changes. So, the quartz 7628backend is disabled in this snapshot. 7629 7630If the quartz backend is brought up-to-date before the next snapshot, 7631we would be glad to make a 0.4.1 snapshot that re-enables it, (we do 7632not expect many more big backend interface changes). 7633 7634API Changes 7635----------- 7636The font system has been revamped, (as Owen Taylor's work with 7637integrating pango and cairo gave us the first serious usage of the 7638non-toy font API). 7639 7640One fundamental, user-visible change is that the cairo_font_t object 7641now represents a font that is scaled to a particular device 7642resolution. Further changes are described below. 7643 7644 cairo.h 7645 ------- 7646 Removed cairo_font_set_transform and cairo_font_current_transform. 7647 7648 Added cairo_font_extents and cairo_font_glyph_extents. See 7649 documentation for details: 7650 7651 https://cairographics.org/manual/cairo-cairo-t.html#cairo-font-extents 7652 7653 cairo-ft.h 7654 ---------- 7655 The cairo_ft_font API changed considerably. Please see the 7656 documentation for details: 7657 7658 https://cairographics.org/manual/cairo-FreeType-Fonts.html 7659 7660Performance 7661----------- 7662Make the fast-path clipping (pixel-aligned rectangles) faster. 7663 7664Add optimization for applying a constant alpha to a pattern. 7665 7666Optimize gradients that are horizontal or vertical in device space. 7667 7668Xlib: When RENDER is not available, use image surfaces for 7669intermediate surfaces rather than xlib surfaces. 7670 7671Backend-specific changes 7672------------------------ 7673 Glitz 7674 ----- 7675 Major update to glitz backend. The output quality should now be just 7676 as good as the image and xlib backends. 7677 7678 Track changes to glitz 0.4.0. 7679 7680 PDF 7681 --- 7682 Various improvements to produce more conformant output. 7683 7684Internals 7685--------- 7686David Reveman contributed a large re-work of the cairo_pattern_t 7687implementation, providing cleaner code and more optimization 7688opportunities. 7689 7690 Backend interface changes 7691 ------------------------- 7692 Rework backend interface to accept patterns, not surfaces for source 7693 and mask. 7694 7695 Remove set_matrix, set_filter, and set_repeat functions. 7696 7697 More sophisticated backend interface for image fallbacks, 7698 ({acquire,release}_{source,dest}_image() and clone_similar). 7699 7700Bug fixes 7701--------- 7702Only install header files for backends that have been compiled. 7703 7704Fixed some rounding errors leading to incorrectly placed glyphs. 7705 7706Many other minor fixes. 7707 7708Snapshot 0.3.0 (2005-01-21 Carl Worth <cworth@cworth.org>) 7709========================================================== 7710Major API changes 7711----------------- 77121) The public header files will no longer be directly installed into 7713 the system include directory. They will now be installed in a 7714 subdirectory named "cairo", (eg. in /usr/include/cairo rather than 7715 in /usr/include). 7716 7717 As always, the easiest way for applications to discover the 7718 location of the header file is to let pkg-config generate the 7719 necessary -I CFLAGS and -L/-l LDFLAGS. For example: 7720 7721 cc `pkg-config --cflags --libs cairo` -o foo foo.c 7722 7723 IMPORTANT: Users with old versions of cairo installed will need to 7724 manually remove cairo.h and cairo-features.h from the 7725 system include directories in order to prevent the old 7726 headers from being used in preference to the new ones. 7727 77282) The backend-specific portions of the old monolithic cairo.h have 7729 been split out into individual public header files. The new files 7730 are: 7731 7732 cairo-atsui.h 7733 cairo-ft.h 7734 cairo-glitz.h 7735 cairo-pdf.h 7736 cairo-png.h 7737 cairo-ps.h 7738 cairo-quartz.h 7739 cairo-xcb.h 7740 cairo-xlib.h 7741 7742 Applications will need to be modified to explicitly include the new 7743 header files where appropriate. 7744 77453) There are two new graphics backends in this snapshot, a PDF 7746 backend, and a Quartz backend. There is also one new font backend, 7747 ATSUI. 7748 7749PDF backend 7750----------- 7751Kristian Høgsberg has contributed a new backend to allow cairo-based 7752applications to generate PDF output. The interface for creating a PDF 7753surface is similar to that of the PS backend, as can be seen in 7754cairo-pdf.h: 7755 7756 void 7757 cairo_set_target_pdf (cairo_t *cr, 7758 FILE *file, 7759 double width_inches, 7760 double height_inches, 7761 double x_pixels_per_inch, 7762 double y_pixels_per_inch); 7763 7764 cairo_surface_t * 7765 cairo_pdf_surface_create (FILE *file, 7766 double width_inches, 7767 double height_inches, 7768 double x_pixels_per_inch, 7769 double y_pixels_per_inch); 7770 7771Once a PDF surface has been created, applications can draw to it as 7772any other cairo surface. 7773 7774This code is still a bit rough around the edges, and does not yet 7775support clipping, surface patterns, or transparent gradients. Text 7776only works with TrueType fonts at this point and only black text is 7777supported. Also, the size of the generated PDF files is currently 7778quite big. 7779 7780Kristian is still actively developing this backend, so watch this 7781space for future progress. 7782 7783Quartz backend 7784-------------- 7785Calum Robinson has contributed a new backend to allow cairo 7786applications to target native Mac OS X windows through the Quartz 7787API. Geoff Norton integrated this backend into the current 7788configure-based build system, while Calum also provided Xcode build 7789support in the separate "macosx" module available in CVS. 7790 7791The new interface, available in cairo-quartz.h, is as follows: 7792 7793 void 7794 cairo_set_target_quartz_context (cairo_t *cr, 7795 CGContextRef context, 7796 int width, 7797 int height); 7798 7799 cairo_surface_t * 7800 cairo_quartz_surface_create (CGContextRef context, 7801 int width, 7802 int height); 7803 7804There is an example program available in CVS in cairo-demo/quartz. It 7805is a port of Keith Packard's fdclock program originally written for 7806the xlib backend. A screenshot of this program running on Mac OS X is 7807available here: 7808 7809 https://cairographics.org/~cworth/images/fdclock-quartz.png 7810 7811ATSUI font backend 7812------------------ 7813This new font backend complements the Quartz backend by allowing 7814applications to use native font selection on Mac OS X. The interface 7815is a single new function: 7816 7817 cairo_font_t * 7818 cairo_atsui_font_create (ATSUStyle style); 7819 7820Minor API changes 7821----------------- 7822Prototype for non-existent function "cairo_ft_font_destroy" removed. 7823 7824Now depends on libpixman 0.1.2 or newer, (0.1.3 is being released 7825concurrently and has some useful performance improvements). 7826 7827Default paint color is now opaque black, (was opaque white). Default 7828background color is transparent (as before). 7829 7830Renamed "struct cairo" to "struct _cairo" to free up the word "cairo" 7831from the C++ identifier name space. 7832 7833Functions returning multiple return values through provided pointers, 7834(cairo_matrix_get_affine, cairo_current_point, and 7835cairo_current_color_rgb), will now accept NULL for values the user 7836wants to ignore. 7837 7838CAIRO_HAS_FREETYPE_FONT has now been renamed to CAIRO_HAS_FT_FONT. 7839 7840Performance improvements 7841------------------------ 7842Alexander Larsson provided some fantastic performance improvements 7843yielding a 10000% performance improvement in his application, (when 7844also including his performance work in libpixman-0.1.3). These include 7845 7846 * Fixed handling of cache misses. 7847 7848 * Creating intermediate clip surfaces at the minimal size required. 7849 7850 * Eliminating roundtrips when creating intermediate Xlib surfaces. 7851 7852Implementation 7853-------------- 7854Major re-work of font metrics system by Keith Packard. Font metrics 7855should now be much more reliable. 7856 7857Glitz backend 7858------------- 7859Updated for glitz-0.3.0. 7860Bug fixes in reference counting. 7861 7862Test suite 7863---------- 7864New tests for cache crashing, rotating text, improper filling of 7865complex polygons, and leaky rasterization. 7866 7867Bug fixes 7868--------- 7869Fixed assertion failure when selecting the same font multiple times in 7870sequence. 7871 7872Fixed reference counting so cache_destroy functions work. 7873 7874Remove unintended copyright statement from files generated with 7875PostScript backend. 7876 7877Fixed to eliminate new warnings from gcc 3.4 and gcc 4. 7878 7879Snapshot 0.2.0 (2004-10-27 Carl Worth <cworth@cworth.org>) 7880=========================================================== 7881New license: LGPL/MPL 7882--------------------- 7883The most significant news with this release is that the license of 7884cairo has changed. It is now dual-licensed under the LGPL and the 7885MPL. For details see the COPYING file as well as COPYING-LGPL-2.1 and 7886COPYING-MPL-1.1. 7887 7888I express my thanks to everyone involved in the license change process 7889for their patience and support! 7890 7891New font and glyph internals 7892---------------------------- 7893Graydon Hoare has put a tremendous amount of work into new internals 7894for handling fonts and glyphs, including caches where appropriate. 7895This work has no impact on the user-level API, but should result in 7896great performance improvements for applications using text. 7897 7898New test suite 7899-------------- 7900This snapshot of cairo includes a (small) test suite in 7901cairo/test. The tests can be run with "make check". The test suite was 7902designed to make it very easy to add new tests, and we hope to see 7903many contributions here. As you find bugs, please try adding a minimal 7904test case to the suite, and submit it with the bug report to the 7905cairo@cairographics.org mailing list. This will make it much easier 7906for us to track progress in fixing bugs. 7907 7908New name for glitz backend 7909-------------------------- 7910The gl backend has now been renamed to the glitz backend. This means 7911that the following names have changed: 7912 7913 CAIRO_HAS_GL_SURFACE -> CAIRO_HAS_GLITZ_SURFACE 7914 cairo_set_target_gl -> cairo_set_target_glitz 7915 cairo_gl_surface_create -> cairo_glitz_surface_create 7916 7917This change obviously breaks backwards compatibility for applications 7918using the old gl backend. 7919 7920Up-to-date with latest glitz snapshots 7921-------------------------------------- 7922This snapshot of cairo is now up to date with the latest glitz 7923snapshot, (currently 0.2.3). We know that the latest cairo and glitz 7924snapshots have been incompatible for a very long time. We've finally 7925fixed that now and we're determined to not let that happen again. 7926 7927Revert some tessellation regression bugs 7928---------------------------------------- 7929People that have been seeing some tessellation bugs, (eg. leaked 7930fills), in the CVS version of cairo may have better luck with this 7931release. A change since the last snapshot was identified to trigger 7932some of these bugs and was reverted before making the snapshot. The 7933behavior should be the same as the previous (0.1.23) snapshot. 7934 7935Miscellaneous changes 7936--------------------- 7937Changed CAIRO_FILTER_DEFAULT to CAIRO_FILTER_BEST to make gradients 7938easier. 7939 7940Track XCB API change regarding iterators. 7941 7942Various bug fixes 7943----------------- 7944Fix calculation of required number of vertices for pen. 7945 7946Fix to avoid zero-dimensioned pixmaps. 7947 7948Fix broken sort of pen vertices. 7949 7950Fix bug when cairo_show_text called with a NULL string. 7951 7952Fix clipping bugs. 7953 7954Fix bug in computing image length with XCB. 7955 7956Fix infinite loop bug in cairo_arc. 7957 7958Fix memory management interactions with libpixman. 7959 7960Snapshot 0.1.23 (2004-05-11 Carl Worth <cworth@isi.edu>) 7961======================================================== 7962Fixes for gcc 3.4 7963----------------- 7964Fix prototype mismatches so that cairo can be built by gcc 3.4. 7965 7966Updates to track glitz 7967---------------------- 7968Various fixes to support the latest glitz snapshot (0.1.2). 7969 7970Gradient updates 7971---------------- 7972Radial gradients now support both inner and outer circles. 7973Transformed linear gradients are now properly handled. 7974Fixes for extend type reflect. 7975 7976Glitz updates 7977------------- 7978Converted shading routines to use fixed point values and introduced a 7979shading operator structure for more efficient shading calculations. 7980Support compositing with mask surface when mask is solid or 7981multi-texturing is available. 7982 7983PNG backend cleanups 7984-------------------- 7985Fix output to properly compensate for pre-multiplied alpha format in cairo. 7986Add support for A8 and A1 image formats. 7987 7988Bug fixes 7989--------- 7990Avoid crash or infinite loop on null strings and degeneratively short 7991splines. 7992 7993New? bugs in cairo_clip 7994----------------------- 7995There are some fairly serious bugs in cairo_clip. It is sometimes 7996causing an incorrect result. And even when it does work, it is 7997sometimes so slow as to be unusable. Some of these bugs may not be 7998new, (indeed cairo_clip has only ever had a braindead-slow 7999implementation), but I think they're worth mentioning here. 8000 8001Snapshot 0.1.22 (2004-04-16 Carl Worth <cworth@isi.edu>) 8002======================================================== 8003Cairo was updated to track the changes in libpixman, and now depends 8004on libpixman version 0.1.1. 8005 8006Snapshot 0.1.21 (2004-04-09 David Reveman <c99drn@cs.umu.se>) 8007============================================================= 8008New OpenGL backend 8009------------------ 8010The OpenGL backend provides hardware accelerated output for 8011X11 and OS X. The significant new functions are: 8012 8013 cairo_set_target_gl 8014 cairo_gl_surface_create 8015 8016Automatic detection of available backends 8017----------------------------------------- 8018The configure script now automatically detect what backends are 8019available, (use ./configure --disable-`backend' to prevent 8020compilation of specific backends). 8021 8022Snapshot 0.1.20 (2004-04-06 Carl Worth <cworth@isi.edu>) 8023======================================================== 8024New pattern API 8025--------------- 8026David Reveman has contributed a new pattern API which enable linear 8027and radial gradient patterns in addition to the original surface-based 8028patterns. The significant new top-level functions are: 8029 8030 cairo_pattern_create_linear 8031 cairo_pattern_create_radial 8032 cairo_pattern_create_for_surface 8033 cairo_pattern_add_color_stop 8034 cairo_set_pattern 8035 8036Any code using the old cairo_set_pattern, (which accepted a 8037cairo_surface_t rather than a cairo_pattern_t), will need to be 8038updated. 8039 8040Update to XCB backend 8041--------------------- 8042The XCB backend is now enabled by default, (use ./configure 8043--disable-xcb to turn it off). 8044 8045Faster clipping 8046--------------- 8047Graydon Hoare has added optimizations that make cairo_clip much faster 8048when the path is a pixel-aligned, rectangular region. 8049 8050Bug fixes. 8051 8052Snapshot 0.1.19 (2004-02-24 Carl Worth <cworth@isi.edu>) 8053======================================================== 8054New PNG backend 8055--------------- 8056Olivier Andrieu contributed a new PNG backend. It builds on the 8057existing image backend to make it easy to render "directly" to a 8058.png file. The user never needs to deal with the actual image 8059buffer. The significant new functions are: 8060 8061 cairo_set_target_png 8062 cairo_png_surface_create 8063 8064The PNG backend is not enabled by default so that by default there is 8065not a new dependency on libpng. Use ./configure --enable-png to enable 8066this backend. 8067 8068Snapshot 0.1.18 (2004-02-17 Carl Worth <cworth@isi.edu>) 8069======================================================== 8070Path query functionality 8071------------------------ 8072It's now possible to query the current path. The two new functions 8073are: 8074 8075 cairo_current_path 8076 cairo_current_path_flat 8077 8078Each function accepts a number of callback functions that will be 8079called for each element in the path (move_to, line_to, curve_to, 8080close_path). The cairo_current_path_flat function does not accept a 8081curve_to callback. Instead, all curved portions of the path will be 8082converted to line segments, (within the current tolerance value). This 8083can be handy for doing things like text-on-path without having to 8084manually interpolate Bézier splines. 8085 8086New XCB backend 8087--------------- 8088Jamey Sharp has contributed a second X backend that uses the new, lean 8089XCB library rather than Xlib. It cannot currently be compiled at the 8090same time as the Xlib backend. See ./configure --enable-xcb. 8091 8092Build fixes for cygwin. 8093 8094Bug fixes. 8095 8096Snapshot 0.1.17 (2003-12-16 Carl Worth <cworth@isi.edu>) 8097======================================================== 8098 8099Better text support 8100------------------- 8101This snapshot provides much better text support by implementing the 8102following four functions: 8103 8104 cairo_text_extents 8105 cairo_glyph_extents 8106 cairo_text_path 8107 cairo_glyph_path 8108 8109The text/glyph_extents functions can be used to determine the bounding 8110box (and advance) for text as if drawn by show_text/glyphs. 8111 8112The text/glyph_path objects functions place text shapes on the current 8113path, where they can be subsequently manipulated. For example, 8114following these functions with cairo_stroke allows outline text to be 8115drawn. Calling cairo_clip allows clipping to a text-shaped region. 8116 8117Combined dependencies 8118--------------------- 8119The cairo core now depends only on the libpixman library. This single 8120library replaces the three previous libraries libic, libpixregion, and 8121slim. Thanks to Dave Beckett <dave.beckett@bristol.ac.uk> for all of 8122the heavy lifting with this renaming effort. 8123 8124Conditional compilation of backends 8125----------------------------------- 8126Cairo now allows optional backends to be disabled at compile time. The 8127following options may now be passed to the configure script: 8128 8129 --disable-xlib 8130 --disable-ps 8131 8132Note that the first option is a change from the old --without-x option 8133which will no longer have any effect. 8134 8135OS X supported - several byte-order issues resolved 8136--------------------------------------------------- 8137Cairo has now been successfully compiled under OS X. Testing revealed 8138that there were some byte-order problems in the PostScript backend and 8139the PNG generation in the demos. These have now been resolved. 8140 81412003-10 8142======= 8143Graydon Hoare <graydon@redhat.com> implemented the first real text 8144support using Freetype/fontconfig, (previous versions of cairo used 8145Xft and could only draw text when using an X backend). 8146 81472003-09 8148======= 8149Graydon Hoare <graydon@redhat.com> added the first real support for 8150running cairo with a non-render-aware X server. 8151 8152Jamey Sharp <jamey@minilop.net> virtualized the backend font and 8153surface interfaces in September, 2003. 8154 81552003-06 8156======= 8157Xr is renamed cairo to avoid confusion since it no longer had a strict 8158dependence on X. 8159 81602003-05 8161======= 8162A new image surface backend is added to Xr. Keith Packard 8163<keithp@keithp.com> wrote the image compositing code in libic that is 8164used for the image_surface backend. This code was originally written 8165as the software fallback for the render extension within the X 8166server. 8167 81682002-06 8169======= 8170Carl Worth <cworth@isi.edu> wrote the first lines of Xr, after Keith 8171Packard <keithp@keithp.com> proposed the plan for a stateful drawing 8172library in C providing a PostScript-like rendering model. 8173 8174 LocalWords: mutex BeOS extraordinaire distro's URL lcd bool tarball 8175