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. 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, 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 Summary of all changes from cairo 1.5.8 to 1.5.10 ================================================= Adrian Johnson (34): PDF: Use correct surface size when emitting patterns Update operator-source PS ref images PS: Implement linear gradient repeat and reflect Update clip-operator ps ref image Add operator-clear ps ref image PS: Implement reflected surface patterns Add linear-gradient-reflect ps ref image Update gradient-alpha ps ref images Update over-around-source ps ref image Ensure PS/PDF miter is >= 1.0 Add dash-curve ps ref image Update operator-source ps ref images PDF: Fix uninitialized variable in previous commit PDF: Remove stale comments Add word_wrap stream to pdf-operators Add PS linecap path workarounds to pdf_operators pdf-operators: only one path matrix is required PS: Remove the Type 3 outline glyph code Make PS backend use cairo-pdf-operators.c PS: Don't use patterns for paint surface extend none Update rotate-image-surface-paint ps ref image PS: Don't use patterns for fill surface extend none PS: Use InterleaveType 2 for image and mask PS: Use currentfile as the image data source Update PS ref images Win32-printing: Fix meta surface patterns PDF: Word wrap _cairo_pdf_operators_show_glyphs output PDF: Allow word_wrap_stream to split hex strings Implement PDF fill-stroke PS: Remove unused code PDF/PS: No need to use save/restore for solid colors PDF/PS: Fix mismatched save restore when using fill-stroke Use correct prefix for _cairo_pdf_operators_stroke Change PDF newline characters from \r\n to \n Alp Toker (2): Revert "Change cairo_get_current_point() to return cairo_status_t instead of void" Introduce cairo_has_current_point() Antoine Azar (2): Fixed rounding function call Added cairo-misc.c to makefile Azar (none) (2): replaced round with _cairo_lround. Round doesn't compile on Win32 Some fixes and improvements to the Win32 build Behdad Esfahbod (5): [xlib] Move multiple CAIRO_MUTEX_INITIALIZE into one place they all end up anyway [configure.in] Make PS/PDF/SVG default enabled [docs] Fix typo [cairo-pdf-operators] Pass matrix by reference, not by value [cairo-misc.c] Add misc functions to this file Bertram Felgenhauer (1): [perf] add tests for magnified and minified image sources. Carl Worth (25): Increment cairo version to 1.5.9 after the 1.5.8 snapshot cairo_xlib_surface_create_similar: Pass the original drawable to XCreatePixmap Add several Makefile.win32 files to EXTRA_DIST Make _cairo_slope_compare return a non-zero result for slopes that differ by pi Remove _cairo_slope_[counter_]clockwise Eliminate a potential infinite loop in spline stroking Add a spline to the degenerate-pen test case Revert "[meta-surface] Adjust tolerance when replaying to surfaces with device scale" cairo-svg: Make operation_supported depend on analyze_operation instead of the other way around. Add svg-specific reference images for meta-surface-pattern test svg: Add support for flattening SOURCE painting when there's nothing beneath it Re-enable some pdf tests now that poppler has knockout support Re-enable pdf tests with gradients and add poppler-based reference images Add poppler-specific reference image for text-pattern Add poppler-specific reference images for tests needing EXTEND_PAD Add poppler-specific reference image for push-group Add poppler-specific reference image for source-clip-scale Update ps-specific reference images Expand the documentation of cairo/test/README Update ps-specific reference images for ghostscript 8.61 Add svg-specific reference image for mask-alpha NEWS: Add notes for cairo 1.5.10 Increment cairo version to 1.5.10 and libtool versioning to 17:0:15 Mention that cairo_get_current_point is void again Update REFERENCE_IMAGES for distcheck Chris Wilson (29): [test/invalid] Test cairo_translate() and friends for NaN safety. [test/font-options] Check the defaults values. [cairo-pdf-surface] Minor code tidy. [cairo-png] Improve error return for invalid parameters. [xmalloc] Hide valgrind warning. [test/a1-sample-image] Fix the memleak. [cairo-surface] Hide the compiler warnings. [check] Only build documents during make check if we have GTK_DOC [test] Add tests using each backend as a source. [cairo-ft-font] Tidy usage of cairo_error(). [test/a8-mask] Fix memleak. [test] Summarise the tests failures per backend. [cairo-output-stream] Add format(printf) markup. [cairo-ps-surface] Tidy return from _analyze_image_transparency(). [test/font-options] Check for HAVE_FCFINI [boilerplage] Add getopts to the boilerplate library. [cairo-font-options] Disallow use of NULL font-options. [cairo-ft-font] Propagate error detected during determination of scale factors. [cairo-scaled-font] Create error objects on demand. [test/invalid-matrix] Promote incorrect status warning to an error. [test/invalid-matrix] Check scale(0,0) [test/invalid-matrix] Test detection of infinities. [test/bitmap-font] Destroy the font options after use. [pdf] Minor make check fix. [pdf-operators] Missing private markup. [cairo-pdf-operators] Cleanup word_wrap_stream [cairo-surface] Check surface status on internal paths as well. [cairo-scaled-font-subsets] Fix memleak on failure to reserve .notdef glyph. [gitignore] Ignore cairo-no-features.h Kristian Høgsberg (1): [pdf] Use compressed PDF stream instead of compress_dup() Peter Weilbacher (4): [os2] Improve documentation Merge branch 'master' of ssh://pmw git freedesktop org/git/cairo [os2] only call FcInit/Fini when compiled with FT font backend [os2] fix typo in comment Shailendra Jain (1): Compile fix for AIX. Vladimir Vukicevic (10): Remove get-xrender-format from list of tests to be run on all platforms Fix text-zero-len on ATSUI to not infinite loop Optimize stroker by hoisting some calculations out of loops Optimize dashed strokes, part 2 Update test ref images that changed with stroking changes Followup patch to dashed stroke optimization Do correct calculation of pen dimensions for stroke optimization Avoid buffer overflow in ps/pdf surface [pdf] restore alpha_size back to correct bit size [stroker] fix _compute_normalized_device_slope to return correct sign
Attachment:
pgpOhGOWyNGMW.pgp
Description: PGP signature