[cairo-announce] cairo snapshot 1.9.2 now available

Carl Worth cworth at cworth.org
Fri Jun 12 12:25:50 PDT 2009

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!


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


    which can be verified with:

	0dc542447fc46d77a3106afff4445d6e668d76e6  cairo-1.9.2.tar.gz

	(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:

    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:


    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.
     "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.


    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.

    Indicates that the request surface size is not supported by the
    backend.  This generally indicates that the request is too large.

    Indicates that a required callback for a user-font was not implemented.

    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:


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

    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:


    (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) :


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

  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:


  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)


  cairo_traps_extract_region >10x slower. Fix pending.

Still to come:

  Region tracking API (ssp) for damage tracking, hit testing etc

  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%).

All changes from 1.8.6 to 1.9.2
Adrian Johnson (45):
      PS/PDF: Set image Interpolation flag
      Specify a background color for XFAIL text
      Add an extents argument to the high level surface backend functions
      Make meta-surface store and replay extents of each operation
      PDF: Store the operation extents in each pattern
      PDF: Implement EXTEND_PAD for image patterns
      PDF: meta-surface patterns with EXTEND_PAD are unsupported
      PS: Implement EXTEND_PAD for image patterns
      PS: meta-surface patterns with EXTEND_PAD are unsupported
      Add cairo_surface_set_mime_data()
      PDF: Implement JPEG image embedding
      type1-subset: return unsupported on FT errors
      test/README: fix typo
      Add pdf mime data test
      PS: Implement JPEG embedding
      win32-printing: Implement JPEG support
      Move cairo-jpeg-info.c to cairo-image-info.c
      Add JPEG2000 mimetype and image info function
      PDF: Add JPEG2000 image embedding
      Add image/jp2 to mime-data test
      PDF: Add newline to end of binary streams
      PDF: Add cairo_pdf_surface_restrict_to_version API
      PDF: Disable PDF 1.5 features when version 1.4 is selected
      Add PNG get info function
      Win32-print: Add PNG embedding support
      Document location of image format specifications
      Fix typo
      Change uint to uint32_t
      Fix win32 font breakage
      win32-font: truncate instead of fail if toy font name too long
      Document cairo_surface_(set|get)_mime_data() and mime types
      Document PDF restrict_to_version API
      PDF: Include subset tag in font name
      Factor out duplicate code in truetype and cff subsetting
      Use PS font name in CFF and TrueType PDF font subsets
      Embed full font name in PDF TrueType and CFF fonts
      Use PS font name in PS TrueType fonts
      Fix buffer size check in TrueType subsetting
      Fix TrueType subsetting bug
      Fix the TrueType subsetting fix in 9b496af5c
      Fix win32 build breakage
      Ensure win32 font index_to_ucs4() sets ucs4 to -1 if lookup fails
      Correct the comment for the index_to_ucs4 font backend function
      Fix typo in comment
      PDF: Don't embed the same pattern more than once

Andrew Lavin (1):
      [test] Compile fix for invalid-matrix

Behdad Esfahbod (76):
      [Makefile.am.releasing] Symlink /manual and /cairo-manual.tar.gz only for releases
      [.gitignore] Add
      [boilerplate/Makefile.win32] Only build source files, not headers
      [aclocal.dolt.m4] Fix build with bash versions <= 3.0 (bug #18363)
      Define RepeatNone, etc if the available Render version doesn't (#18385)
      [os2] Fix includes
      [Makefile.am] Use top_srcdir instead of srcdir
      Clean up toy font face handling
      [scaled-font] Improve docs
      [.gitignore] Update
      [ft] Remove stale comment
      Treat any toy family starting with "@cairo:" as request for twin
      [toy] Use twin font if font backend returns UNSUPPORTED
      [twin] close_path the 'o'
      [font-face] Use cairo_font_face_t instead of toy, for nil objects
      [toy-font-face] Move toy font face code in a file of its own
      [twin] Add face properties
      [twin] Fix serif option parsing.  Also make serif and weight do something
      [twin] close_path the Q
      [twin] Minor cleanup
      [twin] Adjust font extents
      [util] Add cairo-view
      [twin] Fix dots
      [twin] Implement monospace
      [twin] Disable the serif mode
      [twin] Implement slant
      [twin] Implement stretch
      [twin] Implement small-caps
      [twin] Remove serif setting
      [twin] Adjust baseline
      [twin] Reduce the weight just a bit, such that bold doesn't look as bad
      [util] Fix pangram
      [twin] Implement hinting
      [twin] Optimize hinting
      [twin] Disable pen hinting if hinting is off
      [twin] Hint dots
      [twin] Improve hinting
      [twin] Improve glyph hints
      [twin] Don't hint pen if hint-style is SLIGHT
      [pattern] Fix comment typo
      [scaled-font] Make cairo_debug_reset_static_data() work again
      [twin] Further reduce weight
      [twin] Minor shuffling
      [twin] Don't stretch pen
      [twin] Cache pen and other properties on the scaled font
      [twin] Fix monospace for narrow glyphs
      [twin] Clean up hinting
      [twin] Adjust margins
      [twin] Resnap margin under monospace
      [util] Add waterfall
      [twin] Micro-optimize
      [spline] Add an analytical bounder for splines
      [spline] Remove duplicated code by using a macro
      [spline] Simplify code
      [spline] Do some checks to avoid calling sqrt() if no feasible solution exists
      [spline] Save a couple more muls
      [_cairo_spline_bound] Fix the check for feasible solutions
      [_cairo_spline_bound] Simplify condition
      [_cairo_spline_bound] Protect against b == 0
      [gstate] Change the glyph dropping safety margin from 2em to 10em
      Fix various README typos
      [doc] Give a small hint about Twin font
      [build] Include all generated win32 build files in the repo
      Comment win32 maintainer-clean files again
      [util] Don't link backtrace-symbols into malloc-stats
      [util] Fix memset bug in malloc-stats
      [util/malloc-stats] Do a single backtrace_symbols() call
      [test] Fix "make dist"
      Don't distribute cairo-features.h (#19992)
      Support compiling without fontconfig
      [twin] Update parsed weights and stretches from Pango
      [twin] Reorganize matching code to better reflect the code in Pango
      Err, make gtk-doc happy again
      [ft] Fix vertical advance metrics of bitmap fonts (#21985)

Bertram Felgenhauer (2):
      [in_fill] Correctly track current point in curve_to.
      [spline] fix wrong sign in _cairo_spline_bound.

Carl Worth (14):
      Increment version to 1.9.1
      RELEASING: Mention that a versioned manual is uploaded.
      Fix release-publish to also update the current manual.
      Fix typo in bug URL.
      Merge branch '1.8'
      Add details to test/COPYING about license of bundled fonts.
      cairo-trace: Print name of trace file.
      Make the warning about the need to --enable-gtk-doc more explicit.
      NEWS: Cleanup in preparation for 1.9.2 snapshot
      NEWS: Explain bovine polaroids a bit more.
      NEWS: Update date for snapshot planned for today.
      Update CLEANFILES for 'make distcheck'
      NEWS: Fix date and name of 1.9.2 snapshot
      Update version to 1.9.2

Chris Wilson (520):
      Merge branch '1.8'
      [sdl] Add new backend.
      [cairoint] Add a few cairo_pure.
      [array] Rearrange user_data_fini() to optimize common case.
      [matrix] Avoid error correction overhead for translation matrices.
      [pattern] Do not recompute the inverse if setting an identical matrix.
      [pattern] Avoid needless copying of patterns.
      [gstate] Use _cairo_pattern_black for the default source.
      [matrix] Optimize finding the bounding box under an orthogonal matrix.
      Cleanup 'status && status != UNSUPPORTED'
      [pattern] Support unbounded surfaces.
      [pattern] Tweak REFLECT HACK
      [pattern] Reduce likelihood of range overflow with large downscaling.
      [xlib] Defer querying of font options until first use
      [surface] Only copy font options if the target surface has them.
      [traps] Whitespace.
      [xlib] Exploit compaction of XRenderFillRectangle()
      [matrix] Optimise invert for simple scaling|translation matrices.
      [xlib] Avoid repeated calls to XRenderQueryVersion
      [xlib] Propagate real status from get_display()
      [xlib] Propagate real status from get_screen_info().
      [xlib] Only clear the GC clip mask as necessary.
      [xlib] Only set Picture clip as necessary.
      [scaled-font] Eliminate shadowed variable.
      [user-font] Eliminate shadowed variable
      [cff-subset] Eliminate shadowed variable.
      [xlib] Eliminate shadowed variable.
      [test] Update .gitignore
      [tessellator] Simplify special cases of edges to compare.
      [tessellator] Perform cheap checks before computing intersect.
      [tessellator] Use a combsort for sorting the event queue.
      [tessellator] Simplify dequeuing by using a sentinel value.
      Restore the ability to choose the internal font.
      [test] Reenable device offset testing.
      [boilerplate] Remove #if VERSION>1.9.0
      [paginated] Emit fallback images using FILTER_NEAREST.
      Merge branch '1.8'
      [xlib] Intialise clip_dirty.
      [type3] Whitespace.
      [test] Build test suite into single binary.
      [test] Use '.' as the field separator in the names
      [util] Add cairo-trace.
      Add a COPYING file to each aux. source directory
      [tessellator] Refine the math comments.
      [trace] Use utf8 len in show_text_glyphs().
      [trace] Fix boundary terminations
      [trace] Emit set_mime_data().
      [pdf] Missing status check.
      Compile tidy.
      [mime-data] Allow embedding of arbitrary mime-types.
      [trace] Autodetect -lbfd during configure
      [trace] Wrap test surfaces.
      [trace] Big-endian compile fixes.
      [test] Convert a few residual '-out.*'
      [test] Update extend-pad.
      [configure] Make trace consistent.
      [trace] Install cairo-trace.so into $(libdir)/cairo
      [mime-data] Copy a reference to the mime-data on snapshotting.
      [trace] Remove more @..@ from Makefile.am
      [trace] Convert [1 0 0 1 0 0] to identity
      [win32] Compile fix for extend-pad extents.
      [png] Use RGB for opaque images.
      [mime-type] Request the mime-data for the source surface, not ourselves!
      [test] Fix compilation of imagediff.
      [test] Adapt pdf-mime-data for non-srcdir build.
      [test] Use a different jpeg image for mime-data
      [test] Update mime-data jpeg reference data.
      [test] Add jpeg.jpg to EXTRA_DIST
      [trace] Use a common directory by default.
      [trace] Fix emission of cairo_scaled_font_create()
      [matrix] Minimise pixman conversion error.
      [test] Only depend on any2ppm if we build it.
      [test] Add scale-offset-(similar|image)
      [test] Mark targets with is_meta?
      [trace] Mark filter mode as immediate.
      [trace] Capture foreign drawables.
      [trace] Correct emission of set_font_face and set_source
      [pattern] Split the translation between the matrix and [xy]_offset
      [matrix] Compensate pixman_matrix in device space.
      [matrix] Remove stray offset from previous commit.
      [trace] Trim a few bytes from glyph arrays
      [svg] Embed jpeg data.
      [surface] Don't allocate a structure for mime_data == NULL.
      [png] Attach the png representation to cairo_surface_create_from_png().
      [svg] Embed original PNG data.
      [test] Update mime-data to check image/png
      [trace] Use the mime-type image representation
      [png] Complete the idempotent read_png() -> write_png()
      [test/pdf2png] Remove dependency on GdkPixbuf
      [trace] Only build if we have zlib.
      [test] Add WINDING variants to in-fill test
      [in-fill] Avoid tessellation by counting number of edge crossing to -∞
      [test] Add off-centre tests to in-fill-trapezoid.
      [in-fill] Fix transposed arguments.
      [NEWS] Add a few notes.
      [surface] Pass a separate closure for the mime-type destroy notifier.
      [test] Fix-up rgb byte packing
      [hash] Return lookup entry.
      [ps] Trivial compile warning clenaup.
      [trace] Remove stray /source
      [trace] Record the XID as a number
      [trace] Use a string literal for the type.
      [trace] Disable stdout by default.
      [trace] Add unstable warning.
      [trace] Trace mark-dirty
      [trace] Detect and report broken traces.
      [trace] Check for an undefined pattern and use index instead.
      [trace] Add caller line info.
      [hash] Separate out unique patterns of iterating over the table.
      [test] Expand in-fill-trapezoid
      [in-fill] Fixup boundary insideness testing
      [cairoint.h] Remove unused PLT entries.
      Add predicate likelihood macros.
      [type1] Bind the RD procedure
      Add CairoScript backend.
      Add CairoScript interpreter
      [os2] Move include cairo.h before os2.h
      [skiplist] Inline testing.
      [cairo] FLush surface on cairo_destroy()
      [type1] Propagate fatal NO_MEMORY erro from FreeType.
      [spline] Eliminate intermediate allocations during spline decomposition.
      [configure] Delete CAN_TEST_SCRIPT
      [test] Add build rule for libcairo-script-interpreter.la
      [configure] Remove old line for CairoScript testing.
      [test] Add util/cairo-script to include path.
      [script] Add a simple replay.
      [trace] Simple unbounded cache for symbol lookups.
      [twin] Tweak line width.
      [twin] Reduce tolerance.
      [compiler] likelihood macros
      [scaled-font] Clean-up compiler warning.
      [test] Support foreground only execution.
      [pattern] Cosmetic.
      [spline] Fix compile.
      Conditionally include byteswap.h
      [xlib] Mark GC as dirty if we have an outstanding clip.
      [perf/dragon] Add a dragon curve perf case.
      [perf/pythagoras_tree] Another fractal.
      [surface] Replay meta surfaces to a similar surface.
      [xlib] Explicitly track whether the GC has clip_rects.
      [trace] Construct matrices directly
      [trace] Correctly push font-face onto the operand stack.
      [script] Build fix for ! HAS_FT_FONT
      [image] Trim image surface size by a few bytes
      [surface] Make the error surfaces have a NULL backend.
      [cairo] Allocate glyphs on the stack for show_text().
      [traps] Embed sufficient traps to accommodate a stroke rectangle
      [region] Use the caller supplied array for extracting boxes.
      [clip] Check for error surface
      [path] Compute approximate extents.
      [in-fill] Add the implicit close-path during move-to.
      [pdf] Add a default case to silence the compiler.
      [path] Fix up extents.
      [xlib] Cosmetic tweak.
      [fill] Emit rectangles for GdkRegion
      [png] Use FILE* instead of void*.
      [skiplist] Use ffs()
      [matrix] Impose a maximum number of refinement iterations
      [glitz] Fix clone_similar().
      [skiplist] Check for ffs()
      [script] Add a fallback image surface for replay
      [script] Link the interpreter against the built library.
      [script] Only use zlib if available.
      [perf] Fix build
      [check] Search for the word NOTE
      [path] Carefully check for no more points.
      [fill] Allow rectangles to be implicitly closed.
      [test] Add simple cap test.
      [test] Exercise caps and joins under reflection.
      Mark if(status) as being unlikely.
      Mark allocation failures as unlikely.
      [png] Fix leak of original png data on error path.
      [test] Fix surface leak from device-offset-positive.
      Fix up a couple of likely(malloc==NULL)
      [perf-diff] Fix cairo-perf-diff for git 1.6
      Fix compilation with --enable-png=no
      [gstate] Remove culled glyphs from clusters.
      [test] Exercise glyph culling.
      [test] Fix memleak from fallback-resolution.
      [test] Trim the number of fallback resolutions tested.
      [image] Set status on error path.
      [spline] Propagate errors during add point.
      [path] Mark points as const during _cairo_path_fixed_interpret()
      [test/solid-pattern-cache-stress] Propagate status from sub-contexts.
      [test/clip-nesting] Propagate status from sub-context.
      [test] Propagate error from path
      [surface] Avoid a short-lived context during fallback_clone_similar()
      [clip] Intersect to region extents.
      [cairo] Use a stack buffer for text path.
      [script] Add repeat operator.
      [script] Add a few mathematical constants
      [script] Simple replay.
      [script] Add simple to integer converter
      [script] Null constructor
      [script] Switch to hyphens.
      [script] Inline the stack push
      [script] Slab allocator
      [script] Replay multiple files.
      [script] Freed object cache.
      [script] Allocate the interned strings from a permanent pool
      [script] Add examples
      [spans] Pool capacity is in bytes not elements.
      [spans] Embed 64 edge buckets into polygon
      [spans] Add a sentinel cell to the cell_list.
      [pattern] Compute the combined color content.
      [test] Add a rectilinear-dash test case.
      [test] Check idempotency of append_path() -> copy_path()
      [tutorial] Correct twin font name
      [test] Add a simple joins test case
      [test] Only delete output images beneath output.
      [test] Make the xlib-fallback use the image refs.
      [skiplist] Allocate elements in chunks.
      Increment version to 1.8.7 after the 1.8.6 release.
      [doc] Fix erroneous doc comment.
      [RELEASING] Correct a few minor typos.
      [RELEASING] Update Makefile for git-1.6
      [perf] Fix for git-1.6
      [NEWS] Add notes for 1.8.6
      [test] Add missing joins.ref.png
      Fix compilation with gcov
      [analysis] Use approximate extents.
      [pattern] Use a solid pattern for a uniform gradient.
      [trace] Runtime version check.
      [image] Eliminate the short-lived context used for coercing.
      [script] Avoid creating 0x0 windows
      [cairoint.h] Wrap macro in parenthesis
      [replay] Take advantage of unresolved fonts
      Query the backend to see if we can repaint the solid pattern.
      [script] Silence incorrect compiler warnings
      [scaled-font] Make check-doc happy
      [twin] Switch internal users to the new name.
      [test] Update twin reference images.
      [path] Return the fixed-point bounds of the path
      [path] Separate the approx. bounds into 3 distinct functions
      [test] Fix reference handling in user-font-rescale
      [twin] Trivial spelling correction.
      [trace] Fix up positional arguments
      [path] Initialise spline from current point
      [path] Simply track the current point for bounds.
      [test] Draw spline bbox
      [path] Remove tolerance from path bounders
      make "make check" happy again
      [test] Update twin reference images
      [spline] Be pedantic and propagate errors.
      [perf] Correct another reference to '<cairo>'
      [perf] Fix errors reported by cppcheck
      [test] Fix mismatched free.
      [trace] Do not force the output filename.
      [trace] Remove the forced switching to C locale
      [trace] Minor tidy.
      [trace] Fix OBO in emit_glyphs()
      [trace] Correct a couple of typos.
      [trace] Correct escaped characters in string literal.
      [script] Recreate surface content.
      [script] Improve array construction.
      [script] more targets
      [script] Call the context creation hook
      [cairo] Embed a second gstate.
      [cairo] Early return if we attempt to set the same scaled_font
      Iterate over hash table using foreach() in destructors.
      [scaled-font] Switch to a constant loop for hashing.
      [scaled-font] Post-process hash value.
      [quartz] Delay allocation of string until after guard.
      [os2] Fix memory leak of surface on error path
      [cairo] Early return if we attempt to set the same colour.
      [trace] Adopt _cairo_dtostr
      [toy-font-face] Return defaults for error objects.
      [test/pdf-mime-data] Free data on error paths.
      [test] Free test name
      [path] Fix typo in bounds for empty path.
      [boilerplate] Use pclose() after popen
      [configure] Replace awk comparator with an aclocal version
      [boilerplate] Check the return of pclose()
      [boilerplate] Suppress xlib warnings on stderr
      [quartz] Define RTLD_DEFAULT
      [boilerplate] Redefine DEBUG() for portability concerns
      [boilerplate] Remove CAIRO_BOILERPLATE_LOG()
      [test] Propagate failure from painting large-source-roi
      [test] Add fill-image.
      [test] Add a huge-radial test case.
      [scaled-font] Avoid repeated lookup of the same unicode during text->glyphs
      [perf] Add scaled similar surface sources.
      [perf] Cover linear gradient with 3 stops.
      [perf] Tweak dragon to hit fill_rectangles().
      [perf] Add a utility to compare backends.
      [mutex] Civilise the comment.
      [perf] Add another variation on the many-rectangles case
      [perf] Remove a redundant clear during source init.
      [path] Rename _cairo_path_fixed_approximate_extents()
      [path] A degenerate curve_to becomes a line_to.
      [spline] Correct the definition of a cubic Bezier curve.
      [in-stroke] Check point against extents before computing path.
      [bounds] Skip spline evaluation based on bounding bbox of control points.
      [scaled-font] Global glyph cache
      [scaled-font] Fix up syntax in doc comments
      [trace] Comment out the redundant wrapping of FT_Open_Face()
      [tessellator] Memleak on error path.
      [toy-font] Fix unwind behaviour following error during construction.
      [test] Suppress suppressed memfault report
      [test] Trivial fixes for error paths.
      [truetype] Initialise font_name
      [truetype] Free font name.
      [cff-subset] Free ps_name.
      [font-face] Close a race when resurrecting fonts.
      [png] Avoid a double free of the memory stream after error.
      [ps] Free images after emitting patterns.
      [surface] Fix memleak of along set_mime_data() error path
      [scaled-font] Guard against invalid matrices when creating the scaled font.
      [scaled-font] Differentiate fatal error when creating fonts
      [ft] Distinguish fatal backend errors whilst constructing scaled fonts.
      [ft] Improve error status propagation.
      [stroker] Rectilinear dashing.
      [skiplist] Provide an initial stack allocated pool.
      [test] Compile again without memfault.
      [util] Use a hash-table for malloc-stats.
      Revert "[png] Complete the idempotent read_png() -> write_png()"
      Trivial warning fixes.
      [directfb] Don't access the scaled_font->glyphs cache directly
      [png] Correct documentation to avoid reference to NULL
      Merge branch '1.8'
      [script] Expose a normal xlib window for replay
      [NEWS] Add API changes.
      [cairo] Describe the restrictions upon cairo_set_tolerance()
      Merge branch '1.8'
      [surface] Separate the mime-data from the user-data.
      [surface] Move the meta-data copy-on-snapshot to the generic layer.
      Inline _cairo_restrict_value()
      [path] Inline path ops during append_to_context()
      [test] Free ref_name in fallback-resolution.
      [perf] Fix infinite loop in text
      [perf] Extend range of testing.
      [perf] Split can_run? into a separate precondition.
      [perf] Env variable to ignore similar targets whilst benchmarking.
      [perf] Test non-antialiased fill.
      [scaled-font] Hold reference to original font face
      [ps] Check the status of _cairo_type3_glyph_surface_create()
      [in-fill] Close the path, cf fill()
      [test] Add regression test for 005436
      [path] Fix regression introduced with 005436
      [test/any2ppm] Add feature checks for daemon()
      [test/any2ppm] Update the cairo-script-interpreter callback.
      [truetype] Move the sizeof asserts to compile time.
      [trace] Disable mark dirty tracing.
      [scaled-font] Initialise original_font_face
      [scaled-font] Lean and mean global glyph cache.
      [scaled-font] Improve comments.
      [pattern] Report the true error status from getters.
      [test] Trivial leak on error in show-glyphs-many.
      [test] Destroy pattern on error paths.
      [test] Propagate allocation failure.
      [test] Check for errors during get-path-extents.
      [test] Early test for memfault.
      [test] Check for surface create failure.
      [perf] Use CAIRO_LDFLAGS
      Silence compiler warnings for CAIRO_STATUS_LAST_STATUS
      [region] Add slim_hidden_def.
      [region] Add leading underscore to private _cairo_region_set_error()
      [region] Use _cairo_status_is_error
      [region] Use const cairo_rectangle_int_t consistently.
      [traps] Propagate allocation failure.
      [surface] Propagate region allocation failure.
      [test] Memfault checks.
      [test] Improve fault injection coverage
      [pdf] Remove false assertion.
      [truetype] Free local names on failure.
      [pdf] Free compressed stream after error.
      Check for errors during get_mime_data()
      [pdf] Prevent leak of pad_image on error path.
      [ps] Check for error during stroking.
      [type1] Fixup error path during write_charstrings()
      [scaled-font-subset] Propagate error from scaled-font to collection.
      [scaled-font-subset] Cleanup after failure to convert to utf16.
      [test] Disable signal handling under valgrind
      [test] Use xmalloc() to evade memfault.
      [test] Handle memfaults during surface-finish-twice
      [pattern] Do not modify outparam on error path.
      [xlib] Allocate bounded region on stack.
      [analysis] Use _cairo_region_init()
      [pdf] Propagate failure from type3 glyph surface creation.
      [scaled-font-subsets] Check for malloc failure.
      [type3] Check error status before emit_image().
      [type3] Add status checks.
      [type3] Propagate error from font creation.
      [pattern] Silence compiler with impossible case.
      [ft] Check (correctly!) for pattern duplication failure.
      [ft] Check for pattern duplication failure.
      [ft] Propagate status from font creation
      [test] Call FcInit() manually.
      [memfault] Manually inject faults when using stack allocations
      [build] Enable shave support
      [build] Add lcov-1.7 to known list
      [image] Return FORMAT_INVALID for an error surface.
      [image] Make _cairo_image_analayze_transparency() more format agnostic
      [image] Treat A1 image surfaces as BILEVEL_ALPHA
      [test] Create a new fallback surface to exercise 16-bit paths.
      [png] Coerce FORMAT_INVALID to a known image format
      [surface] Convert FORMAT_INVALID during snapshots
      [xlib] Use a similar content surface for cloning images
      [build] Report status of gtk-doc in summary
      [build] Fix gtk-doc interoperation with shave
      [check] Quieten output during checking headers-standalone
      [cairo] Fix errors reported by check-doc
      [cairo] Convert C99 comments to /* ... */
      [cairo] Remove stray semi-colon
      [cairo] Protect typeof against -ansi
      [skiplist] Missing include for ffs()
      [script] Missing include for INT32_MAX
      [script] Pedantic violations
      [path] Define _BSD_SOURCE to enable hypot()
      [doc] Update identifiers
      [ft] Restore the ability to lazily resolve patterns.
      [xlib] Use minimal depth for similar clones.
      [test] Fix typos that excluded backend test sources
      [test] Add a note to "Getting the elusive zero failures"
      [test] Relax APPROX_EQUALS condition
      [test] Check text->path with user-fonts (twin)
      [test] Clear expected floating point exceptions
      [test] Stress the ft from-face cache
      [memfault] Update macros to avoid namescape collision with memcheck
      [debug] Check image contents using memcheck.
      [win32] Typo
      [win32] Wrap win32-font usage with CAIRO_HAS_WIN32_FONT
      [surface] Provide nil-surface for INVALID_SIZE
      [surface] Early return if the backend cannot clone an image
      [xlib] Handle too-large images gracefully.
      [in-fill] Treat on-edge queries as inside.
      [test] Change test semantics to match new in-fill definition
      [in-fill] Fix typo in on-vertex test.
      [build] Make valgrind support user-configurable
      [pattern] Trim REPEAT source size when applicable.
      [trace] Missing newlines in error messages.
      [trace] Set output location using pwd
      [script] Check hash value between comparing keys
      [script] Simplify _dictionary_name_equal
      [debug] Relax ASSERT_NOT_REACHED
      [script] Speed up floating-point scanner
      [surface] Speed up cairo_surface_get_mime_data().
      [surface-fallback] Tidy pattern handling.
      [image] Eliminate trapezoid array allocation
      [cache] Expose init/fini methods so that caches can be embedded.
      [surface] Assign a unique id to the surface.
      Markup a few more functions as const/pure
      [cairo] Track the MRU scaled font
      [scaled-font] Lazily acquire the font_map_lock on font destruction.
      [scaled-font] Compare most recently used font directly
      [scaled-font] Cache repeated glyphs during probing device_extents
      [pattern] Pass flags to _cairo_pattern_acquire_surface()
      [script] Improve caching of glyph advance
      [ps] Trivial warning fix.
      [perf] Change seperators from '-' to '.'
      [perf] Add a pure glyphs performance metric
      [perf] Benchmark mixing different masks and sources
      [perf] Exclude similar testing by default
      [perf] Add a verbose flag for summary output with raw
      [perf] Benchmark traces
      Add a generic cow-snapshotting framework
      [perf] Missing ')' in output
      [util] Add font-view
      [xlib] Use bswap_32
      [user-font] Set the initial colour to white
      [cairo] PLT symbols for cairo_set_source_rgb
      [perf] Update to point to new toplevel cairo-traces repo
      [perf] Warn if no traces were found
      [perf] s/git/anongit/
      [cairo] Tweak error strings.
      [cairo] Update documentation for bug 20154
      [font-options] Doc typo
      [image] Doc typo.
      [cairo] Doc typo.
      [perf] Drop ticks from trace benchmarks
      [trace] Add a --profile mode
      [pattern] Typo in document
      [ft] Don't call FT_Done_Face() on a face we do not own
      [perf] Reconstruct interpreter for each run
      [perf] Enable traces to be interrupted
      [perf] Update trace summary after each iteration
      [freelist] valgrindify freed blocks
      valgrindify init/fini routines
      [pattern] Generalise the freed pattern pool
      [scaled-font] Close race from 16d128
      [configure] Bump pixman dependency.
      [atomic] Provide mutex-based ptr cmpxchg
      [atomic] Hide compiler warnings
      [script] Fix erroneous error return when rendering type3 glyphs
      [script] Add a finish method to the interpreter
      [perf] Switch to using clock_gettime()
      [script] Manage used entries within hash tables
      [script] Enable compilation without fontconfig
      [boilerplate] Minor typo in win32-printing
      [configure] Don't attempt to build GTK+ utilities on system without GTK+
      [configure] Check for FcInit()
      [trace] Redirect stdout to /dev/null when compressing
      [cairo] Keep a small stash of cairo contexts
      [ft] Assert that we create an unscaled font for the resolved pattern
      [ft] Support font_face->get_implementation
      [scaled-font] Report the original-font-face
      [test] Cache resolved scaled-font
      [perf] Continuously update the summary for traces
      [perf] Mention cairo-perf-trace early on in the README
      [trace] Option to re-enable mark-dirty
      [trace] Prevent overflowing the operand stack when recreating objects
      [test] Exercise overlapping glyphs
      [boilerplate] Print out known targets on error.
      [perf] Add explicit dependences for the local libraries
      [perf] Couple cairo-perf-traces into make perf
      [perf] Expand the section on cairo-perf-trace in the README
      [win32-font] Non-fatal error from GetGlyphOutlineW(GGO_METRICS)
      [NEWS] Add more notes
      [perf] Add a -x to exclude traces from a benchmark.
      [perf] Fixup compare-backends to work with just a single test.
      [script] Hide pixman-ops when copying pixels
      [xcb] Trivial compile fix.
      [perf] Fix -i getopt parsing.
      [perf] Add libcairoperf.la to DEPENDENCIES
      [script] Fix memleak of duplicated strings from files
      [script] Store fonts inside mmaped files.
      [Makefile] Update list of reference images.
      [script] Also mmap backing storage for the pattern descriptions
      [doc] Workaround read-only tree during make distcheck
      [test] Add jp2.jp2 to EXTRA_DIST

Daniel Holbert (1):
      Spelling corrections: s/it's/its/

Ginn Chen (1):
      [configure] Detect mkdir variant with non-gcc compilers.

Jeff Muizelaar (49):
      [quartz] Fix fallout caused by const cairo_pattern_t *
      [quartz] Add the proper propagation of extents
      Make the clipping implementation comment clearer
      [win32] Use MOD instead of the '%' operator
      Reorganize the (set|get)_antialias prototypes
      [quartz] Change some pattern casts to access to the base class
      [quartz] Propagate const patterns through the casts
      [quartz] Create a copy instead of increasing the reference
      Merge branch '1.8'
      Add a missing _cairo_error() to a bunch of status returns.
      Call _cairo_error when propagating error status from the font_face.
      Fix _compute_transform to check for nearly degenerate matrices
      Merge branch '1.8'
      [test] Quartz doesn't like being forked
      Add test creating a scaled font with a zero ctm matrix
      [scaled-font-zero-matrix] Destrory scaled font and font options
      Fix compilation of quartz surface.
      Fix definition of _cairo_quartz_font_face_backend
      [font-face-get-type] Fix test to cleanup the surface and context properly
      Avoid "empty body in an if-statement" warning
      [test] Define INFINITY if it hasn't been defined.
      Elaborate the meaning of arithmetic rounding as done by _cairo_lround()
      [test] Fix the definition of INFINITY
      [test] Define INFINITY on MSVC
      [test] Avoid C99 designated initializers
      Remove zero size data array for compilation with MSVC
      [test] define isnan() on MSVC
      [test] Allocate glyph array with malloc
      [test] Don't embed preprocessor directives inside macros
      Add _cairo_round()
      Use _cairo_round() instead of round()
      [test] Add crtdbg.h include
      [test] Add cairo_test_NaN and use it in place of strtod
      Divert pclose to _pclose for MSVC
      [wince] We don't need cairo_win32_tmpfile on Windows CE
      Add test/Makefile.sources
      Fix a const warning in _cairo_user_data_array_foreach()
      [test] Fix assert on default font family in toy-font-face
      Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error()
      Revert "Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error()"
      Relanding: Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error()
      [win32] Include $(OPT) flags when linking cairo.dll
      [pdf] Intialize 'interpolate'
      [msvc] Fix definition of CAIRO_ENSURE_UNIQUE for non-x86
      [test-win32] Fix static linking of the test suite.
      Remove trailing comma in cairo_region_overlap_t enum.
      [win32] Fix building with libpng and zlib
      Only include <strings.h> for ffs() when we HAVE_FFS
      Fix compilation on OS X when compiling for 64 bit

Jonathan Kew (1):
      [win32] Fix horizontal glyph positioning bug

Julien Danjou (1):
      [xcb] check for render extension presence

Karl Tomlinson (4):
      [hash] Set is_unique when finding an available for inserts
      [ft] Don't call FT_Done_Face() on faces we did not create
      [ft] Don't call FT_Done_Face() on faces we did not create
      [ft] Resolve mutual referencing problems with zombie faces

Luo Jinghua (8):
      glitz: fixup a stupid bug in get_image.
      glitz: set clone_offset_{x, y} on success in clone_similar.
      cairo-script: add $(top_builddir)/src to CPPPATH.
      glitz: fixup another stupid bug in fill_rectangles.
      glitz: set correct parameters for linear and radial pattern.
      glitz: Apply fixup to unbounded operators to clear area outside of mask
      image: Use unsigned long to compute color masks.
      glitz: Replace specified color with an opaque one if dst surface don't have an alpha channel.

M Joonas Pihlaja (30):
      [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents.
      [cairo-script] Remove outdated #error to allow compilation to succeed.
      Use a smaller and faster random number generator.
      BIBLIOGRAPHY: Cite Hars & Petruska's Pseudorandom Recursions paper.
      [script] Use the in-tree libcairo for csi-replay.
      [perf] Explicitly test rendering a path with lots of intersections.
      [perf] Add perf tests to hit rectilinear code paths.
      [path-fixed] Avoid extra indirection when iterating already flat paths.
      [path-fixed] New _cairo_path_fixed_is_region().
      [cairo-spans] Introduce a type to track which pixels combine in a compositing op.
      [cairo-spans] New abstract types for scan converting polygons.
      [cairo-spans] Add a check/create_span_renderer backend methods.
      [cairo-spans] New _cairo_path_fixed_fill_using_spans().
      [cairo-spans] New cairo_tor_scan_converter_t.
      [cairo-spans] Implement a span renderer for cairo_image_surface_t.
      [cairo-spans] Hook up filling paths with spans to cairo-surface-fallback.c.
      [cairo-spans] Render clip mask surfaces with spans if we can.
      [script] Fix dictionary construction to access the right stack slots.
      [script] Don't segfault when hashing empty strings.
      [script] Implement PostScript-like semantics for the eq operator.
      [script] Implement the ne operator.
      [script] Flesh out the relational comparison operators to be more PostScript-like.
      [script] Fix \t escapes in string literals.
      [script] Reverse direction of bitshift.
      [test] Fix any2ppm build when building without the full complement of surfaces.
      [svg] Fix build when building only the svg vector surface.
      [spans] Close open subpaths when filling with a scan converter.
      [test] Stress test using large source images.
      [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents.
      [sdl] Remove new backend.

Maarten Maathuis (1):
      cairo-xcb: avoid leaking memory

Nicolas Bruguier (1):
      glitz: bring glitz backend to more or less working state.

Paolo Bonzini (7):
      [boilerplate] fix compilation for glitz-agl
      [perf] Fix SDL compilation for MacOS X
      [test] Add quartz-surface-source test
      [test] Fix glitz-surface-source test
      [glitz] use image fallback if the cairo_content_t is unsupported
      [surface] add CAIRO_STATUS_INVALID_SIZE
      Add more surface snapshots providers

Peter Weilbacher (1):
      README: adapt pixman version requirement to match configure.ac

Stefan Klug (1):
      [wince] Use the official _WIN32_WCE define instead of WINCE

Søren Sandmann (12):
      Correct the reference image for the rotate-image-surface-paint test
      Delete _cairo_region_get_boxes() in favor of _cairo_region_get_box()
      [region] Make cairo_region_t a malloced object.
      [region] Get rid of clip->has_region
      [region] Miscellaneous bug fixes.
      [region] Change sense of _cairo_region_not_empty() to _cairo_region_empty()
      [region] Add _cairo_region_contains_point()
      [region] Always define cairo_rectangle_int_t with ints
      [region] Remove underscores from _cairo_region_*
      [region] Move region function prototypes to cairo.h along with helper types.
      [region] Add slim_hidden_proto for region functions
      [region] Add cairo_region_intersect_rectangle() and _subtract_rectangle()

Søren Sandmann Pedersen (14):
      Uncomment win32 maintainer-clean files to make Makefile.am syntactically correct
      Simplify region handling in xlib surface
      Delete _cairo_region_boxes_fini()
      Simplify _cairo_clip_intersect_region()
      [region] Consistently use rectangles in the API of regions
      [region] Add a cairo_region_overlap_t type
      [region] Add _cairo_region_union
      [region] Delete cairo_region_create_rectangles()
      [region] Expand rect to rectangle in a couple of names
      [region] Use signed ints for width and height in cairo_rectangle_int_t
      [region] Fix status propagation for regions
      [region] Add documentation for all the new region methods.
      [region] Change name of cairo_region_empty() to cairo_region_is_empty()
      [region] pixman_region32_contains_point() does not allow NULL for box

Thomas Jaeger (1):
      xlib, xcb: Hand off EXTEND_PAD/EXTEND_REFLECT to Render

Vladimir Vukicevic (1):
      [win32] Use _hypot instead of hypot

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.cairographics.org/archives/cairo-announce/attachments/20090612/79cb682e/attachment-0001.pgp 

More information about the cairo-announce mailing list