Commit db163fcc authored by Carl Worth's avatar Carl Worth
Browse files

Remove pixman and revert tessellation bug from SNAPSHOT_0_2_0

parents d7edfcac 327dc6f2
......@@ -13,6 +13,7 @@ config.sub
Olivier Andrieu <> PNG backend
Peter Dennis Bartok <> Bug fix for clipping
Dave Beckett <> Track rename of libpixman, build fixes
Andrew Chant <> Adding const where needed
John Ellson <> First font/glyph extents functions
......@@ -13,6 +14,7 @@ David Reveman <> New pattern API, OpenGL backend
Jamey Sharp <> Surface/font backend virtualization, XCB backend
Bill Spitzak <> Build fix to find Xrender.h without xrender.pc
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
......@@ -81,3 +81,14 @@ libpixman, (nor in glitz?).
font-size="0" in an SVG file does very bad things.
move_to_show_surface (see cairo/test):
* 2004-10-25 Carl Worth <>
* It looks like cairo_show_surface has no effect if it follows a
* call to cairo_move_to to any coordinate other than 0,0. A little
* bit of poking around suggests this isn't a regression, (at least
* not since the last pixman snapshot).
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
2004-10-27 Carl Worth <>
* Increment CAIRO_VERSION to 0.2.0.
* NEWS: Add notes for snapshot 0.2.0.
Add note on reverted tessellation regression bugs.
* RELEASING: Update release instructions for new release-publish
* Add release-check and release-publish targets
copied from libpixman.
* test/ (AM_LDFLAGS): Fix to always link tests against
locally built library, not installed version.
* test/fill_rule.c: Add new test for cairo_set_fill_rule. Also
demonstrate some of the current tessellation bugs with the version
of the code that is in CVS.
2004-10-26 Carl Worth <>
* test/cairo_test.c (cairo_test): Find reference images in
${srcdir} so that make distcheck will work.
* test/ (cairo_test_lib): Add header files so that make
distcheck is happy.
(INCLUDES): Add -D_GNU_SOURCE for asprintf. Someone motivated may
want to find a more portable approach.
(EXTRA_DIST): Add reference images for the sake of make distcheck.
* Shell doesn't like whitespace around assignment
* test/README: Add paragraph on new features.
* test/.cvsignore:
* test/
* test/README:
* test/cairo_test.c:
* test/cairo_test.h:
* test/line_width-ref.png:
* test/line_width.c:
* test/move_to_show_surface-ref.png:
* test/move_to_show_surface.c:
* test/read_png.c:
* test/read_png.h:
* test/write_png.c:
* test/write_png.h:
* test/xmalloc.c:
* test/xmalloc.h: Add initial regression test suite.
* Don't AC_SUBST a dozen different FOO_CFLAGS and
FOO_LIBS. Instead, incrementally build up just CAIRO_CFLAGS and
* (Libs): Don't list flags that should get picked up
via dependency information through Requires.
* BUGS (font-size): Add description of move_to_show_surface.
2004-10-21 Carl Worth <>
* src/cairo_png_surface.c:
* src/cairo.c:
* src/cairo.h:
* src/cairo_cache.c:
* src/cairo_color.c:
* src/cairo_fixed.c:
* src/cairo_font.c:
* src/cairo_ft_font.c:
* src/cairo_glitz_surface.c:
* src/cairo_gstate.c:
* src/cairo_hull.c:
* src/cairo_image_surface.c:
* src/cairo_matrix.c:
* src/cairo_path.c:
* src/cairo_path_bounds.c:
* src/cairo_path_fill.c:
* src/cairo_path_stroke.c:
* src/cairo_pattern.c:
* src/cairo_pen.c:
* src/cairo_png_surface.c:
* src/cairo_polygon.c:
* src/cairo_ps_surface.c:
* src/cairo_slope.c:
* src/cairo_spline.c:
* src/cairo_surface.c:
* src/cairo_traps.c:
* src/cairo_xcb_surface.c:
* src/cairo_xlib_surface.c:
* src/cairoint.h: Convert all files to utf-8. Add copyright
information to cairo_png_surface.c.
* src/cairo_hull.c (_cairo_hull_vertex_compare): Fix comparison so
that it results in a stable sort. This should fix some rendering
bugs due to broken pens.
* TODO: Add items on custom caps and getting access to hidden
image data
COPYING-MPL-1.1 to the distribution.
2004-10-13 Carl Worth <>
* automake 1.4 seems to be sufficient. Don't require
2004-10-12 Keith Packard <>
* src/cairo_traps.c: (_cairo_traps_init), (_cairo_traps_add_trap),
* src/cairoint.h:
Compute extents of cairo_traps_t on the fly using approximate
method which is correct given the way cairo generates trapezoids.
* src/cairo_xlib_surface.c: (_cairo_xlib_surface_create_similar):
Avoid zero-dimensioned pixmaps
2004-10-12 Carl Worth <>
* src/cairo_pen.c: Fix a few typos in pen vertex math description.
2004-10-12 Keith Packard <>
reviewed by: Carl Worth <>
* src/cairo_pen.c: (_cairo_pen_init), (_cairo_pen_vertices_needed):
Adapt function from Walter Brisken to compute pen ellipse major
axis length and use that to compute the required number of pen
2004-10-07 Graydon Hoare <>
* src/ (libcairo_la_SOURCES): Add cairo_cache.c
* src/cairo.c
(cairo_text_path): Rewrite using temporary glyph arrays
* src/cairo_cache.c: New file.
* src/cairo_font.c (_cairo_glyph_cache_create)
(_cairo_font_lookup_glyph): Remove old glyph cache code.
(_cairo_font_transform): Remove font-transforming code.
(_cairo_font_text_path): Remove text-API code.
(_cairo_font_cache_key_t): New structure type.
(_font_cache_destroy_cache): New font cache code.
(_get_global_font_cache): New global font cache.
(_image_glyph_cache_destroy_cache): New glyph cache code.
(_cairo_get_global_image_glyph_cache): New global glyph cache.
(_cairo_font_cache_backend): New structure.
(_cairo_image_cache_backend): Likewise.
(_cairo_font_create): Reimplement in terms of font cache.
(_cairo_font_init): Remove matrix and glyph cache related code.
(_cairo_font_copy): Likewise.
(_cairo_font_show_glyphs): Delegate to surface when possible.
(_cairo_font_show_glyphs): Rename to as cairo_unscaled_font_XXX,
and add scale parameter.
* src/cairo_ft_font.c
(cairo_ft_cache_entry_t): New structure types.
(_create_from_library_and_pattern): New functions.
(_ft_font_cache_destroy_cache): New ft font cache code.
(_get_global_ft_cache): New global ft font cache.
(_ft_font_cache_backend): New structure.
(_cairo_ft_font_create): Rewrite to use cache.
(_cairo_ft_font_destroy): Likewise.
(_cairo_ft_font_copy): Remove.
(_install_font_matrix): Rename as _install_font_scale.
(_utf8_to_glyphs): Rename as _cairo_ft_font_text_to_glyphs.
(_cairo_ft_font_text_to_glyphs): Use cache for metrics.
(_cairo_ft_font_extents): Accept size, use scaled metrics.
(_cairo_ft_font_glyph_path): Modify to use size, cache.
(_cairo_ft_font_text_path): Remove text-API code.
(cairo_ft_font_pattern): Rewrite using ft_font_val_t.
* src/cairo_gstate.c (cairo_gstate_init_copy): Just reference font.
(_cairo_gstate_fini): Finalize font matrix.
(_cairo_gstate_default_matrix): Initialize font matrix.
(_cairo_gstate_clip): Re-enable clipping rectangle.
(_cairo_gstate_set_font): Set font matrix to identity.
(_cairo_gstate_scale_font): Scale font matrix, not font.
(_cairo_gstate_transform_font): Transform font matrix, not font.
(_cairo_gstate_set_font_transform): Install as font matrix, not in font.
(_build_font_scale): New helper function.
(_cairo_gstate_text_to_glyphs): New function.
(_cairo_gstate_glyph_path): Rewrite using font matrix and size.
(_cairo_gstate_show_text): Remove text-API code.
* src/cairo_xlib_surface.c
(_cairo_xlib_surface_set_clip_region): Minor bug fix.
(_cairo_xlib_surface_show_glyphs): New function.
(_cairo_xlib_surface_backend): Add reference to new function.
(glyphset_cache_entry_t): New structure types.
(_next_xlib_glyph): New helper function.
(_xlib_glyphset_cache_backend): New glyphset cache code.
(_get_glyphset_cache): New global glyphset cache.
* src/cairo_glitz_surface.c (cairo_glitz_surface_backend):
Add NULL entry for show_glyphs.
* src/cairo_image_surface.c (cairo_image_surface_backend):
Add NULL entry for show_glyphs.
* src/cairo_ps_surface.c (cairo_ps_surface_backend):
Add NULL entry for show_glyphs.
* src/cairo_png_surface.c (cairo_png_surface_backend):
Add NULL entry for show_glyphs.
* src/cairo_xcb_surface.c (cairo_xcb_surface_backend):
Add NULL entry for show_glyphs.
* src/cairoint.h (cairo_cache_backend_t): New structure type.
(cairo_cache_t): New structure types.
(_cairo_hash_string): New cache functions.
(cairo_image_glyph_cache_entry_t): New structure types.
(_cairo_glyph_cache_keys_equal): New functions for glyph caches.
(cairo_font_backend_t): Remove text-API calls, add scale params,
remove copy call.
(cairo_surface_backend_t): Add show_glyphs entry.
(cairo_glyph_surface_node_t): Remove old glyph cache structures.
(cairo_unscaled_font_t): New structure type.
(cairo_font): Remove glyph cache member, add pointer to unscaled.
(cairo_gstate): Add font_matrix member, change to hold unscaled.
(_cairo_gstate_text_to_glyphs): New functions.
(_cairo_font_text_path): Remove text-API code.
(_cairo_font_show_glyphs): Add scale parameter.
2004-10-04 David Reveman <>
* Require version 0.2.3 of glitz.
* src/cairo_glitz_surface.c: Do not use VBOs and PBOs for immediate
mode drawing.
2004-09-30 Jamey Sharp <>
* src/cairo_xcb_surface.c:
Update for minor XCB API change.
2004-09-20 David Reveman <>
* src/cairo_glitz_surface.c (_cairo_glitz_surface_create_similar):
Make sure that only offscreen formats are picked.
(_cairo_glitz_surface_create_similar): Only try to find offscreen
multi-sample format if offscreen multi-sampling is supported.
(_cairo_glitz_surface_create_similar): If we can't find a drawable
format try to pick a non-drawable format.
(_cairo_glitz_surface_composite): Mask clone should be in
2004-09-15 David Reveman <>
* src/cairo_glitz_surface.c (_cairo_glitz_surface_set_image): Do
the scanline order conversion in cairo.
(_cairo_glitz_surface_create_pattern): Pre-multiply gradient colors.
(_cairo_glitz_surface_create_similar): Find similar formats
2004-09-12 David Reveman <>
* src/cairo_glitz_surface.c (_cairo_glitz_surface_create_pattern):
Pickup repeat setting when cloning surface.
(_cairo_glitz_surface_create_pattern): cairo_surface_set_repeat
likes to get a cairo_surface_t pointer not a cairo_glitz_surface_t
(_cairo_glitz_surface_set_image): Get pixel masks from pixman image
2004-09-11 Carl Worth <stacyworth@pippin.local>
* Require automake 1.6 rather than 1.7 since it seems
to work just fine.
2004-09-11 David Reveman <>
* Require version 0.2.2 of glitz.
* src/cairo_glitz_surface.c (_cairo_glitz_surface_create_pattern):
0.5 should no longer be added to gradient stop coordinates.
cairo_set_target_gl -> cairo_set_target_glitz.
cairo_gl_surface_create -> cairo_glitz_surface_create.
libcairo_gl_sources -> libcairo_glitz_sources, cairo_gl_surface.c ->
cairo_glitz_surface.c, GL_CFLAGS -> GLITZ_CFLAGS and
* Replaced the gl backend with the new glitz backend.
Cairo now requires version 0.2.1 of glitz.
2004-09-04 Carl Worth <>
* src/
* src/cairo.c:
* src/cairo.h:
* src/cairo_color.c:
* src/cairo_fixed.c:
* src/cairo_font.c:
* src/cairo_gstate.c:
* src/cairo_hull.c:
* src/cairo_image_surface.c:
* src/cairo_matrix.c:
* src/cairo_path.c:
* src/cairo_path_bounds.c:
* src/cairo_path_fill.c:
* src/cairo_path_stroke.c:
* src/cairo_pen.c:
* src/cairo_polygon.c:
* src/cairo_ps_surface.c:
* src/cairo_slope.c:
* src/cairo_spline.c:
* src/cairo_surface.c:
* src/cairo_xcb_surface.c:
* src/cairo_xlib_surface.c:
* src/cairoint.h: Add the MPL as a new license option, in addition
to the LGPL.
2004-08-14 Carl Worth <>
* src/cairo_image_surface.c
(_cairo_image_surface_set_clip_region): Make a copy of the region
since pixman is currently taking ownership of it (ugh). Thanks to
Vladimir Vukicevic <> and Peter Dennis Bartok
* (LANG): Explicitly set LANG=C to fix the awk
string->number conversion for user with locales that don't match
ASCII digit conventions.
2004-08-03 Carl Worth <>
* src/cairo_gstate.c (extract_transformed_rectangle): Temporarily
disable rectangle-based clipping optimization as it's not working
(see cairo_snippets/xxx_clip_rectangle for a test case).
2004-08-02 Carl Worth <>
......@@ -24,6 +464,8 @@
* src/cairo_xcb_surface.c:
* src/cairo_xlib_surface.c:
* src/cairoint.h: Change from MIT license to LGPL.
Fix to explicitly refer to GNU Lesser Public License 2.1 rather
than the Library Public License version 2 or "any later version"
* src/cairo_pattern.c:
* src/cairo_gl_surface.c: Fix copyright attributions mistakenly
SUBDIRS = src test
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = cairo.pc
# Some custom targets to make it easier to release things.
# Use either:
# make release-check
# or make release-publish
tar_file = $(PACKAGE)-$(VERSION).tar.gz
md5_file = $(tar_file).md5
$(md5_file): $(tar_file)
md5sum $^ > $@
rm -f $(tar_file) $(md5_file)
release-check: release-remove-old distcheck $(md5_file)
release-publish: release-check
mkdir -p releases
scp $(tar_file) $(md5_file) $(RELEASE_UPLOAD_DIR)
mv $(tar_file) $(md5_file) releases
@echo ""
@echo "Please send an announcement to $(RELEASE_ANNOUNCE_LIST)"
@echo "including the following:"
@echo ""
@echo "Subject: $(PACKAGE) snapshot $(VERSION) now available"
@echo ""
@echo "A new $(PACKAGE) snapshot $(VERSION) is now available from:"
@echo ""
@echo " $(RELEASE_URL_BASE)/$(tar_file)"
@echo " $(RELEASE_URL_BASE)/$(md5_file)"
@echo -n " "
@cat releases/$(md5_file)
@echo ""
@echo "Also, please include the new entries from the NEWS file."
Glyph caching
Internal caching of glyphs provides a major improvement to
text rendering performance, especially for Xlib and OpenGL
Snapshot 0.2.0 (2004-10-27 Carl Worth <>)
New license: LGPL/MPL
The most significant news with this release is that the license of
cairo has changed. It is now dual-licensed under the LGPL and the
MPL. For details see the COPYING file as well as COPYING-LGPL-2.1 and
I express my thanks to everyone involved in the license change process
for their patience and support!
New font and glyph internals
Graydon Hoare has put a tremendous amount of work into new internals
for handling fonts and glyphs, including caches where appropriate.
This work has no impact on the user-level API, but should result in
great performance improvements for applications using text.
New test suite
This snapshot of cairo includes a (small) test suite in
cairo/test. The tests can be run with "make check". The test suite was
designed to make it very easy to add new tests, and we hope to see
many contributions here. As you find bugs, please try adding a minimal
test case to the suite, and submit it with the bug report to the mailing list. This will make it much easier
for us to track progress in fixing bugs.
New name for glitz backend
The gl backend has now been renamed to the glitz backend. This means
that the following names have changed:
cairo_set_target_gl -> cairo_set_target_glitz
cairo_gl_surface_create -> cairo_glitz_surface_create
This change obviously breaks backwards compatibility for applications
using the old gl backend.
Up-to-date with latest glitz snapshots
This snapshot of cairo is now up to date with the latest glitz
snapshot, (currently 0.2.3). We know that the latest cairo and glitz
snapshots have been incompatible for a very long time. We've finally
fixed that now and we're determined to not let that happen again.
Revert some tessellation regression bugs
People that have been seeing some tessellation bugs, (eg. leaked
fills), in the CVS version of cairo may have better luck with this
release. A change since the last snapshot was identified to trigger
some of these bugs and was reverted before making the snapshot. The
behavior should be the same as the previous (0.1.23) snapshot.
Miscellaneous changes
Track XCB API change regarding iterators.
Various bug fixes
Fix calculation of required number of vertices for pen.
Fix to avoid zero-dimensioned pixmaps.
Fix broken sort of pen vertices.
Fix bug when cairo_show_text called with a NULL string.
Fix clipping bugs.
Fix bug in computing image length with XCB.
Fix infinite loop bug in cairo_arc.
Fix memory management interactions with libpixman.
Snapshot 0.1.23 (2004-05-11 Carl Worth <>)
......@@ -170,7 +245,7 @@ the heavy lifting with this renaming effort.
Conditional compilation of backends
Cairo now allows optional beckends to be disabled at compile time. The
Cairo now allows optional backends to be disabled at compile time. The
following options may now be passed to the configure script:
......@@ -2,44 +2,52 @@ So far, cairo hasn't reached an initial release. But we can still form
good habits now by practicing the release process with the current
10 easy steps to creating a new cairo snapshot
A new snapshot is needed whenever significant new features or bug
fixes are committed. Here are the steps to follow:
1) Commit code with a significant new feature or backwards
1) Ensure that there are no local, uncommitted modifications. The best
thing to do here may be to begin with a fresh checkout from CVS:
Either of these events triggers the need for a new snapshot.
Users of cairo snapshots need to be able to specify snapshot