[cairo] cairo release 1.14.0 now available
Bryce Harrington
bryce at osg.samsung.com
Mon Oct 13 20:31:36 PDT 2014
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 at 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.
--
Bryce Harrington
Senior Open Source Developer - bryce at osg.samsung.com
Open Source Group - Samsung Research America
------------------------------------------------------------------------
Cairo - Multi-platform 2D graphics library
http://cairographics.org
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
------------------------------------------------------------------------
List of changes in this release:
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.
----- End forwarded message -----
More information about the cairo
mailing list