A new cairo snapshot 1.17.4 is now available from:
https://cairographics.org/snapshots/cairo-1.17.4.tar.xz
which can be verified with:
https://cairographics.org/snapshots/cairo-1.17.4.tar.xz.sha1
68712ae1039b114347be3b7200bc1c901d47a636 cairo-1.17.4.tar.xz
https://cairographics.org/snapshots/cairo-1.17.4.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.17.4 tag which points to a commit named:
156cd3eaaebfd8635517c2baf61fcf3627ff7ec2
which can be verified with:
git verify-tag 1.17.4
and can be checked out with a command such as:
git checkout -b build 1.17.4
Release 1.17.4 (2020-11-27 Bryce Harrington <bryce@bryceharrington.org>)
========================================================================
Thank you to the many people who have contributed the large number of
bug fixes and refinements since 1.17.2.
A particularly noteworthy improvement in this release is the addition of
the meson build system as an alternative to autotools. Autotools is
still used for producing the releases, so will be the default in the
tarball and presumably will still be preferred by distro packagers of
Cairo. It should be possible to build the release tarball using meson,
but as this is new functionality consider it still a work in progress.
The meson configuration has striven to track the autotools
implementation but be aware there may still be some differences between
the two.
Continuous Integration configurations have been added that enable
testing on a variety of platforms including Fedora, Windows MSVC, etc.
This work has helped in identifying updates and fixes including
adjusting to changes in API calls in dependencies like rsvg and
fontconfig, and to fix platform-specific build issues.
The cogl Cairo backend underwent significant development this cycle.
Cogl provides GPU accelerated drawing support. The development work
includes implementation of core functionality, performance
optimizations, and stabilization.
Subpixel positioning support allows improved glyph outlines with the
Freetype font backend.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.17.4
[On a personal note, this will be my last release for Cairo. My Cairo
time availability has been non-existent (particularly this crazy past
year). The release process is well documented and hopefully will help
whomever picks up the baton from here.]
Full Changes Since 1.17.2
=========================
Adrian Johnson (1):
tags: Don't ignore tag on empty pages
Anton Danilkin (1):
Fix testing in the full mode for PDF, PS and SVG backends
Antony Lee (1):
Fix off-by-one bug in tor22-scan-converter.
Bryce Harrington (7):
Start 1.17.2+1 development
cairo: Fix Since number for new color formats
surface: Fix spelling fix
gitignore: gtk-doc.m4
Revert "clip-boxes: Drop too-early return"
build: Update ssh url for cairographics.org
Release 1.17.4
Carlos Garcia Campos (1):
ft: Fix memory leak in _cairo_ft_unscaled_font_init
Fabrice Fontaine (1):
test: fix build when SHOULD_FORK is false
Federico Mena Quintero (1):
Don't use deprecated rsvg_set_default_dpi()
Florian M=FCllner (1):
ft-font: Fix color font support
F=E9lix Poisot (1):
The array introduced in bff47b43 isn't cleared on surface finish
George Matsumura (48):
cogl: Update to match changed cogl-experimental public API
cogl: Futher changes to match new cogl-experimental public API
cogl: Use new separate functions for offscreen and onscreen framebuff=
ers
cogl: Add dependency on cogl-path
cogl: Accommodate new context functions
cogl: Handle framebuffer formats better in case contents are unknown
cogl: Correct behavior of boilerplate surface finishing functions
cogl: Fix passing wrong type to _cairo_cogl_clip_push_box
cogl: Fix push_group and pop_group context functions
cogl: Account for new representations of framebuffer types
cogl: Convert int to fixed-point in rectangle painting fallback
cogl: Handle recording surface sources properly
cogl: Move context, device, and surface members to most fitting places
cogl: Fix crash when specifying only mask surface
cogl: Trailing whitespace fix
cogl: Fix handling of translated pattern matrices
cogl: Fix aliased vertex buffer offset
cogl: Support combinations of mask and source patterns correctly
cogl: Support CAIRO_EXTEND_NONE correctly
cogl: Correct usage of clip boxes
cogl: Fix rectangle filling conditions
cogl: Support more unbounded operators
cogl: Use less memory during recording surface replaying
cogl: Fix very small surfaces in boilerplate
cogl: Support raster sources
cogl: Fix rectangular filling fast path
cogl: Flush the path before calling functions that require it
cogl: Avoid duplicate representations of the path
cogl: Handle negative stride images correctly
cogl: Properly support unbounded operators
cogl: Move framebuffer creation functionality out of boilerplate
cogl: Improve support for hardware without mirrored repeating
cogl: Ensure onscreen framebuffers have an alpha component if required
cogl: Support source surfaces without an alpha component
cogl: Limit size of journal
cogl: Support mirroring of gradients if no hardware support exists
cogl: Increase reading performance of RGB-only surfaces
cogl: Fix reference counting bugs
cogl: Add minimal font support
cogl: Add new path cache
cogl: Remove filling with cogl-path
meson: Remove unconditional disable of cogl backend build
meson: Fix musl build
svg2png: Remove deprecated handle closing function call
cogl: Add build version requirement
build: Include correct poll.h
build: Fix various compiler warnings
cairo-trace: Fix escape character encoding in string literals
Heiko Lewin (1):
Delete fill_rectangles_shader on device finish
Jan Alexander Steffens (heftig) (1):
image compositor: Remove the right glyph from pixman's cache
Jordan Petridis (1):
port the CI setup to freedesktop/citemplates
Marek Kasik (1):
cff: Allow empty array of operands for certain operators
Massimo Valentini (1):
add a test to exercise tor22 spans allocation code path
Mathieu Duponchelle (6):
record tests: fix when builddir !=3D srcdir
raster-source: fix when builddir !=3D srcdir
cairo-qt-surface: fix arguments of _cairo_surface_init()
script-surface: Fix unitialized variable compiler warning
Fix build on Windows with recent versions of MSVC
Add meson build definitions
Matthias Clasen (5):
image compositor: Support subpixel positioning
Add a testcase for subpixel positioning
xlib compositor: Support subpixel positioning
Fix a thinko in composite_color_glyphs
Fix vertical subpixel positioning
Michal Sudolsky (1):
fix double free and failed assertions in cairo_scaled_font_destroy
Nirbheek Chauhan (4):
meson: Fix win32 libs in cairo-win32*.pc files
meson: Add dependencies to the declared libcairo dep
meson: Fix libpng fallback dependency variable
libpng.wrap: Bump to latest version
Sergei Trofimovich (1):
build/aclocal.float.m4: detect 'strings' with AC_CHECK_TOOL
Sven Neumann (1):
Fix conversion from ISO 8601 to PDF date string
Tim-Philipp M=FCller (11):
meson: fix cairo-script-interpreter library name
meson: update fontconfig wrap and add gperf wrap
meson: add summary and flip some options to disabled by default
meson: ensure srcdir doesn't contain autotools build artifacts
autotools: dist Meson build system files
ci: add native Windows MSVC build with Meson
Retire dummy cairo-version.h header to fix meson subproject build
meson: extract meson version from cairo-version.h
meson: align gl backend option defaults with autotools
ci: require opengl in meson fedora build
ci: fix default options in meson ci
Ting-Wei Lan (1):
meson: Fix undefined reference when bfd library is installed
Uli Schlachter (18):
steal boxes: Fix an invalif free() exposed by cb871c6c
.gitlab-ci.yml: Temporarily switch to Fedora rawhide
Merge branch 'fix-xml-unclosed-scaled-font-element'
Merge branch 'ft-leak' of gitlab.freedesktop.org:carlosgc/cairo
Initialize mutexes in _cairo_ft_unscaled_font_map_lock()
Merge branch 'master' of gitlab.freedesktop.org:trofi/cairo
Merge branch 'master' of gitlab.freedesktop.org:ffontaine/cairo
Merge branch 'fix-build-rule-for-font-variations'
Merge branch 'invalid-free-crash' of gitlab.freedesktop.org:psychon/cairo
Merge branch 'master' of gitlab.freedesktop.org:sgerwk/cairo
Make the test suite succeed on GitLab CI
Fix/silence some warnings in 'make check'
Merge branch 'meson-ci-require-gl-on-fedora' into 'master'
Merge branch 'fix-iso8601_to_pdf_date_string' into 'master'
Merge branch 'empty-delta-arrays' into 'master'
Merge branch 'trace_parse_fix' into 'master'
Merge branch 'pdf-leak' into 'master'
Merge branch 'meson-ci-fix' into 'master'
Vasilij Schneidermann (1):
Disable sphinx build if PNG support is disabled
Xavier Claessens (5):
meson: Fix cross build with Android NDK
meson: Fix build when libpng is not found
meson: Use pkgmod.generate() for all cairo pc files
cairo-gobject: Missing cairo include directories
meson: cairo-ft depends on fontconfig if available
luzpaz (1):
Fix documentation typo in src/cairo-surface.c
sgerwk (1):
a surface may also be checked for status after finishing
suzuki toshiya (3):
Makefile.sources: move font-variations.c from test_sources
xml: fix unclosed <scaled-font> element
regrouping of test sources with new 'fc_font_test_sources' group
A new cairo snapshot 1.17.2 is now available from:
https://cairographics.org/snapshots/cairo-1.17.2.tar.xz
which can be verified with:
https://cairographics.org/snapshots/cairo-1.17.2.tar.xz.sha1
c5d6f12701f23b2dc2988a5a5586848e70e858fe cairo-1.17.2.tar.xz
https://cairographics.org/snapshots/cairo-1.17.2.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.17.2 tag which points to a commit named:
d67be70805fc422aacdb75fb14f6fa482db649c0
which can be verified with:
git verify-tag 1.17.2
and can be checked out with a command such as:
git checkout -b build 1.17.2
Release 1.17.2 (2019-01-31 Bryce Harrington <bryce@bryceharrington.org>)
========================================================================
This snapshot provides the new support for writing floating point
formats as 16 bpc PNGs, with support for RGBA128F and RGB96F formats.
This new feature increases Cairo's pixman version requirement to 0.36.0.
Beyond this are a range of bugfixes and some work on establishing CI for
Cairo.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.cairo-1.17.2
API Changes
-----------
* CAIRO_FORMAT_RGB96F, CAIRO_FORMAT_RGBA128F
Dependency Changes
------------------
pixman 0.36.0
------------------------------------------------------------------------
List of changes in this release:
Adrian Johnson (6):
type1: fallback if the font matrix is not a uniform scale
doc: fix link tags code example
pdf: add missing flush
ps: fix invalid matrix in eps embedding
tag_attributes: Allow decimal points in non decimal point locales
scaled-subsets: always include glyphs maps to character 0
Bryce Harrington (5):
Bump version for 1.17.1
RELEASING: Bugzilla no longer needs updated
clip-boxes: Drop too-early return
Release 1.17.2
Carlos Garcia Campos (1):
ft: Use FT_Done_MM_Var instead of free when available in cairo_ft_apply_variations
Jordan Petridis (1):
CI: Fix Docker image uris
Maarten Lankhorst (4):
cairo-trace: Simplify bigendian case in emit_image.
Add support for RGBA128F and RGB96F formats.
png: Add support for writing new floating point formats as 16 bpc png.
png: Add support for 16 bpc png reading as floating point format
Uli Schlachter (3):
.gitlab-ci.yml: Do a verbose build
Remove all traces of NUM_THREADS
Merge branch 'ft-crash' of gitlab.freedesktop.org:carlosgc/cairo
luz.paz (1):
Misc. typos
suzuki toshiya (1):
[cairo-ft-font.c] conditionalize the changes by 3ec4aa24 on 2018-07-16 for legacy FreeType2 without color font feature
A new cairo release 1.16.0 is now available from:
https://cairographics.org/releases/cairo-1.16.0.tar.xz
which can be verified with:
https://cairographics.org/releases/cairo-1.16.0.tar.xz.sha1
00e81842ae5e81bb0343108884eb5205be0eac14 cairo-1.16.0.tar.xz
https://cairographics.org/releases/cairo-1.16.0.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.16.0 tag which points to a commit named:
3ad43122b21a3299dd729dc8462d6b8f7f01142d
which can be verified with:
git verify-tag 1.16.0
and can be checked out with a command such as:
git checkout -b build 1.16.0
Release 1.16.0 (2018-10-19 Bryce Harrington <bryce@bryceharrington.org>)
========================================================================
This new stable release incorporates a number of improvements made in
the four years since 1.14.0.
Of particular note is a wealth of work by Adrian Johnson to enhance PDF
functionality, including restoring support for MacOSX 10.4, metadata,
hyperlinks, and more.
Much attention also went into fonts, including new colored emoji glyph
support, variable fonts, and fixes for various font idiosyncrasies.
Other noteworthy changes include GLESv3 support for the cairo_gl
backend, tracking of SVG units in generated SVG documents, and cleanups
for numerous test failures and related issues in the PDF and Postscript
backends.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.cairo-1.16.0
Features and Enhancements
-------------------------
* Add support for OpenGL ES 3.0 to the gl backend.
* The PDF backend has gained support for a range of widely used
features, including thumbnails, page labels, metadata, document
outlines, structured text, hyperlinks, and tags. Tags permit adding
logical info such as headings, tables, figures, etc. that facilitates
indexing, accessibility, text reflow, searching, and extraction of the
tagged items to other software. For details on this new PDF
functionality, see:
https://lists.cairographics.org/archives/cairo/2016-June/027427.html
* Variable font support. Variable fonts are single font files with
various typography characteristics, such as weight or slant, that users
of the font can adjust between two points. Effectively this enables a
single font to behave as multiple fonts.
* Restore MacOSX 10.4 support. Cairo had dropped 10.4 support when
moving to the CoreText API. Now we automatically detect which API to
use via dynamic linking, so can resume supporting this older version
of MacOSX.
* Support colored emoji glyphs, stored as PNG images in OpenType fonts.
* Skia backend is removed
* Use Reusable streams for forms in Level 3 Postscript.
* Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files.
* Add CCITT_FAX mime type for PDF and PS surfaces
* svg: add a new function to specify the SVG document unit
(Bug #90166)
* Use UTF-8 filenames on Windows
API Changes
-----------
Several new APIs were added. No existing APIs were altered.
New PDF functionality:
* cairo_pdf_surface_add_outline
* cairo_pdf_surface_set_metadata
* cairo_pdf_surface_set_page_label
* cairo_pdf_surface_set_thumbnail_size
* cairo_tag_begin
* cairo_tag_end
* CAIRO_STATUS_TAG_ERROR
New error status items for problems relating to PDF tagging:
* CAIRO_STATUS_WIN32_GDI_ERROR
* CAIRO_STATUS_FREETYPE_ERROR
* CAIRO_STATUS_PNG_ERROR
New error status items for handling of GDI, libfreetype, and libpng
errors, respectively.
Setting up Win32 surfaces for HDC with alpha channels:
* cairo_win32_surface_create_with_format
New API for added PDF functionality (see above), and new error
status item for problems relating to PDF tagging.
Variable fonts:
* cairo_font_options_get_variations
* cairo_font_options_set_variations
Tracking units in SVG documents:
* cairo_svg_surface_set_document_unit
* cairo_svg_surface_get_document_unit
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Notable Bug Fixes
-----------------
* Fix thin lines that don't show up when printing in Inkscape due to
overly aggressive culling.
(Bug #77298)
* Fix playback of recording surfaces into PDF surfaces, where objects
with negative coordinates were not getting drawn. To address this,
the coordinate systems for PDF and PS have been changed to match
cairo's coordinate system. This allows recording surfaces to be
emitted in cairo coordinates, and results in the same origin being
used for all operations when using the recording surface XObject.
Test cases for PDF and PS have also been updated accordingly.
(Bug #89232)
* Fix "invalidfont" error on some printers when printing PDFs with
embedded fonts that have glyphs (such as spaces) with
num_contours == 0. (Bug #79897)
* Fix missing glyphs such as thin dashes, which get scaled to 0 in
userspace and thus have their drawing operations culled. (Bug #94615)
* Fix other oddities caused by variously idiosyncratic fonts.
* Fix a data race in freed_pool discovered by Firefox's cairo usage.
The patch adads atomic int load and store functions, with relaxed
memory ordering. (Bug #90318)
* Handle SOURCE and CLEAR operators when painting color glyphs.
(Bug #102661)
* Fix falling back to system font with PDFs using certain embedded
fonts, due to truncated font names.
(Bug #103249)
* Prevent curved strokes in small ctms from being culled from vector
surfaces
(Bug #103071)
* Fix assertion hit with PDFs using Type 4 fonts rendered with user
fonts, due to error when destroying glyph page.
(Bug #103335)
* Prevent invalid ptr access for > 4GB images.
(Bug #98165)
* pdf: Fix internal links pointing to other pages, by pre-calculating
page heights so that link positions can be calculated more accurately.
* Fix error reporting in the xcb backend if fallback fails. Instead of
returning NULL when the X11 server can't do some operation, return a
surface in an error state.
* Clarify documentation regarding device scale inheritance and the units
used in cairo_surface_create_similar_image.
(Bug #99094)
* Call XSync in the xlib backend before setting the error handler to
ignore errors for certain requests, to make sure all pending errors
are handled first.
* Fix regression with text containing space character on Win32.
(Bug: https://gitlab.freedesktop.org/cairo/cairo/issues/339)
------------------------------------------------------------------------
List of changes in this release:
Adam Jackson (2):
xlib: Don't crash when swapping a 0-sized glyph
xcb: Don't crash when swapping a 0-sized glyph
Adrian Johnson (129):
Update mime type documentation.
CFF: Fix unaligned access
pdf: fix compiler warning
build: fix regression on mingw
pdf-operators: only wrap text strings for PS output
Improve performance of cpu_to_be32 and be32_to_cpu
pdf-operators: fix bug with RTL text
doc: add index of new symbols in 1.14
cff: ensure glyph widths are positive when font matrix yy is negative
cff: opentype fonts always use gid to lookup glyph
scaled-font-subsets: if glyph 0 used for rendering, remap to different index
ps: merge emit_recording surface and emit_recording_subsurface into one function
ps: fix raster source patterns
ps: fix subsurface recordings
pdf: fix subsurface recordings
win32-print: Fix the page extents
win32-print: fix warnings
win32-print: support raster_source patterns
Don't cull very thin lines on vector surfaces
Add test case for thin lines
Fix some surfaces missed in b1192bea
Compile fix
win32-print: support subsurface recording patterns
Compile fix
scaled-font: don't store pointer in hash value
Add CAIRO_STATUS_PNG_ERROR for errors returned by libpng
Adding missing error status to utils
Add CAIRO_STATUS_FREETYPE_ERROR for errors returned by libfreetype
Add CAIRO_STATUS_WIN32_GDI_ERROR for GDI errors
pdf2png: fix deprecated warning
svg2png: fix deprecated warning
test: add record-neg-extents
Add recording-ink-extents test
Fix test failures when recording surface extents has negative x,y
pdf: change from pdf coordinates to cairo coordinates
Fix PDF record-neg-extents test failure
test: replay record surface with negative extents for each extend mode
image: fix record-replay-extend test failures
pdf: fix record-replay-extend test failures
ps: change from ps coordinates to cairo coordinates
Fix PS record-neg-extents test failure
Update ref images
image: only cache analyzed transparency/color for snapshot surfaces
win32-print: fix unbounded surface assertion
win32: gcc 5.4 build fix
recording: Remove unused function
pdf: remove unused variable
add test text-unhinted-metrics
ft: set font size to em size when retrieving unhinted metrics
test: refresh text-rotate ref images
truetype: Don't write glyph if num_contours == 0
ps: flush ASCII85Decode file after use
ps/pdf: remove debug and commented out code
pattern: don't round extents to 0 on vector surfaces
pdf: Don't fail subsetting if unable to convert utf8 to utf16
truetype: reverse cmap search should end when 0xffff- 0xffff range reached
pattern: revert an unintentional change added in 190678f
pdf: fix combined image/smask
Add tag functions to cairo_t and cairo_surface_t
Add tag functions to recording surface and surface-wrapper
Support tag operations in analysis and paginated surface
pdf: structured text and hyperlink support
pdf: add document outline API
pdf: metadata API
pdf: page label API
pdf: thumbnail API
add test for PDF document interchange features such as tagged text and links
fix make check
fix compiler warnings
strndup is not avuilable with MSVC
pdf: don't return uninitialized status
pdf-operators: fix bug in line wrapping
subsetting: support variable fonts
Fix off by one check in cairo-image-info.c
tests: fix bug in pdf-tagged-text that was introduced in 4790a36
pdf: link tags do not need to be leaf nodes in the document structure
pdf: Don't emit /PageLabel dict when no labels defined
pdf: don't write logical structure if it only contains links
pdf: fix link positions
pdf: use link attributes instead of dest name for cairo_pdf_surface_add_outline
pdf: use explicit dest instead of named dest when 'internal' attribute is set
RELEASING: use correct branch name
Remove unused variable
build: use _WIN32 instead of windows.h to check for windows build
replace _BSD_SOURCE with _DEFAULT_SOURCE
factor out ascii to double code in cff-subset into _cairo_strtod
truetype: reserve space in subset arrays for .notdef
truetype: clarify glyph count variables
Prevent curved strokes in small ctms from being culled from vector surfaces
svg: fix painting an unbounded recording surface
output-stream: allow %s strings larger than 512 chars
truetype: limit font name to 127 chars
svg: use hash table instead of user_data to track emitted surfaces
svg: source surface hash table does not need to hold the source
svg2png: remove unused headers
ft: prevent unused var warning when freetype < 2.8
fix unused function warnings
svg: recording_surface is needed even if not emitted
fix warning: variable X might be clobbered by 'longjmp'
fix warning: inlining failed in call to '_csi_stack_push'
util/font-view: fix build error
Add CCITT_FAX mime type for PDF and PS surfaces
Allow mime image to be different size to cairo image
pdf: set ca/CA instead of using an smask when the mask has constant alpha
pdf: set default create date
pdf: remove old comment
image: prevent invalid ptr access for > 4GB images
Add mime-unique-id test
pdf: fix mime-unique-id bounded recording test
pdf: fix mime-unique-id unbounded recording test
pdf: fix mime-unique-id jpeg attached to recording test
ps: emit base85 strings instead of strings of base85
ps: remove unused prolog
ps: use << >> for dictionaries instead of dict begin end
ps: don't acquire image or snapshot in acquire_source_image_from_pattern
ps: use forms for surfaces with UNIQUE_ID mime type
ps: use Reusable streams for forms in Level 3
ps: add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files
test: use CAIRO_MIME_TYPE_UNIQUE_ID with record-text-transform
ps: prevent self-copy infinite loop
ps: fix padded image crash
ps: fix extend-*-similar failures
test: update some stale ref images
pdf: fix document structure for non tagged structures
ps: fix compile with old versions of MSVC
pdf: fix some annotation bugs
Prevent -Wundef warnings in when cairo-ft.h is used without fontconfig
ps: fix compile warning
Use _cairo_malloc instead of malloc
Alban Browaeys (1):
pattern: allow for a floating one pixel rounded difference.
Aleksander Morgado (1):
build: fix minor typo in autogen.sh
Alexander Täschner (1):
win32: Initialize mutexes for static builds for win32
Alexandre Bique (1):
Fix test compilation when font-config is disabled
Andrea Canciani (18):
test: Release owned pattern
test: Free test list
font: Actually perform destruction of fonts
quartz: Remove call to obsolete CGFontGetGlyphPath
Update KNOWN_ISSUES documentation
Update README with new minimum MacOSX requirements
Harden make-cairo-test-constructors.sh
test: Fix coverage-intersecting-triangles reference
test: Correct bug number in clip-complex-bug61592
test: Always use DejaVu Sans as default font
test: Update quartz reference images
quartz: Align filtering quality with image backend
quartz: be more strict about the behavior of blend operators
quartz: Restore 10.4-specific font code
test: Add a test for characters in the SMP
unicode: Extract the UCS4 to UTF-16 conversion to a separate function
quartz-font: Correct handling of SMP Unicode characters
quartz-font: Fix text-glyph-range
Antonio Ospite (2):
svg: add a new function to specify the SVG document unit
svg: fix compilation with MSVC which doesn't support C99 initializers
Arpit Jain (3):
xlib: Fix deferencing of uninitialised 'display'
test/bitmap-font: Fix use of pointer after freed pointer
gl: Fix incorrect size of expression
Ashim (1):
Fix out of bound access in struct pattern->type
Behdad Esfahbod (23):
[ft] Return CAIRO_STATUS_FILE_NOT_FOUND if font file can't be opened
Oops, fixup previous commit
Remove debug printf; ouch!
Bug 29319 - Modules are built as versioned shared objects
Fix color font support infinite-loop with empty glyphs
Fix uninitialized status!
[ft] Fix color font loading on big-endian systems
Fix undefined-behavior with integer math
Handle SOURCE and CLEAR operators when painting color glyphs
[variations] Towards fixing test
[variations] Fix test
[variations] Merge variations in cairo-ft font option merging
[varfonts] Use blend, not design, coordinates to check for non-base variation
[varfonts] Correctly (re)set variations of named instances
[ft] Use variations from ft_options, not scaled-font
[ft] When merging font options, order variations correctly
[ft] Fix warnings
[ft] Remember variations set on FT_Face and apply them
Merge branch 'font-variations'
Use FT_Done_MM_Var() if available
Fix compile with older FreeType without FT_Get_Var_Design_Coordinates
Fixup on previous commit
[ft] Implement some more color conversion routines
Bryce Harrington (149):
Start 1.14.1 development
RELEASING: Update tags push command
Add execution bit for make-cairo-test-constructors.sh
Revert "Add execution bit for make-cairo-test-constructors.sh"
RELEASING: Be explicit as to which tag is pushed
Drop the target-specific huge-radial.pdf.*.ref.png images
test: Use ARRAY_LENGTH macro
Refactor ARRAY_LENGTH macro definitions in test code
image: Fix crash in _fill_xrgb32_lerp_opaque_spans
gitignore: logs, manuals
doc: Drop extraneous para's
git-ignore: Add build's test-driver
Revert "xlib: Remove queued event from _XReadEvents"
csi-trace: Add --version and --help args to utility
HACKING: Add link to git tutorial and wordsmith a bit
NEWS: Update for changes through Nov 2014
NEWS: Finish filling in changes
On MacOSX, the sed utility errors out when parsing non-UTF8 files. Because of this, the generated cairo-test-constructor only contained a few tests and the test suite was thus incomplete.
NEWS: Note about the OS X support
KNOWN_ISSUES: Restore known issues file as a stub
version: bump for cairo-1.14.2 release
RELEASING: Update contacts
Start 1.14.3 development
surface: Clarify flush documentation
NEWS: Sp. fix
Fix spellings descibed, indicies, stange
Fix broken canvas text font size in Inkscape
cairo-script: Improve buffer length check
cairo-script: Always include config.h first thing
cairo-script: Add missing copyright and boilerplate
cairo-script: Cleanup boilerplate header for consistency
cairo-script: Prefer cairo from local tree
cairo-script: Rename struct member to avoid name collision on AIX
cairo-script: Fix sp. "directoriy"
cairo-recording-surface: Fix loss of alpha when clipping
cairo-script: Return a cairo_status_t error, not FALSE
RELEASING: Add requirement to upload ChangeLogs
configure: Fix typo for missing line continuation character
cairo-gl: Still check the value of the macros
truetype: Drop redundant check of truetype struct
Revert "pattern: allow for a floating one pixel rounded difference."
Revert "cairo-gl: Fix compiler warning if CAIRO_HAS_*_FUNCTIONS is not defined."
If more than one trap is passed in then it's guaranteed that the returned traps will have their left edge to the left of their right edge, but if only one trap is passed in then the function always returns without doing anything. This results in incorrect rendering of SVG paths with more than one subpath.
svg2png: Only call deprecated g_type_init() for old glib versions.
test: Free the memory, not the pointer to the memory
boilerplate: Fix list termination for glXChooseVisual
NEWS: Fix date on release
NEWS: Begin filling out news entry for upcoming 1.14.4.
gitignore: Ignore .trs (test results)
test: Add script to summarize the test results from a run
test: Add script to display the difference between two result sets
Ensure null-terminated result from strncpy()
build: Use memory barriers for ARM
NEWS: Whitespace cleanup
NEWS: Update to cover changes to date
1.14.4 release
WIP news and release
NEWS: Update for 1.14.4 release
RELEASING: Note how to upload the changelog
RELEASING: Doc what's required to properly undo a publish
Bump version for new development tree, 1.15.1
RELEASING: Doc handling devel versions for micro vs minor releases
test: Fix use after frees
RELEASING: Whitespace cleanup. Fix inconsistent tabbing.
RELEASING: Fix misspelling in last commit
RELEASING: Make X.Y.Z versions less ambiguous
RELEASING: Drop inclusion of boilerplate in news messages
RELEASING: Clarify snapshot numbering rules
1.15.2 release
RELEASING: Fix documentation of proper ChangeLog path
cairo-misc: Whitespace cleanup
Fix grammar in cairo_*_reference() function documentation.
pattern: Fix incorrect grammar in cairo_pattern_get_type.
build: Don't rely on non-POSIX 'strings -' behavior
gl: Treat GLES v2 as a separate flavor from GLES v3
gl: Fix one more CAIRO_GL_FLAVOR_ES3 enum
NEWS: Fix a couple typos
1.15.4 release
Bump version for new development tree, 1.15.5
RELEASING: Fix tabbing
gl: Fix comment syntax
drm: Add/reorder headers as required by check-preprocessor-syntax.sh
1.15.6 release
Bump version for new development tree, 1.15.7
RELEASING: Note use of branches for stable releases
RELEASING: Note adding index to cairo-docs.xml for minor releases
cairo-docs: whitespace cleanup
image: Disambiguate 0. in doxygen
1.15.8 release
Bump version for new development tree, 1.15.9
glesv2: Fix regression in gles version detection
gl: Convert images to rgba or a8 formats when uploading with GLESv2
gl: Make _cairo_gl_ensure_framebuffer a private shared routine
gl: Add support for OpenGL ES 3.0
Factor out the ISFINITE() macro
configure: Check for typeof
Un-doxygen disabled cairo_set_opacity
image: Fix include for use of ptrdiff
win32: Fix since field version number
Fix various doxygen warnings found by check-doc-syntax.sh
Fix distcheck errors on use of #ifdef
pattern: Mark a private routine as cairo_private.
1.15.10 release
Bump version for new development tree, 1.15.9
svg: Label for cairo_svg_unit_t doxygen was incorrect
makefile: Fix sorting of source files
test: Fix compile with older FreeType without FT_Get_Var_Design_Coordinates
RELEASING: Refine devel version and tagging
Fix two type casting warnings in get_C_locale()
font: Check return value from _cairo_ft_unscaled_font_lock_face
xml: Typo in comment
win32: Whitespace cleanup
win32: Fix a few typos in comments
compiler-private: Define what PLT stands for
cairo-version: Fix version references in docs
Disable skia from configure
configure: Conditionalize color font feature for older freetype2
1.15.12 release
Drop stray patch from prior commit
gl: Whitespace cleanup
win32: Copyedit recent comments
test: Use C comment syntax, not C++
Bump version for new development tree, 1.15.13
script-surface: Check for invalid ids (CID #1159557, 1159558)
bo: Check null return from _cairo_malloc_ab() (CID #1159556)
snapshot: Don't use extra after it's been freed (CID #220086)
bo: Free event_y in case of error to prevent memory leak (CID ##1160682)
pdf: Fix potential null ptr deref when creating smask groups (CID #1159559)
type1-subset: Fix incorrect null ptr check from find_token() (CID #1160662)
polygon-intersection: Clarify ptr checks for right edges (CID #1160730)
gl: For glesv3 detection, use glesv2.pc + header check
scaled-font: Fix glyph and cluster count checks (CID #983386)
Convert 3 headers to UTF8
build: Sp. fix
doc: Add missing symbols to sections for recently added APIs
Fix sp. sheering
gstate: Minor grammar copyedit
Normalize more test reference images with minor text rendering differences
Normalize one more test image with minor gradient differences
doc: Drop tmpl support
1.15.14 release
Bump version for 1.15.15
RELEASING: Clarify how to add the news item
Revert "Correctly decode Adobe CMYK JPEGs in PDF export"
Drop skia backend
win32: Fix regression with text containing space character
test: Free resources in pdf2png
1.16.0 release
Bump version for 1.17.1
Carlos Garcia Campos (1):
scaled-font: Fix assert when destroying glyph page
Chris Wilson (4):
xlib: Bump reference count for recording surface replays
Revert "xlib: Fix deferencing of uninitialised 'display'"
xlib: Avoid using uninitialised variable on impossible error path
stroker: Check for scaling overflow in computing half line widths
Debarshi Ray (2):
doc: Fix the units used by cairo_surface_create_similar_image
doc: Clarify when the device scale is inherited and when it isn't
Doran Moppert (1):
image: Check for negative len in fill/blit functions
Ed Schouten (2):
Prevent observer surfaces from writing to stdout
Write debugging information to the debugging file
Emanuele Aina (1):
cairo-trace: Fix duplicated surface push on similar-image
Enrico Weigelt, metux IT consult (14):
core: updated .gitignore
core: reintroduce bot-scan-converter functions
core: dropped unnecessary local variable in _cairo_composite_rectangles_intersect()
core: some in-code documentation
drm: fix importing of libdrm
core: fix compiler warnings
core: helper inline for rect->box conversion
core: dropped actually unused parameter of _cairo_boxes_to_array()
core: fixed code duplication
qt: replaced calls to _cairo_clip_init_copy() by _cairo_clip_copy()
drm: fixed missing includes
drm: dropped obsolete/unused intel_bo_get_image()
drm: use typedefs and defines from drm headers instead of redundant own definitions
drm: fixed calls to _cairo_surface_init()
Eric Hoffman (1):
win32: Fix multi-monitor virtual desktop with negative monitor coords
Federico Mena Quintero (7):
Add .gitlab-ci.yml to run the tests automatically
bfo#105084 - Initialize memory properly in _cairo_ft_font_face_create_for_pattern()
cairo-analysis-surface: Quell invalid uninitialized variable warning
test/extended-blend.c: Remove obsolete comments about buggy librsvg
Normalize extended-blend-mask.{argb32,rgb24}.ref.png
Normalize test images with minor gradient differences
Normalize test reference images with minor text rendering differences
Fredrik Fornwall (1):
Fix cairo_get_locale_decimal_point() on Android
Guillaume Ayoub (1):
Use surface_transform in replay_and_create_regions
Guillermo Rodriguez (2):
script: Fix misleading indentation warning.
Remove redundant check.
Hans Breuer (1):
win32: Fix compilation of 'cairo-path-stroke-traps.c' with MSVC8
Hans Petter Jansson (1):
scaled-font: Fix deadlock when recursing in _cairo_scaled_font_reset_cache()
Henry (Yu) Song (1):
xlib: Remove queued event from _XReadEvents
John Lindgren (1):
Avoid indiscriminate use of VALGRIND_MAKE_MEM_NOACCESS.
Julien Isorce (1):
build: Show all disabled features in cairo-features.h
Koop Mast (1):
cairo-gl: Fix compiler warning if CAIRO_HAS_*_FUNCTIONS is not defined.
Kouhei Sutou (2):
pdf: Remove duplicated item
pdf: Fix wrong cairo_pdf_outline_flags_t item prefix
Marc-André Lureau (1):
xlib: fix mixing xcb & xlib calls
Massimo (1):
bfo#91271 - Fix access of uninitialized memory
Massimo Valentini (6):
tor-scan-converter: can't do_fullrow when intersection in row + 0.5subrow
win32: Fix crash from win32 surface's image size too small
polygon-intersection: Do not discard intersection exactly at top edge
polygon-intersection: Include approximation in intersection points
polygon-intersection: Try not to invoke undefined behaviour
polygon-intersection: Delete misleading comments and dead-code
Matthias Clasen (27):
Add support for color glyphs to cairo_scaled_glyph_t
Support loading color glyphs with freetype
Expose 'has color glyphs' as a scaled font property
Implement has_color_glyphs for freetype
Render color glyphs as source, not as mask
Simplify things a bit
Fix a logic error in color glyph compositing
Make _intern_string_hash safe for ""
Make _intern_string_hash non-static
Add font variations to font options
Load font variations from fontconfig too
Use strtod_l when available
Apply font variations when loading fonts
Add a test for font variations
Work around a freetype bug
Make the font-variations test pass
Apply font variation options consistently
Always save the origin face index
Trivial: code movement
Apply font variations when loading glyphs
fixup: remove a hack
fixup
Shortcut FT_Set_Var_Design_Coordinates
Fix a memory leak
Don't leak patterns when compositing color glyphs
Add a _cairo_font_options_fini function
Don't leak memory in font options
Michael Haubenwallner (8):
fix conflicting types for 'sync' on AIX, bug#89338
skip MAP_NORESERVE when unsupported
define _GETDELIM for getline() on AIX
test: fix include order for AIX, bug#89354
perf/micro: fix include order for AIX, bug#89354
perf: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
Mikhail Fludkov (2):
Surround initialisations with atomic critical section
Fix code generation when using GCC legacy atomic operations
Nathan Froyd (1):
Support new-style __atomic_* primitives
Olivier Blin (1):
Pull -lz for the script backend
Patrick Fritzsch (1):
win32: check if GetTextMetrics failed
Paul Menzel (3):
Use HTTPS URLs for cairographics.org domains
Use HTTPS URLs for freedesktop.org domains
Use HTTPS URLs for gnome.org domains
Peter TB Brett (1):
Correctly decode Adobe CMYK JPEGs in PDF export
Ravi Nanjundappa (2):
Fix warnings from check-doc-syntax.sh
Fix one more warning from check-doc-syntax.sh
Rodrigo Rivas Costa (1):
win32-print: fix transparent images have black background
Sahil Vij (1):
gl: Fix bug in _cairo_gl_pattern_texture_setup()
Tom Schoonjans (1):
Use UTF-8 filenames on Windows
Uli Schlachter (21):
tor-scan-converter: Correctly align 64bit types
xcb: Query the display's subpixel order via RENDER
xlib-xcb: Don't be lazy and use the real xcb_screen_t
XCB: Don't attach uploaded surfaces as snapshots
xcb: Fix _put_shm_image_boxes if no SHM available
xcb: Fix _put_image_boxes() if no SHM is available
Fix cairo-xlib-xcb compilation
xlib: Fix double free in _get_image_surface()
cairo-xcb: Remove a wrong optimisation
xlib: Remove unused variable
xlib: Call XSync() before ignoring errors
Revert "stroker: Check for scaling overflow in computing half line widths"
xcb: Fix error reporting if fallback fails
Revert "fix warning: variable X might be clobbered by 'longjmp'"
Add test for error handling with broken PNG streams
Fix warning: '*' in boolean context
fix warning: variable X might be clobbered by 'longjmp'
Fix a 'memory leak' in the image compositor
Skip font-variations test for missing fonts
pthread-same-source: Refresh reference images
Fix assertion failure in the freetype backend
Unknown (1):
Cairo trivial typos
Vasily Galkin (3):
win32: Introduce new flag to mark surfaces that support solid brush drawing
win32: CAIRO_WIN32_SURFACE_CAN_RGB_BRUSH and other argb32 flags set+check
win32: Allow GDI operations for argb32 surfaces (allowed by surface flags)
Wan-Teh Chang (1):
Fix data race in freed_pool
Zan Dobersek (1):
Manually transpose the matrix in _cairo_gl_shader_bind_matrix()
darxus@chaosreigns.com (2):
Remove closed poppler bugs from test/README
Add example to run specific tests by name to the test/README
suzuki toshiya (1):
csi-trace does not show help
Руслан Ижбулатов (2):
win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel.
win32: Add a win32 boilerplate that uses a real window
江頭幸路 (1):
Avoid appending an empty slot to an user data array when user_data is NULL.
--
Bryce Harrington - bryce@bryceharrington.org
Senior Open Source Developer - bryce@osg.samsung.com
Open Source Group - Samsung Research America
A new cairo snapshot 1.15.14 is now available from:
http://cairographics.org/snapshots/cairo-1.15.14.tar.xz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.15.14.tar.xz.sha1
62ebffbaf4cc81c412f0ad3f87dc20499f85d046 cairo-1.15.14.tar.xz
http://cairographics.org/snapshots/cairo-1.15.14.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.15.14 tag which points to a commit named:
d9aaea0c1e1484c632e1a6735c6ecc961c4b032b
which can be verified with:
git verify-tag 1.15.14
and can be checked out with a command such as:
git checkout -b build 1.15.14
Release 1.15.14 (2018-09-19 Bryce Harrington <bryce@bryceharrington.org>)
============================================================================
We're nearly ready to finalize the 1.16.0 release, so this snapshot
can be considered a beta for 1.16.
The most notable change this release is a performance optimization for
windows, discussed below. Other than that, much of the development
focus was on final polish and stability as we prepare for 1.16.
Some attention went into getting the testsuite passing at least for the
image backend. The Cairo testsuite depends on external software like
Pixman, and changes in the rendering behavior of these dependencies
change test behavior, leading to false positives.
Results from the Coverity static testing tool were also reviewed. Most
of the issues flagged were false positives, but there were several
legitimate problems found and fixed.
For a complete log of changes, please see
http://cairographics.org/releases/ChangeLog.cairo-1.15.12
Features and Enhancements
-------------------------
* Add more FreeeType font color conversions to support COLR/CPAL
* Update test reference images against current pixman
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
Vasily Galkin introduced a Win32 performance optimization for
CAIRO_OPERATOR_SOURCE when copying data from a backbuffer to an argb32
surface corresponding to a Win32 DC. With this, argb32 drawing should
perform as fast as typical dibsection-buffered GDI drawing. See the
Cairo mailing list for April 2018 for data and discussion of the
performance improvements.
Bug Fixes
---------
* Fix crash when rendering Microsoft's Segoe UI Emoji Regular font.
* Fix build breakage with glesv3 enabled due to non-existant glesv3.pc.
* Fix memory leaks found by Coverity
* Fix incorrect null ptr handling found by Coverity
* Fix test compilation when font-config is disabled
* Use _cairo_malloc instead of malloc (Bug #101547) (CVE-2017-9814)
* Fix assertion failure in the freetype backend (Bug #105746)
Full changes since 1.15.12:
===========================
Adrian Johnson (1):
Use _cairo_malloc instead of malloc
Alexandre Bique (1):
Fix test compilation when font-config is disabled
Behdad Esfahbod (1):
[ft] Implement some more color conversion routines
Bryce Harrington (24):
Drop stray patch from prior commit
gl: Whitespace cleanup
win32: Copyedit recent comments
test: Use C comment syntax, not C++
Bump version for new development tree, 1.15.13
script-surface: Check for invalid ids (CID #1159557, 1159558)
bo: Check null return from _cairo_malloc_ab() (CID #1159556)
snapshot: Don't use extra after it's been freed (CID #220086)
bo: Free event_y in case of error to prevent memory leak (CID ##1160682)
pdf: Fix potential null ptr deref when creating smask groups (CID #1159559)
type1-subset: Fix incorrect null ptr check from find_token() (CID #1160662)
polygon-intersection: Clarify ptr checks for right edges (CID #1160730)
gl: For glesv3 detection, use glesv2.pc + header check
scaled-font: Fix glyph and cluster count checks (CID #983386)
Convert 3 headers to UTF8
build: Sp. fix
doc: Add missing symbols to sections for recently added APIs
Fix sp. sheering
gstate: Minor grammar copyedit
Normalize more test reference images with minor text rendering differences
Normalize one more test image with minor gradient differences
doc: Drop tmpl support
1.15.14 release
Bump version for 1.15.15
Federico Mena Quintero (5):
cairo-analysis-surface: Quell invalid uninitialized variable warning
test/extended-blend.c: Remove obsolete comments about buggy librsvg
Normalize extended-blend-mask.{argb32,rgb24}.ref.png
Normalize test images with minor gradient differences
Normalize test reference images with minor text rendering differences
Uli Schlachter (1):
Fix assertion failure in the freetype backend
Vasily Galkin (3):
win32: Introduce new flag to mark surfaces that support solid brush drawing
win32: CAIRO_WIN32_SURFACE_CAN_RGB_BRUSH and other argb32 flags set+check
win32: Allow GDI operations for argb32 surfaces (allowed by surface flags)
Subject: cairo snapshot 1.15.12 now available
A new cairo snapshot 1.15.12 is now available from:
http://cairographics.org/snapshots/cairo-1.15.12.tar.xz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.15.12.tar.xz.sha1
4e64c6a48789edb4c60bc3fa95bd3992cc388b88 cairo-1.15.12.tar.xz
http://cairographics.org/snapshots/cairo-1.15.12.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.15.12 tag which points to a commit named:
7149686456ec3c481fa1d3dbe76a0dab1e42b519
which can be verified with:
git verify-tag 1.15.12
and can be checked out with a command such as:
git checkout -b build 1.15.12
Release 1.15.12 (2018-04-04 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
The main focus for this release is the addition of Variable Font
support. Variable fonts are single font files with various typography
characteristics, such as weight or slant, that users of the font can
adjust between two points. Effectively this enables a single font to
behave as multiple fonts.
The Skia backend is disabled in this release, due to severe bitrot, and
will be removed in future releases. Contact the cairo team if you have
a need of this backend.
For a complete log of changes, please see
http://cairographics.org/releases/ChangeLog.cairo-1.15.12
Features and Enhancements
-------------------------
* Variable font support
* Skia backend is disabled
API Changes
-----------
* cairo_font_options_get_variations() and
cairo_font_options_set_variations() are added.
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix errors in csi-trace --help and --version options
* Fix a 'memory leak' in the image compositor, with
pixman_glyph_cache_t.
* Fix access of uninitialized memory found by valgrind
(Bug #91271)
* Fix improper initialization of memory in
_cairo_ft_font_face_create_for_pattern()
(Bug #105084)
* Fix multi-monitor virtual desktop with negative coords on Win32
(Bug #100793)
* Fix issues occuring with older FreeType versions.
What is cairo
-------------
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo include stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
-----------------------------------------
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
Changes since 1.15.10
---------------------
Adrian Johnson (1):
ps: fix compile warning
Antonio Ospite (1):
svg: fix compilation with MSVC which doesn't support C99 initializers
Behdad Esfahbod (13):
[variations] Towards fixing test
[variations] Fix test
[variations] Merge variations in cairo-ft font option merging
[varfonts] Use blend, not design, coordinates to check for non-base variation
[varfonts] Correctly (re)set variations of named instances
[ft] Use variations from ft_options, not scaled-font
[ft] When merging font options, order variations correctly
[ft] Fix warnings
[ft] Remember variations set on FT_Face and apply them
Merge branch 'font-variations'
Use FT_Done_MM_Var() if available
Fix compile with older FreeType without FT_Get_Var_Design_Coordinates
Fixup on previous commit
Bryce Harrington (18):
1.15.10 release
1.15.10 release
Bump version for new development tree, 1.15.9
svg: Label for cairo_svg_unit_t doxygen was incorrect
makefile: Fix sorting of source files
test: Fix compile with older FreeType without FT_Get_Var_Design_Coordinates
RELEASING: Refine devel version and tagging
Fix two type casting warnings in get_C_locale()
font: Check return value from _cairo_ft_unscaled_font_lock_face
xml: Typo in comment
win32: Whitespace cleanup
win32: Fix a few typos in comments
compiler-private: Define what PLT stands for
cairo-version: Fix version references in docs
Disable skia from configure
configure: Conditionalize color font feature for older freetype2
1.15.12 release
Bump version for new development tree, 1.15.13
Eric Hoffman (1):
win32: Fix multi-monitor virtual desktop with negative monitor coords
Federico Mena Quintero (2):
Add .gitlab-ci.yml to run the tests automatically
bfo#105084 - Initialize memory properly in _cairo_ft_font_face_create_for_pattern()
Massimo (1):
bfo#91271 - Fix access of uninitialized memory
Matthias Clasen (21):
Fix a logic error in color glyph compositing
Make _intern_string_hash safe for ""
Make _intern_string_hash non-static
Add font variations to font options
Load font variations from fontconfig too
Use strtod_l when available
Apply font variations when loading fonts
Add a test for font variations
Work around a freetype bug
Make the font-variations test pass
Apply font variation options consistently
Always save the origin face index
Trivial: code movement
Apply font variations when loading glyphs
fixup: remove a hack
fixup
Shortcut FT_Set_Var_Design_Coordinates
Fix a memory leak
Don't leak patterns when compositing color glyphs
Add a _cairo_font_options_fini function
Don't leak memory in font options
Uli Schlachter (7):
Revert "fix warning: variable X might be clobbered by 'longjmp'"
Add test for error handling with broken PNG streams
Fix warning: '*' in boolean context
fix warning: variable X might be clobbered by 'longjmp'
Fix a 'memory leak' in the image compositor
Skip font-variations test for missing fonts
pthread-same-source: Refresh reference images
Unknown (1):
Cairo trivial typos
suzuki toshiya (1):
csi-trace does not show help
Subject: Cairo 1.14.12 released
A new cairo release 1.14.12 is now available from:
http://cairographics.org/releases/cairo-1.14.12.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.14.12.tar.xz.sha1
490025a0ba0622a853010f49fb6343f29fb70b9b cairo-1.14.12.tar.xz
http://cairographics.org/releases/cairo-1.14.12.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.14.12 tag which points to a commit named:
7cf32a065e7c3d8721ae5f4eccf6695152fe14b7
which can be verified with:
git verify-tag 1.14.12
and can be checked out with a command such as:
git checkout -b build 1.14.12
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix assertion hit with PDFs using Type 4 fonts rendered with user
fonts, due to error when destroying glyph page.
(Bug #103335)
* Fix build error with util/font-view
* Fix handling of truetype fonts with excessively long font names
(Bug #103249)
* Fix falling back to system font with PDFs using certain embedded
fonts, due to truncated font names.
(Bug #103249)
* Fix sigabrt printing documents with fonts lacking the mandatory .nodef
glyph.
(Bug #102922)
* Fix undefined-behavior with integer math.
* Fix various warnings and typos
See below for a complete log of changes since 1.14.10, or see:
http://cairographics.org/releases/ChangeLog.cairo-1.14.12
What is cairo
-------------
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
-----------------------------------------
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
Changes since 1.14.10
---------------------
Adrian Johnson (8):
fix warning: inlining failed in call to '_csi_stack_push'
util/font-view: fix build error
fix warning: variable X might be clobbered by 'longjmp'
truetype: limit font name to 127 chars
output-stream: allow %s strings larger than 512 chars
truetype: reserve space in subset arrays for .notdef
replace _BSD_SOURCE with _DEFAULT_SOURCE
build: use _WIN32 instead of windows.h to check for windows build
Aleksander Morgado (1):
build: fix minor typo in autogen.sh
Behdad Esfahbod (1):
Fix undefined-behavior with integer math
Bryce Harrington (3):
Start 1.14.11 development
Release 1.14.12
Start 1.14.13 development
Carlos Garcia Campos (1):
scaled-font: Fix assert when destroying glyph page
Subject: cairo snapshot 1.15.10 now available
A new cairo snapshot 1.15.10 is now available from:
http://cairographics.org/snapshots/cairo-1.15.10.tar.xz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.15.10.tar.xz.sha1
de180498ac563249b93ee5e17ba9aa26f90644b3 cairo-1.15.10.tar.xz
http://cairographics.org/snapshots/cairo-1.15.10.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.15.10 tag which points to a commit named:
95c464d5feaae58b6cc0990434ce2498cc315dc6
which can be verified with:
git verify-tag 1.15.10
and can be checked out with a command such as:
git checkout -b build 1.15.10
Release 1.15.10 (2017-12-07 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
This release adds GLESv3 support to the cairo_gl backend, adds
tracking of SVG units in generated svg documents, and cleans up numerous
test failures and related issues in the PDF and Postscript backends.
For a complete log of changes, please see
http://cairographics.org/releases/ChangeLog.cairo-1.15.10
Features and Enhancements
-------------------------
* Add support for OpenGL ES 3.0 to the gl backend.
* Use Reusable streams for forms in Level 3 Postscript.
* Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files.
* Add CCITT_FAX mime type for PDF and PS surfaces
* svg: add a new function to specify the SVG document unit
(Bug #90166)
* Use UTF-8 filenames on Windows
API Changes
-----------
* cairo_svg_surface_set_document_unit() and
cairo_svg_surface_get_document_unit()
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix regression in gles version detection
* Fix undefined-behavior with integer math.
* Handle SOURCE and CLEAR operators when painting color glyphs.
(Bug #102661)
* Convert images to rgba or a8 formats when uploading with GLESv2
* Use _WIN32 instead of windows.h to check for windows build.
* Fix sigabrt printing documents with fonts lacking the mandatory .nodef
glyph.
(Bug #102922)
* Prevent curved strokes in small ctms from being culled from vector
surfaces
(Bug #103071)
* Fix painting an unbounded recording surface with the SVG backend.
* Fix falling back to system font with PDFs using certain embedded
fonts, due to truncated font names.
(Bug #103249)
* Fix handling of truetype fonts with excessively long font names
(Bug #103249)
* Fix race conditions with cairo_mask_compositor_t
(Bug #103037)
* Fix build error with util/font-view
* Fix assertion hit with PDFs using Type 4 fonts rendered with user
fonts, due to error when destroying glyph page.
(Bug #103335)
* Set default creation date for PDFs
* Prevent invalid ptr access for > 4GB images.
(Bug #98165)
* Prevent self-copy infinite loop in Postscript surface.
* Fix padded image crash in Postscript surface.
* Fix annotation bugs in PDFs and related memory leaks
* Fix test failures and other assorted issues in ps and pdf code.
* Fix code generation when using GCC legacy atomic operations
(Bug #103559)
* Fix various compilation warnings and errors.
* Fix various distcheck errors with private symbols, doxygen formatting,
etc.
See below for a complete log of changes since 1.15.8, or see:
http://cairographics.org/releases/ChangeLog.cairo-1.15.10
What is cairo
-------------
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
-----------------------------------------
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
Changes since 1.15.8
--------------------
Adrian Johnson (47):
RELEASING: use correct branch name
Remove unused variable
build: use _WIN32 instead of windows.h to check for windows build
replace _BSD_SOURCE with _DEFAULT_SOURCE
factor out ascii to double code in cff-subset into _cairo_strtod
truetype: reserve space in subset arrays for .notdef
truetype: clarify glyph count variables
Prevent curved strokes in small ctms from being culled from vector surfaces
svg: fix painting an unbounded recording surface
output-stream: allow %s strings larger than 512 chars
truetype: limit font name to 127 chars
svg: use hash table instead of user_data to track emitted surfaces
svg: source surface hash table does not need to hold the source
svg2png: remove unused headers
ft: prevent unused var warning when freetype < 2.8
fix unused function warnings
svg: recording_surface is needed even if not emitted
fix warning: variable X might be clobbered by 'longjmp'
fix warning: inlining failed in call to '_csi_stack_push'
util/font-view: fix build error
Add CCITT_FAX mime type for PDF and PS surfaces
Allow mime image to be different size to cairo image
pdf: set ca/CA instead of using an smask when the mask has constant alpha
pdf: set default create date
pdf: remove old comment
image: prevent invalid ptr access for > 4GB images
Add mime-unique-id test
pdf: fix mime-unique-id bounded recording test
pdf: fix mime-unique-id unbounded recording test
pdf: fix mime-unique-id jpeg attached to recording test
ps: emit base85 strings instead of strings of base85
ps: remove unused prolog
ps: use << >> for dictionaries instead of dict begin end
ps: don't acquire image or snapshot in acquire_source_image_from_pattern
ps: use forms for surfaces with UNIQUE_ID mime type
ps: use Reusable streams for forms in Level 3
ps: add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files
test: use CAIRO_MIME_TYPE_UNIQUE_ID with record-text-transform
ps: prevent self-copy infinite loop
ps: fix padded image crash
ps: fix extend-*-similar failures
test: update some stale ref images
pdf: fix document structure for non tagged structures
ps: fix compile with old versions of MSVC
pdf: fix some annotation bugs
Prevent -Wundef warnings in when cairo-ft.h is used without fontconfig
ps: fix compile warning
Aleksander Morgado (1):
build: fix minor typo in autogen.sh
Antonio Ospite (2):
svg: add a new function to specify the SVG document unit
svg: fix compilation with MSVC which doesn't support C99 initializers
Behdad Esfahbod (2):
Fix undefined-behavior with integer math
Handle SOURCE and CLEAR operators when painting color glyphs
Bryce Harrington (15):
Bump version for new development tree, 1.15.9
glesv2: Fix regression in gles version detection
gl: Convert images to rgba or a8 formats when uploading with GLESv2
gl: Make _cairo_gl_ensure_framebuffer a private shared routine
gl: Add support for OpenGL ES 3.0
Factor out the ISFINITE() macro
configure: Check for typeof
Un-doxygen disabled cairo_set_opacity
image: Fix include for use of ptrdiff
win32: Fix since field version number
Fix various doxygen warnings found by check-doc-syntax.sh
Fix distcheck errors on use of #ifdef
pattern: Mark a private routine as cairo_private.
1.15.10 release
Bump version for new development tree, 1.15.9
Carlos Garcia Campos (1):
scaled-font: Fix assert when destroying glyph page
Mikhail Fludkov (2):
Surround initialisations with atomic critical section
Fix code generation when using GCC legacy atomic operations
Tom Schoonjans (1):
Use UTF-8 filenames on Windows
Subject: cairo snapshot 1.15.8 now available
A new cairo snapshot 1.15.8 is now available from:
http://cairographics.org/snapshots/cairo-1.15.8.tar.xz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.15.8.tar.xz.sha1
07cc2031b74d758299eeee3ec49ecbfbfb85f1c6 cairo-1.15.8.tar.xz
http://cairographics.org/snapshots/cairo-1.15.8.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.15.8 tag which points to a commit named:
112f0fc73b769c2db69f50601bf094892bd6db10
which can be verified with:
git verify-tag 1.15.8
and can be checked out with a command such as:
git checkout -b build 1.15.8
Features and Enhancements
-------------------------
* Support colored emoji glyphs, stored as PNG images in OpenType fonts.
Bug Fixes
---------
* pdf: Fix internal links pointing to other pages, by pre-calculating page
heights so that link positions can be calculated more accurately.
* image: Fix crash on negative lengths
* win32: Fix initialization of mutexes for static builds
* pdf: Don't emit /PageLabel dict when no labels defined
* font: Fix color font loading on big-endian systems
* font: Fix color font support infinite-loop with empty glyphs
* Fix off by one check in cairo-image-info.c
Full List of Changes
--------------------
Adrian Johnson (8):
Fix off by one check in cairo-image-info.c
tests: fix bug in pdf-tagged-text that was introduced in 4790a36
pdf: link tags do not need to be leaf nodes in the document structure
pdf: Don't emit /PageLabel dict when no labels defined
pdf: don't write logical structure if it only contains links
pdf: fix link positions
pdf: use link attributes instead of dest name for cairo_pdf_surface_add_outline
pdf: use explicit dest instead of named dest when 'internal' attribute is set
Alexander Täschner (1):
win32: Initialize mutexes for static builds for win32
Behdad Esfahbod (3):
Fix color font support infinite-loop with empty glyphs
Fix uninitialized status!
[ft] Fix color font loading on big-endian systems
Bryce Harrington (6):
Bump version for new development tree, 1.15.7
RELEASING: Note use of branches for stable releases
RELEASING: Note adding index to cairo-docs.xml for minor releases
cairo-docs: whitespace cleanup
image: Disambiguate 0. in doxygen
1.15.8 release
Doran Moppert (1):
image: Check for negative len in fill/blit functions
Guillermo Rodriguez (2):
script: Fix misleading indentation warning.
Remove redundant check.
Matthias Clasen (6):
Add support for color glyphs to cairo_scaled_glyph_t
Support loading color glyphs with freetype
Expose 'has color glyphs' as a scaled font property
Implement has_color_glyphs for freetype
Render color glyphs as source, not as mask
Simplify things a bit
What is Cairo
-------------
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo include stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about Cairo
-----------------------------------------
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
Subject: cairo release 1.14.10 now available
A new cairo release 1.14.10 is now available from:
http://cairographics.org/releases/cairo-1.14.10.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.14.10.tar.xz.sha1
28c59d85d6b790c21b8b59ece73a6a1dda28d69a cairo-1.14.10.tar.xz
http://cairographics.org/releases/cairo-1.14.10.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.14.10 tag which points to a commit named:
05b63e807bb5f86f600283df1c3ca554778d90fa
which can be verified with:
git verify-tag 1.14.10
and can be checked out with a command such as:
git checkout -b build 1.14.10
Features and Enhancements
-------------------------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Clarify documentation regarding device scale inheritance and the units
used in cairo_surface_create_similar_image. Bug #99094.
* Fix error reporting in the xcb backend if fallback fails. Instead of
returning NULL when the X11 server can't do some operation, return a
surface in an error state.
* Call XSync in the xlib backend before setting the error handler to
ignore errors for certain requests, to make sure all pending errors
are handled first.
* For opentype fonts, always use gid to lookup glyph.
* If glyph 0 used for rendering, remap to different index.
* Set font size to em size when retrieving unhinted metrics.
* Flush ASCII85Decode file after use with Postscript files.
* pdf: Don't fail subsetting if unable to convert utf8 to utf16.
* For truetype, reverse cmap search should end when 0xffff- 0xffff range
reached.
* Fix bug in line wrapping with the PDF operators.
* Fix an off by one check in cairo-image-info.c.
What is cairo
-------------
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
-----------------------------------------
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
Changelog
---------
Adrian Johnson (8):
cff: opentype fonts always use gid to lookup glyph
scaled-font-subsets: if glyph 0 used for rendering, remap to different index
ft: set font size to em size when retrieving unhinted metrics
ps: flush ASCII85Decode file after use
pdf: Don't fail subsetting if unable to convert utf8 to utf16
truetype: reverse cmap search should end when 0xffff- 0xffff range reached
pdf-operators: fix bug in line wrapping
Fix off by one check in cairo-image-info.c
Bryce Harrington (4):
Start 1.14.9 development
RELEASING: Sync doc from trunk
Release 1.14.10
Start 1.14.11 development
Debarshi Ray (2):
doc: Clarify when the device scale is inherited and when it isn't
doc: Fix the units used by cairo_surface_create_similar_image
Uli Schlachter (2):
xcb: Fix error reporting if fallback fails
xlib: Call XSync() before ignoring errors
Subject: cairo snapshot 1.15.6 now available
A new cairo snapshot 1.15.6 is now available from:
http://cairographics.org/snapshots/cairo-1.15.6.tar.xz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.15.6.tar.xz.sha1
1a1724ecd012efeeaa43adee7094223227b61d90 cairo-1.15.6.tar.xz
http://cairographics.org/snapshots/cairo-1.15.6.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.15.6 tag which points to a commit named:
c31721ab27c65941dd9e0c29662d7ebb5caa2a01
which can be verified with:
git verify-tag 1.15.6
and can be checked out with a command such as:
git checkout -b build 1.15.6
This new snapshot incorporates changes over the past half-year since the
1.15.4 snapshot, including all the fixes from the 1.14 release series.
The PDF code continues to be enhanced, and we're restored MacOSX 10.4
support. Font-related fixes and improved error handling for X round out
the release.
For a complete log of changes, please see
http://cairographics.org/releases/ChangeLog.cairo-1.15.6
Features and Enhancements
-------------------------
* Detect if variable fonts have synthesized bold/italic or non-default
variants, and use a fallback font where needed.
* Restore MacOSX 10.4 support. Cairo had dropped 10.4 support when
moving to the CoreText API. Now we automatically detect which API to
use via dynamic linking, so can resume supporting this older version
of MacOSX.
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix error reporting in the xcb backend if fallback fails. Instead of
returning NULL when the X11 server can't do some operation, return a
surface in an error state.
* Call XSync in the xlib backend before setting the error handler to
ignore errors for certain requests, to make sure all pending errors
are handled first.
* Fix text-glyph-range for quartz-font. Use 0xFFFF instead of 0 for
invalid index tracking.
* Fix handling of Supplementary Multilingual Plane (SMP) Unicode
characters in quartz-font.
* Fix various issues in the drm backend including updating API usage and
general code cleanup.
* Clarify documentation regarding device scale inheritance and the units
used in cairo_surface_create_similar_image.
Bug #99094.
What is cairo
-------------
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
-----------------------------------------
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
Changelog
---------
Adrian Johnson (3):
pdf: don't return uninitialized status
pdf-operators: fix bug in line wrapping
subsetting: support variable fonts
Andrea Canciani (5):
quartz: Restore 10.4-specific font code
test: Add a test for characters in the SMP
unicode: Extract the UCS4 to UTF-16 conversion to a separate function
quartz-font: Correct handling of SMP Unicode characters
quartz-font: Fix text-glyph-range
Bryce Harrington (6):
Bump version for new development tree, 1.15.5
RELEASING: Fix tabbing
gl: Fix comment syntax
drm: Add/reorder headers as required by check-preprocessor-syntax.sh
1.15.6 release
Chris Wilson (1):
stroker: Check for scaling overflow in computing half line widths
Debarshi Ray (2):
doc: Fix the units used by cairo_surface_create_similar_image
doc: Clarify when the device scale is inherited and when it isn't
Enrico Weigelt, metux IT consult (4):
drm: fixed missing includes
drm: dropped obsolete/unused intel_bo_get_image()
drm: use typedefs and defines from drm headers instead of redundant own definitions
drm: fixed calls to _cairo_surface_init()
Kouhei Sutou (2):
pdf: Remove duplicated item
pdf: Fix wrong cairo_pdf_outline_flags_t item prefix
Uli Schlachter (4):
xlib: Remove unused variable
xlib: Call XSync() before ignoring errors
Revert "stroker: Check for scaling overflow in computing half line widths"
xcb: Fix error reporting if fallback fails
A new maintainer has taken up pycairo development, bringing it
up to date with latest Cairo versions, and moving it to github.
Releases are still being announced on the Cairo mailing list,
but for downloads and documentation, go to its new site:
https://pycairo.readthedocs.io/en/latest/
Subject: cairo snapshot 1.15.4 now available
A new cairo snapshot 1.15.4 is now available from:
http://cairographics.org/snapshots/cairo-1.15.4.tar.xz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.15.4.tar.xz.sha1
4e5d28697ac5a750a071edcf4a99e8af8d7c04b2 cairo-1.15.4.tar.xz
http://cairographics.org/snapshots/cairo-1.15.4.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.15.4 tag which points to a commit named:
9fe6683cb105354e86ea649ba7a13052c7edc757
which can be verified with:
git verify-tag 1.15.4
and can be checked out with a command such as:
git checkout -b build 1.15.4
This new snapshot incorporates changes over the past year since the
1.15.2 snapshot, including all the fixes from the 1.14 release series.
Of particular note in this snapshot is a wealth of work by Adrian
Johnson to enhance PDF support, as well as numerous bug fixes provided
by him and other contributors.
For a complete log of changes since the last release, please see:
http://cairographics.org/releases/ChangeLog.cairo-1.15.4
Features
--------
* The PDF backend has gained support for a range of widely used
features, including thumbnails, page labels, metadata, document
outlines, structured text, hyperlinks, and tags. Tags permit adding
logical info such as headings, tables, figures, etc. that facilitates
indexing, accessibility, text reflow, searching, and extraction of the
tagged items to other software. For details on this new PDF
functionality, see:
https://lists.cairographics.org/archives/cairo/2016-June/027427.html
API Changes
-----------
cairo_win32_surface_create_with_format
Added a cairo API to set up Win32 surfaces for HDC with alpha
channels.
cairo_pdf_surface_add_outline
cairo_pdf_surface_set_metadata
cairo_pdf_surface_set_page_label
cairo_pdf_surface_set_thumbnail_size
cairo_tag_begin
cairo_tag_end
CAIRO_STATUS_TAG_ERROR
New API for added PDF functionality (see above), and new error
status item for problems relating to PDF tagging.
CAIRO_STATUS_WIN32_GDI_ERROR
CAIRO_STATUS_FREETYPE_ERROR
CAIRO_STATUS_PNG_ERROR
New error status items for handling of GDI, libfreetype, and libpng
errors, respectively.
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Bug fixes from 1.15.2 (see the 1.15.2 NEWS for details)
* Fix playback of recording surfaces into PDF surfaces, where objects
with negative coordinates were not getting drawn. To address this,
the coordinate systems for PDF and PS have been changed to match
cairo's coordinate system. This allows recording surfaces to be
emitted in cairo coordinates, and results in the same origin being
used for all operations when using the recording surface XObject.
Test cases for PDF and PS have also been updated accordingly.
(Bug #89232)
* Fix "invalidfont" error on some printers when printing PDFs with
embedded fonts that have glyphs (such as spaces) with
num_contours == 0. (Bug #79897)
* Fix missing glyphs such as thin dashes, which get scaled to 0 in
userspace and thus have their drawing operations culled. (Bug #94615)
* Fix other oddities caused by variously idiosyncratic fonts.
* Fix deadlock when destruction of a scaled font indirectly triggers
destruction of a second scaled font, causing the global cache to be
locked twice. (Bug #93891)
* Fix X errors reported to applications when shmdt() is called before
the Attach request is processed, due to missing xcb and xlib calls.
* Fix random failure in record-paint-alpha-clip-mast test case, caused
by an incorrect assumption that a deferred clear can be skipped.
(Bug #84330)
* Fix crash when dealing with an XShmGetImage() failure, caused by a
double free in _get_image_surface(). (Bug #91967)
* Fix invalid execution of ASCII85 data by the PS interpreter that the
image operator didn't use, by flushing the extraneous data after
drawing the image. (Bug #84811)
* Fix decoding of Adobe Photoshop's inverted CMYK JPEG files in PDF
export.
* Fix unbounded surface assertion in win32-print code.
* Fix a data race in freed_pool discovered by Firefox's cairo usage.
The patch adads atomic int load and store functions, with relaxed
memory ordering. (Bug #90318)
* Cleanup debugging text sent to stdout instead of log. (Bug #95227)
* Fix build issue when using non-GNU strings utility. (Bug #88639)
* Fix build of cairo modules as regular modules, not as versioned shared
libaries. (Bug #29319)
* Fix build on win32 using gcc 5.4.
* Fix build of script backend to require zlib.
* Update test suite reference images using Debian Jessie 64-bit and
poppler current as of June, 2016.
* Various improvements to documentation and tests, compiler warning
fixes, and an assortment of code refactoring and cleanup.
A new cairo release 1.14.8 is now available from:
http://cairographics.org/releases/cairo-1.14.8.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.14.8.tar.xz.sha1
c6f7b99986f93c9df78653c3e6a3b5043f65145e cairo-1.14.8.tar.xz
http://cairographics.org/releases/cairo-1.14.8.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.14.8 tag which points to a commit named:
9b23aa0f9de4b0ccac8640bea43570b13f8f5a0f
which can be verified with:
git verify-tag 1.14.8
and can be checked out with a command such as:
git checkout -b build 1.14.8
Release 1.14.8 (2016-12-07 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Bugfix release rolling up backported fixes for the past year.
For a complete log of changes since 1.14.6, please see:
http://cairographics.org/releases/ChangeLog.cairo-1.14.8
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix "invalidfont" error on some printers when printing PDFs with
embedded fonts that have glyphs (such as spaces) with
num_contours == 0. (Bug #79897)
* Fix deadlock when destruction of a scaled font indirectly triggers
destruction of a second scaled font, causing the global cache to be
locked twice. (Bug #93891)
* Fix X errors reported to applications when shmdt() is called before
the Attach request is processed, due to missing xcb and xlib calls.
* Fix random failure in record-paint-alpha-clip-mast test case, caused
by an incorrect assumption that a deferred clear can be skipped.
(Bug #84330)
* Fix crash when dealing with an XShmGetImage() failure, caused by a
double free in _get_image_surface(). (Bug #91967)
* Fix build issue when using non-GNU strings utility. (Bug #88639)
* Cleanup debugging text sent to stdout instead of log. (Bug #95227)
A new cairo snapshot 1.15.2 is now available from:
http://cairographics.org/snapshots/cairo-1.15.2.tar.xz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.15.2.tar.xz.sha1
1948129ea5047332d79141a9de10558b9705583e cairo-1.15.2.tar.xz
http://cairographics.org/snapshots/cairo-1.15.2.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.15.2 tag which points to a commit named:
db8a7f1697c49ae4942d2aa49eed52dd73dd9c7a
which can be verified with:
git verify-tag 1.15.2
and can be checked out with a command such as:
git checkout -b build 1.15.2
Release 1.15.2 (2015-12-10 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
This release is largely a rollup to include a variety of fixes that
didn't make the cut for the stable 1.14.2 and 1.14.4 releases, as well
as all the fixes from those releases. Notably this includes a highly
requested new API for Win32 surfaces.
For a complete log of changes since the last release, please see:
http://cairographics.org/releases/ChangeLog.cairo-1.15.2
Features
--------
None
API Changes
-----------
cairo_win32_surface_create_with_format
Added a cairo API to set up Win32 surfaces for HDC with alpha
channels.
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* All the bug fixes from 1.14.2, 1.14.4, and 14.6
* Fix xcb/xlib compilation and calls. Make image boxes behave when SHM
is not available.
* Fix various issues with printing and transparent images on Win32.
* Fix thin lines that don't show up when printing in Inkscape due to
overly aggressive culling.
(Bug #77298)
* Fix broken printing via pdf when glyph 0 is used for rendering,
resulting in missing spaces and letters.
(Bug #89082)
* Fix crash for certain glyphs in opentype fonts.
(Bug #91902)
* Fix incorrect rendering of SVG paths with more than one subpath. If
more than one trap is passed in then it's guaranteed that the returned
traps will have their left edge to the left of their right edge, but
if only one trap is passed in then the function always returns without
doing anything.
(Bug #90984)
* Improve rendering with Quarts to better match pixman's blending and
filtering behavior.
------------------------------------------------------------------------
Adam Jackson (2):
xlib: Don't crash when swapping a 0-sized glyph
xcb: Don't crash when swapping a 0-sized glyph
Adrian Johnson (24):
Update mime type documentation.
CFF: Fix unaligned access
pdf: fix compiler warning
build: fix regression on mingw
pdf-operators: only wrap text strings for PS output
Improve performance of cpu_to_be32 and be32_to_cpu
pdf-operators: fix bug with RTL text
doc: add index of new symbols in 1.14
cff: ensure glyph widths are positive when font matrix yy is negative
cff: opentype fonts always use gid to lookup glyph
scaled-font-subsets: if glyph 0 used for rendering, remap to different index
ps: merge emit_recording surface and emit_recording_subsurface into one function
ps: fix raster source patterns
ps: fix subsurface recordings
pdf: fix subsurface recordings
win32-print: Fix the page extents
win32-print: fix warnings
win32-print: support raster_source patterns
Don't cull very thin lines on vector surfaces
Add test case for thin lines
Fix some surfaces missed in b1192bea
Compile fix
win32-print: support subsurface recording patterns
Compile fix
Alban Browaeys (1):
pattern: allow for a floating one pixel rounded difference.
Andrea Canciani (13):
test: Release owned pattern
test: Free test list
font: Actually perform destruction of fonts
quartz: Remove call to obsolete CGFontGetGlyphPath
Update KNOWN_ISSUES documentation
Update README with new minimum MacOSX requirements
Harden make-cairo-test-constructors.sh
test: Fix coverage-intersecting-triangles reference
test: Correct bug number in clip-complex-bug61592
test: Always use DejaVu Sans as default font
test: Update quartz reference images
quartz: Align filtering quality with image backend
quartz: be more strict about the behavior of blend operators
Arpit Jain (3):
xlib: Fix deferencing of uninitialised 'display'
test/bitmap-font: Fix use of pointer after freed pointer
gl: Fix incorrect size of expression
Ashim (1):
Fix out of bound access in struct pattern->type
Behdad Esfahbod (3):
[ft] Return CAIRO_STATUS_FILE_NOT_FOUND if font file can't be opened
Oops, fixup previous commit
Remove debug printf; ouch!
Bryce Harrington (69):
Start 1.14.1 development
RELEASING: Update tags push command
Add execution bit for make-cairo-test-constructors.sh
Revert "Add execution bit for make-cairo-test-constructors.sh"
RELEASING: Be explicit as to which tag is pushed
Drop the target-specific huge-radial.pdf.*.ref.png images
test: Use ARRAY_LENGTH macro
Refactor ARRAY_LENGTH macro definitions in test code
image: Fix crash in _fill_xrgb32_lerp_opaque_spans
gitignore: logs, manuals
doc: Drop extraneous para's
git-ignore: Add build's test-driver
Revert "xlib: Remove queued event from _XReadEvents"
csi-trace: Add --version and --help args to utility
HACKING: Add link to git tutorial and wordsmith a bit
NEWS: Update for changes through Nov 2014
NEWS: Finish filling in changes
On MacOSX, the sed utility errors out when parsing non-UTF8 files. Because of this, the generated cairo-test-constructor only contained a few tests and the test suite was thus incomplete.
NEWS: Note about the OS X support
KNOWN_ISSUES: Restore known issues file as a stub
version: bump for cairo-1.14.2 release
RELEASING: Update contacts
Start 1.14.3 development
surface: Clarify flush documentation
NEWS: Sp. fix
Fix spellings descibed, indicies, stange
Fix broken canvas text font size in Inkscape
cairo-script: Improve buffer length check
cairo-script: Always include config.h first thing
cairo-script: Add missing copyright and boilerplate
cairo-script: Cleanup boilerplate header for consistency
cairo-script: Prefer cairo from local tree
cairo-script: Rename struct member to avoid name collision on AIX
cairo-script: Fix sp. "directoriy"
cairo-recording-surface: Fix loss of alpha when clipping
cairo-script: Return a cairo_status_t error, not FALSE
RELEASING: Add requirement to upload ChangeLogs
configure: Fix typo for missing line continuation character
cairo-gl: Still check the value of the macros
truetype: Drop redundant check of truetype struct
Revert "pattern: allow for a floating one pixel rounded difference."
Revert "cairo-gl: Fix compiler warning if CAIRO_HAS_*_FUNCTIONS is not defined."
If more than one trap is passed in then it's guaranteed that the returned traps will have their left edge to the left of their right edge, but if only one trap is passed in then the function always returns without doing anything. This results in incorrect rendering of SVG paths with more than one subpath.
svg2png: Only call deprecated g_type_init() for old glib versions.
test: Free the memory, not the pointer to the memory
boilerplate: Fix list termination for glXChooseVisual
NEWS: Fix date on release
NEWS: Begin filling out news entry for upcoming 1.14.4.
gitignore: Ignore .trs (test results)
test: Add script to summarize the test results from a run
test: Add script to display the difference between two result sets
Ensure null-terminated result from strncpy()
build: Use memory barriers for ARM
NEWS: Whitespace cleanup
NEWS: Update to cover changes to date
1.14.4 release
WIP news and release
NEWS: Update for 1.14.4 release
RELEASING: Note how to upload the changelog
RELEASING: Doc what's required to properly undo a publish
Bump version for new development tree, 1.15.1
RELEASING: Doc handling devel versions for micro vs minor releases
test: Fix use after frees
RELEASING: Whitespace cleanup. Fix inconsistent tabbing.
RELEASING: Fix misspelling in last commit
RELEASING: Make X.Y.Z versions less ambiguous
RELEASING: Drop inclusion of boilerplate in news messages
RELEASING: Clarify snapshot numbering rules
1.15.2 release
Chris Wilson (3):
xlib: Bump reference count for recording surface replays
Revert "xlib: Fix deferencing of uninitialised 'display'"
xlib: Avoid using uninitialised variable on impossible error path
Emanuele Aina (1):
cairo-trace: Fix duplicated surface push on similar-image
Fredrik Fornwall (1):
Fix cairo_get_locale_decimal_point() on Android
Hans Breuer (1):
win32: Fix compilation of 'cairo-path-stroke-traps.c' with MSVC8
Henry (Yu) Song (1):
xlib: Remove queued event from _XReadEvents
John Lindgren (1):
Avoid indiscriminate use of VALGRIND_MAKE_MEM_NOACCESS.
Julien Isorce (1):
build: Show all disabled features in cairo-features.h
Koop Mast (1):
cairo-gl: Fix compiler warning if CAIRO_HAS_*_FUNCTIONS is not defined.
Marc-André Lureau (1):
xlib: fix mixing xcb & xlib calls
Massimo Valentini (6):
tor-scan-converter: can't do_fullrow when intersection in row + 0.5subrow
win32: Fix crash from win32 surface's image size too small
polygon-intersection: Do not discard intersection exactly at top edge
polygon-intersection: Include approximation in intersection points
polygon-intersection: Try not to invoke undefined behaviour
polygon-intersection: Delete misleading comments and dead-code
Michael Haubenwallner (8):
fix conflicting types for 'sync' on AIX, bug#89338
skip MAP_NORESERVE when unsupported
define _GETDELIM for getline() on AIX
test: fix include order for AIX, bug#89354
perf/micro: fix include order for AIX, bug#89354
perf: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
Nathan Froyd (1):
Support new-style __atomic_* primitives
Patrick Fritzsch (1):
win32: check if GetTextMetrics failed
Ravi Nanjundappa (2):
Fix warnings from check-doc-syntax.sh
Fix one more warning from check-doc-syntax.sh
Rodrigo Rivas Costa (1):
win32-print: fix transparent images have black background
Sahil Vij (1):
gl: Fix bug in _cairo_gl_pattern_texture_setup()
Uli Schlachter (7):
tor-scan-converter: Correctly align 64bit types
xcb: Query the display's subpixel order via RENDER
xlib-xcb: Don't be lazy and use the real xcb_screen_t
XCB: Don't attach uploaded surfaces as snapshots
xcb: Fix _put_shm_image_boxes if no SHM available
xcb: Fix _put_image_boxes() if no SHM is available
Fix cairo-xlib-xcb compilation
Zan Dobersek (1):
Manually transpose the matrix in _cairo_gl_shader_bind_matrix()
Руслан Ижбулатов (2):
win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel.
win32: Add a win32 boilerplate that uses a real window
江頭幸路 (1):
Avoid appending an empty slot to an user data array when user_data is NULL.
A new cairo release 1.14.6 is now available from:
http://cairographics.org/releases/cairo-1.14.6.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.14.6.tar.xz.sha1
0a59324e6cbe031b5b898ff8b9e2ffceb9d114f5 cairo-1.14.6.tar.xz
http://cairographics.org/releases/cairo-1.14.6.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.14.6 tag which points to a commit named:
9d3191da6fae7dfd914c3516d6ba369c9ba1a576
which can be verified with:
git verify-tag 1.14.6
and can be checked out with a command such as:
git checkout -b build 1.14.6
Release 1.14.6 (2015-12-09 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Simple bugfix release to fix one Windows issue.
For a complete log of changes since 1.14.4, please see:
http://cairographics.org/releases/ChangeLog.cairo-1.14.6
-Bryce
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix failure on Windows due to reference of the function
cairo_win32_surface_create_with_format(), which isn't included in the
1.14.4 release. (Bug #92771)
------------------------------------------------------------------------
Bryce Harrington (4):
Bump version for new stable tree, 1.14.5
Revert "win32: Add a win32 boilerplate that uses a real window"
Release 1.14.6
Start 1.14.7 development.
A new cairo release 1.14.4 is now available from:
http://cairographics.org/releases/cairo-1.14.4.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.14.4.tar.xz.sha1
5b44471e7c328f96de6830baf8ea65030de797f9 cairo-1.14.4.tar.xz
http://cairographics.org/releases/cairo-1.14.4.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.14.4 tag which points to a commit named:
0317ee7f61f1f4d154f7cb7e56d2b1080c2c644a
which can be verified with:
git verify-tag 1.14.4
and can be checked out with a command such as:
git checkout -b build 1.14.4
Release 1.14.4 (2015-10-28 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Just in time for Halloween we see another bug-fix release for Cairo.
This brings a few dozen straightforward bug fixes with no API changes.
In addition, this includes a typical assortment of fixes to tests,
cleanup of warnings and memory leaks, correction of misspellings,
updates to documentation, etc.
For a complete log of changes since 1.14.2, please see:
http://cairographics.org/releases/ChangeLog.cairo-1.14.4
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Avoid appending empty slots to user data arrays. Fixes a memory
consumption regression since commit 9341c254a.
* Return a better error (file-not-found) when setting up pango on
devices where the font files don't have read permissions.
* Fix regression in the font size of canvas text in Inkscape when
compiled with the Quartz backend. (Bug #84324)
* Fix _cairo_gl_shader_bind_matrix() to maintain compatibility with
OpenGL ES 2.0. Manually transpose the matrix.
* Fix incorrect font descriptor conversion when the font matrix yy is
negative. (Bug #90538)
* Fix crash when using a complex path for clip and stroke due to
discarding the intersection exactly at the top edge.
(Bug #74779)
* Fix cairo_get_locale_decimal_point() on Android
* Fix compilation problem on AIX due to conflicting usage of symbol
'jmpbuf'. (Bug #89339)
* Fix broken rendering with XCB due to snapshotting of uploaded part of
surfaces. (Bug #67505)
* Fix loss of alpha when copying a mask for a cairo recording surface,
resulting in a double copy. (Bugs #73038, #73901)
* Fix incorrect recording of certain paths with script surfaces.
(Bug #91054)
* Fix typo in definition of MAYBE_WARN in configure script.
(Bug #89750)
* Fix use of filename variable after it's been freed.
(Bug #91206)
* Fix out of bounds access when printing pattern.
(Bug #91266)
* Fix incorrect size calculation in glyph cache unlocking for Cairo GL
compositor.
(Bug #91321)
* Fix memory leak in _cairo_gl_pattern_texture_setup()
(Bug #91537)
* Fix transparent images in win32-print.
(Bug #91835)
* Fix _put_shm_image_boxes and _put_image_boxes when no SHM available
with XCB.
------------------------------------------------------------------------
Adam Jackson (2):
xlib: Don't crash when swapping a 0-sized glyph
xcb: Don't crash when swapping a 0-sized glyph
Adrian Johnson (9):
Update mime type documentation.
CFF: Fix unaligned access
pdf: fix compiler warning
build: fix regression on mingw
pdf-operators: only wrap text strings for PS output
Improve performance of cpu_to_be32 and be32_to_cpu
pdf-operators: fix bug with RTL text
doc: add index of new symbols in 1.14
cff: ensure glyph widths are positive when font matrix yy is negative
Alban Browaeys (1):
pattern: allow for a floating one pixel rounded difference.
Andrea Canciani (9):
test: Release owned pattern
test: Free test list
font: Actually perform destruction of fonts
quartz: Remove call to obsolete CGFontGetGlyphPath
Update KNOWN_ISSUES documentation
Update README with new minimum MacOSX requirements
Harden make-cairo-test-constructors.sh
test: Fix coverage-intersecting-triangles reference
test: Correct bug number in clip-complex-bug61592
Arpit Jain (2):
test/bitmap-font: Fix use of pointer after freed pointer
gl: Fix incorrect size of expression
Ashim (1):
Fix out of bound access in struct pattern->type
Behdad Esfahbod (1):
[ft] Return CAIRO_STATUS_FILE_NOT_FOUND if font file can't be opened
Bryce Harrington (44):
Start 1.14.1 development
RELEASING: Update tags push command
Add execution bit for make-cairo-test-constructors.sh
Revert "Add execution bit for make-cairo-test-constructors.sh"
RELEASING: Be explicit as to which tag is pushed
Drop the target-specific huge-radial.pdf.*.ref.png images
test: Use ARRAY_LENGTH macro
Refactor ARRAY_LENGTH macro definitions in test code
image: Fix crash in _fill_xrgb32_lerp_opaque_spans
gitignore: logs, manuals
doc: Drop extraneous para's
git-ignore: Add build's test-driver
Revert "xlib: Remove queued event from _XReadEvents"
csi-trace: Add --version and --help args to utility
HACKING: Add link to git tutorial and wordsmith a bit
NEWS: Update for changes through Nov 2014
NEWS: Finish filling in changes
On MacOSX, the sed utility errors out when parsing non-UTF8 files
NEWS: Note about the OS X support
KNOWN_ISSUES: Restore known issues file as a stub
version: bump for cairo-1.14.2 release
RELEASING: Update contacts
Start 1.14.3 development
surface: Clarify flush documentation
NEWS: Sp. fix
Fix spellings descibed, indicies, stange
Fix broken canvas text font size in Inkscape
cairo-script: Improve buffer length check
cairo-script: Always include config.h first thing
cairo-script: Add missing copyright and boilerplate
cairo-script: Cleanup boilerplate header for consistency
cairo-script: Prefer cairo from local tree
cairo-script: Rename struct member to avoid name collision on AIX
cairo-script: Fix sp. "directoriy"
cairo-recording-surface: Fix loss of alpha when clipping
cairo-script: Return a cairo_status_t error, not FALSE
configure: Fix typo for missing line continuation character
test: Free the memory, not the pointer to the memory
boilerplate: Fix list termination for glXChooseVisual
Ensure null-terminated result from strncpy()
Revert "pattern: allow for a floating one pixel rounded difference."
Revert "win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel."
NEWS: Update for 1.14.4 release
1.14.4 release
Chris Wilson (1):
xlib: Bump reference count for recording surface replays
Emanuele Aina (1):
cairo-trace: Fix duplicated surface push on similar-image
Fredrik Fornwall (1):
Fix cairo_get_locale_decimal_point() on Android
Hans Breuer (1):
win32: Fix compilation of 'cairo-path-stroke-traps.c' with MSVC8
Henry (Yu) Song (1):
xlib: Remove queued event from _XReadEvents
Julien Isorce (1):
build: Show all disabled features in cairo-features.h
Massimo Valentini (6):
tor-scan-converter: can't do_fullrow when intersection in row + 0.5subrow
win32: Fix crash from win32 surface's image size too small
polygon-intersection: Do not discard intersection exactly at top edge
polygon-intersection: Include approximation in intersection points
polygon-intersection: Try not to invoke undefined behaviour
polygon-intersection: Delete misleading comments and dead-code
Michael Haubenwallner (8):
fix conflicting types for 'sync' on AIX, bug#89338
skip MAP_NORESERVE when unsupported
define _GETDELIM for getline() on AIX
test: fix include order for AIX, bug#89354
perf/micro: fix include order for AIX, bug#89354
perf: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
Nathan Froyd (1):
Support new-style __atomic_* primitives
Ravi Nanjundappa (2):
Fix warnings from check-doc-syntax.sh
Fix one more warning from check-doc-syntax.sh
Rodrigo Rivas Costa (1):
win32-print: fix transparent images have black background
Sahil Vij (1):
gl: Fix bug in _cairo_gl_pattern_texture_setup()
Uli Schlachter (6):
tor-scan-converter: Correctly align 64bit types
XCB: Don't attach uploaded surfaces as snapshots
xcb: Query the display's subpixel order via RENDER
xlib-xcb: Don't be lazy and use the real xcb_screen_t
xcb: Fix _put_shm_image_boxes if no SHM available
xcb: Fix _put_image_boxes() if no SHM is available
Zan Dobersek (1):
Manually transpose the matrix in _cairo_gl_shader_bind_matrix()
Руслан Ижбулатов (2):
win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel.
win32: Add a win32 boilerplate that uses a real window
江頭幸路 (1):
Avoid appending an empty slot to an user data array when user_data is NULL.
--
cairo mailing list
cairo@cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo
Date: Tue Mar 10 19:41:20 PDT 2015
From: Bryce Harrington <bryce@osg.samsung.com>
Subject: [cairo] cairo release 1.14.2 now available
A new cairo release 1.14.2 is now available from:
http://cairographics.org/releases/cairo-1.14.2.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.14.2.tar.xz.sha1
c8da68aa66ca0855b5d0ff552766d3e8679e1d24 cairo-1.14.2.tar.xz
http://cairographics.org/releases/cairo-1.14.2.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.14.2 tag which points to a commit named:
93422b3cb5e0ef8104b8194c8873124ce2f5ea2d
which can be verified with:
git verify-tag 1.14.2
and can be checked out with a command such as:
git checkout -b build 1.14.2
Release 1.14.2 (2014-03-09 Bryce Harrington <bryce@osg.samsung.com>)
====================================================================
This release provides collected bug fixes, along with one feature
enhancement for the xcb backend, and a small performance improvement for
fonts.
The running theme of the bug fixes is platform-specific issues, both
build and run-time. Platforms with fixes include Sparc, AIX, Windows
(mingw), and Windows (MSVC8). Memory leaks, valgrind issues, and PDF
issues round out our list.
It's come to light that changes in cairo 1.14 resulted in breakage on
MacOS X 10.4. We've not yet determined whether to fix up the support,
or excise the 10.4-specific code and support only OS X 10.5 or newer.
Meantime, we'll only advertise cairo as working on OS X 10.5.
Features
--------
* Improve xcb's handling of per-screen subpixel ordering. If no
Xft.rgba property is specified, default to the screen's subpixel
order.
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
* Improve performance of cpu_to_be32 and be32_to_cpu, making truetype
subsetting of large fonts run about 15% faster.
Bug Fixes
---------
* Fix unaligned access on sparc with the compact font format (CFF).
Unlike truetype, all data in CFF is not aligned.
(Debian bug #712836)
* Fix unaligned access on sparc with tor-scan-converter's memory pool.
* Fix crash when loading a PDF with a transformed image.
(fdo bug #85151)
* Fix regression on mingw for bigendian test due to removal of file
extension for executables.
(fdo bug #85120)
* Fix handling of backslash in PDF interpreter
(fdo bug #85662)
* Fix crash in xlib and xcb renderers when swapping a 0-sized glyph
* Fix bug with RTL text in PDF operators
(fdo bug #86461)
* Fix compilation 'cairo-path-stroke-traps.c' with MSVC8
(fdo bug #84908)
* Fix crash in _fill_xrgb32_lerp_opaque_spans when a span length is
negative.
* Fix valgrind error by releasing pattern created by
cairo_pattern_create_rgb().
* Fix valgrind errors when running cairo-test-suite.
* Fix memory leak in recording surface replays
(fdo bug #87898)
* Fix destruction of fonts in api-special-cases test.
(fdo bug #87567)
* Fix duplicated surface push on similar-image, preventing trivial GTK3
program traces from being replayable, with an error message about
invalid values for the size of the input.
(fdo bug #73580)
* Fix crash when win32 surface's image size does not cover the entire
surface.
(fdo bug #53121)
* Fix crash due to obsolete CGFontGetGlyphPath call
(fdo bug #84324)
* Fix several build issues on AIX
(fdo bugs #89338, #89340, #89356, #89354)
* Fix various documentation warnings and errors
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo include stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
Contributors
============
Adam Jackson (2):
xlib: Don't crash when swapping a 0-sized glyph
xcb: Don't crash when swapping a 0-sized glyph
Adrian Johnson (7):
Update mime type documentation.
CFF: Fix unaligned access
pdf: fix compiler warning
build: fix regression on mingw
pdf-operators: only wrap text strings for PS output
Improve performance of cpu_to_be32 and be32_to_cpu
pdf-operators: fix bug with RTL text
Andrea Canciani (6):
test: Release owned pattern
test: Free test list
font: Actually perform destruction of fonts
quartz: Remove call to obsolete CGFontGetGlyphPath
Update KNOWN_ISSUES documentation
Update README with new minimum MacOSX requirements
Bryce Harrington (21):
Start 1.14.1 development
RELEASING: Update tags push command
Add execution bit for make-cairo-test-constructors.sh
Revert "Add execution bit for make-cairo-test-constructors.sh"
RELEASING: Be explicit as to which tag is pushed
Drop the target-specific huge-radial.pdf.*.ref.png images
test: Use ARRAY_LENGTH macro
Refactor ARRAY_LENGTH macro definitions in test code
image: Fix crash in _fill_xrgb32_lerp_opaque_spans
gitignore: logs, manuals
doc: Drop extraneous para's
git-ignore: Add build's test-driver
Revert "xlib: Remove queued event from _XReadEvents"
csi-trace: Add --version and --help args to utility
HACKING: Add link to git tutorial and wordsmith a bit
NEWS: Update for changes through Nov 2014
NEWS: Finish filling in changes
On MacOSX, the sed utility errors out when parsing non-UTF8 files
NEWS: Note about the OS X support
KNOWN_ISSUES: Restore known issues file as a stub
version: bump for cairo-1.14.2 release
Chris Wilson (1):
xlib: Bump reference count for recording surface replays
Emanuele Aina (1):
cairo-trace: Fix duplicated surface push on similar-image
Hans Breuer (1):
win32: Fix compilation of 'cairo-path-stroke-traps.c' with MSVC8
Henry (Yu) Song (1):
xlib: Remove queued event from _XReadEvents
Massimo Valentini (2):
tor-scan-converter: can't do_fullrow when intersection in row + 0.5subrow
win32: Fix crash from win32 surface's image size too small
Michael Haubenwallner (8):
fix conflicting types for 'sync' on AIX, bug#89338
skip MAP_NORESERVE when unsupported
define _GETDELIM for getline() on AIX
test: fix include order for AIX, bug#89354
perf/micro: fix include order for AIX, bug#89354
perf: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
headers: fix include order for AIX, bug#89354
Ravi Nanjundappa (2):
Fix warnings from check-doc-syntax.sh
Fix one more warning from check-doc-syntax.sh
Uli Schlachter (3):
tor-scan-converter: Correctly align 64bit types
xcb: Query the display's subpixel order via RENDER
xlib-xcb: Don't be lazy and use the real xcb_screen_t
--
Bryce Harrington
Senior Open Source Developer - bryce@osg.samsung.com
Open Source Group - Samsung Research America
From: Bryce Harrington <bryce@osg.samsung.com>
To: cairo-announce@cairographics.org
Date: Fri, 07 Nov 2014 01:04:19 -0800
A new cairo release 1.12.18 is now available from:
http://cairographics.org/releases/cairo-1.12.18.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.18.tar.xz.sha1
a76940b58da9c83b8934264617135326c0918f9d cairo-1.12.18.tar.xz
http://cairographics.org/releases/cairo-1.12.18.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.18 tag which points to a commit named:
c5bba093dec4fc7addddb1a16b6a17e3a4c29555
which can be verified with:
git verify-tag 1.12.18
and can be checked out with a command such as:
git checkout -b build 1.12.18
Release 1.12.18 (2014-11-06 Bryce Harrington <bryce@osg.samsung.com>)
=====================================================================
By popular demand, here is an update of the 1.12 series. This provides
an array of important bug fix patches cherrypicked from the 1.14
series. Also included is the distcheck warnings cleanup work.
Note that glib 2.14 is now required for g_once_init_enter(), etc. in
cairo-gobject.
Bug Fixes
---------
Don't embed CMYK JPEG images since SVG viewers don't have support
Fix regression in the embedding of mime-data in PDF
Fix hardcoding of awk; search $PATH instead
Fix stroke-clipped for dashed strokes, etc.
Fix rectangle stroke with non-rectilinear pens in PDF
Fix imagemask with pattern source on certain PS printers
Fix font names in generated PDF when they have white space or
delimiter characters.
Fix crash in pixman_image_composite32()
Fix issue with modification of all-clipped cairo_clip_t, causing a
write to read-only memory.
Fix segfault in firefox when scrolling certain pages.
Fix potential double free.
Fix check for image surface for inplace upload.
Fix crash in sweep_line_delete on video playback by prefiltering
zero-area boxes when converting traps, given a traps tesselator like
cairo-xlib.
Fix cache_frozen assertions on Win32.
Fix image scale when GDI scale is not identity on windows.
Fix build with --enable-pdf=no
Fix build for Qt backend
Fix typo in _cairo_int128_negate and _cairo_int128_not
implementations, which could be a problem on systems without a
uint128 type.
Use setpagedevice to set page size
Add font DSC comments
Remove LTO support.
Various improvements to code documentation, tons of warnings and
distcheck cleanup and fixes, and repairs to a slew of tests.
Complete list of changes from 1.12.16 to 1.12.18
------------------------------------------------
Adrian Johnson (12):
svg: Don't embed CMYK Jpeg images
pdf: fix embedding of mime data that has been broken since 0a10982f
ps: fix embedding of mime data
pdf: fix rectangle stroke with non rectilinear pen
ps: remove duplicate /Interpolate from image dictionary
ps: fix imagemask with pattern source failure on some printers
ps: use setpagedevice to set page size
ps: cairo_set_page_size does not need to be in eps output
ps: add font DSC comments
type1: strip space from end of font name
win32 printing: fix image scale when GDI scale is not identity
type1-subset: don't rename glyphs used by seac operator
Bryce Harrington (20):
image: Fix bad HTML generation in code docs for cairo-format-stride-for-width
Fix segfault in firefox when scrolling on certain pages
configure.ac: Add a --disable-lto configure option
README: Update required dependencies
cairo-wideint: Fix typo in two cairo_uint128 functions
configure.ac: Fix broken build for Qt backend
configure.ac: Quell warnings about AM_PROG_AR when using automake 1.12
doc: Drop a couple quartz routines which distcheck claims don't exist
mesh: Avoid theoretical infinite loops
xml: constify source objects for emit routines
test: Quell warning for deprecated g_type_init()
test: Quell warning for inclusion of old rsvg header files
perf: Guarantee path width is non-negative
cairo-script: Compare status with CSI enums
cairo-script: Error if asked to decompress with missing compression lib
test: Handle error in fgets call in ps-eps test
test: Replace deprecated rsvg_init() in any2ppm test
gl: Handle PIXMAN_a8r8g8b8_sRGB format in switch
doc: Add missing sections and symbols for public docs
Bump release to 1.12.18
Chris Wilson (4):
Post-release version bump
clip: Do not modify the special all-clipped cairo_clip_t
traps,xcb: Prefilter zero-area boxes when converting traps
traps,xcb: Set the box count after filtering
Koji Egashira (1):
image: Add NULL checks for return value of _pixman_image_for_color()
Marek Kasik (1):
font: Generate PDFs with correct font names
Ravi Nanjundappa (2):
test : build fix when --enable-pdf=no
src : Fix warn_unused_result warnings from gcc
Rodrigo Rivas Costa (1):
win32 print: fix cache_frozen assertions
Ryan Lortie (1):
cairo-version: fix docs build
Sylvestre Ledru (1):
Remove some potential double free
Uli Schlachter (8):
cairo-gobject: Require at least glib 2.14
check-doc-syntax: Don't hardcode path to awk
fill_reduces_to_source(): Handle failure of color_to_pixel()
clip: Fix handling of special all-clipped cairo_clip_t
mask compositor: Set a check_composite method
Remove LTO support
xcb: Correctly check for image surface for inplace upload
Fix warnings from check-doc-syntax.sh
egag (1):
Fixes stroke-clipped, i.c. of a dashed stroke
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo include stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
--
Bryce Harrington
Senior Open Source Developer - bryce@osg.samsung.com
Open Source Group - Samsung Research America
Date: Mon, 13 Oct 2014 20:31:36 -0700
From: Bryce Harrington <bryce@osg.samsung.com>
Subject: [cairo] cairo release 1.14.0 now available
A new cairo release 1.14.0 is now available from:
http://cairographics.org/releases/cairo-1.14.0.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.14.0.tar.xz.sha1
53cf589b983412ea7f78feee2e1ba9cea6e3ebae cairo-1.14.0.tar.xz
http://cairographics.org/releases/cairo-1.14.0.tar.xz.sha1.asc
(signed by Bryce Harrington)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.14.0 tag which points to a commit named:
f6fd372a8b31a0bebbdfe36090d6ffc7bab9a2f8
which can be verified with:
git verify-tag 1.14.0
and can be checked out with a command such as:
git checkout -b build 1.14.0
Release 1.14.0 (2014-10-13 Bryce Harrington <bryce@osg.samsung.com>)
====================================================================
Hard to believe it's been over a year since our last release, but it's
not for lack of activity. This release includes contributions of a wide
assortment of bug fixes, build system improvements, warnings cleanups,
codebase refactoring, test suite repairs, and static analysis work.
This release is lighter on features (compared with 1.12.10) but includes
a highly demanded rehaul of our image downscaling functionality, which
solves a serious problem experienced by Inkscape users when shrinking
embedded bitmaps in SVG files. The new scaling algorithms are used by
the image backend and by other backends as needed for fallbacks.
Features
--------
Filtering improvements for the image backend, in particular
down-scaling of images produces filtered images that depend on all the
pixels of the source. When using the image backend you get the
following settings:
CAIRO_FILTER_GOOD: uses a box filter for scales less than .75 in
either direction. For scales larger than this, the same filter as
CAIRO_FILTER_BILINEAR is used.
CAIRO_FILTER_BEST: uses a Catmull-Rom filter always. When upscaling
more than 2x this will produce anti-aliased square pixels, similar
to OS/X.
CAIRO_FILTER_GAUSSIAN: uses PIXMAN_FILTER_BEST, which in current
pixman is the same as BILINEAR. (This is subject to change in the
future).
xlib and xcb also use the image fallback for GOOD/BEST filters, but
note that other backends do not implement these filtering fixes yet,
however other actions may cause them to use an image fallback which
will cause these filters to be used.
Improve handling of device transformation and scaling, allowing Cairo
to now support scaling at a device level, permitting easier, more
transparent HiDPI support.
Support JBIG2 mime data in PDF. This allows embedding of more
compressed JPEG formats within PDF, rather than including the full
uncompressed image. Also, reduce the number of transparency groups
used by PDF to keep the file size small and viewing/printing of the
PDF fast.
Expand the embedding section to include stencil mask support.
Reorder font declarations to be in natural order.
Update the Skia backend to build against current Skia (as of June
2014).
Drop Link-Time Optimization (LTO) support from build system. This
seems to have caused much trouble for unclear benefit, and most
distros are reverting or disabling it anyway.
Optimize VBO size on GL to 1M and to 16k for EGL. This improves
(theoretical) performance for desktop GLX use cases while avoiding
hitting VBO memory size limitations on embedded devices.
API Changes
-----------
cairo_surface_set_device_scale, cairo_surface_get_device_scale:
Sets a scale that is multiplied to the device coordinates
determined by the CTM when drawing to @surface. One common use for
this is to render to very high resolution display devices at a scale
factor, so that code that assumes 1 pixel will be a certain size
will still work.
cairo_egl_device_get_display, cairo_egl_device_get_context:
Support get/set of EGLContext and EGLDisplay for egl-based cairo
devices, similar to GLX.
Dependency Changes
------------------
Cairo now requires glib 2.14 for its gobject helper functions,
and pixman 0.30 for downscaling.
Bug fixes
---------
Don't embed CMYK Jpeg images in svg.
Fix tests to place output in proper location.
Fix determination of alpha for all surfaces when recording.
Extend oversize check to cairo_gl_surface_create_for_texture, so an
error surface is returned if the texture is too large to render to.
Fix embedding of mime data in PDF and PS files.
Remove useless error handling in *_reply() functions in XCB.
Fix a double-free exposed by multithreaded apps creating and
destroying the same font concurrently.
https://bugs.freedesktop.org/show_bug.cgi?id=69470
Fix corrupt stacks produced by bugs in operand emission for trace.
Fix out of bounds array access in format cache for xlib
Don't rename glyphs used by seac operator. This can cause certain
combined characters to use their decorations (e.g. umlauts on ö) to be
lost during printing of PDFs using evince.
https://bugs.freedesktop.org/show_bug.cgi?id=70364
Fix crash on calling cairo_create with a finished surface
Fix SSIZE_T definition problem when making with MSYS on Windows7
Fix one off issue in gl context cleanup
Fix usage of CAIRO_STACK_ARRAY_LENGTH
Fix rectangle stroke with non rectilinear pen
Fix imagemask with pattern source failure on some printers. This bug
could cause files converted using pdftops to fail for example on Ricoh
printers, or opening in Adobe Distiller on Windows.
https://bugs.freedesktop.org/show_bug.cgi?id=69485
Fix whitespace in font names
Fix page size in generated PDFs. When printing using pdftocairo on
larger page sizes, such as 11x17, the image would be cropped to letter
size.
https://bugs.freedesktop.org/show_bug.cgi?id=73452
Fix path-currentpoint test by preserving current-point in
copy_path()/append_path() sequence
Fix generation of HTML in code docs for
cairo-format-stride-for-width. Raw HTML code was being passed
to the browser, instead of displaying normally.
https://bugs.freedesktop.org/show_bug.cgi?id=63257
Fix spelling of "tessellator" throughout code. We're using the
American rather than British spelling of this word.
https://bugs.freedesktop.org/show_bug.cgi?id=50411
Fix crash in pixman_image_composite32
Fix crash when trying to modify a (const) all-clipped cairo_clip_t
https://bugs.freedesktop.org/show_bug.cgi?id=75819
Add check_composite method to all compositors, to fix crashes in the
test suite.
Fix crash in Firefox when scrolling on certain pages.
Fix memory leaks found by static analysis.
Fix build of any2ppm if fork is not available.
Fix broken build for Qt backend, due to missing libstdc++.
Fix typo in two cairo_uint128 functions. Fixes potential build issues
on systems without a uint128 type.
Fix build when --enable-pdf=no
Fix cache_frozen assertions for Win32 print.
Correctly check for xcb image surface for inplace upload
Fix webkit-based web browser crashes due to empty boxes by skipping
over them when tesselating.
Make pixman, libpng, and zlib paths commandline configurable for win32
builds.
Fix image scale on Win32 when GDI scale is not identity.
Fix float endian configure test when using clang -O4
Fix compilation with Android bionic libc
Don't try to build util/sphinx on Windows
Fix loss of precision when emitting joins. This was caused by
discrepancies in line gradients when passing trapezoids around.
Fix loss of precision and associated rendering issues in
cairo-tor-scan-converter from projection onto sample grid.
Fix pixman oversampling of neighbouring edges within a cell by
eliminating self-intersections for the pixman traps compositor.
Fix multi-line string splitting in PDFs
Various cleanups and fixes to warnings, documentation, tests, and
build system. Improve error handling and return value checks.
Cleanup XFAIL tests and reference images. Cover recently added
functionality.
Complete list of changes from 1.12.16 to 1.14.0
-----------------------------------------------
Adrian Johnson (24):
Downscaling requires pixman 0.30
svg: Don't embed CMYK Jpeg images
pdf: avoid making groups a transparency group if not required
pdf: fix embedding of mime data that has been broken since 0a10982f
ps: fix embedding of mime data
pdf: support JBIG2 mime data
test: update mime-data to test jbig2 mime types
pdf: combine source and mask images into single image
pdf: Support stencil masks with jpeg/jpx/jbig2 embedding
pdf: stencil masks may be opaque
type1-subset: don't rename glyphs used by seac operator
pdf/ps: avoid outputting excess decimal places in matrices
Add test for rectangle path optimization with non rectilinear pen
pdf: fix rectangle stroke with non rectilinear pen
Add test for paint with alpha and clipping bug
ps: remove duplicate /Interpolate from image dictionary
ps: fix imagemask with pattern source failure on some printers
ps: use setpagedevice to set page size
ps: cairo_set_page_size does not need to be in eps output
ps: add font DSC comments
type1: strip space from end of font name
win32 printing: fix image scale when GDI scale is not identity
Fix compilation with bionic libc
pdf: don't use '\' to split strings across multiple lines
Alexander Larsson (10):
gstate: Respect device transform in stroke
default-context: Inherit device scale in push_group surface
subsurface: Handle device scales
gstate: Move device-scale font scaling to gstate
gstate: Handle device scale on surface as source
surface: expose the device scale
tests: Add device scale test to "full" testrun similar to offsets
surface: Opencode create_similar
surface: Merge scratch construction into _cairo_surface_create_scratch
surface: Inherit device scale in cairo_surface_create_similar()
Andrea Canciani (2):
quartz: Fix build
quartz-image: Fix build
Behdad Esfahbod (9):
Check for XRenderSolidFill()
[tests] Add path-currentpoint
Preserve current-point in copy_path()/append_path() sequence
Revert "[ft] Fix memory bug in copying bitmaps"
chmod a+x cairo-trace
[trace] Don't print FC_CHARSET, FC_LANG, and FC_CAPABILITY
[cairo-trace] Work around fontconfig :charset= parse format change
Binary mode in any2ppm
More binary mode for Windows
Benjamin Otte (1):
xlib: Fix typo in documentation
Bill Spitzak (8):
V6 image: Use convolution filters for sample reconstruction when downscaling
V5: Use NEAREST filter when possible
image: Move filter decision to _cairo_pattern_analyze_filter
xlib: Add symbols to indicate if XRender supports GOOD/BEST filtering
xlib: Use image fallback for GOOD/BEST filters
xcb: Add switches for whether XRender supports GOOD/BEST filtering
xcb: Use image fallback for GOOD/BEST filters
image: Corrected extents calculations
Bryce Harrington (65):
test: Add test for image downscaling
test: Test a variety of scales when downscaling
test: Exercise image scaling quality when downscaling
test: Move cairo_pattern_set_filter to after cairo_set_source_surface
test: Drop unnecessary math.h include
Fix SSIZE_T definition problem when making with MSYS on Windows7
test: Replace deprecated rsvg_init() in any2ppm test
test: Handle error in fgets call in ps-eps test
test: Drop unused path variable in two recently added tests
cairo-trace: Stringify CAIRO_STATUS_JBIG2_GLOBAL_MISSING
cairo-script: Error if asked to decompress with missing compression lib
cairo-script: Compare status with CSI enums
perf: Guarantee path width is non-negative
test: Quell warning for inclusion of old rsvg header files
test: Quell warning for deprecated g_type_init()
xml: Drop unused variable
xml: constify source objects for emit routines
mesh: Avoid theoretical infinite loops
gl: Handle PIXMAN_a8r8g8b8_sRGB format in switch
image: Fix bad HTML generation in code docs for cairo-format-stride-for-width
Add explanation to enum _cairo_int_status
Add explanation to _cairo_surface_create_in_error
Add comment to explain _cairo_edge_compute_intersection_*
Correct spelling of "tessellator" throughout code
gitignore: Ignore generated tmpl dir in public docs
doc: Add missing sections and symbols for public docs
doc: Drop a couple quartz routines which distcheck claims don't exist
Mark recently added _cairo_output_stream_print_matrix private symbol
surface: Make parameter naming consistent between header and impl
Document that libglib2.0-doc is needed to avoid some xref warnings
skia: Add section definitions and code docs for skia backend
perf: Refactor some common macros to cairo-perf.h
NEWS: Add bug links and reword feature and bug descriptions
Fix segfault in firefox when scrolling on certain pages
.gitignore: Ignore two generated files in build/
configure.ac: Quell warnings about AM_PROG_AR when using automake 1.12
configure.ac: Add a --disable-lto configure option
configure.ac: Fix broken build for Qt backend
cairo-wideint: Fix typo in two cairo_uint128 functions
xlib: Fix mispelling in a comment
Disable font options for xcb.
NEWS: Bring up to date with recent bug fixes.
README: Update required dependencies
AUTHORS: Add Ravi, myself, and a couple other frequent contributors
NEWS: Drop unfinished thought
cairo-gl: Make VBO size run-time settable
gl: Track the VBO size as a property of the ctx
gl: Increase default VBO size on GL to 1M
NEWS: Note that downscaling changes only affect image + fallback
Don't return NULL to clients when getting image
Don't return NULL to clients when getting device
build: Fix float endian configure test when using clang -O4
NEWS: Revise downscaling feature description
sphinx: Add ickle's explanation of what sphinx does
quartz: Check for quartz surface type before conversion
Declare as private the new cairo_lines_compare_at_y symbol
Get make check back to a happy spot
test: Fix error message to specify the executable that was missing
test: Add an update-refs.sh script to update reference images
test: Update pixman downscaling 95 reference images
NEWS: Update with latest changes and finalize for release
NEWS: Flesh out docs for new APIs
1.14.0 release
pattern: Restore dropped inclusion of cairoint.h
Start 1.14.1 development
Bryce W. Harrington (10):
test: Don't ignore test output files left in test directory
test: Fix several tests to place output files in the output directory
test: Make cairo_test_mkdir() usable throughout tests.
test: Ensure output dirs exist, falling back to current dir if needed
svg, test: Refer to output filename by variable, not a hardcoded value
gitignore: Ignore build chaff when configuring with --enable-gtk-doc
test: Comma separate keywords
test: Space out keywords for clarity
test: Document use of -k and CAIRO_TEST_TARGET to run test subsets
NEWS: Summarize recent changes
Chris Wilson (35):
Post-release version bump
Bump version for new development tree, 1.13.1
spans,traps: Undo device transform from source matrix for recording replays
test: Allow CAIRO_TEST_MODE to independently enable extended testing
trace: Record set-device-scale
script: Add support for replaying device-scale
test/pixman-downscale: Open-code fmin()
font: Push the last reference dec into the backend->destroy() callback
trace: Fix operand emission
win32: Reorder font declarations to be in natural order
clip: Do not modify the special all-clipped cairo_clip_t
xlib: Undo debug hack to force fallbacks
traps,xcb: Prefilter zero-area boxes when converting traps
traps,xcb: Set the box count after filtering
arc: Insert the initial point on the arc
test: Exercise stroking bugs with xlib/trapezoids
test/coverage: Exercise invariance under mirror symmetry
stroke,traps: Emit join without loss of precision
test: Remove redundant reference images
tor: Fix loss of precision from projection onto sample grid
test: Include coverage in the normal test run
tor: Review full-row walker
test: Remove more duplicated reference images
test: Explicitly flip the reference image for recordflip
test: Add another coverage example demonstrating the seams in tor
test: Fix coverage-abutting
test: Add a simple rasteriser to check fidelity of edge rendering
test/simple: Tighten sanity checks in reference image generator
tor: Perform analytic coverage over the pixel not sample points
tor: Enable analytic processing for starting rows
test: Refresh reference images for tor rendering changes
image: Eliminate self-intersections for the pixman traps compositor
test: Add whole flipped replays
test: Teach check-preprocessor-syntax.sh about -inlines.h
test: Fix conflation of different device scales in index.html
David Weiß (1):
made paths to pixman, libpng and zlib configurable by commandline for win32 builds
Eric Le Bihan (1):
test: fix build of any2ppm if fork not available
Henry Song (1):
gl: Fix one off issue in context cleanup
Jeff Muizelaar (2):
Don't use __FUNCTION__ as a string literal
clang-cl: Use size of the pointer explicitly
Koji Egashira (1):
image: Add NULL checks for return value of _pixman_image_for_color()
Kouhei Sutou (1):
cairo_create(): Add finished surface check
Krzysztof Kosiński (1):
image: Use convolution filters for sample reconstruction when downscaling
Lukáš Lalinský (1):
xcb: Initialize font options from Xft resources
Maks Naumov (3):
Fix width and height args for _cairo_xcb_connection_copy_area()
Fix font x_scale value in _compute_transform()
Fix _cairo_mesh_pattern_equal() when cairo_mesh_patch_t structs are different
Marc-André Lureau (1):
build-sys: do not try to build util/sphinx on Windows
Marek Kasik (1):
font: Generate PDFs with correct font names
Martin Robinson (1):
gl: Extend oversize check to cairo_gl_surface_create_for_texture
Ravi Nanjundappa (22):
perf: Refactor some macros to cairo-perf.h
test and util: maintain consistency in the usage of ARRAY_LENGTH macro
boilerplate: Maintain consistency in the usage of switch cases
glx: Use GLX_NONE in place of None
test : Maintain consistency in the usage of xcalloc
vg: Use EGL_NONE and GLX_NONE in place of None
src : Fix warn_unused_result warnings from gcc
xcb: make use of _cairo_surface_is_xcb to check for surface type
skia: update the source to build with the latest skia
.gitignore: Ignore the generated profile data files from callgrind tool in test/
skia : Add Debug support for skia backend
test : build fix when --enable-pdf=no
test: Selective execution of Cairo tests based on FORMAT option
test: improve selective execution of Cairo tests based on FORMAT option
README : Update README file related to usage of FORMAT make variable
configure.ac: configuration check to enable either gl or glesv2, not both at the same time
src: Fix memory issue reported by cppcheck static analysis tool
test: Fix null pointer issue reported by cppcheck static analysis tool
qt: Suppress warnings in qt backend build
test: Add test oversized egl surfaces
src: check the surface backend for NULL
test: Add test for egl-surface-source
Rodrigo Rivas Costa (1):
win32 print: fix cache_frozen assertions
Ryan Lortie (1):
cairo-version: fix docs build
Sylvestre Ledru (3):
Remove some useless declarations found by scan-build, the LLVM/clang static analyzer
Remove some potential double free
Fix some memory leaks found by scan-build, the LLVM/Clang static analyzer
Søren Sandmann Pedersen (1):
_cairo_color_double_to_short(): Use standard rounding algorithm
Uli Schlachter (23):
recording: Fix unitialized variable 'free_me'
recording: Correctly determine alpha of all surfaces
cairo-gobject: Require at least glib 2.14
check-doc-syntax: Don't hardcode path to awk
image: Handle PIXMAN_a8r8g8b8_sRGB in switch
test/multi-page: Fix use-after-free
xcb: Remove useless error handling
fill_reduces_to_source(): Handle failure of color_to_pixel()
Remove XFAIL_TESTS from Makefile.am
README: Don't mention XFAIL_TESTS anymore
Revert "[xlib] Fast-path the likely case of retrieving a known xrender_format"
cairo-xlib: Fix out of bounds array access in format cache
Correct usage of CAIRO_STACK_ARRAY_LENGTH
cairo svg: Use \n instead of /n in bitmap fonts
clip: Fix handling of special all-clipped cairo_clip_t
Fix warnings from check-doc-syntax.sh
mask compositor: Set a check_composite method
mesh-rasterize: Fix number of iterations
pthread-same-source: Add ref image generation
pthread-same-source: Refresh reference images
Revert "image: Use convolution filters for sample reconstruction when downscaling"
Remove LTO support
xcb: Correctly check for image surface for inplace upload
egag (1):
Fixes stroke-clipped, i.c. of a dashed stroke
jimmyfrasche (2):
Pattern document clarification
Add more info to cairo_surface_set_mime_data docs.
--
Bryce Harrington
Senior Open Source Developer - bryce@osg.samsung.com
Open Source Group - Samsung Research America
From: Chris Wilson <chris@chris-wilson.co.uk>
To: cairo-announce@cairographics.org
Date: Mon, 26 Feb 2013 18:57:00 +0100
A new cairo release 1.12.16 is now available from:
http://cairographics.org/releases/cairo-1.12.16.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.16.tar.xz.sha1
4f6e337d5d3edd7ea79d1426f575331552b003ec cairo-1.12.16.tar.xz
http://cairographics.org/releases/cairo-1.12.16.tar.xz.sha1.asc
(signed by )
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.16 tag which points to a commit named:
8e11a42e3e9b679dce97ac45cd8b47322536a253
which can be verified with:
git verify-tag 1.12.16
and can be checked out with a command such as:
git checkout -b build 1.12.16
Release 1.12.16 (2013-08-21 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
Thanks to everybody who reported a bug and helped us develop a fix,
we have amassed quite a few bug fixes. There are still more outstanding
bugs that seek attention and a little bit of TLC, but this release has
been delayed long enough...
Bug fixes
---------
Set the correct orientation for simple boxes with a negative scale
factor.
Fix the creation of the shading dictionary in PDF.
Fix a crash in PDF when incorporating an image with CAIRO_EXTEND_PAD.
https://bugs.freedesktop.org/show_bug.cgi?id=61451
Avoid upscaling bitmap fonts if possible.
Fix an assertion failure within the mempool allocator for shared memory.
Fix allocation size for CFF subsets.
Export cairo_matrix_t for GObject bindings.
Fix a double free in the Quartz backend.
https://bugs.freedesktop.org/show_bug.cgi?id=62885
Fix origin of GDI StretchBlits for the Windows backend
https://bugs.freedesktop.org/show_bug.cgi?id=61876
Fix error propagation for requests to create a similar surface with
negative size.
https://bugs.freedesktop.org/show_bug.cgi?id=63196
Fix complex clipping of trapezoids with regions
https://bugzilla.gnome.org/show_bug.cgi?id=697357
Stop leaking the image data when loading PNGs
Fix unbounded operations with a clip mask through the span compositor
https://bugs.freedesktop.org/show_bug.cgi?id=61592
Add missing checks before rendering to a finished surface - so we return
an error rather than hit an assert.
https://bugs.freedesktop.org/show_bug.cgi?id=68014
Prevent an assertion failure when creating similar GL surfaces larger
than supported by hardware.
Prevent a double free of a similar image under Windows.
https://bugs.freedesktop.org/show_bug.cgi?id=63787
Complete list of changes from 1.12.14 to 1.12.16
------------------------------------------------
Adrian Johnson (3):
pdf: add missing 'endobj' to shading dict
pdf: fix typo in bbox check
type1-subset: Don't try to rename non winansi glyphs
Behdad Esfahbod (12):
[FT] Prefer downscaling bitmap glyphs to upscaling
[test] Set font size
[ft] I meant fabs(), not abs()
[ft] Fix memory bug in copying bitmaps
[ft] Fix wrong assumptions
Towards support loading color glyphs from FreeType
Support 2bit and 4bit embedded bitmaps
[ft] Fix math
[ft] Add missing include
Revert accidentally committed stuff
[ft] Fix alignment
[ft] Ensure alignment of bitmaps received from FreeType
Bryce W. Harrington (16):
test: Fix typo in sample_horizontal to use horizontal, not vertical.
image: Quell warning about signed/unsigned int comparison.
type1-subset: Quell warning about uninitialized array_start
type1-subset: Fix typos in function comment
pdf: Assure compiler that data, data_size will always be initialized
gl: Quell warning about incompatible pointer type
test: Note naming scheme for XFAIL images in README
test: Fix make check-ref-dups due to move of ref images to reference/
test: Add script to check for redundant reference images
test: Use cmp to catch byte-by-byte identical files
test: Make check-ref-dups utilize perceptualdiff for comparisons
pdiff: Quell warning about signed/unsigned comparisons
pdiff: Drop unused variable
test: Add special cases for create-from-png and fallback-resolution
HACKING: Make mention of the separate cairo-traces repo
perf: Move macro-benchmark documentation to cairo-traces
Chris Wilson (45):
Post release version bump to 1.12.15
spans: Mark the surface as cleared in preparing for recording surface playback
recording: Avoid indirection through indices array if not reduced
path: Fix bbox computation for negative scale factors
test: Exercise replaying a recording surface through a flip matrix
win32: Free the fallback upon finish
image: Compare against the true size of the embedded buffer
xlib: Fix invocation of XRenderFindFormat()
gl: Fix typo s/bool/cairo_bool_t/
mempool: Reduce an assert into an error return for get_buddy()
perf: Iteratively prune outliers
xlib: Wrap errors generating sources in an error surface
xlib: Trim uploads for surfaces extended by PAD
png: Avoid marking the surface as in error after a png warning
directfb: Correctly chain up map-to-image/unmap to the image backend
traps: Ensure that we correctly clip when using multiple clip boxes
xlib: Unlike the visual when destroying it
test: Expand testing of caps for fine strokes
test: Extend testing of joins for fine lines
trace: Improve operand emission
recording: Fix inconsistent usage of types for indices
perf: Rudimentary histogram printing for cairo-perf-print
perf: Rescale the histogram for the terminal
perf: Avoid vertically stretching the histogram
perf: Remove a debug artifact
recording: Prevent invalid memory access with zero length command array
scaled-font: Prevent a recursive mutex lock for removing a failed glyph
pdf: Improve consistency in use of cairo_int_status_t
pdf: Fix compiler warning for use of unitialised variable along error path
image: Mark the data as owned after stealing the snapshot's image
test/get-path-extents: Check exact matches within tolerance
gstate: Speed up stroked path extents
svg: Unwrap recording surfaces
xml: Handle clip-boxes in the updated cairo_clip_t
cairo-perf-print: Do not free the uninitialised histogram
test: Use the highest precision rendering for shapes for generating ref results
check: Fix check-def.sh for variations in GCC's linker
test: Remove all identical (cmp & pdiff) reference images
test: Add a few reference images found lurking on my machine
test: Remove conflicting .ref.png, .argb32.ref.png, .rgb24.ref.png
test: Amend check-refs.sh to support out-of-tree builds
Provide backwards compatibilty with old pixman
win32: Prevent double-free of similar images
Make "make check" happy
1.12.16 release
Eric Anholt (1):
gl: Move glGetUniformLocation to shader compile time.
Henry Song (8):
gl: disable GL_DITHER
gl: Export query for EGLContext and EGLDisplay from device
gl: Fix typo in gles2 shader cache lookup
gl/msaa: Resolve multisampling on surface flush
gl/msaa: Properly destroy stencil buffer clip cache
gl/msaa: Disable stencil and scissor during framebuffer blit
gl/msaa: Always use scissor when clipping
gl/msaa: Clean up msaa depth/stencil buffer for OpenGLES
Jana Saout (1):
pdf: Fix crash
Marc-André Lureau (1):
win32: fix corrupted drawing
Marek Kasik (1):
cff-subset: Fix allocation of width arrays
Martin Robinson (12):
gl: Setup operands when the vertex size changes
path: Fix a bug in line intersection
stroke: Fix large line widths for fallback stroke shaper
stroke: Use round-joins near inflection points of splines
boilerplate: Add a mode for running threaded perf tests
boilerplate/gl: Disable thread awareness
gl: Separate framebuffer bind from destination selection
gl: Update transformation when surface size changes
gl: Bind the default framebuffer before calling gl{Read|Draw}Buffer
gl: Fix compiler warnings in the GL backend
gles: Switch default framebuffer destinations properly
gl: Return surface in error when creating oversized texture surfaces
Matt Sealey (1):
gitignore: negate gitignore for static pkgconfig files
Matthew Fischer (1):
Adding a simple usage statement to cairo-perf-chart
Michael Hutchinson (1):
quartz: Don't release memory we don't own
Nicola Fontana (1):
gobject: Add wrapper around cairo_matrix_t
Uli Schlachter (13):
test: Fix CAIRO_REF_DIR
test: Fix handling of dots in CAIRO_TEST_TARGET
boilerplate: rename xcb-render-0.0 to xcb-render-0_0
Fix "make check" standalone header check
xcb: Clear temporary replay image in recording playback
Fix caps-tails-curve reference images
Add new test for bug 61592
image compositor: Always finish the span renderer
xcb: Fix some uninitialized variable warnings
api-special-cases: Also test contexts
surface: Error out on finished surfaces
push_group: Refuse working with unusable surface
surface_get_extents: Reject finished or error surface
egag (1):
xlib: Aquire display before using it in DEBUG message.
--
Chris Wilson, Intel Open Source Technology Centre
From: Chris Wilson <chris@chris-wilson.co.uk>
To: cairo-announce@cairographics.org
Date: Sun, 10 Feb 2013 14:15:00 +0000
A new cairo release 1.12.14 is now available from:
http://cairographics.org/releases/cairo-1.12.14.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.14.tar.xz.sha1
9106ab09b2e7b9f90521b18dd4a7e9577eba6c15 cairo-1.12.14.tar.xz
http://cairographics.org/releases/cairo-1.12.14.tar.xz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.14 tag which points to a commit named:
0dac37c41473deafa4a2f154187c5c3d08b07c91
which can be verified with:
git verify-tag 1.12.14
and can be checked out with a command such as:
git checkout -b build 1.12.14
Release 1.12.14 (2013-02-10 Chris Wilson <chris@chris-wilson.co.uk>)
====================================================================
In the last week we had a few more bugs reported and promptly resolved.
As these are a combination of regressions and stability issues, it is
time for a prompt update and release. Many thanks to everyone for
testing and reporting issues, and helping to make Cairo better.
Bug fixes
---------
Prevent user callbacks accessing user-data during destroy to prevent
use-after-free bugs.
https://bugzilla.mozilla.org/show_bug.cgi?id=722975
Use standard names for glyphs in subset fonts (PDF).
https://bugs.freedesktop.org/show_bug.cgi?id=60248
Fix detection of Win98. The logic for detecting Win98 (and its broken
AlphaBlend()) was inverted, disabling AlphaBlend() for everyone.
Prevent numeric overflow from extrapolating polygon edges to the clip
boundary and causing severe render artifacts.
https://bugs.freedesktop.org/show_bug.cgi?id=60489
Fix computation of glyph string coordinates when breaking up runs
for xlib.
Fix an assertion in the win32 backend for failing to clear its
similar-images.
https://bugs.freedesktop.org/show_bug.cgi?id=60519
From: Chris Wilson <chris@chris-wilson.co.uk>
To: cairo-announce@cairographics.org
Date: Thu, 31 Jan 2013 16:29:00 +0000
A new cairo release 1.12.12 is now available from:
http://cairographics.org/releases/cairo-1.12.12.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.12.tar.xz.sha1
8e597874da5b861287893d87dd4ab32471e99c82 cairo-1.12.12.tar.xz
http://cairographics.org/releases/cairo-1.12.12.tar.xz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.12 tag which points to a commit named:
a201a1169f472e822a66275b7dffe62f241d8ec0
which can be verified with:
git verify-tag 1.12.12
and can be checked out with a command such as:
git checkout -b build 1.12.12
Release 1.12.12 (2013-01-31 Chris Wilson <chris@chris-wilson.co.uk>)
====================================================================
The goal of this release is to fix the synchronisation problems that
were exhibited in the SHM transport for cairo-xlib. This cropped up
any place that tried to rapidly push fresh pixel data to the X server
through an ordinary image surface, such as gimp-2.9 and evince.
Bug fixes
---------
Avoid replacing the entire image when uploading subimages
https://bugs.freedesktop.org/show_bug.cgi?id=59635
Force synchronisation for scratch SHM image buffers, so that we do
not overwrite data as it is being read by X.
https://bugs.freedesktop.org/show_bug.cgi?id=59635 (also)
Fix typos in detecting multisampling for the GL (MSAA) backend.
Fix a memory leak in the GL (MSAA) backend.
Fix a reference counting bug when mapping a GL surface to an image.
Complete list of changes from 1.12.10 to 1.12.12
------------------------------------------------
Chris Wilson (22):
version: Post-release bump to 1.12.11
xlib: Do not upload the whole image just because we want an entire row
image: Enable inplace compositing with opacities for general routines
image: Fix opaque span fills
Mark _cairo_path_is_simple_quad as private
image: And more fallout from c986a73, restore the absent short runs
perf; Do not allow the backends to optimize away the clear before sync
xlib/shm: Tighten mark-active to the actual CopyArea on the ShmPixmap
xlib/shm: Skip creating new SHM segments if the data is already in the xserver
xlib/shm: Tidy creation of the proxy source for ShmPixmaps
xlib/shm: Tidy up destroying the mempool for a shm block
xlib/shm: Always request a CompletionEvent from ShmPutImage
xlib/shm: Force synchronisation for scratch SHM image buffers
xlib/shm: Simplify uploading of SHM image data
xlib/shm: Appease the compiler for a 'maybe used uninitialised' variable
configure: Include X11.h before testing for usability of Xrender.h
xlib/shm: Clarify testing of seqno
xlib/shm: More clarification of seqno required
perf: Synchronize before stopping the timers
image: Add a reference for the clone's parent image
test: Refresh refs for aa noise following reduction of the 2-stage compositing
1.12.12 release
Henry Song (5):
gl: Don't query the display when checking if the context changed
gl/msaa: Fix a memory leak in _clip_to_traps
gl: Fix typos in multisampling detection
gl: Use GL_ALPHA textures for CAIRO_CONTENT_ALPHA glyph caching
gl/msaa: Don't emit alpha when emitting vertices
Martin Robinson (1):
gl/msaa: Add a fast path for fills that are simple quads
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed, 16 Jan 2013 21:03:00 +0000
To: cairo-announce@cairographics.org
Release 1.12.10 (2013-01-16 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
A heap of bug fixes everywhere, and the gradual completion of the MSAA
backend for cairo-gl. Perhaps the most noteworthy set of the bugfixes
was the crusage lead by Behdad Eshfabod to make font handling by
pango/cairo/fontconfig fully threadsafe. This testing revealed a couple
of races that needed fixing in Cairo's scaled-font and glyph cache.
Bug fixes
---------
Append coincident elements to the recording's surface bbtree so that
the list is not corrupted and the overlapping elements lost.
Fix cairo-trace to correctly record map-to-image/unmap-image and then
replay them.
Ignore MappingNotifies when running the XCB testsuite as they are sent
to all clients when the keyboard changes. The testsuite would detect
the unexpected event and complain.
Handle very large large images in the XCB backend.
Fix a memory leak in the xlib/shm layer, and prevent use of the SHM
surfaces after the display is closed.
https://bugs.freedesktop.org/show_bug.cgi
Handle resizing of bitmap fonts, in preparation for a fix to
fontconfig to correctly pass on the user request for scaling.
Always include subroutine 4 (hint replacement idion) when subsetting
type 1 fonts in order to prevent a crash in cgpdftops on Mac OS/X
Fix a couple of typos in the cairo-gobject.h header files for
introspection.
Prevent a mutex deadlock when freeing a scaled-glyph containing a
recording-surface that itself references another scaled-glyph.
https://bugs.freedesktop.org/show_bug.cgi?id=54950
Make scaled-font cache actually thread-safe and prevent
use-after-frees.
Restore support for older versions of XRender. A couple of typos and a
few forgotten chunks prevented the xlib compositor from running
correctly with XRender < 0.10. Note that there are still a few
regressions remaining.
Complete list of changes from 1.12.8 to 1.12.10
-----------------------------------------------
Adam Jackson (1):
xlib/shm: Fix memory leak
Adrian Johnson (1):
doc: Add CAIRO_MIME_TYPE_UNIQUE_ID to list of supported mime types
Alejandro G. Castro (1):
gl/msaa: Avoid the stencil buffer when possible during masking
Behdad Esfahbod (3):
[Minor] Improve logging
[ft] Remove ancient check for FT_Bitmap_Size.y_ppem
[ft] Fix resizing of bitmap fonts
Chris Wilson (50):
version: Post-release bump to 1.12.9
trace: Fix operand emission for map-to-image and unmap-image
trace: Do not forcibly add surfaces to the dictionary
script: Fix map-to-image/unmap stack manipulations
mempool: Reduce the assertion into an alignment adjustment for the base
xlib/shm: Populate send_event and serial
xlib/shm: Rate-limit events and only use as necessary
xlib/shm: Do not trigger a surplus event from XShmPutImage
Revert "xlib/shm: Do not trigger a surplus event from XShmPutImage"
perf/chart: Show the geometric average as an extra column
perf/chart: Contract the default output filenames
gl: Use vfunc for vertex emission
gl: Provide a fast emitter for solid glyphs
gl: Provide a fast emitter for solid spans
xlib/shm: Fix typo in creation of a SHM image
xlib: Use SHM transport for ordinary image uploads
stroke: Make the incremental trapezoid stroker optionally available again
xlib: Avoid copying the source twice if it is an image
scaled-font: Mention ownership of returned object from get_font_face()
Add missing local slim proto for cairo_recording_surface_create
gobject: Fix my typo s/TEST/TEXT/ in the previous commit
script: Recompress strings using LZO whilst binding traces
xlib/shm: Only mark the shm pixmap as active if we upload into it
xlib: Simplify source creation by use of map-to-image
image: Call pixman without a mask for opaque regions of inplace_spans
script: Attempt to decompress images in place
script: Simply exchange source/dest images for _set_source_image
script: Thaw the scaled font cache on the error path
scaled-font: Always hold the mutex even for single glyph probes
scaled-font: Free the cached glyphs from the font before taking the global lock
scaled-font: Assert if attempting to finish a frozen font
scaled-font: Hold the scaled font mutex whilst reaping from the global cache
xlib/shm: Discard damage upon shm finish
xlib/shm: Only destroy an existing damage
scaled-font: Remove a non-threadsafe double-freeze assert
image: Allocate a temporary buffer for inline span composition
scaled-font: Make reset-font-cache threadsafe
scaled-font: Fix use after free when clearing the glyph cache
gstate: Use the polygon intermediate for geometry queries
stroke: Flip the dev slope as well for computing the cusp on a degeneracy
xlib: map-to-image requires an extents
xcb: _cairo_scaled_font_reset_cache does it own locking
xlib: Only fallback through the mask intermediate if we can composite the mask
xlib: Handle lack of XRenderFillRectangles
compositor: Convert image surface into backend source
compositor: Pass back the internal failure
xlib: Initialise Pixmap for proxy sources
script: Set decompression length prior to calling decompressors
1.12.10 release
version: Post-release bump to 1.12.11
Chuanbo Weng (2):
gl/msaa: Use GL_IMG_multisampled_render_to_texture when available
gl: Support the GL_IMG_texture_npot extension
David Maxwell (1):
type1-subset: always include subroutine 4 (hint replacement idiom)
Henry Song (6):
gl: Flush context upon evicting a gradient
gl/msaa: Also setmsaa_active to true for non-texture surfaces
gl: Properly disable ctx->spans when necessary
gl/msaa: Add full support for masking with the SOURCE operator
gl/msaa: Only clear parts of the stencil buffer we will use
gl: Support for non-texture sources and masks
Kouhei Sutou (2):
gobject: Add the correct macro name for the hint-metrics type
gobject: Fix "text_cluster_flags_get_type" typo
Martin Robinson (11):
gl/msaa: Share the depth/stencil buffer among all surfaces
gl: Add BGRA download support for GLES2
Revert "gl/msaa: Share the depth/stencil buffer among all surfaces"
gl: Cleanup selection of multisampling mode
boilerplate/glx: Add a target with multisampling and stencil support
gl: Better handling of clear surfaces
gl: Do less work when acquiring and releasing devices
gl/msaa: No need to set the clip when masking
gl/msaa: Rely on the stencil buffer to cache the clip
gl/msaa: Check for more extensions before using MSAA
gl: Follow up fix for the previous commit
Uli Schlachter (4):
boilerplate-xcb: Ignore MappingNotify events
context: Use recording surfaces for unbounded groups
test: Add xcb-huge-subimage
xcb: Fix xcb-huge-subimage
Zozó Teki (1):
recording: Append new elements to the end of the bbtree chain
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun, 4 Nov 2012 15:40:51 +0000
To: cairo-announce@cairographics.org
A new cairo release 1.12.8 is now available from:
http://cairographics.org/releases/cairo-1.12.8.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.8.tar.xz.sha1
56a10bf3b804367c97734d655c23a9f652d5c297 cairo-1.12.8.tar.xz
http://cairographics.org/releases/cairo-1.12.8.tar.xz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.8 tag which points to a commit named:
cc162915a55cc67587677352bd9e389f16117853
which can be verified with:
git verify-tag 1.12.8
and can be checked out with a command such as:
git checkout -b build 1.12.8
Release 1.12.8 (2012-11-24 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
Another couple of weeks and a few more bugs have been found and fixed,
it is time to push the next point release. Many thanks to everyone who
reported their issues and helped us track down the bugs and helped
testing the fixes.
Bug fixes
---------
Expand the sanity checking for broken combinations of XSendEvent and
ShmCompletionEvent.
Notice that "The X.Org Foundation" sometimes also identifies itself
as "The Xorg Foundation".
Handle various ages of libXext and its Shm headers.
Fix the invalid clipping of the source drawable when using SHM
transport to upload images.
https://bugs.freedesktop.org/show_bug.cgi?id=56547
Handle all Type1 postscript operators for better font compatibility.
https://bugs.freedesktop.org/show_bug.cgi?id=56265
Fix a couple of memory leaks in Type1 font subsetting
https://bugs.freedesktop.org/show_bug.cgi?id=56566
Tighten the evaluation of the start/stop pen vertices, and catch a few
instances where we would use a fan instead of a bevel.
https://bugs.freedesktop.org/show_bug.cgi?id=56432
Fix assumption that geometric clipping always succeeds with the
span-compositor.
https://bugs.freedesktop.org/show_bug.cgi?id=56574
Fix call to spline intersection when evaluating whether a stoke is
visible.
Remember to copy inferior sources when using SHM to readback the
surface for use as a source.
Complete list of changes since 1.12.6
-------------------------------------
Adrian Johnson (5):
type1-subset: parse all operators
type1-subset: restore correct callothersub behavior
type1-subset: ensure subroutine numnber is an integer
type1-subset: fix memory leak
type1-subset: remove unused variable
Chris Wilson (19):
version: Post release bump to 1.12.7
xlib/shm: Sanity check that the server handles XSendEvent with ShmCompletion
xlib: Check for both X.org and Xorg ServerVendors
xlib/shm: Check for XShm headers
xlib/shm: Use shmstr.h instead of shmproto.h if available
xlib: Apply the image offsets to the destination rather the source
pen: First check whether the in/out edges lie within the single pen vertex
xlib/shm: Fix bogus assertion without shm available
image: Add a couple of tracepoints for spans fallbacks
stroke: Precompute the line half-width
util/show-polygon: Show the limited range of each edge
spans: Do not assume that we manage to perform the clip geometrically
xlib: Fixup standalone header compilation for 'make check'
gl: Tune the default VBO size to reduce overhead on embedded devices
pen: Tighten checking for bevel (start==stop) joins
test: Add stroke-clipped
stroke: Fix calling '_cairo_spline_intersect' for in-bounds checking of splines
xlib/shm: Need IncludeInferiors when creating the source fallback
1.12.8 release
Kevin Tardif (1):
type1-subset, cff-subset: Plugged 2 memory leaks
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon, 22 Oct 2012 14:22:00 +1000
To: cairo-announce@cairographics.org
A new cairo release 1.12.6 is now available from:
http://cairographics.org/releases/cairo-1.12.6.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.6.tar.xz.sha1
a383c6cb4495e18848ea43e1031c294aa9417a43 cairo-1.12.6.tar.xz
http://cairographics.org/releases/cairo-1.12.6.tar.xz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.6 tag which points to a commit named:
fab6958eff35a94cf46e38f19a7e75e10aa2b182
which can be verified with:
git verify-tag 1.12.6
and can be checked out with a command such as:
git checkout -b build 1.12.6
Release 1.12.6 (2012-10-22 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
Thanks to everyone who download cairo-1.12.4 and gave us their feedback.
It truly was invaluable and has helped us to fix many portability issues
that crept in with some of the new features. This release aims to fix
those stability issues and run on a wider range of systems.
-Chris
Bug fixes
---------
Fix the recording surface to actually snapshot the source and so fix
PDF drawing.
Calling XSendEvent with an XShmCompletionEvent is incompatabile with
older Xorg servers.
Reorder CloseDisplay chain so that XShm is not reinstantiated after
shutdown, causing a potential crash if the Display was immediately
recreated using the same memory address.
Make sure that the Xserver has attached to the SHM segment before
deleting it from the global namespace on systems that do not support
deferred deletion.
Type1 subsetting support for PDF (and PS) was once again improved to
work with a larger number of PDF readers.
GLESv2 build fixes and improved support for embedded GPUs.
Tweak the invisible pen detection for applications that are currently
using too large values for geometric tolerance.
A build fix for older freetype libraries.
Complete list of changes since 1.12.4
-------------------------------------
Adrian Johnson (2):
type1: convert '.' to locale specific decimal point before using sscanf
remove debug code
Alexis Ballier (2):
cairo-fdr: protect -ldl link with CAIRO_HAS_DL like in cairo-trace.
cairo-sphinx: protect -ldl link with CAIRO_HAS_DL like in cairo-trace.
Chris Wilson (11):
version: Post release bump to 1.12.5
xlib/shm: Avoid using XSendEvent with old versions of Xorg
xlib/shm: Note the bug is an interaction between libXext and xorg
win32: Use the image surface below the fallback when unmapping an HDC
compositor: Reduce glyph "overlap" if the inked pixels are opaque
xlib: Reorder CloseDisplay hooks
recording: Copy across the is-clear? during snapshotting
xlib/shm: Sync the XShmAttach before removing the ShmSegment id
pen: Relax invisibility criteria from half-tolerance to quarter-tolerance
1.12.6 release
version: Post release bump to 1.12.7
David Maxwell (3):
type1: buildchar stack fix
type1: lenIV support
type1-subset: always subset subroutines 0-3 (Flex/hint replacement)
Gilles Espinasse (3):
ft: Fix compilation on 1.12 without FT_Get_X11_Font_Format
configure: fix PKG_CHECK_MODULES tests displaying no no
configure: fix unrecognized -Wno option
Henry Song (3):
gl: gles2 only supports GL_DEPTH24_STENCIL8_OES
gl/traps: ensure RGBA surface before upload image to texture for GLES2
recording: copy reverses its dst and src parameters
Uli Schlachter (2):
xcb: Clear the result of create_similar_image
test: Define optional exception classes
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri, 05 Oct 2012 17:31:00 +1000
To: cairo-announce@cairographics.org
A new cairo release 1.12.4 is now available from:
http://cairographics.org/releases/cairo-1.12.4.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.4.tar.xz.sha1
f4158981ed01e73c94fb8072074b17feee61a68b cairo-1.12.4.tar.xz
http://cairographics.org/releases/cairo-1.12.4.tar.xz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.4 tag which points to a commit named:
117abd85ac7ff41e484fe0d98f16704ec30abd09
which can be verified with:
git verify-tag 1.12.4
and can be checked out with a command such as:
git checkout -b build 1.12.4
Release 1.12.4 (2012-10-05 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
More bugs, and more importantly, more fixes. On the cairo-gl side, we
have refinements to the MSAA compositor which enables hardware
acceleration of comparatively low-quality antialiasing - which is useful
in animations and on very high density screens. For cairo-xlib, we have
finally enabled SHM transport for image transfers to and from the X
server. A long standing required feature, SHM transport offers a notable
reduction in rendering latency by reducing the number of copies
required to upload image data - given hardware and driver support,
cairo-xlib can now perform zero copy uploads onto the GPU. And as usual
Adrian Johnson has been very busy fixing many different corner cases in
cairo-pdf, impoving opacity groups and font subsetting. Last, but not
least, for cairo-image S=F8ren Sandmann Pedersen added support for
rendering glyphs to pixman and using that from within cairo. The new
glyph rendering facility reduces the overhead for setting up the
compositing operation, improving glyph thoughput for the image backend
by a factor of about 4. And before he did so, he also fixed up a few
bugs in the existing glyph rendering code. So many thanks to Andrea
Canciani, Adrian Johnson, Chuanbo Weng, Dongyeon Kim, Henry Song, Martin
Robinson, S=F8ren Sandmann Pedersen and Uli Schlachter for their
contributions, finding and fixing bugs.
-Chris
Bug fixes
---------
Interior boxes were being dropped when amalgamating regions during
tesselation.
https://bugs.freedesktop.org/show_bug.cgi?id=49446
Allow building without gtk-doc installed
Invalid edge generation whilst reducing complex polygons.
https://bugs.freedesktop.org/show_bug.cgi?id=50852
Stroking around tight cusps
Use locale correct formats for reading font subsetting and valid
buffers.
https://bugs.freedesktop.org/show_bug.cgi?id=51443
Ensure that the type1 subset includes all the glyph encodings
https://bugs.freedesktop.org/show_bug.cgi?id=53040
Upload the whole source for a repeating pattern.
https://bugs.freedesktop.org/show_bug.cgi?id=51910
Fix damage tracking to handle continuation chunks corectly and so
prevent crashes on win32.
https://bugs.freedesktop.org/show_bug.cgi?id=53384
Avoid emitting miter joins for degenerate line segments
https://bugzilla.mozilla.org/show_bug.cgi?id=407107
Convert the relative path semgents into the backend coordinates
and then back again to user coordinates (cairo_copy_path,
cairo_append_path)
https://bugs.freedesktop.org/show_bug.cgi?id=54732
Fix extents computations for a degenerate path consisting only of a
move-to
https://bugs.freedesktop.org/show_bug.cgi?id=54549
Prevent crashing on a degenerate project edge after polygon
intersection
https://bugs.freedesktop.org/show_bug.cgi?id=54822
List of all changes since 1.12.2
--------------------------------
Adrian Johnson (12):
pdf: check if EXTEND_PAD group can be painted with EXTEND_NONE
pdf: fix smask gradient bbox
ps: check if EXTEND_PAD group can be painted with EXTEND_NONE
pdf: merge _emit_recording_surface and _emit_recording_subsurface into the one function
pdf: Don't use extents when acquiring a RASTER_SOURCE pattern
pdf: fix the offset of padded images
cff-subsetting: Ignore charset for non cid fonts
cff: convert '.' to locale specific decimal point before using sscanf
cff: use correct size for buffer
cff: initialise variable to prevent valgrind warning
cff subsetting: widths can be floating point
type1 subset: ensure encoding includes all glyphs
Alexandros Frantzis (2):
gl: Simplify GL wrap parameter setting code
gl: Provide a shader implementation of repeat wrap modes
Andrea Canciani (15):
build: Allow autogen-eration on systems without GTK-doc
build: Do not replace existing files
png: Implement conversion of CAIRO_FORMAT_RGB30 to string
surface: Define private map/unmap functions
surface: Make map_to_image return cairo_image_surface_t*
surface: Make backend-specific map/unmap functions symmetric
surface: Only use non-NULL extents for internal mapping
surface: Use the internal map/unmap
quartz: Silence warning
quartz: Mark surfaces created clear as is_clear
quartz: Provide a valid implementation of map_to_image
quart-image: Fix compilation
xcb: Fix make check
quartz: Use the correct transform when replaying recording surfaces
test: Add degenerate closed path case to get-path-extents
Behdad Esfahbod (2):
[util/malloc-stats] Use tighter spacing.
Fix malloc-stats for newer glibc
Chris Wilson (129):
version: Post release bump to 1.12.3
snapshot: Hold a reference to target whilst querying
snapshot: Avoid triggering assertion for grabbing the target during destroy
Split finish into multiple stages
damage: Avoid freeing the NIL error object
damage: Prevent accumulating damage to an error object
damage: Prevent reducing an error object
gl: Reject SOURCE + mask in composite_boxes()
test: Fix tighten-bounds reference images
spans-compositor: Handle unaligned unbounded boxes
spans-compositor: Add tracepoints for debugging
traps,spans-compositor: Avoid mistreating unaligned clips as aligned
spans: Only fallback for a clipmask if unbounded
clip: Apply clip boxes to the clip surface
arc: Use user endpoint for final step
spans: Debug input paths and polygons
stroke: Don't drop clockwise==0 lines
image: Tidy lerp8x4
win32: Fix return value for cairo_time_get
wideint: Fix compilation failure for bare use of uint64_t for !HAVE_UINT64_T
test: Fix leak from xcb-snapshort-assert
gl: Replace vbo with static allocation and immediate arrays
test: Exercise rectangular bo bug
bo-rectangular: Emit subsummed boxes for overlapping edges
test: Refresh unbounded-operator
test/record90: Rotate the reference so that it is wholly visible
test: Increase surface size for get-path-extents
gl: Use core GL_STENCIL8_DEPTH24 for gl_flavor=desktop
image: Propagate errors from clone_subimage
surface: Kill imagesurf temporary variable
gl: Do no access ctx after release during map-to-image
test: Restore bug-seams reference
image: Upconvert glyphs through a WHITE source when adding to the glyph mask
image: silence make check
surface: Eliminate PLT entries for map-to-image
gl: Add missing cairo-private to _cairo_gl_composite_with_clip
surface: replace map-to-image clone's use of user_data with parent pointer
Erradicate internal use of cairo_surface_get_content()
Erradicate internal use of cairo_surface_get_type()
composite-rectangles,scaled-font: Use accurate extents if the font is broken
scaled-font: Take lock around disposing of an empty page upon alloc failure
spans-compositor: After polygon intersection the fill rule is always non-zero
tor-scan-converter: Always recompute min-height following edge removal
polygon-reduce: Reduce broken stopped-edge continuation
image: Fix up glyphs compositing
gl: Trim the glyph mask to the operation extents
test: Exercise bug in joining together spline segments around cusps
stroke: Use round-joins near inflection points of splines
stroke: Skip inserting a round-join if within tolerance
ft: Indentation fixup for _get_bitmap_surface()
boilerplate/gl: Round fractional window sizes up
test: Add a simple exercise for raster sampling of subpixel geometry
test: Add example from bug-51910
xlib: If a sample accesses outside of a repeating image, upload it all
gl: Add the compile fix that I forgot to add to the previous commit
perf/chart: Render a solid bar if the column is too narrow for the gradient
gl: Fallback for copy_boxes if src/dst do not belong to the same device
trace: Fix propagation of CAIRO_TRACE_OUTDIR to children
egl: s/EGL_KHR_surfaceless_opengl/EGL_KHR_surfaceless_context/
gl: Remove unused variable
xlib: Silence compiler warning
gl: Use a wide texture ramp to emulate a linear step function
gl: Fudge gradient color generation to handle multiple stops at 0
damage: Update tail pointer after allocating new chunk
skia: Compile fix for changes to map-to-image
image: Temporarily resurrect the old non-pixman glyph compositor
xlib: Implement SHM fallbacks and fast upload paths
tor22: Add a simple method to quickly compute coverage (with saturation)
configure: Restore previous pixman required version of 0.22.0
xlib/shm: Fix up the shrinking of the priority queue
xcb: Migrate to the common mempool implementation
xlib/shm: Propagate the last-request to the synchronous create
xlib/shm: Limit use of the impromptu fallback pixmap for uploads
xlib/shm: Use an impromptu upload ShmSegment
xlib/shm: Clear the similar image surface
xlib: Only use CopyArea if the ShmPixmap and destination are the same depth
xlib/shm: Avoid using a synchronous ShmCreatePixmap if evading the readback
xlib/shm: Wrap the detection of shm with locking
xlib/shm: Fix runtime checking of has-shm-pixmaps for !shm case
xlib/shm: Mark the ShmPixmap as active following an upload flush
xlib: Drop the false optimisation of using a potentially busy shm upload pixmap
ft: Only use a specified font filename if its accessible
xlib: Move the shm cleanup from CloseDisplay to finish()
tests: Add outline-tolerance
stroker: Avoid emitting a miter join for across an elided degenerate segment
ft: Report FILE_NOT_FOUND if creating a font with a specified nonexistent file
cairo-script: Attempt to fallback for unresolved patterns
xlib/shm: Use a genuine event rather than an open-ended request
xlib/shm: Only check if we are expecting an event
xlib/shm: Reduce the frequency at which we emit events
xlib/shm: Add missing release of the display after GetImage
compositor: Skip invisible strokes
stroke: Skip spline evaluation when stroking to a polygon
pen: Use bisection to speed up vertex finding
stroke: Use new pen vertex range finders
stroke: Precompute the line half-width
stroke: Convert a very small round-join into a miter
stroke: Convert fallback stroker to new pen vertex finder
stroke: Compute bounds for fallback stroker (typically dashing)
bentley-ottman: Remove a few superfluous status propagation
bentley-ottmann: Only check the pairs of coordinates for equality.
bentley-ottmann: hint that the insertion compare function should be inlined
bentley-ottmann: Cache the most recent edge colinearity check
xlib/shm: Masquerade as an ordinary ShmCompletionEvent
default-context: Convert the relative path segments into the backend coordinates
path: Update last_move_point after move-to
image: Check for an error surface before dereferencing the backend
xlib/shm: Explicitly release shm surface if we do not own the pixmap
context: Add missing functions to transform between user and backend coordinates
path: Convert from backend coordinates back into user coordinates
xcb: Always flush the fallback damage to foreign drawables
xlib: Fix regression in cairo_xlib_surface_set_drawable()
xlib: Explicitly discard the fallback shm pixmap upon user modification
xlib: Force the fallback flush before updating the external Drawable
xlib: Do not call _cairo_xlib_surface_flush directly
xlib: Destroy the fallback damage along with the fallback surface
test: Add clip-disjoint-quad
polygon-intersect: Exclude non-overlapping clip boxes from consideration
spans-compositor: Use the tight clip-boxes for polygon construction
composite-rectangles: Update unbounded (clip extents) after reducing clip
test: Refresh reference image for clip-disjoint-quad
spans-compositor: Remove polygon limits after construction
tor: Fudge the edge if it is projected into a point
recording: Perform an explicit during snapshot
stroke: Remove redundant code for computing culling extents
test: Refresh reference images for slight alteration of curves
xlib/shm: Discard SHM surfaces upon CloseDisplay
win32: Compile fix for mismatched surface types
1.12.4 release
Chuanbo Weng (7):
gl: fix the translate value in copy_boxes.
gl: Convert CLEAR to DEST_OUT when there's a mask for composite_boxes.
gl: Do correct translation and lerp in gl-traps-compositor.
gl: Set correct clip rectangle for non-texture destination surfaces
gl: Set correct operation extents.
gl: Create a new texture surface if the source surface type is gl-window
gl: copy_boxes() does not support copying from a non-texture source
Daniel Stone (1):
Fix broken XRender ARGB32 formats
Dongyeon Kim (1):
gl: Set is_clear flag to FALSE after map_to_image
Henry (Yu) Song (8):
gl/msaa: Prevent stroke overlap
gl/msaa: Support for texture sources
gl/msaa: Support for masking
gl/msaa: Add support for unbounded operators
gl/msaa: Add ARB multisampling support
gl/msaa: Implement paint via masking
gl/msaa: Use unsigned short to build the index array
gl/msaa: Support the OpenGLES EXT multisampling extension
Henry (Yu) Song - SISA (2):
clip: Transform clip path in _cairo_clip_intersect_clip_path_transformed()
quartz: Never acquire recording surfaces
Henry Song (5):
subsurface: Disable subsurface-set-snapshot as it creates a ref cycle
gl: generate correct gradient color texture
gl: Destroy glyph cache surface during finish
gl: translate proper matrix depending up type of gl_operand
gl: use absolute value for color difference between gradient stops
Martin Robinson (9):
gl/msaa: Support for non-texture surfaces
gl/msaa: Wait to clip until compositing begins
gl/msaa: Implement glyph rendering
gl/msaa: Lazily flush the context
gl/msaa: Improve fallback detection
gl: Simplify switching between primitive types
gl: Fix compilation failure for flush cleanup.
gl: Remove the shader language version abstraction
gl: Add a non-thread-aware mode for GL devices
S=F8ren Sandmann Pedersen (4):
Use pixman glyphs
Revert "Use pixman glyphs"
image: Fix bugs related to glyph mask creation
Use the new pixman_glyph_cache_t API that will be in pixman 0.28.0
Uli Schlachter (18):
Remove some unused functions
Remove some dead code
check-doc-syntax: Make this work again
check-doc-syntax: Find duplicate "Since:" tags
c_surface_set_mime_data: Remove duplicate "Since"
xcb: Handle recording surfaces differently
xcb: Correctly handle a recording surface's extents
Fix make check
Remove an unimplemented function declaration
xcb: Fix a warn_unused_result warning
xcb: Remove unimplemented cairo compositor
xcb: Switch to compositor architecture
xcb: Verify extension support before sending
xcb: Check the right flag for FillRectangles
xcb: Check if traps are supported before using them
xcb: Add a missing check for FillRectangles
surface: Check reference count right before free
mark_dirty: Check surface status
Weng Xuetian (1):
xlib: Reset fallback counter when discarding the fallback
Yuanhan Liu (2):
gl: use _cairo_gl_operand_copy to fix unblanced reference count
configure.ac: remove annoying change of INSTALL file
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun, 29 Arp 2012 21:04:00 +1000
To: cairo-announce@cairographics.org
A new cairo release 1.12.2 is now available from:
http://cairographics.org/releases/cairo-1.12.2.tar.xz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.2.tar.xz.sha1
bc2ee50690575f16dab33af42a2e6cdc6451e3f9 cairo-1.12.2.tar.xz
http://cairographics.org/releases/cairo-1.12.2.tar.xz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.2 tag which points to a commit named:
dbc0efad7e565558a3abf7f69d7675efddc4688d
which can be verified with:
git verify-tag 1.12.2
and can be checked out with a command such as:
git checkout -b build 1.12.2
Release 1.12.2 (2012-04-29 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
After such a long gestation period for the release of Cairo 1.12, we
inevitably accumulated a few bugs that were flushed out by broadening the
test base. Thanks to everybody who tried the release, apologies to any one
unfortunate enough to encounter a bug and many thanks for reporting it. As
a result Adrian Johnson, Alexandros Frantzis, Andrea Canciani, Kalev
Lember, Maarten Bosman, Marcus Meissner, Nis Martensen and Uli Schlachter
have squashed many more bugs and improved the documentation. I would
strongly recommend everyone to upgrade to cairo-1.12.2.
-Chris
Bug fixes
---------
Allow applications to create 0x0 xlib surfaces, such as used by LibreOffice.
https://bugs.freedesktop.org/show_bug.cgi?id=49118
Trim composite extents for SOURCE/CLEAR operators to the mask.
Use fallback fonts in PDF for unhandled computed glyph widths
https://bugs.freedesktop.org/show_bug.cgi?id=48349
Handle snapshots of recording surfaces for analysing pattern extents.
Fixes a regression of reporting the PDF bounding box as being the page size.
Fix allocation size for PDF pattern ids.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49089
Fix emission of rectilinear dashed segments, with and without scaling, and
application of degenerate line joins.
Clamp unbounded fixup polygons to the clip extents.
Prevent infinite loop due to rounding errors whilst incrementing along dashes.
Prevent overflow for inline a8 span filling.
Miscellaneous build fixes for Cygwin on Windows and Solaris.
List of all changes since 1.12.0
--------------------------------
Adrian Johnson (10):
fix bug in _cairo_image_analyze_color
type1-subset: use fallback font if glyph widths are calculated
fix indentation in cairo_type1_font_subset_parse_charstring
type1-subset: if font name is prefixed with a subset tag, strip it off
fix _cairo_pattern_get_ink_extents to work with snapshot recording surfaces
test: disable subsurface tests with vector backends
pdf: avoid unnecessary use of patterns in mask groups
any2ppm: fix missing enumeration warning
pdf: support all image types
ps: support all image types
Alexandros Frantzis (1):
gl: Fix creation of gradient ramps for GLESv2
Andrea Canciani (12):
doc: Add script to enforce stricter validation of documentation comments
doc: Make informational comments syntactically different from docs
doc: Make documentation comments symmetric
doc: Manually fix remaining warnings about symmetry
doc: Make doc ids more consistent my always putting ':' after them
doc: Make the documentation name match the function name
doc: Do not use the '@' prefix on some tags
doc: Add "since" tag to documentation
doc: Fix some wrong versions
doc: Add since documentation for enumeration values
doc: Silence warnings about 'Since' field in private functions
doc: Silence last 'missing Since field' errors
Behdad Esfahbod (5):
Typo
Fix math in comments
Fix typos
More typo fixes
Fix another typo
Chris Wilson (54):
version: Post release bump to 1.12.1
test: Add test case for tracking source operator extents
composite-rectangles: Trim extents for SOURCE and CLEAR to the mask
test: update two reference images highlighted to be wrong due to source extents
cairoint: Mark PDF surface as requiring the deflate stream output
stroke: Fix misuse of half_line_x for vertical caps on dashes
traps: Clip the trapezoid extents against the clip extents
build: Disable -Wset-but-unused-variable
analysis: Apply the integer translation to the bbox as well
ps (API): Export the ability to set the creation date of the surface
ps (debug API): Export the ability to force fallbacks
pdf (debug API): Export the ability to force fallbacks
Revert accidental push of ps debugging API.
test: Add rectilinear-dash-scale
stroke(boxes): Apply user scale factors to dash segments
image: Split inline SRC composition
boxes: Remove unused inline function
Split cairo-box-privates into struct+inlines
Split cairo-clip-privates into struct+inlines
Split cairo-combsort-privates into struct+inlines
Split cairo-contour-privates into struct+inlines
Split cairo-surface-private into struct+inlines
Split cairo-surface-observer-private into struct+inlines
Split cairo-surface-snapshot-private into struct+inlines
Split cairo-recording-surface-private into struct+inlines
Split cairo-recording-surface-private into struct+inlines
Split cairo-pattern-private into struct+inlines
Split cairo-error-private into struct+inlines
Split cairo-surface-subsurface-private into struct+inlines
Split cairo-list into struct+inlines
dash: Use a epsilon compare for stepping the dash
dash: Increment dash_remain by the next segment to reduce accumulation errors
gl: Uses the inline clip function, so update its include
stroke(boxes): Convert the dash step back into device units before incrementing
xlib: Allow applications to create 0x0 surfaces
xlib: Fix inline conversion for TrueColor PutImage
image: Fix typo in _blit_spans()
image: Allow a snapshot to steal the original memory upon finish
snapshot: Perform the cow under a mutex
Update the remaining backends to handle a NULL extents for _cairo_surface_get_source
image: Avoid overflow when computing lerp spans for a8
Satisfy check-doc-syntax.awk for unimplemented functions
test: Exercise clip inversion imperfections
test: Exercise degenerate dashes that are wholly solid
image: Add a little bit of debugging to show number of boxes being drawn
gstate: Reduce degenerate dash to solid
test: Fix array lengths for degenerate-solid-dash
gstate: Correctly compact degenerate dash segments
test: Update degenerate-solid-dash reference
path-stroke-boxes: Fix degenerate end-caps for anti-clockwise paths
check-doc-syntax: Fix handling of return value in make check
check-doc-syntax: Only parse the source files for incorrect tags
version: bump for cairo-1.12.2 release
version: Post release bump to 1.12.3
Dimiter Stanev (1):
win32: compilation fix for recent private/inline header separation
Gilles Espinasse (1):
Cosmetic configure fix
Henry (Yu) Song (3):
gl: use font's antialias option to check whether it needs mask
gl: fix y-axis origin when map_to_image() for non texture GL surface
gl: Remove an unused variable
Javier Jardón (4):
configure.ac: Update autotools configuration
configure.ac: generate xz tarballs by default
autogen.sh: User autoreconf instead custom script
configure.ac: Do not generate template files when building docs
Jeff Mahoney (1):
pdf: Fix wrong allocation in _cairo_pdf_surface_add_source_surface
Kalev Lember (1):
win32: Avoid redefining ssize_t
Maarten Bosmans (4):
test: Give some functions in any2ppm a prefix
Protect code using dlfcn.h with CAIRO_HAS_DLSYM
test: Only use alarm() when SIGALRM is also defined
Add _cairo_win32_print_gdi_error to boilerplate code
Marcus Meissner (1):
configure: Conditionally include -flto
Nis Martensen (6):
add unused symbols to sections doc
doc: no separate cairo-xcb-xrender section
doc: add returns statement to cairo_surface_supports_mime_type
doc: do not use / in section title
doc: add missing chapters
typo
Uli Schlachter (4):
xcb/xlib: Add missing "Since: 1.12"
README: Note that xcb is no longer experimental
xcb: Fix SHM in _get_image()
xlib: Disable fallback compositor with xlib-xcb
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri, 23 Mar 2012 20:34:00 +0000
To: cairo-announce@cairographics.org
A new cairo release 1.12.0 is now available from:
http://cairographics.org/releases/cairo-1.12.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.12.0.tar.gz.sha1
63e0d1372a7919956b6d959709dfdf35d3cecc02 cairo-1.12.0.tar.gz
http://cairographics.org/releases/cairo-1.12.0.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.12.0 tag which points to a commit named:
a0bf6d25b5b68c897d63580d1ca9ee182f04cce1
which can be verified with:
git verify-tag 1.12.0
and can be checked out with a command such as:
git checkout -b build 1.12.0
Release 1.12.0 (2012-03-23 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
It's taken over 18 months, but the wait is finally over. A new cairo release!
We are pleased to annouce a new stable release of Cairo that brings many
new features and performance improvements, all whilst maintaining
compatibility with cairo-1.0 and all releases since. We recommend anyone
using a previous release of Cairo to upgrade to 1.12.0.
The major feature of this release is the introduction of a new procedural
pattern; the mesh gradient. This, albeit complex, gradient is constructed
from a set of cubic Bezier patches and is a superset of all other gradient
surfaces which allows for the construction of incredibily detailed patterns.
In PDF parlance, the mesh gradient corresponds with type 7 patterns. Many
thanks to Andrea Canciani for bringing this to Cairo, and for his work on
making gradient handling robust.
Not content with just adding another procedural pattern, Cairo 1.12 also
adds new API to create a callback pattern,
cairo_pattern_create_raster_source, that allows the application to
provide the pixel data for the region of interest at the time of
rendering. This can be used for instance, by an application to decode
compressed images on demand and to keep a cache of those decompressed
images, independently of Cairo. When combined with the recording
surface, it should form a useful basis for a deferred renderer.
With the release of cairo-1.12, we also introduce a new supported
backend for interoperating with X using XCB. Uli Schlachter, also
maintainer of awesome and contributor to libxcb, has volunteered to
maintain cairo-xcb for us. Thanks Uli!
For cairo-1.12, we have also added some common API to address any
surface as an image and so allow direct modification of the raster data.
Previously, only the Quartz and Win32 backends supported a very narrow
interface to allow for efficient pixel upload. Now with
cairo_surface_create_similar_image, cairo_surface_map_to_image, and
cairo_surface_unmap_image, Cairo exports a consistent method for
treating those surfaces as an image and so allow modification inplace.
These are the same routines used internally, and should support
efficient transfer or direct mapping of the target surfaces as
applicable.
Another focus over the past year has been to address many performance
issues, without sacrificing the composition model. To accomplish the
goal, once again the rasterisation pipeline was overhauled and made
explicit, giving the backends the freedom to implement their own
specific pipeline whilst also providing a library of common routines
from which to build the pipeline. For instance, this allows the image
backend and the gl backend to composite scan line primitives inplace,
and to then implement custom fallbacks to catch the corner cases that do
not map onto their fastest paths. Similarly, this allows for the Xlib
backend to implement trapezoidation without compromising the other
backends, yet still allow for the pipeline to be used elsewhere for
testing and fallbacks. Clipping was once again overhauled, so that the
common cases for the raster pipelines could be captured and processed
with fast paths with the emphasis on performing geometric clipping to
reduce the frequency of using multi-pass clipmasks. Stroking was made
faster, both by providing specialised fast-paths for simple, yet frequent,
cases (such as stroking around a rectangle) and by reducing the number
of edges generated by the general stroker.
As part of the focus on performance, Cairo 1.12 introduces some
antialias hints (NONE,FAST, GOOD, BEST) that are interpolated by the
raserisers to fine tune their performance versus quality. Cairo 1.12
also introduces a new observation architecture,
cairo_surface_observer_t, which can be used to analyse the amount of
time consumed by drawing commands and help identify inefficiencies in
both Cairo and the application.
Last, but by no means least, the OpenGL backend has seen significant
work including the port to GLESv2 and the exploitation of advanced
hardware features. Interesting times.
As always, I would like to thank everyone who contributed to Cairo,
not only through writing code, but also submitting documentation, bug
reports, suggestions and generally having fun with Cairo! In particular
though this release could not have happened without the efforts of
Adrian Johnson, Alexandros Frantiz, Andrea Canicani, Martin Robinson,
Nis Martensen, and Uli Schlachter. Thanks.
-Chris
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, quartz, win32, and image buffers, as well as PDF, PostScript,
and SVG file output. Experimental backends include OpenGL, XCB, BeOS,
OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo include stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest versions of cairo can always be found at:
http://cairographics.org/download
Documentation on using cairo and frequently-asked questions:
http://cairographics.org/documentation
http://cairographics.org/FAQ
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Roadmap and unscheduled things to do, (please feel free to help out):
http://cairographics.org/roadmap
http://cairographics.org/todo
List of changes since 1.11.4
-----------------------------
Chris Wilson (21):
version: Post-release version bump to 1.11.5
skia: Setup opacity for cairo_paint_with_alpha()
image: Support SRC compositing with in the inline span-compositor
clip: Intialise polygon fill-rule prior to use
spans-compositor: Only destroy the clip if we made the copy
trace: Add breadcrumb for cairo_image_surface_get_data()
gl: Manually invert images without MESA_pack_invert extension
stroke: Adapt rectilinear stroker to handle separable non-unity scaling
win32: Check for damage before blitting
compositor: Add tracing for damage
damage: Fix memcpy size
win32: Fix damage flushing
win32: Hook up glyph creation again
win32: Remove obsolete font rendering routines
directfb: Tweak, tweak, tweak.
image: Fix leak of white solid color for masked composition of CLEAR
test: Tweak the results summary
win32: Copy back the fallback damage to the right location
win32: mark-dirty cannot assume the fallback has been discarded
cairo: Add some missing doc entries for cairo_raster_source_pattern_t
version: bump for 1.12.0 release!
Chuanbo Weng (1):
subsurface: Avoid potential crash when subsurface's size is less than 0
Dongyeon Kim (1):
trace: Wrap GL surfaces
Henry (Yu) Song (2):
scaled-font: Ignore empty glyphs when checking for potential overlap
boilerplate/gl: set width and height to be at least 1
Henry Song (1):
gl: use direct mode for uploading gradient texture
Igor Oliveira (1):
gl: GL_UNPACK_ROW_LENGTH does not accept negative values
Kouhei Sutou (1):
skia: add a missing header into archive
From: Chris Wilson <chris@chris-wilson.co.uk>
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.11.4 now available
A new cairo snapshot 1.11.4 is now available from:
http://cairographics.org/snapshots/cairo-1.11.4.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.11.4.tar.gz.sha1
ac4c37de8827ec1c4092509b9eec72106173d350 cairo-1.11.4.tar.gz
http://cairographics.org/snapshots/cairo-1.11.4.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.11.4 tag which points to a commit named:
a8dbc68056af9f32b6ebc6c1a0191e9ca7ec2e7d
which can be verified with:
git verify-tag 1.11.4
and can be checked out with a command such as:
git checkout -b build 1.11.4
Snapshot 1.11.4 (2012-13-12)
============================
The cairo community is pleased to finally announce the long aniticpated
release candidate for 1.12, 1.11.4, of the cairo graphics library. This
is the first major update to cairo in over a year and brings a large
number of new features; undoubtably a few bugs as well.
While many people have contributed and have helped to test the release,
providing feedback on 1.10 and suggesting improvements, this release
is the result of a few persevering souls who deserve recognition for their
outstanding contributions: Andrea Canciani (all round bug fixing,
performance tuning and master of the gradients), Adrian Johnson (PDF
supremo) and Uli Schlachter (who stepped forward as maintainer for the
XCB backend).
Major additions since 1.11.2:
* cairo_surface_map_to_image API for pixel level access to any surface
* New antialias hints to control the trade-off between speed and
* quality
* A callback pattern, cairo_pattern_create_raster_source, for lazy
decoding of image data.
* cairo_surface_observer_t, a new type of surface to gather performance
statistics
* XCB as a supported backend
* A rewritten compositor pipeline for performance improvements for, but not
limited to, the xlib and image backends.
From ION and PineView through to SandyBridge, every machine I have shows
across the board performance improvement on the cairo-traces:
i5-2520m gnome-system-monitor: 5.97x speedup
pnv gnome-system-monitor: 4.86x speedup
i5-2520m firefox-asteroids: 4.66x speedup
pnv firefox-asteroids: 4.43x speedup
image firefox-canvas: 3.82x speedup
i5-2520m firefox-canvas-alpha: 3.49x speedup
image firefox-asteroids: 2.87x speedup
pnv firefox-talos-svg: 2.83x speedup
ion grads-heat-map: 2.75x speedup
pnv firefox-canvas-alpha: 2.66x speedup
image gnome-system-monitor: 2.66x speedup
image swfdec-giant-steps: 2.46x speedup
image firefox-canvas-alpha: 2.14x speedup
i5-2520m firefox-talos-svg: 2.03x speedup
image grads-heat-map: 2.02x speedup
ion gnome-system-monitor: 2.00x speedup
pnv firefox-particles: 1.99x speedup
i5-2520m grads-heat-map: 1.96x speedup
pnv firefox-canvas: 1.92x speedup
ion firefox-particles: 1.80x speedup
image poppler-reseau: 1.77x speedup
pnv xfce4-terminal-a1: 1.72x speedup
image firefox-talos-svg: 1.65x speedup
pnv grads-heat-map: 1.63x speedup
i5-2520m firefox-canvas: 1.63x speedup
pnv swfdec-youtube: 1.62x speedup
image ocitysmap: 1.59x speedup
i5-2520m firefox-fishbowl: 1.56x speedup
i5-2520m poppler-reseau: 1.50x speedup
i5-2520m evolution: 1.50x speedup
i5-2520m midori-zoomed: 1.43x speedup
pnv firefox-planet-gnome: 1.42x speedup
i5-2520m firefox-talos-gfx: 1.41x speedup
i5-2520m gvim: 1.41x speedup
pnv ocitysmap: 1.37x speedup
image poppler: 1.31x speedup
ion firefox-canvas-alpha: 1.35x speedup
ion firefox-talos-svg: 1.34x speedup
i5-2520m ocitysmap: 1.32x speedup
pnv poppler-reseau: 1.31x speedup
i5-2520m firefox-planet-gnome: 1.31x speedup
pnv firefox-fishbowl: 1.30x speedup
pnv evolution: 1.28x speedup
image gvim: 1.27x speedup
i5-2520m swfdec-youtube: 1.25x speedup
pnv gnome-terminal-vim: 1.27x speedup
pnv gvim: 1.25x speedup
image firefox-planet-gnome: 1.25x speedup
image swfdec-youtube: 1.25x speedup
...
And a plethora of minor improvements everywhere!
-Chris
List of all changes since 1.11.2
================================
Adrian Johnson (90):
Type1-subset: Fallback if font contains more than one /Encoding
cff: Fix heap corruption
PS: Use tight bounding box
png: fix type1 encoding bugs
cff-subset: Fix /guillemotright SID encoding
type1-subset: Remove FT dependency part 1
type1-subset: Remove FT dependency part 2
type1-subset: Remove FT dependency part 3
type1-subset: Remove FT dependency part 4
type1-subset: Remove FT dependency part 5
type1-subset: Remove FT dependency part 6
Add win32 font backend functions for Type 1 subsetting
Remove HAS_FT_FONT from cairo-scaled-font-subsets-private.h
win32: Fix build breakage
ps: Don't return CAIRO_INT_STATUS_NOTHING_TO_DO for empty glyphs
analysis: CAIRO_INT_STATUS_NOTHING_TO_DO should not cause fallback
Add support for subsetting bare CFF fonts
type1-subset: Subset the subroutines
Check glyph_index range in _index_to_glyph_name
ps: remove unnecessary flush
pdf: check if images are grayscale or monochrome and encode as such
image: fix bug in analyze_color
ps: check if images are grayscale or monochrome and encode as such
image: check if A8 image is bilevel when analyzing transparency
pdf: check if smask is bilevel and encode as such
ps: use show_text_glyphs
subsets: use show_text_glyphs supplied utf8 to determine latin character
ps: use deflate compression for ps level 3
pdf: change end of line in pdf output from \r\n to \n
cff-subset: fallback when parsing the charstrings in bare cff fonts fails
cff-subset: don't easily give up parsing a charstring if we already have the width
cff-subset: fix decoding of real numbers
font-subsets: fix wrong string length
ps/pdf: use a new clipper object when emitting a recording surface
pdf: use a new clipper object in recording_subsurface
pdf: use ink extents for smask bbox
pdf: use ink extents for pattern bbox
pdf: use ink extents in content stream XObjects
pdf: each row of 1-bit image data needs to begin on a byte boundary
ps: each row of 1-bit image data needs to begin on a byte boundary
pdf: use _emit_smask() instead of _emit_imagemask to emit stencil mask
ps: support stencil masks
ps/pdf: fix the polarity of stencil masks
pdf: use interpolate in image smask
cff: strip subset tag when reading font name
pdf: latin text must use character codes in the toUnicode CMap, not glyph indices
ps: use reusable stream for mesh pattern data
ps: improve formatting of fallback image comment
pdf: add status check
ft: fix warning
scaled-subsets: ensure different glyphs with same utf8 mapping are not merged together
ps: turn off debug
Refresh some pdf/ps ref images
subsetting: Support unicode fontnames
analysis mask: unwrap recording surface snapshot
test: add mask-alpha ps ref
test: refresh some pdf/ps refs
test: refresh some pdf/ps refs
pdf: ensure ink extents is not larger than bounded extents
test: refresh pdf mask ref images
subsets: latin char map needs to belong to the font, not the subset
test: Add stroke-pattern
test: make text-pattern draw with both opaque and translucent patterns
cff: in CID fonts the CID is the glyph index
cff: fallback if seac style endchar is found
truetype-subset: remove unused variable
type1-subset: remove unused variables
pdf: don't use patterns with padded images
ps: avoid padding images if the padding is not required to fill the extents
pdf: allow embedding of cmyk jpeg images
ps: allow embedding of cmyk jpeg images
pdf: avoid using pdf patterns to paint/fill opaque linear/radial gradients
pdf: avoid using pdf patterns to paint/fill translucent linear/radial gradients
ps: simplify the EPS save and restore
doc: fix typos
test: add fallback
pdf: support RASTER_SOURCE patterns
test: add push/pop group to fallback test
ps: handle different x/y fallback resolution in Fallback Image comment
api: add cairo_surface_supports_mime_type
ps: support RASTER_SOURCE patterns
ps: avoid using ps patterns to paint/fill gradients
ps: add missing 'Q' to end of page
ps: ensure shading domain is [ 0 1 ]
ps: fix extend-pad-border test failure
type1-subset: some fonts have "noaccess put" instead of NP in the Subrs
type1-subset: ensure additional glyphs required by seac operator are parsed
win32: fix compilation on cygwin
test: add test to check that pdf transparency groups are non-isolated
pdf: ensure all transparency groups are isolated
Alexandros Frantzis (32):
gl: Fail if GL implementation doesn't support shaders
gl: Remove unnecessary checks for NULL shader implementation
gl: Remove fixed-function related code paths
gl: Add entry for UniformMatrix4fv in the gl dispatch table
gl: Add function to bind a 4x4 float matrix shader uniform
gl: Replace ftransform() with manual coordinate calculation in shaders
gl: Use a custom shader uniform for the ModelViewProjection matrix
gl: Add gl dispatch entries for functions related to vertex attributes
gl: Replace built-in vertex attributes with custom attributes
egl: Ensure that the dummy pbuffer surface is compatible with the supplied context
boilerplate/egl: Ensure that we are using an RGBA32 egl config
gl: Correctly extract GL version from OpenGL ES version strings
gl: Store the GL flavor (Desktop or ES) in the device struct
gl: Add GLES2 support to dispatch table initialization
gl: Pass more information to the shader emitter functions
gl: Add functions to get the filter and extend of gl operands.
gl: Provide a shader implementation of GL_CLAMP_TO_BORDER for GLES2
gl: Store gradients in 2D textures of height 1 instead of 1D textures
Extract function to query endianness from xlib/xcb and make it common
gl: Require the GL_EXT_texture_format_BGRA8888 extension for GLES2
gl: Use conventional texture upload for GLES2
gl: Add support for creating image surfaces for GLES2
gl: Add GLES2 support for drawing image surfaces on gl surfaces
gl: Remove unnecessary call to glDisableClientState()
gl: Use GL_MAX_TEXTURE_IMAGE_UNITS to query the maximum texture units
gl: Require the GL_OES_texture_npot extension for GLES2
gl: Add GLESv2 backend to build system
gl: Fix build issues for GLES2
boilerplate/egl: Add GLES2 support
gl: Define the float precision in the fragment shader for GLES2
gl: Fall back to dlsym() if *GetProcAddress() fails
gl: Add fallback path for GLES2 implementations not supporting GL_OES_mapbuffer
Andrea Canciani (189):
Fix regressions from 1.10 merge
xcb: Fix compositing of pixel-aligned rectangles
mesh: Rename cairo_pattern_mesh_* functions to cairo_mesh_pattern_*
test: Fix clip-device-offset
test: Fix surface-pattern-scale-down-extend
test: Fix REFERENCE_IMAGES
xlib: Fix compilation when gradient functions are not available
image: Fix surface acquisition if PIXMAN_HAS_ATOMIC_OPS
test: Fix missing REFERENCE_IMAGES
test: Silence gcc
test: Silence gcc warning
test: Silence gcc warnings
test: Cleanup macros
test: Use ARRAY_LENGTH() macro
test: Add show-glyphs-advance
quartz: Fix y glyph advance
xcb,xlib: Fix 1-stop gradients
xcb,xlib: Fallback upon generic radial gradients
test: Add stroke-open-box
path: Fix _cairo_path_fixed_is_rectangle()
script: Fix stroking of 3 sided boxes
Make cairo_set_font_size() a wrapper of cairo_set_font_matrix()
quartz-font: Remove unused variables
Improve cairo_rectangle_list_t error handling
trace: Always emit a function name for write-to-png-stream
image: Silence missing enum value warning
image: Silence gcc warning
Do not warn when ignoring the return value of _cairo_rectangle_intersect()
Remove unused function declarations
Do not use fmax()
Revert "Add an implementation of fmax for use with MSVC"
Improve headers-standalone target
Fix warning by check-doc-syntax
Fix visibility issues found by make check
Remove if's from Makefile.sources
boilerplate: Add generation of constructors on win32
test: Update generation of constructors on win32
test: Fix compilation on win32
test: Use POSIX-compatible unlink
path-stroke: Avoid mixing cap and join values
toy-font-face: Do not assume hash != 0
xlib: Fix build of xlib-xcb
build: Don't build cairo-sphinx when the tee surface is off
xlib-xcb: Implement cairo_xlib_device_debug_{g,s}et_precision
script: Return status when flushing device
toy-font: Do not open-code cairo_font_face_reference ()
boilerplate: Silence MSVC warnings
Avoid deprecated functions on win32
win32-font: Do not return font in error status
win32-font: Implement destroy function
win32-font: Improve static data reset function
build: Improve generation of cairo-features.h on win32
build: Improve dependencies in win32 Makefiles
build: Use common rules for making pdiff
build: Clean up environment variables and flags for the win32 build
build: Silence autoconf warnings
Hide private symbols on MacOSX
error: Do not define _cairo_error twice
test: Cleanup build on Win32
script-interpreter: Build on win32
perf: Ensure M_SQRT2 is defined
perf: Fix build on win32
test: Improve check-ref-missing
test: Fix typo
clip: Fix boxes extents computation in intersect_with_boxes
test: Make parsing of log files more solid
test: Ignore \r when parsing test log files
test: Add extended-blend-solid tests
win32: Fallback upon PDF blend operators
test: Merge text-antialias-*
test: Fix check-ref-missing
Do not open-code freed-pool
Remove conditional compilation of freed-pools
Clean up context_pool upon static data reset
Make error contexts static
pattern: Implement _rgb functions as wrappers over _rgba functions
color: Remove unused functions
gstate: Remove useless code
device: Add CAIRO_STATUS_DEVICE_FINISHED
device: Define the CAIRO_DEVICE_TYPE_INVALID device type
device: Fix documentation of device types
build: Fix automake error
build: Fix compilation
xcb,xlib: Cleanup GC cache handling
Use new pixman formats
quartz: Silence const cast warnings
Fix surface backend structures
win32: Fix compilation
win32: Constify
surface: Check image parameter in cairo_surface_unmap_image()
win32: Fix typos in documentation
test: Update image references
test: Improve horizontal-clip
polygon: Simplify code for edge clipping
polygon: Fix generic case of edge clipping
script: Initialize recording extents
directfb: Unbreak compilation
Silence gcc warnings
Silence Clang static analyzer reports
cff-subset: Do not use garbage values
quartz: Silence some clang warnings
device: Flush on a finished device is a no-op
pattern: Complete the list of possible pattern errors
build: Respect CFLAGS and LIBS env settings
default-context: Do not allow restoring pushed gstates
clip: Fix copy of clip rectangles list
Fix make check
Update FSF address
Tighten error validation
surface: Set errors through _cairo_surface_set_status()
pattern: Do not provide type field in cairo_pattern_union_t
font-face: Cleanup backend-specific destruction code
Remove useless checks for NULL before freeing
hash: Improve double hashing
hash: Compare hash values before calling keys_equal
scaled-font: Remove _cairo_ft_scaled_font_get_unscaled_font()
scaled-font: Make unscaled font utility functions static
perf: Add hash table benchmark
hash: Improve handling of dead entries
hash: Code cleanup
clipper: Fix crashes
perf: Silence gcc warning
quartz: Fix compilation
win32: Fix compilation
time: Add cairo_time_t type
Introduce the cairo-missing library
perf: Reuse cairo-time
perf: Drop cairo_perf_ticks_t in favor of cairo_time_t
perf: Get rid of cairo_perf_ticks_per_second()
perf: Fix readme
script: Fix make check
surface: Fix make check
win32: Fix linking
perf: Fix win32 build
observer: Fix build on suncc
cairo-missing: Fix and cleanup ssize_t type definition
malloc: Fix build on suncc
wideint: Fix build on suncc
cairo-missing: Fix build
quartz: Fix build
Make cairo-missing a static library
quartz-font: Fix scaled font backend hooks
quartz: Fix the 32-bits build on MacOSX 10.7
rectangle: Fix warning
stroke: Fix typos
quartz-image: Fix build
vg: Fix build
cogl: Fix 'make check'
default-context: Fix 'make check'
xml: Fix backend structure
Silence some 'unused var' warnings
cairo-script: Don't ask for inlining of a cold-path function
boilerplate: Provide close callback after opening any2ppm output
Sort option flags
Improve the documentation of the flags
test: Re-enable pass-through
test: Remove dead code
test: Remove unused thread field
boilerplate: Remove unused thread id parameter
test: Reuse cairo_test_logv()
Use xstrdup instead of xmalloc when possible
Remove useless checks for NULL before freeing
boilerplate: Fix svg extension
test: Use cairo_test_list_t for the main test list
test: Do not open files in non-existing dirs
xcb: Fix typo
subsurface: Fix 'make check'
test: Use fork() on MacOS X
test: Add negative-stride-image
test: Add stride-12-image
quartz: Fix building with QUARTZ_DEBUG
quartz: Make glyph antialiasing consistent with quartz-font
quartz: Do not export private functions
raster-source: Do not return value in void function
pattern: Infinite color-only sources are always opaque
rectangle: Implement _cairo_rectangle_contains_rectangle()
observer: Return status when printing the observed data
observer: Silence gcc warning
win32: Fix Makefile.win32 build
device: Minor documentation fixes
build: Add 'clean' target to Makefile.win32 build system
test: Compile any2ppm on Windows
test: Fix any2ppm on MSVC
test: Create output directory even on Win32
build: Make 'all' the default target in the base Makefile.win32 build
path-fixed: Silence gcc warnings
stroke-style: Silence gcc warning
perf: Don't use a boolean value as integer
boilerplate: Use any2ppm from ANY2PPM env variable
Behdad Esfahbod (4):
Don't err on non-invertible font matrix
Bug 34011 - headers-standalone target is incorrect for some non-gcc compilers
Don't cache _CAIRO_ENABLE results
[ft] Minor
Benjamin Franzke (1):
egl: Fix eglMakeCurrent for egl surfaces
Benjamin Otte (22):
AUTHORS: Use correct email for me
tests: Add line-width-tolerance
tests: Fix gcc complaint
test: Add line-width-overlap
xcb: Don't operate on a status variable that is never set
Assert that an error is valid when set
surface: Don't be nice to people setting internal error codes
device: Don't be nice to people setting internal error codes
region: Don't be nice to people setting internal error code
surface: Allow NOTHING_TO_DO as a valid error for now
test: Add missing format to any2ppm to silence gcc
surface: Actually return a value from _cairo_surface_set_error()
arc: Handle radius == 0 the same no matter the arc direction
Revert accidental checkin in last commit
Declare variables first so gcc shuts up
test: Add a test for 0-radius negative arcs
test: Fix gcc complaints about old style definitions
test: Fix copy/paste error
arc: Remove erroneous return statement
test: Fix gcc signedness warning
build: Use $GREP -e instead of plain grep -e
image: Don't crash on weird pixman formats
Carlos Garcia Campos (1):
xlib: Check pixman format before trying to create an image surface for it
Chris Wilson (533):
version: Post-snapshot bump
xcb: Only use clip rectangles for more than 1 pixel-aligned box
image: Limit span rendering to bounded extents
test: Attempt to capture out-of-bounds spans compositing bug
surface: Don't pass INT_UNSUPPORTED to _cairo_surface_set_error
configure: Test for funlockfile
xcb: Compile fix when using xcb-drm
trace: Fix hint_style/hint_metrics typo
image: Fix pixman format to RGB30 conversion
Silence the compiler for another couple of RGB30 switches
cairo-trace: Fix an obscure bug recording the fishtank
xlib,xcb: Force strict adherence to the Render specification when testing
boilerplate/xcb: Fix silly cut'n'paste errors in previous commit
test: Add unaligned-box
perf/micro: Add wave
perf
gl: Mark the use-once vertex buffers as DYNAMIC
boilerplate: Introduce create_similar hook
cairo-trace: Fix use of buf outside of scope
cairo-perf-diff-files: Don't print size/content for trace results
test: Add a Makefile.refs generator
xlib: Create an exact match for the image surface if possible using Xrender
png: Fix support of depth-30 images
test: Test a1 clipping semantics
ft-font: If the pattern is already resolved, use it immediately
scaled-font: Key the cache on the orignal font_face
Excise DRM-Xr
Excise xcb-drm
scaled-font: Fix assertions for original font-face vs font-face
image: Only discard the outer boxes
tests: Add clip-complex-shape
tests: Add paint-clip-fill
Implement cairo_backend_t
pattern: Add observer hooks
xcb: Remove more bits of drm integration
test: Always compile cairo-test-suite
test: Add random-clips to stress test clipping
gl: Compile fix, missing include cairo-pattern-private.h
tests,perf: Add a hatchings clip-test
test,perf: Another hatching!
ps: Add HAS_FT_FONT guards for type1
clip: Rudimentary support for clip-polygon extraction
win32: Fixup clip-mask fallback after API changes
clip-boxes: Intersection with 0 boxes means clip-all
xcb: Take advantage of clip-boxes
xcb: squash initial ChangePicture request for precision
xcb: Reduce one pass for masking, now just 2 passes required!
Fix proxying of ->context_create()
gstate: Handle NULL clip for in_clip()
xcb: Always send a clip region along with clipped glyphs
test: Expand partial-clip-text
test: Extend recording-surface-pattern to include a SOURCE operator test
test: Add a paint-with-alpha variant to test clip-boxes fast path
image: Fix partial clipping of text
image: replay the recording surface directly onto the target
image: Apply mask-opacity to clip boxes
tests: Missing ref images for new recording-surface test
tests: Another missing ref, this time clip-disjoint-hatching
region: Directly handle single rectangle creation in create_rectangles()
trace: Create a new opcode for recording surface
surface-wrapper: Fix use of uninitialised variable
clip: Embed a single box to avoid a common allocation
freed-pool: Enlarge the freed cache
scaled-font: Single glyph extent computations are worryingly frequent
composite: Perform a quick is-clipped for glyphs
recording: Only look for a fill-stroke operation if the target supports one
test: Exercise replaying basic painting paths
test: Add clip-intersect
image: Fix clip-intersect
xcb: set the right members of cairo_color_t for generating the opacity mask
recording: Move the glyph allocation into the wrapper after checking clip status
wrapper: Factor out the common clip handling
wrapper: Use the stack for small glyph allocations
wrapper: show-text-glyphs can now operate on constant array of glyphs
wrapper: Correct translation of clip for wrapper extents
clip: Skip processing of rectangle-intersection if it wholly subsumes the clip
clip: Short-cut the common condition of intersecting with a single box
recording: Combine the clip to the recording + target surface extents
xcb: Make composite_opacity_boxes slightly less silly
record: Store the untransformed operation extents along with the command
record: Check the operation against the target device extents.
wrapper: target to recording needs the inverse transform
rectangle: speed up the is-intersecting test.
API: map-to-image and create-similar-image
composite: Pass unbounded extents to initialisation
wrapper: translate the clip by the device transform
polygon: Don't skip clipped horizontal edges
polygon: Fix clipping of edges outside of their range
test: Add horizontal clip test
record: Use a bbtree to reduce is-visible checking overheads
record: And remember to offset the index of unbounded playback
record: We can only skip the clear so long as we know the destination is clear
record: Recording surfaces need an explicit clear
record: Assume recording surface targets are clear
clip: Fix cairo_clip_equal()
clipper: Detect a incremental change in the general clip-path
record: Only reduce fill+stroke if the clip doesn't change between the commands
fallback: Prevent recursion when combining with the clip
xcb: Short-circuit multiplying the alpha mask by 1.0
clip: Fix clip-equal to handle one or the other being NULL/all-clipped
clipper: Also need to guard against the incoming clip being NULL
pdf: Remove redundant clip regions
pdf: Don't remove the current clip if redundant
ps: Apply the clip reduction techniques from pdf
gl: Rectangular fast path
gl: Rectilinear fast path
xcb: Convert the box back to integer coordinates for uploading the image
trace: Emit the content type for image surfaces
image: extend support of direct replay for paginated surfaces
image: Free clip_surface after use
paginated: Remove an impossible test
test: Exercise extend modes with recording patterns
spans: fast-path common case of a single box.
tor: Use longjmp to throw an error whilst generating spans
image: Reduce compositing bounded boxes with a clip-mask to a polygon
clip: Mark __cairo_clip_all as private and do not export
tor: Sort the initial edge correctly
image: the boxes are already pixel-aligned so skip the extra rounding step
test: Extend PDF blend tests to include an opacity mask
tor: Suppress repeated spans
perf: Add a few more variations to dragon to exercise unaligned lines/spans
bo-rectangular: perform an incremental sort
perf: Save/restore gstate across runs
test: Add an test case to exercise overlapping caps between dash segments
test: Add a second ring to overlapping-dash-caps
bo-rectangular: handle in==out specifically for the single box case
perf: Add stroke/fill variants to world-map
test: Add world-map from the perf-suite
test: Add a couple of tests to exercise stroking of short tail segments
clipper: Don't emit an empty clip-path for no clip boxes
test: Add join-star, another stroker exercise
test: Add an loopy I-bar stroker test
test: Add joins-retrace
util: Add show-polygons
test: Add a1-sample
test: Add unclosed-strokes
perf: Add many-strokes
perf: add the usual special cases to many-strokes
tor: First perform a bucket sort before merge the sub-edges from the polygon
tor: Inline reverse insertion sort for handling intersections
build: Add a missing cairo-backend-private.h
perf: Add many-fills
fill: A horizontal/vertical line is also a degenerate fill box
bo-rectangular: Eliminate allocation for pqueue
bo-rectangular: Use a mergesort to speedup insertion
bo-rectangular: Correctly mergesort a doubly-linked list
tor: trivial changes
tor: Fix mergesort to handle doubly-linked list
perf: add many-curves
perf: add curve
tor: update is-vertical along with min-height
fixed: Allow the implicit close of the last fill path to complete a fill-box
trace: Pop the surface after write-to-png
script: Include an operator to replay a recording surface to a file
script: Compile fix
recording: do not reduce required clips
test: Add record-extend
util/show-polygon: Show end-points
util/show-traps: Cache the rendering of the traps+edges
script: Remove reference to image-surface-private
default-context: Tidy push-group
tor: Micro-optimise
bo: Perform an initial bucket sort on the start events
xlib: Set the clip_region for glyphs
test/line-width: Add a non-antialiased variant
perf/micro: Test wide vs hairline strokes
perf/micro: diagonal lines
bo-rect: Micro-optimisation
image: move surface definition to new header for subclassing
skia: Update to use cairo_backend_t interface
Fix pollution from skia commit
surface-wrapper: Initialise clip to NULL
bo-rect: One step too far...
boilerplate: improve fidelity of surface extraction
recording-surface: Don't store the transient error when returning the path
surface: propagate internal statuses
pdf: Propagate NOTHING_TO_DO
surface: Don't modify operator
recording: replay_all is meant to mean REPLAY && ALL!
pdf: Compute fill-stroke extents first before trying to use it to set the clip
pdf: composite-rectangles now require freeing after use
Only reduce the clip if it is not in active use for the operation
test/line-width: Refactor and tidy
test: Add a couple of variants to line-width-overlap
stroke: Rely on the tessellator to remove self-intersections
Add missing 'cairo-image-surface-private.h'
test/xlib-expose-event: Be kinder to recording surfaces
script: Emit sequences of boxes to as 'rectangle' for clarity
snapshot: Defer acquisition
script: Support unbounded native recording surfaces
recording: remove the duplicate 'content' field
recording: break self-copy loop
subsurface: call the high-level cairo_surface_flush
subsurface+recording: handle recursion
image: peek through a snapshot to the recording surface behind
paginated: unwrap subsurfaces during context creation
analysis: prevent recursion whilst analysing recording patterns
ps: unwrap recording surface snapshots
snapshot: Assert that we do not generate a snapshot clone
paginated: Use the backend->snapshot
wrapper: Use the backend->snapshot function
pdf: If the recording surface is unbounded, limit the pattern to the ink extents
script: leave the tail of the RGB24 data unmolested
script: take advantage of the polymorphism of the interpreter
script: Missed break for creating unbounded recording surfaces.
xlib: Mark surfaces as finished when the Display is finished/destroyed/closed.
xlib: Move the Display pointer nullify into destroy from finish
record: Offset the clip by the replay transformation as well
surface: Rearrange nothing_to_do? to catch OVER + clear source
script: Hook image caching into the snapshot mechanism
gstate: Copy clusters for an untransformed unbounded surface
Introduce cairo_surface_observer_t for performance analysis
script: enable by default
tee: compile fix for migration of _cairo_is_recording_surface()
xml: Include 'cairo-image-surface-private.h'
Introduce cairo_mime_surface_t
check: make check-headers happy
recording: Defend against bad user-input
stroke: move normal stroker to new file
stroke: Convert the outlines into contour and then into a polygon
observer: report number of solid patterns first
observer: print operator frequencies
observer: print stroke caps/joins frequencies
snapshot: restore the order of detach vs callback
observer: print path antialias modes
obverser: only print out the active patterns
observer: only print out the non-zero path types
observer: only print out the non-zero clip types
observer: further classify general clips
observer: put a comma between array items when printing
obsever: include the operation timings
perf: Cleanup target after each run
observer: record all operations and their timings
xlib: Fix typo in snapshotting.
recording: optionally disable optimise away clears
observer: copy glyphs around call into backend
observer: bypass surface mid-layer and call into recording surface directly
test: Add checkerboard
test: Add big-little-box
test: Add record-mesh
test: Extend record-extend to exercise similar surface sources
test: Extend rotate-image-surface-paint
test: Add shape-general-concave
observer: correct classification of aligned paths
observe: Provide the sum of the elapsed time of the individual operations
test: Add clip-mixed-antialias
test: Add big-little-triangle
test: Add big-empty-box
test: Add big-empty-triangle
perf: Print a summary of each operation for a trace (using '-s')
api: Extend cairo_antialias_t to include performace/quality hints
observer: Add missing return codes
perf/Makefile.am: Add missing '\' line continuation
Introduce a new compositor architecture
test-surfaces: compilation fixes
perf/micro: Add measurement of setting the pixel directly using pixman
test: Update ref images
mono-scan-converter: Decrement height as we skip straight edges
perf/stats: Avoid overflow when summing time-squared
traps: Send unaligned boxes as trapezoids
traps: Skip compositing an empty bounded regions
image: Adapt to updated pixman lerp operators
test: Add the PS tiger
perf/micro: Add the PS tiger as a measure for the antialias hints
mono: Amalgamate adjacent spans
skia: fix compilation
image: fix compilation of spans with LERP
test: Fix ref images for a1-clip-*
test: Add ref image for random-clip
perf: Add an a1-pixel variant
test: Use the trapezoid reference image for random-clip
test: Complete set of baseline reference images
ps: Set transparency for stencil_masks
test: Move all the reference images to their own directory
test: Write the individual test logs to output/
ps: Fix return value for mask_supported and ps2
ps: Check earlier for a supported mask
test: Mark some more raster-only tests
composite: Reduce an unaligned clip
script: Tag the similar surface rather than snapshot
test: Fix reference image for unbounded operator
build: Add missing cairo-surface-backend-private.h to sources
build: Another missing private.h
check: Make the newly added privates pass make check
image: Invert recording matrix before replay
test: refresh clip-operator ref.png
test: Record the failure of recent freetype libraries for type1 vertical layout
test: Update refernece dir for create-from-png-stream
test: Update couple of refs for the improved mono rasteriser
test: Use the test-traps as the reference images for xlib/xcb
test: Replace xlib reference images with the traps references
fdr,tee: Reorder master/slave invocation to capture death-upon-signals
test: Hack cairo-test-trace to write at trace for all contexts
test: Add bug-bo-ricotz
bentley-ottman: End subsumed colinear traps
test: Update reference images for test-base
base: Make sure we have fuzzy clip boxes!
path: Skip calls to zero-length memcpy
test: Add a1-fill
test: Refresh reference images for spans/traps
image: Use A8 for creating a mask from a recording surface
image: Use the recording surface content for the recording source
wrapper: intersect with target extents
image: intersect the source extents with the replay extents for EXTEND_NONE
test: Record the current status of radial-outer-focus as xfail
composite-rectangle: Add a helper to refine source extents
pdf: Use the helper functions to update the composite rectangles
os2: Blindly update os2 to the new fallback compositor
test: Make cairo_test_suite depend upon the any2ppm exectuable on all platforms
traps: use the customised _cairo_clip_get_surface
xcb: track fallback damage
wrapper: transform the clip into device space
image: clip the replay to the sample extents in device space
image: don't offset by device transform for replay onto source surface
test/trace: Hack to dump out per-context images and traces
test/create-from-png: Update to point to new reference/ images
test: refresh text-pattern reference
test: Exercise scaling from an atlas through a subsurface
test: Redefine success for miter-precision
spans: Fix empty polygon unbounded fixup
test: Refresh tighten-bounds reference image
test: Refresh rotated-clip reference
test: Mark the record-select-font-face as XFAIL
boilerplate: Skip testing of null surfaces
win32: Compile, but broken
script: compile without
polygon-intersect: Remove surplus edge direction
test/random-clips: Paint clip to highlight the issues
test: Refresh reference images
trace: Emit an stack operation to create a pattern from an undefined surface
test: Add line-width-large-overlap
stroke: Use the tessellator to resolve overlapping strokes
image: Enable use of LERP_SRC for masked source composition
fill: Fix unantialiased rectilinear-fill-to-boxes
test: Add clip-rectilinear
gl: Declare coverage input for fragment shaders.
gl: Basic fixes to get cairo-gl running again
gl: Need to increment reference count when copying operands
botor: Remove a couple of inlines to cleanup -Winline
perf
debug-traps
gl: Include use-coverage in shader hash
gl: Spans start after the mask, not coincident!
gl: Remove unused alpha argument from operand_emit
xcb: Re-enable glyph rendering
observer: Fix typo and handle the condition of no script device
mono: Silence valgrind by placing a sentinel value in the sorted buckets
spans: Propagate internal status when retrieving the clip surface
test: Add clip-polygons
surface-clipper: Fix path leak due to typo
clip: Free the freed clip pool on reset
clip: Replace the original clip when transforming
recording-surface: Free the contents of the command array when clearing
recording-surface: Optimize away anything below an opaque fill
spans: Refresh polygon limits after trimming the composite extents
gstate: Prevent leak of old clip when creating a group with translation
recording-surface: Initialize optimize-clears before use in snapshotting
ft: Add missing break to enable BGR subpixel rendering
gl/msaa: Markup the new symbols as private for PLT hiding
xlib: Reduce the composite traps operator for when the dest is clear
xlib-xp
Merge branch 'master' of git://cairographics.org/git/cairo
Merge branch 'master' of git://cairographics.org/git/cairo
gl: Initialize spans on the context
Revert "xcb: Fix xcb-huge-image-shm"
xcb: Handle SHM exhaustion gracefully
perf: Compile fix, add the index to cairo_perf_report_load()
polygon-intersection: Finish any edges upon intersection
image: Only unwrap a subsurface if the sample is fully contained
subsurface: Simplify acquire_source_image
image: Remove dubious "optimisations" for acquired source images
subsurface: And remove the dead code for releasing complex source
xlib: ADD only reduces to SOURCE for alpha-only targets
xlib: Handle subsurfaces correctly
subsurface: Support caching for cloned subsurfaces
surface: Bump reference count around finish
xlib: Cache the subsurface Picture
xlib: Eliminate redundant copies of subsurfaces
gl: Update glyphs to use cairo_gl_source_t
gl: Correctly offset sub-image uploads
gl: Fallback for complex subsurfaces
gl: Avoid cleaning up an uninitialised composite upon UNSUPPORTED
gl: Embed a operand into the surface for pass-through
gl: Prevent the traps compositor from exploding
Convert cairo_mime_surface_t to cairo_raster_source_pattern_t
script: Prefer polymorphorism for mesh path construction
trace: Remove the warning about the unstable format
gl: Temporarily clone a subsurface as required
gl: And enable subsurface caching of the clones
subsurface: Replace any existing snapshot
gl: Even repeating subsurfaces need to be cloned
xcb: Silence a compiler warning for mixing status and internal status enums
doc: Add similar-image, map-to-image, unmap-image
doc: Add sections for cairo-script
script: Add documentation
doc: Add new antialias symbols
doc: add CAIRO_DEVICE_TYPE_COGL
doc: Drop the gtk-doc markup from _cairo_radial_pattern_focus_is_inside
gl: Make the backend struct static
gl: Check against user-provided invalid sizes
gl: Propagate surface texture to embedded operand
gl: Use the embedded operand to allow passing sources around
gl: Embed the operand rather than a pattern into the glyph cache
gl: Decouple glyphs on shutdown from the scaled font caches
gl: Substitute the white source for the default pattern
gl: Propagate clip region
gl: Set the device offset on map-to-image
fallback: fix the offset for painting
gl: Unbreak the glyph cache
gl: Re-enable the CLEAR optimisation
polygon: Assert that we add edges that are wholly contained by the clip
polygon: Tweak the y-coordinates of the edge so that it is inside the clip
test: reference ref images after tweaking polygon clipping
test: Exercise copy/filling unsorted rectangles
gl: Defer stencil allocation until use
gl: Prevent leak of the white source used with glyph masks
doc: Add documentation for cairo_raster_source_pattern
gl: Decouple the glyph upon eviction
gl: Track surface references through operands
gl: Set the destination for swap buffers, required by EGL at least
gl: Disable the msaa compositor by default (for release testing)
perf/chart: Tweak labels on right not to fall off the edge
perf/chart: Show values next to the column if too small to fit inside
perf/chart: Make the columns transculent so that the label behind is visible
test: Add arc-direction
xlib: Do not upload inplace if the image does not match the surface format
xcb: Add dimension guards to create-similar-image
subsurface: Add guards for creating similar surface
xlib: Fix typo in 5045155de6, lack of closing ';'
xlib: Improve choice of bits-per-pixel for depth
xlib: Set IncludeInferiors when using CopyArea
xlib: Set IncludeInferiors when acquiring the source image
xlib: Only reduce a readback of an uninitialised source for pixmaps
gl: Just flush the context upon operand destroy
Replace the ad-hoc surface unwrappers with a function pointer
test: Referesh traps (xlib) reference images for font updates
directfb: Discard long broken code and return to basics
polygon: Extend intersection edges to cover entire range
tor: Restore the 256x15 sampling of the original rasteriser
clip: Check whether an extents only clip contains the box
clip: Apply the partial boxes for clip_combine_with_surface
spans: Pass unbounded operations to the spans compositors
traps: composite_boxes() is not a mask constructor
polygon-intersection: The edge direction is immaterial
gl: Transfer ownership of trapezoid mask to operand
analysis: replace open-coded _cairo_box_add_box()
quartz: Add missing source hook
Add preliminary damage tracking
win32: Move to separate directoy
win32: Rebase on the new compositor infrastructure
win32: Fix lifetime tracking of create_similar_image()
win32: Cast the surface to an image-surface to find its parent (compile fix)
test: Refresh reference images for antialiasing fix
image: Add the get-font-options callback again.
test/README: Update sha1sums for fonts used
test: Update base reference images for new reference font
test: Update traps for changes in reference font
boilerplate/xlib: The xlib-fallback should be visually identical to image
test/xlib: Remove stale reference images
xlib: Replace obsolete disable-xrender with shiny new device debug interface
test: Add a set of reference images for the mask-based compositor
boilerplate/xlib: Exercise the mask based compositor for xrender version 0.0
xlib: Hook up copy_boxes for the mask compositor
mask-compositor: Acquire the target surface when creating the composite mask
traps-compositor: Reduce a complex clip generation to an ADD operator
xlib: Trim the intermediate upload image to match the upload extents
xlib: Correct the device-offset applied to the map-to-image result
xlib: Make the core compositor actually paint
xlib: Trim the ximage to match the trimming of the intermediate
traps-compositor: add a missing release()
script: Update mesh pattern for earlier change of csi operators
image: Tidy reduction to EXTEND_NONE for replay surfaces
surface-wrapper: Transform the clip by the device-transform correctly
xlib-xcb: Wrap cairo_xlib_device_debug_cap_xrender_version
xlib: Tidy conversion of xrender format to cairo_content_t
xlib: Handle window-to-window copies by avoiding the use of a clip region
{mask,traps}-composite: Restore unsetting of the is-clear flags for the mask
image: Handle recursive drawing of recording surface
debug: Add some TRACE statements for recording surfaces and snapshots
recording: Optimize a copy of one recording surface onto another
subsurface: Fix typo in snapshot creation
test: Add a couple of reference images for the recording surface
recording: Remove superfluous reset
test: a1-line-width is a test of rasterisation, so skip for the vector backends
pdf,ps: The device offset only needs to taken into account for raster patterns
test: Verify scaled replay of a recording surface
surface-wrapper: Apply replay transforms to scaled font
test/record: Fix typo in record*-text-transform
test: Set record2x-fill-alpha as an xfail
scaled-font: Key the cache on the original font face
scaled-font: Refactor the hash computation
test: Add record90 to exercise replaying a rotated recording surface
scaled-font: Assign a temporary hash value for the placeholder
test: Regenerate reference images for vanilla record tests
surface-wrapper: Apply the scaled-font ctm and non-default font-options
spans+image: Fix clipping with polygons and spans
gl: Various fixes for glyphs
ft: Remove unused HINT_METRICS from ft_font.extra-flags
ft: Export FreeType synthesis options
spans,traps-compositor: Check for all-clipped after intersecting clip with boxes
test/record1414: Pixel align the clip for replay
base: Remove the double application of the clip boxes
image: Correct origin of unbound recording surface source
spans: Pass antialiasing hint down to the backends
image: Add a fast path for solid-filled polygons
spans: Retrim extents to clipped polygon
image: Perform the general composite operation inplace for mono rasterisation
image: Add a fast-path for mono-rasterised blits
spans: Reduce composite_aligned_boxes with over to source for opaque patterns
spans,image,gl: Add fast-path for simple copies
traps: Use the mono-scan-converter to reduce the number of traps
traps: First attempt to convert curvy unantialiased polygon to scanlines
spans: Handle fallbacks from upload-boxes by reverting to the normal composite
image: Perform the simple solid-fill spans inplace
image: Add a simple inplace blitter for spans
image: Try performing span composition a row at a time
surface-wrapper: Only apply the wrapped transform to the scaled-font
image: Add unbounded support to the mono rasteriser fast-paths
clip: Use the boxes-intersection routine for computing the clip polygon
traps: Avoid double application of unaligned clip boxes
traps: The CompositeTrapezoids requires the unbounded fixup for clipping
xlib: Apply the glyph offset
surface: Relax assertion about not rendering to a snapshot
test: Refresh the fallback-resolution reference images
hash: Keep a simple lut in front of the main hash
bentley-ottmann: Skip intersection check if the bounds do not overlap
bentley-ottmann: Sort by edge bounding boxes before computing x
mono-scan-converter: Use edge->is_vertical flag
stroke: Do not initialise the pen if will not use it
skia: compile fix
test: Restore 'release-verify-sane-tests' makefile target
version: Bump for snapshot 1.11.4
version: Post-release version bump to 1.11.5
Chuanbo Weng (1):
gl: fix bug in _cairo_gl_surface_embedded_operand_init()
Dagobert Michelsen (1):
Use detected EGREP instead of generic grep
Dave Yeo (3):
os2-surface needs to include cairo-image-surface-private.h
Fix the number of parameters for cairo_os2_surface_set_size()
On OS/2, WIFSIGNALED and WTERMSIG are prototyped in sys/wait.h
Ehsan Akhgari (1):
Avoid defining inline when compling C++ on MSVC.
Eric Anholt (4):
gl: Don't reset the FBO draw/readbuffers every time we bind the FBO.
gl: Add a first bit of general documentation on cairo-gl usage.
gl: Take advantage of GLX_MESA_multithread_makecurrent to avoid unbinding.
gl: Bind samplers just once at program compile time.
Haithem Rahmani (1):
boilerplate: Use correct flag type in DFBWindowDescription
Henry (Yu) Song (1):
gl: initialize temporary surface with size same as subsurface
Jeff Muizelaar (5):
Add UINT32_MAX define.
Add an implementation of fmax for use with MSVC
Remove quartz-image extents.
win32: Explain the purpose of the surface extents
Avoid implicit conversion to double when rounding
Jesse Barnes (1):
Expose 30bpp/10bpc support: CAIRO_FORMAT_RGB30
Jesse van den Kieboom (1):
quartz: Rename declaration of _cairo_quartz_create_cgimage
Keith Packard (4):
cairo-xcb: gtk-doc doesn't like _ in parameter names
Create XCB documentation.
Add cairo_xcb_surface_set_drawable
Clip rectangles are not necessarily YSorted
Krzysztof Kosinski (1):
test: Add radial-outer-focus
Krzysztof Kosiński (1):
test: Add test case from bug-40410
M Joonas Pihlaja (1):
image: Avoid reusing pixman images for threadsafety.
Martin Robinson (14):
gl/msaa: Introduce an MSAA compositor for OpenGL
gl/msaa: Implement basic solid color fill
gl/msaa: Add clipping support
gl/msaa: Support for solid color strokes.
gl/msaa: Fix glScissor bounds
gl/msaa: Fix scissor bounds
gl: Fix offset for non-texture surface patterns
gl: Properly prepare the source when compositing glyphs with a mask.
gl/msaa: If stenciling the clip fails, reset the color mask.
gl/msaa: Ignore the antialiasing property of the clip.
gl/msaa: Scissor simple rectangular clips
gl: Fix the offset of non-texture source surfaces
gl: Fix gl-source-surface test
gl/msaa: Do not attach a depth-stencil attachment to the default framebuffer
Matt Peterson (1):
gl: Use cairo_rectangle_int_t
Murray Cumming (2):
cairo: Remove trailing comma from cairo_format_t
cairo_surface_observer_mode_t: Remove trailing comma.
Nis Martensen (24):
Fix typos
Mark the new API as such
doc: Fix pattern name mismatch
doc: fix typo
doc: add missing colons to since tags
doc: typo
doc: add index of new symbols in 1.12
doc: add colon to .._padded_image_from_image
doc: add missing _face to function names
doc: do not confuse gtk-doc by @ and double *
doc: Add colon to Returns statement
doc: script_mode_t needs at least one line of text
doc: fix a few typos found by codespell
doc: preserve whitespace by using docbook screen tag
doc: symbol names in header and comment must match
doc: ensure "compatibility" spelling
doc: move value descriptions up
doc: avoid confusing gtk-doc by double asterisks
doc: describe cairo_recording_surface_get_extents
doc/ft-font: add reference to cairo_ft_synthesize_t
doc/ps-surface: minor improvements
doc/xlib/xcb: document get/set_precision API
doc/xcb: document cairo_xcb_device_get_connection
doc: fix broken link
Oleg Romashin (1):
qt: Fix compilation, also minor fix for building against Qt5
Paulo Zanoni (3):
test: fix append_argv()
test/README: add missing "S"
cairo-test-runner: don't leak argv
Pekka Paalanen (1):
egl: do not destroy dummy_surface if it does not exist
Pino Toscano (1):
LD_PRELOAD is supported on Hurd
Rob Bradford (1):
build: Specify the reference images as a directory for EXTRA_DIST
Robert Bragg (1):
backends: Adds a new Cogl based backend
Seongwon Cho (1):
mono-scan-convertor: Include space for the closing span
Søren Sandmann Pedersen (1):
Include pixman.h in cairo-xlib-private.h
Taekyun Kim (4):
tessellator: Fix boxes tessellator to handle num_boxes <= 1 correctly
tessellator: Fixed to produce an output box with x1 <= x2 for single box input
Fix intersect_with_boxes() to produce tight clip extents
image: Maximum number of spans can be upto (extents->width + 1)
Uli Schlachter (131):
xcb: Fix a BadPicture when clearing a surface
xcb: Automatically enable the backend if the libs are available
xcb: Document all public functions
User fonts: Make it clear what should NOT be freed
scaled font: Fix the docs for cairo_scaled_font_get_font_face
xcb: Limit the amount of SHM used
xcb: Remove a duplicate static function
xcb: Move the allocation of a shm surface into its own function
xcb: Use a normal image surface if SHM fails
XCB: Fix build with xcb-shm disabled
ps: Update xlib-surface-source ref images
xcb-surface-source: Add image16 and ps ref images
Finish devices after their finish callback returns
xcb: Fix a crash when finishing a device
xcb: Remove the surface pattern cache
Fix errors from src/check-plt.sh
arc-looping-dash: Add a missing cairo_restore ()
xcb: Remove some unused code
xcb: Fix for PDF operators with RENDER 0.11
xcb: Remove CAIRO_XCB_RENDER_HAS_COMPOSITE_SPANS
xcb boilerplate: Handle device offsets correctly
xcb: Remove _cairo_xcb_picture_copy
xcb: Never return NULL from create_similar
xcb-drm: Fix undeclared variable error
Add unaligned boxes to "operator-source" test
image: Don't use the fast path if it's wrong
test/Makefile.am: Don't reference non-existant files
Revert "xcb: Never return NULL from create_similar"
XCB: Implement PDF blend operators natively
xcb: Fallback to image surface for create similar
xcb,xlib,surface: Check for too small sizes
xcb: Don't hardcode the RENDER version number
xcb: Prettify some code
xcb: Initialize the new precision fields
xcb: Use defines instead of magic numbers
xlib-xcb: Use slim_hidden_proto correctly
xlib-xcb: Fix api-special-cases test
xlib-xcb: Verify we really have an xcb surface
xlib-xcb: Fix cairo_surface_flush()
xcb: Remove an unused function argument
xlib-xcb: Fix some use-after-free
xlib-xcb: Don't call directly into the xcb backend
Xlib: Fix boilerplate to work with xlib-xcb
xlib-xcb: Register a XCloseDisplay hook
xcb: Move cairo_xcb_picture_t to cairo-xcb-private.h
xcb: Track cairo_xcb_picture_t surfaces
Add a test case that asserts on xcb
xcb: Don't use xcb surfaces as snapshots
Handle CAIRO_STATUS_DEVICE_FINISHED in switches
cairo-trace: Fix mark-dirty with xcb backend
xlib-xcb: Fix an "extension leak"
cairo-xcb: Drop some unused definitions/file
xcb: Fix _set_clip_region for many rectangles
xcb: Fix a GC leak when a screen is finished
xlib-xcb: Fix 'incompatible pointer type' warnings
XCB: Store the flags per-connection only
xcb: Make it possible to undo _cairo_xcb_device_debug_cap_*
Xlib,xcb: Make *_debug_[sg]et_precision() more robust
xcb: Parse $CAIRO_DEBUG just like cairo-xlib does
xcb: Fix a NULL dereference
xcb: Handle deferred_clear in _get_image
xcb: Unset the deferred_clear flag on fallback
xcb: Work around wrong extent computation in the X server
xlib: Fix a typo
xcb: Check that the extents are inside our surface
Make _cairo_xcb_surface_get_extents no_warn
xcb: Assert that pixmap sizes are positive
xcb: Error on 0x0 source surfaces
xcb: Handle deferred clear in map_to_image
xcb: _get_image only works without fallback
xcb: Handle fallback in map_to_image
xcb: Handle deferred clear in _upload_image_inplace
surface_unmap_image: Fix fallback
xlib-xcb: Implement the new backend functions
perf: Also build the code in perf/micro
Clarify the API docs for the newest functions
cairo.h: Document CAIRO_DEVICE_TYPE_INVALID
xlib-xcb: Fix a double free in surface_unmap
map_to_image: Verify the given extents
map-to-image: Handle non-32bpp formats
xcb: Fallback to image if allocating SHM fails
xcb: Merge two functions for creating shm images
test: Add a test that maps a huge surface
xcb: Handle SHM exhaustion via falling back
xcb-shm: Fix a logic error while allocating mem
test: Add tighten-bounds
xcb: Add an assert for the tighten-bounds test
xcb: Fix fallback for *_shm_put_image
xcb: Skip drawing if bounded extents are empty
xcb: Fix fixup_unbounded_with_mask
xcb: Steal from the pending list for GetImage
cairo_clip_path_t: Remove extents
xcb: Remove some dead code
xlib-xcb: Make this compile again
Tee: compile fix for recent compositor API
Revert "xcb: Error on 0x0 source surfaces"
xcb: Improve error cases in _clip_and_composite_combine
cairo-xcb: Require libxcb 1.6
boilerplate-xcb: Print sequence numbers
path: Fix a minor oversight in 1ce5d4707cf26061
_cairo_clip_get_surface(): Don't lose errors
xcb: Stop using _cairo_clip_get_surface()
xcb: Use a mask in _composite_boxes() when needed
xcb: Remove an unused variable
xcb: Don't try to fallback more than once
xcb: Honor clips for defer clear
xcb: Fix a "incompatible pointer" compiler warning
xcb: Fix device offsets with unmap_image()
test: Add mime-surface-api
Make the new mime-surface-api succeed
xlib: Fix compilation with --disable-xlib-xrender
create-from-png*: Test mark_dirty with mime data
flush: Detach mime data
test: Add clip-double-free
clip: Fix clip-double-free
clip_intersect_boxes: Fix memleak
test: Add text-antialias-subpixel-{,v}{bgr,rgb}
xcb: Fix some invalid casts
xcb: Fix xcb-huge-image-shm
xcb: Fixup some internal state in set_{drawable,size}
xlib-xcb: Implement surface_set_drawable
xcb: Fix invalid casts from cairo_content_t to cairo_format_t
xcb: Silence a compiler warning for mixing type and internal type enums
xcb: Silence compiler warnings about ignored return values
xcb: Move the surface picture setup into its own function
xcb: Add a special case for recording surface
xcb: Use int instead of uint16_t for rowstride
xlib-xcb: Make this compile again
Wrapper: Don't translate clips extents' origin
Fix docs for cairo_xlib_device_debug_cap_xrender_version
xlib-xcb: Fix make check
Zhigang Gong (1):
mono: Always bias initial edge advancement
From: Chris Wilson <chris@chris-wilson.co.uk>
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.11.2 now available
A new cairo snapshot 1.11.2 is now available from:
http://cairographics.org/snapshots/cairo-1.11.2.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.11.2.tar.gz.sha1
40b9e1066fcd33c2aeecd800764b1aa5a0ac7bde cairo-1.11.2.tar.gz
http://cairographics.org/snapshots/cairo-1.11.2.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.11.2 tag which points to a commit named:
ac9ee388faf3c8c5df502f6cc7b039f043154954
which can be verified with:
git verify-tag 1.11.2
and can be checked out with a command such as:
git checkout -b build 1.11.2
Snapshot 1.11.2 (2011-01-23)
===========================
In this first snapshot along the way to cairo-1.12.0, we are very excited
to announce the introduction of Bezier surface gradients, known as type
6/7 gradients in PS/PDF parlance. This is the culmination of much work by
the dynamic duo: Adrian Johnson and Andrea Canciani. Thanks guys!
Also, I want to warmly welcome Uli Schlachter who recently joined the
Cairo community on a mission. That mission is to make cairo-xcb a
supported backend for 1.12. And for this snapshot he has made great
strides in fixing all the bugs I had left behind. Thanks Uli!
And we have also seen a new contributor, Alexandros Frantzis, who has
begun bringing up cairo-gl for GLESv2 devices. Thanks Alex!
And lastly, I must also thank Adrian and Andrea for the vast numbers of
bugs that they have tackled between them, fixing all those little corner
cases that lie hidden until too late.
-Chris
API additions:
The ability to construct piece-wise Bezier surface gradients:
cairo_pattern_create_mesh
constructs a pattern of type CAIRO_PATTERN_TYPE_MESH using
cairo_pattern_mesh_begin_patch
cairo_pattern_mesh_end_patch
cairo_pattern_mesh_curve_to
cairo_pattern_mesh_line_to
cairo_pattern_mesh_move_to
cairo_pattern_mesh_set_control_point
cairo_pattern_mesh_set_corner_color_rgb
cairo_pattern_mesh_set_corner_color_rgba
cairo_pattern_mesh_get_patch_count
cairo_pattern_mesh_get_path
cairo_pattern_mesh_get_corner_color_rgba
cairo_pattern_mesh_get_control_point
The introduction of a unique ID accessible via the mime data type:
CAIRO_MIME_TYPE_UNIQUE_ID
List of all changes between 1.10.0 and 1.11.2
---------------------------------------------
Adrian Johnson (74):
Fix font metrics in PDF Type 1 fonts
Add capability for font subsets to put latin glyphs in a separate subset
pdf-operators: output (abc) style strings when font is latin
Return latin to glyph mapping in cairo_scaled_font_subset_t
Add winansi glyph names
Type 1 subsetting: add support for latin subsets
Type 1 fallback: add support for latin subsets
PS: Enable support for latin subsets
TrueType subsetting: embed a cmap for latin subsets
PDF: Add support for latin subsets
pdf-operators: fix bug that was causing unnecessary repositioning of text
Fix font metrics in PDF Type 1 fonts
pdf-operators: fix bug that was causing unnecessary repositioning of text
pdf-operators: word wrap latin text strings
Don't embed cmap in TrueType fonts embedded in PostScript
CFF subset: add support for latin subsets
PS: Allow %%BoundingBox and %%PageBoundingBox to be overriden using DSC comments
remove unused variable
Fix bug in subsetting check for winansi characters
Don't put Type3 glyphs in latin subsets
Refresh ft-show-glyphs-positioning pdf ref image
Rewrite pdf-operators word wrapping
PDF: Fix regression in EXTEND_NONE gradients
PS: Remove redundant code
PDF: Remove radial gradient fallback
PS: Remove radial gradient fallback
Type 1 subset: Fix glyph advance
PDF: Fix regression in EXTEND_NONE gradients
Type 1 subset: Fix glyph advance
PDF: Don't use the currently set color after a 'Q' operator
PDF: Don't use the currently set color after a 'Q' operator
PDF: Use correct bfchar size in toUnicode for latin fonts
CFF Subset: Remove debug code
configure.ac.features: s/Meta/Recording/
Fix type1-fallback bbox
Move glyph names into separate file
Type 1 glyph names: Do not use an array of pointers for winansi glyph names
PDF: Fix toUnicode for CID fonts
PDF: Restrict ActualText to PDF version >= 1.5
win32: Use a font_face hash table to provide unique font faces
win32-print: print as unicode where possible
win32: fix font_face hashing
PS/PDF: Fix regression when changing page size to a larger size
PS: Fix regression - missing page content in EPS output
PS: Fix regression - incorrect EPS bounding box
Fix regression in fallback-resolution test
configure.ac.features: s/Meta/Recording/ (cherry picked from commit 8f2f5e5ad4f8e5f18da903865bb2d2afce3a544e)
Fix type1-fallback bbox (cherry picked from commit 74873c82242e9c124b69e05d0f8abdf78983d62d)
PDF: Restrict ActualText to PDF version >= 1.5
PS/PDF: Fix regression when changing page size to a larger size
PS: Fix regression - missing page content in EPS output
PS: Fix regression - incorrect EPS bounding box
Add unique_id mime type
Use fallback font for synthetic fonts
win32: add synthetic font subsetting support
Document load_truetype_table function and ensure ft-font and Win32-font are compliant
Check table size in cairo_truetype_get_style()
Automate error checking for ps-eps test
Fix xml-surface use of load_truetype_font
Check is_synthetic() font backend exists before calling it
PDF: Add missing clipper_reset
Truetype subset: add missing unicode ranges to cmap
PDF: Add missing clipper_reset (cherry picked from commit 2ae2be36d4551906fd4edbc8bf07aaa7fe0c93cf)
Fix fallback-resolution test
Boilerplate: Set fallback resolution using force_fallbacks function
Change fallback resolution test to use resolutions in multiples of 72
CFF subset: fix subsetting of Euro glyph
CFF subset: fix bug with euro glyph in fallback fonts
CFF Subsetting: Subset subroutines
PDF: Output a stencil mask for cairo_mask() with solid source and A1 mask
mesh: Add mesh pattern type and enum values
pdf,ps: Add native mesh pattern support
pattern: Add public mesh pattern API
test: Add tests for mesh patterns
Alexandros Frantzis (10):
gl: Add functions to query GL version and extensions
gl: Add infrastructure for calling GL functions using a dispatch table
gl: Embed the GL dispatch table in the cairo-gl context and initialize it.
gl: Add definitions for the core variant names of used GL constants
gl: Use the dispatch table for calling ARB/EXT functions
gl: Use the GL core 2.0 shader implementation for both GL 1.x ARB and GL 2.x
gl: Remove GL 1.x ARB shader implementation
gl: Replace GLEW by using the facilities provided by cairo-gl-info
gl: Remove GLEW from the build system and the source tree
gl: Fix condition that prevents setting the size of window surfaces
Andrea Canciani (179):
test: do not leak resources
image: add _cairo_image_reset_static_data
test: do not leak resources
xcb: Do not return value in void function
quartz: Remove unused argument from _cairo_surface_to_cgimage
quartz: Assert upon invalid enum values
quartz: Check for valid patterns
quartz: Don't typecast surfaces
quartz: Fix function call coding style
quartz: Mark failures as unlikely
quartz: Whitespace cleanup
quartz: Beautify code
quartz: Use NOTHING_TO_DO instead of SUCCESS where appropriate
quartz: Simplify cairo_quartz_surface_create_for_cg_context
quartz: Remove useless code
quartz: Improve handling of surface creation failure
quartz: Improve _cg function types
quartz: Handle failures in _cairo_quartz_setup_fallback_source
test: Make tests run in natural order
test: Add a new test result html page
test: Remove old html infrastructure
test: Update ref images for radial tests
quartz: Remove linear gradient fallback
quartz: Make radial gradients follow PDF specification
quartz: Remove unused code
Add _cairo_rectangle_union
quartz: Improve gradient consistency
quartz: Fix EXTEND_PAD gradients
quartz: Improve gradient quality
quartz: Remove DO_NOTHING and DO_UNSUPPORTED actions
quartz: Set operator when setting up source
quartz: Unify DO_SOLID and DO_PATTERN
quartz: Unify DO_SHADING, DO_IMAGE and DO_TILED_IMAGE
quartz: Move drawing state out of surface
quartz: Cleanup gradient setup functions
quartz: Remove unused imageSurface field
test: Add romedalen images copyright information
test: Fix get-path-extents
path: Replace _cairo_path_fixed_is_equal with _cairo_path_fixed_equal
path: Do not access flags directly
path: Improve hashing
path: Make path equality independent of flags
path: Rename _cairo_path_last_op to _cairo_path_fixed_last_op
path: Add utility functions
path: Simplify close_path
path: Cleanup _cairo_path_fixed_line_to
box: Add box header
box: Add _cairo_box_add_curve_to
path: Move _cairo_path_fixed_add at the end of line_to and curve_to
path: Drop degenerate line_to in _cairo_path_fixed_curve_to
path: New path construction logic
path: Add stroke_is_rectilinear flag
path: Rename fill optimization flags
path: Log flags
path: Cleanup _cairo_path_fixed_transform
path: Cleanup _cairo_path_fixed_iter_at_end
path: Make _cairo_path_fixed_last_op assert on empty path
path: Cleanup close_path
path: Recompute flags in _cairo_path_fixed_translate
path: Transform current_point and last_move_to in _cairo_path_fixed_scale_and_offset
path: Recompute flags in _cairo_path_fixed_scale_and_offset
path: Fix _cairo_path_fixed_transform
path: Replace _cairo_path_fixed_extents_add with _cairo_box_add_point
Fix degenerate arcs
path: Tighten curve_to extents
path-bounder: Simplify code
path: Tighten transformed extents
drm: Do not access path flags directly
path: Solve co-dependency problem
cff: Fixes for 'make check'
script: Fix compilation
quartz-font: Add truetype font table tags accessor
quartz-font: Do not leak CFDataRef's
image: Use correct size for allocation
image: Use correct size for allocation
configure: Correct reporting of tee backend
quartz-font: Implement new load_truetype_table semantics
ps: Fix painting
ps: Fix painting
array: Remove snapshot support
array: Add read-only accessor
array: Cleanup types
configure: Correct reporting of tee backend
Fix degenerate arcs
test: Add romedalen images copyright information
xcb: Do not return value in void function
array: Silence warnings
pdf: Silence compiler warnings
array: Fix comment
test: Add rectilinear-grid
image: Fix compositing of unaligned boxes
image: Fix _pixel_to_solid
test: Fix ref images
test: Add rectilinear-grid
image: Fix compositing of unaligned boxes
test: Fix ref images
test: Handle crashed tests
arc: Avoid infinite loop
arc: Clamp to 65536 full circles
test: Add arc-looping-dash
test: Add arc-infinite-loop
surface: Remove _cairo_surface_fill_rectangle
pdf: Use composite rectangles in fill_stroke
surface: Remove _cairo_surface_*_extents
path: Cleanup unused current_point
path: Always interpret in forward direction
path: Remove support for inverse direction interpretation
fill: Simplify path to polygon conversion
polygon: Merge _cairo_polygon_init and _cairo_polygon_limit
test: Update reference images list
pdf: Use switch instead of multiple if's
ps: Use switch instead of multiple if's
pattern: Specialise signatures of pattern specific functions
pattern: Improve extents computation of radial gradients.
ps, pdf, pattern: Implement _cairo_pattern_alpha_range to analyse patterns.
ps: Avoid unneeded fallbacks for gradients with opaque stops.
pattern: Compute a covering parameter range of a gradient for a box.
pattern: Use pattern parameter range when analysing all gradients.
pattern: Add a function to interpolate gradient objects.
quartz: Unify gradient construction and fix radial gradients.
pdf: Unify gradient emitters and support all extend modes.
ps: Unify gradient emitters and support all extend modes.
ps,pdf: Deal with empty domain gradients.
test: Update ref images
path: Silence warnings
test: Add bug-extents
path-bounder: Update current point after curve_to op
test: Add bug-extents
gl: Fix #include's to pass 'make check'
quartz: Clean up dynamically loaded functions
quartz: Don't dynamically load unused functions
quartz: Use native PDF blend modes
Keep makefiles in alphabetical order
gstate: Disallow incomplete mesh gradient sources
Add mesh gradient rasterizer
script: Add support for mesh patterns
test: Extend pattern-get-type and pattern-getters for mesh patterns
doc: Add documentation for the mesh API
pattern: Remove unused 'opaque' variable
pattern: Use cairo_color_stop_t when hashing gradient stops
pattern: Make functions not used elsewhere static
test: New radial-gradient tests
matrix: Cairo matrix to pixman transform/offset conversion
test: Make huge-* test gradients not within pixed_fixed_t range
pattern: Factor out pattern rescaling
test: Huge means more than MAX_INT
pattern: Use double precision for gradient extreme objects
matrix: Fix warnings about documentation by 'make check'
pattern: Remove unused _cairo_pattern_size function
xcb: Correct handling of index 0 glyphs
xcb: Stricter glyph validation
xcb: Handle a wider range of glyph positions
xlib: Handle a wider range of glyph positions
doc: Add links to flush() and mark_dirty() in direct access functions
test: Add white-in-noop
test: Add missing ref image to REFERENCE_IMAGES
Fix optimization of white IN dest compositing
xcb: Add a short comment to the Picture cache
mesh: Do not declare min and max functions
gl: Ensure that gl surface resizes are properly applied
gl: Update radial gradient implementation
gl: Don't ignore offset for gradient sources
pdf,ps,quartz: Use correct tolerance for gradient domain computation
Add a results.tar.gz target to the test Makefile
test: Fix operator-alpha-alpha
test: Update quartz ref images
quartz: Use standard stack allocation size
quartz: Make huge domain handling more stable
quartz: Do not use opaque patterns as masks
quartz: Cleanup extents computation
quartz: Use CGLayer to implement unbounded operators
quartz: Avoid using private APIs
quartz: Respect pattern filter settings
test: Workaround pixman limits in large-source-roi
Bump pixman requirements to 0.20.2 for radial gradients
clip: Improve _cairo_clip_contains_*
test: Add group-state
gstate: Set an error status when restoring a push_group
gstate: Remove unused code
Behdad Esfahbod (2):
Fix typo
Add note re gtk-doc.make
Benjamin Otte (4):
build: Don't build cairo-fdr when the tee surface is off
build: Don't build cairo-fdr when the tee surface is off
xlib: Add more _cairo_error() calls
xcb: Add more _cairo_error() calls
Carlos Garcia Campos (4):
doc: Add section for recording surface
recording: Add section doc comments
recording: Fix cairo_recording_surface_create() doc comments
recording: Document CAIRO_HAS_RECORDING_SURFACE macro
Chris Wilson (31):
version: 1.10.1 open for bugfixing
configure: Fix typo "(requires both --enable-xcb)"
cairo: Remove trailing comma from cairo_device_t
drm: Add missing header file for tarball
version: 1.11.1
image: Silence a compile warning
test: Add a8-clear
image: The a8 in-place span compositing is only valid for SOURCE
Merge branch '1.10'
xcb: Correct a minor typo prevent an assert from firing
xcb: Fix reduction of clipping for bounded glyphs.
xcb,image: Fix a missing clip fini
xcb: Pass clip to composite_glyphs_via_mask
perf: Only print description once per backend
configure: Remove noisy -Wlogical-op
drm/intel: Drop the bo cache.
pdf: Silence compiler for an impossible case
wgl: Use CreateWindowA with an ASCII string
scaled-font: assert that we hold the scaled-font mutex when looking up glyphs
test/arc-infinite-loop: Random return value fun.
gl: Enable PLT symbol hiding for dispatch entries
Add a KNOWN_ISSUES file to track WONTFIX(?) bugs
NEWS: Add entry for 1.10.2
version: Bump for 1.10.2 release
version: Post release version bump
xcb: Apply a clip region for compositing many-pixel-aligned-boxes
xcb: Prefer RenderFillRectangles to perform the deferred clear
Makefile: add missing cairo-box-private.h
Merge branch '1.10' into tmp
NEWS: 1.11.2 snapshot
version: Bump for 1.11.2 snapshot
Eric Anholt (1):
gl: Avoid using gl_FragCoord for linear gradients.
Erik Zeek (2):
Fix build on gentoo
Fix build on gentoo
Jeff Muizelaar (2):
Fix degenerate vertical path bounds.
Sync get-path-extents test with the one on 1.10.
Joerg Sonnenberger (2):
LD_PRELOAD is supported on DragonFly.
LD_PRELOAD is supported on DragonFly.
Koji Otani (2):
PS: fix embedding of grayscale jpegs
PS: fix embedding of grayscale jpegs
Kouhei Sutou (1):
xml: fix a typo to correct the indentation after <path></path>
Maarten Bosmans (2):
doc: Add a remark about toy status of the PNG API
doc: Fix some broken references and gtk-doc warnings
Markus Stange (2):
Fix type of _cairo_memory_stream_destroy parameter
Fix type of _cairo_memory_stream_destroy parameter
Mats Palmgren (1):
win32: Improve error logging
Robert O'Callahan (1):
tee: Do not apply two times the master device transform
Tim Janik (1):
cairo: docu fix for cairo_set_source_surface
Tomá\u0161 Chvátal (1):
Fix posix calls in configure.ac test code.
Uli Schlachter (40):
XCB: Fix some weird code
xcb: Fix CAIRO_OPERATOR_IN
xcb: Fix compiler warning about unused result
xcb: Correctly clear the composite surface
_cairo_xcb_surface_ensure_picture: Check fallback
_cairo_xcb_surface_picture: Check for fallback
xcb: Correctly handle ARGB visuals
Add myself to AUTHORS
XCB: Remove an incorrect clipping optimizations
XCB: Move the assert from 5a0f8f7320c916c
XCB: Fix for all unbounded operators
XCB: Use consistent rounding modes for a1 rasterisation.
font options: Add private round_glpyh_positions field
Actually implement round_glpyh_positions
raster backends: Set round_glpyh_positions to ON
Other backends: Set round_glyph_positions to OFF
xcb: Do not access flags directly
xcb: Fix transformation matrix setting
XCB: Check screen size in boilerplate
_cairo_round: Fix documentation
Make both versions of _cairo_lround consistent again
test/README: Change suggested screen size
xcb: Handle deferred_clear in _copy_to_picture
Avoid some unneeded 'is_clear = FALSE'
xcb: Work around wrong extent computation in the X server
xcb: Remove a wrong optimization
XCB: Stop taking the xcb socket
Verify that surfaces leak no snapshots
Detach snapshots after flushing in cairo_surface_finish()
Remove an unused field from cairo_xcb_shm_info_t
Switch the order of two functions in the C file
XCB: Make sure SHM memory isn't reused too early
xcb: Handle events in boilerplate
xcb: Add a define for some magic number
xcb: Only print the first error and ignore subsequent ones
xcb: Check harder for X11 errors in boilerplate
xcb: Check the check for errors in boilerplate
xcb: Fix premature pixmap free in boilerplate cleanup
Add a test case for a bug in the xcb backend
xcb: Don't finish snapshots when they are detached
From: Chris Wilson <chris@chris-wilson.co.uk>
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, ftp-release@lists.freedesktop.org
Subject: cairo release 1.10.2 now available
Happy New Year everybody! Here's a belated announcement:
A new cairo release 1.10.2 is now available from:
http://cairographics.org/releases/cairo-1.10.2.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.10.2.tar.gz.sha1
ccce5ae03f99c505db97c286a0c9a90a926d3c6e cairo-1.10.2.tar.gz
http://cairographics.org/releases/cairo-1.10.2.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.10.2 tag which points to a commit named:
4938e11ffe11781e4e294092807ebc67f362eac6
which can be verified with:
git verify-tag 1.10.2
and can be checked out with a command such as:
git checkout -b build 1.10.2
Release 1.10.2 (2010-12-25 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
The cairo community is pleased to announce the 1.10.2 release of the
cairo graphics library. This is the first update to cairo's stable 1.10
series and contains a large number of bug fixes.
While many people have contributed and have help to test the release,
2 people deserve special recognition for their efforts in tracking down
and fixing bugs, Andrea Canciani and Adrian Johnson. Thanks to their
tremendous efforts, and of all cairo contributors, it is much
appreciated.
We recommend everyone upgrade to cairo 1.10.2 and hope that everyone
will continue to have lots of fun with cairo!
-Chris
Bug fixes
---------
Fix embedding of grayscale jpegs in PS.
https://bugs.freedesktop.org/show_bug.cgi?id=31632
Fix the reported path of extents containing a curve.
Fix the compositing of unaligned boxes.
Reset the clipper in PDF upon finish.
Fix degenerates arcs to become a degenerate line.
Build support for autoconf 2.67
Fix painting of transformed patterns in PS
Fix the EPS bounding box for PS
https://bugs.freedesktop.org/show_bug.cgi?id=24688
Fix the missing content for EPS
https://bugs.freedesktop.org/show_bug.cgi?id=24688
Fix regression upon changing page size in PS/PDF
https://bugs.freedesktop.org/show_bug.cgi?id=24691
Only use ActualText with PDF-1.5 documents
Fix the bbox for type1 fallbacks.
Reset the color after ending the context in PDF
https://bugs.freedesktop.org/show_bug.cgi?id=31140
Fix the advance of subsetted type1 fonts
https://bugs.freedesktop.org/show_bug.cgi?id=31062
Fix handling of EXTEND_NONE gradients for PDF
Restrict in-place optimisation for a8 image masks with SOURCE
List of all changes between 1.10.0 and 1.10.2
---------------------------------------------
Adrian Johnson (12):
Fix font metrics in PDF Type 1 fonts
pdf-operators: fix bug that was causing unnecessary repositioning of text
PDF: Fix regression in EXTEND_NONE gradients
Type 1 subset: Fix glyph advance
PDF: Don't use the currently set color after a 'Q' operator
configure.ac.features: s/Meta/Recording/ (cherry picked from commit 8f
Fix type1-fallback bbox (cherry picked from commit 74873c82242e9c124b6
PDF: Restrict ActualText to PDF version >= 1.5
PS/PDF: Fix regression when changing page size to a larger size
PS: Fix regression - missing page content in EPS output
PS: Fix regression - incorrect EPS bounding box
PDF: Add missing clipper_reset (cherry picked from commit 2ae2be36d455
Andrea Canciani (14):
test: do not leak resources
image: add _cairo_image_reset_static_data
test: do not leak resources
image: Use correct size for allocation
ps: Fix painting
configure: Correct reporting of tee backend
Fix degenerate arcs
test: Add romedalen images copyright information
xcb: Do not return value in void function
test: Add rectilinear-grid
image: Fix compositing of unaligned boxes
test: Fix ref images
test: Add bug-extents
path-bounder: Update current point after curve_to op
Benjamin Otte (1):
build: Don't build cairo-fdr when the tee surface is off
Carlos Garcia Campos (4):
doc: Add section for recording surface
recording: Add section doc comments
recording: Fix cairo_recording_surface_create() doc comments
recording: Document CAIRO_HAS_RECORDING_SURFACE macro
Chris Wilson (10):
version: 1.10.1 open for bugfixing
configure: Fix typo "(requires both --enable-xcb)"
cairo: Remove trailing comma from cairo_device_t
drm: Add missing header file for tarball
image: Silence a compile warning
test: Add a8-clear
image: The a8 in-place span compositing is only valid for SOURCE
Add a KNOWN_ISSUES file to track WONTFIX(?) bugs
NEWS: Add entry for 1.10.2
version: Bump for 1.10.2 release
Erik Zeek (1):
Fix build on gentoo
Jeff Muizelaar (1):
Fix degenerate vertical path bounds.
Joerg Sonnenberger (1):
LD_PRELOAD is supported on DragonFly.
Koji Otani (1):
PS: fix embedding of grayscale jpegs
Kouhei Sutou (1):
xml: fix a typo to correct the indentation after <path></path>
Markus Stange (1):
Fix type of _cairo_memory_stream_destroy parameter
Tim Janik (1):
cairo: docu fix for cairo_set_source_surface
Tomáš Chvátal (1):
Fix posix calls in configure.ac test code.
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon, 06 Sep 2010 18:56:33 +0100
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, pr@lwn.net
Subject: cairo release 1.10.0 now available
A new cairo release 1.10.0 is now available from:
http://cairographics.org/releases/cairo-1.10.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.10.0.tar.gz.sha1
efe7e47408d5188690228ccadc8523652f6bf702 cairo-1.10.0.tar.gz
http://cairographics.org/releases/cairo-1.10.0.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.10.0 tag which points to a commit named:
cb0bc64c16b3a38cbf0c622830c18ac9ea6e2ffe
which can be verified with:
git verify-tag 1.10.0
and can be checked out with a command such as:
git checkout -b build 1.10.0
The cairo community is astounded (and flabbergast) to finally announce
the 1.10.0 release of the cairo graphics library. This is a major update
to cairo, with new features and enhanced functionality which maintains
compatibility for applications written using any previous major cairo
release, (1.8, 1.6, 1.4, 1.2, or 1.0). We recommend that anybody using
a previous version of cairo upgrade to cairo 1.10.0.
One of the more interesting departures for cairo for this release is the
inclusion of a tracing utility, cairo-trace. cairo-trace generates a
human-readable, replayable, compact representation of the sequences of
drawing commands made by an application. This can be used to inspecting
applications to understand issues and as a means for profiling
real-world usage of cairo.
The traces generated by cairo-trace have been collected in
git://git.cairographics.org/git/cairo-traces
and have driven the performance tuning of cairo over the last couple of
years. In particular, the image backend is much faster with a new
polygon rasterisation and a complete overhaul of the tessellator. Not
only is this faster, but also eliminates visual artifacts from
self-intersecting strokes. Not only has cairo-trace been driving
performance improvements within cairo, but as a repeatable means of
driving complex graphics it has been used to tune OpenGL, DDX, and
pixman.
Cairo's API has been extended to better support printing, notably
through the ability to include a single compressed representation of an
image for patterns used throughout a document, leading to dramatic file
size reductions. Also the meta-surface used to record the vector
commands compromising a drawing sequence is now exposed as a
CAIRO_SURFACE_TYPE_RECORDING, along with a new surface that is a child of a
larger surface, CAIRO_SURFACE_TYPE_SUBSURFACE. One typical usage of a
subsurface would be as a source glyph in a texture atlas, or as a
restricted subwindow within a canvas.
Cairo's API has also resurrected the RGB16 format from the past as
the prevalence of 16-bit framebuffers has not diminished and is a
fore-taste of the extended format support we anticipate in the future.
Increasing cairo's utility, we introduce the cairo_region_t for handling
sets of pixel aligned rectangles commonly used in graphics applications.
This is a merger of the GdkRegion and the pixman_region_t, hopefully
providing the utility of the former with the speed of the latter.
Furthermore cairo has been reworked to interoperate more closely with
various acceleration architectures, gaining the ability to share
those hardware resources through the new cairo_device_t. For instance,
with the new OpenGL backend that supersedes the Glitz backend, hardware
and rendering operations can be shared between a classic OpenGL
application mixing libVA for the hardware assisted video decode with
cairo for high quality overlays all within the same OpenGL canvas.
Many thanks for the hard work of Adrian Johnson, Andrea Canciani, Behdad
Esfahbod, Benjamin Otte, Carl Worth, Carlos Garcia Campos, Chris Wilson,
Eric Anholt, Jeff Muizelaar, Karl Tomlinson, M Joonas Pihlaja, Søren
Sandmann Pedersen and many others that have contributed over the last
couple of years to cairo. Thank you all!
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon, 16 Jul 2010 13:22:33 +0100
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.9.14 now available
Snapshot 1.9.14 (2010-07-26)
============================
A quiet couple of weeks, hopefully Cairo is seeing widescale deployment and
we are being to see the results of the stabilisation effort. Clipping bugs
seems to have been the order of the last couple of weeks, with a couple
reported and duly fixed. Thank you Igor Nikitin and Karl Tomlinsion for
finding those regressions. At this point all that seems to remain to do is
to fix the outstanding regressions in the PDF backend...
-Chris
Bugs fixes
----------
Clip doesn't work for text on the image backend
https://bugs.freedesktop.org/show_bug.cgi?id=29008
Add explicit dependency for cxx
https://bugs.freedesktop.org/show_bug.cgi?id=29114
Fix regressions in reporting clip extents
https://bugs.freedesktop.org/show_bug.cgi?id=29120
https://bugs.freedesktop.org/show_bug.cgi?id=29121
https://bugs.freedesktop.org/show_bug.cgi?id=29122
https://bugs.freedesktop.org/show_bug.cgi?id=29124
https://bugs.freedesktop.org/show_bug.cgi?id=29125
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon, 12 Jul 2010 12:48:33 +0100
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.9.12 now available
A new cairo snapshot 1.9.12 is now available from:
http://cairographics.org/snapshots/cairo-1.9.12.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.9.12.tar.gz.sha1
486a0b6855aa63bcb333f6ac63307ae8647035ba cairo-1.9.12.tar.gz
http://cairographics.org/snapshots/cairo-1.9.12.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.9.12 tag which points to a commit named:
aa4cd8287f47b4538e765e1b48dcbac19813a8a2
which can be verified with:
git verify-tag 1.9.12
and can be checked out with a command such as:
git checkout -b build 1.9.12
Snapshot 1.9.12 (2010-07-12)
============================
A couple of weeks spent fixing those annoying bugs and cleaning up the build
system; the list of outstanding tasks to complete for the stable release is
finally shrinking. The chief bug fixer has been Benjamin Otte who not only
made sure that the public API is consistent and being tested for its
consistency, but also ensured that the documentation was up-to-date and
spent time clarifying cases where even the Cairo developers have come
unstuck in the past. Many thanks, Benjamin. However, he was not alone,
as Andrea Canciani continued his fine work in isolating broken corner cases
and proceeding to fix them, and tidying up the quartz backend. And last, but
definitely not least, M Joonas Pihlaja tried building Cairo across a
perverse range of systems and fixed up all the loose bits of code that came
unravelled. Thanks everybody!
-Chris
API Changes
-----------
cairo_surface_set_mime_data, cairo_surface_get_mime_data:
The length parameter is now an unsigned long (as opposed to an unsigned
int). The parameter is intended to be an equivalent to a size_t without
requiring POSIX types and be large enough to store the size of the
largest possible allocation.
cairo_gl_surface_create_for_texture:
This a new surface constructor for cairo-gl that explicitly enables
render-to-texture for foreign, i.e. application, textures.
cairo_region_xor, cairo_region_xor_rectangle
A couple of utility routines add to the region handling interface for
the purpose of replacing existing GdkRegion functionality.
Bugs fixes
----------
https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622
Inkscape was caught in the act of attempting to modify a finished surface.
Unfortunately, we had the ordering of our guards and assertions wrong and
so an ordinary application error was triggering an assert in Cairo. This
lead Benjamin to add a test case to ensure that the entire public API
could handle erroneous input and then proceeded to fix a whole slew of
uncovered bugs.
https://bugs.freedesktop.org/show_bug.cgi?id=28888
A regression introduced by the special casing of uploading images to an
xlib surface in-place which was ignoring the translation applied to the
image.
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sat, 26 Jun 2010 15:06:33 +0100
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.9.10 now available
A new cairo snapshot 1.9.10 is now available from:
http://cairographics.org/snapshots/cairo-1.9.10.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.9.10.tar.gz.sha1
17062d7562d763234551e9e07be7c4c51686306f cairo-1.9.10.tar.gz
http://cairographics.org/snapshots/cairo-1.9.10.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.9.10 tag which points to a commit named:
0f1ff0daab7259ec16076f788760da4f35cb0cdc
which can be verified with:
git verify-tag 1.9.10
and can be checked out with a command such as:
git checkout -b build 1.9.10
The first "quick" snapshot in the run up to the stable release. The
last snapshot was picked up by the bleeding edge distributions and so the
bug reports have to started to roll in. The most frequent of these are the
introduction of rendering errors by applications that modify a surface
without subsequently calling cairo_surface_mark_dirty(). Make sure the
application developers are aware of increased reliance on strict use of the
Cairo API before 1.10 is released!
The usual slew of bugs reported and we would like to thank Zoxc for
contributing the WGL interface for cairo-gl, and finding more build
failures on win32. And it just wouldn't be a 1.9 snapshot unless
Benjamin Otte improved the error handling within cairo-gl, as well as
isolating and fixing some more errors in the test suite. The biggest bug of
the snapshot turned out to be a major sign extension issue that had lain
hidden for many years and was suddenly exposed by incorrectly rounding
rectangles when performing non-antialiased rendering. Also to the relief
of many we have included the downstream patch to honour the user's LCD
filtering preferences for subpixel rendering of fonts. The interface
remains private for the time being, whilst the proposed public API is
finalized.
-Chris
API additions
-------------
None
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun, 13 Jun 2010 12:26:33 +0100
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.9.8 now available
A new cairo snapshot 1.9.8 is now available from:
http://cairographics.org/snapshots/cairo-1.9.8.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.9.8.tar.gz.sha1
25f1a445ac0e2b33355ab9bc046b4ee7639554a1 cairo-1.9.8.tar.gz
http://cairographics.org/snapshots/cairo-1.9.8.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.9.8 tag which points to a commit named:
3a20b10cd0d94406fbd5fe3bb3d4820a95364537
which can be verified with:
git verify-tag 1.9.8
and can be checked out with a command such as:
git checkout -b build 1.9.8
One major API change since the last snapshot, and a whole slew of bugs
fixed and inconsistencies eliminated. Far too many bugs fixed to
individually identify. We need to thank Benjamin Otte for his fantastic
work on the cairo-gl backend making it faster and more robust, Andrea
Canciani for finding so many bugs and developing test cases for them, as
well fixing them. And last but not least we must all thank Adrian Johnson for
continuing to eliminate bugs and improving the PostScript and PDF backends.
This snapshot represents almost 4 months of bug fixing, bringing Cairo to
a point where we consider it almost ready to be a candidate for release.
There are a few known bugs left to be fixed, being tracked in
https://bugs.freedesktop.org/show_bug.cgi?id=24384, so please give Cairo a
whirl and report any regressions. The plan is to release a new snapshot
every other week leading to a 1.10 release with a target date of
2010-08-16.
-Chris
API additions
-------------
CAIRO_FORMAT_RGB16_565
16 bit devices still remain popular, and so with great demand,
CAIRO_FORMAT_RGB16_565 has been restored enabling applications to create
and use 16 bit images as sources and render targets.
cairo_surface_create_for_rectangle()
It is common practice to cut an image up into many smaller pieces and use
each of those as a source - a technique called texture atlasing.
cairo_surface_create_for_rectangle() extends Cairo to directly support use
these subregions of another cairo_surface_t both as a source and as a render
target.
cairo_region_create()
cairo_region_create_rectangle()
cairo_region_create_rectangles()
cairo_region_copy()
cairo_region_reference()
cairo_region_destroy()
cairo_region_equal()
cairo_region_status()
cairo_region_get_extents()
cairo_region_num_rectangles()
cairo_region_get_rectangle()
cairo_region_is_empty()
cairo_region_contains_rectangle()
cairo_region_contains_point()
cairo_region_translate()
cairo_region_subtract()
cairo_region_subtract_rectangle()
cairo_region_intersect()
cairo_region_intersect_rectangle()
cairo_region_union()
cairo_region_union_rectangle()
The Cairo region API was actually added a couple of snapshots ago, but we
forgot to mention it at the time. A simple API for the handling of
rectangular pixel-aligned regions by Soeren Sandmann.
Backend-specific improvements
-----------------------------
cairo-gl
Benjamin Otte made more than 300 commits in which he refactored the cairo-gl
backend, reducing a lot of code duplication and enabled him to begin working
on improving performance by reducing state changes and associated overhead.
cairo-xlib
Access to the underlying connection to the Display is now thread-safe
enabling cairo-xlib to be used in a multi-threaded application without fear
of random corruption. Thanks Benjamin Otte!
cairo-xlib will now attempt to use PolyModeImprecise when compositing
trapezoids (i.e. a fill or a stroke operation with a non-trivial path) which
should allow hardware drivers more scope for accelerating the operation at
the cost of potentially incurring minute rendering errors. The mode can be
forced back to PolyModePrecise by setting the antialias parameter to
CAIRO_ANTIALIAS_SUBPIXEL.
cairo-svg
A notable improvement was contributed by Alexander Shulgin to enable SVG to
reference external image through the use an extended MIME data type.
From: Carl Worth <cworth@cworth.org>
Date: Fri, 19 Feb 2010 16:35:42 -0800
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, ftp-release@lists.freedesktop.org, pr@lwn.net
Subject: cairo release 1.8.10 now available
A new cairo release 1.8.10 is now available from:
http://cairographics.org/releases/cairo-1.8.10.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.8.10.tar.gz.sha1
fd5e8ca82ff0e8542ea4c51612cad387f2a49df3 cairo-1.8.10.tar.gz
http://cairographics.org/releases/cairo-1.8.10.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.8.10 tag which points to a commit named:
dc7eba7564c1cf90cb4d330824e63053a51d3450
which can be verified with:
git verify-tag 1.8.10
and can be checked out with a command such as:
git checkout -b build 1.8.10
The cairo community is pleased to announce the 1.8.10 release of the
cairo graphics library. This is the fifth update to cairo's stable 1.8
series. This release consists of about a dozen hand-picked fixes
compared to 1.8.8 (which was released about 8 months ago).
We recommend that everyone using cairo upgrade to 1.8.10.
-Carl
General Bug fixes
=================
* Fix path construction for the case of cairo_curve_to immediately
after cairo_new_sub_path followed at some point by
cairo_close_path. (Previously, the final point for the close_path
was computed incorrectly.)
* Fix for cairo_push_group or cairo_pop_group with a non-empty current
path. (Previously the path may have been erroneously translated when
either of these functions was called.)
* Fix to correctly report an error if
cairo_surface_set_fallback_resolution is called with a value of 0
(in either axis). Previously, an assertion would occur later rather
than an error being properly reported when the original, invalid
value was passed.
Bug 23067: Using clear drawing operator crashes printing
http://bugs.freedesktop.org/show_bug.cgi?id=23067
* Fix to handle a cairo_arc of radius 0 as equivalent to a
cairo_line_to to the center coordinate, (previously cairo would do
nothing for a cairo_arc call with a radius of 0).
Backend-specific bug fixes
==========================
cairo-xlib
----------
* Fix to correctly copy from a Window source. Previously, cairo was
failing to include the contents of any sub-windows when copying from
a Window source.
Bug 12996: Xlib source surface fast-paths do not use
IncludeInferiors, while slow paths do
https://bugs.freedesktop.org/show_bug.cgi?id=12996
cairo-ft
--------
* Fix conversion of freetype index to UCS4 value, (which would
previously miss the first character and cause the space glyph to map
to 0x00A0 instead of 0x0020).
cairo-pdf
---------
* Fix Type 1 subsetting to avoid generating corrupt data.
Launchpad Ubuntu/cups bug 419143: Printing from evince (and
perhaps other GTK apps) to PostScript printers is broken
https://bugs.launchpad.net/ubuntu/+source/cups/+bug/419143
* Fix Type 1 subsetting to correctly identify binary eexec data.
* Fix Type 1 subsetting to include fixed-content portion in the
embedded font, (since some fonts may contain additional PostScript
code after the cleartomark).
* Fix Type 1 subsetting to append "cleartomark" operator for binary
fonts that don't include it.
Build fixes
===========
* Fix to compile on OpenBSD, (which has a libpng.pc file but none of
libpng10.pc, libpng12.pc, or libpng13.pc which cairo was looking for
previously).
From: Carl Worth <cworth@cworth.org>
Date: Fri, 19 Feb 2010 17:56:14 -0800
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.9.6 now available
A new cairo snapshot 1.9.6 is now available from:
http://cairographics.org/snapshots/cairo-1.9.6.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.9.6.tar.gz.sha1
0e204b2c4f062dc65c1b854d4b1ccf360f3cb255 cairo-1.9.6.tar.gz
http://cairographics.org/snapshots/cairo-1.9.6.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.9.6 tag which points to a commit named:
cb090136b2b0b89bde69d9575f2f592b46e144e8
which can be verified with:
git verify-tag 1.9.6
and can be checked out with a command such as:
git checkout -b build 1.9.6
We're happy to share this snapshot of recent cairo development. We
apologize that it has been so long since the last snapshot, (snapshot
1.9.4 was 4 months ago), but we are optimistic that we can finish up
cairo 1.10 in the next month or so. Our goal going forward is to have
major cairo releases on a time-based schedule with releases at the end
of every March and September (or so).
This 1.9.6 snapshot is really exactly that---it's a snapshot of current
development. There hasn't been as much testing through the test suite as
we would normally do for a cairo release. But that's what we'll be doing
From now until cairo 1.10. We also hope that many of you will also test
this snapshot with your cairo applications and report back to us.
One of the most exciting things in the 1.9.6 snapshot is the cairo-gl
backend with dramatic improvements compared to cairo-gl in any previous
snapshots, (it's now using shaders to accelerate many operations). See
Eric's post here for some performance numbers:
http://anholt.livejournal.com/42146.html
and please join me in thanking Eric and T. Zachary Laine (a welcome new
contributor!) for this work.
As usual, Chris Wilson has put in a remarkable amount of effort as
reflected in this snapshot. I give him my heartfelt thanks for keeping
cairo so vibrant while I have not been able to give it much personal
attention lately.
This snapshot also includes the cairo-drm backend worked on by Chris
Wilson and Kristian Høgsber. This is another interesting experimental
backend which currently outperforms cairo-gl in several benchmarks, (and
sets the bar for cairo-gl to reach). This direct-rendering backend only
support Intel graphics chipsets in the i915 and i965 families.
I've written a quick summary of other improvements in 1.9.6 below. I've
certainly missed many interesting things that have been done. If you are
aware of interesting work that I neglected, please let me know so that
we can get that work mentioned for the 1.10 release notes. (Best would
be a patch to the NEWS file adding the information).
I hope that everyone will have lots of fun with cairo!
-Carl
API additions
-------------
Add cairo_device_t
The device is a generic method for accessing the underlying interface
with the native graphics subsystem, typically the X connection or
perhaps the GL context. By exposing a cairo_device_t on a surface and
its various methods we enable finer control over interoperability with
external interactions of the device by applications. The use case in
mind is, for example, a multi-threaded gstreamer which needs to serialise
its own direct access to the device along with Cairo's across many
threads.
Secondly, the cairo_device_t is a unifying API for the mismash of
backend specific methods for controlling creation of surfaces with
explicit devices and a convenient hook for debugging and introspection.
The principal components of the API are the memory management of:
cairo_device_reference(),
cairo_device_finish() and
cairo_device_destroy();
along with a pair of routines for serialising interaction:
cairo_device_acquire() and
cairo_device_release()
and a method to flush any outstanding accesses:
cairo_device_flush().
The device for a particular surface may be retrieved using:
cairo_surface_get_device().
The device returned is owned by the surface.
API changes (to API new in the cairo 1.9.x series)
--------------------------------------------------
cairo_recording_surface_create()
cairo_recording_surface_ink_extents()
These are the replacement names for the functions previously named
cairo_meta_surface_create and cairo_meta_surface_ink_extents.
cairo_surface_set_mime_data
This interface is now changed such that the MIME data will be
detached if the surface is modified at all. This guarantees that
the MIME data will not become out of synch due to surface
modifications, and also means that for the MIME data to be useful,
it must be set after all modifications to the surface are
complete.
API removal (of experiment API)
-------------------------------
The cairo-glitz backend is removed entirely, (in favor of the new
cairo-gl backend). See below for more on cairo-gl.
Generic fixes
-------------
Many improvements for drawing of dashed strokes
Fix incorrect handling of negative offset
Faster computation of first dash (avoids near-infinite looping)
Approximate extremely fine dash patterns with appropriate alpha value
Optimize spans-based renderers for repeated rows, (such as in a rounded rectangle)
Backend-specific improvements
-----------------------------
cairo-drm
This is a new, direct-rendering backend that supports Intel graphics
chipsets in the i915 and i965 families. It's still experimental and
will likely remain that way for a while. It's already got extremely
good performance on the hardware it supports, so if nothing else
provides a working proof and performance target for the cairo-gl
work for Intel graphics.
cairo-gl
Start using GLSL to accelerate many operations. Many thanks to Eric
Anholt and T. Zachary Laine for this work. For the first time, we
have what looks like what will be a very compelling OpenGL-based
backend for cairo (in terms of both quality and performance).
See this writeup from Eric for more details on recent progress of
cairo-gl (which he presented at FOSDEM 2010):
http://anholt.livejournal.com/42146.html
cairo-image
The image backend is made dramatically faster (3-5 times faster for
benchmarks consisting primarily of glyph rendering).
cairo-quartz fixes:
Many fixes from Robert O'Callahan and Andrea Canciani including:
Fixed gradient pattern painting
Improved A8 image handling
Fixes for "unbounded" and other compositing operators
cairo-pdf fixes:
Improvements to embedding of JPEG and JPEG2000 data.
cairo-ps fixes:
Fix printing of rotated user fonts.
From: Carl Worth <cworth@cworth.org>
Date: Thu, 15 Oct 2009 16:34:18 -0700
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.9.4 now available
A new cairo snapshot 1.9.4 is now available.
This is a slightly more "raw" snapshot than many we've done in the
past. But it's been over 4 months since the last cairo snapshot, and
cairo internals have been shaken up quite a bit since then, (thanks,
Chris!).
We hope that most of the fallout from the big rewrites is over now,
(such as a recent fix to prevent WebKit from misrendering images). But
we are aware that some bugs still remain, (such as issues with images
in PDF output as well as PS and EPS page sizes).
As you encounter any major bugs, please ensure that the bugs are
listed as dependencies of the following tracker bug so that we will be
sure to fix them before the cairo 1.10 release:
http://bugs.freedesktop.org/show_bug.cgi?id=cairo-1.10
And of course, as with all cairo snapshots (as opposed to "releases"),
any API that is new in cairo 1.9 compared to 1.8 is subject to
change. (For example, I'm not totally happy with the
cairo_gl_surface_create functions so they might be changing.)
Please have fun with cairo, everyone!
-Carl
Where to obtain cairo 1.9.4
---------------------------
http://cairographics.org/snapshots/cairo-1.9.4.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.9.4.tar.gz.sha1
144d80cf01758a0f048b149b4c54aa792e401ae3 cairo-1.9.4.tar.gz
http://cairographics.org/snapshots/cairo-1.9.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.9.4 tag which points to a commit named:
ad6334b9870c63e641b531d6e910c084b587d0f9
which can be verified with:
git verify-tag 1.9.4
and can be checked out with a command such as:
git checkout -b build 1.9.4
What's new in cairo 1.9.4 (compared to cairo 1.9.2)
===========================
API additions:
cairo_meta_surface_create()
cairo_meta_surface_ink_extents()
Finally exporting the internal meta-surface so that applications
have a method to record and replay a sequence of drawing commands.
cairo_in_clip()
Determines whether a given point is inside the current clip.
??? Should this be called cairo_in_paint() instead? in-clip is the test
that is performed, but in-paint would be similar to in-fill and in-stroke.
New utilities:
cairo-test-trace
A companion to cairo-perf-trace, this utility replays a trace against
multiple targets in parallel and looks for differences in the output,
and then records any drawing commands that cause a failure.
Future plans:
Further minimisation of the fail trace using "delta debugging".
More control over test/reference targets.
Backend improvements:
xlib
Server-side gradients. The theory is that we can offload computation
of gradients to the GPU and avoid pushing large images over the
connection. Even if the driver has to fallback and use pixman to render
a temporary source, it should be able to do so in a more efficient manner
than Cairo itself. However, cairo-perf suggests otherwise:
On tiny, Celeron/i915:
before: firefox-20090601 211.585
after: firefox-20090601 270.939
and on tiger, CoreDuo/nvidia:
before: firefox-20090601 70.143
after: firefox-20090601 87.326
In particular, looking at tiny:
xlib-rgba paint-with-alpha_linear-rgba_over-512 47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%): 2.62x slowdown
█▋
xlib-rgba paint-with-alpha_linear3-rgba_over-512 47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%): 2.62x slowdown
█▋
New experimental backends:
QT
OpenVG - The initial work was done by Øyvind Kolås, and made ready for
inclusion by Pierre Tardy.
OpenGL - An advanced OpenGL compositor. The aim is to write a integrate
directed rendering using OpenGL at a high-level into Cairo. In
contrast to the previous attempt using Glitz which tried to
implement the RENDER protocol on top of OpenGL, using the
high-level interface should permit greater flexibility and
more offloading onto the GPU.
The initial work on the backend was performed by Eric Anholt.
Long standing bugs fixed:
Self-intersecting strokes.
A long standing bug where the coverage from overlapping semi-opaque
strokes (including neighbouring edges) was simply summed in lieu of
a costly global calculation has been fixed (by performing the costly
global calculation!) In order to mitigate the extra cost, the
tessellator has been overhauled and tune, which handles the fallback
for when we are unable to use the new span rasteriser on the stroke
(e.g. when using the current RENDER protocol). The large number of
pixel artefacts that implementing self-intersection elimination
removes is ample justification for the potential performance
regression. If you unfortunately do suffer a substantial performance
regression in your application, please consider obtaining a
cairo-trace and submitting it to us for analysis and inclusion into
our performance suite.
Special thanks:
To the AuroraUX team for providing access to one of their OpenSolaris
machines for cairo and pixman development. http://www.auroraux.org/
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue, 16 Jun 2009 14:26:29 +0100
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, ftp-release@lists.freedesktop.org, pr@lwn.net
Subject: cairo release 1.8.8 now available
A new cairo release 1.8.8 is now available from:
http://cairographics.org/releases/cairo-1.8.8.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.8.8.tar.gz.sha1
e4b8b219427d1ca3dc95f5f44914dce1ae0c3766 cairo-1.8.8.tar.gz
http://cairographics.org/releases/cairo-1.8.8.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.8.8 tag which points to a commit named:
7dd89ff7a1e04930045d9726f5f21330f54d3f24
which can be verified with:
git verify-tag 1.8.8
and can be checked out with a command such as:
git checkout -b build 1.8.8
The cairo community is pleased to announce the 1.8.8 release of the
cairo graphics library. This is the fourth update to cairo's stable
1.8 series and contains a small number of bug fixes (in particular a
few corrections to the documentation and a few fixes in the FreeType font
backend). This is being released just over six months after cairo 1.8.6.
We recommend that everyone using cairo upgrade to 1.8.8.
-Chris
Build fixes
-----------
There were reports of incompatibilities with the autotools bundled in with
the 1.8.6 tarball. This release has been built with automake-1.10.2 and
autoconf-2.63.
The configure check for FreeType has been improved:
typo in check for version of freetype in configure script
https://bugs.freedesktop.org/show_bug.cgi?id=19283
Compilation on 64-bit MacOS/X fixes:
Cannot build cairo_quartz_font_face_create_for_atsu_font_id on 64-bit Mac OS X
https://bugs.freedesktop.org/show_bug.cgi?id=15702
Bug fixes
---------
Uninitialised status return within _cairo_clip_intersect_mask(). This caused
random crashes and general mayhem as an error could be generated causing all
rendering to the context to stop.
Avoid transforming nearly-degenerate matrices into degenerate matrices:
Painting stops in this case, using -moz-transform: scale, rotate and video
https://bugzilla.mozilla.org/show_bug.cgi?id=467423
A few FreeType font handling bugs were fixed:
Rendering with PANGO_GRAVITY_EAST leads to different results with image and pdf
https://bugs.freedesktop.org/show_bug.cgi?id=21985
Don't call FT_Done_Face() on faces we did not create
zombie ft_font_face / ft_unscaled_font mutual referencing problems
http://bugs.freedesktop.org/show_bug.cgi?id=21706
Ensure win32 font backend sets the return value to -1 (indicating the absent
glyph) if the font index lookup for the unicode character fails. And
similarly fix a bug where a fatal error was raised for an invalid glyph.
cairo_scaled_font_glyph_extents breaks with invalid glyph id
http://bugs.freedesktop.org/show_bug.cgi?id=20255
Various improvements to the documentation, reported by Truc Troung:
https://bugs.freedesktop.org/show_bug.cgi?id=20095
https://bugs.freedesktop.org/show_bug.cgi?id=20154
https://bugs.freedesktop.org/show_bug.cgi?id=20180
https://bugs.freedesktop.org/show_bug.cgi?id=20183
https://bugs.freedesktop.org/show_bug.cgi?id=20182
https://bugs.freedesktop.org/show_bug.cgi?id=20441
From: Carl Worth <cworth@cworth.org>
Date: Fri, 12 Jun 2009 12:25:50 -0700
To: cairo-announce@cairographics.org
Subject: cairo snapshot 1.9.2 now available
A new cairo snapshot 1.9.2 is now available.
This is a snapshot of current development leading up to an eventual
1.10 release.
Since this is a development snapshot, (not a "release"), one should not
expect cairo 1.9.2 to meet the same high standards as major cairo
releases. In particular:
* Any new API in this release may change before 1.10
We think we've got the new API right, but we reserve the right
to change things as new problems are discovered.
* The test suite is known to not pass, which indicates likely bugs
* There's a serious bug in PDF output related to the new "COW
snapshots" feature, (see more on this below). When the same
image is used on multiple pages it can appear in the wrong
position on pages after the first, (appearing in the same
position as on the first page).
* Plenty of other bugs are possible.
As always, we appreciate anyone willing to give our half-finished code a
look, and we will greatly appreciate feedback and bug reports.
Have fun with cairo, everybody!
-Carl
PS. I'd like to extend special notice to some particularly prolific
cairo contributors. Adrian Johnson, Behdad Esfahbod, Jeff Muizelaar,
M Joonas Pihlaja, and Søren Sandmann Pedersen have each contributed on
the order of 50 commits to this release. And Chris Wilson has made a
phenomenal 500 commits! Well done, everybody.
Where to get cairo 1.9.2
========================
http://cairographics.org/snapshots/cairo-1.9.2.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.9.2.tar.gz.sha1
0dc542447fc46d77a3106afff4445d6e668d76e6 cairo-1.9.2.tar.gz
http://cairographics.org/snapshots/cairo-1.9.2.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.9.2 tag which points to a commit named:
e9b9d2a7c17ca4b2bc2991fdc4893aed850578db
which can be verified with:
git verify-tag 1.9.2
and can be checked out with a command such as:
git checkout -b build 1.9.2
What's new in cairo 1.9.2 (compared to cairo 1.8.x)
===================================================
API additions:
cairo_surface_set_mime_data()
cairo_surface_get_mime_data()
Should this take unsigned int, unsigned long or size_t for the length
parameter? (Some datasets may be >4GiB in size.)
Associate an alternate, compressed, representation for a surface.
Currently:
"image/jp2" (JPEG2000) is understood by PDF >= 1.5
"image/jpeg" is understood by PDF,PS,SVG,win32-printing.
"image/png" is understood by SVG.
cairo_pdf_version_t
cairo_pdf_surface_restrict_to_version()
cairo_pdf_get_versions()
cairo_pdf_version_to_string()
Similar to restrict to version and level found in SVG and PS,
these limit the features used in the output to comply with the PDF
specification for that version.
CAIRO_STATUS_INVALID_SIZE
Indicates that the request surface size is not supported by the
backend. This generally indicates that the request is too large.
CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED
Indicates that a required callback for a user-font was not implemented.
CAIRO_STATUS_LAST_STATUS
This is a special value to indicate the number of status values enumerated
at compile time. (This may differ to the number known at run-time.)
The built-in twin font is now called "@cairo:" and supports a limited set
of options like "@cairo:mono". Where are these specified?
cairo_in_fill() now uses HTML Canvas semantics, all edges are inside.
New experimental backends:
CairoScript
New utility:
cairo-trace and cairo-perf-trace
cairo-trace generates a human-readable, replayable, compact(-ish!)
representation of the sequences of drawing commands made by an
application.
Under the util/cairo-script directory is a library to replay traces.
perf/cairo-perf-trace replays traces against multiple backends
and makes useful benchmark reports. This is integrated with
'make perf'. You may collect your own traces or take advantage
of traces collected by the community:
git://git.cairographics.org/git/cairo-traces
(Put this into perf/cairo-traces to run these as part of "make perf".)
There is additional WIP in building a debugging tool for cairo applications
based on CairoScript (currently very preliminary, mostly serves to show
that GtkSourceView is too slow) :
people.freedesktop.org:~ickle/sphinx
Test suite overhaul:
The test suite is undergoing an overhaul, primarily to improve its speed
and utility. (Expect more changes in the near future to improve XFAIL
handling.)
Optimisations:
polygon rasterisation! Joonas implemented the Tor polygon scan converter,
on typical geometry is about 30% faster for the image backend.
Bovine Polaroids! For those not in on the joke, this is the long
awaited "copy-on-write snapshot" or "COW snapshot" support. The
user-visible feature is that including the same image multiple times
into a PDF file should result in only a single instance of that
image in the final output. This is unlike previous versions of cairo
which would generate very large PDF files with multiple copies of
the same image. Adrian says that the PDF is not quite working as
well as it should yet, so we hope for futher improvements before
cairo 1.10.
Bug fixes:
EXTEND_PAD.
Better handling of large scale-factors on image patterns.
Emit /Interpolate for PS,PDF images.
Global glyph cache - cap on the total number of inactive glyphs,
should prove fairer for fonts with larger glyph sets.
Compilation without fontconfig
Improved handling of low-bitdepth sources (e.g. copying the contents
of 16-bit xserver windows)
Regressions:
cairo_traps_extract_region >10x slower. Fix pending.
Still to come:
Region tracking API (ssp) for damage tracking, hit testing etc
mime-surface
An expiremental OpenGL backend?
Tweaks to tessellator, allocations of patterns, delayed
initialisation of the xlib backend (reduce the cairo overhead of
render_bench by ~80%).
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun, 13 Dec 2008 17:00:04 +0000
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, ftp-release@lists.freedesktop.org, pr@lwn.net
Subject: cairo release 1.8.6 now available
A new cairo release 1.8.6 is now available from:
http://cairographics.org/releases/cairo-1.8.6.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.8.6.tar.gz.sha1
d1e5479d4eeb7b1a3589672e3ef8f4899e7c5eba cairo-1.8.6.tar.gz
http://cairographics.org/releases/cairo-1.8.6.tar.gz.sha1.asc
(signed by Chris Wilson)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.8.6 tag which points to a commit named:
e2a2eddcfb8fc73f3decdb91c00e8e6d5282e09c
which can be verified with:
git verify-tag 1.8.6
and can be checked out with a command such as:
git checkout -b build 1.8.6
The cairo community is pleased to announce the 1.8.6 release of the
cairo graphics library. This is the third update to cairo's stable
1.8 series and contains a small number of bug fixes (in particular a
few fixes for failures of cairo 1.8.4 on Quartz and PDF, and build fixes
for a couple of backends). This is being released just under a month
after cairo 1.8.4.
We recommend that everyone using cairo upgrade to 1.8.6.
-Chris
Build fixes
-----------
Fix build of DirectFB backend with debugging enabled:
Bug in _cairo_directfb_surface_release_source_image function
http://bugs.freedesktop.org/show_bug.cgi?id=18322
Fix build on OS/2.
Bug fixes
---------
Workaround a mis-compilation of cairo_matrix_invert() that generated
invalid matrices and triggered assertion failures later. The issue was
reported by Peter Hercek.
Invalid computation of the modulus:
https://bugzilla.mozilla.org/show_bug.cgi?id=466258
Invalid referencing of patterns in the Quartz backend:
Failed assertion `CAIRO_REFERENCE_COUNT_HAS_REFERENCE
(&pattern->ref_count)' when using cairo quartz backend
http://bugs.freedesktop.org/show_bug.cgi?id=18632
Invalid references to glyphs after early culling, causing segmentation
faults in the PDF backend:
http://lists.cairographics.org/archives/cairo/2008-December/015976.html
Check for XRender in the XCB backend, or else we may attempt an invalid
memory access:
XCB backend fails with missing render.
https://bugs.freedesktop.org/show_bug.cgi?id=18588
From: Carl Worth <cworth@cworth.org>
Date: Fri, 14 Nov 2008 15:19:24 +0100
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, ftp-release@lists.freedesktop.org, pr@lwn.net
Subject: cairo release 1.8.4 now available
A new cairo release 1.8.4 is now available from:
http://cairographics.org/releases/cairo-1.8.4.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.8.4.tar.gz.sha1
57fd2c7e0af16bee7cd53436d7c9dc526784f1da cairo-1.8.4.tar.gz
http://cairographics.org/releases/cairo-1.8.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.8.4 tag which points to a commit named:
66e8f142e381501d114888c2d1fc1e7f6d6a9857
which can be verified with:
git verify-tag 1.8.4
and can be checked out with a command such as:
git checkout -b build 1.8.4
The cairo community is pleased to announce the 1.8.4 release of the
cairo graphics library. This is the second update to cairo's stable
1.8 series and contains a small number of bug fixes, (in particular a
few fixes for build failures of cairo 1.8.2 on various systems). This
is being released just over two weeks after cairo 1.8.2.
We recommend that everyone using cairo upgrade to 1.8.4.
-Carl
Build fixes
-----------
Fix build with older XRender that doesn't define RepeatNone:
Build of xlib backend fails against old XRender (RepeatNone undeclared)
https://bugs.freedesktop.org/show_bug.cgi?id=18385
Fix build with bash version <= 3.0:
doltlibtool broken on linux with bash 3.00.0
https://bugs.freedesktop.org/show_bug.cgi?id=18363
Bug fixes
---------
Avoid triggering a bug in X.org server 6.9 resulting in a hung machine
requiring a reboot:
https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2
Fix display of user fonts as exercised by proposed support for type3
fonts in poppler (unsigned promotion fixes):
Use cairo user-font for Type 3 fonts
http://lists.freedesktop.org/archives/poppler/2008-October/004181.html
Avoid miscomputing size of fallback images required when rendering
with CLEAR, IN, or SOURCE operator to vector surfaces, (PS, PDF, SVG,
etc.).
Be more tolerant of broken fonts when subsetting type1 fonts:
Error handling in cairo_type1_font_subset_get_glyph_names_and_widths
http://lists.cairographics.org/archives/cairo/2008-October/015569.html
Fix cairo_fill_extents, cairo_stroke_extents, cairo_path_extents, to
correctly allow NULL parameters as documented.
Fix potential crash on emitting a type3 glyph after having drawn text
paths from the same font, (for example with cairo_text_path).
From: Carl Worth <cworth@cworth.org>
Date: Thu, 30 Oct 2008 08:36:56 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, ftp-release@lists.freedesktop.org, pr@lwn.net
Subject: cairo release 1.8.2 now available
A new cairo release 1.8.2 is now available from:
http://cairographics.org/releases/cairo-1.8.2.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.8.2.tar.gz.sha1
41e94d94e7f379551f556dd71979aca239a688c6 cairo-1.8.2.tar.gz
http://cairographics.org/releases/cairo-1.8.2.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.8.2 tag which points to a commit named:
f7c958d97221375fdcbb6c58c3b58c07676b7589
which can be verified with:
git verify-tag 1.8.2
and can be checked out with a command such as:
git checkout -b build 1.8.2
The cairo community is pleased to announce the 1.8.2 release of the
cairo graphics library. This is the first update to cairo's stable 1.8
series and contains a large number of bug fixes. It is being released
just over one month since cairo 1.8.0.
This release consists primarily of bug fixes, but there is one notable
new feature, (the ability to build cairo without an external font
backend), and there are a few optimizations as well. See below for
details on these changes and the most important bug fixes.
While many people have contributed to this release, Chris Wilson
deserves particular mention. He has contributed well over twice as
many changes to cairo since 1.8.0 than everyone else combined. We
greatly appreciate the tremendous efforts of Chris and all cairo
contributors.
We recommend everyone upgrade to cairo 1.8.2 and hope that everyone
will have lots of fun with cairo!
-Carl
New feature
-----------
It is now possible to build cairo without any font backend, (such as
freetype, win32 or quartz). This is most useful when the application
provides custom font rendering through the user-font API. But in the
case where no external font backend is available, and no user-font is
provided, cairo will render with a failsafe font, (a stroked font
covering visible ASCII character). (Behdad Esfahbod)
Optimizations
-------------
Dramatically speed up compilation with dolt (removes much of the
libtool overhead) (Behdad Esfahbod with thanks to Josh Triplett).
Several minor optimizations to tessellator (special-cased comparisons,
faster insert for skiplist, etc.) (Chris Wilson).
Optimize away fractional translation component when doing
EXTEND_NEAREST filtering, (for better performance).
General bug fixes
-----------------
Allow cloning sub-regions of similar surfaces to fix this bug
(Chris Wilson):
Crafted gif file will crash firefox
[XError: 'BadAlloc (insufficient resources for operation)']
https://bugzilla.mozilla.org/show_bug.cgi?id=424333
Fix some matrix confusion to fix this regression (Chris Wilson):
Translucent star exports in a wrong way to PDF
https://bugs.launchpad.net/inkscape/+bug/234546
Fix some long-standing bugs with respect to properly computing the
extents of transformed, filtered surfaces (Owen Taylor, Carl Worth,
and Chris Wilson):
Bad clipping with EXTEND_NONE
http://bugs.freedesktop.org/show_bug.cgi?id=15349
Improve filtering handling in cairo-pattern.c
http://bugs.freedesktop.org/show_bug.cgi?id=15367
Many thanks to Chris Wilson for digging out and cleaning up
these fixes.
Fix compilation on Solaris 10 (Chris Wilson):
Cairo requires -DREENTRANT (along with -D_POSIX_THREAD_SEMANTICS)
to compile on Solaris 10 with pthreads
https://bugs.freedesktop.org/show_bug.cgi?id=18010
Fix very old bug causing dashes to be rendered at the wrong length in
fallback images (Adrian Johnson)
Dashed strokes too long in fallback images
https://bugs.freedesktop.org/show_bug.cgi?id=9189
Fix broken dashing when a dashed path starts outside the clip region
(Chris Wilson).
Avoid range overflow when computing large patterns (Benjamin Otte and
Chris Wilson).
Avoid crashing due to an invalid font with an incorrect entry in its
CMAP table (Adrian Johnson).
Fix bugs in computing maximum size of text requests that can be sent
with the Render extension, (avoiding potential crashes when rendering
large amounts of text) (Behdad Esfahbod and Chris Wilson).
Fix rendering of operators unbounded by the mask (Chris Wilson).
Fix compilation on systems without compiler support for a native
64-bit type (Chris Wilson).
Fix several cases of missing error-status propagation. (Chris Wilson,
doing the work he seems to never tire of).
Fix several locking issues found with the lockdep valgrind skin (Chris
Wilson).
Backend-specific bug fixes
--------------------------
xlib: Avoid crash due to attempting XRender calls on pixmaps with
formats not supported by the Render extension (Chris Wilson):
XRender crashes due to NULL pointer from Cairo on SGI O2
https://bugs.freedesktop.org/show_bug.cgi?id=11734
xlib: Add support for XImages with depth of 4, 20, 24, or 28 bits
(Chris Wilson):
cairo doesn't support 24 bits per pixel mode on X11
https://bugs.freedesktop.org/show_bug.cgi?id=9102
xlib: Avoid mistakenly considering two surfaces as similar just
because their depths match (while their Render formats do not) (Karl
Tomlinson).
ps: Fix slight mis-scaling of bitmapped fonts (Adrian Johnson)
svg: Correctly emit comp-op for paint, mask, and show_glyphs
operations (Emmanuel Pacaud).
svg: Use finer-grained fallbacks for SVG 1.2 (as PS and PDF backends
have been doing since 1.6.0) (Chris Wilson).
win32: Fallback to DIB if DDB create fails for
cairo_surface_create_similar (Vladimir Vukicevic).
win32: Fix compatibility with Windows Mobile (Vladimir Vukicevic).
win32: Fix static builds to not do __declspec(dllimport) on public
functions. This requires the user to set a CAIRO_WIN32_STATIC_BUILD
environment variable when compiling (Behdad Esfahbod).
From: Carl Worth <cworth@cworth.org>
Date: Thu, 25 Sep 2008 16:11:33 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, pr@lwn.net
Subject: cairo release 1.8.0 now available
A new cairo release 1.8.0 is now available from:
http://cairographics.org/releases/cairo-1.8.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.8.0.tar.gz.sha1
8a689ca47c24216f37bb8cabae21ff08a7f47899 cairo-1.8.0.tar.gz
http://cairographics.org/releases/cairo-1.8.0.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.8.0 tag which points to a commit named:
6b3aa86b1c5b2fce3e56b43142c4ec2664a37032
which can be verified with:
git verify-tag 1.8.0
and can be checked out with a command such as:
git checkout -b build 1.8.0
The cairo community is happy (and relieved) to announce the 1.8.0
release of the cairo graphics library. This is a major update to
cairo, with new features and enhanced functionality which maintains
compatibility for applications written using any previous major cairo
release, (1.6, 1.4, 1.2, or 1.0). We recommend that anybody using a
previous version of cairo upgrade to cairo 1.8.0.
The dominant theme of this release is improvements to cairo's ability
to handle text. The highlights include a new "user fonts" feature as
well as a new cairo_show_text_glyphs API which allows glyphs to be
embedded in PDF output along with their original text, (for searching,
selection, and copy-and-paste). Another major feature is a revamp of
cairo's build system making it much easier to build cairo on various
platforms.
See below for more details.
User fonts
----------
This new API allows the user of cairo API to provide drawings for
glyphs in a font. A common use for this is implementing fonts in
non-standard formats, like SVG fonts and Flash fonts. This API can
also be used by applications to provide custom glyph shapes for fonts
while still getting access to cairo's glyph caches. See
test/user-font.c and test/user-font-proxy.c for usage examples. This
is based on early work by Kristian Høgsberg. Thanks Kristian!
This new API consists of the following functions (and corresponding
_get functions):
cairo_user_font_face_create
cairo_user_font_face_set_init_func
cairo_user_font_face_set_render_glyph_func
cairo_user_font_face_set_text_to_glyphs_func
cairo_user_font_face_set_unicode_to_glyph_func
An additional, new API is
cairo_scaled_font_text_to_glyphs
We were previously reluctant to provide this function as
text-to-glyphs support in cairo was limited to "toy" font
functionality, not really interesting for real-world text
processing. However, with user fonts landing, this API is needed to
expose full access to how user fonts convert text to glyphs. This is
expected to be used by text toolkits like Pango, as well as "proxy"
user-font implementations.
cairo_show_text_glyphs
----------------------
This new API allows the caller of cairo to provide text data
corresponding to glyphs being drawn. The PDF backend implements this
new API so that complex text can be copied out of cairo's PDF output
correctly and reliably, (assuming the user of cairo calls
cairo_show_text_glyphs). The cairo_show_text_glyphs API is definitely
the most daunting API to debut in cairo. It is anticipated that pango
(and similar high-level text libraries) will be the primary users of
this API. In fact, pango 1.22 already uses cairo_show_text_glyphs.
Behdad was the architect and implementor of this effort. Thanks,
Behdad!
The cairo_show_text_glyphs API includes the following new functions:
cairo_show_text_glyphs
cairo_glyph_allocate
cairo_glyph_free
cairo_text_cluster_allocate
cairo_text_cluster_free
cairo_surface_has_show_text_glyphs
Build system revamp
-------------------
The primary goal of the revamp is to make the build system less
fragile, (particularly for non-Linux platforms). For example, now
people building on win32 will no longer need to maintain a
platform-specific list of files to be built. See the new README.win32
for details. Also, the .so file will now be installed with a different
naming scheme, (for example, 1.8.0 will install with a .10800
suffix). Many thanks to Behdad and his small army of helpers!
Assorted API additions
----------------------
For API completeness, several missing "getter" functions were added:
cairo_scaled_font_get_scale_matrix
cairo_surface_get_fallback_resolution
cairo_toy_font_face_create
cairo_toy_font_face_get_family
cairo_toy_font_face_get_slant
cairo_toy_font_face_get_weight
The new cairo_toy_font_face functions provide access to functionality
and settings provided by cairo_select_font_face(). Thanks Behdad!
cairo-ps/cairo-pdf: More efficient output
-----------------------------------------
Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF
backends, as well making them generate much more compact output by
avoiding things like re-emitting the color or linestyle on every
drawing operation. Thanks Adrian!
cairo-xlib: dithering
---------------------
Dithering: Cairo now does simple dithering when rendering to legacy X
servers. This is most visible with 8-bit visuals. Thanks Behdad!
cairo-xlib: Avoid rendering glyphs out of surface bounds
--------------------------------------------------------
This seemingly harmless optimization exposed a bug in OpenOffice.org 3
versions where OO.o was passing bogus surface extents to cairo,
resulting in no text rendered in OO.o. Please contact your
distribution's OO.o maintainers if you see this bug and point them to
the following URL:
https://bugs.freedesktop.org/show_bug.cgi?id=16209
cairo-xlib: Improved performance with X server without Render
-------------------------------------------------------------
Cairo now performs better on remote X servers that lack the Render
extension by being smarter about using X core protocol facilities
instead of falling back to doing all rendering on the client side.
cairo-ft: respecting FC_FT_FACE
-------------------------------
Previously it was impossible to instruct cairo to do emboldening on a
font face object created from an FT_Face. Cairo now respects and uses
the FC_FT_FACE fontconfig pattern element, so emboldening can be
achieved by using cairo_ft_font_face_create_for_pattern() and a
carefully crafted pattern using FC_FT_FACE and FC_EMBOLDEN. Thanks
Behdad!
cairo-directfb: backend improvements
------------------------------------
The directfb backend, though still unsupported, has seen a good deal
of improvements. Thanks Vlad!
Bug fixing and optimizations
----------------------------
xlib: Faster bookkeeping (Karl Tomlinson)
https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5
PS: Fix gradients with non-constant alpha (Chris Wilson)
Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod)
http://bugs.freedesktop.org/show_bug.cgi?id=16819
Countless other bugs have been fixed and optimizations made, many of
them thanks to Chris Wilson. Thanks Chris and others!
Note also that the code that had been in cairo 1.7.x calling into
freetype's optional lcd_filter function was removed from cairo before
the 1.8.0 release. We do expect this code to come back in some form in
the future.
From: Carl Worth <cworth@cworth.org>
Date: Thu, 18 Sep 2008 15:26:44 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.7.6 now available
A new cairo snapshot 1.7.6 is now available from:
http://cairographics.org/snapshots/cairo-1.7.6.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.7.6.tar.gz.sha1
07be7452ddd24df4841c13bc73f76c2543f1d849 cairo-1.7.6.tar.gz
http://cairographics.org/snapshots/cairo-1.7.6.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.7.6 tag which points to a commit named:
005dd8499bca9521ab934a56c68d2b85042359b7
which can be verified with:
git verify-tag 1.7.6
and can be checked out with a command such as:
git checkout -b build 1.7.6
The cairo community is happy to announce the 1.7.6 snapshot of the
cairo graphics library. This is a "release candidate" for the upcoming
1.8.0 release, so we will greatly appreciate any reports of problems
in this release, and no major changes are currently planned before
1.8.
See below for details, and have fun!
-Carl
The cairo community is happy to announce the 1.7.6 snapshot of the
cairo graphics library. This is a "release candidate" for the upcoming
1.8.0 release, so we will greatly appreciate any reports of problems
in this release, and no major changes are currently planned before
1.8.
Notable changes in 1.7.6
------------------------
The largest number of changes since 1.7.4 did not change the
implementation of cairo itself, but instead revamped cairo's build
system. The primary goal of the revamp is to make the build system
less fragile, (particularly for non-Linux platforms). For example, now
people building on win32 will no longer need to maintain a
platform-specific list of files to be built. Also, the .so file will
now be installed with a different naming scheme, (for example, 1.7.6
will install with a .10706 suffix). Much thanks, Behdad!
And, as usual, Chris Wilson has made another large round of robustness
improvements, (eliminating dead code, fixing propagation of error
status values, test suite improvements, etc. etc.). Thanks as always,
Chris!
API changes since 1.7.4
-----------------------
There have been a few changes of API that was new during the 1.7
series:
* Remove cairo_font_options_set_lcd_filter
and cairo_font_options_get_lcd_filter
Motivation: At the Cairo Summit, this API was determined to be too
specific to the freetype font backend to be in the general
API. A similar API with a cairo_ft prefix might be introduced
in the future. Note that cairo will still respect the
corresponding fontconfig settings for these options.
* Replace cairo_has_show_glyphs
with cairo_surface_has_show_glyphs
Motivation: This really is a surface-specific interface, and the
convenience function on the cairo_t is not obviously
necessary. An application can easily call:
cairo_surface_has_show_glyphs (cairo_get_target (cr));
as needed.
* Add cairo_text_cluster_flags_t
to cairo_show_text_glyphs
cairo_scaled_font_text_to_glyphs
cairo_user_scaled_font_text_to_glyphs_func_t
Motivation: This flag, (and specifically the
CAIRO_TEXT_CLUSTER_FLAG_BACKWARD value), replaces the
cairo_bool_t backward argument in each of the above
interfaces. This leads to more readable user code, and also
allows future extensibility.
As always, there are no changes to any API from any major cairo
release, (1.0.x, 1.2.x, 1.4.x, 1.6.x). Cairo maintains the same
compatibility promise it always has.
Bug fixes since 1.7.4
---------------------
xlib: Faster bookkeeping (Karl Tomlinson)
https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5
PS: Fix gradients with non-constant alpha (Chris Wilson)
Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod)
http://bugs.freedesktop.org/show_bug.cgi?id=16819
Several other minor fixes.
From: Behdad Esfahbod <behdad@behdad.org>
Date: Mon, 11 Aug 2008 13:05:45 -0400
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.7.2 now available
A new cairo snapshot 1.7.2 is now available from:
http://cairographics.org/snapshots/cairo-1.7.2.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.7.2.tar.gz.sha1
29569943dad4a4e5bbe16495404288a466e1bd0f cairo-1.7.2.tar.gz
http://cairographics.org/snapshots/cairo-1.7.2.tar.gz.sha1.asc
(signed by Behdad Esfahbod)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.7.2 tag which points to a commit named:
057a832f9e806f9321648e47ee314a62e82e6ba4
which can be verified with:
git verify-tag 1.7.2
and can be checked out with a command such as:
git checkout -b build 1.7.2
Release 1.7.2 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>)
==============================================================
The cairo community is finally ready to announce availability of the 1.7.2
snapshot of the cairo graphics library. This is embarrissingly the first
snapshot in the 1.7 unstable series of cairo, leading to the eventual release
of cairo 1.8, currently planned for late September.
This snapshot comes four months after the 1.6.4 release. We have done a
really bad job on getting development stapshots out this cycle, but
hopefully all the API changes for 1.8 are now finished and the remaining
weeks will be spent on bug-fixing. There is more than 400 commits worth
of changes in this snapshot, and those can use some testing. Read on!
Text, text, and more text!
- --------------------------
The dominant theme of this release, and 1.8 in general, is improvements
around cairo text API. Here is a high-level list of changes with text
handling:
User fonts
- ----------
This is new API allowing the user of cairo API to provide drawings for glyphs
in a font. This is most useful in implementing fonts in non-standard formats,
like SVG fonts and Flash fonts, but can also be used by games and other
applications to draw "funky" fonts. See test/user-font.c and
test/user-font-proxy.c for usage examples. This is based on early work by
Kristian Høgsberg. Thanks Kristian!
show_text_glyphs
- ----------------
This new API allows the caller of cairo to mark text glyphs with their
original text. The PDF backend implements this new API and latest Pango
master uses it. The result is (when bugs are fixed) that complex text can be
copied out of pangocairo's PDF output correctly and reliably. There are bugs
to fix though. A few poppler bugs, and some more in cairo and pango.
To test show_text_glyph, just grab pango master and this cairo snapshot and
print text in gedit. Open in acroread or evince, select all, copy, paste
in gedit and compare. The Arabic text with diacritic marks is particularly
showing bad. Try with pango/pango-view/HELLO.txt if you are brave
enough. The Indic text is showing improvements, but is still coming out
buggy.
LCD subpixel filtering using FreeType
- -------------------------------------
FreeType 2.3.5 added support for various LCD subpixel filtering, and
fontconfig 2.6.0 added support for configuring LCD filter on a font by font
basis. Cairo now relies on FreeType and fontconfig for subpixel filtering.
This work is based on David Turner's original patch to cairo, maintained
and tested by Sylvain Pasche and others. Thanks all!
Toy font face constructor and getter
- ------------------------------------
Mostly for API completion, but also useful for higher level (like Pango) to
hook into what the user has set using cairo_select_font_face(), making that
toy API a bit more useful.
FreeType: respecting FC_FT_FACE
- -------------------------------
Previously it was impossible to instruct cairo to do emboldening on a font
face object created from an FT_Face. Cairo now respects and uses the
FC_FT_FACE fontconfig pattern element, so emboldening can be achieved by
using cairo_ft_font_face_create_for_pattern() and a carefully crafted pattern
using FC_FT_FACE and FC_EMBOLDEN.
PS/PDF: More efficient output
- -----------------------------
Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF
backends, as well making them generate much more compact output by avoiding
things like re-emitting the color or linestyle on every drawing operation.
Thanks Adrian!
Xlib: Dithering
- ---------------
Cairo now does simple dithering when rendering to legacy X servers. This is
mostly visible with 8-bit visuals.
Xlib: Avoid rendering glyphs out of surface bounds
- --------------------------------------------------
This seemingly harmless change manifested a bug with OpenOffice.org 3 versions
where OO.o was passing bogus surface extents to cairo, resulting in no text
rendered in OO.o. Please contact your distro's OO.o maintainers if you see
this bug and point them to the following URL:
https://bugs.freedesktop.org/show_bug.cgi?id=16209
Xlib: Improved performance with Xrender-less X servers
- ------------------------------------------------------
Cairo now performs better on remote, Xrender-less X servers by being smarter
about using X core protocol facilities instead of falling back to doing all
rendering on the client side.
Directfb: backend improvements
- ------------------------------
The directfb backend, though still unsupported, has seen a good deal of
improvements. Thanks Vlad!
Bug fixing and optimizations
- ----------------------------
Countless bugs have been fixed and optimizations made, many of them thanks to
Chris Wilson. Thanks Chris!
API additions
- -------------
cairo_show_text_glyphs
This is a new text rendering API. Being a more advanced version of
cairo_show_glyphs(), it is aimed for use by higher-level text toolkits like
Pango, and enables better text extraction from output generated by backends
like PDF and SVG. The PDF backend already implements it, and the upcoming
Pango release will use it.
To make that API work, a bunch of other additions were made:
cairo_glyph_allocate
cairo_glyph_free
cairo_text_cluster_t
cairo_text_cluster_allocate
cairo_text_cluster_free
cairo_has_show_text_glyphs
cairo_user_font_face_create
This is the "user" font face constructor, accompanied by a variety of method
signatures, getters, and setters for a callback-based font backend:
CAIRO_FONT_TYPE_USER
cairo_user_scaled_font_init_func_t
cairo_user_scaled_font_render_glyph_func_t
cairo_user_scaled_font_text_to_glyphs_func_t
cairo_user_scaled_font_unicode_to_glyph_func_t
cairo_user_font_face_set_init_func
cairo_user_font_face_set_render_glyph_func
cairo_user_font_face_set_text_to_glyphs_func
cairo_user_font_face_set_unicode_to_glyph_func
cairo_user_font_face_get_init_func
cairo_user_font_face_get_render_glyph_func
cairo_user_font_face_get_text_to_glyphs_func
cairo_user_font_face_get_unicode_to_glyph_func
cairo_scaled_font_text_to_glyphs
We were previously reluctant to provide this function as text-to-glyphs
support in cairo was limited to "toy" font functionality, not really
interesting for real-world text processing. However, with user-fonts
landing, this API is needed to expose full access to how user-fonts
convert text to glyphs. This is expected to be used by text toolkits like
Pango, as well as "proxy" user-font implementations.
cairo_lcd_filter_t
cairo_font_options_set_lcd_filter
cairo_font_options_get_lcd_filter
These add the possibility to choose between various available LCD subpixel
filters. The available filter values are modeled after what FreeType
provides.
cairo_toy_font_face_create
cairo_toy_font_face_get_family
cairo_toy_font_face_get_slant
cairo_toy_font_face_get_weight
These provide access to functionality and settings provided by
cairo_select_font_face().
cairo_scaled_font_get_scale_matrix
cairo_surface_get_fallback_resolution
For API completeness.
Various new values for cairo_status_t enum
Known issues:
- - Type3 fonts generated by cairo's PDF backend may show up in poppler/Evince
in a different color than expected. This is fixed in poppler master branch.
This mostly affects cairo user fonts. The test case test/user-font.c
demonstrates this.
- - User fonts using other fonts in their rendering are currently embedded in
PDF as fallback bitmap glyphs. This will be (hopefully) fixed before 1.8.
The test case test/user-font-proxy.c demonstrates this.
From: Behdad Esfahbod <behdad@behdad.org>
Date: Mon, 11 Aug 2008 15:25:44 -0400 (12:25 PDT)
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.7.4 now available
A new cairo snapshot 1.7.4 is now available from:
http://cairographics.org/snapshots/cairo-1.7.4.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.7.4.tar.gz.sha1
c2b139a11336bf1c7a3423baff12ba949269a36b cairo-1.7.4.tar.gz
http://cairographics.org/snapshots/cairo-1.7.4.tar.gz.sha1.asc
(signed by Behdad Esfahbod)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.7.4 tag which points to a commit named:
012a12a67b66f3809fa203f91ff8920936c25361
which can be verified with:
git verify-tag 1.7.4
and can be checked out with a command such as:
git checkout -b build 1.7.4
Release 1.7.4 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>)
==============================================================
The cairo community is embarrassed to announce availability of the 1.7.4
snapshot of the cairo graphics library. This is a followup release to the
1.7.2 snapshot to ship a tarball that can actually be built. The only
change since 1.7.4 is including the missing header file
cairo-user-font-private.h in the distribution.
From: Carl Worth <cworth@cworth.org>
Date: Fri, 11 Apr 2008 10:24:54 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo release 1.6.2 now available
The cairo community is pleased (but somewhat sheepish) to announce the
1.6.2 release of the cairo graphics library. This is an update to
yesterday's 1.6.0 release with an important fix to prevent cairo's
PostScript output from crashing some printers. This release also
includes a locking fix for cairo's xlib backend to improve thread
safety. There are no changes beyond these two fixes. See below for
more details.
Have fun with cairo!
-Carl
Release 1.6.2 (2008-04-11 Carl Worth <cworth@cworth.org>)
=========================================================
A new cairo release 1.6.2 is now available from:
http://cairographics.org/releases/cairo-1.6.2.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.6.2.tar.gz.sha1
5b69fcab20c442df132515c1bfe10b9525f66de0 cairo-1.6.2.tar.gz
http://cairographics.org/releases/cairo-1.6.2.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.6.2 tag which points to a commit named:
5bc6fd71398f8aa902fcffe2da5d1e70fb94aa8a
which can be verified with:
git verify-tag 1.6.2
and can be checked out with a command such as:
git checkout -b build 1.6.2
Summary of changed from cairo 1.6.0 to 1.6.2
============================================
Fix for PostScript printer crash
--------------------------------
Adrian Johnson discovered that cairo 1.6.0 was being a bit hard on
PostScript printers, by changing the font matrix very frequently. This
causes some PostScript interpreters to allocate new font objects every
few glyphs, eventually exhausting available resources. The fix
involves leaving translational components of the font matrix as zero,
so that the PostScript interpreter sees an identical font matrix
repeatedly, and can more easily share internal font object resources.
This fix has been tested to resolve the bugs posted here, (for both
Xerox and Dell printers):
Printing some PDFs from evince is crashing our Xerox printer
http://bugs.freedesktop.org/show_bug.cgi?id=15348
Cairo-generated postscript blocks Dell 5100cn
http://bugs.freedesktop.org/show_bug.cgi?id=15445
Add missing locking in cairo-xlib
---------------------------------
Chris Wilson noticed that cairo 1.6.0 was manipulating an internal
cache of GC object within cairo's Xlib backend without proper
locking. The missing locking could cause failures for multi-threaded
applications. He fixed this in 1.6.2 by adding the missing locks.
Log of all commits from cairo 1.6.0 to 1.6.2
============================================
Adrian Johnson (1):
PS: Fix inefficient implementation of Tm/Td operators that was
crashing printers
Carl Worth (3):
Increment version to 1.6.1 after 1.6.0 release
NEWS: Add notes for 1.6.2 release
Increment version to 1.6.2
Chris Wilson (1):
[xlib] Add locking around GC cache.
From: Carl Worth <cworth@cworth.org>
Date: Fri, 11 Apr 2008 15:08:04 -0700
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo release 1.6.4 now available
The cairo community is wildly embarrassed to announce the 1.6.4
release of the cairo graphics library. This release reverts the xlib
locking change introduced in 1.6.2, (and the application crashes that
it caused). The community would be glad to sack its current release
manager and is accepting applications for someone who could do the job
with more discipline.
We do hope you'll have fun with cairo, and we also hope that the
recent spike in traffic on the cairo-announce mailing list is now
officially over.
-Carl
Release 1.6.4 (2008-04-11 Carl Worth <cworth@cworth.org>)
=========================================================
A new cairo release 1.6.4 is now available from:
http://cairographics.org/releases/cairo-1.6.4.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.6.4.tar.gz.sha1
9d990fe39a125ceb07221623c237cd7015855d5c cairo-1.6.4.tar.gz
http://cairographics.org/releases/cairo-1.6.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.6.4 tag which points to a commit named:
08a804806355d99d7968976d6afb98bbc0f2613d
which can be verified with:
git verify-tag 1.6.4
and can be checked out with a command such as:
git checkout -b build 1.6.4
Revert 'add missing locking in cairo-xlib'
------------------------------------------
This change was introduced in cairo 1.6.2, but also introduced a bug
which causes many cairo-xlib applications to crash, (with a
segmentation fault inside of XSetClipMask). Instead of attempting
another fix for the broken fix, the change in 1.6.2 has been
reverted. The original bug which the change was addressing has been
present since at least cairo 1.4, so it is not expected that leaving
this bug unfixed will cause any new problems for applications moving
from cairo 1.4 to cairo 1.6.
At this point, the code of cairo 1.6.4 differs from cairo 1.6.0 only
in the fix for the PostScript-printer crashes.
Tweak build to avoid linking with g++
-------------------------------------
Cairo 1.6.4 avoids a quirk in automake that was causing the cairo
library to be linked with g++ and linked against libstdc++ even when
only C source files were compiled for the library.
Cairo 1.6.4 still includes all the good things from cairo 1.6.0, so
that announcement is repeated here:
The cairo community is quite pleased to announce the 1.6.0 release of
the cairo graphics library. This is a major update to cairo, with new
features and enhanced functionality which maintains compatibility for
applications written using cairo 1.4, 1.2, or 1.0. We recommend that
anybody using a previous version of cairo upgrade to cairo 1.6.4.
The most significant new features in this release are dramatically
improved PDF and PostScript[*] output, support for arbitrary X server
visuals (including PseudoColor), a new Quartz backend, and a new
"win32 printing" backend. See below for more details on these and
other new features.
Have fun with cairo!
-Carl
Summary of changes from cairo 1.4 to 1.6.0
==========================================
[Note: For people following along, there have been no code changes at
all from the cairo 1.5.20 snapshot to cairo 1.6.0]
New dependency on external pixman library (Thanks, Søren!)
----------------------------------------------------------
As of cairo 1.6, cairo now depends on the pixman library, for which
the latest release can be obtained alongside cairo:
http://cairographics.org/releases/pixman-0.10.0.tar.gz
This library provides all software rendering for cairo, (the
implementation of the image backend as well as any image fallbacks
required for other backends). This is the same code that was
previously included as part of cairo itself, but is now an external
library so that it can be shared by both cairo and by the X server,
(which is where the code originated).
Improved PDF, PostScript, and SVG output (Thanks, Adrian!)
----------------------------------------------------------
Users of the cairo-pdf, cairo-ps, and cairo-svg should see a dramatic
improvement from cairo 1.2/1.4 to 1.6. With this release there are now
almost no operations that will result in unnecessary rasterization in
the PDF and PostScript. Rasterized "image fallbacks" are restricted
only to minimal portions of the document where something is being
drawn with cairo that is beyond the native capabilities of the
document, (this is rare for PDF or SVG, but occurs when blending
translucent objects for PostScript).
This means that the final output will be of higher quality, and will
also be much smaller, and therefore will print more quickly. The
machinery for doing analysis and minimal fallbacks also benefits the
win32-printing surface described below.
In addition to doing less rasterization, the PostScript and PDF output
also has several other improvements to make the output more efficient
and more compatible with specifications.
[*] Note: Just before this release, a bug has been reported that the
PostScript output from cairo can crash some printers, (so far the
following models have been reported as problematic Xerox Workcentre
7228 or 7328 and Dell 5100cn). We will implement a workaround as soon
as we can learn exactly what in cairo's output these printers object
to, (and we could use help from users that have access to misbehaving
printers). This bug is being tracked here:
Printing some PDFs from evince is crashing our Xerox printer
http://bugs.freedesktop.org/show_bug.cgi?id=15348
New support for arbitrary X server visuals (Thanks, Keith and Behdad!)
----------------------------------------------------------------------
As of cairo 1.6, cairo should now work with an arbitrary TrueColor or
8-bit PseudoColor X server visual. Previous versions of cairo did not
support these X servers and refused to draw anything. We're pleased to
announce that this limitation has been lifted and people stuck with
ancient display systems need no longer be stuck with ancient software
just because of cairo.
New, supported Quartz backend for Mac OS X (Thanks, Brian and Vladimir!)
------------------------------------------------------------------------
As of cairo 1.6, the cairo-quartz backend is now marked as "supported"
rather than "experimental" as in previous cairo releases. Its API now
has guarantees of API stability into future cairo releases, and its
output quality is comparable to other backends. There have been
significant improvements to cairo-quartz since 1.4. It now uses many
fewer image fallbacks, (meaning better performance), and has greatly
improved text rendering.
New, "win32 printing" backend (Thanks, Adrian and Vladimir!)
------------------------------------------------------------
A new win32-printing surface has been added with an interface very
similar to the original win32 surface, (both accept an HDC
parameter). But this new surface should only be called with a printing
DC, and will result in all drawing commands being stored into a
meta-surface and emitted after each page is complete. This allows
cairo to analyze the contents, (as it does with PDF, PostScript, and
SVG backends), and to do minimal image-based fallbacks as
necessary. The analysis keeps things as efficient as possible, while
the presence of fallbacks, (when necessary), ensure the consistent,
high-quality output expected from cairo.
Robustness fixes (Thanks, Chris!)
---------------------------------
There has been a tremendous number of improvements to cairo's
robustness. Areas that have been improved include:
* Proper reporting of errors
* Responding correctly to invalid input
* Avoiding integer overflows
* Avoiding memory leaks on error-recovery paths
* Making reference counting thread safe
* Exhaustive testing of memory allocation points
Other fixes (Thanks, everybody!)
--------------------------------
Cairo's internal fixed-point representation has been changed from
16.16 to 24.8. This has a direct impact on applications as it allows
much larger objects to be drawn before internal limits in cairo make
the drawing not work.
The `CAIRO_EXTEND_PAD` mode is now fully supported by surface
patterns. This mode allows applications to use `cairo_rectangle` and
`cairo_fill` to draw scaled images with high-quality bilinear filtering
for the internal of the image, but without any objectionably blurry
edges, (as would happen with the default `EXTEND_NONE` and cairo_paint).
Rendering with `CAIRO_ANTIALIAS_NONE` has been fixed to be more
predictable, (previously image rendering and geometry rendering would
be slightly misaligned with respect to each other).
The reference manual at http://cairographics.org/manual now documents
100% of the functions and types in cairo's public API.
API additions
-------------
Several small features have been added to cairo with new API functions:
`cairo_format_stride_for_width`
Must be called to compute a properly aligned stride value before
calling `cairo_image_surface_create_for_data`.
`cairo_has_current_point`
Allows querying if there is a current point defined for the
current path.
`cairo_path_extents`
Allows querying for path extents, (independent of any fill or
stroke parameters).
`cairo_surface_copy_page`
`cairo_surface_show_page`
Allow beginning a new document page without requiring a cairo_t
object.
`cairo_ps_surface_restrict_to_level`
`cairo_ps_get_levels`
`cairo_ps_level_to_string`
`cairo_ps_surface_set_eps`
Allow controlling the Post PostScript level, (2 or 3), to
target, as well as to generate Encapsulated PostScript (EPS).
`cairo_quartz_font_face_create_for_cgfont`
Create a quartz-specific `cairo_font_face_t` from a CGFontRef.
`cairo_win32_font_face_create_for_logfontw_hfont`
Create a win32-specific `cairo_font_face_t` from a LOGFONTW and an
HFONT together.
Thanks, Everyone!
-----------------
I've accounted for 32 distinct people with attributed code added to
cairo between 1.4.14 and 1.6.0, (their names are below). That's an
impressive number, but there are certainly dozens more that
contributed with testing, suggestions, clarifying questions, and
encouragement. I'm grateful for the friendships that have developed as
we have worked on cairo together. Thanks to everyone for making this
all so much fun!
Adrian Johnson, Alp Toker, Antoine Azar, Behdad Esfahbod,
Benjamin Otte, Bernardo Innocenti, Bertram Felgenhauer,
Boying Lu, Brian Ewins, Carl Worth, Chris Heath, Chris Wilson,
Claudio Ciccani, Emmanuel Pacaud, Jeff Muizelaar, Jeremy Huddleston,
Jim Meyering, Jinghua Luo, Jody Goldberg, Jonathan Gramain,
Keith Packard, Ken Herron, Kouhei Sutou, Kristian Høgsberg,
Larry Ewing, Martin Ejdestig, Nis Martensen, Peter Weilbacher,
Richard Hult, Shailendra Jain, Søren Sandmann Pedersen,
Vladimir Vukicevic
From: Carl Worth <cworth@cworth.org>
Date: Thu, 10 Apr 2008 17:57:48 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org, pr@lwn.net
Subject: cairo release 1.6.0 now available
The cairo community is quite pleased to announce the 1.6.0 release of
the cairo graphics library. This is a major update to cairo, with new
features and enhanced functionality which maintains compatibility for
applications written using cairo 1.4, 1.2, or 1.0. We recommend that
anybody using a previous version of cairo upgrade to cairo 1.6.0.
The most significant new features in this release are dramatically
improved PDF and PostScript[*] output, support for arbitrary X server
visuals (including PseudoColor), a new Quartz backend, and a new
"win32 printing" backend. See below for more details on these and
other new features.
Have fun with cairo!
-Carl
The new cairo 1.6.0 release is now available from:
http://cairographics.org/releases/cairo-1.6.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.6.0.tar.gz.sha1
49d9d4c4796021c3ed02e5072e8ffe3a00ee4a77 cairo-1.6.0.tar.gz
http://cairographics.org/releases/cairo-1.6.0.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.6.0 tag which points to a commit named:
d6263bec89bcd1565fb0f56a9840cd6f7761097f
which can be verified with:
git verify-tag 1.6.0
and can be checked out with a command such as:
git checkout -b build 1.6.0
Summary of changes from cairo 1.4 to 1.6.0
==========================================
[Note: For people following along, there have been no code changes at
all from the cairo 1.5.20 snapshot to cairo 1.6.0]
New dependency on external pixman library (Thanks, Søren!)
----------------------------------------------------------
As of cairo 1.6, cairo now depends on the pixman library, for which
the latest release can be obtained alongside cairo:
http://cairographics.org/releases/pixman-0.10.0.tar.gz
This library provides all software rendering for cairo, (the
implementation of the image backend as well as any image fallbacks
required for other backends). This is the same code that was
previously included as part of cairo itself, but is now an external
library so that it can be shared by both cairo and by the X server,
(which is where the code originated).
Improved PDF, PostScript, and SVG output (Thanks, Adrian!)
----------------------------------------------------------
Users of the cairo-pdf, cairo-ps, and cairo-svg should see a dramatic
improvement from cairo 1.2/1.4 to 1.6. With this release there are now
almost no operations that will result in unnecessary rasterization in
the PDF and PostScript. Rasterized "image fallbacks" are restricted
only to minimal portions of the document where something is being
drawn with cairo that is beyond the native capabilities of the
document, (this is rare for PDF or SVG, but occurs when blending
translucent objects for PostScript).
This means that the final output will be of higher quality, and will
also be much smaller, and therefore will print more quickly. The
machinery for doing analysis and minimal fallbacks also benefits the
win32-printing surface described below.
In addition to doing less rasterization, the PostScript and PDF output
also has several other improvements to make the output more efficient
and more compatible with specifications.
[*] Note: Just before this release, a bug has been reported that the
PostScript output from cairo can crash some printers, (so far the
following models have been reported as problematic Xerox Workcentre
7228 or 7328 and Dell 5100cn). We will implement a workaround as soon
as we can learn exactly what in cairo's output these printers object
to, (and we could use help from users that have access to misbehaving
printers). This bug is being tracked here:
Printing some PDFs from evince is crashing our Xerox printer
http://bugs.freedesktop.org/show_bug.cgi?id=15348
New support for arbitrary X server visuals (Thanks, Keith and Behdad!)
----------------------------------------------------------------------
As of cairo 1.6, cairo should now work with an arbitrary TrueColor or
8-bit PseudoColor X server visual. Previous versions of cairo did not
support these X servers and refused to draw anything. We're pleased to
announce that this limitation has been lifted and people stuck with
ancient display systems need no longer be stuck with ancient software
just because of cairo.
New, supported Quartz backend for Mac OS X (Thanks, Brian and Vladimir!)
------------------------------------------------------------------------
As of cairo 1.6, the cairo-quartz backend is now marked as "supported"
rather than "experimental" as in previous cairo releases. Its API now
has guarantees of API stability into future cairo releases, and its
output quality is comparable to other backends. There have been
significant improvements to cairo-quartz since 1.4. It now uses many
fewer image fallbacks, (meaning better performance), and has greatly
improved text rendering.
New, "win32 printing" backend (Thanks, Adrian and Vladimir!)
------------------------------------------------------------
A new win32-printing surface has been added with an interface very
similar to the original win32 surface, (both accept an HDC
parameter). But this new surface should only be called with a printing
DC, and will result in all drawing commands being stored into a
meta-surface and emitted after each page is complete. This allows
cairo to analyze the contents, (as it does with PDF, PostScript, and
SVG backends), and to do minimal image-based fallbacks as
necessary. The analysis keeps things as efficient as possible, while
the presence of fallbacks, (when necessary), ensure the consistent,
high-quality output expected from cairo.
Robustness fixes (Thanks, Chris!)
---------------------------------
There has been a tremendous number of improvements to cairo's
robustness. Areas that have been improved include:
* Proper reporting of errors
* Responding correctly to invalid input
* Avoiding integer overflows
* Avoiding memory leaks on error-recovery paths
* Making reference counting thread safe
* Exhaustive testing of memory allocation points
Other fixes (Thanks, everybody!)
--------------------------------
Cairo's internal fixed-point representation has been changed from
16.16 to 24.8. This has a direct impact on applications as it allows
much larger objects to be drawn before internal limits in cairo make
the drawing not work.
The `CAIRO_EXTEND_PAD` mode is now fully supported by surface
patterns. This mode allows applications to use `cairo_rectangle` and
`cairo_fill` to draw scaled images with high-quality bilinear filtering
for the internal of the image, but without any objectionably blurry
edges, (as would happen with the default `EXTEND_NONE` and cairo_paint).
Rendering with `CAIRO_ANTIALIAS_NONE` has been fixed to be more
predictable, (previously image rendering and geometry rendering would
be slightly misaligned with respect to each other).
The reference manual at http://cairographics.org/manual now documents
100% of the functions and types in cairo's public API.
API additions
-------------
Several small features have been added to cairo with new API functions:
`cairo_format_stride_for_width`
Must be called to compute a properly aligned stride value before
calling `cairo_image_surface_create_for_data`.
`cairo_has_current_point`
Allows querying if there is a current point defined for the
current path.
`cairo_path_extents`
Allows querying for path extents, (independent of any fill or
stroke parameters).
`cairo_surface_copy_page`
`cairo_surface_show_page`
Allow beginning a new document page without requiring a cairo_t
object.
`cairo_ps_surface_restrict_to_level`
`cairo_ps_get_levels`
`cairo_ps_level_to_string`
`cairo_ps_surface_set_eps`
Allow controlling the Post PostScript level, (2 or 3), to
target, as well as to generate Encapsulated PostScript (EPS).
`cairo_quartz_font_face_create_for_cgfont`
Create a quartz-specific `cairo_font_face_t` from a CGFontRef.
`cairo_win32_font_face_create_for_logfontw_hfont`
Create a win32-specific `cairo_font_face_t` from a LOGFONTW and an
HFONT together.
Thanks, Everyone!
-----------------
I've accounted for 32 distinct people with attributed code added to
cairo between 1.4.14 and 1.6.0, (their names are below). That's an
impressive number, but there are certainly dozens more that
contributed with testing, suggestions, clarifying questions, and
encouragement. I'm grateful for the friendships that have developed as
we have worked on cairo together. Thanks to everyone for making this
all so much fun!
Adrian Johnson, Alp Toker, Antoine Azar, Behdad Esfahbod,
Benjamin Otte, Bernardo Innocenti, Bertram Felgenhauer,
Boying Lu, Brian Ewins, Carl Worth, Chris Heath, Chris Wilson,
Claudio Ciccani, Emmanuel Pacaud, Jeff Muizelaar, Jeremy Huddleston,
Jim Meyering, Jinghua Luo, Jody Goldberg, Jonathan Gramain,
Keith Packard, Ken Herron, Kouhei Sutou, Kristian Høgsberg,
Larry Ewing, Martin Ejdestig, Nis Martensen, Peter Weilbacher,
Richard Hult, Shailendra Jain, Søren Sandmann Pedersen,
Vladimir Vukicevic
From: Carl Worth <cworth@cworth.org>
Date: Tue, 08 Apr 2008 03:11:25 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.20 now available
A new cairo snapshot 1.5.20 is now available from:
http://cairographics.org/snapshots/cairo-1.5.20.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.20.tar.gz.sha1
c7793ca5f0e6a9b09dd10394d67629796fc5380e cairo-1.5.20.tar.gz
http://cairographics.org/snapshots/cairo-1.5.20.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.20 tag which points to a commit named:
aadbaf7d990d0d5cd7c25cc856dbcfcc357b44f1
which can be verified with:
git verify-tag 1.5.20
and can be checked out with a command such as:
git checkout -b build 1.5.20
This is the tenth snapshot in cairo's unstable 1.5 series. It comes
just two days (and only one working day) after the 1.5.18
snapshot. The quick snapshot is due to two embarrassing bugs (both
affecting cairo-xlib) that had been introduced in the 1.5.18
snapshot. The fixes for these are described below along with a few
other fixes, (which hopefully aren't introducing new bugs this time).
We're hopeful that this release candidate holds up better than the
last one, and that we'll be able to make a 1.6.0 release soon with no
major code changes from this snapshot.
Have fun with cairo, everybody!
-Carl
Major changes from cairo 1.5.18 to cairo 1.5.20
===============================================
cairo-xlib
----------
Revert fix from 1.5.18 to allow pattern expansion based on the filter
mode. This fix seemed so boring, (the use case it addresses is almost
never used in practice), that it didn't even get mentioned in the
1.5.18 release notes. However, the "fix" happened to break rendering
that is always used resulting in corrupt image rendering in mozilla,
evolution, and probably everything else that uses cairo.
Fix to avoid BadMatch errors in cairo_surface_create_similar. These
were introduced, (inadvertently, of course), as part of the fix in
1.5.18 for creating similar surfaces without the Render
extension. Again, thanks to mozilla, (and Vladimir Vukicevic in
particular), for noticing our mistake.
general
-------
Correctly handle an in-error surface in
cairo_surface_write_to_png. Previously this function would cause an
assertion failure if you gave it a finished surface. Now it cleanly
returns a CAIRO_STATUS_SURFACE_FINISHED result instead.
Avoid potentially infinite wandering through memory inside
_cairo_hull_prev_valid. Thanks to Jonathan Watt for noticing this
problem:
https://bugzilla.mozilla.org/show_bug.cgi?id=306649#c21
cairo-pdf
---------
Fix generation of "soft" masks made by drawing to a similar surface
and then calling cairo_mask_surface() with it.
cairo-svg
---------
Fix for code that uses cairo_mask() on an intermediate surface which
is later passed to cairo_mask_surface().
From: Carl Worth <cworth@cworth.org>
Date: Sun, 06 Apr 2008 03:31:08 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.18 now available
A new cairo snapshot 1.5.18 is now available from:
http://cairographics.org/snapshots/cairo-1.5.18.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.18.tar.gz.sha1
68d9e7fed9158d8584cf8a7831fe7b3441f7970f cairo-1.5.18.tar.gz
http://cairographics.org/snapshots/cairo-1.5.18.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.18 tag which points to a commit named:
6d6c8aa643603c2b5fd7baedc897d4698ba8bafb
which can be verified with:
git verify-tag 1.5.18
and can be checked out with a command such as:
git checkout -b build 1.5.18
This is the ninth snapshot in cairo's unstable 1.5 series. It comes
just 4 days after the 1.5.16 snapshot. We had hoped to not need
another snapshot before the final 1.6.0 release, but several critical
bugs were found and fixed in the last few days, so we thought it
important to let people test the fixes with this snapshot. See below
for details.
Have fun with cairo!
-Carl
Summary of changes from cairo 1.5.16 to 1.5.18
==============================================
documentation
-------------
The README now lists necessary dependencies.
Various graphics state defaults are now documented, (source pattern is
opaque black, line width is 2.0, line join is miter, line cap is butt,
miter limit is 10.0, etc.).
general
-------
Several cleanups have been made along many error-path returns,
(carefully propagating up the original error status values, cleaning
up memory leaks during error recovery, etc.). This is yet another in
Chris "ickle" Wilson's long series of error-handling cleanups during
the 1.5 series.
Avoid undesired clipping when drawing scaled surface patterns with
bilinear filtering.
cairo-pdf
---------
Fix emission of 1-bit alpha masks in PDF output.
Fix a bug that would cause glyphs to be misplaced along the Y axis:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136
Originally, an issue about a crash, but later leading to the
misplaced glyphs issue being discovered.
cairo-ps
--------
Fix misplaced glyphs in cairo's PostScript output.
This issue occurs when consecutive glyphs are placed far
apart. This case is exercised by the new ft-show-glyphs-table test
case, which was originally inspired by the Debian bug #23474136
mentioned above.
Fix more misplaced glyphs in cairo's PostScript output:
The issue here showed up under very particular circumstance, (when
converting a PDF file with a CFF font with CID Identity-H encoding
and using glyph 0, (defined by the CFF specification as .notdef)
as a space instead). More concretely, this problem appeared when
converting the UbuntuDesktop.pdf file mentioned in this bug
report:
https://bugs.freedesktop.org/show_bug.cgi?id=15348#c3
As usual with arcane font-encoding-specific bugs like this, many
thanks to Adrian Johnson for his magical ability to dive into
specifications and emerge almost instantaneously with fixes. And
thanks to Sebastien Bacher for bringing the bug to our attention.
cairo-xlib
----------
Fix serious failure on X servers without the Render extension.
Since the 1.5.14 snapshot (with support for PseudoColor visuals),
any application attempting to create a "similar" xlib surface would
fail on an X server without the Render extension. Thanks to
Frederic Crozat for pointing out that cairo's test suite was
entirely failing when run against Xvfb.
Avoid crashing cairo-xlib applications for too-large glyphs
Naively sending glyphs of any size to the X server will eventually
violate the X limit on maximum request sizes. We now properly
detect when a glyph would be too large and use existing fallbacks
to render the glyph rather than trying to send it to the X server.
Enable the buggy_repeat workaround for Xorg servers < 1.4
We have determined that Xorg 1.3.0 (as packaged in Fedora 8 at
least) has a bug that can result in an X server crash when cairo
uses certain X Render repeat operations, (as exercised by cairo's
extend-reflect test). We avoid this crash by using fallbacks
whenever a repeating surface is needed for any Xorg server with a
version less than 1.4. This is slower, but should prevent the
crash.
(Meanwhile, there appears to be a separate bug where some X
servers or specific X-server drivers will use random pixmap data
when asked to draw a repeating surface. The buggy_repeat
workaround would also avoid those problems, but we have not yet
characterized whether the new "version < 1.4" is a good
characterization of those problems or not.)
cairo-quartz-font
-----------------
Implement cairo_font_extents for this backend.
The cairo-quartz-font implementation added in the 1.5.14 snapshot was
entirely missing support for the cairo_font_extents function. Thanks to
Richard Hult for pointing out this obvious shortcoming, (and obvious
lack of coverage in our test suite):
CGFont backend returns 0 font extents
https://bugs.freedesktop.org/show_bug.cgi?id=15319
From: Carl Worth <cworth@cworth.org>
Date: Tue, 01 Apr 2008 16:25:32 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.16 now available
A new cairo snapshot 1.5.16 is now available from:
http://cairographics.org/snapshots/cairo-1.5.16.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.16.tar.gz.sha1
46e08f540f0abf18dea4b889c82455c556c50f2e cairo-1.5.16.tar.gz
http://cairographics.org/snapshots/cairo-1.5.16.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.16 tag which points to a commit named:
5366c8f483dc7bd40b5d0a184c9b16826007c032
which can be verified with:
git verify-tag 1.5.16
and can be checked out with a command such as:
git checkout -b build 1.5.16
This is the eighth snapshot in cairo's unstable 1.5 series. It comes
less than two weeks after the 1.5.14 snapshot and it really is a
legitimate snapshot, (in spite of sharing this date with that of many
bogus announcements). The major change in this snapshot is that the
cairo-quartz backend is now officially "supported", including new API
to construct a font face from a CGFontRef . Also several bug fixes
have been fixed in many backends. See below for details.
This is definitely a "release candidate" snapshot for cairo 1.6.0. At
this point all significant items from the cairo 1.6.0 roadmap are
already in this snapshot. See:
http://cairographics.org/roadmap
At this point, the only change we are planning to make before cairo
1.6 is to change the setting of the infamous buggy_repeat flag,
(depending on what we learn from characterizing which X server/driver
versions exhibit bugs). We don't anticipate any other changes unless
people identify bugs. So please let us know if you find anything. We
plan to release cairo 1.6 by the end of this week.
Have fun with cairo!
-Carl
What's new in cairo 1.5.16 compared to cairo 1.5.14
===================================================
general
-------
Cairo now depends on pixman 0.10.0 which was recently released. The
latest pixman release can always be found alongside cairo releases at:
http://cairographics.org/releases
Increase the precision of color stops for gradients. This fixes a
regression in gradient rendering that had been present since the
1.5.12 snapshot.
paginated (all of ps, pdf, svg, and win32-printing)
---------------------------------------------------
Fix assertion failure when some drawing elements are outside the page
boundaries, (this bug was noticed when using Inkscape to print a
drawing with landscape orientation to a portrait-oriented piece of
paper).
cairo-ps
--------
Fix of bug causing incorrect glyph positioning.
Fix handling of CAIRO_OPERATOR_SOURCE.
cairo-pdf
---------
More reduction of unnecessary digits of precision in PDF output.
Fix handling of CAIRO_OPERATOR_SOURCE.
cairo-svg
---------
Fix bug in usage of libpng that was preventing cairo_mask from working
with the svg backend.
Fix transformation of source pattern for cairo_stroke().
cairo-win32-printing
--------------------
Fix fallback resolution, (thanks again to inkscape users/developers
for helping us find this one).
cairo-quartz
------------
Mark the cairo-quartz backend as "supported" rather than
"experimental". This means the following:
* The backend will now be built by default (if possible).
* We are committing that the backend-specific API (as published in
cairo-quartz.h) are stable and will be supported in all future
cairo 1.x releases.
* We are committing that the output quality of this backend
compares favorably with other cairo backends, (and that quality
is ensured by good results from the cairo test suite).
* We recommend that distributions build and distribute this
backend when possible.
Note that the cairo_quartz_image API (in cairo-quartz-image.h) is
still experimental, will not build by default, (pass
--enable-quartz-image to configure to build it), and may see API
changes before it is marked as "supported" in a future release.
Put the CAIRO_FONT_TYPE_ATSUI name back into
cairo-deprecated.h. Without this, the cairo 1.5.14 snapshot broke all
builds for applications using the C++ cairomm bindings (and perhaps
others) which have the CAIRO_FONT_TYPE_ATSUI name in their header
files. This breakage happened even for applications not using
cairo-quartz at all.
Note: Even though the CAIRO_FONT_TYPE_ATSUI name is provided to
avoid this build breakage, we still recommend that bindings and
applications move to the new, and more accurate,
CAIRO_FONT_TYPE_QUARTZ name.
Replace the implementation of cairo-quartz-font to use CGFont instead
of ATSUI. The CGFont API is a better fit than ATSUI, and this new
implementation is also more correct than the old one as well.
This also adds the following new API call:
cairo_public cairo_font_face_t *
cairo_quartz_font_face_create_for_cgfont (CGFontRef font);
The previous cairo_quartz_font_face_create_for_atsu_font_id function
continues to exist and is part of the supported API going
forward. (However, the old name of that same function, which was
cairo_atsui_font_face_create_for_atsu_font_id is officially
deprecated. Any source code using the old name should be updated to
use the new name.)
Fix transformation of source pattern for cairo_stroke().
cairo-win32
-----------
Avoid crash in create_similar is cairo_win32_surface_create fails.
From: Carl Worth <cworth@cworth.org>
Date: Thu, 20 Mar 2008 17:08:01 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.14 now available
A new cairo snapshot 1.5.14 is now available from:
http://cairographics.org/snapshots/cairo-1.5.14.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.14.tar.gz.sha1
af40870b3ec62bbdeaecdf3ea4cce23919fedc42 cairo-1.5.14.tar.gz
http://cairographics.org/snapshots/cairo-1.5.14.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.14 tag which points to a commit named:
f4d4d7b3d0bd62af6ffd50ba9cd8df0b9a12be71
which can be verified with:
git verify-tag 1.5.14
and can be checked out with a command such as:
git checkout -b build 1.5.14
This is the seventh snapshot in cairo's unstable 1.5 series. It comes
3 weeks after the 1.5.12 snapshot. This snapshot includes support for
arbitrary X server visuals, (including PseudoColor), which was the
final remaining cairo-specific item on the cairo 1.6 roadmap. It also
includes a huge number of improvements to the cairo-quartz backend. So
this is effectively a cairo 1.6 release candidate. We expect very few
changes from now until 1.6 and only for specific bug fixes. See below
for more about what's new in cairo 1.5.14.
We do appreciate any testing and feedback you can provide. In
particular, if you know of a bug in cairo 1.5.14 that you'd like to
see fixed before 1.6.0 and that bug isn't exercised by the cairo test
suite, then please make loud noises on the cairo mailing list so that
we know about it.
Have fun with cairo!
-Carl
Changes from cairo 1.5.12 to 1.5.14
===================================
API Change
----------
Rename ATSUI font backend to Quartz font backend. This affects the
following usage:
--enable-atsui -> --enable-quartz-font
CAIRO_HAS_ATSUI_FONT -> CAIRO_HAS_QUARTZ_FONT
CAIRO_FONT_TYPE_ATSUI -> CAIRO_FONT_TYPE_QUARTZ
cairo_atsui_font_face_create_for_atsu_font_id ->
cairo_quartz_font_font_create_for_atsu_font_id
This API change is justified by the cairo-quartz backend still be
marked as "experimental" rather than "supported", (though this is one
step toward making the change to "supported" before 1.6). Cairo will
still provide ABI compatibility with the old symbol name, however.
paginated (all of ps, pdf, svg, and win32-printing)
---------------------------------------------------
Optimize by not analyzing an image surface for transparency more than
once, (previously all images were analyzed twice).
cairo-ps and cairo-pdf
----------------------
Avoiding emitting a matrix into the stroke output when unnecessary,
(making output size more efficient).
Reduce rounding error of path shapes by factoring large scale factors
out of the path matrix, (ensuring that a fixed-number of printed
digits for path coordinates contains as much information as possible).
Reduce excess digits for text position coordinates. This makes the
output file size much smaller without making the result any less
correct.
cairo-ps
--------
Eliminate bug causing extraneous text repetition on Linux PostScript
output in some cases.
See: Mozilla Bug 419917 – Printed page contents are reflected
inside bordered tables (Linux-only)
https://bugzilla.mozilla.org/show_bug.cgi?id=419917
Optimize output when EXTEND_PAD is used.
cairo-pdf
---------
Fix to not use fill-stroke operator with transparent fill, (else PDF
output doesn't match the cairo-defined correct result). See:
https://bugs.launchpad.net/inkscape/+bug/202096
cairo-svg
---------
Fix stroke of path with a non-solid-color source pattern:
http://bugs.freedesktop.org/show_bug.cgi?id=14556
cairo-quartz
------------
Fix text rendering with gradient or image source pattern.
Handling antialiasing correctly for cairo_stroke(), cairo_clip(), and
cairo_show_text()/cairo_show_glyphs().
Correctly handle gradients with non-identity transformations:
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=14248
Add native implementation of REPEAT and REFLECT extend modes for
gradients.
Fix implementation for the "unbounded" operators, (CAIRO_OPERATOR_OUT,
_IN, _DEST_IN, and _DEST_ATOP).
Correctly handle endiannees in multi-architecture compiles on Mac OS
X.
Avoid behavior which would cause Core Graphics to print warnings to
the console in some cases.
cairo-win32
-----------
Fix handling of miter limit.
cairo-win32-printing
--------------------
Fix to not use a 1bpp temporary surface in some cases while printing,
(so grayscale data is preserved rather than just becoming black and
white).
cairo-xlib
----------
Add support for rendering to arbitrary TrueColor X server
visuals. This fixes at least the following bugs:
cairo doesn't support 8-bit truecolor visuals
https://bugs.freedesktop.org/show_bug.cgi?id=7735
cairo doesn't support 655 xlib format
https://bugs.freedesktop.org/show_bug.cgi?id=9719
Add support for rendering to 8-bit PseudoColor X server visuals. This
fixes the following bug:
Cairo doesn't support 8-bit pseudocolor visuals
https://bugs.freedesktop.org/show_bug.cgi?id=4945
Unresolved issues (must be fixed before cairo 1.6)
--------------------------------------------------
XXX: Need to decide if cairo_image_surface_create_for_data should be
documented and tested as supporting an image with a negative
stride. Also need to decide the correct return value for
cairo_format_stride_for_width in case of any error.
Welcome, students!
The cairo graphics project is participating in Google Summer of Code 2008. This is a fantastic opportunity for students to gain experience with the free-software community, work closely with experts, and also make a valuable contribution to a significant project. More than that, working with the cairo graphics library and community is a lot of fun! (And Google even pays the student a little bit.)
Interested students should review Google's overview of the program and also the cairo project's ideas. Each idea in this list contains a short description of what the project would consist of, and also a difficulty rating (Easy, Medium, or Hard), so that students can better estimate their ability to complete the project.
Any student that sees an interesting project idea there should then subscribe to the cairo@cairographics.org mailing list and send an email off stating the project of interest. There on the list, the student can start to interact with potential mentors and learn more details about what the project will require.
Finally, between March 24 and March 31, (see Google's timeline for the exact cutoff dates/times) students will submit applications to the Summer of Code program. And then the real fun starts as mentors and students work together over the (northern hemisphere) summer to make cairo more excellent than ever.
We're pleased that you're interested in the cairo graphics library. And we hope that you enjoy playing with and improving this code. Have fun with cairo!
From: Carl Worth <cworth@cworth.org>
Date: Thu, 28 Feb 2008 16:15:31 -0800
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.12 now available
A new cairo snapshot 1.5.12 is now available from:
http://cairographics.org/snapshots/cairo-1.5.12.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.12.tar.gz.sha1
f101957fd0fbd76d9f670de95fc2a726b3d93262 cairo-1.5.12.tar.gz
http://cairographics.org/snapshots/cairo-1.5.12.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.12 tag which points to a commit named:
3ec4b9a4fc96572f099d0e9679fec9e5eb97a32e
which can be verified with:
git verify-tag 1.5.12
and can be checked out with a command such as:
git checkout -b build 1.5.12
This is the sixth snapshot in cairo's unstable 1.6 series. It comes
1 week after the 1.5.10 snapshot. This snapshot includes the
long-awaited change from 16.16 to 24.8 fixed-point values, (see below
for why you should care and some caveats). It also includes several
backend-specific bug fixes.
As always, we appreciate whatever testing can be done. The change to
24.8 coordinates is a fairly big change, (we found and fixed several
significant bugs after first making this change), so careful testing
will be particularly desired here.
The change to 24.8 coordinated was one of only very few requirements
on the short list of things to get done before 1.6. What remains is:
* Characterizing and working around an X server crash
triggered by the extend-reflect test.
* Adding support for more X server visuals (including
pseudocolor).
* Whatever needs to be done in pixman, (including lifting
16-bit limits as discussed below).
So that's looking like cairo 1.6 is very close, (and will come sooner
with your help!). You're all getting 24 free hours tomorrow, perhaps
you'll want to spend some improving cairo?
Have fun with cairo everybody!
-Carl
24.8 fixed-point format
-----------------------
Cairo has always converted path coordinates to a fixed-point
representation very early in its processing. Historically, this has
been a 32-bit representation with 16 bits of integer for the
device-pixel grid and 16 bits of sub-pixel positioning. The choice of
16 bits for the integer coordinate space was based on the 16-bit limit
for X Window drawables.
This 16-bit limit has proven problematic for many applications. It's
an especially vexing problem when targeting non-X backends that don't
have any 16-bit restriction. But even when targeting cairo-xlib, it's
often desirable to draw a large shape, (say a background rectangle),
that extends beyond the surface bounds and expect it to fill the
surface completely, (rather than overflowing and triggering random
behavior).
Meanwhile, nobody has ever really needed 16 bits of sub-pixel
precision.
With this snapshot, the fixed-point system is still in place and is
still using a 32-bit representation, (future versions of cairo might
move entirely to floating-point when targeting PDF output for
example). But the representation now provides 24 bits of pixel
addressing and only 8 bits of sub-pixel positioning. This should give
a much less stifling space to many applications.
However, the underlying pixman library still has 16-bit limitations in
many places, (it has its roots in the X server as well). Until those
are also fixed, applications targeting cairo image surfaces, or
hitting software fallbacks when targeting other surfaces will still
encounter problems with device-space values needing more than 16
integer bits.
generic fixes
-------------
Add a few tests to the test suite to increase coverage.
Cleanup a few error-handling paths, (propagate error correctly).
cairo-ft
--------
Fix handling of font sizes smaller than 1 device pixel.
cairo-pdf
---------
Fix to properly save/restore clip when analyzing meta-surface
patterns, (fixing a couple of test-suite failures).
Implement native support for CAIRO_OPERATOR_SOURCE when the source
pattern is opaque.
Emit rectangles as PDF rectangles ("re" operator) rather than as
general paths.
cairo-ps
--------
Fix to work properly with the 16.16->24.8 change.
cairo-svg
---------
Fix CAIRO_EXTEND_REFLECT by using an image fallback, (there's no
direct SVG support for reflected patterns).
Fix the use of alpha-only masks, (such as CAIRO_FORMAT_A8).
cairo-quartz
------------
Add new API for efficiently using image data as a source:
cairo_surface_t *
cairo_quartz_image_surface_create (cairo_surface_t *image_surface);
cairo_surface_t *
cairo_quartz_image_surface_get_image (cairo_surface_t *surface);
For full documentation, see:
http://cairographics.org/manual/cairo-Quartz-Surfaces.html#cairo-quartz-image-surface-create
Several fixes for cairo_mask().
cairo-atsui
-----------
Change default from from Monaco to Helvetica to be more consistent
with other font backends.
From: Carl Worth <cworth@cworth.org>
Date: Wed, 20 Feb 2008 10:22:17 -0800
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.10 now available
A new cairo snapshot 1.5.10 is now available from:
http://cairographics.org/snapshots/cairo-1.5.10.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.10.tar.gz.sha1
8c97a24f3297bade49508d833cf9218f42e88b8c cairo-1.5.10.tar.gz
http://cairographics.org/snapshots/cairo-1.5.10.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.10 tag which points to a commit named:
0f2ecb5ec65ff13c3aafbe57600c1906f3fe7978
which can be verified with:
git verify-tag 1.5.10
and can be checked out with a command such as:
git checkout -b build 1.5.10
This is the fifth snapshot in cairo's unstable 1.5 series. It comes 3
weeks after the 1.5.8 snapshot. This snapshot adds one new API
function, (cairo_has_current_point), and the usual mix of
improvements, (more efficient PostScript/PDF output, optimized
stroking), and fixes (more robust error-handling, etc.).
With this snapshot we're getting *really* close to cairo 1.6. The
number of test-suite failures is rapidly approaching zero and the
list of things still needing to be done is getting very short.
I am a bit disappointed to not have the change from 16.16 fixed point
to 24.8 fixed point in this snapshot. We did a ton of work to make
this possible, (including fixing the infinite loop bug it was exposing
earlier), and I even had the change in place just before releasing the
snapshot. But at the last moment we noticed that the change caused
some regressions in PS/PDF/SVG rendering, (pattern offsets are wrong
at least), so we pulled it out. But look for another snapshot soon
with that change. And see details below on what *did* make it in.
Do have fun with this. And try your best to break it. We're especially
interested in learning of any regressions in quality or performance of
1.5.10 compared to any 1.4.x release of cairo.
Enjoy,
-Carl
What's new in cairo 1.5.10 compared to cairo 1.5.8
==================================================
New API
-------
Add a new function to query if there is a current point:
cairo_bool_t
cairo_has_current_point (cairo_t *cr);
There is no current point immediately after cairo_create(), nor after
cairo_new_path() or cairo_new_sub_path(). There is a current point
after any of the path-creation functions, (cairo_move_to,
cairo_line_to, cairo_curve_to, etc.).
With this new function, we also revert the change of the return type
of cairo_get_current_point from cairo 1.5.8, (it's now a void function
again).
Optimizations
-------------
Optimize stroking code to avoid repeated calculation of redundant
values, (particularly significant for very large, offscreen paths).
General fixes
-------------
Patch a few more potential buffer overruns, (due to integer
overflow).
Many fixes and improvements to cairo's error-handling, (ensure that
correct error values are returned, clean up memory leaks on
error-handling paths, etc.).
Fix a potential infinite loop when stroking a spline with a pen that
has been transformed to a line segment.
Remove treating NULL as a synonym for a valid cairo_font_options_t*
with default values, (a change that had been introduced as of cairo
1.5.8).
Remove the altered handling of tolerance and fallback-resolution that
had been introduced as of cairo 1.5.4.
cairo-xlib
----------
Pass the original Drawable, (as opposed to the root window), to
XCreatePixmap when creating a similar surface. This gives the X server
more information so that it can be clever and efficient.
cairo-pdf
---------
Fix the rendering of repeating and reflecting patterns.
Ensure miter limit is always >= 1, (smaller limits are not meaningful,
but they can cause some PDF viewers to fail to display pages).
Generate more efficient output when the same path is used for both
fill and stroke.
cairo-ps
--------
Start sharing much of the cairo-pdf code rather than implementing very
similar code in cairo-ps.
Implement native support for repeating and reflecting linear
gradients.
Implement reflected surface patterns.
Ensure miter limit is always >= 1, (smaller limits are not meaningful,
but they can cause some PostScript viewers to crash).
Generate PostScript that will perform more efficiently and use less
memory on printers, (use currentfile instead of a giant string array
for image data, and avoid using PostScript patterns for paint() and
fill() when possible).
cairo-svg
---------
Avoid unnecessary rasterization when copying a "similar" surface to
another svg surface, (allow the SOURCE operator to be implemented with
all-vector operations if there are no underlying objects).
cairo-atsui
-----------
Eliminate infinite loop when attempting to render an empty string.
From: Carl Worth <cworth@cworth.org>
Date: Wed, 30 Jan 2008 05:44:02 -0800
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.8 now available
A new cairo snapshot 1.5.8 is now available from:
http://cairographics.org/snapshots/cairo-1.5.8.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.8.tar.gz.sha1
8ab70db0eec1db3b730537d9076ddabf7e0ba537 cairo-1.5.8.tar.gz
http://cairographics.org/snapshots/cairo-1.5.8.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.8 tag which points to a commit named:
4ccb8cb29546432858e778e1b88cada1327f6f45
which can be verified with:
git verify-tag 1.5.8
and can be checked out with a command such as:
git checkout -b build 1.5.8
This is the fourth snapshot in cairo's unstable 1.5 series. It comes 2
weeks after the 1.5.6 snapshot. It adds a few new API functions. Most
notably all callers of cairo_image_surface_create_for_data should now
be calling cairo_format_stride_for_width to compute a legal stride
value.
With this snapshot we are getting extrmely close to a final 1.6.0
release. We would appreciate as much testing as possible so that we
can eliminate bugs before that release rather than after. So give this
snapshot a try and let us know how things go for you.
And have fun with cairo!
-Carl
Changes in cairo 1.5.8 since 1.5.6
==================================
New API in cairo 1.5.8
----------------------
We've added a new function that should be called to compute a legal
stride value before allocating data to be used with
cairo_image_surface_create_for_data:
int
cairo_format_stride_for_width (cairo_format_t format,
int width);
We've also added a new cairo_path_extents function that can be used to
compute a bounding box for geometry such as a single line segment,
(contrast with cairo_path_extents and cairo_stroke_extents):
void
cairo_path_extents (cairo_t *cr,
double *x1, double *y1,
double *x2, double *y2);
And finally, we've added a function to allow for querying the
XRenderPictFormat of a cairo-xlib surface:
XRenderPictFormat *
cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface);
API changes
-----------
Fix return types of cairo_surface_show_page and
cairo_surface_copy_page. This is an API change to functions that are
new in the 1.5 series, so not an API break compared to any stable
cairo release, (1.0.x, 1.2.x, 1.4.x).
Change the return type of cairo_get_current_point() from void to
cairo_status_t. This allows the caller to receive a
CAIRO_STATUS_NO_CURRENT_POINT value to distinguish the a current point
at the origin from no current point existing.
Performance improvement
-----------------------
Improve performance of clipping by using an optimized code path
internally, (with the ADD operator instead of IN).
General bug fixes
-----------------
Fix various cairo_*_extents functions to initialize the return-value
variables even in the case of a cairo_t in error.
Treat NULL as a legitimate value for cairo_font_options_t*. [XXX: On
discussion afterwards, we decided against this change so we plan to
remove this again before 1.6.0]
Fix rendering with CAIRO_ANTIALIAS_NONE to be more predictable, (that
is, to avoid seams appearing when geometry and imagery share an
identical edge). Portions of this fix are in the pixman library and
will appear in a future release of that library.
Avoid triggering an error for a font size of 0.
Miscellaneous changes
---------------------
Require pixman >= 0.9.6.
There has been a tremendous amount improvement to cairo's
documentation. We're delighted that 100% of the public API has at
least some documentation in the API reference manual. Many thanks to
Behdad Esfahbod and Nis Martensen for leading this effort.
cairo-pdf and cairo-ps
----------------------
Eliminate failure when a Type 1 font is embedded with an explicit
glyph 0.
cairo-pdf
---------
Implement a more correct and more efficient approach for patterns with
an extend mode of CAIRO_EXTEND_REFLECT.
cairo-ps
--------
Fix image masks to properly pack and pad mask bits.
cairo-quartz
------------
Take care to only use DrawTiledImage for integer-aligned images, (and
use slower paths to get the correct result in other cases).
cairo-win32
-----------
Fix for older versions of mingw.
Improve the handling of the clipping with the win32 and win32-printing
surfaces.
Fix rendering of non black/white text.
From: Carl Worth <cworth@cworth.org>
Date: Wed, 16 Jan 2008 11:06:42 -0800
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.6 now available
A new cairo snapshot 1.5.6 is now available from:
http://cairographics.org/snapshots/cairo-1.5.6.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.6.tar.gz.sha1
101382fc6ad2e702f74acf5486a1fea45affa608 cairo-1.5.6.tar.gz
http://cairographics.org/snapshots/cairo-1.5.6.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.6 tag which points to a commit named:
d2a02d4f5ccb1c6dc7f8cca0c322b72f1638d25b
which can be verified with:
git verify-tag 1.5.6
and can be checked out with a command such as:
git checkout -b build 1.5.6
This is the third snapshot in cairo's unstable 1.5 series. It comes
about 6 weeks after the 1.5.4 snapshot. The only API addition compared
to 1.5.4 is very minor, (a new value CAIRO_STATUS_TEMP_FILE_ERROR).
The remainder of the changes are the usual accumulation of bug fixes
and improvements. See below for details.
We still have a few important fixes we'd like to finish up before we
make a 1.6.0 release. These include some long-standing failures, (like
running cairo with goofy X server visuals, or targeting alpha masks
with non-multiple-of-4-byte strides). Though, interestingly, a lot of
the work for those things will be in pixman not cairo.
But we'll be putting forth a renewed effort to try to get 1.6 ready by
the end of January, (some of us want to be able to relax at LCA). We
also expect that the Mozilla project will soon contribute any patches
that they want to see in cairo 1.6.
Have fun with cairo, everybody!
-Carl
Summary of changes from cairo 1.5.4 to cairo 1.5.6
==================================================
General bug fixes
-----------------
Fix handling of fonts that contain a mixture of outline and bitmapped
glyphs. There was a change in this handling in 1.5.4 that improved
some cases and also regressed other cases. Now, all cases should be
handled quite well.
Fix alignment issues that were causing SIGBUS failures on SPARC.
Fix a regression (which first appeared in 1.5.2) where stroking under
a large scale would sometimes incorrectly replace a miter join with a
bevel join. (Thanks to Keith Packard.)
Fix reporting of zero-sized extents to be {0,0} rather than
{INT_MAX,INT_MIN}. This avoids several integer overflow and
allocations of massive regions in some cases.
Fix failures of gradients with no stops, (quartz, ps, and pdf).
Fix handling of Type 1 fonts on Windows platforms.
Fix handling of Type 1 fonts with no specific family name in the font
itself, (generate a CairoFont-x-y name).
Handle NULL string values in cairo_show_text, cairo_show_glyphs, and
friends.
Many robustness improvements along error-handling paths, (thanks as
always, to Chris "ickle" Wilson).
Various other minor fixes.
Paginated backends (PDF/PostScript/win32-printing)
--------------------------------------------------
Avoid unnecessary rasterization when using a paginated surface as a
source, (such as drawing from one pdf surface to another).
Fix replaying of paginated surface with more than one level of push/pop
group.
cairo-xlib
----------
Fix xlib backend to not consider recent X server release as having a
buggy repeat implementation in the Render extension.
cairo-pdf
---------
Fix PDF output to avoid triggering very slow rendering in PDF viewers,
(avoid starting and stopping the content stream for each pattern
emission).
Support CAIRO_OPERATOR_SOURCE in cases where there is nothing below
the object being drawn.
Fix to avoid seams appearing between multiple fallback regions.
cairo-ps (PostScript)
---------------------
Use correct bounding box in Type 3 fonts.
Fix several bugs in cairo's PostScript output. These include making
the PostScript output more compatible with recent versions of
ghostscript that are more strict about Type 3 fonts, for
example.
Fix for win32 to not attempt to create temporary files in the root
directory, (where the user may not have write permission).
Avoid generating Level 3 PostScript if Level 2 is sufficient. Also,
add code in output documents to alert the user if Level 3 PostScript
is handed to a device that cannot handle PostScript beyond Level
2.
cairo-directfb
--------------
Various performance optimizations.
Fixed support for small surfaces (less than 8x8).
Provide support for environment variables CAIRO_DIRECTFB_NO_ACCEL to
disable acceleration and CAIRO_DIRECTFB_ARGB_FONT to enable ARGB fonts
instead of A8.
cairo-os2
---------
Allow OS/2 APIs instead of C library allocation functions.
From: Carl Worth <cworth@cworth.org>
Date: Mon, 14 Jan 2008 16:55:00 -0800
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo release 1.4.14 now available
A new cairo release 1.4.14 is now available from:
http://cairographics.org/releases/cairo-1.4.14.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.14.tar.gz.sha1
63310243ba8af949060b06c01fc28ee5471ed5a4 cairo-1.4.14.tar.gz
http://cairographics.org/releases/cairo-1.4.14.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.14 tag which points to a commit named:
bdd93f5e8eb5726315cca396240afe7a084348ae
which can be verified with:
git verify-tag 1.4.14
and can be checked out with a command such as:
git checkout -b build 1.4.14
This is the seventh update in cairo's stable 1.4 series. It comes
little more than a month after the 1.4.12 release. Compared to 1.4.12,
this release adds only a handful of bug fixes all of which were
cherry-picked from the 1.5 series. One of these fixes a miter-join
regression introduced during the 1.4.12 series. See below for details.
It would not be surprising if this were the last release in the 1.4
series. We're working hard on getting 1.6 out soon, and unless some
new, big bugs are discovered in 1.4.14, this will be the end of a good
run. We do recommend that anybody running any 1.4.x release, (and
particularly 1.4.12), consider upgrading to 1.4.14.
Have fun with cairo!
-Carl
Bugs fixed between cairo 1.4.12 and 1.4.14
==========================================
Fix a regression (which first appeared in 1.4.12) where stroking under
a large scale would sometimes incorrectly replace a miter join with a
bevel join. (Thanks to Keith Packard.)
Fix handling of fonts that contain a mixture of outline and bitmapped
glyphs. There was a change in this handling in 1.4.12 that improved
some cases and also regressed other cases. Now, all cases should be
handled quite well.
Fix xlib backend to not consider recent X server release as having a
buggy repeat implementation in the Render extension. (Thanks to
Bernardo Innocenti.)
Fix several bugs in cairo's PostScript output. These include making
the PostScript output more compatible with recent versions of
ghostscript that are more strict about Type 3 fonts, for
example. (Many thanks to Adrian Johnson.)
From: Carl Worth <cworth@cworth.org>
Date: Wed, 05 Dec 2007 02:31:16 -0800
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.4 now available
A new cairo snapshot 1.5.4 is now available from:
http://cairographics.org/snapshots/cairo-1.5.4.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.4.tar.gz.sha1
74f01fcea59631b077a823afd3a5146f63cb1c59 cairo-1.5.4.tar.gz
http://cairographics.org/snapshots/cairo-1.5.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.4 tag which points to a commit named:
e0c0275e1764502cfd1d0e93e374b4ed396f0073
which can be verified with:
git verify-tag 1.5.4
and can be checked out with a command such as:
git checkout -b build 1.5.4
This is the second snapshot in cairo's unstable 1.5 series. It comes
just over 1 month after the 1.5.2 snapshot. There are no API changes
or additions in 1.5.4 compared to 1.5.2, but there are several bug
fixes, and some optimizations. Most of these apply to particular
backends. See below for details.
-Carl
Description of major changes from 1.5.2 to 1.5.4
================================================
General improvements
--------------------
Use less memory for spline approximation calculations.
Change how the tolerance value is interpreted with regard to
fallback-resolution. [XXX: Is this user-visible? If so, how? Will
follow up on the cairo mailing list for more details.]
Fix precision of floating-point values in vector-output backends to
avoid rounding errors with very small numbers.
Xlib improvements
-----------------
Fix bug in glyph rendering with xlib, (due to everything being clipped
out). This was a regression in the 1.5.2 snapshot that was visible in
the GIMP, for example. See:
cairo 1.5.2 causes font problems in GIMP 2.4 status bar and evolution 2.12.1
https://bugs.freedesktop.org/show_bug.cgi?id=13084
[XXX: Are we interpreting "cairo_new_path;cairo_clip" as a request to
clip everything? That wouldn't be consistent with how we treat
cairo_new_path;cairo_fill, for example. Will follow up on cairo
mailing list for more details.]
PostScript improvements
-----------------------
Fix bug leading to invalid PostScript files when rendering
text, (need "0 0 xyshow" instead of "0 xyshow").
Fix many issues with Type 3 fonts, including making the resulting text
extractable.
Quartz improvements
-------------------
Fix font metrics height value for ATSUI, (helps webkit on GTK+ OS X
layout nicely).
Fix gradients.
Fix EXTEND_NONE mode for patterns.
Fix cairo_quartz_surface_create to properly clear the new surface
in cairo_quartz_surface_create.
Fix to correctly handle 0x0 sized surfaces.
Optimize drawing of EXTEND_REPEAT patterns for OS X 10.5.
From: Carl Worth <cworth@cworth.org>
Date: Tue, 27 Nov 2007 08:15:50 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo release 1.4.12 now available
A new cairo release 1.4.12 is now available from:
http://cairographics.org/releases/cairo-1.4.12.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.12.tar.gz.sha1
45d5257e5a0c1524bcc25660a96b2c79d012ad3f cairo-1.4.12.tar.gz
http://cairographics.org/releases/cairo-1.4.12.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.12 tag which points to a commit named:
442fa9a106b01f17699397dcc95298071a50fd6d
which can be verified with:
git verify-tag 1.4.12
and can be checked out with a command such as:
git checkout -b build 1.4.12
This is the sixth update in cairo's stable 1.4 series. It comes five
months after the 1.4.10 release. This fix includes various bug fixes
originally developed during the 1.5.x development and backported to
1.4.
We hope that this is a nice release, of similar robustness to 1.4.10
but with many additional fixes. Distributions might choose to use the
new 1.4.12 directly. Or the most conservative distributions might use
the 1.4.12 branch as a starting point for looking for the most
significant bug fixes to patch onto 1.4.10.
Have fun with cairo!
-Carl
Summary of changes in cairo 1.4.12 since 1.4.10
===============================================
Some of the most significant bug fixes prevent crashes:
* Avoid overflow when allocating large buffers (Vladimir Vukicevic)
* Fix crash with cairo_pattern_set_user_data (Carl Worth)
* Fix broken locking in cairo-ft error path (Chris Wilson)
* Avoid crash when cleaning up after Render extension (Carl Worth)
* Avoid crash for zero-sized bitmap glyph (Chris Wilson)
* Avoid crash with type-1 fonts and ft and atsui enabled (Brian Ewins)
* Fix many error-handling cases in the Quartz/ATSUI code (Brian Ewins)
* Eliminate cairo_stroke crash with scaling near zero (Carl Worth)
Other fixes address rendering problems:
* Fix PDF linear gradients without stops at 0.0 and 1.0 (Adrian Johnson)
* Fix PDF CFF subsetting to work with Apple Preview (Adrian Johnson)
* Report proper errors on out-of-memory on win32 (Vladimir Vukicevic)
* Fix EXTEND_NONE gradients for cairo-quartz (Brian Ewins)
* Fix odd-number-of-dashes dashing for cairo-quartz (Brian Ewins)
* Fix erroneous results from cairo_stroke_extents (Carl Worth)
* Force non-AA text when bitmap strikes are available (Keith Packard)
* Fix cairo-atsui font metrics (Richard Hult)
And some avoid raising cairo errors for innocent problems:
* Avoid drawing shutdown for glyph-not-found in font (Behdad Esfahbod)
* Don't raise an error for creating an empty path (Chris Wilson)
At least one optimization managed to sneak in:
* Free glyph surfaces after uploading to X server cache (Behdad Esfahbod)
And there are a few very minor fixes, (such as build fixes).
Note: For anyone attempting to backport these fixes to 1.4.10, please
take care since several of the fixes are spread across multiple
commits in cairo's history. And the related commits are not always
adjacent to each other. Please don't hesitate to ask for help or
review of anything you might do.
From: Carl Worth <cworth@cworth.org>
Date: Tue, 30 Oct 2007 22:47:52 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.5.2 now available
A new cairo snapshot 1.5.2 is now available from:
http://cairographics.org/snapshots/cairo-1.5.2.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.5.2.tar.gz.sha1
39d6593433ce4896a065a6c4ad2882a5cc1fe05a cairo-1.5.2.tar.gz
http://cairographics.org/snapshots/cairo-1.5.2.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.5.2 tag which points to a commit named:
ee5dc04aaf81d6ce9c496c7966ceebfbd6ab12fb
which can be verified with:
git verify-tag 1.5.2
and can be checked out with a command such as:
git checkout -b build 1.5.2
This is the first snapshot in cairo's unstable 1.5 series. It comes 4
months after the 1.4.10 release. This snapshot includes significant
improvements to PDF and PostScript output, which is one of the things
in which we're most interested in getting feedback. There are a couple
of minor API additions, and several optimizations, (primarily in the
"print/vector" backends). And there are dozens of bug fixes and
robustness improvements.
NOTE: This is a snapshot of in-progress development, not a "release".
So it is expected that there will be more rough edges than one would
find in a major release. For example, various tests in the test suite
are currently failing against the PDF backend, and we'll get those
fixed before the 1.6 release. But you're likely to notice more
improvements than problems, so give this snapshot a try and let us
know how it goes for you. Read more below for many details on the
exciting things in cairo 1.5.2 compared to cairo 1.4.10.
Have fun with cairo!
-Carl
Snapshot 1.5.2 (2007-10-30 Carl Worth <cworth@cworth.org>)
==========================================================
This is the first snapshot in cairo's unstable 1.5 series. It comes 4
months after the 1.4.10 release. This snapshot includes significant
improvements to PDF and PostScript output, which is one of the things
in which we're most interested in getting feedback. There are a couple
of minor API additions, and several optimizations, (primarily in the
"print/vector" backends). And there are dozens of bug fixes and
robustness improvements.
New dependency on external pixman library
-----------------------------------------
A significant change in this snapshot compared to all previous cairo
releases is that cairo now depends on an external "pixman" library for
its software rendering. Previously this same code was compiled
internally as part of cairo, but now the code is separate so that both
cairo and the X server can now share common code, (thanks very much to
Søren Sandmann for his work on separating pixman and maintaining it).
So users will need to acquire and build pixman before being able to
build cairo. The current release is 0.9.6 and can be obtained from
here:
http://cairographics.org/releases/pixman-0.9.6.tar.gz
which can be verified with:
http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1
66f01a682c64403a3d7a855ba5aa609ed93bcb9e pixman-0.9.6.tar.gz
http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1.asc
(signed by Carl Worth)
Major PDF/PostScript improvements
---------------------------------
Adrian Johnson has done some long-awaited work to make cairo's PDF and
PostScript output more interesting than ever before. First, many
operations that previously triggered image fallbacks will now be
rendered as native vectors. These operations include:
PDF: cairo_push_group, cairo_surface_create_similar,
cairo_mask, A8/A1 surface sources, repeating/reflecting linear
gradients.
PostScript: cairo_push_group, cairo_surface_create_similar,
gradients, bilevel alpha masks, (for example, all values either 0 or
255 for an A8 mask).
Not only that, but when an image fallback is required, it will now be
limited to only the necessary region. For example, a tiny translucent
image overlaying a small portion of text would previously caused an
entire PostScript page to be rendered as a giant image. Now, the
majority of that page will be nice text, and there will only be a tiny
image in the output.
Additionally, the PostScript output now carefully encodes text so that
if it is subsequently converted to PDF, the text will be
selectable.
This is very exciting progress, and we're hoping to hear from users
during the 1.5 series about how things have improved, (for example,
inkscape users doing cairo-based PDF export: please let us know how
things look). And feel free to pass your thanks along to Adrian for his excellent work.
NOTE: This much improved PDF output makes more sophisticated use of
functionality in the PDF specification. This means that cairo's output
will sometimes expose bugs in some free software PDF viewers, (evince,
poppler, and xpdf, for example), that are not yet ready for such PDF
files. We're working with the poppler maintainers to get these bugs
fixed as quickly as possible. In the meantime, please double-check
with other PDF viewers if cairo-generated PDF files are not being
rendered correctly. It may be due to a bug in the viewer rather than
in the PDF file that cairo has created.
Robustness improvements
-----------------------
Chris Wilson has made the largest contribution by far to cairo 1.5.2,
(in number of commits). His more than 150 commits include a huge
number of fixes to increase cairo's robustness. These fixes make cairo
more robust against invalid and degenerate input, (NaN, empty path,
etc.), against size-0 malloc calls, against memory leaks on
error-recovery paths, and against other failures during error
handling. He also implemented atomic operations to cairo, and used
them to fix cairo's previously non-thread-safe reference counting,
again improving robustness.
Chris has put a tremendous amount of time and effort into writing
analysis tools for this work, and in running those tools and fixing
the problems they report. We're very grateful for this work, and hope
that all cairo users appreciate the more robust implementation that
results from it.
This work is largely thankless, so it might make sense to notice
sometime that cairo has been running quite smoothly for you, and when
you do, send a quick "thank you" off to Chris Wilson, since it
is all definitely running smoother thanks to his work.
New API
-------
There are no major additions to cairo's core API. The only new,
generic functions are:
void
cairo_surface_copy_page (cairo_surface_t *surface);
void
cairo_surface_show_page (cairo_surface_t *surface);
which can now be used much more conveniently than the existing
cairo_copy_page and cairo_show_page functions in some
situations. These functions act identically, but require only a
cairo_surface_t* and not a cairo_t*.
All other API additions are specific to particular backends.
New cairo-win32 API (new font face function and "win32 printing" surface)
-------------------------------------------------------------------------
There is a new function for creating a win32 font face for both a
logfontw and an hfont together. This complements the existing
functions for creating a font face from one or the other:
cairo_font_face_t *
cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont,
HFONT font);
There is also a new "win32 printing" surface:
cairo_surface_t *
cairo_win32_printing_surface_create (HDC hdc);
This interface looks identical to the original
cairo_win32_surface_create, (both accept and HDC), but the behavior of
this new surface is very different. It should only be called with a
printing DC, and will result in all drawing commands being stored into
a meta-surface and emitted after each page is complete, with analysis
to do as minimal image-based fallbacks as necessary. The behavior and
implementation shares much with the PDF and PostScript backends.
New cairo-ps API (EPS and PostScript level control)
---------------------------------------------------
An often requested feature has been the ability to generate
Encapsulated PostScript (EPS) with cairo. We have that now with the
following very simple API. Just do cairo_ps_surface_create as usual
then call this function with a true value:
void
cairo_ps_surface_set_eps (cairo_surface_t *surface,
cairo_bool_t eps);
[NOTE: As always with snapshots, it's possible---though not very
likely---that the API could still be modified before a final
release. For example, this is the first public cairo function that
accepts a Boolean parameter. I'm generally opposed to Boolean
parameters, but this is probably the one case where I'm willing to
accept one, (namely a "set" function that accepts a single Boolean).]
Also, it is now possible to control what PostScript level to target,
(either level 2 or level 3), with the following new API:
typedef enum _cairo_ps_level {
CAIRO_PS_LEVEL_2,
CAIRO_PS_LEVEL_3
} cairo_ps_level_t;
void
cairo_ps_surface_restrict_to_level (cairo_surface_t *surface,
cairo_ps_level_t level);
void
cairo_ps_get_levels (cairo_ps_level_t const **levels,
int *num_levels);
const char *
cairo_ps_level_to_string (cairo_ps_level_t level);
Improvement for cairo-quartz
----------------------------
Brian Ewins had contributed several improvements to cairo-quartz. These
include an implementation of EXTEND_NONE for linear and radial
gradients, (so this extend mode will no longer trigger image fallbacks
for these gradients), as well as native surface-mask clipping, (only
on OS X 10.4+ where the CGContextClipToMask function is available).
He also fixed a semantic mismatch between cairo and quartz for dashing
with an odd number of entries in the dash array.
We're grateful for Brian since not many quartz-specific improvements
to cairo would be happening without him.
Optimizations
-------------
Optimize SVG output for when the same path is both filled and stroked,
and avoid unnecessary identity matrix in SVG output. (Emmanuel Pacaud).
Optimize PS output to take less space (Ken Herron).
Make PS output more compliant with DSC recommendations (avoid initclip
and copy_page) (Adrian Johnson).
Make PDF output more compact (Adrian Johnson).
Release glyph surfaces after uploading them to the X server, (should
save some memory for many xlib-using cairo application). (Behdad
Esfahbod).
Optimize cairo-win32 to use fewer GDI objects (Vladimir Vukicevic).
win32-printing: Avoid falling back to images when alpha == 255
everywhere. (Adrian Johnson).
win32-printing: Avoid falling back for cairo_push_group and
cairo_surface_create_similar. (Adrian Johnson)
Bug fixes
---------
Avoid potential integer overflows when allocating large buffers
(Vladimir Vukicevic).
Preparations to allow the 16.16 fixed-point format to change to
24.8 (Vladimir Vukicevic).
Fix bugs for unsupported X server visuals (rgb565, rgb555, bgr888, and
abgr8888). (Carl Worth and Vladimir Vukicevic)
Fix bugs in PDF gradients (Adrian Johnson).
Fix cairo-xlib to build without requiring Xrender header
files (Behdad Esfahbod).
Make cairo more resilient in the case of glyphs not being available in
the current font. (Behdad Esfahbod)
Prevent crashes when both atsui and ft font backends are compiled in
(Brian Ewins).
Make font subsetting code more robust against fonts that don't include
optional tables (Adrian Johnson).
Fix CFF subsetting bug, (which manifested by generating PDF files that
Apple's Preview viewer could not read) (Adrian Johnson).
Fixed error handling for quartz and ATSUI backends (Brian Ewins).
Avoid rounding problems by pre-transforming to avoid integer-only
restrictions on transformation in GDI (Adrian Johnson).
Fixed an obscure bug (#7245) computing extents for some stroked
paths (Carl Worth).
Fix crashes due to extreme transformation of the pen, (seems to show
up in many .swf files for some reason) (Carl Worth).
I'm happy to announce that we've just gone live with a new cairo wiki at:
This is an ikiwiki-based wiki that replaces the MoinMoin-based wiki that was lost a couple of months ago, (it also replaces the static- HTML placeholder we had in place in the interim). Here are some of the benefits of the new setup:
RSS/Atom feeds for news items, automatic update of front page with latest news.
Syntax is more sane, (uses MarkDown which uses either _underscores or *asterisks* to indicate emphasis_ rather than insane ''italics'' and '''bold''').
Completely integrated with git, meaning:
The distributed nature of git gives us another level of redundancy in backups, (so hopefully we'll never lose our wiki content again).
Standard git tools work for browsing history
Regular contributors can just "git push" changes without using any obnoxious web interface, (but the drive-by user can use the web-interface and know nothing of git).
Templates and CSS for theming are right there alongside the source in the git repository, (not locked away in some database requiring the obnoxious web interface to edit them)
We encourage anybody to start editing the website to improve it. Add your tips and tricks, things you've learned about cairo, and things you're confused about. I'd also be glad to have people contribute larger scale reorganizations and cleanups. The wiki requires only the most painless registration step imaginable, and then allows web-based editing by anyone willing to go through that registration step.
Now that we've got this new wiki in place, here are some projects that I would like to see happen:
Resurrect the old samples (cairo-snippets) and get them nicely integrated with the wiki
Similarly, get all the old cairo-demo stuff into the wiki
Put the cairo documentation into the wiki where people can, (if not directly edit and improve it), at least click on a "discussion" link for any given page to indicate where there are any questions about any items.
Our documentation has never really grown past simply being API function reference, and I'd really like to see some real reference material and tutorials get written. I'd also like to expand the set of output targets we're getting. I know we're currently publishing HTML and at least devhelp from gtk-doc, and I'd definitely like to get man pages and PDF output as well.
Maybe we can do all of that with gtk-doc, but it might be easier to shift to something like AsciiDoc instead.
If you (like me) would rather not ever use a web form for editing web content, then you can get the cairo wiki source via git through one of the following URLs:
git://cairographics.org/git/cairo-www
git+ssh://cairographics.org/git/cairo-www
where the second requires a freedesktop.org account, but allows users in the cairo group to push changes out via git.
Recently, there have been a lot of very useful things floating by on the mailing list, and I'd love
You may notice that the look and feel of the website has changed. That's partly just to be different and partly to help indicate that things have changed. If you find the new look tacky, you can blame my utter lack of web-design talent and you may consider this an invitation to help fix things. One huge benefit compared to our MoinMoin setup is that we now have much easier mechanisms for controlling templates, etc. and everything is done in a much cleaner fashion, (semantic HTML with CSS styling, etc.). For example, the navigation bar at the top of each page is really nothing more than an unordered list as far as the HTML is concerned, then it's styled with CSS to have the horizontal look.
Currently, changes to the cairo website will be mailed out to the cairo-commit mailing list. The wiki is supposed to have its own mechanism for subscribing for notifications to specific pages, but it doesn't seem to be working yet.
Finally, I'd like to extend thanks to Joey Hess for writing ikiwiki and for being very receptive with questions from me, (and accepting a few patches as well), as I put this together.
-Carl
From: Carl Worth <cworth@cworth.org>
Date: Wed, 27 Jun 2007 14:43:25 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo release 1.4.10 now available
A new cairo release 1.4.10 is now available from:
http://cairographics.org/releases/cairo-1.4.10.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.10.tar.gz.sha1
8371097e30650ec817b24694367110139627403e cairo-1.4.10.tar.gz
http://cairographics.org/releases/cairo-1.4.10.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.10 tag which points to a commit named:
107a74885a25e585b467c7841c6929a12aa62565
which can be verified with:
git verify-tag 1.4.10
and can be checked out with a command such as:
git checkout -b build 1.4.10
This is the fifth update in cairo's stable 1.4 series. It comes
roughly three weeks after the 1.4.8 release. The most significant
change in this release is a fix to avoid an X error in certain cases,
(that were causing OpenOffice.org to crash in Fedora). There is also a
semantic change to include child window contents when using an xlib
surface as a source, an optimization when drawing many rectangles, and
several minor fixes.
-Carl
Significant changes from cairo 1.4.8 to 1.4.10
==============================================
Eliminate X errors that were killing OO.o (Chris Wilson)
--------------------------------------------------------
Cairo is fixed to avoid the X errors propagated when cleaning up
Render Pictures after the application had already destroyed the
Drawable they reference. (It would be nice if the X server wouldn't
complain that some cleanup work is already done, but there you have
it.) This fixes the bug causing OpenOffice.org to crash as described
here:
XError on right click menus in OOo.
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811
Use IncludeInferiors when using xlib surface as a source (Ryan Lortie)
----------------------------------------------------------------------
When an xlib surface is used as the source of a draw operation the
contents of child windows are now included in the source data. The
semantics of drawing to xlib surfaces are unchanged (ie: draws are
still clipped by child windows overlapping the destination window).
Optimize drawing of many rectangles (Vladimir Vukicevic)
--------------------------------------------------------
Avoid O(N*N) loop when filling many axis-aligned rectangles, (either
many rectangles as separate sub-paths or due to dashing).
Miscellaneous fixes
-------------------
Fix cairo-perf on Solaris by linking to librt. (Behdad Esfahbod)
Fix make check for systems that require executable files to have a
particular extension. (Behdad Esfahbod)
Eliminate some warnings in cairo-quartz. (Brian Ewins)
Fix build-breaking typo for cairo-directfb. (Chris Wilson)
From: Carl Worth <cworth@cworth.org>
Date: Fri, 08 Jun 2007 16:14:28 -0700
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo release 1.4.8 now available
A new cairo release 1.4.8 is now available from:
http://cairographics.org/releases/cairo-1.4.8.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.8.tar.gz.sha1
e0730d852262d68a68d5a4c4a99657b0baeed13c cairo-1.4.8.tar.gz
http://cairographics.org/releases/cairo-1.4.8.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.8 tag which points to a commit named:
fea4f344c46cf5f85c6af3102333008768c55063
which can be verified with:
git verify-tag 1.4.8
and can be checked out with a command such as:
git checkout -b build 1.4.8
This is the fourth update in cairo's stable 1.4 series. It comes just
over five weeks after the 1.4.6 release. This release includes a
thread-safe surface-cache for solid patterns which significantly
improves text rendering with the xlib backend. Also, dozens of error
paths in cairo have been fixed thanks to extensive fault-injection
testing by Chris Wilson.
Have fun!
-Carl
What's new in 1.4.8 compared to 1.4.9
=====================================
Surface cache for solid patterns
--------------------------------
Originally written by Jorn Baayen, the introduction of a small cache
for surfaces created for solid patterns improves performance
dramatically. For example, this reduces the volume of X requests
during text rendering to the same level as Xft.
This cache first made its appearance in a 1.3.x snapshot, but was
removed before appearing in any previous major release due to
complications with multi-threaded programs. For example, programs like
evince that would carefully restrict usage of cairo-xlib to a single
thread were unpleasantly surprised to find that using cairo-image in a
separate thread could trigger X requests.
Behdad Esfahbod designed a fix which was implemented by Chris
Wilson. Now, the necessary X requests are queued up until the next
time the application directly operates on an xlib surface.
Improved error handling paths
------------------------------
Chris Wilson continued the excellent work he started in cairo 1.4.4 to
make cairo much more robust against out-of-memory and other errors. He
applied his memory allocation fault injection cairo's main test suite,
(previously he had applied it to cairo's performance suite).
Chris's testing found dozens of bugs which he fixed. Many of these
bugs had perhaps never been hit by any users. But at least one was
hit by the gnome-about program which resulted in dozens of duplicated
bug reports against that program:
http://bugzilla.gnome.org/show_bug.cgi?id=431990
We were very pleasantly surprised to see this bug get fixed as a
side-effect of Chris's work. Well done, Chris!
Other fixes
-----------
Cleanup of mutex declarations (Behdad Esfahbod)
Remove unnecessary clip region from SVG output (Emmanuel Pacaud)
Remove Xsun from the buggy_repeat blacklist (Elaine Xiong)
ATSUI: Fix glyph measurement: faster and more correct (Brian Ewins)
Quartz: fixed 'extend' behaviour for patterns, improved pattern performance,
and a few smaller correctness fixes. (Brian Ewins, Vladimir Vukicevic)
From: Carl Worth <cworth@cworth.org>
Date: 1 May 2007
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo release 1.4.6 now available
A new cairo release 1.4.6 is now available from:
http://cairographics.org/releases/cairo-1.4.6.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.6.tar.gz.sha1
bfd1532e10789fc4f87a196540c049d88c6ece42 cairo-1.4.6.tar.gz
http://cairographics.org/releases/cairo-1.4.6.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.6 tag which points to a commit named:
ddca8fec07ff95caeda6e4ce9efc3239b146bd2d
which can be verified with:
git verify-tag 1.4.6
and can be checked out with a command such as:
git checkout -b build 1.4.6
This is the third update in cairo's stable 1.4 series. It comes a
little less than three weeks since the 1.4.4 release. This release
fixes the broken mutex initialization that made cairo 1.4.4 unusable
on win32, OS/2, and BeOS systems. This release also adds significant
improvements to cairo's PDF backend, (native gradients!), and a couple
of performance optimizations, (one of which is very significant for
users of the xlib backend). See below for more details.
-Carl
Summary of changes from 1.4.4 to 1.4.6
======================================
Repaired mutex initialization
-----------------------------
We apologize that cairo 1.4.4 did little more than crash on many
platforms which are less-frequently used by the most regular cairo
maintainers, (win32, OS/2, and BeOS). The mutex initialization
problems that caused those crashes should be fixed now. And to avoid
similar problems in the future, we've now started posting pre-release
snapshots to get better testing, (subscribe to cairo@cairographics.org
if you're interested in getting notified of those and testing them).
PDF Improvements
----------------
Thanks to Adrian Johnson, (cairo PDF hacker extraordinaire), we have
several improvements to cairo's PDF backend to announce:
Native gradients:
As of cairo 1.4.6, cairo will now generate native PDF gradients in
many cases, (previously, the presence of a gradient on any page
would force rasterized output for that page). Currently, only
gradients with extend types of PAD (the default) or NONE will
generate native PDF gradients---others will still trigger
rasterization, (but look for support for other extend modes in a
future release). Many thanks to Miklós Erdélyi as well, who did the
initial work for this support.
Better compatibility with PDF viewers:
The PDF output from cairo should now be displayed correctly by a
wider range of PDF viewers. Adrian tested cairo's PDF output against
many PDF viewers, identified a common bug in many of those viewers
(ignoring the CTM matrix in some cases), and modified cairo's output
to avoid triggering that bugs (pre-transforming coordinates and
using an identity matrix).
Better OpenType/CFF subsetting:
Cairo will now embed CFF and TrueType fonts as CID fonts.
Performance optimizations
-------------------------
Faster cairo_paint_with_alpha:
The cairo_paint_with_alpha call is used to apply a uniform alpha
mask to a pattern. For example, it can be used to gradually fade an
image out or in. Jeff Muizelaar fixed some missing/broken
optimizations within the implementation of this function resulting
in cairo_paint_with_alpha being up to 4 times faster when using
cairo's image backend.
Optimize rendering of "off-screen" geometry:
Something that applications often do is to ask cairo to render
things that are either partially or wholly outside the current clip
region. Since 1.4.0 the image backend has been fixed to not waste
too much time in this case. But other backends have still been
suffering.
In particular, the xlib backend has often performed quite badly in
this situation. This is due to a bug in the implementation of
trapezoid rasterization in many X servers.
Now, in cairo 1.4.6 there is a higher-level fix for this
situation. Cairo now eliminates or clips trapezoids that are wholly
or partially outside the clip region before handing the trapezoids
to the backend. This means that the X server's performance bug is
avoided in almost all cases.
The net result is that doing an extreme zoom-in of vector-based
objects drawn with cairo might have previously brought the X server
to its knees as it allocated buffers large enough to fit all of the
geometry, (whether visible or not). But now the memory usage should
be bounded and performance should be dramatically better.
Miscellaneous
-------------
Behdad contributed an impressively long series of changes that
organizes cairo's internals in several ways that will be very
beneficial to cairo developers. Thanks, Behdad!
Behdad has also provided a utility for generating malloc statistics,
(which was used during the great malloc purges of 1.4.2 and
1.4.4). This utility isn't specific to cairo so may be of benefit to
others. It is found in cairo/util/malloc-stats.c and here are Behdad's
notes on using it:
To build, do:
make malloc-stats.so
inside util/, and to use, run:
LD_PRELOAD=malloc-stats.so some-program
For binaries managed by libtool, eg, cairo-perf, do:
../libtool --mode=execute /bin/true ./cairo-perf
LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf
Finally, the cairo-perf-diff-files utility was enhanced to allow for
generating performance reports from several runs of the same backend
while some system variables were changed. For example, this is now
being used to allow cairo-perf to measure the performance of various
different acceleration architectures and configuration options of the
X.org X server.
From: Carl Worth <cworth@cworth.org>
Date: 13 Apr 2007
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo release 1.4.4 now available
A new cairo release 1.4.4 is now available from:
http://cairographics.org/releases/cairo-1.4.4.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.4.tar.gz.sha1
71a7ce8352500944f7b2b73d4dc25ee947ec56ec cairo-1.4.4.tar.gz
http://cairographics.org/releases/cairo-1.4.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.4 tag which points to a commit named:
ebba4a6d1467a8e5db5cc43eb08e8fc98c39b30a
which can be verified with:
git verify-tag 1.4.4
and can be checked out with a command such as:
git checkout -b build 1.4.4
This is the second update release in cairo's stable 1.4 series. It
comes just less than a month after 1.4.2. The changes since 1.4.2
consist primarily of bug fixes, but also include at least one
optimization. See below for details.
Thanks, and have fun with cairo!
-Carl
There have been lots of individuals doing lots of great work on cairo,
but two efforts during the 1.4.4 series deserve particular mention:
Internal cleanup of error handling, (Chris Wilson)
--------------------------------------------------
Chris contributed a tremendous series of patches (74 patches!) to
improve cairo's handling of out-of-memory and other errors. He began
by adding gcc's warn_unused_attribute to as many functions as
possible, and then launched into the ambitious efforts of adding
correct code to quiet the dozens of resulting warnings.
Chris also wrote a custom valgrind skin to systematically inject
malloc failures into cairo, and did all the work necessary to verify
that cairo's performance test suite runs to completion without
crashing.
The end result is a much more robust implementation. Previously, many
error conditions would have gone unnoticed and would have led to
assertion failures, segmentation faults, or other harder-to-diagnose
problems. Now, more than ever, cairo should cleanly let the user know
of problems through cairo_status and other similar status
functions. Well done, Chris!
More malloc reduction, (Mathias Hasselmann)
-------------------------------------------
After 1.4.0, Behdad launched an effort to chase down excessive calls
to malloc within the implementation of cairo. He fixed a lot of
malloc-happy objects for 1.4.2, but one of the worst offenders,
(pixman regions), was left around. Mathias contributed an excellent
series of 15 patches to finish off this effort.
The end result is a cairo that calls malloc much less often than it
did before. Compared to 1.4.2, 55% of the calls to malloc have been
eliminate, (and 60% have been eliminated compared to 1.4.0). Well
done, Mathias!
Other improvements since 1.4.2
------------------------------
• Centralize mutex declarations (will reduce future build breaks),
(Mathias Hasselmann)
• Reduce malloc by caching recently freed pattern objects (Chris
Wilson)
• Fix some broken composite operations (David Reveman)
https://bugs.freedesktop.org/show_bug.cgi?id=5777
Backend-specific fixes
----------------------
PDF:
• Use TJ operator for more compact representation of glyphs (Adrian
Johnson)
• Fix glyph positioning bug when glyphs are not horizontal
http://lists.freedesktop.org/archives/cairo/2007-April/010337.html
win32:
• Fix crash when rendering with bitmap fonts (Carl Worth)
https://bugzilla.mozilla.org/show_bug.cgi?id=376498
xlib:
• Turn metrics-hinting on by default (Behdad Esfahbod)
• Fix edge-effect problem with transformed images drawn to xlib
(Behdad Esfahbod)
https://bugs.freedesktop.org/show_bug.cgi?id=10508
• Avoid dereferencing a NULL screen. (Chris Wilson)
https://bugs.freedesktop.org/show_bug.cgi?id=10517
Quartz/ATSUI:
• Fix scaling of glyph surfaces
(Brian Ewins)
https://bugs.freedesktop.org/show_bug.cgi?id=9568
• Fix compilation failure when both xlib and quartz enabled
(Brian Ewins)
• Fix rounding bug leading to incorrectly positioned glyphs
(Robert O'Callahan)
https://bugs.freedesktop.org/show_bug.cgi?id=10531
From: Carl Worth <cworth@cworth.org>
Date: 19 Mar 2007
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo release 1.4.2 now available
A new cairo release 1.4.2 is now available from:
http://cairographics.org/releases/cairo-1.4.2.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.2.tar.gz.sha1
9e7a323fc7d81d5011044d7eb22db3bf26ff7314 cairo-1.4.2.tar.gz
http://cairographics.org/releases/cairo-1.4.2.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.2 tag which points to a commit named:
aba2b299db163d8a5b9d0a0214cd8a485fb87162
which can be verified with:
git verify-tag 1.4.2
and can be checked out with a command such as:
git checkout -b build 1.4.2
This is the first update release in cairo's stable 1.4 series. It
comes just less than 2 weeks after 1.4.0. We hadn't anticipated an
update this early, but we've managed to collect some important fixes
that we wanted to get out to cairo users as soon as possible, (6 fixes
for crashes, 1 case where graphical elements would not be drawn at
all, a handful of backend-specific bugs, and several important build
fixes).
There's almost nothing but bug fixes in this release, (see below one
optimization that Behdad did sneak in), so we recommend that everyone
upgrade to this release when possible.
Thanks to the many people that worked to fix these bugs, and those
that did the work to report them and to test the fixes, (wherever
possible both names are credited below).
-Carl
What's new in cairo 1.4.2 since 1.4.0
=====================================
Critical fixes
--------------
• Fix a crash due to a LOCK vs. UNLOCK typo (M. Drochner fixing Carl
Worth's embarrassing typo).
http://bugs.freedesktop.org/show_bug.cgi?id=10235
• Fix potential buffer overflow, which on some systems with a checking
variant of snprintf would lead to a crash (Adrian Johnson, Stanislav
Brabec, and sangu).
https://bugs.freedesktop.org/show_bug.cgi?id=10267
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232576
• Fix a crash in cairo_stroke_extents or cairo_in_stroke when line
width is 0.0. (Carl Worth and Sebastien Bacher)
https://bugs.freedesktop.org/show_bug.cgi?id=10231
• Fix a crash on certain combinations of X server/video drivers (Carl
Worth and Tomas Carnecky).
https://bugs.freedesktop.org/show_bug.cgi?id=10250
• Fix a crash due to mishandling of invalid user input (Carl Worth and
Alexander Darovsky).
https://bugs.freedesktop.org/show_bug.cgi?id=9844
• xlib: Cleanup server-side glyph caches on XCloseDisplay. This
eliminated a crash detected by the perf suite, (and that
applications could have run into as well). (Chris Wilson)
Other bug fixes
---------------
• Fix for some geometry which simply disappeared under some
transformations---a stroked line with an extreme skew in X, for
example (Carl Worth and Jonathan Watt).
https://bugzilla.mozilla.org/show_bug.cgi?id=373632
• SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 > r1
(Emmanuel Pacaud).
• PDF: Set page group color space to DeviceRGB.
This fixes incorrect (muddy) transparent colors when rendering cairo
PDF output in some viewers. (Adrian Johnson, Adam Goode, and
MenTaLguY).
http://lists.freedesktop.org/archives/cairo/2006-November/008551.html
• win32: Return correct metrics when hinting is off, and fix font
descent computation (Behdad Esfahbod).
• quartz: Fix glyph interfaces to correctly return user-space rather
than device-space coordinates (Brian Ewins).
https://bugs.freedesktop.org/show_bug.cgi?id=9568
• xcb: Fix parameter-order confusion with xcb_create_pixmap, which now
makes all tests that pass with xlib now pass with xcb (Carl Worth,
Jamey Sharp).
• Fix some memory leaks in the perf suite (Chris Wilson).
• Fix perf suite to consider changes in pixman/src (Mathias
Hasselmann).
Build fixes
-----------
• Don't include pre-generated cairo-features.h file. This was causing
build failures when building with the directfb backend enabled
(Behdad Esfahbod).
https://bugs.freedesktop.org/show_bug.cgi?id=10189
• Eliminate use of maintainer mode from cairo's automake/configure
script. This means that updates to files such as Makefile.am will
take effect, (by rerunning automake and friends as necessary) when
invoking make rather than being silently ignored. (Behdad Esfahbod)
• Don't compile cairo-deflate-stream.c, which depends on zlib, unless
building the pdf backend which requires it. (Carl Worth, Tor
Lillqvist)
https://bugs.freedesktop.org/show_bug.cgi?id=10202
• Don't make the ps backend link against zlib anymore, since it
doesn't require it (Carl Worth).
• Use "find !" rather than "find -not" for better portability (Thomas
Klausner).
https://bugs.freedesktop.org/show_bug.cgi?id=10226
• Don't use unsupported visibility attribute "hidden" on Solaris
(Gilles Dauphin, Thomas Klausner).
https://bugs.freedesktop.org/show_bug.cgi?id=10227
Optimization
------------
• It was Behdad that suggested we focus strictly on bug fixes now that
we shipped so many performance improvements in 1.4.0, but it was
also Behdad that got distracted by the chance to remove a lot of
mallocs from cairo. Paths, gstates, trapezoids, splines, polygons,
and gradient color stops will now use small, stack-allocated buffers
in the most common cases rather than calling malloc as
often. (Behdad Esfahbod). And look for more from Mathias Hasselmann
soon.
From: Carl Worth <cworth@cworth.org>
Date: 6 Mar 2007
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo release 1.4.0 now available
A new cairo release 1.4.0 is now available from:
http://cairographics.org/releases/cairo-1.4.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.4.0.tar.gz.sha1
2ce727347d8285cee4ce0c3feb0a2df18316a5d3 cairo-1.4.0.tar.gz
http://cairographics.org/releases/cairo-1.4.0.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.4.0 tag which points to a commit named:
5dfa8c23f13f5cafac5cf56f34888a6e01dc79ba
which can be verified with:
git verify-tag 1.4.0
and can be checked out with a command such as:
git checkout -b build 1.4.0
The many people[*] who have been working hard on cairo are very
pleased to announce the long-awaited release of cairo 1.4. This
release comes 4 months after the last stable update release (1.2.6)
and 9 months since the initial release of 1.2.0.
The release notes below are intended to capture the highlights of the
changes that have occurred from the 1.2 series to the new 1.4.0
release.
Everyone, have fun with cairo!
-Carl
Overview of changes from 1.2.6 to 1.4.0
=======================================
Performance improvements
------------------------
Within the cairo project, the last 6 months or so has seen an intense
effort focusing on the performance of cairo itself. That effort has
paid off considerably, as can be seen in the following highlights of
some of the performance differences from cairo 1.2.6 to cairo 1.4.0.
(Note: The performance results reported here were measured on an x86
laptop. Many of the improvements in 1.4---particular those involving
text rendering---are even more dramatic on embedded platforms without
hardware floating-point units. Such devices played an important part
of many of the optimizations that found their way into cairo over the
last few months.)
• Dramatic improvement when drawing objects that are mostly off-screen
with the image backend (with the xlib backend this case is still
slow due to an X server bug):
image-rgba long-lines-uncropped-100 479.64 -> 4.98: 96.24x speedup
███████████████████████████████████████████████▋
• Dramatic improvement when copying a small fraction of an image
surface to an xlib surface:
xlib-rgba subimage_copy-512 3.93 -> 0.07: 54.52x speedup
██████████████████████████▊
• Dramatic improvement to tessellation speed for complex objects:
image-rgb tessellate-256-100 874.16 -> 34.79: 25.13x speedup
████████████▏
xlib-rgba zrusin_another_fill-415 148.40 -> 13.85: 10.72x speedup
████▉
xlib-rgb world_map-800 680.20 -> 345.54: 1.97x speedup
▌
• Dramatic improvement to the speed of stroking rectilinear shapes,
(such as the outline of a rectangle or "box"):
image-rgb box-outline-stroke-100 0.18 -> 0.01: 24.22x speedup
███████████▋
xlib-rgb box-outline-stroke-100 0.46 -> 0.06: 8.05x speedup
███▌
• Dramatic improvements to text rendering speeds:
xlib-rgba text_image_rgba_over-256 63.12 -> 9.61: 6.57x speedup
██▊
• 3x improvements to floating-point to fixed-point conversion speeds:
image-rgba pattern_create_radial-16 9.29 -> 3.44: 2.70x speedup
▉
• 2x improvements to linear gradient computation:
image-rgb paint_linear_rgb_source-512 26.22 -> 11.61: 2.26x speedup
▋
• 2x improvement to a case common in PDF rendering:
image-rgb unaligned_clip-100 0.10 -> 0.06: 1.81x speedup
▍
• 1.3x improvement to rectangle filling speed (note: this improvement
is new since 1.3.16---previously this test case was a 1.3x slowdown
compared to 1.2.6):
image-rgba rectangles-512 6.19 -> 4.37: 1.42x speedup
▎
xlib-rgba rectangles-512 7.48 -> 5.58: 1.34x speedup
▏
NOTE: In spite of our best efforts, there are some measurable
performance regressions in 1.4 compared to 1.2. It appears that the
primary problem is the increased overhead of the new tessellator when
drawing many, very simple shapes. The following test cases capture
some of that slowdown:
image-rgba mosaic_tessellate_lines-800 11.03 -> 14.29: 1.30x slowdown
▏
image-rgba box-outline-fill-100 0.01 -> 0.01: 1.26x slowdown
▏
image-rgba fill_solid_rgb_over-64 0.20 -> 0.22: 1.12x slowdown
image-rgba fill_image_rgba_over-64 0.23 -> 0.25: 1.10x slowdown
xlib-rgb paint_image_rgba_source-256 3.24 -> 3.47: 1.07x slowdown
We did put some special effort into eliminating this slowdown for the
very common case of drawing axis-aligned rectangles with an identity
matrix (see the box-outline-stroke and rectangles speedup numbers
above). Eliminating the rest of this slowdown will be a worthwhile
project going forward.
Also note that the "box-outline-fill" case is a slowdown while
"box-outline-stroke" is a (huge) speedup. These two test cases
resulted from the fact that some GTK+ theme authors were filling
between two rectangles to avoid slow performance from the more natural
means of achieving the same shape by stroking a single rectangle. With
1.4 that workaround should definitely be eliminated as it will now
cause things to perform more slowly.
Greatly improved PDF output
---------------------------
We are very happy to be able to announce that cairo-generated PDF
output will now have text that can be selected, cut-and-pasted, and
searched with most capable PDF viewer applications. This is something
that was not ever possible with cairo 1.2.
Also, the PDF output now has much more compact encoding of text than
before. Cairo is now much more careful to not embed multiple copies of
the same font at different sizes. It also compresses text and font
streams within the PDF output.
API additions
-------------
There are several new functions available in 1.4 that were not
available in 1.2. Curiously, almost all of the new functions simply
allow the user to query state that has been set in cairo (many new
"get" functions) rather than providing any fundamentally new
operations. The new functionality is:
• Getting information about the current clip region
cairo_clip_extents
cairo_copy_clip_rectangle_list
cairo_rectangle_list_destroy
• Getting information about the current dash setting
cairo_get_dash_count
cairo_get_dash
• Getting information from a pattern
cairo_pattern_get_rgba
cairo_pattern_get_surface
cairo_pattern_get_color_stop_rgba
cairo_pattern_get_color_stop_count
cairo_pattern_get_linear_points
cairo_pattern_get_radial_circles
• Getting the current scaled font
cairo_get_scaled_font
• Getting reference counts
cairo_get_reference_count
cairo_surface_get_reference_count
cairo_pattern_get_reference_count
cairo_font_face_get_reference_count
cairo_scaled_font_get_reference_count
• Setting/getting user data on objects
cairo_set_user_data
cairo_get_user_data
cairo_pattern_set_user_data
cairo_pattern_get_user_data
cairo_scaled_font_set_user_data
cairo_scaled_font_get_user_data
• New cairo-win32 functions:
cairo_win32_surface_create_with_ddb
cairo_win32_surface_get_image
cairo_win32_scaled_font_get_logical_to_device
cairo_win32_scaled_font_get_device_to_logical
API deprecation
---------------
The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
worked as a format value for cairo_image_surface_create, and it wasn't
necessary for supporting 16-bit 565 X server visuals.
A sampling of bug fixes in cairo 1.4
------------------------------------
• Fixed radial gradients
• Fixed dashing (degenerate and "leaky" cases)
• Fixed transformed images in PDF/PS output (eliminate bogus repeating)
• Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
• cairo_show_page no longer needed for single-page output
• SVG: Fix bug preventing text from appearing in many viewers
• cairo-ft: Return correct metrics when hinting is off
• Eliminate crash in cairo_create_similar if nil surface is returned
• Eliminate crash after INVALID_RESTORE error
• Fix many bugs related to multi-threaded use and locking
• Fix for glyph spacing 32 times larger than desired (cairo-win32)
• Fixed several problems in cairo-atsui (assertion failures)
• Fix PDF output to avoid problems when printing from Acrobat Reader
• Fix segfault on Mac OS X (measuring a zero-length string)
• Fix text extents to not include the size of non-inked characters
• Fix for glyph cache race condition in glitz backend (Jinghua Luo)
• Fix make check to work on OPD platforms (IA64 or PPC64)
• Fix compilation problems of cairo "wideint" code on some platforms
• Many, many others...
Experimental backends (quartz, XCB, OS/2, BeOS, directfb)
---------------------------------------------------------
None of cairo's experimental backends are graduating to "supported"
status with 1.4.0, but two of them in particular (quartz and xcb), are
very close.
The quartz baceknd has been entirely rewritten and is now much more
efficient. The XCB backend has been updated to track the latest XCB
API (which recently had a 1.0 release).
We hope to see these backends become supported in a future release,
(once they are passing all the tests in cairo's test suite).
The experimental OS/2 backend is new in cairo 1.4 compared to cairo
1.2.
Documentation improvements
--------------------------
We have added documentation for several functions and types that
were previously undocumented, and improved documentation on other
ones. As of this release, there remain only two undocumented
symbols: cairo_filter_t and cairo_operator_t.
[*]Thanks to everyone
---------------------
I've accounted for 41 distinct people with attributed code added to
cairo between 1.2.6 and 1.4.0, (their names are below). That's an
impressive number, but there are certainly dozens more that
contributed with testing, suggestions, clarifying questions, and
encouragement. I'm grateful for the friendships that have developed as
we have worked on cairo together. Thanks to everyone for making this
all so much fun!
Adrian Johnson, Alfred Peng, Alp Toker, Behdad Esfahbod,
Benjamin Otte, Brian Ewins, Carl Worth, Christian Biesinger,
Christopher (Monty) Montgomery, Daniel Amelang, Dan Williams,
Dave Yeo, David Turner, Emmanuel Pacaud, Eugeniy Meshcheryakov,
Frederic Crozat, Hans Breuer, Ian Osgood, Jamey Sharp, Jeff Muizelaar,
Jeff Smith, Jinghua Luo, Jonathan Watt, Joonas Pihlaja, Jorn Baayen,
Kalle Vahlman, Kjartan Maraas, Kristian Høgsberg, M Joonas Pihlaja,
Mathias Hasselmann, Mathieu Lacage, Michael Emmel, Nicholas Miell,
Pavel Roskin, Peter Weilbacher, Robert O'Callahan,
Soren Sandmann Pedersen, Stuart Parmenter, T Rowley,
Vladimir Vukicevic
From: Behdad Esfahbod <behdad@behdad.org>
Date: 3 Mar 2007
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.3.16 (1.4.0 release candidate) now available
A new cairo snapshot 1.3.16 is now available from:
http://cairographics.org/snapshots/cairo-1.3.16.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.16.tar.gz.sha1
8c80376b18a58727f03fea05ef191acb19903e01 cairo-1.3.16.tar.gz
http://cairographics.org/snapshots/cairo-1.3.16.tar.gz.sha1.asc
(signed by Behdad Esfahbod)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.16 tag which points to a commit named:
b3e1fd8c1cbfc4db88bec4bb52821ed9380dbb4f
which can be verified with:
git verify-tag 1.3.16
and can be checked out with a command such as:
git checkout -b build 1.3.16
This is the eighth development snapshot in the 1.3 series, and the
release candidate for 1.4.0, that will be released early next week.
It comes just over 3 weeks after the 1.3.14 snapshot.
New API functions
-----------------
A few new public functions have been added to the cairo API since the
1.3.14 snapshot. These include a function to query the current scaled
font:
cairo_get_scaled_font
New functions to query the reference count of all cairo objects:
cairo_get_reference_count
cairo_surface_get_reference_count
cairo_pattern_get_reference_count
cairo_font_face_get_reference_count
cairo_scaled_font_get_reference_count
And new functions to allow the use of user_data with any cairo object,
(previously these were only available on cairo_surface_t and
cairo_font_face_t objects):
cairo_set_user_data
cairo_get_user_data
cairo_pattern_set_user_data
cairo_pattern_get_user_data
cairo_scaled_font_set_user_data
cairo_scaled_font_get_user_data
Usability improvement for PDF/PS/SVG generation
-----------------------------------------------
In previous versions of cairo, generating single-page output with the
cairo-pdf, cairo-ps, or cairo-svg backends required a final call to
cairo_show_page. This was often quite confusing as people would port
functional code from a non-paginated backend and be totally mystified
as to why the output was blank until they learned to add this call.
Now that call to cairo_show_page is optional, (it will be generated
implicitly if the user does not call it). So cairo_show_page is only
needed to explicitly separate multiple pages.
Greatly improved PDF output
---------------------------
We are very happy to be able to announce that cairo-generated PDF
output will now have text that can be selected, cut-and-paste, and
searched with most capable PDF viewer applications. This is something
that was not ever possible with cairo 1.2.
Also, the PDF output now has much more compact encoding of text than
before. Cairo is now much more careful to not embed multiple copies of
the same font at different sizes. It also compresses text and font
streams within the PDF output.
Major bug fixes
---------------
• Fixed radial gradients
The rendering of radial gradients has been greatly improved. In
the cairo 1.2 series, there was a serious regression affecting
radial gradients---results would be very incorrect unless one of
the gradient circles had a radius of 0.0 and a center point within
the other circle. These bugs have now been fixed.
• Fixed dashing
Several fixes have been made to the implementation of dashed
stroking. Previously, some dashed, stroked rectangles would
mis-render and fill half of the rectangle with a large triangular
shape. This bug has now been fixed.
• Fixed transformed images in PDF/PS output
In previous versions of cairo, painting with an image-based source
surface pattern to the PDF or PS backends would cause many kinds
of incorrect results. One of the most common problems was that an
image would be repeated many times even when the user had
explicitly requested no repetition with CAIRO_EXTEND_NONE. These
bugs have now been fixed.
• Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
In the 1.2 version of cairo any use of CAIRO_EXTEND_REFLECT or
CAIRO_EXTEND_PAD with a surface-based pattern resulted in an
error, (cairo would stop rendering). This bug has now been
fixed.
Now, CAIRO_EXTEND_REFLECT should work properly with surface
patterns.
CAIRO_EXTEND_PAD is still not working correctly, but it will now
simply behave as CAIRO_EXTEND_NONE rather than triggering the
error.
New rewrite of quartz backend (still experimental)
--------------------------------------------------
Cairo's quartz backend has been entirely rewritten and is now much
more efficient. This backend is still marked as experimental, not
supported, but it is now much closer to becoming an officially
supported backend. (For people that used the experimental nquartz
backend in previous snapshots, that implementation has now been
renamed from "nquartz" to "quartz" and has replaced the old quartz
backend.)
Documentation improvements
--------------------------
We have added documentation for several functions and types that
were previously undocumented, and improved documentation on other
ones. As of this release, there remain only two undocumented
symbols: cairo_filter_t and cairo_operator_t.
Other bug fixes
---------------
• cairo-svg: Fix bug that was preventing text from appearing in many
viewers
• cairo-ft: Return correct metrics when hinting is off
• Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or
_cairo_ft_unscaled_font_lock_face
https://bugs.freedesktop.org/show_bug.cgi?id=10035
• cairo crashes in cairo_create_similar if nil surface returned by
other->backend->create_similar
https://bugs.freedesktop.org/show_bug.cgi?id=9844
• evolution crash in _cairo_gstate_backend_to_user()
https://bugs.freedesktop.org/show_bug.cgi?id=9906
• Fix memory leak in rectilinear stroking code
Things not in this release
--------------------------
• Solid-surface-pattern cache: This patch had been applied during
the 1.3.x series, but it was reverted due to some inter-thread
problems it caused. The patch is interesting since it made a big
benefit for text rendering performance---so we'll work to bring a
corrected version of this patch back as soon as possible.
From: Carl Worth <cworth@cworth.org>
Date: 13 Feb 2007
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.3.14 now available
A new cairo snapshot 1.3.14 is now available from:
http://cairographics.org/snapshots/cairo-1.3.14.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.14.tar.gz.sha1
648981b1e04eb231a82befea8eaf39e01502001c cairo-1.3.14.tar.gz
http://cairographics.org/snapshots/cairo-1.3.14.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.14 tag which points to a commit named:
90e453fc22398f31996a6fdbeec6da98e25a160e
which can be verified with:
git verify-tag 1.3.14
and can be checked out with a command such as:
git checkout -b build 1.3.14
This is the seventh development snapshot in the 1.3 series, (and there
likely won't be many more before the 1.4.0 release). It comes just
over 3 weeks after the 1.3.12 snapshot.
Since we're so close to the 1.4.0 release, there are not a lot of new
features nor even a lot of new performance improvements in this
snapshot. Instead, there are a great number of bug fixes. Some are
long-standing bugs that we're glad to say goodbye to, and several are
fixes for regressions that were introduced as part of the optimization
efforts during the 1.3.x series.
Major improvements between 1.3.12 and 1.3.14
============================================
PDF text selection fixed
------------------------
The inability to correctly select text in cairo-generated PDF has been
a defect ever since the initial support for the PDF backend in the
cairo 1.2.0 release. With the 1.3.14 snapshot, in most situations, and
with most PDF viewer applications, the PDF generated by cairo will
allow text to be correctly selected for copy-and-paste, (as well as
searching).
We're very excited about this new functionality, (and very grateful to
Adrian Johnson, Behdad Esfahbod, and others that have put a lot of
work into this lately). Please test this new ability and give feedback
on the cairo@cairographics.org list.
Many thread-safety issues fixed
-------------------------------
We've discovered that no release of cairo has ever provided safe text
rendering from a multi-threaded application. With the 1.3.14 snapshot
a huge number of the bugs in this area have been fixed, and multiple
application developers have now reported success at writing
multi-threaded applications with cairo.
Other fixes
-----------
Fixed a bug that was causing glyph spacing to be 32 times larger than
desired when using cairo-win32.
Fixed a regression in the rendering of linear gradients that had been
present since the 1.3.8 snapshot.
Fixed several problems in cairo-atsui that were leading to assertion
failures when rendering text.
Fix corrupted results when rendering a transformed source image
surface to an xlib surface. This was a regression that had been
present since the 1.3.2 snapshot.
Fixed PDF output to prevent problems printing from some versions of
Acrobat Reader, (a single glyph was being substituted for every
glyph).
And many other fixes as well, (see the logs for details).
From: Carl Worth <cworth@cworth.org>
Date: 20 Jan 2007
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.3.12 now available
A new cairo snapshot 1.3.12 is now available from:
http://cairographics.org/snapshots/cairo-1.3.12.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.12.tar.gz.sha1
d84b48e06b2499e894f81c42361650ab5e00b974 cairo-1.3.12.tar.gz
http://cairographics.org/snapshots/cairo-1.3.12.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.12 tag which points to a commit named:
c34a1a75fdb886b7a69875fb92d30c6dfd9d39cb
which can be verified with:
git verify-tag 1.3.12
and can be checked out with a command such as:
git checkout -b build 1.3.12
The relentless march toward the cairo 1.4 release continues, (even if
slightly late out of the starting blocks in 2007). This is the sixth
development snapshot in the 1.3 series. It comes 4 weeks after the
1.3.10 snapshot.
What's new in cairo 1.3.12
==========================
Performance
-----------
As usual, this snapshot has some fun performance improvements to show
off:
image-rgba long-lines-uncropped-100 470.08 -> 4.95: 94.91x speedup
███████████████████████████████████████████████
image-rgb long-lines-uncropped-100 461.60 -> 4.96: 93.02x speedup
██████████████████████████████████████████████
This 100x improvement, (and yes, that's 100x, not 100%), in the image
backend occurs when drawing large shapes where only a fraction of the
shape actually appears in the final result, (the rest being outside
the bounds of the destination surface). Many applications should see
speedups here, and the actual amount of speedup depends on the ratio
of non-visible to visible portions of geometry.
[Note: There remains a similar performance bug when drawing mostly
non-visible objects with the xlib backend. This is due to a similar
bug in the X server itself, but we hope a future cairo snapshot will
workaround that bug to get a similar speedup with the xlib backend.]
image-rgba unaligned_clip-100 0.09 -> 0.06: 1.67x speedup
▍
image-rgb unaligned_clip-100 0.09 -> 0.06: 1.66x speedup
▍
This speedup is due to further MMX optimization by Soeren Sandmann for
a case commonly hit when rendering PDF files, (and thanks to Jeff
Muizelaar for writing code to extract the test case for us).
There's another MMX optimization in this snapshot (without a fancy
speedup chart) by Dan Williams which improves compositing performance
specifically for the OLPC machine.
Thanks to Adrian Johnson, cairo's PDF output is now much more
efficient in the way it encodes text output. By reducing redundant
information and adding compression to text output streams, Adrian
achieved a ~25x improvement in the efficiency of encoding text in PDF
files, (was ~45 bytes per glyph and is now ~1.6 bytes per glyph).
Bug fixes
---------
In addition to those performance improvements, this snapshot includes
several bug fixes:
* A huge number of bug fixes for cairo-atsui text rendering, (for mac
OS X). These bugs affect font selection, glyph positioning, glyph
rendering, etc. One noteworthy bug fixes is that
cairo_select_font_face will no longer arbitrarily select bold nor
italic when not requested, (at least not when using a standard CSS2
font family name such as "serif", "sans-serif", "monospace", etc.).
All these fixes are thanks to Brian Ewins who continues to do a
great job as the new cairo-atsui maintainer.
* Fix PDF output so that images that are scaled down no longer
mysteriously repeat (Carl Worth).
* Fix segfault on Mac OS X dues to attempt to measure extents of a
zero-length string (Behdad Esfahbod).
* Fix text extents to not include the size of initial/trailing
non-inked characters (Behdad Esfahbod).
API tweaks
----------
Three functions have had API changes to improve consistency. Note that
the API functions being changed here are all functions that were
introduced as new functions during these 1.3.x snapshots. As always,
there will not be any API changes to functions included in a major
release (1.2.x, 1.4.x, etc.) of cairo.
The changes are as follows:
* Rename of cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list.
* Change cairo_get_dash_count to return an int rather than accepting a
pointer to an int for the return value.
* Change cairo_get_dash to have a void return type rather than
returning cairo_status_t.
It's possible there will be one more round of changes to these
functions, (and perhaps cairo_get_color_stop as well), as we seek to
establish a unifying convention for returning lists of values.
From: Carl Worth <cworth@cworth.org>
Date: 23 Dec 2006
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.3.10 now available
A new cairo snapshot 1.3.10 is now available from:
http://cairographics.org/snapshots/cairo-1.3.10.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.10.tar.gz.sha1
0a899378673bfda49d1b7530405d62c24b9e051a cairo-1.3.10.tar.gz
http://cairographics.org/snapshots/cairo-1.3.10.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.10 tag which points to a commit named:
b35cfde7f0e2896ccc1453f9716cb9b61c42cf94
which can be verified with:
git verify-tag 1.3.10
and can be checked out with a command such as:
git checkout -b build 1.3.10
Santa Claus is coming just a little bit early this year, and he's
bringing a shiny new cairo snapshot for all the good little boys and
girls to play with.
This is the fifth development snapshot in the 1.3 series. It comes 9
days after the 1.3.8 snapshot, and still well within our goal of
having a new snapshot every week, (though don't expect one next
week---we'll all be too stuffed with sugar plums).
Speaking of sugar plums, there's a sweet treat waiting in this cairo
snapshot---greatly improved performance for stroking rectilinear
shapes, like the ever common rectangle:
image-rgb box-outline-stroke-100 0.18 -> 0.01: 25.58x speedup
████████████████████████▋
image-rgba box-outline-stroke-100 0.18 -> 0.01: 25.57x speedup
████████████████████████▋
xlib-rgb box-outline-stroke-100 0.49 -> 0.06: 8.67x speedup
███████▋
xlib-rgba box-outline-stroke-100 0.22 -> 0.04: 5.39x speedup
████▍
In past releases of cairo, some people had noticed that using
cairo_stroke to draw rectilinear shapes could be awfully slow. Many
people had worked around this by using cairo_fill with a more complex
path and gotten a 5-15x performance benefit from that.
If you're one of those people, please rip that workaround out, as now
the more natural use of cairo_stroke should be 1.2-2x faster than the
unnatural use of cairo_fill.
And if you hadn't ever implemented that workaround, then you just
might get to see your stroked rectangles now get drawn 5-25x faster.
Beyond that performance fix, there are a handful of bug fixes in this
snapshot:
* Fix for glyph cache race condition in glitz backend (Jinghua Luo)
* Many fixes for ATSUI text rendering (Brian Ewins)
* Un-break recent optimization-triggered regression in rendering text
with a translation in the font matrix (Behdad Esfahbod)
* Fix make check to work on OPD platforms (IA64 or PPC64)
(Frederic Crozat)
* Fix a couple of character spacing issues on Windows
(Jonathan Watt)
Have fun with that, everybody, and we'll be back for more in the new
year, (with a plan to add the last of our performance improvements in
this round, fix a few bad, lingering bugs, and then finish off a nice,
stable 1.4 release before the end of January).
-Carl
From: Carl Worth <cworth@cworth.org>
Date: 14 Dec 2006
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.3.8 now available
A new cairo snapshot 1.3.8 is now available from:
http://cairographics.org/snapshots/cairo-1.3.8.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.8.tar.gz.sha1
c2e939f56eb10e1ca90be1a03e4ee6145be37172 cairo-1.3.8.tar.gz
http://cairographics.org/snapshots/cairo-1.3.8.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.8 tag which points to a commit named:
129b55f5fcc4c2ae5b63ac6eb73fce8a708e4874
which can be verified with:
git verify-tag 1.3.8
and can be checked out with a command such as:
git checkout -b build 1.3.8
This is the fourth development snapshot in the 1.3 series. It comes
just slightly more than one week after the 1.3.6 snapshot.
After the bug fixes in 1.3.6, we're back to our original program of
weekly snapshots, each one faster than the one from the week
before. Cairo 1.3.8 brings a 2x improvement in the speed of rendering
linear gradients (thanks to David Turner), and a significant reduction
in X traffic when rendering text (thanks to Xan Lopez and Behdad
Esfahbod), making cairo behave very much like Xft does.
A few other things in the 1.3.8 snapshot worth noting include a more
forgiving image comparator in the test suite, (using the "perceptual
diff" metric and GPL implementation by Hector Yee[*]), a bug fix for
broken linking on x86_64 (thanks to M Joonas Pihlaja) and an even
better implementation of _cairo_lround, (not faster, but supporting a
more complete input range), from Daniel Amelang.
[*] http://pdiff.sourceforge.net/
Have fun with cairo, everybody!
-Carl
From: Carl Worth <cworth@cworth.org>
Date: 6 Dec 2006
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.3.6 available
A new cairo snapshot 1.3.6 is now available from:
http://cairographics.org/snapshots/cairo-1.3.6.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.6.tar.gz.sha1
c69339afca1115815be50b32c3a733d272aaa84c cairo-1.3.6.tar.gz
http://cairographics.org/snapshots/cairo-1.3.6.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.6 tag which points to a commit named:
648ef4487dfa43f20fb2c73e7b8e567f8a25497a
which can be verified with:
git verify-tag 1.3.6
and can be checked out with a command such as:
git checkout -b build 1.3.6
This is the third development snapshot in the 1.3 series. It comes two
weeks after the 1.3.4 snapshot.
We don't have fancy performance charts this week as the primary
changes in this snapshot are bug fixes. The performance work continues
and the next snapshot (planned for one week from today) should include
several improvements.
-Carl
Summary of changes since 1.3.4
==============================
* Fix undesirable rounding in glyph positioning (Dan Amelang)
This bug was noticed by several users, most commonly by seeing
improper text spacing or scrambled glyphs as drawn by nautilus. For
example:
Update to cairo-1.3.4 worsen font rendering
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217819
* Fix reduced range of valid input coordinates to tessellator
(M Joonas Pihlaja)
This bug was causing lots of assertion failures in mozilla as
mentioned here:
CAIRO_BO_GUARD_BITS and coordinate space?
http://lists.freedesktop.org/archives/cairo/2006-December/008743.html
* Fix several regressions in new tessellator (M Joonas Pihlaja)
Joonas just had a good eye for detail here. I don't think any
external cairo users had noticed any of these bugs yet.
* Fix compilation problems of cairo "wideint" code on some platforms
(Mathieu Lacage)
* Fix failed configure due to broken grep (Dan Amelang)
This bug was reported here:
AX_C_FLOAT_WORDS_BIGENDIAN doesn't work because grep doesn't
work with binary file
https://bugs.freedesktop.org/show_bug.cgi?id=9124
* Remove the pkg-config minimum version requirement (Behdad Esfahbod)
Some systems ship with pkg-config 0.15 and there was really no good
reason for cairo to insist on having version 0.19 before it would
build.
There is also one new (but inert) feature in this snapshot. There's a
new option that can be passed to cairo's configure script:
--disable-some-floating-point
Disable certain code paths that rely heavily on double precision
floating-point calculation. This option can improve
performance on systems without a double precision floating-point
unit, but might degrade performance on those that do.
As of this snapshot, this option does not make any change to cairo,
but it is possible that future versions of cairo will respect this
option and change the implementation of various functions as
appropriate.
From: Carl Worth <cworth@cworth.org>
Date: 22 Nov 2006
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo snapshot 1.3.4 now available
A new cairo snapshot 1.3.4 is now available from:
http://cairographics.org/snapshots/cairo-1.3.4.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.4.tar.gz.sha1
0c412d56c01ea5fcbcfeafdfc6f23b3772a9711e cairo-1.3.4.tar.gz
http://cairographics.org/snapshots/cairo-1.3.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.4 tag which points to a commit named:
143c56cb12ee5d0b0fbc5e4039dd4fc88764254d
which can be verified with:
git verify-tag 1.3.4
and can be checked out with a command such as:
git checkout -b build 1.3.4
What's new since 1.3.2?
=======================
This is the second development snapshot in the 1.3 series. It comes
one week after the 1.3.2 snapshot.
This snapshot has a couple of significant performance improvements,
and also adds new support for producing multi-page SVG output, (when
targeting SVG 1.2)---thanks to Emmanuel Pacaud. The details of the
performance improvements are as follows:
1. The long-awaited "new tessellator".
The credit for this being an improvement goes to Joonas Pihlaja. He
took my really slow code and really put it through its paces to get
the dramatic performance improvement seen below (up to 38x faster
on realistic cases, and more than 10x faster for the zrusin_another
test).
His own writeup of the work he did is quite thorough, but more than
can be quoted here. Please see his post for the interesting details:
http://lists.freedesktop.org/archives/cairo/2006-November/008483.html
(Though note that this snapshot also includes some additional,
significant improvements that were only sketched out in that
email---see "Generating fewer trapezoids").
2. More floating-point improvements
Daniel Amelang continues to work the magic he began in the 1.3.2
snapshot. This time he short-circuits floating-point
transformations by identity matrices and applies the earlier
floating-to-fixed-point technique to the problem of rounding.
The improvements here will primarily benefit text performance, and
will benefit platforms without hardware floating-point more than
those that have it, (some text tests show 20% improvement on an x86
machine and closer to 80% improvement on arm).
The performance chart comparing 1.3.2 to 1.3.4 really speaks for
itself, (this is on an x86 laptop). This is quite a lot of progress
for one week:
xlib-rgb stroke_similar_rgba_over-256 74.99 1.45% -> 2.03 68.38%: 36.86x speedup
███████████████████████████████████▉
xlib-rgb stroke_similar_rgba_source-256 78.23 1.43% -> 3.30 67.05%: 23.71x speedup
██████████████████████▊
xlib-rgba tessellate-256-100 820.42 0.15% -> 35.06 2.84%: 23.40x speedup
██████████████████████▍
image-rgba tessellate-256-100 819.55 0.32% -> 35.04 3.56%: 23.39x speedup
██████████████████████▍
xlib-rgb stroke_image_rgba_over-256 78.10 1.43% -> 4.33 65.56%: 18.04x speedup
█████████████████
xlib-rgb stroke_image_rgba_source-256 80.11 1.63% -> 5.75 63.99%: 13.94x speedup
█████████████
xlib-rgba zrusin_another_tessellate-415 89.22 0.35% -> 8.38 5.23%: 10.65x speedup
█████████▋
image-rgba zrusin_another_tessellate-415 87.38 0.89% -> 8.37 5.22%: 10.44x speedup
█████████▍
image-rgba zrusin_another_fill-415 117.67 1.34% -> 12.88 2.77%: 9.14x speedup
████████▏
xlib-rgba zrusin_another_fill-415 140.52 1.57% -> 15.79 2.88%: 8.90x speedup
███████▉
image-rgba tessellate-64-100 9.68 3.42% -> 1.42 0.60%: 6.82x speedup
█████▉
xlib-rgba tessellate-64-100 9.78 4.35% -> 1.45 0.83%: 6.72x speedup
█████▊
xlib-rgb stroke_linear_rgba_over-256 46.01 2.44% -> 7.74 54.51%: 5.94x speedup
█████
xlib-rgb stroke_linear_rgba_source-256 48.09 2.15% -> 9.14 53.00%: 5.26x speedup
████▎
xlib-rgb stroke_radial_rgba_over-256 50.96 2.34% -> 12.46 47.99%: 4.09x speedup
███▏
xlib-rgb stroke_radial_rgba_source-256 53.06 1.57% -> 13.96 46.57%: 3.80x speedup
██▊
image-rgba paint_similar_rgba_source-256 0.12 1.57% -> 0.08 9.92%: 1.42x speedup
▍
image-rgba paint_image_rgba_source-256 0.12 2.49% -> 0.08 10.70%: 1.41x speedup
▍
image-rgba world_map-800 356.28 0.46% -> 275.72 1.15%: 1.29x speedup
▎
xlib-rgba world_map-800 456.81 0.39% -> 357.95 1.39%: 1.28x speedup
▎
image-rgb tessellate-16-100 0.09 0.57% -> 0.07 3.43%: 1.23x speedup
▎
image-rgba tessellate-16-100 0.09 0.06% -> 0.07 2.46%: 1.23x speedup
▎
image-rgba text_solid_rgb_over-256 5.39 4.01% -> 4.47 0.70%: 1.21x speedup
▎
image-rgba text_solid_rgba_over-256 5.37 0.82% -> 4.45 0.75%: 1.21x speedup
▎
image-rgba text_image_rgb_over-64 0.78 0.10% -> 0.65 0.74%: 1.20x speedup
▎
image-rgba text_image_rgba_over-64 0.78 0.29% -> 0.65 0.68%: 1.19x speedup
▎
image-rgb text_solid_rgb_over-64 0.76 2.45% -> 0.63 0.81%: 1.19x speedup
▎
image-rgba text_solid_rgba_over-64 0.76 0.33% -> 0.64 0.66%: 1.19x speedup
▎
image-rgba text_similar_rgba_over-256 5.99 4.72% -> 5.04 1.09%: 1.19x speedup
▎
We should point out that there is some potential for slowdown in this
snapshot. The following are the worst slowdowns reported by the cairo
performance suite when comparing 1.3.2 to 1.3.4:
image-rgba subimage_copy-256 0.01 0.87% -> 0.01 3.61%: 1.45x slowdown
▌
xlib-rgb paint_solid_rgb_over-256 0.31 10.23% -> 0.38 0.33%: 1.26x slowdown
▎
image-rgba box-outline-fill-100 0.01 0.30% -> 0.01 2.52%: 1.21x slowdown
▎
image-rgba fill_solid_rgb_over-64 0.20 1.22% -> 0.22 1.59%: 1.12x slowdown
▏
image-rgb fill_similar_rgb_over-64 0.21 1.04% -> 0.24 1.06%: 1.11x slowdown
▏
image-rgba fill_image_rgb_over-64 0.21 1.19% -> 0.24 0.72%: 1.11x slowdown
▏
image-rgba fill_similar_rgb_over-64 0.21 0.18% -> 0.24 0.30%: 1.11x slowdown
▏
image-rgb fill_solid_rgba_over-64 0.22 1.66% -> 0.24 1.15%: 1.11x slowdown
▏
image-rgb fill_image_rgb_over-64 0.21 0.14% -> 0.24 0.80%: 1.11x slowdown
▏
image-rgba fill_image_rgba_over-64 0.22 1.34% -> 0.25 0.20%: 1.11x slowdown
▏
image-rgba fill_solid_rgba_over-64 0.22 1.48% -> 0.24 0.95%: 1.11x slowdown
▏
image-rgb fill_similar_rgba_over-64 0.22 1.13% -> 0.25 1.25%: 1.10x slowdown
▏
The 45% slowdown for subimage_copy is an extreme case. It's unlikely
to hit many applications unless they often use cairo_rectangle;
cairo_fill to copy a single pixel at a time. In any case, it shows a
worst-case impact of the overhead of the new tessellator. The other
slowdowns (~ 10%) are probably more realistic, and still very
concerning.
We will work to ensure that performance regressions like these are not
present from one major release of cairo to the next, (for example,
from 1.2 to 1.4).
But we're putting this 1.3.4 snapshot out there now, even with this
potential slowdown so that people can experiment with it. If you've
got complex geometry, we hope you will see some benefit from the new
tessellator. If you've got primarily simple geometry, we hope things
won't slowdown too much, but please let us know what slowdown you see,
if any, so we can calibrate our performance suite against real-world
impacts.
From: Carl Worth <cworth@cworth.org>
Date: 15 Nov 2006
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo snapshot 1.3.2 now available
A new cairo snapshot 1.3.2 is now available from:
http://cairographics.org/snapshots/cairo-1.3.2.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.3.2.tar.gz.sha1
2d380e89dc4d1c5be1460884e953b01f42fd5c1a cairo-1.3.2.tar.gz
http://cairographics.org/snapshots/cairo-1.3.2.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.3.2 tag which points to a commit named:
804e20b55d049a26fe4d96bb6d79890c65e43ab5
which can be verified with:
git verify-tag 1.3.2
and can be checked out with a command such as:
git checkout -b build 1.3.2
This snapshot is a chance to play with some of the recent performance
improvements that have been made to cairo (see below). But we're
really just getting started and there should be a lot more performance
improvements coming soon.
I hope that this snapshot is just the beginning of a steady stream of
ever-improving cairo snapshots. Ideally, we would see a new cairo
snapshot every week or two, and each faster than the one
before. Please help us make that happen!
We do have several performance problems identified and patches in
progress for several issues that still aren't in this snapshot, so
there's definitely some more exciting stuff to come, (more about that
in my follow ups to the cairo list). But please test this snapshot out
and let us know if it helps performance for your applications or not.
Have fun with cairo, everybody!
-Carl
Snapshot 1.3.2 (2006-11-14 Carl Worth <cworth@cworth.org>)
==========================================================
This is the first development snapshot since the 1.2 stable series
branched off shortly after the 1.2.4 release in August 2006.
This snapshot includes all the bug fixes from the 1.2.6 release,
(since they originated here on the 1.3 branch first and were
cherry-picked over to 1.2). But more importantly, it contains some new
API in preparation for a future 1.4 release, and most importantly, it
contains several performance improvements.
The bug fixes will not be reviewed here, as most of them are already
described in the 1.2.6 release notes. But details for the new API and
some performance improvements are included here.
As with all snapshots, this is experimental code, and the new API
added here is still experimental and is not guaranteed to appear
unchanged in any future release of cairo.
API additions
-------------
Several new API additions are available in this release. There is a
common theme among all the additions in that they allow cairo to
advertise information about its state that it was refusing to
volunteer earlier. So this isn't groundbreaking new functionality, but
it is essential for easily achieving several tasks.
The new functions can be divided into three categories:
Getting information about the current clip region
-------------------------------------------------
cairo_clip_extents
cairo_copy_clip_rectangles
cairo_rectangle_list_destroy
Getting information about the current dash setting
--------------------------------------------------
cairo_get_dash_count
cairo_get_dash
Getting information from a pattern
----------------------------------
cairo_pattern_get_rgba
cairo_pattern_get_surface
cairo_pattern_get_color_stop_rgba
cairo_pattern_get_color_stop_count
cairo_pattern_get_linear_points
cairo_pattern_get_radial_circles
In each of these areas, we have new API for providing a list of
uniform values from cairo. The closest thing we had to this before was
cairo_copy_path, (which is rather unique in providing a list of
non-uniform data).
The copy_clip_rectangles/rectangle_list_destroy functions follow a
style similar to that of cairo_copy_path. Meanwhile, the dash and
pattern color stop functions introduce a new style in which there is a
single call to return the number of elements available (get_dash_count
and get_color_stop_count) and then a function to be called once to get
each element (get_dash and get_color_stop_rgba).
I'm interested in hearing feedback from users of these new API
functions, particularly from people writing language bindings. One
open question is whether the clip "getter" functionality should adopt
a style similar to that of the new dash and color_stop interfaces.
API deprecation
---------------
The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
worked as a format value for cairo_image_surface_create, and it wasn't
necessary for supporting 16-bit 565 X server visuals.
XCB backend changes
-------------------
The XCB backend has been updated to track the latest XCB API (which
recently had a 1.0 release).
New quartz backend
------------------
Vladimir Vukicevic has written a new "native quartz" backend which
will eventually replace the current "image-surface wrapping" quartz
backend. For now, both backends are available, (the old one is
"quartz" and the new one is "nquartz"). But it is anticipated that the
new backend will replace the old one and take on the "quartz" name
before this backend is marked as supported in a release of cairo.
New OS/2 backend
----------------
Doodle and Peter Weilbacher have contributed a new, experimental
backend for using cairo on OS/2 systems.
Performance improvements
------------------------
Here are some highlights from cairo's performance suite showing
improvements from cairo 1.2.6 to cairo 1.3.2. The command used to
generate this data is:
./cairo-perf-diff 1.2.6 HEAD
available in the perf/ directory of a recent checkout of cairo's
source, (the cairo-perf-diff script does require a git checkout and
will not work from a tar file---though ./cairo-perf can still be used
to generate a single report there and ./cairo-perf-diff-files can be
used to compare two reports).
Results are described below both for an x86 laptop (with an old Radeon
video card, recent X.org build, XAA, free software drivers), as well
as for a Nokia 770. First the x86 results with comments on each, (all
times are reported in milliseconds).
Copying subsets of an image surface to an xlib surface (much faster)
--------------------------------------------------------------------
xlib-rgba subimage_copy-512 10.50 -> : 53.97x speedup
█████████████████████████████████████████████████████
Thanks to Christopher (Monty) Montgomery for this big performance
improvement. Any application which has a large image surface and is
copying small pieces of it at a time to an xlib surface, (imagine an
application that loads a single image containing all the "sprites" for
that application), will benefit from this fix. The larger the ratio of
the image surface to the portion being copied, the larger the benefit.
Floating-point conversion (3x faster)
-------------------------------------
xlib-rgba pattern_create_radial-16 27.75 -> 3.93 : 2.94x speedup
██
image-rgb pattern_create_radial-16 26.06 -> 3.74 : 2.90x speedup
█▉
Thanks to Daniel Amelang, (and others who had contributed the idea
earlier), for this nice improvement in the speed of converting
floating-point values to fixed-point.
Text rendering (1.3 - 2x faster)
------------------------------
xlib-rgba text_image_rgba_source-256 319.73 -> 62.40 : 2.13x speedup
█▏
image-rgb text_solid_rgba_over-64 2.85 -> 0.88 : 1.35x speedup
▍
I don't think we've ever set out to improve text performance
specifically, but we did it a bit anyway. I believe the extra
improvement in the xlib backend is due to Monty's image copying fix
above, and the rest is due to the floating-point conversion speedup.
Thin stroke improvements (1.5x faster)
---------------------------------------------
image-rgb world_map-800 1641.09 -> 414.77 : 1.65x speedup
▋
xlib-rgba world_map-800 1939.66 -> 529.94 : 1.52x speedup
▌
The most modest stuff to announce in this release is the 50%
improvement I made in the world_map case. This is in improvement that
should help basically anything that is doing strokes with many
straight line segments, (and the thinner the better, since that makes
tessellation dominate rasterization). The fixes here are to use a
custom quadrilateral tessellator rather than the generic tessellator
for straight line segments and the miter joins.
Performance results from the Nokia 770
--------------------------------------
xlib-rgba subimage_copy-512 55.88 -> 2.04 : 27.34x speedup
██████████████████████████▍
xlib-rgb text_image_rgb_over-256 1487.58 -> 294.43 : 5.05x speedup
████
image-rgb pattern_create_radial-16 187.13 -> 91.86 : 2.04x speedup
█
xlib-rgba world_map-800 21261.41 -> 15628.02 : 1.36x speedup
▍
Here we see that the subimage_copy improvement was only about half as
large as the corresponding improvement on my laptop, (27x faster
compared to 54x) and the floating-point conversion fix also was quite
as significant, (2x compared to 3x). Oddly the improvement to text
rendering performance was more than twice as good (5x compared to
2x). I don't know what the reason for that is, but I don't think it's
anything anybody should complain about.
From: Behdad Esfahbod <besfahbo@redhat.com>
Date: 2 Nov 2006
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: cairo release 1.2.6 now available
A new cairo release 1.2.6 is now available from:
http://cairographics.org/releases/cairo-1.2.6.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.2.6.tar.gz.sha1
b86b4017a9abd565ef11c72b7faee9082a04118f cairo-1.2.6.tar.gz
http://cairographics.org/releases/cairo-1.2.6.tar.gz.sha1.asc
(signed by Behdad Esfahbod)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.2.6 tag which points to a commit named:
8878bbc549a01868853ff6270b986e57c6474d88
which can be verified with:
git verify-tag 1.2.6
and can be checked out with a command such as:
git checkout -b build 1.2.6
This is the third bug fix release in the 1.2 series, coming less than
two months after the 1.2.4 release made on August 18.
The 1.2.4 release turned out to be a pretty solid one, except for a crasher
bug when forwarding an X connection where the client and the server have
varying byte orders, eg. from a PPC to an i686. Other than that, various
other small bugs have been fixed.
Various improvements have been made in the testing infrastructure to prevent
false positives, and to make sure the generated cairo shared object behaves as
expected in terms of exported symbols and relocations.
There were a total of 89 changes since 1.2.4. The following list the most
important ones:
Common fixes
------------
- Avoid unsigned loop control variable to eliminate infinite,
memory-scribbling loop. (#7593)
- Fix cairo_image_surface_create to report INVALID_FORMAT errors.
Previously the detected error was being lost and a nil surface was
returned that erroneously reported CAIRO_STATUS_NO_MEMORY.
- Change _cairo_color_compute_shorts to not rely on any particular
floating-point epsilon value. (#7497)
- Fix infinite-join test case (bug #8379)
- Pass correct surface to create_similar in _cairo_clip_init_deep_copy().
PS/PDF fixes
------------
- Fix Type 1 embedding in PDF.
- Correct the value of /LastChar in the PDF Type 1 font dictionary.
- Improve error checking in TrueType subsetting.
- Compute right index when looking up left side bearing. (bug #8180)
- Correct an unsigned to signed conversion problem in truetype subsetting
bbox.
- Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs.
- Add cairo version to PS header / PDF document info dictionary.
- Set CTM before path construction.
Win32 fixes
-----------
- Get correct unhinted outlines on win32. (bug 7603)
- Make cairo as a win32 static library possible.
- Use CAIRO_FORMAT_RGB24 for BITSPIXEL==32 surfaces too.
Build system fixes
------------------
- Define WINVER if it's not defined. (bug 6456)
- Fix the AMD64 final link by removing SLIM from pixman.
- Misc win32 compilation fixes.
- Add Sun Pro C definition of pixman_private.
- Use pixman_private consistently as prefix not suffix.
- Added three tests check-plt.sh, check-def.sh, and check-header.sh that check
that the shared object, the .def file, and the public headers agree about
the exported symbols.
- Require pkg-config 0.19. (#8686)
And like every time, have fun with cairo!
behdad
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers, as well as PDF, PostScript, and SVG
file output. Experimental backends include OpenGL (through glitz),
Quartz, XCB, BeOS, and DirectFB.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest releases of cairo can be found at:
http://cairographics.org/releases
Snapshots of in-development versions of cairo:
http://cairographics.org/snapshots
The programming manual for using cairo:
http://cairographics.org/manual
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Answers to some frequently asked questions about cairo:
http://cairographics.org/FAQ
Detailed list of changes since 1.2.4
====================================
Adrian Johnson:
Get correct unhinted outlines on win32.
Fix Type 1 embedding in PDF
Correct the value of /LastChar in the PDF Type 1 font dictionary.
Improve error checking in TrueType subsetting
Correct an unsigned to signed conversion problem in truetype subsetting bbox
Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs
PS: Add cairo version to PS header
PDF: Add cairo version to document info dictionary
Alfred Peng:
Add Sun Pro C definition of pixman_private
Use pixman_private consistently as prefix not suffix
Behdad Esfahbod:
[Makefile.am] Remove unnecessary parantheses that were causing trouble with old bash
[ROADMAP] Add glyph cache inspection to 1.4 roadmap
[TODO] Add cairo_get_scaled_font
[ROADMAP] Remove 1.2.4 stuff out of the way
[test] bufferdiff: take abs of the pixel diffs. Oops!
[image] Print out cairo version in the unsupported-format message
Bug #7593: Avoid unsigned loop control variable to eliminate infinite, memory-scribbling loop.
[xlib] Bug 7593: rewrite loop to be more readable, and fix warnings
[PNG] Mark status volatile to fix gcc warning
[test] Add 128 to any diff component such that differences are visible
[test] Use $(srcdir) to find valgrind supressions
[test] Use FcFreeTypeQuery
[configure] Invalidate cached warning flags if list of flags changes
Add scripts to sanity check the shared object for exported and PLT symbols
[x86-64] check-plt.sh: match on JU?MP_SLO as on x86-64 "SLOT" is truncated
check-headers.sh: Add a test for cairo_public decorators in public headers
cairo-pdf.h: Add missing cairo_public decorators
cairo-directfb.h: Add missing cairo_public decorators
check-def.sh: Only allow _cairo_.*_test_.* symbols, not all _cairo.* ones
[configure] Print out whether SVG and PDF surfaces can be tested
[check-headers.sh] Don't use '\>' regexp syntax
[Makefile.am] Pass srcdir down to the tests
[slim] hide cairo_glitz_surface_create() (#8551)
[configure.in] Require pkg-config 0.19. (#8686)
[PDF] Set CTM before path construction
[slim] hide cairo_pattern_status() #8551
[win32] Remove _cairo_win32_surface_show_glyphs()
Add notes for the 1.2.6 release.
Makefile.am: Remove boilerplate out of DIST_SUBDIRS
[doc] Update templates prior to release
Released cairo-1.2.6.
Carl Worth:
Increment version to 1.2.5 after making the 1.2.4 release
Add -Wextra (as well as -Wno-missing-field-initializers -Wno-unused-parameter)
Put static first to avoid compiler warning.
Eliminate conditions checking for unsigned or enum values less than 0.
test: Add link to test log file in HTML output
Require librsvg >= 2.14.0 to test SVG backend
bug 8104: Eliminate unused variables. Replicate assert statement to identify branch of interest.
pixman: Add pixman_private decorations to hide pixman symbols from public interface
Add many missing slim_hidden calls to bypass PLT entries for local use of public functions
slim_hidden_proto: Move smeicolon from definition to use for consistency and legibility
RELEASING: Add note on checking for local symbol PLT entries.
Make _cairo_output_stream_destroy return the stream's status as a last gasp.
Use new return value from _cairo_output_stream_destroy
test/bitmap-font: Fix arguments to FcFreeTypeQuery to avoid warnings.
Fix typo in error message (enhacement -> enhancement)
Add missing pixman_private to _FbOnes when a function.
Fix cairo_copy_path and cairo_copy_path_flat to propagate errors.
Rename test from stale path-data name to copy-path
Fix typo in documentation of cairo_in_fill (thanks to Jonathan Watt) and clarify a bit.
Fix Makefile bug preventing 'make doc' from succeeding
Rename docs-publish target to doc-publish in order to be consistent with the doc target.
Fix dependency of 'make doc' so that necessary header files are built first.
Fix cairo_image_surface_create to report INVALID_FORMAT errors.
Add new _cairo_pattern_create_for_status so that patterns properly propagate errors.
Fix typo that was resulting in device glyph_extents of INT16_MAX in some cases.
Bug #7497: Change _cairo_color_compute_shorts to not rely on any particular floating-point epsilon value.
Add test case from bug #8379 demonstrating infinite loop during round join
Add assert statement so the infinite-join test simply exits rather than looping infinitely.
test/infinite-join: Modify to draw something visible, and make the output a more reasonable size.
Fix infinite-join test case (bug #8379)
Add neglected reference images for infinite-join test
test: Update reference images due to previous change to _cairo_color_compute_shorts
test: Remove custom read/write-png code in favor of using cairo surfaces
test: Ignore single-bit errors for SVG backend.
Move target tolerance to cairo_test_target structure (should let single-pixel SVG errors pass)
Make xlib and xcb backends tolerant of single-bit errors in the test suite output.
Christian Biesinger:
[beos] Fix build error
fix comment: pixman_private needs to be before the type of a variable
Add missing ) in comment
Jamey Sharp:
[slim] hide cairo_version_string()
Kristian Høgsberg:
Compute right index when looking up left side bearing.
Miklós Erdélyi:
Pass correct surface to create_similar in _cairo_clip_init_deep_copy()
Nicholas Miell:
Fix the AMD64 final link by removing SLIM from pixman
Make the SLIM macros robust in the face of macro-renamed symbols
Robert O'Callahan:
Remove redundant call to _cairo_surface_get_extents
Tor Lillqvist:
[win32] Use CAIRO_FORMAT_RGB24 for BITSPIXEL==32 surfaces too
Vladimir Vukicevic:
[win32] Make cairo as a win32 static library possible
[win32] Misc win32 compilation fixes
Correctly acquire/release mutex in _cairo_scaled_font_map_destroy
Yevgen Muntyan:
Define WINVER if it's not defined. (bug 6456)
Subject: cairo release 1.2.4 now available
From: Carl Worth <cworth@cworth.org>
Date: 18 Aug 2006
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
A new cairo release 1.2.4 is now available from:
http://cairographics.org/releases/cairo-1.2.4.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.2.4.tar.gz.sha1
5520b771c8b85acea78fa56fc4c39b4dca6bcc7c cairo-1.2.4.tar.gz
http://cairographics.org/releases/cairo-1.2.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.2.4 tag which points to a commit named:
54755b2d9891981d813384bccde84998def96abf
which can be verified with:
git verify-tag 1.2.4
and can be checked out with a command such as:
git checkout -b build 1.2.4
This is the second bug fix release in the 1.2 series, coming less than
two weeks after the 1.2.2 release made on August 8.
The big motivation for a quick release was that there were a log of
build system snags that people ran into with the 1.2.2 release. But,
by the time we got those all done, we found that we had a bunch of
fixes for cairo's rendering as well. So there's a lot of goodness in
here for such a short time period.
As always, have lots of fun with cairo everybody!
-Carl
What's new in cairo 1.2.4 compared to 1.2.2
===========================================
Rendering fixes
---------------
Fix image surfaces to not be clipped when used as a source (Vladimir Vukicevic)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=72e25648c4c4bc82ddd938aa4e05887a293f0d8b
Fix a couple of corner cases in dashing degenerate paths (Jeff Muizelaar)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=fbb1758ba8384650157b2bbbc93d161b0c2a05f0
Fix support for type1 fonts on win32 (Adrian Johnson)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=da1019c9138695cb838a54f8b871bbfd0e8996d7
Fix assertion failure when rotating bitmap fonts (Carl Worth)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0bfa6d4f33b8ddb5dc55bbe419c15df4af856ff9
Fix assertion failure when calling cairo_text_path with bitmap fonts (Carl Worth)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9878a033531e6b96b5f27e69e10e90dee7440cd9
Fix mis-handling of cairo_close_path in some situations (Tim Rowley, Carl Worth)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=53f74e59faf1af78f2f0741ccf1f23aa5dad4efc
Respect font_matrix translation in _cairo_gstate_glyph_path (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f183b835b111d23e838889178aa8106ec84663b3
Fix vertical metrics adjustment to work with non-identity shapes (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7bc263842a798d657a95e539e1693372448837f
[PS] Set correct ImageMatrix in _cairo_ps_surface_emit_bitmap_glyph_data (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=d47388ad759b0a1a0869655a87d9b5eb6ae2445d
Build system fixes
------------------
Fix xlib detection to prefer pkg-config to avoid false libXt dependency (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0e78e7144353703cbd28aae6a67cd9ca261f1d68
Fix typos causing win32 build problem with PS,PDF, and SVG backends (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=aea83b908d020e26732753830bb3056e6702a774
Fix configure cache to not use stale results (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6d0e3260444a2d5b6fb0cb223ac79f1c0e7b3a6e
Fix to not pass unsupported warning options to the compiler (Jens Granseuer)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=97524a8fdb899de1ae4a3e920fb7bda6d76c5571
Fix to allow env. variables such as png_REQUIRES to override configure detection (Jens Granseuer)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=abd16e47d6331bd3811c908e524b4dcb6bd23bf0
Fix test suite to not use an old system cairo when converting svg2png (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6122cc85c8f71b1ba2df3ab86907768edebe1781
Fix test suite to not require signal.h to be present (Behdad Esfahbod)
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6f8cf53b1e1ccdbe1ab6a275656b19c6e5120e40
Code cleanups
-------------
Many useful warnings cleanups from sparse, valgrind, and careful eyes
(Kjartan Maraas, Pavel Roskin)
From: Carl Worth <cworth@cworth.org>
Date: 8 Aug 2006
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo release 1.2.2 now available
A new cairo release 1.2.2 is now available from:
http://cairographics.org/releases/cairo-1.2.2.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.2.2.tar.gz.sha1
859b9ed4eaa200a03b9e41ccc45f3799742e6c5c cairo-1.2.2.tar.gz
http://cairographics.org/releases/cairo-1.2.2.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.2.2 tag which points to a commit named:
ac1c748868bdf4ca6fd195b184ec90827f6e8c94
which can be verified with:
git verify-tag 1.2.2
and can be checked out with a command such as:
git checkout -b build 1.2.2
This is the first bug fix release in the 1.2 series since the original
1.2.0 release made six weeks ago.
There were some very serious bugs in the 1.2.0 release, (see below),
so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2
release maintains source and binary compatibility with 1.2.0 and does
not make any API additions.
I'd like to thank everybody who has done so much to make this release
possible. Some people have their names associated with fixes below,
but many more people have been just as valuable in testing and
reporting bugs. And I'd like to extend special recognition to the
people who have been patient with some major failures in cairo 1.2.0!
At the risk of neglecting the dozens of people who have done so much,
I do want to mention two people in particular:
First, Behdad Esfahbod has put an untold number of hours into this
release, with over 80 commits since the 1.2.0 release just a few weeks
ago. His efforts are often behind-the-scenes improving the Makefiles
and the test suites so that everyone working on cairo can do so more
smoothly and easily. Thanks Behdad!
Second, I'd like to extend a special welcome to Adrian Johnson who has
recently started working on cairo and immediately started contributing
very valuable improvement. His work has focused on the printing
backends, (particularly in the area of font subsetting), which are
much better for his efforts. Welcome Adrian!
And to everybody, have fun with cairo!
-Carl
What's new in cairo 1.2.2 compared to 1.2.0
===========================================
Fix crashes with BGR X servers
------------------------------
With cairo 1.2.0 many people reported problems with all cairo-using
programs, (including all GTK+ programs with GTK+ >= 2.8) immediately
crashing with a complaint about an unsupported image format. This bug
affected X servers that do not provide the Render extension and that
provide a visual with BGR rather than RGB channel order.
report: https://bugs.freedesktop.org/show_bug.cgi?id=7294
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59
Fix the "disappearing text" bug
-------------------------------
With cairo 1.2.0 many people reported that text would disappear from
applications, sometimes reappearing with mouse motion or
selection. The text would disappear after the first space in a string
of text. This bug was caused by an underlying bug in (very common) X
servers, and only affected text rendered without antialiasing, (either
a bitmap font or a vector font with antialiasing disabled). The bug
was also exacerbated by a KDE migration bug that caused antialiasing
to be disabled more than desired.
report: https://bugs.freedesktop.org/show_bug.cgi?id=7494
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14
see also:
Xorg: https://bugs.freedesktop.org/show_bug.cgi?id=7681
KDE: http://qa.mandriva.com/show_bug.cgi?id=23990
Fix broken image fallback scaling (aka. "broken printing")
----------------------------------------------------------
The various "print" backends, (pdf, ps, and svg), sometimes fallback
to using image-based rendering for some operations. In cairo 1.2.0
these image fallbacks were scaled improperly. Applications using cairo
can influence the resolution of the image fallbacks with
cairo_surface_set_fallback_resolution. With the bug, any value other
than 72.0 would lead to incorrect results, (larger values would lead
to increasingly shrunken output).
report: https://bugs.freedesktop.org/show_bug.cgi?id=7533
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb
Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod)
----------------------------------------------------------------------------
The 1.2.0 release introduced an inadvertent change to how the
translation components of a font matrix are interpreted. In the 1.0
series, font matrix translation could be used to offset the glyph
origin, (though glyph metrics were reported incorrectly in
1.0). However in 1.2.0, the translation was applied to the advance
values between each glyph. The 1.2.0 behavior is fairly useless in
practice, and it was not intentional to introduce a semantic
change. With 1.2.2 we return to the 1.0 semantics, with a much better
implementation that provides correct glyph metrics.
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051
Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod)
-------------------------------------------------------------------------------------
There has been a long-standing issue with cairo_surface_create_similar
such that font options and other settings from the original
destination surface would not be preserved to the intermediate
"similar" surface. This could result in incorrect rendering
(particularly with respect to text hinting/antialiasing) with
fallbacks, for example.
report: https://bugs.freedesktop.org/show_bug.cgi?id=4106
fixes: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0
http://gitweb.freedesktop.org/?p=cairo;a=commit;h=bdb4e1edadb78a2118ff70b28163f8bd4317f1ec
xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic)
----------------------------------------------------------------------------
Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0
caused a significant performance regression when using the xlib
backend. This performance regression was particularly noticeable when
doing lots of text rendering and when using a high-latency connection
to the X server, (such as a remote X server over an ssh
connection). The slowdown was identified and fixed in 1.2.2.
report: https://bugs.freedesktop.org/show_bug.cgi?id=7514
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c
PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson)
-------------------------------------------------------------------------
The cairo 1.2 series adds a supported pdf backend to cairo. In cairo
1.2.0 this backend required the freetype library, which was an
undesirable dependency on systems such as win32, (cairo is designed to
always prefer the "native" font system). As of cairo 1.2.2 the
freetype library is not required to use the pdf backend on the win32
platform.
report: https://bugs.freedesktop.org/show_bug.cgi?id=7538
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691
PDF: Fix broken output on amd64 (Adrian Johnson)
------------------------------------------------
report: http://bugzilla.gnome.org/show_bug.cgi?id=349826
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60
PS: Fix broken output for truetype fonts > 64k (Adrian Johnson)
---------------------------------------------------------------
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94
PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop)
------------------------------------------------------------
Kent notices that with the PDF backend in cairo 1.2.0 as soon as a
stroke was performed with dashing, all subsequent strokes would also
be dashed. There was no way to turn dashing off again.
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256
Fix memory leaks in failure paths in gradient creation (Alfred Peng)
--------------------------------------------------------------------
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2
Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson)
------------------------------------------------------------
report: https://bugs.freedesktop.org/show_bug.cgi?id=7766
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd
Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng)
-----------------------------------------------------------------------------
report: https://bugzilla.mozilla.org/show_bug.cgi?id=341874
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6
Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron)
-------------------------------------------------------------------------------------
report: https://bugs.freedesktop.org/show_bug.cgi?id=7483
fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235
Various memory leak fixes
-------------------------
Fix memory leak in _cairo_surface_show_glyphs (bug 7766)
Fix file handle leak in failure path (bug 7616)
Fix some memory leaks in the test cases.
Fix some memory leaks in font subsetting code used in print backends.
Documentation improvements (Behdad Esfahbod)
--------------------------------------------
Added new documentation for several functions (cairo_show_page,
cairo_copy_page, cairo_in_stroke, cairo_in_fill).
Fixed some syntax errors that were preventing some existing
documentation from being published.
Fixed several minor typographical errors.
Added an index for new symbols in 1.2.
From: Carl Worth <cworth@cworth.org>
Date: 1 Jul 2006
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo release 1.2.0 now available
A new cairo release 1.2.0 is now available from:
http://cairographics.org/releases/cairo-1.2.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.2.0.tar.gz.sha1
c5da7f89cdd3782102357f99a47f516d11661e92 cairo-1.2.0.tar.gz
http://cairographics.org/releases/cairo-1.2.0.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.2.0 tag which points to a commit named:
61404bd5022b913f58ecda8dc9e8922b4fc6f80b
which can be verified with:
git verify-tag 1.2.0
and can be checked out with a command such as:
git checkout -b build 1.2.0
We are very pleased to announce this release, the first major update
to cairo since the original 1.0 release 10 months ago. Compared to
cairo 1.0, the 1.2 release doubles the number of supported backends,
adding PDF, PostScript, and SVG backends to the previous xlib, win32
and image backends.
As with all of cairo's major releases, cairo 1.2 retains both source
and binary compatibility with the cairo 1.0 series. Programs compiled
for cairo 1.0 should run with cairo 1.2 without requiring any
modification.
I want to personally express my congratulations and admiration to
everyone on the cairo team. This includes authors of code,
contributors on the cairo mailing list, and users who have submitted
bug reports and suggestions. This release has been a huge effort, and
its high quality is due to the contributions of dozens of
people---many more than are mentioned below. So thank you!
I would also like to thank everyone for their patience during this
long and uncertain release process. I imagine some people may have
thought cairo 1.2 would never appear as date after projected date
slipped by. I should express particular thanks to Behdad Esfahbod
without whom the release still wouldn't be done, nor would it be
nearly as good, (many documentation updates, good catches of bad
mistakes that almost got frozen in the release, etc). Thanks Behdad!
-Carl
What's new in cairo 1.2 compared to 1.0
=======================================
New, supported backends (PDF, PostScript, and SVG)
--------------------------------------------------
The major theme of the 1.2 release is new PDF, PostScript and SVG
backends for cairo. Unlike the 1.0 series, in the 1.2 series these
backends are not marked as experimental and are now fully supported,
(that is, they will now have the same API stability guarantees as the
rest of the library).
These new backends form an integral part of the new printing support
that will soon be released as part of GTK+ 2.10.
Earlier, experimental versions of the PDF and PostScript backends used
image fallbacks exclusively, which was obviously unsatisfactory for
many uses. In contrast, the PDF backend in the cairo 1.2.0 release
will emit vectorized output for all operations drawn with the default
OVER operator, even when the drawing includes translucence. The
PostScript backend emits vectorized output as long as there is no
translucency. The SVG backend can handle basically anything with
vector output, (particularly if the user selects SVG 1.2 output).
And as always, with any supported cairo backend, the backends should
work fine with any possible cairo operations, (through image
fallbacks). In 1.2.0, when a fallback is necessary on any page, it
renders the entire page as a fallback. It is expected that future
releases will fallback more gracefully and use images only for the
minimum region necessary.
Text support in these backends has seen a tremendous amount of
work. At a minimum, text will be rendered as paths in any of the
backends, (assuming no other operations force a fallback). And in the
PDF and PostScript backends, both type1 and TrueType fonts will be
directly embedded in the output file. This results in higher-quality
previews and better performance. Note however, that due to a known bug
in the PDF backend, it is not currently possible to use a PDF viewer
to select text in a PDF file generated by cairo. It is anticipated
that this shortcoming will be addressed shortly in a subsequent
release.
New, experimental backends (beos and directfb)
----------------------------------------------
The 1.2.0 release includes two new backends that did not exist in the
1.0 series:
* beos backend
* directfb backend
These are experimental still, (as are the existing xcb, glitz, and
quartz backends), meaning we don't yet guarantee they are fully
functional, (not yet passing the entire test suite), nor are we
guaranteeing strong API compatibility into the future.
But please feel free to experiment with these backends and give use
feedback, or help us to improve them.
Group rendering API
-------------------
The long-awaited group-rendering support is now available with the
following function calls:
cairo_push_group
cairo_push_group_with_content
cairo_pop_group
cairo_pop_group_to_source
cairo_get_group_target
This API provides a much more convenient mechanism for doing rendering
to an intermediate surface without the need to manually create a
temporary cairo_surface_t and a temporary cairo_t and clean them up
afterwards.
Backend-specific pkg-config files
---------------------------------
In addition to the original cairo.pc file, cairo will also now install
a pkg-config files for each configured backend, (for example
cairo-pdf.pc, cairo-svg.pc, cairo-xlib.pc, cairo-win32.pc, etc.) this
also includes optional font backends (such as cairo-ft.pc) and the
optional png functionality (cairo-png.pc).
These new pkg-config files should be very convenient for allowing
cairo-using code to easily check for the existing of optional
functionality in cairo without having to write complex rules to grub
through cairo header files or the compiled library looking for
symbols.
Help for drawing disconnected circles
-------------------------------------
A new path-construction function was added which clears the current
point in preparation for a new sub path. This makes it much easier to
use cairo_arc to draw a circular arc that is not connected to the
current path:
cairo_new_sub_path
Degenerate paths for easier "dots"
----------------------------------
Degenerate paths are now consistently handled in a manner similar to
the PDF specification. This means that round caps can now be used to
easily draw circles (move_to, close_path, stroke), or dotted lines,
(set_dash with a 0 length for on segments).
The following function been added to complement
cairo_surface_set_device_offset:
cairo_surface_set_fallback_resolution
cairo_surface_get_content
cairo_debug_reset_static_data
cairo_surface_get_device_offset
Type querying functions
-----------------------
There are new get_type functions for querying sub-types of object:
cairo_surface_get_type
cairo_pattern_get_type
cairo_font_face_get_type
cairo_scaled_font_get_type
Scaled font query/convenience functions
---------------------------------------
More convenience in working with cairo_scaled_font_t with new getter
functions:
cairo_scaled_font_get_font_face
cairo_scaled_font_get_font_matrix
cairo_scaled_font_get_ctm
cairo_scaled_font_get_font_options
As well as a convenience function for setting a scaled font into a
cairo context:
cairo_set_scaled_font
and a function to allow text extents to be queried directly from a
scaled font, (without requiring a cairo_surface_t or a cairo_t):
cairo_scaled_font_text_extents
These new scaled font functions were motivated by the needs of the
pango library.
image backend
-------------
It is now possible to obtain access to the image data of any image
surface with the following new functions:
cairo_image_surface_get_data
cairo_image_surface_get_format
cairo_image_surface_get_stride
xlib backend
------------
Fix potentially big performance bug by making xlib's create_similar
try harder to create a pixmap of a depth matching that of the screen.
Add the following functions to allow the user to extract all the
details of the underlying Xlib drawable from an xlib surface:
cairo_xlib_surface_get_display
cairo_xlib_surface_get_drawable
cairo_xlib_surface_get_screen
cairo_xlib_surface_get_visual
cairo_xlib_surface_get_width
cairo_xlib_surface_get_height
cairo_xlib_surface_get_depth
win32 backend
-------------
Performance improvements by preferring GDI over pixman rendering when possible.
Fixes for text rendering.
Add a new function to create a font_face for an HFONT:
cairo_win32_font_face_create_for_hfont
PostScript backend
------------------
We anticipate that with cairo 1.2, toolkits will begin to use cairo
for printing on systems that use PostScript as the spool format. To
support this use case, we have added 4 new function calls that are
specific to the PostScript backend:
cairo_ps_surface_set_size
cairo_ps_surface_dsc_comment
cairo_ps_surface_dsc_begin_setup
cairo_ps_surface_dsc_begin_page_setup
These functions allow variation of the page size/orientation from one
page to the next in the PostScript output. They also allow the toolkit
to provide per-document and per-page printer control options in a
device-independent way, (for example, by using PPD options and
emitting them as DSC comments into the PostScript output). This should
allow toolkits to provide very fine-grained control of many options
available in printers, (media size, media type, tray selection, etc.).
PDF backend
-----------
The PDF backend also provides capability for per-page size changes,
with the following API:
cairo_pdf_surface_set_size
There has been a lot of interest in adding additional PDF-specific API
for inserting various kinds of meta-data or other structure into the
PDF output. We have avoided this in 1.2.0 since we don't yet know
exactly what the interface should look like. If you have interest or
knowledge in this area, please share your ideas with us.
SVG backend
-----------
Unlike some earlier, experimental versions of the SVG backend, the SVG
backend in cairo 1.2.0 does not have any dependency on the libxml2
library.
The SVG backend provides flexibility with regard to what version of
SVG it targets. It will target SVG 1.1 by default, which will require
image fallbacks for some of the "fancier" cairo compositing
operators. Or with the following new function calls:
cairo_svg_surface_restrict_to_version
cairo_svg_get_versions
cairo_svg_version_to_string
it can be made to target SVG 1.2 in which there is native support for
these compositing operators.
Optimizations and bug fixes
---------------------------
Shortly after the 1.0 maintenance series branched off the mainline
there was a major rework of the cairo font internals. This should
provide some good performance benefits, but it's also another area
people should look at closely for potential regressions, (thanks to
Federico Mena-Quintero for already pointing out a problem with bitmap
fonts containing a very large number of glyphs).
There has not yet been any widespread, systematic optimization of
cairo, but various performance improvements have been made, (and some
of them are fairly significant). So if some things seem faster than
1.0 then things are good. If there are any performance regressions
compared to 1.0 then there is a real problem and we would like to hear
about that.
Now that 1.2.0 is done, the major focus of the cairo project over the
next few months will be on performance and optimization. We are very
interested in benchmarks demonstrating cairo call sequences that are
of interest to users. Please send your benchmarks to the cairo mailing
list for inclusion in an upcoming automated performance regression
testing environment. Ideally benchmarks should run for a (fairly
short), fixed amount of time, terminate, and print a single number.
There has been a huge number of bug fixes---too many to mention in
detail. Again, things should be better, and never worse compared to
1.0. Please let us know if your testing shows otherwise.
What's new in cairo 1.2.0 compared to 1.1.10
============================================
There has been one API addition since the cairo 1.1.10 snapshot:
cairo_xlib_surface_get_width
cairo_xlib_surface_get_height
There's also a new feature without any API change:
Dots can now be drawn by using CAIRO_LINE_CAP_ROUND with
degenerate sub-paths, (cairo_move_to() followed by either
cairo_close_path() or a cairo_line_to() to the same location).
And at least the following bugs have been fixed:
6759 fontconfig option AntiAlias doesn't work in cairo 1.1.2
6955 Some characters aren't displayed when using xlib (cache u...
7268 positive device_offset values don't work as source
* PDF emit_glyph function needs to support bitmapped glyphs
* PS emit_glyph function needs to support bitmapped glyphs
* SVG emit_glyph function needs to support bitmapped glyphs
* PDF: minefield page one is falling back unnecessarily
* PS/PDF: Fix broken placement for vertical glyphs
* PS: Fix to not draw BUTT-capped zero-length dash segments
* Do device offset before float->fixed conversion
http://bugzilla.gnome.org/show_bug.cgi?id=332266
* PS: Fix source surfaces with transformations
* PS: Fix to not draw BUTT-capped degnerate sub-paths
* PS: Don't walk off end of array when printing "~>"
* Fix some memory leaks in the test suite rig
* SVG: Fix memory leak when using cairo_mask
* Fix EXTEND_REFLECT and EXTEND_PAD to not crash (though these are
still not yet fully implemented for surface patterns).
From: Carl Worth <cworth@cworth.org>
Date: 16 Jun 2006
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo snapshot 1.1.10 now available
A new cairo snapshot 1.1.10 is now available from:
http://cairographics.org/snapshots/cairo-1.1.10.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.1.10.tar.gz.sha1
709d48dbcd0ac806e4f7bfd1f69314e4dfb57329 cairo-1.1.10.tar.gz
http://cairographics.org/snapshots/cairo-1.1.10.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.1.10 tag which points to a commit named:
65e73c81b83222de873935cf384e514ea20ac854
which can be verified with:
git verify-tag 1.1.10
and can be checked out with a command such as:
git checkout -b build 1.1.10
Snapshot 1.1.10 (2006-06-16 Carl Worth <cworth@cworth.org>)
===========================================================
This is the fifth in a series of snapshots working toward the 1.2
release of cairo.
The primary motivation for this snapshot is to fix a long-standing bug
that had long been silent, but as of the 1.1.8 snapshot started
causing crashes when run against 16-bit depth X servers, (often Xvnc
or Xnest). The fix for this adds a new CAIRO_FORMAT_RGB16_565 to the
API.
This snapshot also includes a rewrite of cairo's SVG backend to
eliminate the dependency on libxml2. With this in place, cairo 1.2
will not depend on any libraries that cairo 1.0 did not.
As usual, there are also a few fixes for minor bugs.
From: Carl Worth <cworth@cworth.org>
Date: 14 Jun 2006
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.1.8 now available
A new cairo snapshot 1.1.8 is now available from:
http://cairographics.org/snapshots/cairo-1.1.8.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.1.8.tar.gz.sha1
ad660fe7bfede1882f4b81798e3e0ef8fe7ecb9b cairo-1.1.8.tar.gz
http://cairographics.org/snapshots/cairo-1.1.8.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.1.8 tag which points to a commit named:
dd859b8736bb4d1bcf3ed78d0bd1f72a7aad9ca9
which can be verified with:
git verify-tag 1.1.8
and can be checked out with a command such as:
git checkout -b build 1.1.8
This is the fourth in a series of snapshots working toward the 1.2
release of cairo. At this point, all major features of the 1.2 release
are in place, leaving just a few bug fixes left.
In particular, there will be no additional API changes between this
1.1.8 snapshot and the 1.2 release.
The announcement for 1.1.6 mentioned several API changes being
considered. Only one of these changes was actually implemented
(set_dpi -> fallback_resolution). This change does introduce one
source-level incompatibility with respect to previous 1.1.x snapshots,
so see below for details.
-Carl
What's new in 1.1.8 compared to 1.1.6
=====================================
** API Change **
----------------
According to the plan mentioned in the 1.1.6 notes, one source-level
incompatible change has been implemented. The following three
functions have been removed from cairo's API:
cairo_pdf_surface_set_dpi
cairo_ps_surface_set_dpi
cairo_svg_surface_set_dpi
and in their place the following function has been added:
cairo_surface_set_fallback_resolution
The signature and semantics of the function remains the same, so it is
a simple matter of changing the name of the function when calling
it. As a transition mechanism, this snapshot will (on many systems)
build to include the old symbols so that code previously compiled will
still run. However, all source code using the old names must be
updated before it will compile. And the upcoming 1.2 release is not
anticipated to include the old symbols.
Finally, it should be pointed out that the old symbols never existed
in the supported API of any stable release of cairo. (In the stable
1.0 releases the PDF, PS, and SVG backends were advertised as
experimental and unstable.)
And, as always, cairo continues to maintain source and binary
compatibility between major releases. So applications compiled against
supported backends in a stable release of cairo (1.0.4 say) will
continue to compile and run without modification against new major
releases (1.2.0 say) without modification.
API additions
-------------
The following new functions have been added to cairo's API:
cairo_surface_get_content
cairo_debug_reset_static_data
cairo_image_surface_get_data
cairo_image_surface_get_format
cairo_image_surface_get_stride
cairo_win32_font_face_create_for_hfont
New, backend-specific pkg-config files
--------------------------------------
In addition to the original cairo.pc file, cairo will also now install
a pkg-config files for each configured backend, (for example
cairo-pdf.pc, cairo-svg.pc, cairo-xlib.pc, cairo-win32.pc, etc.) this
also includes optional font backends (such as cairo-ft.pc) and the
optional png functionality (cairo-png.pc).
These new pkg-config files should be very convenient for allowing
cairo-using code to easily check for the existing of optional
functionality in cairo without having to write complex rules to grub
through cairo header files or the compiled library looking for
symbols.
Printing backend (PS, PDF, and SVG)
-----------------------------------
Improving the quality of the "printing" backends has been a priority
of the development between cairo 1.1.6 and cairo 1.1.8.
The big improvement here is in the area of text output. Previously, at
best, text was output as paths without taking advantage of any font
support available in the output file format.
Now, at the minimum text paths will be shared by using type3 fonts
(for PS and PDF---and similarly, defs for SVG). Also, if possible,
type3 and truetype fonts will be embedded in PostScript and PDF
output. There are still some known bugs with this, (for example,
selecting text in a cairo-generated PDF file with an embedded truetype
font does not work). So there will be some more changes in this area
before cairo 1.2, but do try test this feature out as it exists so
far.
Many thanks to Kristian Høgsberg for the truetype and type1 font
embedding.
win32 backend
-------------
Performance improvements by preferring GDI over pixman rendering when possible.
Fixes for text rendering.
xlib backend
------------
Fix potentially big performance bug by making xlib's create_similar
try harder to create a pixmap of a depth matching that of the screen.
Bug fixes
---------
Among various other fixes, the following bugs listed in bugzilla have
been fixed:
Bug 2488: Patch to fix pixman samping location bug (#2488).
https://bugs.freedesktop.org/show_bug.cgi?id=2488
Bug 4196: undef MIN an MAX before defining to avoid duplicate definition
https://bugs.freedesktop.org/show_bug.cgi?id=4196
Bug 4723: configure.in: Fix m4 quoting when examining pkg-config version
https://bugs.freedesktop.org/show_bug.cgi?id=4723
Bug 4882: Flag Sun's X server has having buggy_repeat.
https://bugs.freedesktop.org/show_bug.cgi?id=4882
Bug 5306: test/pdf2png: Add missing include of stdio.h
https://bugs.freedesktop.org/show_bug.cgi?id=5306
Bug 7075: Fix make clean to remove cairo.def
https://bugs.freedesktop.org/show_bug.cgi?id=7075
(Many thanks to Behdad Esfahbod for helping us track down and fix many
of these.)
From: Carl Worth <cworth@cworth.org>
Date: 4 May 2006
To: cairo-announce@cairographics.org
Cc: gnome-announce-list@gnome.org
Subject: [cairo-announce] cairo snapshot 1.1.6 now available
A new cairo snapshot 1.1.6 is now available from:
http://cairographics.org/snapshots/cairo-1.1.6.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.1.6.tar.gz.sha1
6c2c5dc688edca44f8087b6ffe8bfc1b7b1c3ba1 cairo-1.1.6.tar.gz
http://cairographics.org/snapshots/cairo-1.1.6.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.1.6 tag which points to a commit named:
7ba3b75efd56113411ed141a86675099ae82d5d5
which can be verified with:
git verify-tag 1.1.6
and can be checked out with a command such as:
git checkout -b build 1.1.6
Snapshot 1.1.6 (2006-05-04 Carl Worth <cworth@cworth.org>)
==========================================================
This is the third in a series of snapshots working toward the imminent
1.2 release of cairo. For a list of items still needing work on the
cairo 1.2 roadmap, please see:
http://cairographics.org/ROADMAP
As can be seen in that list, there are no longer any API additions
left on the roadmap. Instead, there is a feature (PDF type 3 fonts) a
performance optimization (X server gradients) and a list of bug
fixes. This gives us a fair amount of freedom to cut the 1.2 release
at almost any point by deciding to defer remaining bug fixes to
subsequent maintenance releases such as 1.2.2 and 1.2.4.
Before we will do that, we must first be wiling to commit to all the
new API additions. As a heads-up, there are a couple of potential API
changes being considered. (Note that these are changes to new API
introduced during 1.1 so these will not introduce API
incompatibilities compared to the stable 1.0 series). The changes
being considered are:
cairo_get_group_target: may acquire x and y offset return
parameters. May also be eliminated in favor of
cairo_get_target assuming its role
cairo_pdf_surface_set_dpi:
cairo_ps_surface_set_dpi:
cairo_svg_surface_set_dpi: These functions may be removed in favor
of a new cairo_surface_set_fallback_resolution
Additionally there is the possibility of a slight change in the
semantics of cairo_set_line_width. We believe the current behavior of the sequence:
cairo_set_line_width; ... change CTM ...; cairo_stroke;
is buggy. It is currently behaving the same as:
... change CTM ...; cairo_set_line_width; cairo_stroke;
We are considering fixing this bug before 1.2 with the hope that
nobody is already relying on the buggy behavior described here. Do
shout if you suspect you might be in that position.
This snapshot is backwards-compatible with the 1.0 series---it makes a
few API additions but does not remove any API. See a few paragraphs
below for details on what's new in 1.1.6.
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers. Experimental backends include OpenGL
(through glitz), Quartz, XCB, PostScript and PDF file output.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL)
version 1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest releases of cairo can be found at:
http://cairographics.org/releases
Snapshots of in-development versions of cairo:
http://cairographics.org/snapshots
The programming manual for using cairo:
http://cairographics.org/manual
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Answers to some frequently asked questions about cairo:
http://cairographics.org/FAQ
What's new in 1.1.6 compared to 1.1.4
=====================================
API additions
-------------
The long-awaited group-rendering support is now available with the
following function calls:
cairo_push_group
cairo_push_group_with_content
cairo_pop_group
cairo_pop_group_to_source
cairo_get_group_target
This API provides a much more convenient mechanism for doing rendering
to an intermediate surface without the need to manually create a
temporary cairo_surface_t and a temporary cairo_t and clean them up
afterwards.
Add the following missing get function to complement
cairo_surface_set_device_offset:
cairo_surface_get_device_offset
PDF backend (API addition)
--------------------------
The PDF backend now provides for per-page size changes, (similar to
what the PostScript backend got in the 1.1.4 snapshot). The new API
is:
cairo_pdf_surface_set_size
Xlib backend (API additions)
----------------------------
The following functions have been added to allow the extraction of
Xlib surface:
cairo_xlib_surface_get_display
cairo_xlib_surface_get_drawable
cairo_xlib_surface_get_screen
cairo_xlib_surface_get_visual
cairo_xlib_surface_get_depth
XCB backend (experimental)
--------------------------
Update backend so that it now compiles with the recent XCB 0.9 release.
Bug fixes and memory leak cleanup
---------------------------------
Various little things, nothing too significant though.
From: Carl Worth <cworth@cworth.org>
Date: 3 May 2006
To: cairo-announce@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.1.4 now available
A new cairo snapshot 1.1.4 is now available from:
http://cairographics.org/snapshots/cairo-1.1.4.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.1.4.tar.gz.sha1
b79306cff7db38227a95929810ad829ed46124f8 cairo-1.1.4.tar.gz
http://cairographics.org/snapshots/cairo-1.1.4.tar.gz.sha1.asc
(signed by Carl Worth)
Additionally, a git clone of the source tree:
git clone git://git.cairographics.org/git/cairo
will include a signed 1.1.4 tag which points to a commit named:
466eab544f120cc89c8adc1be2b522580b978413
which can be verified with:
git verify-tag 1.1.4
and can be checked out with a command such as:
git checkout -b build 1.1.4
This is the second in a series of snapshots working toward the
upcoming 1.2 release of cairo. For a list of items still needing work
on the cairo 1.2 roadmap, please see:
http://cairographics.org/ROADMAP
In particular, note that it is still planned for the PDF backend to
get page-resizing support before 1.2, (as PostScript receives here
with the 1.1.4 snapshot).
This snapshot is backwards-compatible with the 1.0 series---it makes a
few API additions but does not remove any API. See a few paragraphs
below for details on what's new in 1.1.4.
-Carl
What's new in 1.1.4 compared to 1.1.2
=====================================
PostScript backend: new printing-oriented API
---------------------------------------------
We anticipate that with cairo 1.2, toolkits will begin to use cairo
for printing on systems that use PostScript as the spool format. To
support this use case, we have added 4 new function calls that are
specific to the PostScript backend:
cairo_ps_surface_set_size
cairo_ps_surface_dsc_comment
cairo_ps_surface_dsc_begin_setup
cairo_ps_surface_dsc_begin_page_setup
These functions allow variation of the page size/orientation from one
page to the next in the PostScript output. They also allow the toolkit
to provide per-document and per-page printer control options in a
device-independent way, (for example, by using PPD options and
emitting them as DSC comments into the PostScript output). This should
allow toolkits to provide very fine-grained control of many options
available in printers, (media size, media type, tray selection, etc.).
SVG backend: builds by default, version control
-----------------------------------------------
The SVG backend continues to see major improvements. It is expected
that the SVG backend will be a supported backend in the 1.2
release. This backend will now be built by default if its dependencies
(freetype and libxml2) are met.
Additionally, the SVG backend now has flexibility with regard to what
version of SVG it targets. It will target SVG 1.1 by default, which
will require image fallbacks for some of the "fancier" cairo
compositing operators. Or with the following new function calls:
cairo_svg_surface_restrict_to_version
cairo_svg_get_versions
cairo_svg_version_to_string
it can be made to target SVG 1.2 in which there is native support for
these compositing operators.
Bug fixes
---------
At least the following bugs have been fixed since the 1.1.2 snapshot:
crash at XRenderAddGlyphs
https://bugs.freedesktop.org/show_bug.cgi?id=4705
Can't build cairo-1.1.2 on opensolaris due to " void function cannot return value"
https://bugs.freedesktop.org/show_bug.cgi?id=6792
Missing out-of-memory check at gfx/cairo/cairo/src/cairo-atsui-font.c:185
https://bugzilla.mozilla.org/show_bug.cgi?id=336129
A couple of memory leaks.
From: Carl Worth <cworth@cworth.org>
Date: 25 Apr 2006
To: cairo@cairographics.org
CC: gnome-announce-list@gnome.org
Subject: cairo snapshot 1.1.2 now available for testing
A new cairo snapshot 1.1.2 is now available from:
http://cairographics.org/snapshots/cairo-1.1.2.tar.gz
which can be verified with:
http://cairographics.org/snapshots/cairo-1.1.2.tar.gz.sha1
7551757bd758428242718638d690ac5d4edd7b28 cairo-1.1.2.tar.gz
http://cairographics.org/snapshots/cairo-1.1.2.tar.gz.sha1.asc
(signed by Carl Worth)
This is the first in a series of snapshots working toward the upcoming
1.2 release of cairo. (Subsequent snapshots will use successive even
numbers for the third digit, 1.1.4, 1.1.6, etc.) This snapshot is
backwards-compatible with the 1.0 series---it makes a few API
additions but does not remove any API. See a few paragraphs below
for details on what's new in 1.1.2.
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers. Experimental backends include OpenGL
(through glitz), Quartz, XCB, PostScript and PDF file output.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL)
version 1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest releases of cairo can be found at:
http://cairographics.org/releases
Snapshots of in-development versions of cairo:
http://cairographics.org/snapshots
The programming manual for using cairo:
http://cairographics.org/manual
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Answers to some frequently asked questions about cairo:
http://cairographics.org/FAQ
What's new in 1.1.2 compared to the 1.0 series
==============================================
PostScript and PDF backends are no longer "experimental"
--------------------------------------------------------
The major theme of the 1.2 release is improved PostScript and PDF
backends for cairo. Unlike the 1.0 series, in the 1.2 series these
backends will not be marked as experimental and will be enabled by
default. We encourage people to test this snapshot and the PS/PDF
backends in particular as much as possible.
The PostScript and PDF output is not yet ideal.
* One major problem with the PostScript output is that image
fallbacks are used more often than strictly necessary, and the
image fallbacks are at a lower resolution than desired, (the
cairo_ps_surface_set_dpi call is ignored).
* The major drawback of the current PDF backend implementation is
its text support. Every glyph is represented by a filled path in
the PDF file. The causes file sizes to be much larger and
rendering to be much slower than desired.
It is anticipated that both of these shortcomings will see some
improvements before the final 1.2 release.
In spite of those shortcomings, we hope that the PS and PDF backends
will yield faithful results for pretty much any cairo operations you
can throw at them. Please let us know if you are getting obviously
"different" results from the PS/PDF backends than from the image or
xlib backends.
Other new experimental backends
-------------------------------
This snapshot includes three new backends that did not exist in the
1.0 series:
* beos backend
* directfb backend
* svg backend
These are all currently marked "experimental" and are disabled by
default. But the SVG backend in particular has seen a lot of recent
development and is very close to passing the entire cairo test
suite. It is possible that this backend will become a fully supported
backend by the time of the cairo 1.2 release.
Public API additions
--------------------
There have been a few new API functions added to cairo, including:
New get_type functions for querying sub-types of object:
cairo_surface_get_type
cairo_pattern_get_type
cairo_font_face_get_type
cairo_scaled_font_get_type
More convenience in working with cairo_scaled_font_t with new getter
functions:
cairo_scaled_font_get_font_face
cairo_scaled_font_get_font_matrix
cairo_scaled_font_get_ctm
cairo_scaled_font_get_font_options
As well as a convenience function for setting a scaled font into a
cairo context:
cairo_set_scaled_font
and a function to allow text extents to be queried directly from a
scaled font, (without requiring a cairo_surface_t or a cairo_t):
cairo_scaled_font_text_extents
These new scaled font functions were motivated by the needs of the
pango library.
Finally, a new path-construction function was added which clears the
current point in preparation for a new sub path. This makes cairo_arc
easier to use in some situations:
cairo_new_sub_path
Before the 1.2 release is final we do still plan a few more API
additions specifically motivated by the needs of Mozilla/Firefox.
Optimizations and bug fixes
---------------------------
Shortly after the 1.0 maintenance series branched off the mainline
there was a major rework of the cairo font internals. This should
provide some good performance benefits, but it's also another area
people should look at closely for potential regressions.
There has not yet been any widespread, systematic optimization of
cairo, but various performance improvements have been made, (and some
of them are fairly significant). So if some things seem faster than
1.0 then things are good. If there are any performance regressions
compared to 1.0 then there is a real problem and we would like to hear
about that.
There has been a huge number of bug fixes---too many to mention in
detail, (but I've attached the giant log below). Again, things should
be better, and never worse compared to 1.0. Please let us know if your
testing shows otherwise.
-Carl
2006-03-15:
A new cairo release 1.0.4 is now available from:
http://cairographics.org/releases/cairo-1.0.4.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.0.4.tar.gz.sha1
89e72202e5b51a8914fce60f52f7c51ecdea982a cairo-1.0.4.tar.gz
http://cairographics.org/releases/cairo-1.0.4.tar.gz.sha1.asc
(signed by Behdad Esfahbod)
This is a maintenance (bug-fix only) release in the cairo 1.0 series.
It is the next such release after 1.0.2 release of last October.
(cairo versioning scheme reserves 1.0.3 for the development
version between 1.0.2 and 1.0.4.)
This release maintains source and binary compatibility with cairo
1.0.2.
This is a bug fix release. Many fixes in this release are
backported from the head branch and do not have bug numbers. For
the bugs in bugzilla that are fixed in this release, see:
https://bugs.freedesktop.org/buglist.cgi?bug_id=4674,4823,5528,5734,6176,6196,6197
This includes the bug causing Pango crashes with some corrupt
fonts. For a list of all changes, see ChangeLog.
Enjoy!
--behdad
2005-10-03:
The cairo team is very pleased to announce cairo 1.0.2 available from:
http://cairographics.org/releases/cairo-1.0.2.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.0.2.tar.gz.sha1
3a425049499b0b067ed4dc60d94b4d0819c0841b cairo-1.0.2.tar.gz
http://cairographics.org/releases/cairo-1.0.2.tar.gz.sha1.asc
(signed by Carl Worth)
This is a maintenance (bug-fix only) release in the cairo 1.0 series.
It is the first such release since 1.0.0. (There is no 1.0.1 release
since that number was used during the development between 1.0.0 and
1.0.2.)
This release maintains source and binary compatibility with cairo
1.0.0.
We'd like to give particular thanks to the many individuals who have
tested cairo since 1.0.0, (and turned up a fair number of bugs). The
names of a few of these helpful individuals are listed in the bug
detail below, but there are certainly many more unmentioned. Thanks to
everyone that has helped make this release so solid!
Three fixes in the 1.0.2 release deserve particular mention:
* Dashed curves
This is the first release of cairo to provide support for
dashed curves (splines and arcs).
* Better support for multi-thread applications
Many bugs were fixed in the locking of text operations, and
this is the first release to provide locking primitives on
win32. More testing of multi-threaded applications with the
1.0.2 release would be greatly appreciated.
* Many win32 compilation and rendering fixes
Many of these fixes can be credited to the Mozilla SVG
community of developers and testers which has given
cairo-win32 a much-needed shakedown. Thanks!
More details on other bugs fixed can be seen in the detailed list
below.
Have fun with cairo!
-Carl
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers. Experimental backends include OpenGL
(through glitz), Quartz, XCB, PostScript and PDF file output.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest releases of cairo can be found at:
http://cairographics.org/releases
Snapshots of in-development versions of cairo:
http://cairographics.org/snapshots
The programming manual for using cairo:
http://cairographics.org/manual
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Answers to some frequently asked questions about cairo:
http://cairographics.org/FAQ
Bug fixes in 1.0.2 since 1.0.0
==============================
For each bug number XXXX below, see:
https://bugs.freedesktop.org/show_bug.cgi?id=XXXX
for more details.
General bug fixes
-----------------
* 4408 - Add support for dashing of stroked curves
(Carl Worth)
* 4409 - Fix dashing so that each dash is capped on both ends
(Carl Worth)
* 4414 - Prevent SIGILL failures (proper use of -mmmx and -msse flags)
(Sebastien Bacher, Billy Biggs)
* 4299 - Fix crashes with text display in multi-threaded program
(Alexey Shabalin, Carl Worth)
* 4401 - Do not use sincos function since it is buggy on some platforms)
(Tim Mooney, Carl Worth)
* 4245 - Fix several bugs in the test suite exposed by amd64 systems
(Seemant Kulleen, Carl Worth)
* 4321 - Add missing byteswapping on GetImage/PutImage
(Sjoerd Simons, Owen Taylor)
* 4220 - Make the check for rectangular trapezoids simpler and more accurate
(Richard Stellingwerff, Owen Taylor)
* 4260 - Add missing channel-order swapping for antialiased fonts
(Barbie LeVile, Owen Taylor)
* 4283 - Fix compilation failure with aggressive inlining (gcc -O3)
(Marco Manfredini, Owen Taylor)
* 4208 - Fix some warnings from sparse
(Kjartan Maraas, Billy Biggs)
* 4269 - Fix to not crash when compiled with -fomit-frame-pointer
(Ronald Wahl, Owen Taylor)
* 4263 - Improve performance for vertical gradients
(Richard Stellingwerff, Owen Taylor)
* 4231
* 4298 - Accommodate gentoo and Mandriva versions in X server vendor string check
(Billy Biggs, Frederic Crozat, Owen Taylor)
win32-specific fixes
--------------------
* 4599 - Fix "missing wedges" on some stroked paths (win32)
(Tim Rowley, Jonathan Watt, Bertram Felgenhauer, Carl Worth, Keith Packard)
* 4612 - Fix disappearing text if first character out of surface (win32)
(Tim Rowley)
* 4602 - Fix shutdown of cairo from failing intermediate, size-0 bitmaps (win32)
Aka. the "white rectangles" bug from mozilla-svg testing
(Tim Rowley)
* Various portability improvements for win32
(Hans Breuer, Owen Taylor, Carl Worth)
* 4593 - Fix font sizes to match user expectations (win32)
(Tor Lillqvist, Owen Taylor)
* 3927 - Fix to report metrics of size 0 for glyph-not-available (win32)
(Hans Breuer, Owen Taylor, Tor Lillqvist)
* Add locking primitives for win32
(Hans Breuer)
xlib-specific fixes
-------------------
* Fix crash from size-0 pixmap due to empty clip region (xlib)
(Radek Doulík, Carl Worth)
2005-08-24:
The cairo team is very pleased to announce cairo 1.0 available from:
http://cairographics.org/releases/cairo-1.0.0.tar.gz
which can be verified with:
http://cairographics.org/releases/cairo-1.0.0.tar.gz.sha1
abc50d6a657cba15b3956c8c3aaea080b71172bb cairo-1.0.0.tar.gz
http://cairographics.org/releases/cairo-1.0.0.tar.gz.sha1.asc
(signed by Carl Worth)
All future 1.x.y releases of cairo will be source and binary
compatible with cairo 1.0.0.
With this release, we'd like to remind everyone of the proper position
for the number 1 in software releases, which is at the beginning.
While this release does mark the culmination of months or years of
work by many people, it's more significant in marking what is yet to
come. Cairo has just begun and we're excited to see where it will go
from here.
In this release, we have marked three backends as "supported"
xlib, image, win32
and all other backends as "experimental" which as such, do not have
part in the API guarantees of this release. The experimental backends
will not be compiled by default, but they are still available for
people to experiment with by means of --enable options to
configure. We recognize that many people would find the experimental
backends useful, (even with existing bugs), and it is with caution
that we mark them this way. We are not trying to remove utility, but
we do think it is important to carefully advertise which backends are
not yet up to the standards of stability, completeness, and rendering
fidelity expected from a cairo backend.
These "experimental" backends are certainly not going away, and we
hope that each one will become a "supported" backend in a future cairo
release quite soon.
-Carl
PS. Call it "cairo" or the "cairo graphics library", but try not to
ever call it "Cairo" unless writing it at the beginning of a sentence.
What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers. Experimental backends include OpenGL
(through glitz), Quartz, XCB, PostScript and PDF file output.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).
Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.
Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.
Where to get more information about cairo
=========================================
The primary source of information about cairo is:
http://cairographics.org/
The latest releases of cairo can be found at:
http://cairographics.org/releases
Snapshots of in-development versions of cairo:
http://cairographics.org/snapshots
The programming manual for using cairo:
http://cairographics.org/manual
Mailing lists for contacting cairo users and developers:
http://cairographics.org/lists
Answers to some frequently asked questions about cairo:
http://cairographics.org/FAQ
What's new in 1.0.0 compared to 0.9.2
=====================================
Experimental backends
---------------------
* The Glitz, PS, PDF, Quartz, and XCB backends have been declared
experimental, and are not part of the API guarantees that accompany
this release. They are not built by default, even when the required
libraries are available, and must be enabled explicitly with
--enable options to configure.
It is very painful for us to be pushing out a major release without
these backends enabled. There has been a tremendous amount of work
put into each one and all are quite functional to some
extent. However, each also has some limitations. And none of these
backends have been tested to the level of completeness and
correctness that we expect from cairo backends.
We do encourage people to experiment with these backends and report
success, failure, or means of improving them.
Operator behavior
-----------------
* Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators
behaved in an inconsistent and buggy fashion and could affect areas
outside the clip mask. In 0.9.0, these six "unbounded" operators
were fixed to consistently clear areas outside the shape but within
the clip mask. This is useful behavior for an operator such as IN,
but not what was expected for SOURCE and CLEAR. So, in this release
the behavior of SOURCE and CLEAR has been changed again. They now
affect areas only within both the source and shape. We can write
the new operators as:
SOURCE: dest' = (mask IN clip) ? source : dest
CLEAR: dest' = (mask IN clip) ? 0 : dest
Behavior and API changes
------------------------
* Setting the filter on a gradient pattern would change the
interpolation between color stops away from the normal linear
interpolation. This dubious behavior has been removed.
* The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros --
implementation details that leaked into cairo.h -- have been moved
into an internal header.
* The cairo_show_text function now advances the current point
according to the total advance values of the string.
API additions
-------------
* cairo_set_dash can now detect error and can set
CAIRO_STATUS_INVALID_DASH.
Features
--------
* When compiled against recent versions of fontconfig and FreeType,
artificial bold fonts can now be turned on from fonts.conf using
the FC_EMBOLDEN fontconfig key.
Optimization
------------
* The compositing code from the 'xserver' code tree has now been
completely merged into libpixman. This includes MMX optimization of
common operations.
* The image transformation code in libpixman has been improved and
now performs significantly faster.
Bug fixes
---------
* Several crashes related to corruption in the font caches have been
fixed.
* All test cases now match pixel-for-pixel on x86 and PPC; this
required fixing bugs in the compositing, stroking, and pattern
rendering code.
* Negative dash offsets have been fixed to work correctly.
* The stroking of paths with multiple subpaths has now been fixed to
apply caps to all subpaths rather than just the last one.
* Many build fixes for better portability on various systems.
* Lots of other bug fixes, but we're too tired to describe them in
more detail here.
Acknowledgments
================
We would like to express our appreciation to everyone who has
contributed to making cairo everything it is today. Hundreds of people
have debated API on mailing lists, tested early snapshots, submitted
bug reports, and contributed code.
The following list has been extracted from cairo's ChangeLog, and we
recognize that is only a very small subset of those who have helped.
Josh Aas - Memory leak fix for quartz backend
Shawn T. Amundson - Build fix
Olivier Andrieu - PNG backend
Peter Dennis Bartok - Bug fix for clipping
Dave Beckett - Build fixes, Debian packaging
Billy Biggs - Pixman code merge. Optimization. Fixes for subtle rendering bugs.
Damien Carbery - Build fixes
Andrew Chant - Adding const where needed
Steve Chaplin - Bug fixes for PNG reading
Tomasz Cholewo - Bug fixes
John Ehresman - Build fixes for win32
John Ellson - First font/glyph extents functions
Behdad Esfahbod - Release script improvements, bug fixes.
Bertram Felgenhauer - Fixes for subtle arithmetic errors
J. Ali Harlow - win32 backend updates
Richard Henderson - "slim" macros for better shared libraries
James Henstridge - Build fixes related to freetype
Graydon Hoare - Support for non-render X server, first real text support
Thomas Hunger - Initial version of cairo_in_stroke/fill
Kristian Høgsberg - PDF backend, PS backend with meta-surfaces
Amaury Jacquot - Documentation review, application testing
Adrian Johnson - PDF backend improvement
Michael Johnson - Bug fix for pre-C99 compilers
Øyvind Kolås - Bug fixes. Better default values.
Martin Kretzschmar - Arithmetic fix for 64-bit architectures
Alexander Larsson - Profiling and performance fixes.
Tor Lillqvist - win32 build fixes, build scripts
Luke-Jr - Build fix for cross-compiling
Jordi Mas - Bug fix for cairo_show_text
Jeff Muizelaar - Patient, painful, pixman code merge. Test fixes
Peter Nilsson - Glitz backend
Geoff Norton - Build fixes
Robert O'Callahan - Const-correctness fixes.
Mike Owens - Bug fixes
Keith Packard - Original concept, tessellation, dashing, font metrics rewrite
Stuart Parmenter - Original GDI+ backend, win32 fixes
Christof Petig - Build fixes related to freetype
David Reveman - New pattern API, glitz backend
Calum Robinson - Quartz backend
Tim Rowley - Quartz/ATSUI fixes, X server workarounds, win32 glyph path support
Jamey Sharp - Surface/font backend virtualization, XCB backend
Jason Dorje Short - Build fixes and bug fixes
Travis Spencer - XCB backend fix
Bill Spitzak - Build fix to find Xrender.h without xrender.pc
Owen Taylor - Font rewrite, documentation, win32 backend
Malcolm Tredinnick - Documentation fixes
Sasha Vasko - Build fix to compile without xlib backend
Vladimir Vukicevic - Bug fix for clipping
Carl Worth - Original library, support for paths, images
Richard D. Worth - Build fixes for cygwin
(please let us know if you're aware of someone we've missed)