summaryrefslogtreecommitdiff
path: root/doc/public
diff options
context:
space:
mode:
authorLoïc Minier <lool@dooz.org>2009-04-14 23:41:59 +0200
committerLoïc Minier <lool@dooz.org>2009-04-14 23:41:59 +0200
commite781cc575ab4adb1d9822c628fc9f19ed35b0c88 (patch)
tree508bb3bbb77c328418dd609124d278d116519cbf /doc/public
parent7ad32874f16257ec3d7509310ffa00e7308581f4 (diff)
Imported Upstream version 0.5.1
Diffstat (limited to 'doc/public')
-rw-r--r--doc/public/Makefile.am20
-rw-r--r--doc/public/Makefile.in52
-rw-r--r--doc/public/cairo-docs.xml12
-rw-r--r--doc/public/cairo-sections.txt263
-rw-r--r--doc/public/html/bindings-errors.html127
-rw-r--r--doc/public/html/bindings-fonts.html60
-rw-r--r--doc/public/html/bindings-memory.html130
-rw-r--r--doc/public/html/bindings-overloading.html128
-rw-r--r--doc/public/html/bindings-path.html123
-rw-r--r--doc/public/html/bindings-patterns.html64
-rw-r--r--doc/public/html/bindings-return-values.html126
-rw-r--r--doc/public/html/bindings-streams.html99
-rw-r--r--doc/public/html/bindings-surfaces.html99
-rw-r--r--doc/public/html/cairo-ATSUI-Fonts.html66
-rw-r--r--doc/public/html/cairo-Fonts.html590
-rw-r--r--doc/public/html/cairo-FreeType-Fonts.html283
-rw-r--r--doc/public/html/cairo-Glitz-backend.html95
-rw-r--r--doc/public/html/cairo-Microsoft-Windows-Backend.html269
-rw-r--r--doc/public/html/cairo-PDF-Backend.html245
-rw-r--r--doc/public/html/cairo-PNG-Backend.html254
-rw-r--r--doc/public/html/cairo-PS-Backend.html249
-rw-r--r--doc/public/html/cairo-Quartz-Backend.html117
-rw-r--r--doc/public/html/cairo-XCB-Backend.html236
-rw-r--r--doc/public/html/cairo-XLib-Backend.html254
-rw-r--r--doc/public/html/cairo-cairo-matrix-t.html729
-rw-r--r--doc/public/html/cairo-cairo-pattern-t.html680
-rw-r--r--doc/public/html/cairo-cairo-surface-t.html446
-rw-r--r--doc/public/html/cairo-cairo-t.html4710
-rw-r--r--doc/public/html/cairo.devhelp184
-rw-r--r--doc/public/html/index.html84
-rw-r--r--doc/public/html/index.sgml169
-rw-r--r--doc/public/html/ix01.html426
-rw-r--r--doc/public/html/language-bindings.html82
-rw-r--r--doc/public/html/pt01.html35
-rw-r--r--doc/public/html/pt02.html35
-rw-r--r--doc/public/language-bindings.xml726
-rw-r--r--doc/public/tmpl/cairo-atsui.sgml8
-rw-r--r--doc/public/tmpl/cairo-font.sgml140
-rw-r--r--doc/public/tmpl/cairo-ft.sgml26
-rw-r--r--doc/public/tmpl/cairo-glitz.sgml8
-rw-r--r--doc/public/tmpl/cairo-matrix.sgml69
-rw-r--r--doc/public/tmpl/cairo-pattern.sgml31
-rw-r--r--doc/public/tmpl/cairo-pdf.sgml36
-rw-r--r--doc/public/tmpl/cairo-png.sgml41
-rw-r--r--doc/public/tmpl/cairo-ps.sgml36
-rw-r--r--doc/public/tmpl/cairo-quartz.sgml10
-rw-r--r--doc/public/tmpl/cairo-surface.sgml42
-rw-r--r--doc/public/tmpl/cairo-unused.sgml153
-rw-r--r--doc/public/tmpl/cairo-win32.sgml64
-rw-r--r--doc/public/tmpl/cairo-xcb-xrender.sgml32
-rw-r--r--doc/public/tmpl/cairo-xcb.sgml34
-rw-r--r--doc/public/tmpl/cairo-xlib-xrender.sgml32
-rw-r--r--doc/public/tmpl/cairo-xlib.sgml29
-rw-r--r--doc/public/tmpl/cairo.sgml369
-rw-r--r--doc/public/xml/cairo-atsui.xml15
-rw-r--r--doc/public/xml/cairo-font.xml419
-rw-r--r--doc/public/xml/cairo-ft.xml136
-rw-r--r--doc/public/xml/cairo-glitz.xml18
-rw-r--r--doc/public/xml/cairo-matrix.xml291
-rw-r--r--doc/public/xml/cairo-pattern.xml91
-rw-r--r--doc/public/xml/cairo-pdf.xml89
-rw-r--r--doc/public/xml/cairo-png.xml125
-rw-r--r--doc/public/xml/cairo-ps.xml104
-rw-r--r--doc/public/xml/cairo-quartz.xml28
-rw-r--r--doc/public/xml/cairo-surface.xml182
-rw-r--r--doc/public/xml/cairo-win3.xml181
-rw-r--r--doc/public/xml/cairo-win32.xml100
-rw-r--r--doc/public/xml/cairo-xcb-xrender.xml92
-rw-r--r--doc/public/xml/cairo-xcb.xml108
-rw-r--r--doc/public/xml/cairo-xlib-xrender.xml92
-rw-r--r--doc/public/xml/cairo-xlib.xml123
-rw-r--r--doc/public/xml/cairo.xml1767
72 files changed, 13564 insertions, 3824 deletions
diff --git a/doc/public/Makefile.am b/doc/public/Makefile.am
index b993bb9..9e4c103 100644
--- a/doc/public/Makefile.am
+++ b/doc/public/Makefile.am
@@ -19,11 +19,15 @@ HFILE_GLOB=$(top_srcdir)/src/*.h
CFILE_GLOB=$(top_srcdir)/src/*.c $(top_srcdir)/src/*.h
# Headers to ignore
-IGNORE_HFILES= \
- cairo-features.h \
- cairo-ft-private.h \
- cairo-win32-private.h \
- cairoint.h \
+IGNORE_HFILES= \
+ cairo-features.h \
+ cairo-ft-private.h \
+ cairo-gstate-private.h \
+ cairo-path-fixed-private.h \
+ cairo-private.h \
+ cairo-win32-private.h \
+ cairo-xlib-test.h \
+ cairoint.h \
cairo-wideint.h
# CFLAGS and LDFLAGS for compiling scan program. Only needed
@@ -34,8 +38,12 @@ GTKDOC_LIBS =
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS=--sgml-mode --output-format=xml
+# Extra options to supply to gtkdoc-mktmpl
+MKTMPL_OPTIONS=
+
# Non-autogenerated SGML files to be included in $(DOC_MAIN_SGML_FILE)
-content_files =
+content_files = \
+ language-bindings.xml
# Images to copy into HTML directory
HTML_IMAGES =
diff --git a/doc/public/Makefile.in b/doc/public/Makefile.in
index 7d3f8dc..5c71566 100644
--- a/doc/public/Makefile.in
+++ b/doc/public/Makefile.in
@@ -14,12 +14,6 @@
@SET_MAKE@
-#
-# *** NOTE *** this file is checked into CVS for convenience only.
-# DO NOT EDIT. Rather get changes into upstream gtk-doc and then
-# update this version from the gtk-doc version.
-#
-
# -*- mode: makefile -*-
####################################
@@ -80,8 +74,8 @@ CAIRO_HAS_GLITZ_SURFACE_FALSE = @CAIRO_HAS_GLITZ_SURFACE_FALSE@
CAIRO_HAS_GLITZ_SURFACE_TRUE = @CAIRO_HAS_GLITZ_SURFACE_TRUE@
CAIRO_HAS_PDF_SURFACE_FALSE = @CAIRO_HAS_PDF_SURFACE_FALSE@
CAIRO_HAS_PDF_SURFACE_TRUE = @CAIRO_HAS_PDF_SURFACE_TRUE@
-CAIRO_HAS_PNG_SURFACE_FALSE = @CAIRO_HAS_PNG_SURFACE_FALSE@
-CAIRO_HAS_PNG_SURFACE_TRUE = @CAIRO_HAS_PNG_SURFACE_TRUE@
+CAIRO_HAS_PNG_FUNCTIONS_FALSE = @CAIRO_HAS_PNG_FUNCTIONS_FALSE@
+CAIRO_HAS_PNG_FUNCTIONS_TRUE = @CAIRO_HAS_PNG_FUNCTIONS_TRUE@
CAIRO_HAS_PS_SURFACE_FALSE = @CAIRO_HAS_PS_SURFACE_FALSE@
CAIRO_HAS_PS_SURFACE_TRUE = @CAIRO_HAS_PS_SURFACE_TRUE@
CAIRO_HAS_QUARTZ_SURFACE_FALSE = @CAIRO_HAS_QUARTZ_SURFACE_FALSE@
@@ -159,14 +153,13 @@ PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
PIXMAN_LIBS = @PIXMAN_LIBS@
PKG_CONFIG = @PKG_CONFIG@
PNG_CFLAGS = @PNG_CFLAGS@
+PNG_FUNCTIONS_FEATURE = @PNG_FUNCTIONS_FEATURE@
PNG_LIBS = @PNG_LIBS@
PNG_REQUIRES = @PNG_REQUIRES@
-PNG_SURFACE_FEATURE = @PNG_SURFACE_FEATURE@
PS_LIBS = @PS_LIBS@
PS_SURFACE_FEATURE = @PS_SURFACE_FEATURE@
QUARTZ_SURFACE_FEATURE = @QUARTZ_SURFACE_FEATURE@
RANLIB = @RANLIB@
-SANITY_CHECKING_FEATURE = @SANITY_CHECKING_FEATURE@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -248,10 +241,14 @@ CFILE_GLOB = $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h
# Headers to ignore
IGNORE_HFILES = \
- cairo-features.h \
- cairo-ft-private.h \
- cairo-win32-private.h \
- cairoint.h \
+ cairo-features.h \
+ cairo-ft-private.h \
+ cairo-gstate-private.h \
+ cairo-path-fixed-private.h \
+ cairo-private.h \
+ cairo-win32-private.h \
+ cairo-xlib-test.h \
+ cairoint.h \
cairo-wideint.h
@@ -263,8 +260,13 @@ GTKDOC_LIBS =
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS = --sgml-mode --output-format=xml
+# Extra options to supply to gtkdoc-mktmpl
+MKTMPL_OPTIONS =
+
# Non-autogenerated SGML files to be included in $(DOC_MAIN_SGML_FILE)
-content_files =
+content_files = \
+ language-bindings.xml
+
# Images to copy into HTML directory
HTML_IMAGES =
@@ -287,7 +289,6 @@ EXTRA_DIST = \
$(content_files) \
$(HTML_IMAGES) \
$(DOC_MAIN_SGML_FILE) \
- $(DOC_MODULE).types \
$(DOC_MODULE)-sections.txt \
$(DOC_MODULE)-overrides.txt
@@ -478,7 +479,7 @@ uninstall-am: uninstall-info-am uninstall-local
@ENABLE_GTK_DOC_TRUE@scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
@ENABLE_GTK_DOC_TRUE@ @echo '*** Scanning header files ***'
@ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
-@ENABLE_GTK_DOC_TRUE@ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null ; then \
+@ENABLE_GTK_DOC_TRUE@ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
@ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
@ENABLE_GTK_DOC_TRUE@ else \
@ENABLE_GTK_DOC_TRUE@ cd $(srcdir) ; \
@@ -498,7 +499,7 @@ uninstall-am: uninstall-info-am uninstall-local
@ENABLE_GTK_DOC_TRUE@tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
@ENABLE_GTK_DOC_TRUE@ @echo '*** Rebuilding template files ***'
@ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
-@ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE)
+@ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
@ENABLE_GTK_DOC_TRUE@ touch tmpl-build.stamp
@ENABLE_GTK_DOC_TRUE@tmpl.stamp: tmpl-build.stamp
@@ -506,11 +507,11 @@ uninstall-am: uninstall-info-am uninstall-local
#### xml ####
-@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml
+@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml $(expand_content_files)
@ENABLE_GTK_DOC_TRUE@ @echo '*** Building XML ***'
@ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
@ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && \
-@ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml $(MKDB_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" $(MKDB_OPTIONS)
@ENABLE_GTK_DOC_TRUE@ touch sgml-build.stamp
@ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp
@@ -564,19 +565,16 @@ uninstall-local:
@ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
@ENABLE_GTK_DOC_FALSE@ @false
-# XXX: Before this was:
-# dist-hook: dist-check-gtkdoc dist-hook-local
-# which seems reasonable, but for some reason the dist-check-gtkdoc
-# was always failing on me, even though I do have gtk-doc installed
-# and it is successfully building the documentation.
-
-dist-hook: dist-hook-local
+dist-hook: dist-check-gtkdoc dist-hook-local
mkdir $(distdir)/tmpl
mkdir $(distdir)/xml
mkdir $(distdir)/html
-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
-cp $(srcdir)/xml/*.xml $(distdir)/xml
-cp $(srcdir)/html/* $(distdir)/html
+ if test -f $(srcdir)/$(DOC_MODULE).types; then \
+ cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
+ fi
.PHONY : dist-hook-local
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/doc/public/cairo-docs.xml b/doc/public/cairo-docs.xml
index 2a4cdae..729738a 100644
--- a/doc/public/cairo-docs.xml
+++ b/doc/public/cairo-docs.xml
@@ -12,6 +12,7 @@
<xi:include href="xml/cairo-surface.xml"/>
<xi:include href="xml/cairo-pattern.xml"/>
<xi:include href="xml/cairo-matrix.xml"/>
+ <xi:include href="xml/cairo-font.xml"/>
<xi:include href="xml/cairo-atsui.xml"/>
<xi:include href="xml/cairo-ft.xml"/>
<xi:include href="xml/cairo-glitz.xml"/>
@@ -22,10 +23,9 @@
<xi:include href="xml/cairo-win32.xml"/>
<xi:include href="xml/cairo-xcb.xml"/>
<xi:include href="xml/cairo-xlib.xml"/>
- </part>
+ </part>
+ <index>
+ <title>Index</title>
+ </index>
+ <xi:include href="language-bindings.xml"/>
</book>
-
-
-
-
-
diff --git a/doc/public/cairo-sections.txt b/doc/public/cairo-sections.txt
index 3da0fa8..4db600b 100644
--- a/doc/public/cairo-sections.txt
+++ b/doc/public/cairo-sections.txt
@@ -1,91 +1,98 @@
<SECTION>
-<FILE>cairo-atsui</FILE>
-<TITLE>ATSUI Fonts</TITLE>
-cairo_atsui_font_create
-</SECTION>
-
-<SECTION>
<FILE>cairo-ft</FILE>
<TITLE>FreeType Fonts</TITLE>
-cairo_ft_font_create
-cairo_ft_font_create_for_ft_face
-cairo_ft_font_lock_face
-cairo_ft_font_unlock_face
-cairo_ft_font_get_pattern
+cairo_ft_font_face_create_for_pattern
+cairo_ft_font_face_create_for_ft_face
+cairo_ft_scaled_font_lock_face
+cairo_ft_scaled_font_unlock_face
</SECTION>
<SECTION>
<FILE>cairo-glitz</FILE>
<TITLE>Glitz backend</TITLE>
-cairo_set_target_glitz
cairo_glitz_surface_create
</SECTION>
<SECTION>
<FILE>cairo-pdf</FILE>
<TITLE>PDF Backend</TITLE>
-cairo_set_target_pdf
cairo_pdf_surface_create
+cairo_pdf_surface_create_for_stream
+cairo_pdf_surface_set_dpi
</SECTION>
<SECTION>
<FILE>cairo-png</FILE>
<TITLE>PNG Backend</TITLE>
-cairo_set_target_png
-cairo_png_surface_create
+cairo_image_surface_create_from_png
+cairo_image_surface_create_from_png_stream
+cairo_surface_write_to_png
+cairo_surface_write_to_png_stream
</SECTION>
<SECTION>
<FILE>cairo-ps</FILE>
<TITLE>PS Backend</TITLE>
-cairo_set_target_ps
cairo_ps_surface_create
+cairo_ps_surface_create_for_stream
+cairo_ps_surface_set_dpi
</SECTION>
<SECTION>
<FILE>cairo-quartz</FILE>
<TITLE>Quartz Backend</TITLE>
-cairo_set_target_quartz_context
cairo_quartz_surface_create
</SECTION>
<SECTION>
<FILE>cairo-win32</FILE>
<TITLE>Microsoft Windows Backend</TITLE>
-cairo_set_target_win32
cairo_win32_surface_create
-cairo_win32_font_create_for_logfontw
-cairo_win32_font_select_font
-cairo_win32_font_done_font
-cairo_win32_font_get_scale_factor
+cairo_win32_font_face_create_for_logfontw
+cairo_win32_scaled_font_select_font
+cairo_win32_scaled_font_done_font
+cairo_win32_scaled_font_get_metrics_factor
</SECTION>
<SECTION>
<FILE>cairo-xcb</FILE>
<TITLE>XCB Backend</TITLE>
-cairo_set_target_xcb
+cairo_xcb_surface_create
+cairo_xcb_surface_create_for_bitmap
+cairo_xcb_surface_set_size
+</SECTION>
+
+<SECTION>
+<FILE>cairo-xcb-xrender</FILE>
+<TITLE>XCB Backend</TITLE>
+cairo_xcb_surface_create_with_xrender_format
</SECTION>
<SECTION>
<FILE>cairo-xlib</FILE>
<TITLE>XLib Backend</TITLE>
-cairo_set_target_drawable
cairo_xlib_surface_create
+cairo_xlib_surface_create_for_bitmap
+cairo_xlib_surface_set_size
+</SECTION>
+
+<SECTION>
+<FILE>cairo-xlib-xrender</FILE>
+<TITLE>XLib/Xrender Backend</TITLE>
+cairo_xlib_surface_create_with_xrender_format
</SECTION>
<SECTION>
<FILE>cairo-surface</FILE>
<TITLE>cairo_surface_t</TITLE>
cairo_surface_t
-cairo_surface_create_for_image
cairo_surface_create_similar
cairo_surface_reference
cairo_surface_destroy
-cairo_surface_set_repeat
-cairo_surface_set_matrix
-cairo_surface_get_matrix
-cairo_surface_set_filter
-cairo_surface_get_filter
+cairo_surface_finish
+cairo_surface_set_user_data
+cairo_surface_get_user_data
+cairo_surface_set_device_offset
</SECTION>
<SECTION>
@@ -97,7 +104,9 @@ cairo_pattern_create_linear
cairo_pattern_create_radial
cairo_pattern_reference
cairo_pattern_destroy
-cairo_pattern_add_color_stop
+cairo_pattern_status
+cairo_pattern_add_color_stop_rgb
+cairo_pattern_add_color_stop_rgba
cairo_pattern_set_matrix
cairo_pattern_get_matrix
cairo_extend_t
@@ -111,12 +120,11 @@ cairo_pattern_get_filter
<FILE>cairo-matrix</FILE>
<TITLE>cairo_matrix_t</TITLE>
cairo_matrix_t
-cairo_matrix_create
-cairo_matrix_destroy
-cairo_matrix_copy
-cairo_matrix_set_identity
-cairo_matrix_set_affine
-cairo_matrix_get_affine
+cairo_matrix_init
+cairo_matrix_init_identity
+cairo_matrix_init_translate
+cairo_matrix_init_scale
+cairo_matrix_init_rotate
cairo_matrix_translate
cairo_matrix_scale
cairo_matrix_rotate
@@ -127,6 +135,24 @@ cairo_matrix_transform_point
</SECTION>
<SECTION>
+<FILE>cairo-font</FILE>
+<TITLE>Fonts</TITLE>
+cairo_font_face_t
+cairo_scaled_font_t
+cairo_font_face_reference
+cairo_font_face_destroy
+cairo_font_face_get_user_data
+cairo_font_face_set_user_data
+cairo_scaled_font_create
+cairo_scaled_font_reference
+cairo_scaled_font_destroy
+cairo_font_extents_t
+cairo_scaled_font_extents
+cairo_text_extents_t
+cairo_scaled_font_glyph_extents
+</SECTION>
+
+<SECTION>
<FILE>cairo</FILE>
<TITLE>cairo_t</TITLE>
cairo_t
@@ -135,15 +161,13 @@ cairo_reference
cairo_destroy
cairo_save
cairo_restore
-cairo_copy
-cairo_set_target_surface
cairo_format_t
-cairo_set_target_image
cairo_operator_t
cairo_set_operator
-cairo_set_rgb_color
-cairo_set_pattern
-cairo_set_alpha
+cairo_set_source_rgb
+cairo_set_source_rgba
+cairo_set_source
+cairo_set_source_surface
cairo_set_tolerance
cairo_fill_rule_t
cairo_set_fill_rule
@@ -157,14 +181,13 @@ cairo_set_miter_limit
cairo_translate
cairo_scale
cairo_rotate
-cairo_concat_matrix
+cairo_transform
cairo_set_matrix
-cairo_default_matrix
cairo_identity_matrix
-cairo_transform_point
-cairo_transform_distance
-cairo_inverse_transform_point
-cairo_inverse_transform_distance
+cairo_user_to_device
+cairo_user_to_device_distance
+cairo_device_to_user
+cairo_device_to_user_distance
cairo_new_path
cairo_move_to
cairo_line_to
@@ -176,8 +199,14 @@ cairo_rel_line_to
cairo_rel_curve_to
cairo_rectangle
cairo_close_path
+cairo_paint
+cairo_paint_with_alpha
+cairo_mask
+cairo_mask_surface
cairo_stroke
+cairo_stroke_preserve
cairo_fill
+cairo_fill_preserve
cairo_copy_page
cairo_show_page
cairo_in_stroke
@@ -185,35 +214,64 @@ cairo_in_fill
cairo_bool_t
cairo_stroke_extents
cairo_fill_extents
-cairo_init_clip
cairo_clip
-cairo_font_t
+cairo_clip_preserve
+cairo_reset_clip
cairo_glyph_t
-cairo_text_extents_t
-cairo_font_extents_t
cairo_font_slant_t
cairo_font_weight_t
-cairo_select_font
-cairo_scale_font
-cairo_transform_font
+cairo_select_font_face
+cairo_set_font_size
+cairo_set_font_matrix
+cairo_get_font_matrix
cairo_show_text
cairo_show_glyphs
-cairo_current_font
-cairo_current_font_extents
-cairo_set_font
+cairo_get_font_face
+cairo_font_extents
+cairo_set_font_face
cairo_text_extents
cairo_glyph_extents
cairo_text_path
cairo_glyph_path
-cairo_font_reference
-cairo_font_destroy
-cairo_font_extents
-cairo_font_glyph_extents
-cairo_show_surface
+cairo_get_operator
+cairo_get_source
+cairo_get_tolerance
+cairo_get_current_point
+cairo_get_fill_rule
+cairo_get_line_width
+cairo_get_line_cap
+cairo_get_line_join
+cairo_get_miter_limit
+cairo_get_matrix
+cairo_get_target
+cairo_copy_path
+cairo_copy_path_flat
+cairo_append_path
+cairo_path_data_type_t
+cairo_path_data_t
+cairo_path_t
+cairo_path_destroy
+cairo_status_t
+cairo_status
+cairo_status_string
+cairo_status_to_string
+cairo_error_notify_func_t
+cairo_set_error_notify
+cairo_filter_t
+cairo_image_surface_create
+cairo_image_surface_create_for_data
+cairo_image_surface_get_width
+cairo_image_surface_get_height
+cairo_destroy_func_t
+cairo_user_data_key_t
+cairo_read_func_t
+cairo_write_func_t
+<SUBSECTION Private>
+CAIRO_BEGIN_DECLS
+CAIRO_END_DECLS
+cairo_current_font_extents
+cairo_get_font_extents
cairo_current_operator
-cairo_current_rgb_color
-cairo_current_pattern
-cairo_current_alpha
cairo_current_tolerance
cairo_current_point
cairo_current_fill_rule
@@ -223,29 +281,54 @@ cairo_current_line_join
cairo_current_miter_limit
cairo_current_matrix
cairo_current_target_surface
-cairo_current_path
-cairo_current_path_flat
-cairo_status_t
-cairo_status
-cairo_status_string
-cairo_filter_t
-cairo_image_surface_create
-cairo_image_surface_create_for_data
-<SUBSECTION Private>
-CAIRO_BEGIN_DECLS
-CAIRO_END_DECLS
-cairo_get_operator
-cairo_get_rgb_color
-cairo_get_alpha
-cairo_get_tolerance
-cairo_get_current_point
-cairo_get_fill_rule
-cairo_get_line_width
-cairo_get_line_cap
-cairo_get_line_join
-cairo_get_miter_limit
-cairo_get_matrix
-cairo_get_target_surface
cairo_get_status
cairo_get_status_string
+cairo_concat_matrix
+cairo_scale_font
+cairo_select_font
+cairo_transform_font
+cairo_transform_point
+cairo_transform_distance
+cairo_inverse_transform_point
+cairo_inverse_transform_distance
+cairo_init_clip
+cairo_surface_create_for_image
+cairo_default_matrix
+cairo_matrix_set_affine
+cairo_matrix_set_identity
+cairo_pattern_add_color_stop
+cairo_set_rgb_color
+cairo_set_pattern
+cairo_xlib_surface_create_for_pixmap_with_visual
+cairo_xlib_surface_create_for_window_with_visual
+cairo_xcb_surface_create_for_pixmap_with_visual
+cairo_xcb_surface_create_for_window_with_visual
+cairo_current_path
+cairo_current_path_flat
+cairo_get_path
+cairo_get_path_flat
+cairo_set_alpha
+cairo_show_surface
+cairo_copy
+cairo_surface_set_repeat
+cairo_surface_set_matrix
+cairo_surface_get_matrix
+cairo_surface_set_filter
+cairo_surface_get_filter
+cairo_matrix_create
+cairo_matrix_destroy
+cairo_matrix_copy
+cairo_matrix_set_identity
+cairo_matrix_set_affine
+cairo_matrix_get_affine
+cairo_set_target_surface
+cairo_set_target_glitz
+cairo_set_target_image
+cairo_set_target_pdf
+cairo_set_target_png
+cairo_set_target_ps
+cairo_set_target_quartz
+cairo_set_target_win32
+cairo_set_target_xcb
+cairo_set_target_drawable
</SECTION>
diff --git a/doc/public/html/bindings-errors.html b/doc/public/html/bindings-errors.html
new file mode 100644
index 0000000..9dd83ed
--- /dev/null
+++ b/doc/public/html/bindings-errors.html
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Error handling</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-streams.html" title="Streams and File I/O">
+<link rel="next" href="bindings-patterns.html" title="Patterns">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-streams.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-patterns.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-errors"></a>Error handling</h2></div></div>
+<div></div>
+</div>
+<p>
+ The error handling approach in C for Cairo has multiple
+ elements:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>
+ When a method on an object fails, the object is put into
+ an error state. Subsequent operations on the object do
+ nothing. The status of the object can be queried with
+ a function like <a href="cairo-cairo-t.html#cairo-status"><tt class="function">status()</tt></a>.
+ </p></li>
+<li>
+<p>
+ Constructors, rather than
+ returning<tt class="constant">NULL</tt> on out-of-memory failure,
+ return a special singleton object on which all
+ operations do nothing. Retrieving the status of the
+ singleton object returns <tt class="constant">CAIRO_STATUS_NO_MEMORY</tt>
+ </p>
+<i><span class="remark">
+ Is this going to apply to
+ <span class="type">cairo_surface_t</span> as well?
+ </span></i><i><span class="remark">
+ What about cairo_copy_path_data()? It's probably going to
+ have to return <tt class="constant">NULL</tt>.
+ </span></i>
+</li>
+<li><p>
+ Errors propagate from object to object. Setting a pattern
+ in an out-of-memory state as the source of a
+ <span class="type">cairo_t</span> puts the type into an error state.
+ </p></li>
+</ul></div>
+<i><span class="remark">Much of the above is not yet implemented at the time of
+ this writing</span></i><p>
+ A language binding could copy the C approach, and for a
+ language without exceptions, this is likely the right thing
+ to do. However, for a language with exceptions, exposing
+ a completely different style of error handling for cairo
+ would be strange. So, instead, status should be checked
+ after every call to cairo, and exceptions thrown as necessary.
+ </p>
+<p>
+ One problem that can arise with this, in languages
+ where handling exceptions is mandatory (like Java), is that almost
+ every cairo function can result in a status being set,
+ usually because of an out-of-memory condition. This could make
+ cairo hard to use. To resolve this problem, let's classify then
+ cairo status codes:
+ </p>
+<pre class="programlisting">
+/* Memory */
+CAIRO_STATUS_NO_MEMORY,
+
+/* Programmer error */
+CAIRO_STATUS_INVALID_RESTORE
+CAIRO_STATUS_INVALID_POP_GROUP
+CAIRO_STATUS_NO_CURRENT_POINT
+CAIRO_STATUS_INVALID_MATRIX
+CAIRO_STATUS_NO_TARGET_SURFACE
+CAIRO_STATUS_INVALID_STRING
+CAIRO_STATUS_SURFACE_FINISHED
+CAIRO_STATUS_BAD_NESTING
+
+/* Language binding implementation */
+CAIRO_STATUS_NULL_POINTER
+CAIRO_STATUS_INVALID_PATH_DATA
+CAIRO_STATUS_SURFACE_TYPE_MISMATCH
+
+/* Other */
+CAIRO_STATUS_READ_ERROR
+CAIRO_STATUS_WRITE_ERROR
+</pre>
+<p>
+ If we look at these, the
+ <tt class="constant">CAIRO_STATUS_NO_MEMORY</tt>
+ should map to the native out-of-memory exception, which could
+ happen at any point in any case. Most of the others indicate
+ programmer error, and handling them in user code would be
+ silly. These should be mapped into whatever the language uses
+ for assertion failures, rather than errors that are normally
+ handled. (In Java, a subclass of Error rather than Exception,
+ perhaps.) And <tt class="constant">CAIRO_STATUS_READ_ERROR</tt>,
+ and <tt class="constant">CAIRO_STATUS_WRITE_ERROR</tt> can occur
+ only in very specific places. (In fact, as described
+ in <a href="bindings-streams.html" title="Streams and File I/O">the section called &#8220;Streams and File I/O&#8221;</a>, these errors may be
+ mapped into the language's native I/O error types.)
+ So, there really aren't exceptions that the programmer must
+ handle at most points in the Cairo API.
+ </p>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-streams.html"><b>&lt;&lt;&#160;Streams and File I/O</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-patterns.html"><b>Patterns&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-fonts.html b/doc/public/html/bindings-fonts.html
new file mode 100644
index 0000000..45ed7a7
--- /dev/null
+++ b/doc/public/html/bindings-fonts.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Fonts</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-surfaces.html" title="Surfaces">
+<link rel="next" href="bindings-path.html" title="cairo_path_t">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-surfaces.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-path.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-fonts"></a>Fonts</h2></div></div>
+<div></div>
+</div>
+<p>
+ Fonts are once more an area where there is a hierarchy of types:
+ </p>
+<pre class="programlisting">
+cairo_font_face_t
+ cairo_ft_font_face_t
+ cairo_win32_font_face_t
+cairo_scaled_font_t
+ cairo_ft_scaled_font_t
+ cairo_win32_scaled_font_t
+</pre>
+<p>
+ The methods on the subtypes are, however, not useful without
+ bindings for fontconfig and FreeType or for the Win32 GDI,
+ so most language bindings will choose not to bind these
+ types.
+ </p>
+<p>
+ The <a href="cairo-Fonts.html#cairo-font-face-set-user-data"><tt class="function">cairo_font_face_set_user_data()</tt></a>,
+ and <a href="cairo-Fonts.html#cairo-font-face-get-user-data"><tt class="function">cairo_font_face_get_user_data()</tt></a>
+ methods are provided for use in language bindings, and should
+ not be directly exposed to applications.
+ </p>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-surfaces.html"><b>&lt;&lt;&#160;Surfaces</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-path.html"><b>cairo_path_t&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-memory.html b/doc/public/html/bindings-memory.html
new file mode 100644
index 0000000..8d820c4
--- /dev/null
+++ b/doc/public/html/bindings-memory.html
@@ -0,0 +1,130 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Memory Management</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="next" href="bindings-return-values.html" title="Multiple return values">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="language-bindings.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-return-values.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-memory"></a>Memory Management</h2></div></div>
+<div></div>
+</div>
+<p>
+ The objects in cairo can roughly be divided into two types:
+ refcounted opaque types like
+ <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a>
+ and plain structures like
+ <a href="cairo-cairo-t.html#cairo-glyph-t"><span class="type">cairo_glyph_t</span></a>.
+ <a href="cairo-cairo-t.html#cairo-path-t"><span class="type">cairo_path_t</span></a>
+ and
+ <span class="type">cairo_path_data_t</span>
+ are special cases and are treated separately in this appendix.
+ </p>
+<p>
+ Refcounted opaque types all have a
+ <tt class="function">..._reference()</tt>
+ function to increase the refcount by one and a
+ <tt class="function">..._destroy()</tt> to decrease the refcount
+ by one. These should not be exposed to the user of the language
+ binding, but rather used to implement memory management within
+ the language binding. The simplest way to do memory management
+ for a language binding is to treat the language binding object
+ as a simple handle to the cairo object. The language binding
+ object references the cairo object, and unreferences it when
+ finalized. This is the recommended method, though there are
+ a couple of caveats to be noted:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>
+ Equality won't work as expected. You can have two language
+ objects for the same cairo and they won't necessarily
+ compare equal. If the language allows customizing the
+ equality operation, then this is fixable by comparing
+ the underlying pointers. It also can be fixed by creating
+ at most one language object per cairo object, and
+ uniquifying via a <i class="firstterm">pin table</i> (a hash
+ table that goes from cairo object to language object).
+ For <span class="type">cairo_surface_t</span> you can use also
+ <a href="cairo-cairo-surface-t.html#cairo-surface-set-user-data"><tt class="function">cairo_surface_set_user_data()</tt></a>
+ instead of a separate pin table.
+ </p></li>
+<li>
+<p>
+ Derivation from the language object doesn't work because
+ you can lose the language object while keeping the Cairo
+ object. Code like:
+ </p>
+<pre class="programlisting">
+public class MySurface (ImageSurface) {
+ public MySurface (width, height) {
+ super (Format.ARGB32, width, height);
+ }
+ public int get42 () {
+ return 42;
+ }
+}
+
+ cr = Cairo(MySurface(width, height));
+ surface = cr.getTarget();
+</pre>
+<p>
+ Can result in <tt class="varname">surface</tt> containing an
+ <tt class="classname">ImageSurface</tt> not a <tt class="classname">MySurface</tt>.
+ This is not easily fixable without creating memory leaks,
+ and it's probably best to simply forbid deriving from the
+ language objects.
+ </p>
+</li>
+</ul></div>
+<p>
+ When a plain structure is used as a return value from cairo,
+ this is done by passing it as a &#8220;out parameter&#8221;.
+ </p>
+<pre class="programlisting">
+cairo_font_extents_t extents;
+
+cairo_font_extents (cr, &amp;extents);</pre>
+<p>
+ In a language binding, this should typically be treated
+ as a return value:
+ </p>
+<pre class="programlisting">
+FontExtents extents = cr.fontExtents ();</pre>
+<p>
+ A language binding has a choice in how it implements the
+ language objects for plain structures. It can use a pure
+ language object with fields corresponding to those of the C
+ structure, and convert from and to the C structure when calling
+ cairo functions or converting cairo return values. Or it
+ can keep a pointer to the C structure internally and wrap
+ it inside a language object much like occurs for refcounted
+ objects. The choice should be invisible to the user: they should
+ be able to imagine that it is implemented as a pure language
+ object.
+ </p>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="language-bindings.html"><b>&lt;&lt;&#160;Appendix&#160;A.&#160;Creating a language binding for cairo</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-return-values.html"><b>Multiple return values&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-overloading.html b/doc/public/html/bindings-overloading.html
new file mode 100644
index 0000000..fb7ccd3
--- /dev/null
+++ b/doc/public/html/bindings-overloading.html
@@ -0,0 +1,128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Overloading and optional arguments</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-return-values.html" title="Multiple return values">
+<link rel="next" href="bindings-streams.html" title="Streams and File I/O">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-return-values.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-streams.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-overloading"></a>Overloading and optional arguments</h2></div></div>
+<div></div>
+</div>
+<p>
+ Function overloading (having a several variants of a function
+ with the same name and different arguments) is a language
+ feature available in many languages but not in C.
+ </p>
+<p>
+ In general, language binding authors should use restraint in
+ combining functions in the cairo API via function
+ overloading. What may seem like an obvious overload now may
+ turn out to be strange with future additions to cairo.
+ It might seem logical to make
+ <a href="cairo-cairo-t.html#cairo-set-source-rgb"><tt class="function">cairo_set_source_rgb()</tt></a>
+ an overload of <tt class="function">cairo_set_source()</tt>, but future plans to add
+ <tt class="function">cairo_set_source_rgb_premultiplied()</tt>,
+ which will also take three doubles make this a bad idea. For
+ this reason, only the following pairs of functions should
+ be combined via overloading
+ </p>
+<pre class="programlisting">
+void
+cairo_set_source (cairo_t *cr, cairo_pattern_t *source);
+
+void
+cairo_set_source_surface (cairo_t *cr,
+ cairo_surface_t *source,
+ double surface_x,
+ double surface_y);
+
+void
+cairo_mask (cairo_t *cr,
+ cairo_pattern_t *pattern);
+
+void
+cairo_mask_surface (cairo_t *cr,
+ cairo_surface_t *surface,
+ double surface_x,
+ double surface_y);
+
+cairo_surface_t *
+cairo_image_surface_create (cairo_format_t format,
+ int width,
+ int height);
+cairo_surface_t *
+cairo_image_surface_create_for_data (unsigned char *data,
+ cairo_format_t format,
+ int width,
+ int height,
+ int stride);
+
+cairo_status_t
+cairo_surface_write_to_png (cairo_surface_t *surface,
+ const char *filename);
+
+cairo_status_t
+cairo_surface_write_to_png_stream (cairo_surface_t *surface,
+ cairo_write_func_t write_func,
+ void *closure);
+
+cairo_surface_t *
+cairo_image_surface_create_from_png (const char *filename);
+
+cairo_surface_t *
+cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func,
+ void *closure);
+ </pre>
+<p>
+ Note that there are cases where all constructors for a type
+ aren't overloaded together. For example
+ <a href="cairo-PNG-Backend.html#cairo-image-surface-create-from-png"><tt class="function">cairo_image_surface_create_from_png()</tt></a>
+ should <span class="emphasis"><em>not</em></span> be overloaded together with
+ <a href="cairo-cairo-t.html#cairo-image-surface-create"><tt class="function">cairo_image_surface_create()</tt></a>.
+ In such cases, the remaining constructors will typically need to
+ be bound as static methods. In Java, for example, we might have:
+ </p>
+<pre class="programlisting">
+Surface surface1 = ImageSurface(Format.RGB24, 100, 100);
+Surface surface2 = ImageSurface.createFromPNG("camera.png");</pre>
+<p>
+ Some other overloads that add combinations not found in C may be
+ convenient for users for language bindings that provide
+ <span class="type">cairo_point_t</span> and <span class="type">cairo_rectangle_t</span>
+ types, for example:
+ </p>
+<pre class="programlisting">
+void
+cairo_move_to (cairo_t *cr,
+ cairo_point_t *point);
+void
+cairo_rectangle (cairo_t *cr,
+ cairo_rectangle_t *rectangle);
+ </pre>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-return-values.html"><b>&lt;&lt;&#160;Multiple return values</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-streams.html"><b>Streams and File I/O&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-path.html b/doc/public/html/bindings-path.html
new file mode 100644
index 0000000..592e38a
--- /dev/null
+++ b/doc/public/html/bindings-path.html
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cairo_path_t</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-fonts.html" title="Fonts">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-fonts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-path"></a>cairo_path_t</h2></div></div>
+<div></div>
+</div>
+<p>
+ The <a href="cairo-cairo-t.html#cairo-path-t"><span class="type">cairo_path_t</span></a> type is one
+ area in which most language bindings will differ significantly
+ from the C API. The C API for <span class="type">cairo_path_t</span> is
+ designed for efficiency and to avoid auxiliary objects that
+ would be have to be manually memory managed by the
+ application. However,
+ a language binding should not present <span class="type">cairo_path_t</span> as an
+ array, but rather as an opaque that can be iterated
+ over. Different languages have quite different conventions for
+ how iterators work, so it is impossible to give an exact
+ specification for how this API should work, but the type names
+ and methods should be similar to the language's mapping of the following:
+ </p>
+<pre class="programlisting">
+typedef struct cairo_path_iterator cairo_path_iterator_t;
+typedef struct cairo_path_element cairo_path_element_t;
+
+cairo_path_iterator_t *
+cairo_path_get_iterator (cairo_path_t *path);
+
+cairo_bool_t
+cairo_path_iterator_has_next (cairo_path_iterator_t *iterator);
+
+cairo_path_element_t *
+cairo_path_iterator_next (cairo_path_iterator_t *iterator);
+
+cairo_path_element_type_t
+cairo_path_element_get_type (cairo_path_element_t *element);
+
+void
+cairo_path_element_get_point (cairo_path_element_t *element,
+ int index,
+ double *x,
+ double *y);
+ </pre>
+<p>
+ The above is written using the Java conventions for
+ iterators. To illustrate how the API for PathIterator might
+ depend on the native iteration conventions of the API, examine
+ three versions of the loop, first written in a hypothetical Java
+ binding:
+ </p>
+<pre class="programlisting">
+PathIterator iter = cr.copyPath().iterator();
+while (cr.hasNext()) {
+ PathElement element = iter.next();
+ if (element.getType() == PathElementType.MOVE_TO) {
+ Point p = element.getPoint(0);
+ doMoveTo (p.x, p.y);
+ }
+}</pre>
+<p>
+ And then in a hypothetical C++ binding:
+ </p>
+<pre class="programlisting">
+Path path = cr.copyPath();
+for (PathIterator iter = path.begin(); iter != path.end(); iter++) {
+ PathElement element = *iter;
+ if (element.getType() == PathElementType.MOVE_TO) {
+ Point p = element.getPoint(0);
+ doMoveTo (p.x, p.y);
+ }
+}</pre>
+<p>
+ And then finally in a Python binding:
+ </p>
+<pre class="programlisting">
+for element in cr.copy_path():
+ if element.getType == cairo.PATH_ELEMENT_MOVE_TO:
+ (x, y) = element.getPoint(0)
+ doMoveTo (x, y);</pre>
+<p>
+ While many of the API elements stay the same in the three
+ examples, the exact iteration mechanism is quite different, to
+ match how users of the language would expect to iterate over
+ a container.
+ </p>
+<p>
+ You should not present an API for mutating or for creating new
+ <span class="type">cairo_path_t</span> objects. In the future, these
+ guidelines may be extended to present an API for creating a
+ <span class="type">cairo_path_t</span> from scratch for use with
+ <a href="cairo-cairo-t.html#cairo-append-path"><tt class="function">cairo_append_path()</tt></a>
+ but the current expectation is that <tt class="function">cairo_append_path()</tt> will
+ mostly be used with paths from
+ <a href="cairo-cairo-t.html#cairo-append-path"><tt class="function">cairo_copy_path()</tt></a>.
+ </p>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-fonts.html"><b>&lt;&lt;&#160;Fonts</b></a></td>
+<td align="right"></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-patterns.html b/doc/public/html/bindings-patterns.html
new file mode 100644
index 0000000..f55c3a8
--- /dev/null
+++ b/doc/public/html/bindings-patterns.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Patterns</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-errors.html" title="Error handling">
+<link rel="next" href="bindings-surfaces.html" title="Surfaces">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-errors.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-surfaces.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-patterns"></a>Patterns</h2></div></div>
+<div></div>
+</div>
+<p>
+ The cairo C API allows for creating a number of different types
+ of patterns. All of these different types of patterns map to
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-t"><span class="type">cairo_pattern_t</span></a>
+ in C, but in an object oriented language, there should instead
+ be a hierarchy of types. (The functions that should map to
+ constructors for the various types are listed after the type,
+ methods on that type are listed below)
+ </p>
+<pre class="programlisting">
+cairo_pattern_t
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-matrix"><tt class="function">cairo_pattern_set_matrix()</tt></a>
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-get-matrix"><tt class="function">cairo_pattern_get_matrix()</tt></a>
+ cairo_solid_pattern_t
+ cairo_surface_pattern_t (<a href="cairo-cairo-pattern-t.html#cairo-pattern-create-for-surface"><tt class="function">cairo_pattern_create_for_surface()</tt></a>)
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-extend"><tt class="function">cairo_pattern_set_extend()</tt></a>
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-get-extend"><tt class="function">cairo_pattern_get_extend()</tt></a>
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-filter"><tt class="function">cairo_pattern_set_filter()</tt></a>
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-get-filter"><tt class="function">cairo_pattern_get_filter()</tt></a>
+ cairo_gradient_t
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgb"><tt class="function">cairo_pattern_add_color_stop_rgb()</tt></a>
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba"><tt class="function">cairo_pattern_add_color_stop_rgba()</tt></a>
+ cairo_linear_gradient_t (<a href="cairo-cairo-pattern-t.html#cairo-pattern-create-linear"><tt class="function">cairo_pattern_create_linear()</tt></a>)
+ cairo_radial_gradient_t (<a href="cairo-cairo-pattern-t.html#cairo-pattern-create-radial"><tt class="function">cairo_pattern_create_radial()</tt></a>)
+ </pre>
+<p>
+ </p>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-errors.html"><b>&lt;&lt;&#160;Error handling</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-surfaces.html"><b>Surfaces&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-return-values.html b/doc/public/html/bindings-return-values.html
new file mode 100644
index 0000000..9ae514f
--- /dev/null
+++ b/doc/public/html/bindings-return-values.html
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Multiple return values</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-memory.html" title="Memory Management">
+<link rel="next" href="bindings-overloading.html" title="Overloading and optional arguments">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-memory.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-overloading.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-return-values"></a>Multiple return values</h2></div></div>
+<div></div>
+</div>
+<p>
+ There are a number of functions in the cairo API that have
+ multiple <i class="firstterm">out parameters</i> or
+ <i class="firstterm">in-out parameters</i>. In some languages
+ these can be translated into multiple return values. In Python,
+ what is:
+ </p>
+<pre class="programlisting">
+cairo_user_to_device (cr, &amp;x, &amp;y);</pre>
+<p>
+ can by mapped to:
+ </p>
+<pre class="programlisting">
+(x, y) = cr.user_to_device (cr, x, y);</pre>
+<p>
+ but many languages don't have provisions for multiple return
+ values, so it is necessary to introduce auxiliary types.
+ Most of the functions that require the auxiliary types
+ require a type that would, in C, look like
+ </p>
+<pre class="programlisting">
+typedef struct _cairo_point cairo_point_t;
+struct _cairo_point {
+ double x;
+ double y;
+}</pre>
+<p>
+ The same type should be used both for functions that use a pair
+ of coordinates as an absolute position, and functions that use
+ a pair of coordinates as a displacement. While an argument could
+ be made that having a separate &#8220;distance&#8221; type is more correct,
+ it is more likely just to confuse users.
+ </p>
+<pre class="programlisting">
+void
+cairo_user_to_device (cairo_t *cr, double *x, double *y);
+
+void
+cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy);
+
+void
+cairo_device_to_user (cairo_t *cr, double *x, double *y);
+
+void
+cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy);
+
+void
+cairo_matrix_transform_distance (cairo_matrix_t *matrix, double *dx, double *dy);
+
+void
+cairo_matrix_transform_point (cairo_matrix_t *matrix, double *x, double *y);
+
+void
+cairo_get_current_point (cairo_t *cr, double *x, double *y);
+ </pre>
+<p>
+ There are also a couple of functions that return four values
+ representing a rectangle. These should be mapped to a
+ &#8220;rectangle&#8221; type that looks like:
+ </p>
+<pre class="programlisting">
+typedef struct _cairo_rectangle cairo_rectangle_t;
+struct _cairo_rectangle {
+ double x;
+ double y;
+ double width;
+ double height;
+}</pre>
+<p>
+ The C function returns the rectangle as a set of two points to
+ facilitate rounding to integral extents, but this isn't worth
+ adding a &#8220;box&#8221; type to go along with the more obvious
+ &#8220;rectangle&#8221; representation.
+ </p>
+<i><span class="remark">
+ Q: Would it make sense here to define a standard
+ <tt class="function">cairo_rectangle_round()</tt> method
+ that language bindings should map?
+ </span></i><pre class="programlisting">
+void
+cairo_stroke_extents (cairo_t *cr,
+ double *x1, double *y1,
+ double *x2, double *y2);
+
+void
+cairo_fill_extents (cairo_t *cr,
+ double *x1, double *y1,
+ double *x2, double *y2);
+ </pre>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-memory.html"><b>&lt;&lt;&#160;Memory Management</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-overloading.html"><b>Overloading and optional arguments&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-streams.html b/doc/public/html/bindings-streams.html
new file mode 100644
index 0000000..4001c16
--- /dev/null
+++ b/doc/public/html/bindings-streams.html
@@ -0,0 +1,99 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Streams and File I/O</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-overloading.html" title="Overloading and optional arguments">
+<link rel="next" href="bindings-errors.html" title="Error handling">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-overloading.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-errors.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-streams"></a>Streams and File I/O</h2></div></div>
+<div></div>
+</div>
+<p>
+ Various places in the cairo API deal with reading and writing
+ data, whether from and to files, or to other sources and
+ destinations. In these cases, what is typically provided in the
+ C API is a simple version that just takes a filename, and a
+ complex version that takes a callback function.
+ An example is the PNG handling functions:
+ </p>
+<pre class="programlisting">
+cairo_surface_t *
+cairo_image_surface_create_from_png (const char *filename);
+
+cairo_surface_t *
+cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func,
+ void *closure);
+
+cairo_status_t
+cairo_surface_write_to_png (cairo_surface_t *surface,
+ const char *filename);
+
+cairo_status_t
+cairo_surface_write_to_png_stream (cairo_surface_t *surface,
+ cairo_write_func_t write_func,
+ void *closure);</pre>
+<p>
+ The expectation is that the filename version will be mapped
+ literally in the language binding, but the callback version
+ will be mapped to a version that takes a language stream
+ object. For example, in Java, the four functions above
+ might be mapped to:
+ </p>
+<pre class="programlisting">
+static public ImageSurface createFromPNG (String filename) throws IOException;
+static public ImageSurface createFromPNG (InputStream stream) throws IOException;
+public void writeToPNG (String filename) throws IOException;
+public void writeToPNG (OutputStream stream) throws IOException;
+</pre>
+<p>
+ In many cases, it will be better to
+ implement the filename version internally
+ using the stream version, rather than building it on top of the
+ filename version in C. The reason for this is that will
+ naturally give a more standard handling of file errors for
+ the language, as seen in the above Java example, where
+ <tt class="methodname">createFromPNG()</tt> is marked as raising
+ an exception. Propagating exceptions from inside the callback
+ function to the caller will pose a challenge to the language
+ binding implementor, since an exception must not propagate
+ through the Cairo code. A technique that will be useful in
+ some cases is to catch the exception in the callback,
+ store the exception object inside a structure pointed to by
+ <i class="parameter"><tt>closure</tt></i>, and then rethrow it once
+ the function returns.
+ </p>
+<i><span class="remark">
+ I'm not sure how to handle this for
+ <tt class="function">cairo_pdf_surface_create_for_callback()</tt>.
+ Other than keep a &#8220;exception to rethrow&#8221; thread-specific
+ variable
+ that is checked after <span class="emphasis"><em>every</em></span> call to a Cairo
+ function.
+ </span></i>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-overloading.html"><b>&lt;&lt;&#160;Overloading and optional arguments</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-errors.html"><b>Error handling&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/bindings-surfaces.html b/doc/public/html/bindings-surfaces.html
new file mode 100644
index 0000000..17def5f
--- /dev/null
+++ b/doc/public/html/bindings-surfaces.html
@@ -0,0 +1,99 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Surfaces</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<link rel="previous" href="bindings-patterns.html" title="Patterns">
+<link rel="next" href="bindings-fonts.html" title="Fonts">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="bindings-patterns.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="language-bindings.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-fonts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-surfaces"></a>Surfaces</h2></div></div>
+<div></div>
+</div>
+<p>
+ Like patterns, surfaces, which use only the
+ <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a>
+ type in the C API should be broken up into a heirarchy of types
+ in a language binding.
+ </p>
+<pre class="programlisting">
+cairo_surface_t
+ cairo_image_surface_t
+ cairo_atsui_surface_t
+ cairo_win32_surface_t
+ cairo_xlib_surface_t
+ </pre>
+<p>
+ Unlike patterns, the constructors and methods on these types are
+ clearly named, and can be trivially associated with the
+ appropriate subtype. Many language bindings will want to avoid
+ binding the platform-specific subtypes at all, since the
+ methods on these types are not useful without passing in native
+ C types. Unless there is a language binding for Xlib available,
+ there is no way to represent a XLib <span class="type">Display</span> * in
+ that language.
+ </p>
+<p>
+ This doesn't mean that platform-specific surface types can't
+ be used in a language binding that doesn't bind the constructor.
+ A very common situation is to use a cairo language binding in
+ combination with a binding for a higher level system like
+ the <a href="http://www.gtk.org/" target="_top">GTK+</a> widget
+ toolkit. In such a situation, the higher level toolkit provides
+ ways to get references to platform specific surfaces.
+ </p>
+<p>
+ The <a href="cairo-cairo-surface-t.html#cairo-surface-set-user-data"><tt class="function">cairo_surface_set_user_data()</tt></a>,
+ and <a href="cairo-cairo-surface-t.html#cairo-surface-get-user-data"><tt class="function">cairo_surface_get_user_data()</tt></a>
+ methods are provided for use in language bindings, and should
+ not be directly exposed to applications. One example of the use
+ of these functions in a language binding is creating a binding for:
+ </p>
+<pre class="programlisting">
+cairo_surface_t *
+<a href="cairo-cairo-t.html#cairo-image-surface-create-for-data"><tt class="function">cairo_image_surface_create_for_data</tt></a> (unsigned char *data,
+ cairo_format_t format,
+ int width,
+ int height,
+ int stride);
+</pre>
+<p>
+ The memory block passed in for <i class="parameter"><tt>data</tt></i> must be
+ kept around until the surface is destroyed, so the language
+ binding must have some way of determining when that happens. The
+ way to do this is to use the <i class="parameter"><tt>destroy</tt></i>
+ argument to <tt class="function">cairo_surface_set_user_data()</tt>.
+ </p>
+<i><span class="remark">
+ Some languages may not have a suitable &#8220;pointer to a block of
+ data&#8221; type to pass in for <i class="parameter"><tt>data</tt></i>. And even
+ where a language does have such a type, the user will be
+ frequently able to cause the backing store to be reallocated
+ to a different location or truncated. Should we recommend a
+ standard type name and binding for a buffer object here?
+ </span></i>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="bindings-patterns.html"><b>&lt;&lt;&#160;Patterns</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-fonts.html"><b>Fonts&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-ATSUI-Fonts.html b/doc/public/html/cairo-ATSUI-Fonts.html
index 50af682..a4a51e3 100644
--- a/doc/public/html/cairo-ATSUI-Fonts.html
+++ b/doc/public/html/cairo-ATSUI-Fonts.html
@@ -1,14 +1,60 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ATSUI Fonts</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-cairo-matrix-t.html" title="cairo_matrix_t"><link rel="next" href="cairo-FreeType-Fonts.html" title="FreeType Fonts"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-cairo-matrix-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-FreeType-Fonts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-ATSUI-Fonts"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">ATSUI Fonts</span></h2><p>ATSUI Fonts &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ATSUI Fonts</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-Fonts.html" title="Fonts">
+<link rel="next" href="cairo-FreeType-Fonts.html" title="FreeType Fonts">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-Fonts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-FreeType-Fonts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-ATSUI-Fonts"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ATSUI Fonts</span></h2>
+<p>ATSUI Fonts &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* <a href="cairo-ATSUI-Fonts.html#cairo-atsui-font-create">cairo_atsui_font_create</a> (ATSUStyle style);
-</pre></div><div class="refsect1" lang="en"><a name="id2707012"></a><h2>Description</h2><p>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2967419"></a><h2>Description</h2>
+<p>
-</p></div><div class="refsect1" lang="en"><a name="id2698366"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2714083"></a><h3><a name="cairo-atsui-font-create"></a>cairo_atsui_font_create ()</h3><a class="indexterm" name="id2716792"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* cairo_atsui_font_create (ATSUStyle style);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>style</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-cairo-matrix-t.html"><b>&lt;&lt;cairo_matrix_t</b></a></td><td align="right"><a accesskey="n" href="cairo-FreeType-Fonts.html"><b>FreeType Fonts&gt;&gt;</b></a></td></tr></table></body></html>
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2951233"></a><h2>Details</h2>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-Fonts.html"><b>&lt;&lt;&#160;Fonts</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-FreeType-Fonts.html"><b>FreeType Fonts&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-Fonts.html b/doc/public/html/cairo-Fonts.html
new file mode 100644
index 0000000..01c2fb1
--- /dev/null
+++ b/doc/public/html/cairo-Fonts.html
@@ -0,0 +1,590 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Fonts</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-cairo-matrix-t.html" title="cairo_matrix_t">
+<link rel="next" href="cairo-ATSUI-Fonts.html" title="ATSUI Fonts">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-cairo-matrix-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-ATSUI-Fonts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-Fonts"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Fonts</span></h2>
+<p>Fonts &#8212; Font Handling</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+typedef <a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>;
+typedef <a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a>;
+void <a href="cairo-Fonts.html#cairo-font-face-reference">cairo_font_face_reference</a> (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face);
+void <a href="cairo-Fonts.html#cairo-font-face-destroy">cairo_font_face_destroy</a> (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face);
+void* <a href="cairo-Fonts.html#cairo-font-face-get-user-data">cairo_font_face_get_user_data</a> (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key);
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-Fonts.html#cairo-font-face-set-user-data">cairo_font_face_set_user_data</a>
+ (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key,
+ void *user_data,
+ <a href="cairo-cairo-t.html#cairo-destroy-func-t">cairo_destroy_func_t</a> destroy);
+<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a>* <a href="cairo-Fonts.html#cairo-scaled-font-create">cairo_scaled_font_create</a>
+ (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *font_matrix,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *ctm);
+void <a href="cairo-Fonts.html#cairo-scaled-font-reference">cairo_scaled_font_reference</a> (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);
+void <a href="cairo-Fonts.html#cairo-scaled-font-destroy">cairo_scaled_font_destroy</a> (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);
+ <a href="cairo-Fonts.html#cairo-font-extents-t">cairo_font_extents_t</a>;
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-Fonts.html#cairo-scaled-font-extents">cairo_scaled_font_extents</a> (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font,
+ <a href="cairo-Fonts.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);
+ <a href="cairo-Fonts.html#cairo-text-extents-t">cairo_text_extents_t</a>;
+void <a href="cairo-Fonts.html#cairo-scaled-font-glyph-extents">cairo_scaled_font_glyph_extents</a> (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font,
+ <a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
+ int num_glyphs,
+ <a href="cairo-Fonts.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2954869"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2954880"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2954886"></a><h3>
+<a name="cairo-font-face-t"></a>cairo_font_face_t</h3>
+<a class="indexterm" name="id2954896"></a><pre class="programlisting">typedef struct _cairo_font_face cairo_font_face_t;
+</pre>
+<p>
+A <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a> specifies all aspects of a font other
+than the size or font matrix (a font matrix is used to distort
+a font by sheering it or scaling it unequally in the two
+directions) . A font face can be set on a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> by using
+<a href="cairo-cairo-t.html#cairo-set-font-face"><tt class="function">cairo_set_font_face()</tt></a>; the size and font matrix are set with
+<a href="cairo-cairo-t.html#cairo-set-font-size"><tt class="function">cairo_set_font_size()</tt></a> and <a href="cairo-cairo-t.html#cairo-set-font-matrix"><tt class="function">cairo_set_font_matrix()</tt></a>.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2930972"></a><h3>
+<a name="cairo-scaled-font-t"></a>cairo_scaled_font_t</h3>
+<a class="indexterm" name="id2930982"></a><pre class="programlisting">typedef struct _cairo_scaled_font cairo_scaled_font_t;
+</pre>
+<p>
+A <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> is a font scaled to a particular size and device
+resolution. A cairo_scaled_font_t is most useful for low-level font
+usage where a library or application wants to cache a reference
+to a scaled font to speed up the computation of metrics.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2931013"></a><h3>
+<a name="cairo-font-face-reference"></a>cairo_font_face_reference ()</h3>
+<a class="indexterm" name="id2931022"></a><pre class="programlisting">void cairo_font_face_reference (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face);</pre>
+<p>
+Increases the reference count on <i class="parameter"><tt>font_face</tt></i> by one. This prevents
+<i class="parameter"><tt>font_face</tt></i> from being destroyed until a matching call to
+<a href="cairo-Fonts.html#cairo-font-face-destroy"><tt class="function">cairo_font_face_destroy()</tt></a> is made.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>font_face</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>, (may be NULL in which case this
+function does nothing).
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2931100"></a><h3>
+<a name="cairo-font-face-destroy"></a>cairo_font_face_destroy ()</h3>
+<a class="indexterm" name="id2931109"></a><pre class="programlisting">void cairo_font_face_destroy (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face);</pre>
+<p>
+Decreases the reference count on <i class="parameter"><tt>font_face</tt></i> by one. If the result
+is zero, then <i class="parameter"><tt>font_face</tt></i> and all associated resources are freed.
+See <a href="cairo-Fonts.html#cairo-font-face-reference"><tt class="function">cairo_font_face_reference()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>font_face</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2931186"></a><h3>
+<a name="cairo-font-face-get-user-data"></a>cairo_font_face_get_user_data ()</h3>
+<a class="indexterm" name="id2931196"></a><pre class="programlisting">void* cairo_font_face_get_user_data (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key);</pre>
+<p>
+Return user data previously attached to <i class="parameter"><tt>font_face</tt></i> using the specified
+key. If no user data has been attached with the given key this
+function returns <tt class="literal">NULL</tt>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>font_face</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>key</tt></i>&#160;:</span></td>
+<td> the address of the <a href="cairo-cairo-t.html#cairo-user-data-key-t"><span class="type">cairo_user_data_key_t</span></a> the user data was
+attached to
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the user data previously attached or <tt class="literal">NULL</tt>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2931311"></a><h3>
+<a name="cairo-font-face-set-user-data"></a>cairo_font_face_set_user_data ()</h3>
+<a class="indexterm" name="id2931322"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_font_face_set_user_data
+ (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key,
+ void *user_data,
+ <a href="cairo-cairo-t.html#cairo-destroy-func-t">cairo_destroy_func_t</a> destroy);</pre>
+<p>
+Attach user data to <i class="parameter"><tt>font_face</tt></i>. To remove user data from a font face,
+call this function with the key that was used to set it and <tt class="literal">NULL</tt>
+for <i class="parameter"><tt>data</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>font_face</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>key</tt></i>&#160;:</span></td>
+<td> the address of a <a href="cairo-cairo-t.html#cairo-user-data-key-t"><span class="type">cairo_user_data_key_t</span></a> to attach the user data to
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>user_data</tt></i>&#160;:</span></td>
+<td> the user data to attach to the font face
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>destroy</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-destroy-func-t"><span class="type">cairo_destroy_func_t</span></a> which will be called when the
+font face is destroyed or when new user data is attached using the
+same key.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt> or <tt class="literal">CAIRO_STATUS_NO_MEMORY</tt> if a
+slot could not be allocated for the user data.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2974065"></a><h3>
+<a name="cairo-scaled-font-create"></a>cairo_scaled_font_create ()</h3>
+<a class="indexterm" name="id2974074"></a><pre class="programlisting"><a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a>* cairo_scaled_font_create
+ (<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *font_matrix,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *ctm);</pre>
+<p>
+Creates a <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> object from a font face and matrices that
+describe the size of the font and the environment in which it will
+be used.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>font_face</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>font_matrix</tt></i>&#160;:</span></td>
+<td> font space to user space transformation matrix for the
+ font. In the simplest case of a N point font, this matrix is
+ just a scale by N, but it can also be used to shear the font
+ or stretch it unequally along the two axes. See
+ <a href="cairo-cairo-t.html#cairo-set-font-matrix"><tt class="function">cairo_set_font_matrix()</tt></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>ctm</tt></i>&#160;:</span></td>
+<td> user to device transformation matrix with which the font will
+ be used.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a newly created <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>. Destroy with
+ <a href="cairo-Fonts.html#cairo-scaled-font-destroy"><tt class="function">cairo_scaled_font_destroy()</tt></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2974225"></a><h3>
+<a name="cairo-scaled-font-reference"></a>cairo_scaled_font_reference ()</h3>
+<a class="indexterm" name="id2974235"></a><pre class="programlisting">void cairo_scaled_font_reference (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);</pre>
+<p>
+Increases the reference count on <i class="parameter"><tt>scaled_font</tt></i> by one. This prevents
+<i class="parameter"><tt>scaled_font</tt></i> from being destroyed until a matching call to
+<a href="cairo-Fonts.html#cairo-scaled-font-destroy"><tt class="function">cairo_scaled_font_destroy()</tt></a> is made.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>, (may be NULL in which case
+this function does nothing)
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2974314"></a><h3>
+<a name="cairo-scaled-font-destroy"></a>cairo_scaled_font_destroy ()</h3>
+<a class="indexterm" name="id2974324"></a><pre class="programlisting">void cairo_scaled_font_destroy (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);</pre>
+<p>
+Decreases the reference count on <i class="parameter"><tt>font</tt></i> by one. If the result
+is zero, then <i class="parameter"><tt>font</tt></i> and all associated resources are freed.
+See <a href="cairo-Fonts.html#cairo-scaled-font-reference"><tt class="function">cairo_scaled_font_reference()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2974404"></a><h3>
+<a name="cairo-font-extents-t"></a>cairo_font_extents_t</h3>
+<a class="indexterm" name="id2974413"></a><pre class="programlisting">typedef struct {
+ double ascent;
+ double descent;
+ double height;
+ double max_x_advance;
+ double max_y_advance;
+} cairo_font_extents_t;
+</pre>
+<p>
+The <a href="cairo-Fonts.html#cairo-text-extents-t"><span class="type">cairo_text_extents_t</span></a> structure stores metric information for
+a font. Values are given in the current user-space coordinate
+system.
+</p>
+<p>
+Because font metrics are in user-space coordinates, they are
+mostly, but not entirely, independent of the current transformation
+matrix. If you call <tt class="literal">cairo_scale(cr, 2.0, 2.0)</tt>,
+text will be drawn twice as big, but the reported text extents will
+not be doubled. They will change slightly due to hinting (so you
+can't assume that metrics are independent of the transformation
+matrix), but otherwise will remain unchanged.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>ascent</tt></i>;</span></td>
+<td> the distance that the font extends above the baseline.
+ Note that this is not always exactly equal to the maximum
+ of the extents of all the glyphs in the font, but rather
+ is picked to express the font designer's intent as to
+ how the font should align with elements above it.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>descent</tt></i>;</span></td>
+<td> the distance that the font extends below the baseline.
+ This value is positive for typical fonts that include
+ portions below the baseline. Note that this is not always
+ exactly equal to the maximum of the extents of all the
+ glyphs in the font, but rather is picked to express the
+ font designer's intent as to how the the font should
+ align with elements below it.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>height</tt></i>;</span></td>
+<td> the recommended vertical distance between baselines when
+ setting consecutive lines of text with the font. This
+ is greater than <i class="parameter"><tt>ascent</tt></i>+<i class="parameter"><tt>descent</tt></i> by a
+ quantity known as the <i class="firstterm">line spacing</i>
+ or <i class="firstterm">external leading</i>. When space
+ is at a premium, most fonts can be set with only
+ a distance of <i class="parameter"><tt>ascent</tt></i>+<i class="parameter"><tt>descent</tt></i> between lines.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>max_x_advance</tt></i>;</span></td>
+<td> the maximum distance in the X direction that
+ the the origin is advanced for any glyph in the font.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>max_y_advance</tt></i>;</span></td>
+<td> the maximum distance in the Y direction that
+ the the origin is advanced for any glyph in the font.
+ this will be zero for normal fonts used for horizontal
+ writing. (The scripts of East Asia are sometimes written
+ vertically.)
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2974621"></a><h3>
+<a name="cairo-scaled-font-extents"></a>cairo_scaled_font_extents ()</h3>
+<a class="indexterm" name="id2974630"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_scaled_font_extents (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font,
+ <a href="cairo-Fonts.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);</pre>
+<p>
+Gets the metrics for a <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>extents</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-extents-t"><span class="type">cairo_font_extents_t</span></a> which to store the retrieved extents.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt> on success. Otherwise, an
+ error such as <tt class="literal">CAIRO_STATUS_NO_MEMORY</tt>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2974745"></a><h3>
+<a name="cairo-text-extents-t"></a>cairo_text_extents_t</h3>
+<a class="indexterm" name="id2974754"></a><pre class="programlisting">typedef struct {
+ double x_bearing;
+ double y_bearing;
+ double width;
+ double height;
+ double x_advance;
+ double y_advance;
+} cairo_text_extents_t;
+</pre>
+<p>
+The <a href="cairo-Fonts.html#cairo-text-extents-t"><span class="type">cairo_text_extents_t</span></a> structure stores the extents of a single
+glyph or a string of glyphs in user-space coordinates. Because text
+extents are in user-space coordinates, they are mostly, but not
+entirely, independent of the current transformation matrix. If you call
+<tt class="literal">cairo_scale(cr, 2.0, 2.0)</tt>, text will
+be drawn twice as big, but the reported text extents will not be
+doubled. They will change slightly due to hinting (so you can't
+assume that metrics are independent of the transformation matrix),
+but otherwise will remain unchanged.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>x_bearing</tt></i>;</span></td>
+<td> the horizontal distance from the origin to the
+ leftmost part of the glyphs as drawn. Positive if the
+ glyphs lie entirely to the right of the origin.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>y_bearing</tt></i>;</span></td>
+<td> the vertical distance from the origin to the
+ topmost part of the glyphs as drawn. Positive only if the
+ glyphs lie completely below the origin; will usually be
+ negative.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>width</tt></i>;</span></td>
+<td> width of the glyphs as drawn
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>height</tt></i>;</span></td>
+<td> height of the glyphs as drawn
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>x_advance</tt></i>;</span></td>
+<td>distance to advance in the X direction
+ after drawing these glyphs
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>y_advance</tt></i>;</span></td>
+<td> distance to advance in the Y direction
+ after drawing these glyphs. Will typically be zero except
+ for vertical text layout as found in East-Asian languages.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2974934"></a><h3>
+<a name="cairo-scaled-font-glyph-extents"></a>cairo_scaled_font_glyph_extents ()</h3>
+<a class="indexterm" name="id2974945"></a><pre class="programlisting">void cairo_scaled_font_glyph_extents (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font,
+ <a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
+ int num_glyphs,
+ <a href="cairo-Fonts.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>glyphs</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>num_glyphs</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>extents</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-cairo-matrix-t.html"><b>&lt;&lt;&#160;cairo_matrix_t</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-ATSUI-Fonts.html"><b>ATSUI Fonts&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-FreeType-Fonts.html b/doc/public/html/cairo-FreeType-Fonts.html
index 92df2ba..10e291e 100644
--- a/doc/public/html/cairo-FreeType-Fonts.html
+++ b/doc/public/html/cairo-FreeType-Fonts.html
@@ -1,114 +1,229 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>FreeType Fonts</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-ATSUI-Fonts.html" title="ATSUI Fonts"><link rel="next" href="cairo-Glitz-backend.html" title="Glitz backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-ATSUI-Fonts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-Glitz-backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-FreeType-Fonts"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">FreeType Fonts</span></h2><p>FreeType Fonts &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>FreeType Fonts</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-ATSUI-Fonts.html" title="ATSUI Fonts">
+<link rel="next" href="cairo-Glitz-backend.html" title="Glitz backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-ATSUI-Fonts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-Glitz-backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-FreeType-Fonts"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">FreeType Fonts</span></h2>
+<p>FreeType Fonts &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create">cairo_ft_font_create</a> (FcPattern *pattern,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *scale);
-<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create-for-ft-face">cairo_ft_font_create_for_ft_face</a>
+<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* <a href="cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-pattern">cairo_ft_font_face_create_for_pattern</a>
+ (FcPattern *pattern);
+<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* <a href="cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-ft-face">cairo_ft_font_face_create_for_ft_face</a>
(FT_Face face,
- int load_flags,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *scale);
-FT_Face <a href="cairo-FreeType-Fonts.html#cairo-ft-font-lock-face">cairo_ft_font_lock_face</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *ft_font);
-void <a href="cairo-FreeType-Fonts.html#cairo-ft-font-unlock-face">cairo_ft_font_unlock_face</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *ft_font);
-FcPattern* <a href="cairo-FreeType-Fonts.html#cairo-ft-font-get-pattern">cairo_ft_font_get_pattern</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *ft_font);
-</pre></div><div class="refsect1" lang="en"><a name="id2733938"></a><h2>Description</h2><p>
+ int load_flags);
+FT_Face <a href="cairo-FreeType-Fonts.html#cairo-ft-scaled-font-lock-face">cairo_ft_scaled_font_lock_face</a> (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);
+void <a href="cairo-FreeType-Fonts.html#cairo-ft-scaled-font-unlock-face">cairo_ft_scaled_font_unlock_face</a>
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2936838"></a><h2>Description</h2>
+<p>
-</p></div><div class="refsect1" lang="en"><a name="id2733947"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2733953"></a><h3><a name="cairo-ft-font-create"></a>cairo_ft_font_create ()</h3><a class="indexterm" name="id2733961"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* cairo_ft_font_create (FcPattern *pattern,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *scale);</pre><p>
-Creates a new font for the FreeType font backend based on a
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2936849"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2936855"></a><h3>
+<a name="cairo-ft-font-face-create-for-pattern"></a>cairo_ft_font_face_create_for_pattern ()</h3>
+<a class="indexterm" name="id2936865"></a><pre class="programlisting"><a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* cairo_ft_font_face_create_for_pattern
+ (FcPattern *pattern);</pre>
+<p>
+Creates a new font face for the FreeType font backend based on a
fontconfig pattern. This font can then be used with
-<a href="cairo-cairo-t.html#cairo-set-font"><tt class="function">cairo_set_font()</tt></a>, <a href="cairo-cairo-t.html#cairo-font-glyph-extents"><tt class="function">cairo_font_glyph_extents()</tt></a>, or FreeType backend
-specific functions like <a href="cairo-FreeType-Fonts.html#cairo-ft-font-lock-face"><tt class="function">cairo_ft_font_lock_face()</tt></a>.</p><p>
+<a href="cairo-cairo-t.html#cairo-set-font-face"><tt class="function">cairo_set_font_face()</tt></a> or <tt class="function">cairo_font_create()</tt>. The <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>
+returned from <tt class="function">cairo_font_create()</tt> is also for the FreeType backend
+and can be used with functions such as <tt class="function">cairo_ft_font_lock_face()</tt>.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td> A fully resolved fontconfig
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td> A fully resolved fontconfig
pattern. A pattern can be resolved, by, among other things, calling
<tt class="function">FcConfigSubstitute()</tt>, <tt class="function">FcDefaultSubstitute()</tt>, then
<tt class="function">FcFontMatch()</tt>. Cairo will call <tt class="function">FcPatternReference()</tt> on this
pattern, so you should not further modify the pattern, but you can
release your reference to the pattern with <tt class="function">FcPatternDestroy()</tt> if
you no longer need to access it.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>scale</tt></i>:</span></td><td> The scale at which this font will be used. The
- scale is given by multiplying the font matrix (see
- <a href="cairo-cairo-t.html#cairo-transform-font"><tt class="function">cairo_transform_font()</tt></a>) by the current transformation matrix.
- The translation elements of the resulting matrix are ignored.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> a newly created <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a>. Free with
- <a href="cairo-cairo-t.html#cairo-font-destroy"><tt class="function">cairo_font_destroy()</tt></a> when you are done using it.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2718712"></a><h3><a name="cairo-ft-font-create-for-ft-face"></a>cairo_ft_font_create_for_ft_face ()</h3><a class="indexterm" name="id2718720"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* cairo_ft_font_create_for_ft_face
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a newly created <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>. Free with
+ <a href="cairo-Fonts.html#cairo-font-face-destroy"><tt class="function">cairo_font_face_destroy()</tt></a> when you are done using it.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2930778"></a><h3>
+<a name="cairo-ft-font-face-create-for-ft-face"></a>cairo_ft_font_face_create_for_ft_face ()</h3>
+<a class="indexterm" name="id2930789"></a><pre class="programlisting"><a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* cairo_ft_font_face_create_for_ft_face
(FT_Face face,
- int load_flags,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *scale);</pre><p>
-Creates a new font forthe FreeType font backend from a pre-opened
-FreeType face. This font can then be used with <a href="cairo-cairo-t.html#cairo-set-font"><tt class="function">cairo_set_font()</tt></a>,
-<a href="cairo-cairo-t.html#cairo-font-glyph-extents"><tt class="function">cairo_font_glyph_extents()</tt></a>, or FreeType backend specific
-functions like <a href="cairo-FreeType-Fonts.html#cairo-ft-font-lock-face"><tt class="function">cairo_ft_font_lock_face()</tt></a> Cairo will determine the
-pixel size and transformation from the <i class="parameter"><tt>scale</tt></i> parameter and call
-<tt class="function">FT_Set_Transform()</tt> and <tt class="function">FT_Set_Pixel_Sizes()</tt>.</p><p>
+ int load_flags);</pre>
+<p>
+Creates a new font face for the FreeType font backend from a pre-opened
+FreeType face. This font can then be used with
+<a href="cairo-cairo-t.html#cairo-set-font-face"><tt class="function">cairo_set_font_face()</tt></a> or <tt class="function">cairo_font_create()</tt>. The <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>
+returned from <tt class="function">cairo_font_create()</tt> is also for the FreeType backend
+and can be used with functions such as <tt class="function">cairo_ft_font_lock_face()</tt>.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>face</tt></i>:</span></td><td> A FreeType face object, already opened. This must
- be kept around until the font object's refcount drops to
- zero and it is freed. The font object can be kept alive by
- internal caching, so it's safest to keep the face object
- around forever.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>load_flags</tt></i>:</span></td><td> The flags to pass to FT_Load_Glyph when loading
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>face</tt></i>&#160;:</span></td>
+<td> A FreeType face object, already opened. This must
+ be kept around until the face's refcount drops to
+ zero and it is freed. Since the face may be referenced
+ internally to Cairo, the best way to determine when it
+ is safe to free the face is to pass a
+ <a href="cairo-cairo-t.html#cairo-destroy-func-t"><span class="type">cairo_destroy_func_t</span></a> to <a href="cairo-Fonts.html#cairo-font-face-set-user-data"><tt class="function">cairo_font_face_set_user_data()</tt></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>load_flags</tt></i>&#160;:</span></td>
+<td> The flags to pass to FT_Load_Glyph when loading
glyphs from the font. These flags control aspects of
rendering such as hinting and antialiasing. See the FreeType
docs for full information.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>scale</tt></i>:</span></td><td> The scale at which this font will be used. The
- scale is given by multiplying the font matrix (see
- <a href="cairo-cairo-t.html#cairo-transform-font"><tt class="function">cairo_transform_font()</tt></a>) by the current transformation matrix.
- The translation elements of the resulting matrix are ignored.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> a newly created <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a>. Free with
- <a href="cairo-cairo-t.html#cairo-font-destroy"><tt class="function">cairo_font_destroy()</tt></a> when you are done using it.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2741214"></a><h3><a name="cairo-ft-font-lock-face"></a>cairo_ft_font_lock_face ()</h3><a class="indexterm" name="id2741222"></a><pre class="programlisting">FT_Face cairo_ft_font_lock_face (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *ft_font);</pre><p>
-<a href="cairo-FreeType-Fonts.html#cairo-ft-font-lock-face"><tt class="function">cairo_ft_font_lock_face()</tt></a> gets the <span class="type">FT_Face</span> object from a FreeType
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a newly created <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>. Free with
+ <a href="cairo-Fonts.html#cairo-font-face-destroy"><tt class="function">cairo_font_face_destroy()</tt></a> when you are done using it.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2944636"></a><h3>
+<a name="cairo-ft-scaled-font-lock-face"></a>cairo_ft_scaled_font_lock_face ()</h3>
+<a class="indexterm" name="id2944645"></a><pre class="programlisting">FT_Face cairo_ft_scaled_font_lock_face (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);</pre>
+<p>
+<tt class="function">cairo_ft_font_lock_face()</tt> gets the <span class="type">FT_Face</span> object from a FreeType
backend font and scales it appropriately for the font. You must
-release the face with <a href="cairo-FreeType-Fonts.html#cairo-ft-font-unlock-face"><tt class="function">cairo_ft_font_unlock_face()</tt></a>
+release the face with <tt class="function">cairo_ft_font_unlock_face()</tt>
when you are done using it. Since the <span class="type">FT_Face</span> object can be
-shared between multiple <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> objects, you must not
+shared between multiple <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> objects, you must not
lock any other font objects until you unlock this one. A count is
-kept of the number of times <a href="cairo-FreeType-Fonts.html#cairo-ft-font-lock-face"><tt class="function">cairo_ft_font_lock_face()</tt></a> is
-called. <a href="cairo-FreeType-Fonts.html#cairo-ft-font-unlock-face"><tt class="function">cairo_ft_font_unlock_face()</tt></a> must be called the same number
+kept of the number of times <tt class="function">cairo_ft_font_lock_face()</tt> is
+called. <tt class="function">cairo_ft_font_unlock_face()</tt> must be called the same number
of times.
-</p><p>
+</p>
+<p>
You must be careful when using this function in a library or in a
threaded application, because other threads may lock faces that
share the same <span class="type">FT_Face</span> object. For this reason, you must call
<tt class="function">cairo_ft_lock()</tt> before locking any face objects, and
<tt class="function">cairo_ft_unlock()</tt> after you are done. (These functions are not yet
implemented, so this function cannot be currently safely used in a
-threaded application.)</p><p>
+threaded application.)</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>ft_font</tt></i>:</span></td><td> A <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> from the FreeType font backend. Such an
- object can be created with <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create"><tt class="function">cairo_ft_font_create()</tt></a> or
- <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create-for-ft-face"><tt class="function">cairo_ft_font_create_for_ft_face()</tt></a>. On some platforms the font from
- <a href="cairo-cairo-t.html#cairo-current-font"><tt class="function">cairo_current_font()</tt></a> will also be a FreeType font, but using this
- functionality with fonts you don't create yourself is not
- recommended.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> The <span class="type">FT_Face</span> object for <i class="parameter"><tt>font</tt></i>, scaled appropriately.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2737382"></a><h3><a name="cairo-ft-font-unlock-face"></a>cairo_ft_font_unlock_face ()</h3><a class="indexterm" name="id2737391"></a><pre class="programlisting">void cairo_ft_font_unlock_face (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *ft_font);</pre><p>
-Releases a face obtained with <a href="cairo-FreeType-Fonts.html#cairo-ft-font-lock-face"><tt class="function">cairo_ft_font_lock_face()</tt></a>. See the
-documentation for that function for full details.</p><p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> A <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> from the FreeType font backend. Such an
+ object can be created by calling <a href="cairo-Fonts.html#cairo-scaled-font-create"><tt class="function">cairo_scaled_font_create()</tt></a> on a
+ FreeType backend font face (see <a href="cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-pattern"><tt class="function">cairo_ft_font_face_create_for_pattern()</tt></a>,
+ <tt class="function">cairo_ft_font_face_create_for_face()</tt>).
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> The <span class="type">FT_Face</span> object for <i class="parameter"><tt>font</tt></i>, scaled appropriately.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2973551"></a><h3>
+<a name="cairo-ft-scaled-font-unlock-face"></a>cairo_ft_scaled_font_unlock_face ()</h3>
+<a class="indexterm" name="id2973562"></a><pre class="programlisting">void cairo_ft_scaled_font_unlock_face
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);</pre>
+<p>
+Releases a face obtained with <tt class="function">cairo_ft_font_lock_face()</tt>. See the
+documentation for that function for full details.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>ft_font</tt></i>:</span></td><td> A <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> from the FreeType font backend. Such an
- object can be created with <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create"><tt class="function">cairo_ft_font_create()</tt></a> or
- <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create-for-ft-face"><tt class="function">cairo_ft_font_create_for_ft_face()</tt></a>. On some platforms the font from
- <a href="cairo-cairo-t.html#cairo-current-font"><tt class="function">cairo_current_font()</tt></a> will also be a FreeType font, but using this
- functionality with fonts you don't create yourself is not
- recommended.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2737467"></a><h3><a name="cairo-ft-font-get-pattern"></a>cairo_ft_font_get_pattern ()</h3><a class="indexterm" name="id2737476"></a><pre class="programlisting">FcPattern* cairo_ft_font_get_pattern (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *ft_font);</pre><p>
-<a href="cairo-FreeType-Fonts.html#cairo-ft-font-get-pattern"><tt class="function">cairo_ft_font_get_pattern()</tt></a> gets the <span class="type">FcPattern</span> for a FreeType
-backend font.
-</p><p>
-Return value: The <span class="type">FcPattenr</span> for <i class="parameter"><tt>font</tt></i>. The return value is owned
- by the font, so you must not modify it, and must call
- <tt class="function">FcPatternReference()</tt> to keep a persistant reference to the
- pattern. If the font was created with <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create-for-ft-face"><tt class="function">cairo_ft_font_create_for_ft_face()</tt></a></p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>ft_font</tt></i>:</span></td><td> A <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> from the FreeType font backend. Such an
- object can be created with <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create"><tt class="function">cairo_ft_font_create()</tt></a> or
- <a href="cairo-FreeType-Fonts.html#cairo-ft-font-create-for-ft-face"><tt class="function">cairo_ft_font_create_for_ft_face()</tt></a>. On some platforms the font from
- <a href="cairo-cairo-t.html#cairo-current-font"><tt class="function">cairo_current_font()</tt></a> will also be a FreeType font, but using this
- functionality with fonts you don't create yourself is not
- recommended.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td><tt class="literal">NULL</tt>.
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-ATSUI-Fonts.html"><b>&lt;&lt;ATSUI Fonts</b></a></td><td align="right"><a accesskey="n" href="cairo-Glitz-backend.html"><b>Glitz backend&gt;&gt;</b></a></td></tr></table></body></html>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> A <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> from the FreeType font backend. Such an
+ object can be created by calling <a href="cairo-Fonts.html#cairo-scaled-font-create"><tt class="function">cairo_scaled_font_create()</tt></a> on a
+ FreeType backend font face (see <a href="cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-pattern"><tt class="function">cairo_ft_font_face_create_for_pattern()</tt></a>,
+ <tt class="function">cairo_ft_font_face_create_for_face()</tt>).
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-ATSUI-Fonts.html"><b>&lt;&lt;&#160;ATSUI Fonts</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-Glitz-backend.html"><b>Glitz backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-Glitz-backend.html b/doc/public/html/cairo-Glitz-backend.html
index 7ebeb09..8aa7ad9 100644
--- a/doc/public/html/cairo-Glitz-backend.html
+++ b/doc/public/html/cairo-Glitz-backend.html
@@ -1,23 +1,88 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Glitz backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-FreeType-Fonts.html" title="FreeType Fonts"><link rel="next" href="cairo-PDF-Backend.html" title="PDF Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-FreeType-Fonts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-PDF-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-Glitz-backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">Glitz backend</span></h2><p>Glitz backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Glitz backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-FreeType-Fonts.html" title="FreeType Fonts">
+<link rel="next" href="cairo-PDF-Backend.html" title="PDF Backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-FreeType-Fonts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-PDF-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-Glitz-backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Glitz backend</span></h2>
+<p>Glitz backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-void <a href="cairo-Glitz-backend.html#cairo-set-target-glitz">cairo_set_target_glitz</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- glitz_surface_t *surface);
<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-Glitz-backend.html#cairo-glitz-surface-create">cairo_glitz_surface_create</a> (glitz_surface_t *surface);
-</pre></div><div class="refsect1" lang="en"><a name="id2691367"></a><h2>Description</h2><p>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2908709"></a><h2>Description</h2>
+<p>
-</p></div><div class="refsect1" lang="en"><a name="id2696554"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2696559"></a><h3><a name="cairo-set-target-glitz"></a>cairo_set_target_glitz ()</h3><a class="indexterm" name="id2696567"></a><pre class="programlisting">void cairo_set_target_glitz (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- glitz_surface_t *surface);</pre><p>
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2968352"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2975519"></a><h3>
+<a name="cairo-glitz-surface-create"></a>cairo_glitz_surface_create ()</h3>
+<a class="indexterm" name="id2968939"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_glitz_surface_create (glitz_surface_t *surface);</pre>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2741449"></a><h3><a name="cairo-glitz-surface-create"></a>cairo_glitz_surface_create ()</h3><a class="indexterm" name="id2741458"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_glitz_surface_create (glitz_surface_t *surface);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-FreeType-Fonts.html"><b>&lt;&lt;FreeType Fonts</b></a></td><td align="right"><a accesskey="n" href="cairo-PDF-Backend.html"><b>PDF Backend&gt;&gt;</b></a></td></tr></table></body></html>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-FreeType-Fonts.html"><b>&lt;&lt;&#160;FreeType Fonts</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-PDF-Backend.html"><b>PDF Backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-Microsoft-Windows-Backend.html b/doc/public/html/cairo-Microsoft-Windows-Backend.html
index 63e69ec..04bfa97 100644
--- a/doc/public/html/cairo-Microsoft-Windows-Backend.html
+++ b/doc/public/html/cairo-Microsoft-Windows-Backend.html
@@ -1,83 +1,240 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Microsoft Windows Backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-Quartz-Backend.html" title="Quartz Backend"><link rel="next" href="cairo-XCB-Backend.html" title="XCB Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-Quartz-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-XCB-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-Microsoft-Windows-Backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">Microsoft Windows Backend</span></h2><p>Microsoft Windows Backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Microsoft Windows Backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-Quartz-Backend.html" title="Quartz Backend">
+<link rel="next" href="cairo-XCB-Backend.html" title="XCB Backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-Quartz-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-XCB-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-Microsoft-Windows-Backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Microsoft Windows Backend</span></h2>
+<p>Microsoft Windows Backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-void <a href="cairo-Microsoft-Windows-Backend.html#cairo-set-target-win32">cairo_set_target_win32</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- HDC hdc);
<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-surface-create">cairo_win32_surface_create</a> (HDC hdc);
-<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-create-for-logfontw">cairo_win32_font_create_for_logfontw</a>
- (LOGFONTW *logfont,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *scale);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-select-font">cairo_win32_font_select_font</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font,
+<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-face-create-for-logfontw">cairo_win32_font_face_create_for_logfontw</a>
+ (LOGFONTW *logfont);
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-select-font">cairo_win32_scaled_font_select_font</a>
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font,
HDC hdc);
-void <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-done-font">cairo_win32_font_done_font</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);
-double <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-get-scale-factor">cairo_win32_font_get_scale_factor</a>
- (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);
-</pre></div><div class="refsect1" lang="en"><a name="id2731014"></a><h2>Description</h2><p>
-
-</p></div><div class="refsect1" lang="en"><a name="id2731024"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2731029"></a><h3><a name="cairo-set-target-win32"></a>cairo_set_target_win32 ()</h3><a class="indexterm" name="id2731038"></a><pre class="programlisting">void cairo_set_target_win32 (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- HDC hdc);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>hdc</tt></i>:</span></td><td>
-
+void <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-done-font">cairo_win32_scaled_font_done_font</a>
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);
+double <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-get-metrics-factor">cairo_win32_scaled_font_get_metrics_factor</a>
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2937432"></a><h2>Description</h2>
+<p>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2731088"></a><h3><a name="cairo-win32-surface-create"></a>cairo_win32_surface_create ()</h3><a class="indexterm" name="id2731096"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_win32_surface_create (HDC hdc);</pre><p>
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2937443"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2937449"></a><h3>
+<a name="cairo-win32-surface-create"></a>cairo_win32_surface_create ()</h3>
+<a class="indexterm" name="id2937458"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_win32_surface_create (HDC hdc);</pre>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>hdc</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>hdc</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2735228"></a><h3><a name="cairo-win32-font-create-for-logfontw"></a>cairo_win32_font_create_for_logfontw ()</h3><a class="indexterm" name="id2735236"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* cairo_win32_font_create_for_logfontw
- (LOGFONTW *logfont,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *scale);</pre><p>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2943496"></a><h3>
+<a name="cairo-win32-font-face-create-for-logfontw"></a>cairo_win32_font_face_create_for_logfontw ()</h3>
+<a class="indexterm" name="id2943506"></a><pre class="programlisting"><a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* cairo_win32_font_face_create_for_logfontw
+ (LOGFONTW *logfont);</pre>
+<p>
Creates a new font for the Win32 font backend based on a
<span class="type">LOGFONT</span>. This font can then be used with
-<a href="cairo-cairo-t.html#cairo-set-font"><tt class="function">cairo_set_font()</tt></a>, <a href="cairo-cairo-t.html#cairo-font-glyph-extents"><tt class="function">cairo_font_glyph_extents()</tt></a>, or FreeType backend
-specific functions like <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-select-font"><tt class="function">cairo_win32_font_select_font()</tt></a>.</p><p>
+<a href="cairo-cairo-t.html#cairo-set-font-face"><tt class="function">cairo_set_font_face()</tt></a> or <tt class="function">cairo_font_create()</tt>. The <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a>
+returned from <tt class="function">cairo_font_create()</tt> is also for the Win32 backend
+and can be used with functions such as <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-select-font"><tt class="function">cairo_win32_scaled_font_select_font()</tt></a>.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>logfont</tt></i>:</span></td><td> A <span class="type">LOGFONTW</span> structure specifying the font to use.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>logfont</tt></i>&#160;:</span></td>
+<td> A <span class="type">LOGFONTW</span> structure specifying the font to use.
The lfHeight, lfWidth, lfOrientation and lfEscapement
- fields of this structure are ignored; information from
- <i class="parameter"><tt>scale</tt></i> will be used instead.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>scale</tt></i>:</span></td><td> The scale at which this font will be used. The
- scale is given by multiplying the font matrix (see
- <a href="cairo-cairo-t.html#cairo-transform-font"><tt class="function">cairo_transform_font()</tt></a>) by the current transformation matrix.
- The translation elements of the resulting matrix are ignored.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> a newly created <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a>. Free with
- <a href="cairo-cairo-t.html#cairo-font-destroy"><tt class="function">cairo_font_destroy()</tt></a> when you are done using it.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2680481"></a><h3><a name="cairo-win32-font-select-font"></a>cairo_win32_font_select_font ()</h3><a class="indexterm" name="id2680492"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_win32_font_select_font (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font,
- HDC hdc);</pre><p>
+ fields of this structure are ignored.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a newly created <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>. Free with
+ <a href="cairo-Fonts.html#cairo-font-face-destroy"><tt class="function">cairo_font_face_destroy()</tt></a> when you are done using it.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2926688"></a><h3>
+<a name="cairo-win32-scaled-font-select-font"></a>cairo_win32_scaled_font_select_font ()</h3>
+<a class="indexterm" name="id2926698"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_win32_scaled_font_select_font
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font,
+ HDC hdc);</pre>
+<p>
Selects the font into the given device context and changes the
map mode and world transformation of the device context to match
that of the font. This function is intended for use when using
layout APIs such as Uniscribe to do text layout with the
-Cairo font. After finishing using the device context, you must call
-<a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-done-font"><tt class="function">cairo_win32_font_done_font()</tt></a> to release any resources allocated
+cairo font. After finishing using the device context, you must call
+<a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-done-font"><tt class="function">cairo_win32_scaled_font_done_font()</tt></a> to release any resources allocated
by this function.
-</p><p>
-See <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-get-scale-factor"><tt class="function">cairo_win32_font_get_scale_factor()</tt></a> for converting logical
+</p>
+<p>
+See <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-get-metrics-factor"><tt class="function">cairo_win32_scaled_font_get_metrics_factor()</tt></a> for converting logical
coordinates from the device context to font space.
-</p><p>
+</p>
+<p>
Normally, calls to <tt class="function">SaveDC()</tt> and <tt class="function">RestoreDC()</tt> would be made around
-the use of this function to preserve the original graphics state.</p><p>
+the use of this function to preserve the original graphics state.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td> A <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> from the Win32 font backend. Such an
- object can be created with <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-create-for-logfontw"><tt class="function">cairo_win32_font_create_for_logfontw()</tt></a>.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>hdc</tt></i>:</span></td><td> a device context
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt> if the operation succeeded.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> A <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> from the Win32 font backend. Such an
+ object can be created with <tt class="function">cairo_win32_scaled_font_create_for_logfontw()</tt>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>hdc</tt></i>&#160;:</span></td>
+<td> a device context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt> if the operation succeeded.
otherwise an error such as <tt class="literal">CAIRO_STATUS_NO_MEMORY</tt> and
the device context is unchanged.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2680622"></a><h3><a name="cairo-win32-font-done-font"></a>cairo_win32_font_done_font ()</h3><a class="indexterm" name="id2680631"></a><pre class="programlisting">void cairo_win32_font_done_font (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);</pre><p>
-Releases any resources allocated by <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-select-font"><tt class="function">cairo_win32_font_select_font()</tt></a></p><p>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2926866"></a><h3>
+<a name="cairo-win32-scaled-font-done-font"></a>cairo_win32_scaled_font_done_font ()</h3>
+<a class="indexterm" name="id2926878"></a><pre class="programlisting">void cairo_win32_scaled_font_done_font
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);</pre>
+<p>
+Releases any resources allocated by <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-select-font"><tt class="function">cairo_win32_scaled_font_select_font()</tt></a></p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td> A <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> from the Win32 font backend.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2680683"></a><h3><a name="cairo-win32-font-get-scale-factor"></a>cairo_win32_font_get_scale_factor ()</h3><a class="indexterm" name="id2680695"></a><pre class="programlisting">double cairo_win32_font_get_scale_factor
- (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);</pre><p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> A <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> from the Win32 font backend.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2970197"></a><h3>
+<a name="cairo-win32-scaled-font-get-metrics-factor"></a>cairo_win32_scaled_font_get_metrics_factor ()</h3>
+<a class="indexterm" name="id2970209"></a><pre class="programlisting">double cairo_win32_scaled_font_get_metrics_factor
+ (<a href="cairo-Fonts.html#cairo-scaled-font-t">cairo_scaled_font_t</a> *scaled_font);</pre>
+<p>
Gets a scale factor between logical coordinates in the coordinate
-space used by <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-select-font"><tt class="function">cairo_win32_font_select_font()</tt></a> and font space coordinates.</p><p>
+space used by <a href="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-select-font"><tt class="function">cairo_win32_scaled_font_select_font()</tt></a> (that is, the
+coordinate system used by the Windows functions to return metrics) and
+font space coordinates.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> from the Win32 font backend
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> factor to multiply logical units by to get font space
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>scaled_font</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-scaled-font-t"><span class="type">cairo_scaled_font_t</span></a> from the Win32 font backend
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> factor to multiply logical units by to get font space
coordinates.
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-Quartz-Backend.html"><b>&lt;&lt;Quartz Backend</b></a></td><td align="right"><a accesskey="n" href="cairo-XCB-Backend.html"><b>XCB Backend&gt;&gt;</b></a></td></tr></table></body></html>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-Quartz-Backend.html"><b>&lt;&lt;&#160;Quartz Backend</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-XCB-Backend.html"><b>XCB Backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-PDF-Backend.html b/doc/public/html/cairo-PDF-Backend.html
index 2824b74..a3c781a 100644
--- a/doc/public/html/cairo-PDF-Backend.html
+++ b/doc/public/html/cairo-PDF-Backend.html
@@ -1,47 +1,198 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PDF Backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-Glitz-backend.html" title="Glitz backend"><link rel="next" href="cairo-PNG-Backend.html" title="PNG Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-Glitz-backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-PNG-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-PDF-Backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">PDF Backend</span></h2><p>PDF Backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
-
-
-
-void <a href="cairo-PDF-Backend.html#cairo-set-target-pdf">cairo_set_target_pdf</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
-<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PDF-Backend.html#cairo-pdf-surface-create">cairo_pdf_surface_create</a> (FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
-</pre></div><div class="refsect1" lang="en"><a name="id2736241"></a><h2>Description</h2><p>
-
-</p></div><div class="refsect1" lang="en"><a name="id2736251"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2736256"></a><h3><a name="cairo-set-target-pdf"></a>cairo_set_target_pdf ()</h3><a class="indexterm" name="id2736264"></a><pre class="programlisting">void cairo_set_target_pdf (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>file</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width_inches</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height_inches</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x_pixels_per_inch</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y_pixels_per_inch</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2720822"></a><h3><a name="cairo-pdf-surface-create"></a>cairo_pdf_surface_create ()</h3><a class="indexterm" name="id2720830"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_pdf_surface_create (FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>file</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width_inches</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height_inches</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x_pixels_per_inch</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y_pixels_per_inch</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-Glitz-backend.html"><b>&lt;&lt;Glitz backend</b></a></td><td align="right"><a accesskey="n" href="cairo-PNG-Backend.html"><b>PNG Backend&gt;&gt;</b></a></td></tr></table></body></html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>PDF Backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-Glitz-backend.html" title="Glitz backend">
+<link rel="next" href="cairo-PNG-Backend.html" title="PNG Backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-Glitz-backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-PNG-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-PDF-Backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">PDF Backend</span></h2>
+<p>PDF Backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PDF-Backend.html#cairo-pdf-surface-create">cairo_pdf_surface_create</a> (const char *filename,
+ double width_in_points,
+ double height_in_points);
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PDF-Backend.html#cairo-pdf-surface-create-for-stream">cairo_pdf_surface_create_for_stream</a>
+ (<a href="cairo-cairo-t.html#cairo-write-func-t">cairo_write_func_t</a> write_func,
+ void *closure,
+ double width_in_points,
+ double height_in_points);
+void <a href="cairo-PDF-Backend.html#cairo-pdf-surface-set-dpi">cairo_pdf_surface_set_dpi</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x_dpi,
+ double y_dpi);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2975158"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2975169"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2975175"></a><h3>
+<a name="cairo-pdf-surface-create"></a>cairo_pdf_surface_create ()</h3>
+<a class="indexterm" name="id2975184"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_pdf_surface_create (const char *filename,
+ double width_in_points,
+ double height_in_points);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>filename</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2944378"></a><h3>
+<a name="cairo-pdf-surface-create-for-stream"></a>cairo_pdf_surface_create_for_stream ()</h3>
+<a class="indexterm" name="id2944387"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_pdf_surface_create_for_stream
+ (<a href="cairo-cairo-t.html#cairo-write-func-t">cairo_write_func_t</a> write_func,
+ void *closure,
+ double width_in_points,
+ double height_in_points);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>write_func</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>closure</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2973720"></a><h3>
+<a name="cairo-pdf-surface-set-dpi"></a>cairo_pdf_surface_set_dpi ()</h3>
+<a class="indexterm" name="id2973729"></a><pre class="programlisting">void cairo_pdf_surface_set_dpi (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x_dpi,
+ double y_dpi);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x_dpi</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y_dpi</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-Glitz-backend.html"><b>&lt;&lt;&#160;Glitz backend</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-PNG-Backend.html"><b>PNG Backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-PNG-Backend.html b/doc/public/html/cairo-PNG-Backend.html
index aea978c..3562c88 100644
--- a/doc/public/html/cairo-PNG-Backend.html
+++ b/doc/public/html/cairo-PNG-Backend.html
@@ -1,41 +1,229 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PNG Backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-PDF-Backend.html" title="PDF Backend"><link rel="next" href="cairo-PS-Backend.html" title="PS Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-PDF-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-PS-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-PNG-Backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">PNG Backend</span></h2><p>PNG Backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>PNG Backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-PDF-Backend.html" title="PDF Backend">
+<link rel="next" href="cairo-PS-Backend.html" title="PS Backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-PDF-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-PS-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-PNG-Backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">PNG Backend</span></h2>
+<p>PNG Backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-void <a href="cairo-PNG-Backend.html#cairo-set-target-png">cairo_set_target_png</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- FILE *file,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height);
-<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PNG-Backend.html#cairo-png-surface-create">cairo_png_surface_create</a> (FILE *file,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height);
-</pre></div><div class="refsect1" lang="en"><a name="id2730876"></a><h2>Description</h2><p>
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PNG-Backend.html#cairo-image-surface-create-from-png">cairo_image_surface_create_from_png</a>
+ (const char *filename);
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PNG-Backend.html#cairo-image-surface-create-from-png-stream">cairo_image_surface_create_from_png_stream</a>
+ (<a href="cairo-cairo-t.html#cairo-read-func-t">cairo_read_func_t</a> read_func,
+ void *closure);
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-PNG-Backend.html#cairo-surface-write-to-png">cairo_surface_write_to_png</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ const char *filename);
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-PNG-Backend.html#cairo-surface-write-to-png-stream">cairo_surface_write_to_png_stream</a>
+ (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ <a href="cairo-cairo-t.html#cairo-write-func-t">cairo_write_func_t</a> write_func,
+ void *closure);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2972224"></a><h2>Description</h2>
+<p>
-</p></div><div class="refsect1" lang="en"><a name="id2730885"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2730891"></a><h3><a name="cairo-set-target-png"></a>cairo_set_target_png ()</h3><a class="indexterm" name="id2730899"></a><pre class="programlisting">void cairo_set_target_png (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- FILE *file,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height);</pre><p>
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2972235"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2972242"></a><h3>
+<a name="cairo-image-surface-create-from-png"></a>cairo_image_surface_create_from_png ()</h3>
+<a class="indexterm" name="id2972250"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_image_surface_create_from_png
+ (const char *filename);</pre>
+<p>
+Creates a new image surface and initializes the contents to the
+given PNG file.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>file</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>filename</tt></i>&#160;:</span></td>
+<td> name of PNG file to load
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a new <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> initialized with the contents
+of the PNG file or <tt class="literal">NULL</tt> if the file is not a valid PNG file or
+memory could not be allocated for the operation.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2973862"></a><h3>
+<a name="cairo-image-surface-create-from-png-stream"></a>cairo_image_surface_create_from_png_stream ()</h3>
+<a class="indexterm" name="id2973873"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_image_surface_create_from_png_stream
+ (<a href="cairo-cairo-t.html#cairo-read-func-t">cairo_read_func_t</a> read_func,
+ void *closure);</pre>
+<p>
+Creates a new image surface from PNG data read incrementally
+via the <i class="parameter"><tt>read_func</tt></i> function.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>read_func</tt></i>&#160;:</span></td>
+<td> function called to read the data of the file
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>closure</tt></i>&#160;:</span></td>
+<td> data to pass to <i class="parameter"><tt>read_func</tt></i>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a new <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> initialized with the contents
+of the PNG file or <tt class="literal">NULL</tt> if the data read is not a valid PNG image or
+memory could not be allocated for the operation.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2970718"></a><h3>
+<a name="cairo-surface-write-to-png"></a>cairo_surface_write_to_png ()</h3>
+<a class="indexterm" name="id2970727"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_write_to_png (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ const char *filename);</pre>
+<p>
+Writes the contents of <i class="parameter"><tt>surface</tt></i> to a new file <i class="parameter"><tt>filename</tt></i> as a PNG
+image.</p>
+<p>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2742406"></a><h3><a name="cairo-png-surface-create"></a>cairo_png_surface_create ()</h3><a class="indexterm" name="id2742414"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_png_surface_create (FILE *file,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height);</pre><p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> with pixel contents
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>filename</tt></i>&#160;:</span></td>
+<td> the name of a file to write to
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> CAIRO_STATUS_SUCCESS if the PNG file was written
+successfully. Otherwise, CAIRO_STATUS_NO_MEMORY if memory could not
+be allocated for the operation or
+CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have
+pixel contents, or CAIRO_STATUS_WRITE_ERROR if an I/O error occurs
+while attempting to write the file.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2970831"></a><h3>
+<a name="cairo-surface-write-to-png-stream"></a>cairo_surface_write_to_png_stream ()</h3>
+<a class="indexterm" name="id2970841"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_write_to_png_stream
+ (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ <a href="cairo-cairo-t.html#cairo-write-func-t">cairo_write_func_t</a> write_func,
+ void *closure);</pre>
+<p>
+Writes the image surface to the write function.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>file</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-PDF-Backend.html"><b>&lt;&lt;PDF Backend</b></a></td><td align="right"><a accesskey="n" href="cairo-PS-Backend.html"><b>PS Backend&gt;&gt;</b></a></td></tr></table></body></html>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> with pixel contents
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>write_func</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-write-func-t"><span class="type">cairo_write_func_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>closure</tt></i>&#160;:</span></td>
+<td> closure data for the write function
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> CAIRO_STATUS_SUCCESS if the PNG file was written
+successfully. Otherwise, CAIRO_STATUS_NO_MEMORY is returned if
+memory could not be allocated for the operation,
+CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have
+pixel contents.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-PDF-Backend.html"><b>&lt;&lt;&#160;PDF Backend</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-PS-Backend.html"><b>PS Backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-PS-Backend.html b/doc/public/html/cairo-PS-Backend.html
index cf2c53c..361b8c6 100644
--- a/doc/public/html/cairo-PS-Backend.html
+++ b/doc/public/html/cairo-PS-Backend.html
@@ -1,51 +1,198 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PS Backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-PNG-Backend.html" title="PNG Backend"><link rel="next" href="cairo-Quartz-Backend.html" title="Quartz Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-PNG-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-Quartz-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-PS-Backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">PS Backend</span></h2><p>PS Backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
-
-
-
-void <a href="cairo-PS-Backend.html#cairo-set-target-ps">cairo_set_target_ps</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
-<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PS-Backend.html#cairo-ps-surface-create">cairo_ps_surface_create</a> (FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
-</pre></div><div class="refsect1" lang="en"><a name="id2742152"></a><h2>Description</h2><p>
-
-</p></div><div class="refsect1" lang="en"><a name="id2742161"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2742167"></a><h3><a name="cairo-set-target-ps"></a>cairo_set_target_ps ()</h3><a class="indexterm" name="id2742175"></a><pre class="programlisting">void cairo_set_target_ps (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);</pre><p>
-Directs output for a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> to a postscript file. The file must
-be kept open until the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> is destroyed or set to have a
-different target, and then must be closed by the application.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>file</tt></i>:</span></td><td> an open, writeable file
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width_inches</tt></i>:</span></td><td> width of the output page, in inches
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height_inches</tt></i>:</span></td><td> height of the output page, in inches
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x_pixels_per_inch</tt></i>:</span></td><td> X resolution to use for image fallbacks;
- not all Cairo drawing can be represented in a postscript
- file, so Cairo will write out images for some portions
- of the output.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y_pixels_per_inch</tt></i>:</span></td><td> Y resolution to use for image fallbacks.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2741578"></a><h3><a name="cairo-ps-surface-create"></a>cairo_ps_surface_create ()</h3><a class="indexterm" name="id2741587"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_ps_surface_create (FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>file</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width_inches</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height_inches</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x_pixels_per_inch</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y_pixels_per_inch</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-PNG-Backend.html"><b>&lt;&lt;PNG Backend</b></a></td><td align="right"><a accesskey="n" href="cairo-Quartz-Backend.html"><b>Quartz Backend&gt;&gt;</b></a></td></tr></table></body></html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>PS Backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-PNG-Backend.html" title="PNG Backend">
+<link rel="next" href="cairo-Quartz-Backend.html" title="Quartz Backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-PNG-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-Quartz-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-PS-Backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">PS Backend</span></h2>
+<p>PS Backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PS-Backend.html#cairo-ps-surface-create">cairo_ps_surface_create</a> (const char *filename,
+ double width_in_points,
+ double height_in_points);
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-PS-Backend.html#cairo-ps-surface-create-for-stream">cairo_ps_surface_create_for_stream</a>
+ (<a href="cairo-cairo-t.html#cairo-write-func-t">cairo_write_func_t</a> write_func,
+ void *closure,
+ double width_in_points,
+ double height_in_points);
+void <a href="cairo-PS-Backend.html#cairo-ps-surface-set-dpi">cairo_ps_surface_set_dpi</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x_dpi,
+ double y_dpi);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2975361"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2975372"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2975378"></a><h3>
+<a name="cairo-ps-surface-create"></a>cairo_ps_surface_create ()</h3>
+<a class="indexterm" name="id2975387"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_ps_surface_create (const char *filename,
+ double width_in_points,
+ double height_in_points);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>filename</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2975614"></a><h3>
+<a name="cairo-ps-surface-create-for-stream"></a>cairo_ps_surface_create_for_stream ()</h3>
+<a class="indexterm" name="id2975623"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_ps_surface_create_for_stream
+ (<a href="cairo-cairo-t.html#cairo-write-func-t">cairo_write_func_t</a> write_func,
+ void *closure,
+ double width_in_points,
+ double height_in_points);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>write_func</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>closure</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height_in_points</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2970062"></a><h3>
+<a name="cairo-ps-surface-set-dpi"></a>cairo_ps_surface_set_dpi ()</h3>
+<a class="indexterm" name="id2970071"></a><pre class="programlisting">void cairo_ps_surface_set_dpi (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x_dpi,
+ double y_dpi);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x_dpi</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y_dpi</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-PNG-Backend.html"><b>&lt;&lt;&#160;PNG Backend</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-Quartz-Backend.html"><b>Quartz Backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-Quartz-Backend.html b/doc/public/html/cairo-Quartz-Backend.html
index 6c45f77..d5ecf08 100644
--- a/doc/public/html/cairo-Quartz-Backend.html
+++ b/doc/public/html/cairo-Quartz-Backend.html
@@ -1,37 +1,106 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Quartz Backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-PS-Backend.html" title="PS Backend"><link rel="next" href="cairo-Microsoft-Windows-Backend.html" title="Microsoft Windows Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-PS-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-Microsoft-Windows-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-Quartz-Backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">Quartz Backend</span></h2><p>Quartz Backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quartz Backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-PS-Backend.html" title="PS Backend">
+<link rel="next" href="cairo-Microsoft-Windows-Backend.html" title="Microsoft Windows Backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-PS-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-Microsoft-Windows-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-Quartz-Backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Quartz Backend</span></h2>
+<p>Quartz Backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-void <a href="cairo-Quartz-Backend.html#cairo-set-target-quartz-context">cairo_set_target_quartz_context</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- CGContextRef context,
- int width,
- int height);
<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-Quartz-Backend.html#cairo-quartz-surface-create">cairo_quartz_surface_create</a>
(CGContextRef context,
int width,
int height);
-</pre></div><div class="refsect1" lang="en"><a name="id2719460"></a><h2>Description</h2><p>
-
-</p></div><div class="refsect1" lang="en"><a name="id2719470"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2719475"></a><h3><a name="cairo-set-target-quartz-context"></a>cairo_set_target_quartz_context ()</h3><a class="indexterm" name="id2719484"></a><pre class="programlisting">void cairo_set_target_quartz_context (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- CGContextRef context,
- int width,
- int height);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>context</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
-
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2978366"></a><h2>Description</h2>
+<p>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2718783"></a><h3><a name="cairo-quartz-surface-create"></a>cairo_quartz_surface_create ()</h3><a class="indexterm" name="id2718791"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_quartz_surface_create
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2969823"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2969829"></a><h3>
+<a name="cairo-quartz-surface-create"></a>cairo_quartz_surface_create ()</h3>
+<a class="indexterm" name="id2969837"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_quartz_surface_create
(CGContextRef context,
int width,
- int height);</pre><p>
+ int height);</pre>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>context</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>context</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-PS-Backend.html"><b>&lt;&lt;PS Backend</b></a></td><td align="right"><a accesskey="n" href="cairo-Microsoft-Windows-Backend.html"><b>Microsoft Windows Backend&gt;&gt;</b></a></td></tr></table></body></html>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-PS-Backend.html"><b>&lt;&lt;&#160;PS Backend</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-Microsoft-Windows-Backend.html"><b>Microsoft Windows Backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-XCB-Backend.html b/doc/public/html/cairo-XCB-Backend.html
index 73c0397..a470ee5 100644
--- a/doc/public/html/cairo-XCB-Backend.html
+++ b/doc/public/html/cairo-XCB-Backend.html
@@ -1,25 +1,233 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>XCB Backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-Microsoft-Windows-Backend.html" title="Microsoft Windows Backend"><link rel="next" href="cairo-XLib-Backend.html" title="XLib Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-Microsoft-Windows-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-XLib-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-XCB-Backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">XCB Backend</span></h2><p>XCB Backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>XCB Backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-Microsoft-Windows-Backend.html" title="Microsoft Windows Backend">
+<link rel="next" href="cairo-XLib-Backend.html" title="XLib Backend">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-Microsoft-Windows-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-XLib-Backend.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-XCB-Backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">XCB Backend</span></h2>
+<p>XCB Backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-void <a href="cairo-XCB-Backend.html#cairo-set-target-xcb">cairo_set_target_xcb</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- XCBConnection *dpy,
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-XCB-Backend.html#cairo-xcb-surface-create">cairo_xcb_surface_create</a> (XCBConnection *c,
XCBDRAWABLE drawable,
XCBVISUALTYPE *visual,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format);
-</pre></div><div class="refsect1" lang="en"><a name="id2731419"></a><h2>Description</h2><p>
+ int width,
+ int height);
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-XCB-Backend.html#cairo-xcb-surface-create-for-bitmap">cairo_xcb_surface_create_for_bitmap</a>
+ (XCBConnection *c,
+ XCBPIXMAP bitmap,
+ int width,
+ int height);
+void <a href="cairo-XCB-Backend.html#cairo-xcb-surface-set-size">cairo_xcb_surface_set_size</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ int width,
+ int height);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2970367"></a><h2>Description</h2>
+<p>
-</p></div><div class="refsect1" lang="en"><a name="id2682143"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2682148"></a><h3><a name="cairo-set-target-xcb"></a>cairo_set_target_xcb ()</h3><a class="indexterm" name="id2682156"></a><pre class="programlisting">void cairo_set_target_xcb (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- XCBConnection *dpy,
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2970379"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2970385"></a><h3>
+<a name="cairo-xcb-surface-create"></a>cairo_xcb_surface_create ()</h3>
+<a class="indexterm" name="id2970394"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_xcb_surface_create (XCBConnection *c,
XCBDRAWABLE drawable,
XCBVISUALTYPE *visual,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format);</pre><p>
+ int width,
+ int height);</pre>
+<p>
+Creates an XCB surface that draws to the given drawable.
+The way that colors are represented in the drawable is specified
+by the provided visual.
+</p>
+<p>
+NOTE: If <i class="parameter"><tt>drawable</tt></i> is a window, then the function
+cairo_xcb_surface_set_size must be called whenever the size of the
+window changes.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dpy</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>drawable</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>visual</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>c</tt></i>&#160;:</span></td>
+<td> an XCB connection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>drawable</tt></i>&#160;:</span></td>
+<td> an XCB drawable
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>visual</tt></i>&#160;:</span></td>
+<td> the visual to use for drawing to <i class="parameter"><tt>drawable</tt></i>. The depth
+ of the visual must match the depth of the drawable.
+ Currently, only TrueColor visuals are fully supported.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> the current width of <i class="parameter"><tt>drawable</tt></i>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> the current height of <i class="parameter"><tt>drawable</tt></i>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the newly created surface
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2978879"></a><h3>
+<a name="cairo-xcb-surface-create-for-bitmap"></a>cairo_xcb_surface_create_for_bitmap ()</h3>
+<a class="indexterm" name="id2978888"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_xcb_surface_create_for_bitmap
+ (XCBConnection *c,
+ XCBPIXMAP bitmap,
+ int width,
+ int height);</pre>
+<p>
+Creates an XCB surface that draws to the given bitmap.
+This will be drawn to as a CAIRO_FORMAT_A1 object.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>c</tt></i>&#160;:</span></td>
+<td> an XCB connection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>bitmap</tt></i>&#160;:</span></td>
+<td> an XCB Pixmap (a depth-1 pixmap)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> the current width of <i class="parameter"><tt>bitmap</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> the current height of <i class="parameter"><tt>bitmap</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the newly created surface
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2979025"></a><h3>
+<a name="cairo-xcb-surface-set-size"></a>cairo_xcb_surface_set_size ()</h3>
+<a class="indexterm" name="id2979034"></a><pre class="programlisting">void cairo_xcb_surface_set_size (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ int width,
+ int height);</pre>
+<p>
+Informs cairo of the new size of the XCB drawable underlying the
+surface. For a surface created for a window (rather than a pixmap),
+this function must be called each time the size of the window
+changes. (For a subwindow, you are normally resizing the window
+yourself, but for a toplevel window, it is necessary to listen for
+ConfigureNotify events.)
+</p>
+<p>
+A pixmap can never change size, so it is never necessary to call
+this function on a surface created for a pixmap.</p>
+<p>
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-Microsoft-Windows-Backend.html"><b>&lt;&lt;Microsoft Windows Backend</b></a></td><td align="right"><a accesskey="n" href="cairo-XLib-Backend.html"><b>XLib Backend&gt;&gt;</b></a></td></tr></table></body></html>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> for the XCB backend
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> the new width of the surface
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> the new height of the surface
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-Microsoft-Windows-Backend.html"><b>&lt;&lt;&#160;Microsoft Windows Backend</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-XLib-Backend.html"><b>XLib Backend&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-XLib-Backend.html b/doc/public/html/cairo-XLib-Backend.html
index bbfcf0d..aec063c 100644
--- a/doc/public/html/cairo-XLib-Backend.html
+++ b/doc/public/html/cairo-XLib-Backend.html
@@ -1,45 +1,233 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>XLib Backend</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-XCB-Backend.html" title="XCB Backend"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-XCB-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th></tr></table><div class="refentry" lang="en"><a name="cairo-XLib-Backend"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">XLib Backend</span></h2><p>XLib Backend &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>XLib Backend</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-XCB-Backend.html" title="XCB Backend">
+<link rel="next" href="ix01.html" title="Index">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-XCB-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-XLib-Backend"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">XLib Backend</span></h2>
+<p>XLib Backend &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
-void <a href="cairo-XLib-Backend.html#cairo-set-target-drawable">cairo_set_target_drawable</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- Display *dpy,
- Drawable drawable);
<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-XLib-Backend.html#cairo-xlib-surface-create">cairo_xlib_surface_create</a> (Display *dpy,
Drawable drawable,
Visual *visual,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- Colormap colormap);
-</pre></div><div class="refsect1" lang="en"><a name="id2739388"></a><h2>Description</h2><p>
+ int width,
+ int height);
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-XLib-Backend.html#cairo-xlib-surface-create-for-bitmap">cairo_xlib_surface_create_for_bitmap</a>
+ (Display *dpy,
+ Pixmap bitmap,
+ int width,
+ int height);
+void <a href="cairo-XLib-Backend.html#cairo-xlib-surface-set-size">cairo_xlib_surface_set_size</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ int width,
+ int height);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2979126"></a><h2>Description</h2>
+<p>
-</p></div><div class="refsect1" lang="en"><a name="id2739397"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2739403"></a><h3><a name="cairo-set-target-drawable"></a>cairo_set_target_drawable ()</h3><a class="indexterm" name="id2739411"></a><pre class="programlisting">void cairo_set_target_drawable (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- Display *dpy,
- Drawable drawable);</pre><p>
-Directs output for a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> to an Xlib drawable. <i class="parameter"><tt>drawable</tt></i> must
-be a Window or Pixmap on the default screen of <i class="parameter"><tt>dpy</tt></i> using the
-default colormap and visual. Using this function is slow because
-the function must retrieve information about <i class="parameter"><tt>drawable</tt></i> from the X
-server.
-
-The combination of <a href="cairo-XLib-Backend.html#cairo-xlib-surface-create"><tt class="function">cairo_xlib_surface_create()</tt></a> and
-<a href="cairo-cairo-t.html#cairo-set-target-surface"><tt class="function">cairo_set_target_surface()</tt></a> is somewhat more flexible, although
-it still is slow.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dpy</tt></i>:</span></td><td> an X display
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>drawable</tt></i>:</span></td><td> a window or pixmap on the default screen of <i class="parameter"><tt>dpy</tt></i>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2681239"></a><h3><a name="cairo-xlib-surface-create"></a>cairo_xlib_surface_create ()</h3><a class="indexterm" name="id2681247"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_xlib_surface_create (Display *dpy,
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2979138"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2979144"></a><h3>
+<a name="cairo-xlib-surface-create"></a>cairo_xlib_surface_create ()</h3>
+<a class="indexterm" name="id2979153"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_xlib_surface_create (Display *dpy,
Drawable drawable,
Visual *visual,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- Colormap colormap);</pre><p>
+ int width,
+ int height);</pre>
+<p>
+Creates an Xlib surface that draws to the given drawable.
+The way that colors are represented in the drawable is specified
+by the provided visual.
+</p>
+<p>
+NOTE: If <i class="parameter"><tt>drawable</tt></i> is a Window, then the function
+cairo_xlib_surface_set_size must be called whenever the size of the
+window changes.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>dpy</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>drawable</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>visual</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>colormap</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dpy</tt></i>&#160;:</span></td>
+<td> an X Display
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>drawable</tt></i>&#160;:</span></td>
+<td> an X Drawable, (a Pixmap or a Window)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>visual</tt></i>&#160;:</span></td>
+<td> the visual to use for drawing to <i class="parameter"><tt>drawable</tt></i>. The depth
+ of the visual must match the depth of the drawable.
+ Currently, only TrueColor visuals are fully supported.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> the current width of <i class="parameter"><tt>drawable</tt></i>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> the current height of <i class="parameter"><tt>drawable</tt></i>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the newly created surface
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2927399"></a><h3>
+<a name="cairo-xlib-surface-create-for-bitmap"></a>cairo_xlib_surface_create_for_bitmap ()</h3>
+<a class="indexterm" name="id2927409"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_xlib_surface_create_for_bitmap
+ (Display *dpy,
+ Pixmap bitmap,
+ int width,
+ int height);</pre>
+<p>
+Creates an Xlib surface that draws to the given bitmap.
+This will be drawn to as a CAIRO_FORMAT_A1 object.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dpy</tt></i>&#160;:</span></td>
+<td> an X Display
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>bitmap</tt></i>&#160;:</span></td>
+<td> an X Drawable, (a depth-1 Pixmap)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> the current width of <i class="parameter"><tt>bitmap</tt></i>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> the current height of <i class="parameter"><tt>bitmap</tt></i>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the newly created surface
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2926098"></a><h3>
+<a name="cairo-xlib-surface-set-size"></a>cairo_xlib_surface_set_size ()</h3>
+<a class="indexterm" name="id2926107"></a><pre class="programlisting">void cairo_xlib_surface_set_size (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ int width,
+ int height);</pre>
+<p>
+Informs cairo of the new size of the X Drawable underlying the
+surface. For a surface created for a Window (rather than a Pixmap),
+this function must be called each time the size of the window
+changes. (For a subwindow, you are normally resizing the window
+yourself, but for a toplevel window, it is necessary to listen for
+ConfigureNotify events.)
+</p>
+<p>
+A Pixmap can never change size, so it is never necessary to call
+this function on a surface created for a Pixmap.</p>
+<p>
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-XCB-Backend.html"><b>&lt;&lt;XCB Backend</b></a></td><td align="right"></td></tr></table></body></html>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> for the XLib backend
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> the new width of the surface
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> the new height of the surface
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-XCB-Backend.html"><b>&lt;&lt;&#160;XCB Backend</b></a></td>
+<td align="right"><a accesskey="n" href="ix01.html"><b>Index&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-cairo-matrix-t.html b/doc/public/html/cairo-cairo-matrix-t.html
index 84aacff..252bd4c 100644
--- a/doc/public/html/cairo-cairo-matrix-t.html
+++ b/doc/public/html/cairo-cairo-matrix-t.html
@@ -1,220 +1,613 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>cairo_matrix_t</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-cairo-pattern-t.html" title="cairo_pattern_t"><link rel="next" href="cairo-ATSUI-Fonts.html" title="ATSUI Fonts"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-cairo-pattern-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-ATSUI-Fonts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-cairo-matrix-t"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">cairo_matrix_t</span></h2><p>cairo_matrix_t &#8212;
- Transformation matrices</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
-
-
-
-typedef <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a>;
-<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a>* <a href="cairo-cairo-matrix-t.html#cairo-matrix-create">cairo_matrix_create</a> (void);
-void <a href="cairo-cairo-matrix-t.html#cairo-matrix-destroy">cairo_matrix_destroy</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-copy">cairo_matrix_copy</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
- const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *other);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-set-identity">cairo_matrix_set_identity</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-set-affine">cairo_matrix_set_affine</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
- double a,
- double b,
- double c,
- double d,
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cairo_matrix_t</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-cairo-pattern-t.html" title="cairo_pattern_t">
+<link rel="next" href="cairo-Fonts.html" title="Fonts">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-cairo-pattern-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-Fonts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-cairo-matrix-t"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">cairo_matrix_t</span></h2>
+<p>cairo_matrix_t &#8212;
+ Transformation matrices</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+ <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a>;
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-init">cairo_matrix_init</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double xx,
+ double yx,
+ double xy,
+ double yy,
+ double x0,
+ double y0);
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-init-identity">cairo_matrix_init_identity</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-init-translate">cairo_matrix_init_translate</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double tx,
double ty);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-get-affine">cairo_matrix_get_affine</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
- double *a,
- double *b,
- double *c,
- double *d,
- double *tx,
- double *ty);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-translate">cairo_matrix_translate</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-init-scale">cairo_matrix_init_scale</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double sx,
+ double sy);
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-init-rotate">cairo_matrix_init_rotate</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double radians);
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-translate">cairo_matrix_translate</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double tx,
double ty);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-scale">cairo_matrix_scale</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-scale">cairo_matrix_scale</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double sx,
double sy);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-rotate">cairo_matrix_rotate</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-rotate">cairo_matrix_rotate</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double radians);
<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-invert">cairo_matrix_invert</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-multiply">cairo_matrix_multiply</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *result,
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-multiply">cairo_matrix_multiply</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *result,
const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *a,
const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *b);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-transform-distance">cairo_matrix_transform_distance</a>
- (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-transform-distance">cairo_matrix_transform_distance</a> (const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double *dx,
double *dy);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-matrix-t.html#cairo-matrix-transform-point">cairo_matrix_transform_point</a> (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+void <a href="cairo-cairo-matrix-t.html#cairo-matrix-transform-point">cairo_matrix_transform_point</a> (const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double *x,
double *y);
-</pre></div><div class="refsect1" lang="en"><a name="id2733267"></a><h2>Description</h2><p><a class="indexterm" name="id2733273"></a><a class="indexterm" name="id2733279"></a>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2938599"></a><h2>Description</h2>
+<p><a class="indexterm" name="id2938606"></a><a class="indexterm" name="id2938614"></a>
<span class="structname">cairo_matrix_t</span> is used throughout
Cairo to represents between different coordinates spaces.
A <span class="structname">cairo_matrix</span> holds an affine
transformation, such as a scale, rotation, or shear, or a
combination of those. Mathematically, the effect of an affine
transformation on a point (<tt class="literal">x</tt>,<tt class="literal">y</tt>) is given by:
- </p><pre class="programlisting">
+ </p>
+<pre class="programlisting">
x_new = x * a + y * c + tx;
y_new = x * b + y * d + ty;
- </pre><p>
+ </pre>
+<p>
The parameters <tt class="literal">a</tt>, <tt class="literal">b</tt>,
<tt class="literal">c</tt>, <tt class="literal">d</tt>, <tt class="literal">tx</tt>,
<tt class="literal">ty</tt> can be retrieved with
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-get-affine"><tt class="function">cairo_matrix_get_affine()</tt></a> and set with <a href="cairo-cairo-matrix-t.html#cairo-matrix-get-affine"><tt class="function">cairo_matrix_get_affine()</tt></a>.
- </p><p>
+ <tt class="function">cairo_matrix_get_affine()</tt> and set with <tt class="function">cairo_matrix_get_affine()</tt>.
+ </p>
+<p>
The primary use of transformation matrices in Cairo is as the
current transformation matrix in a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>. The current
transformation matrix gives the transformation from user space
coordinates to device coordinates. See <a href="cairo-cairo-t.html#cairo-set-matrix"><tt class="function">cairo_set_matrix()</tt></a>,
- <a href="cairo-cairo-t.html#cairo-current-matrix"><tt class="function">cairo_current_matrix()</tt></a>.
- </p></div><div class="refsect1" lang="en"><a name="id2733367"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2733372"></a><h3><a name="cairo-matrix-t"></a>cairo_matrix_t</h3><a class="indexterm" name="id2733381"></a><pre class="programlisting">typedef struct _cairo_matrix cairo_matrix_t;
-</pre><p>
+ <tt class="function">cairo_current_matrix()</tt>.
+ </p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2938742"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2938749"></a><h3>
+<a name="cairo-matrix-t"></a>cairo_matrix_t</h3>
+<a class="indexterm" name="id2938759"></a><pre class="programlisting">typedef struct {
+ double xx; double yx;
+ double xy; double yy;
+ double x0; double y0;
+} cairo_matrix_t;
+</pre>
+<p>
A <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a> holds an affine transformation, such as a scale,
-rotation, or shear, or a combination of those.</p><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2733402"></a><h3><a name="cairo-matrix-create"></a>cairo_matrix_create ()</h3><a class="indexterm" name="id2733411"></a><pre class="programlisting"><a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a>* cairo_matrix_create (void);</pre><p>
-Creates a new identity matrix.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> a newly created matrix; free with <a href="cairo-cairo-matrix-t.html#cairo-matrix-destroy"><tt class="function">cairo_matrix_destroy()</tt></a>,
- or <tt class="literal">NULL</tt> if memory couldn't be allocated.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2733451"></a><h3><a name="cairo-matrix-destroy"></a>cairo_matrix_destroy ()</h3><a class="indexterm" name="id2733459"></a><pre class="programlisting">void cairo_matrix_destroy (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-Frees a matrix created with cairo_matrix_create.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2734685"></a><h3><a name="cairo-matrix-copy"></a>cairo_matrix_copy ()</h3><a class="indexterm" name="id2734693"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_copy (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
- const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *other);</pre><p>
-Modifies <i class="parameter"><tt>matrix</tt></i> to be identical to <i class="parameter"><tt>other</tt></i>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>other</tt></i>:</span></td><td> another <span class="type">cairo_</span>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2734779"></a><h3><a name="cairo-matrix-set-identity"></a>cairo_matrix_set_identity ()</h3><a class="indexterm" name="id2734787"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_set_identity (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-Modifies <i class="parameter"><tt>matrix</tt></i> to be an identity transformation.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2734846"></a><h3><a name="cairo-matrix-set-affine"></a>cairo_matrix_set_affine ()</h3><a class="indexterm" name="id2734855"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_set_affine (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
- double a,
- double b,
- double c,
- double d,
- double tx,
- double ty);</pre><p>
+rotation, or shear, or a combination of those.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2971462"></a><h3>
+<a name="cairo-matrix-init"></a>cairo_matrix_init ()</h3>
+<a class="indexterm" name="id2971473"></a><pre class="programlisting">void cairo_matrix_init (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double xx,
+ double yx,
+ double xy,
+ double yy,
+ double x0,
+ double y0);</pre>
+<p>
Sets <i class="parameter"><tt>matrix</tt></i> to be the affine transformation given by
-<i class="parameter"><tt>a</tt></i>, b, <i class="parameter"><tt>c</tt></i>, <i class="parameter"><tt>d</tt></i>, <i class="parameter"><tt>tx</tt></i>, <i class="parameter"><tt>ty</tt></i>. The transformation is given
+<i class="parameter"><tt>xx</tt></i>, <i class="parameter"><tt>yx</tt></i>, <i class="parameter"><tt>xy</tt></i>, <i class="parameter"><tt>yy</tt></i>, <i class="parameter"><tt>x0</tt></i>, <i class="parameter"><tt>y0</tt></i>. The transformation is given
by:
-</p><pre class="programlisting">
- x_new = x * a + y * c + tx;
- y_new = x * b + y * d + ty;
-</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a cairo_matrix_t
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>a</tt></i>:</span></td><td> a component of the affine transformation
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>b</tt></i>:</span></td><td> b component of the affine transformation
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>c</tt></i>:</span></td><td> c component of the affine transformation
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>d</tt></i>:</span></td><td> d component of the affine transformation
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>tx</tt></i>:</span></td><td> X translation component of the affine transformation
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>ty</tt></i>:</span></td><td> Y translation component of the affine transformation
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2678925"></a><h3><a name="cairo-matrix-get-affine"></a>cairo_matrix_get_affine ()</h3><a class="indexterm" name="id2678933"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_get_affine (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
- double *a,
- double *b,
- double *c,
- double *d,
- double *tx,
- double *ty);</pre><p>
-Gets the matrix values for the affine tranformation that <i class="parameter"><tt>matrix</tt></i> represents.
-See <a href="cairo-cairo-matrix-t.html#cairo-matrix-set-affine"><tt class="function">cairo_matrix_set_affine()</tt></a>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>a</tt></i>:</span></td><td> location to store a component of affine transformation, or <tt class="literal">NULL</tt>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>b</tt></i>:</span></td><td> location to store b component of affine transformation, or <tt class="literal">NULL</tt>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>c</tt></i>:</span></td><td> location to store c component of affine transformation, or <tt class="literal">NULL</tt>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>d</tt></i>:</span></td><td> location to store d component of affine transformation, or <tt class="literal">NULL</tt>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>tx</tt></i>:</span></td><td> location to store X-translation component of affine transformation, or <tt class="literal">NULL</tt>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>ty</tt></i>:</span></td><td> location to store Y-translation component of affine transformation, or <tt class="literal">NULL</tt>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2679124"></a><h3><a name="cairo-matrix-translate"></a>cairo_matrix_translate ()</h3><a class="indexterm" name="id2679133"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_translate (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+</p>
+<pre class="programlisting">
+ x_new = xx * x + xy * y + x0;
+ y_new = yx * x + yy * y + y0;
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a cairo_matrix_t
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>xx</tt></i>&#160;:</span></td>
+<td> xx component of the affine transformation
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>yx</tt></i>&#160;:</span></td>
+<td> yx component of the affine transformation
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>xy</tt></i>&#160;:</span></td>
+<td> xy component of the affine transformation
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>yy</tt></i>&#160;:</span></td>
+<td> yy component of the affine transformation
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x0</tt></i>&#160;:</span></td>
+<td> X translation component of the affine transformation
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y0</tt></i>&#160;:</span></td>
+<td> Y translation component of the affine transformation
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2971695"></a><h3>
+<a name="cairo-matrix-init-identity"></a>cairo_matrix_init_identity ()</h3>
+<a class="indexterm" name="id2971704"></a><pre class="programlisting">void cairo_matrix_init_identity (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+Modifies <i class="parameter"><tt>matrix</tt></i> to be an identity transformation.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2931794"></a><h3>
+<a name="cairo-matrix-init-translate"></a>cairo_matrix_init_translate ()</h3>
+<a class="indexterm" name="id2931803"></a><pre class="programlisting">void cairo_matrix_init_translate (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double tx,
- double ty);</pre><p>
+ double ty);</pre>
+<p>
+Initializes <i class="parameter"><tt>matrix</tt></i> to a transformation that translates by <i class="parameter"><tt>tx</tt></i> and
+<i class="parameter"><tt>ty</tt></i> in the X and Y dimensions, respectively.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a cairo_matrix_t
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>tx</tt></i>&#160;:</span></td>
+<td> amount to translate in the X direction
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>ty</tt></i>&#160;:</span></td>
+<td> amount to translate in the Y direction
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2931915"></a><h3>
+<a name="cairo-matrix-init-scale"></a>cairo_matrix_init_scale ()</h3>
+<a class="indexterm" name="id2931924"></a><pre class="programlisting">void cairo_matrix_init_scale (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double sx,
+ double sy);</pre>
+<p>
+Initializes <i class="parameter"><tt>matrix</tt></i> to a transformation that scales by <i class="parameter"><tt>sx</tt></i> and <i class="parameter"><tt>sy</tt></i>
+in the X and Y dimensions, respectively.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a cairo_matrix_t
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>sx</tt></i>&#160;:</span></td>
+<td> scale factor in the X direction
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>sy</tt></i>&#160;:</span></td>
+<td> scale factor in the Y direction
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2932034"></a><h3>
+<a name="cairo-matrix-init-rotate"></a>cairo_matrix_init_rotate ()</h3>
+<a class="indexterm" name="id2932043"></a><pre class="programlisting">void cairo_matrix_init_rotate (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double radians);</pre>
+<p>
+Initialized <i class="parameter"><tt>matrix</tt></i> to a transformation that rotates by <i class="parameter"><tt>radians</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a cairo_matrix_t
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>radians</tt></i>&#160;:</span></td>
+<td> angle of rotation, in radians. The direction of rotation
+is defined such that positive angles rotate in the direction from
+the positive X axis toward the positive Y axis. With the default
+axis orientation of cairo, positive angles rotate in a clockwise
+direction.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2932130"></a><h3>
+<a name="cairo-matrix-translate"></a>cairo_matrix_translate ()</h3>
+<a class="indexterm" name="id2932139"></a><pre class="programlisting">void cairo_matrix_translate (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double tx,
+ double ty);</pre>
+<p>
Applies a translation by <i class="parameter"><tt>tx</tt></i>, <i class="parameter"><tt>ty</tt></i> to the transformation in
-<i class="parameter"><tt>matrix</tt></i>. The new transformation is given by first translating by
-<i class="parameter"><tt>tx</tt></i>, <i class="parameter"><tt>ty</tt></i> then applying the original transformation</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a cairo_matrix_t
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>tx</tt></i>:</span></td><td> amount to rotate in the X direction
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>ty</tt></i>:</span></td><td> amount to rotate in the Y direction
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2679235"></a><h3><a name="cairo-matrix-scale"></a>cairo_matrix_scale ()</h3><a class="indexterm" name="id2679243"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_scale (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+<i class="parameter"><tt>matrix</tt></i>. The effect of the new transformation is to first translate
+the coordinates by <i class="parameter"><tt>tx</tt></i> and <i class="parameter"><tt>ty</tt></i>, then apply the original transformation
+to the coordinates.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a cairo_matrix_t
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>tx</tt></i>&#160;:</span></td>
+<td> amount to translate in the X direction
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>ty</tt></i>&#160;:</span></td>
+<td> amount to translate in the Y direction
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2932264"></a><h3>
+<a name="cairo-matrix-scale"></a>cairo_matrix_scale ()</h3>
+<a class="indexterm" name="id2932274"></a><pre class="programlisting">void cairo_matrix_scale (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double sx,
- double sy);</pre><p>
-Applies scaling by <i class="parameter"><tt>tx</tt></i>, <i class="parameter"><tt>ty</tt></i> to the transformation in
-<i class="parameter"><tt>matrix</tt></i>. The new transformation is given by first scaling by <i class="parameter"><tt>sx</tt></i>
-and <i class="parameter"><tt>sy</tt></i> then applying the original transformation</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>sx</tt></i>:</span></td><td> Scale factor in the X direction
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>sy</tt></i>:</span></td><td> Scale factor in the Y direction
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2679353"></a><h3><a name="cairo-matrix-rotate"></a>cairo_matrix_rotate ()</h3><a class="indexterm" name="id2679361"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_rotate (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
- double radians);</pre><p>
+ double sy);</pre>
+<p>
+Applies scaling by <i class="parameter"><tt>tx</tt></i>, <i class="parameter"><tt>ty</tt></i> to the transformation in <i class="parameter"><tt>matrix</tt></i>. The
+effect of the new transformation is to first scale the coordinates
+by <i class="parameter"><tt>sx</tt></i> and <i class="parameter"><tt>sy</tt></i>, then apply the original transformation to the coordinates.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>sx</tt></i>&#160;:</span></td>
+<td> scale factor in the X direction
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>sy</tt></i>&#160;:</span></td>
+<td> scale factor in the Y direction
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2932405"></a><h3>
+<a name="cairo-matrix-rotate"></a>cairo_matrix_rotate ()</h3>
+<a class="indexterm" name="id2932415"></a><pre class="programlisting">void cairo_matrix_rotate (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+ double radians);</pre>
+<p>
Applies rotation by <i class="parameter"><tt>radians</tt></i> to the transformation in
-<i class="parameter"><tt>matrix</tt></i>. The new transformation is given by first rotating by
-<i class="parameter"><tt>radians</tt></i> then applying the original transformation</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>radians</tt></i>:</span></td><td> angle of rotation, in radians. Angles are defined
- so that an angle of 90 degrees (<tt class="literal">M_PI</tt> radians) rotates the
- positive X axis into the positive Y axis. With the default
- Cairo choice of axis orientation, positive rotations are
- clockwise.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2679451"></a><h3><a name="cairo-matrix-invert"></a>cairo_matrix_invert ()</h3><a class="indexterm" name="id2679459"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_invert (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
+<i class="parameter"><tt>matrix</tt></i>. The effect of the new transformation is to first rotate the
+coordinates by <i class="parameter"><tt>radians</tt></i>, then apply the original transformation
+to the coordinates.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>radians</tt></i>&#160;:</span></td>
+<td> angle of rotation, in radians. The direction of rotation
+is defined such that positive angles rotate in the direction from
+the positive X axis toward the positive Y axis. With the default
+axis orientation of cairo, positive angles rotate in a clockwise
+direction.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2932516"></a><h3>
+<a name="cairo-matrix-invert"></a>cairo_matrix_invert ()</h3>
+<a class="indexterm" name="id2932526"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_invert (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
Changes <i class="parameter"><tt>matrix</tt></i> to be the inverse of it's original value. Not
all transformation matrices have inverses; if the matrix
collapses points together (it is <i class="firstterm">degenerate</i>),
then it has no inverse and this function will fail.
-</p><p>
+</p>
+<p>
Returns: If <i class="parameter"><tt>matrix</tt></i> has an inverse, modifies <i class="parameter"><tt>matrix</tt></i> to
- be the inverse matrix and returns <tt class="literal">CAIRO_STATUS_SUCCESS</tt>. Otherwise,</p><p>
+ be the inverse matrix and returns <tt class="literal">CAIRO_STATUS_SUCCESS</tt>. Otherwise,</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td><tt class="literal">CAIRO_STATUS_INVALID_MATRIX</tt>.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2679535"></a><h3><a name="cairo-matrix-multiply"></a>cairo_matrix_multiply ()</h3><a class="indexterm" name="id2679543"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_multiply (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *result,
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+<tt class="literal">CAIRO_STATUS_INVALID_MATRIX</tt>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2932631"></a><h3>
+<a name="cairo-matrix-multiply"></a>cairo_matrix_multiply ()</h3>
+<a class="indexterm" name="id2932640"></a><pre class="programlisting">void cairo_matrix_multiply (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *result,
const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *a,
- const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *b);</pre><p>
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *b);</pre>
+<p>
Multiplies the affine transformations in <i class="parameter"><tt>a</tt></i> and <i class="parameter"><tt>b</tt></i> together
-and stores the result in <i class="parameter"><tt>result</tt></i>. The resulting transformation
-is given by first applying the transformation in <i class="parameter"><tt>b</tt></i> then
-applying the transformation in <i class="parameter"><tt>a</tt></i>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>result</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i> in which to store the result
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>a</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>b</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2679658"></a><h3><a name="cairo-matrix-transform-distance"></a>cairo_matrix_transform_distance ()</h3><a class="indexterm" name="id2679669"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_transform_distance
- (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+and stores the result in <i class="parameter"><tt>result</tt></i>. The effect of the resulting
+transformation is to first apply the transformation in <i class="parameter"><tt>a</tt></i> to the
+coordinates and then apply the transformation in <i class="parameter"><tt>b</tt></i> to the
+coordinates.
+</p>
+<p>
+It is allowable for <i class="parameter"><tt>result</tt></i> to be identical to either <i class="parameter"><tt>a</tt></i> or <i class="parameter"><tt>b</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>result</tt></i>&#160;:</span></td>
+<td> a <i class="parameter"><tt>cairo_matrix_t</tt></i> in which to store the result
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>a</tt></i>&#160;:</span></td>
+<td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>b</tt></i>&#160;:</span></td>
+<td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2973056"></a><h3>
+<a name="cairo-matrix-transform-distance"></a>cairo_matrix_transform_distance ()</h3>
+<a class="indexterm" name="id2973067"></a><pre class="programlisting">void cairo_matrix_transform_distance (const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double *dx,
- double *dy);</pre><p>
-Transforms the vector (<i class="parameter"><tt>dx</tt></i>,<i class="parameter"><tt>dy</tt></i>) by <i class="parameter"><tt>matrix</tt></i>. Translation is
-ignored. In terms of the components of the affine transformation:
-</p><p>
-</p><pre class="programlisting">
+ double *dy);</pre>
+<p>
+Transforms the distance vector (<i class="parameter"><tt>dx</tt></i>,<i class="parameter"><tt>dy</tt></i>) by <i class="parameter"><tt>matrix</tt></i>. This is
+similar to <tt class="function">cairo_matrix_transform()</tt> except that the translation
+components of the transformation are ignored. The calculation of
+the returned vector is as follows:
+</p>
+<p>
+</p>
+<pre class="programlisting">
dx2 = dx1 * a + dy1 * c;
dy2 = dx1 * b + dy1 * d;
-</pre><p>
-</p><p>
+</pre>
+<p>
+</p>
+<p>
Affine transformations are position invariant, so the same vector
always transforms to the same vector. If (<i class="parameter"><tt>x1</tt></i>,<i class="parameter"><tt>y1</tt></i>) transforms
to (<i class="parameter"><tt>x2</tt></i>,<i class="parameter"><tt>y2</tt></i>) then (<i class="parameter"><tt>x1</tt></i>+<i class="parameter"><tt>dx1</tt></i>,<i class="parameter"><tt>y1</tt></i>+<i class="parameter"><tt>dy1</tt></i>) will transform to
-(<i class="parameter"><tt>x1</tt></i>+<i class="parameter"><tt>dx2</tt></i>,<i class="parameter"><tt>y1</tt></i>+<i class="parameter"><tt>dy2</tt></i>) for all values of <i class="parameter"><tt>x1</tt></i> and <i class="parameter"><tt>x2</tt></i>.</p><p>
+(<i class="parameter"><tt>x1</tt></i>+<i class="parameter"><tt>dx2</tt></i>,<i class="parameter"><tt>y1</tt></i>+<i class="parameter"><tt>dy2</tt></i>) for all values of <i class="parameter"><tt>x1</tt></i> and <i class="parameter"><tt>x2</tt></i>.</p>
+<p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx</tt></i>:</span></td><td> a distance in the X direction. An in/out parameter
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy</tt></i>:</span></td><td> a distance in the Y direction. An in/out parameter
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2679828"></a><h3><a name="cairo-matrix-transform-point"></a>cairo_matrix_transform_point ()</h3><a class="indexterm" name="id2679839"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_matrix_transform_point (<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx</tt></i>&#160;:</span></td>
+<td> X component of a distance vector. An in/out parameter
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy</tt></i>&#160;:</span></td>
+<td> Y component of a distance vector. An in/out parameter
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2973295"></a><h3>
+<a name="cairo-matrix-transform-point"></a>cairo_matrix_transform_point ()</h3>
+<a class="indexterm" name="id2973306"></a><pre class="programlisting">void cairo_matrix_transform_point (const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix,
double *x,
- double *y);</pre><p>
-Transforms the point (<i class="parameter"><tt>x</tt></i>, <i class="parameter"><tt>y</tt></i>) by <i class="parameter"><tt>matrix</tt></i>.</p><p>
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td> X position. An in/out parameter
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td> Y position. An in/out parameter
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt>, always.
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-cairo-pattern-t.html"><b>&lt;&lt;cairo_pattern_t</b></a></td><td align="right"><a accesskey="n" href="cairo-ATSUI-Fonts.html"><b>ATSUI Fonts&gt;&gt;</b></a></td></tr></table></body></html>
+ double *y);</pre>
+<p>
+Transforms the point (<i class="parameter"><tt>x</tt></i>, <i class="parameter"><tt>y</tt></i>) by <i class="parameter"><tt>matrix</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a <i class="parameter"><tt>cairo_matrix_t</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td> X position. An in/out parameter
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td> Y position. An in/out parameter
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-cairo-pattern-t.html"><b>&lt;&lt;&#160;cairo_pattern_t</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-Fonts.html"><b>Fonts&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-cairo-pattern-t.html b/doc/public/html/cairo-cairo-pattern-t.html
index 9a48f3e..99b9187 100644
--- a/doc/public/html/cairo-cairo-pattern-t.html
+++ b/doc/public/html/cairo-cairo-pattern-t.html
@@ -1,4 +1,42 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>cairo_pattern_t</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-cairo-surface-t.html" title="cairo_surface_t"><link rel="next" href="cairo-cairo-matrix-t.html" title="cairo_matrix_t"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-cairo-surface-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-cairo-matrix-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-cairo-pattern-t"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">cairo_pattern_t</span></h2><p>cairo_pattern_t &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cairo_pattern_t</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-cairo-surface-t.html" title="cairo_surface_t">
+<link rel="next" href="cairo-cairo-matrix-t.html" title="cairo_matrix_t">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-cairo-surface-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-cairo-matrix-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-cairo-pattern-t"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">cairo_pattern_t</span></h2>
+<p>cairo_pattern_t &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
@@ -19,140 +57,560 @@ typedef <a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t
double radius1);
void <a href="cairo-cairo-pattern-t.html#cairo-pattern-reference">cairo_pattern_reference</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);
void <a href="cairo-cairo-pattern-t.html#cairo-pattern-destroy">cairo_pattern_destroy</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop">cairo_pattern_add_color_stop</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-status">cairo_pattern_status</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);
+void <a href="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgb">cairo_pattern_add_color_stop_rgb</a>
+ (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ double offset,
+ double red,
+ double green,
+ double blue);
+void <a href="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</a>
+ (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
double offset,
double red,
double green,
double blue,
double alpha);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-matrix">cairo_pattern_set_matrix</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-get-matrix">cairo_pattern_get_matrix</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+void <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-matrix">cairo_pattern_set_matrix</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
+void <a href="cairo-cairo-pattern-t.html#cairo-pattern-get-matrix">cairo_pattern_get_matrix</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
enum <a href="cairo-cairo-pattern-t.html#cairo-extend-t">cairo_extend_t</a>;
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-extend">cairo_pattern_set_extend</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+void <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-extend">cairo_pattern_set_extend</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
<a href="cairo-cairo-pattern-t.html#cairo-extend-t">cairo_extend_t</a> extend);
<a href="cairo-cairo-pattern-t.html#cairo-extend-t">cairo_extend_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-get-extend">cairo_pattern_get_extend</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-filter">cairo_pattern_set_filter</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+void <a href="cairo-cairo-pattern-t.html#cairo-pattern-set-filter">cairo_pattern_set_filter</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
<a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> filter);
<a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> <a href="cairo-cairo-pattern-t.html#cairo-pattern-get-filter">cairo_pattern_get_filter</a> (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);
-</pre></div><div class="refsect1" lang="en"><a name="id2735726"></a><h2>Description</h2><p>
-
-</p></div><div class="refsect1" lang="en"><a name="id2735736"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2735741"></a><h3><a name="cairo-pattern-t"></a>cairo_pattern_t</h3><a class="indexterm" name="id2735750"></a><pre class="programlisting">typedef struct _cairo_pattern cairo_pattern_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2735760"></a><h3><a name="cairo-pattern-create-for-surface"></a>cairo_pattern_create_for_surface ()</h3><a class="indexterm" name="id2735768"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_pattern_create_for_surface
- (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2735813"></a><h3><a name="cairo-pattern-create-linear"></a>cairo_pattern_create_linear ()</h3><a class="indexterm" name="id2735822"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_pattern_create_linear
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2934221"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2934232"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2934238"></a><h3>
+<a name="cairo-pattern-t"></a>cairo_pattern_t</h3>
+<a class="indexterm" name="id2934248"></a><pre class="programlisting">typedef struct _cairo_pattern cairo_pattern_t;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2934264"></a><h3>
+<a name="cairo-pattern-create-for-surface"></a>cairo_pattern_create_for_surface ()</h3>
+<a class="indexterm" name="id2934273"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_pattern_create_for_surface
+ (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2934331"></a><h3>
+<a name="cairo-pattern-create-linear"></a>cairo_pattern_create_linear ()</h3>
+<a class="indexterm" name="id2934340"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_pattern_create_linear
(double x0,
double y0,
double x1,
- double y1);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>x0</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y0</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2735917"></a><h3><a name="cairo-pattern-create-radial"></a>cairo_pattern_create_radial ()</h3><a class="indexterm" name="id2735925"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_pattern_create_radial
+ double y1);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x0</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y0</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2972519"></a><h3>
+<a name="cairo-pattern-create-radial"></a>cairo_pattern_create_radial ()</h3>
+<a class="indexterm" name="id2972529"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_pattern_create_radial
(double cx0,
double cy0,
double radius0,
double cx1,
double cy1,
- double radius1);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cx0</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>cy0</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>radius0</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>cx1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>cy1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>radius1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2617438"></a><h3><a name="cairo-pattern-reference"></a>cairo_pattern_reference ()</h3><a class="indexterm" name="id2617446"></a><pre class="programlisting">void cairo_pattern_reference (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2617480"></a><h3><a name="cairo-pattern-destroy"></a>cairo_pattern_destroy ()</h3><a class="indexterm" name="id2617488"></a><pre class="programlisting">void cairo_pattern_destroy (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2617522"></a><h3><a name="cairo-pattern-add-color-stop"></a>cairo_pattern_add_color_stop ()</h3><a class="indexterm" name="id2617533"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_pattern_add_color_stop (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ double radius1);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cx0</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cy0</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>radius0</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cx1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cy1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>radius1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2972691"></a><h3>
+<a name="cairo-pattern-reference"></a>cairo_pattern_reference ()</h3>
+<a class="indexterm" name="id2972700"></a><pre class="programlisting">void cairo_pattern_reference (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2944809"></a><h3>
+<a name="cairo-pattern-destroy"></a>cairo_pattern_destroy ()</h3>
+<a class="indexterm" name="id2944818"></a><pre class="programlisting">void cairo_pattern_destroy (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2944862"></a><h3>
+<a name="cairo-pattern-status"></a>cairo_pattern_status ()</h3>
+<a class="indexterm" name="id2944871"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_pattern_status (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre>
+<p>
+Checks whether an error has previously occurred for this
+pattern.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-pattern-t.html#cairo-pattern-t"><span class="type">cairo_pattern_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt> or <tt class="literal">CAIRO_STATUS_NO_MEMORY</tt>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2944950"></a><h3>
+<a name="cairo-pattern-add-color-stop-rgb"></a>cairo_pattern_add_color_stop_rgb ()</h3>
+<a class="indexterm" name="id2944961"></a><pre class="programlisting">void cairo_pattern_add_color_stop_rgb
+ (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ double offset,
+ double red,
+ double green,
+ double blue);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>offset</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>red</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>green</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>blue</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2945092"></a><h3>
+<a name="cairo-pattern-add-color-stop-rgba"></a>cairo_pattern_add_color_stop_rgba ()</h3>
+<a class="indexterm" name="id2945103"></a><pre class="programlisting">void cairo_pattern_add_color_stop_rgba
+ (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
double offset,
double red,
double green,
double blue,
- double alpha);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>offset</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>red</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>green</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>blue</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>alpha</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2740442"></a><h3><a name="cairo-pattern-set-matrix"></a>cairo_pattern_set_matrix ()</h3><a class="indexterm" name="id2740450"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_pattern_set_matrix (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2740510"></a><h3><a name="cairo-pattern-get-matrix"></a>cairo_pattern_get_matrix ()</h3><a class="indexterm" name="id2740519"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_pattern_get_matrix (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2740580"></a><h3><a name="cairo-extend-t"></a>enum cairo_extend_t</h3><a class="indexterm" name="id2740588"></a><pre class="programlisting">typedef enum {
+ double alpha);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>offset</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>red</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>green</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>blue</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>alpha</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2938063"></a><h3>
+<a name="cairo-pattern-set-matrix"></a>cairo_pattern_set_matrix ()</h3>
+<a class="indexterm" name="id2938072"></a><pre class="programlisting">void cairo_pattern_set_matrix (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2938138"></a><h3>
+<a name="cairo-pattern-get-matrix"></a>cairo_pattern_get_matrix ()</h3>
+<a class="indexterm" name="id2938147"></a><pre class="programlisting">void cairo_pattern_get_matrix (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2938213"></a><h3>
+<a name="cairo-extend-t"></a>enum cairo_extend_t</h3>
+<a class="indexterm" name="id2938223"></a><pre class="programlisting">typedef enum {
CAIRO_EXTEND_NONE,
CAIRO_EXTEND_REPEAT,
CAIRO_EXTEND_REFLECT
} cairo_extend_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2740599"></a><h3><a name="cairo-pattern-set-extend"></a>cairo_pattern_set_extend ()</h3><a class="indexterm" name="id2740608"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_pattern_set_extend (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
- <a href="cairo-cairo-pattern-t.html#cairo-extend-t">cairo_extend_t</a> extend);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>extend</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2740669"></a><h3><a name="cairo-pattern-get-extend"></a>cairo_pattern_get_extend ()</h3><a class="indexterm" name="id2740677"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-extend-t">cairo_extend_t</a> cairo_pattern_get_extend (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2740721"></a><h3><a name="cairo-pattern-set-filter"></a>cairo_pattern_set_filter ()</h3><a class="indexterm" name="id2740730"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_pattern_set_filter (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
- <a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> filter);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>filter</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2740790"></a><h3><a name="cairo-pattern-get-filter"></a>cairo_pattern_get_filter ()</h3><a class="indexterm" name="id2740799"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> cairo_pattern_get_filter (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-cairo-surface-t.html"><b>&lt;&lt;cairo_surface_t</b></a></td><td align="right"><a accesskey="n" href="cairo-cairo-matrix-t.html"><b>cairo_matrix_t&gt;&gt;</b></a></td></tr></table></body></html>
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2938241"></a><h3>
+<a name="cairo-pattern-set-extend"></a>cairo_pattern_set_extend ()</h3>
+<a class="indexterm" name="id2938250"></a><pre class="programlisting">void cairo_pattern_set_extend (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ <a href="cairo-cairo-pattern-t.html#cairo-extend-t">cairo_extend_t</a> extend);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>extend</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2938316"></a><h3>
+<a name="cairo-pattern-get-extend"></a>cairo_pattern_get_extend ()</h3>
+<a class="indexterm" name="id2938325"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-extend-t">cairo_extend_t</a> cairo_pattern_get_extend (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2938381"></a><h3>
+<a name="cairo-pattern-set-filter"></a>cairo_pattern_set_filter ()</h3>
+<a class="indexterm" name="id2938390"></a><pre class="programlisting">void cairo_pattern_set_filter (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern,
+ <a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> filter);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>filter</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2938457"></a><h3>
+<a name="cairo-pattern-get-filter"></a>cairo_pattern_get_filter ()</h3>
+<a class="indexterm" name="id2938466"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> cairo_pattern_get_filter (<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-cairo-surface-t.html"><b>&lt;&lt;&#160;cairo_surface_t</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-cairo-matrix-t.html"><b>cairo_matrix_t&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-cairo-surface-t.html b/doc/public/html/cairo-cairo-surface-t.html
index 9d13be9..6ab7669 100644
--- a/doc/public/html/cairo-cairo-surface-t.html
+++ b/doc/public/html/cairo-cairo-surface-t.html
@@ -1,14 +1,46 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>cairo_surface_t</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="cairo-cairo-t.html" title="cairo_t"><link rel="next" href="cairo-cairo-pattern-t.html" title="cairo_pattern_t"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="cairo-cairo-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-cairo-pattern-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-cairo-surface-t"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">cairo_surface_t</span></h2><p>cairo_surface_t &#8212; </p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cairo_surface_t</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="cairo-cairo-t.html" title="cairo_t">
+<link rel="next" href="cairo-cairo-pattern-t.html" title="cairo_pattern_t">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-cairo-t.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-cairo-pattern-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-cairo-surface-t"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">cairo_surface_t</span></h2>
+<p>cairo_surface_t &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
typedef <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>;
-<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-cairo-surface-t.html#cairo-surface-create-for-image">cairo_surface_create_for_image</a>
- (char *data,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height,
- int stride);
<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-cairo-surface-t.html#cairo-surface-create-similar">cairo_surface_create_similar</a>
(<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *other,
<a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
@@ -16,102 +48,322 @@ typedef <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t
int height);
void <a href="cairo-cairo-surface-t.html#cairo-surface-reference">cairo_surface_reference</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);
void <a href="cairo-cairo-surface-t.html#cairo-surface-destroy">cairo_surface_destroy</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-surface-t.html#cairo-surface-set-repeat">cairo_surface_set_repeat</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- int repeat);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-surface-t.html#cairo-surface-set-matrix">cairo_surface_set_matrix</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-surface-t.html#cairo-surface-get-matrix">cairo_surface_get_matrix</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-surface-t.html#cairo-surface-set-filter">cairo_surface_set_filter</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- <a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> filter);
-<a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> <a href="cairo-cairo-surface-t.html#cairo-surface-get-filter">cairo_surface_get_filter</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);
-</pre></div><div class="refsect1" lang="en"><a name="id2728748"></a><h2>Description</h2><p>
-
-</p></div><div class="refsect1" lang="en"><a name="id2728757"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2728763"></a><h3><a name="cairo-surface-t"></a>cairo_surface_t</h3><a class="indexterm" name="id2728771"></a><pre class="programlisting">typedef struct _cairo_surface cairo_surface_t;
-</pre><p>
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-surface-t.html#cairo-surface-finish">cairo_surface_finish</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-surface-t.html#cairo-surface-set-user-data">cairo_surface_set_user_data</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key,
+ void *user_data,
+ <a href="cairo-cairo-t.html#cairo-destroy-func-t">cairo_destroy_func_t</a> destroy);
+void* <a href="cairo-cairo-surface-t.html#cairo-surface-get-user-data">cairo_surface_get_user_data</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key);
+void <a href="cairo-cairo-surface-t.html#cairo-surface-set-device-offset">cairo_surface_set_device_offset</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x_offset,
+ double y_offset);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2933298"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2933309"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2933315"></a><h3>
+<a name="cairo-surface-t"></a>cairo_surface_t</h3>
+<a class="indexterm" name="id2933325"></a><pre class="programlisting">typedef struct _cairo_surface cairo_surface_t;
+</pre>
+<p>
A <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> represents an image, either as the destination
of a drawing operation or as source when drawing onto another
surface. There are different subtypes of cairo_surface_t for
different drawing backends; for example, <a href="cairo-cairo-t.html#cairo-image-surface-create"><tt class="function">cairo_image_surface_create()</tt></a>
creates a bitmap image in memory.
-</p><p>
+</p>
+<p>
Memory management of <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> is done with
-<a href="cairo-cairo-surface-t.html#cairo-surface-reference"><tt class="function">cairo_surface_reference()</tt></a> and <a href="cairo-cairo-surface-t.html#cairo-surface-destroy"><tt class="function">cairo_surface_destroy()</tt></a>.</p><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2728823"></a><h3><a name="cairo-surface-create-for-image"></a>cairo_surface_create_for_image ()</h3><a class="indexterm" name="id2616534"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_surface_create_for_image
- (char *data,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height,
- int stride);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>data</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>stride</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2616646"></a><h3><a name="cairo-surface-create-similar"></a>cairo_surface_create_similar ()</h3><a class="indexterm" name="id2616655"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_surface_create_similar
+<a href="cairo-cairo-surface-t.html#cairo-surface-reference"><tt class="function">cairo_surface_reference()</tt></a> and <a href="cairo-cairo-surface-t.html#cairo-surface-destroy"><tt class="function">cairo_surface_destroy()</tt></a>.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2933393"></a><h3>
+<a name="cairo-surface-create-similar"></a>cairo_surface_create_similar ()</h3>
+<a class="indexterm" name="id2933402"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_surface_create_similar
(<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *other,
<a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
int width,
- int height);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>other</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2616752"></a><h3><a name="cairo-surface-reference"></a>cairo_surface_reference ()</h3><a class="indexterm" name="id2616760"></a><pre class="programlisting">void cairo_surface_reference (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2690242"></a><h3><a name="cairo-surface-destroy"></a>cairo_surface_destroy ()</h3><a class="indexterm" name="id2690250"></a><pre class="programlisting">void cairo_surface_destroy (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2690284"></a><h3><a name="cairo-surface-set-repeat"></a>cairo_surface_set_repeat ()</h3><a class="indexterm" name="id2690292"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_set_repeat (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- int repeat);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>repeat</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2690353"></a><h3><a name="cairo-surface-set-matrix"></a>cairo_surface_set_matrix ()</h3><a class="indexterm" name="id2690361"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_set_matrix (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2690422"></a><h3><a name="cairo-surface-get-matrix"></a>cairo_surface_get_matrix ()</h3><a class="indexterm" name="id2690431"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_get_matrix (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2690492"></a><h3><a name="cairo-surface-set-filter"></a>cairo_surface_set_filter ()</h3><a class="indexterm" name="id2690500"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_set_filter (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- <a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> filter);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>filter</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2738900"></a><h3><a name="cairo-surface-get-filter"></a>cairo_surface_get_filter ()</h3><a class="indexterm" name="id2738909"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a> cairo_surface_get_filter (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="cairo-cairo-t.html"><b>&lt;&lt;cairo_t</b></a></td><td align="right"><a accesskey="n" href="cairo-cairo-pattern-t.html"><b>cairo_pattern_t&gt;&gt;</b></a></td></tr></table></body></html>
+ int height);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>other</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>format</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2969148"></a><h3>
+<a name="cairo-surface-reference"></a>cairo_surface_reference ()</h3>
+<a class="indexterm" name="id2969157"></a><pre class="programlisting">void cairo_surface_reference (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2969202"></a><h3>
+<a name="cairo-surface-destroy"></a>cairo_surface_destroy ()</h3>
+<a class="indexterm" name="id2969211"></a><pre class="programlisting">void cairo_surface_destroy (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2968003"></a><h3>
+<a name="cairo-surface-finish"></a>cairo_surface_finish ()</h3>
+<a class="indexterm" name="id2968012"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_finish (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre>
+<p>
+This function finishes the surface and drops all references to
+external resources. For example, for the Xlib backend it means
+that cairo will no longer access the drawable, which can be freed.
+After calling <a href="cairo-cairo-surface-t.html#cairo-surface-finish"><tt class="function">cairo_surface_finish()</tt></a> the only valid operations on a
+surface are getting and setting user data and referencing and
+destroying it. Further drawing the the surface will not affect the
+surface but set the surface status to
+CAIRO_STATUS_SURFACE_FINISHED.
+</p>
+<p>
+When the last call to <a href="cairo-cairo-surface-t.html#cairo-surface-destroy"><tt class="function">cairo_surface_destroy()</tt></a> decreases the
+reference count to zero, cairo will call <a href="cairo-cairo-surface-t.html#cairo-surface-finish"><tt class="function">cairo_surface_finish()</tt></a> if
+it hasn't been called already, before freeing the resources
+associated with the surface.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> the <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> to finish
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> CAIRO_STATUS_SUCCESS if the surface was finished
+successfully, otherwise CAIRO_STATUS_NO_MEMORY or
+CAIRO_STATUS_WRITE_ERROR.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2968120"></a><h3>
+<a name="cairo-surface-set-user-data"></a>cairo_surface_set_user_data ()</h3>
+<a class="indexterm" name="id2968130"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_surface_set_user_data (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key,
+ void *user_data,
+ <a href="cairo-cairo-t.html#cairo-destroy-func-t">cairo_destroy_func_t</a> destroy);</pre>
+<p>
+Attach user data to <i class="parameter"><tt>surface</tt></i>. To remove user data from a surface,
+call this function with the key that was used to set it and <tt class="literal">NULL</tt>
+for <i class="parameter"><tt>data</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>key</tt></i>&#160;:</span></td>
+<td> the address of a <a href="cairo-cairo-t.html#cairo-user-data-key-t"><span class="type">cairo_user_data_key_t</span></a> to attach the user data to
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>user_data</tt></i>&#160;:</span></td>
+<td> the user data to attach to the surface
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>destroy</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-destroy-func-t"><span class="type">cairo_destroy_func_t</span></a> which will be called when the
+surface is destroyed or when new user data is attached using the
+same key.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt> or <tt class="literal">CAIRO_STATUS_NO_MEMORY</tt> if a
+slot could not be allocated for the user data.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2935377"></a><h3>
+<a name="cairo-surface-get-user-data"></a>cairo_surface_get_user_data ()</h3>
+<a class="indexterm" name="id2935386"></a><pre class="programlisting">void* cairo_surface_get_user_data (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ const <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a> *key);</pre>
+<p>
+Return user data previously attached to <i class="parameter"><tt>surface</tt></i> using the specified
+key. If no user data has been attached with the given key this
+function returns <tt class="literal">NULL</tt>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>key</tt></i>&#160;:</span></td>
+<td> the address of the <a href="cairo-cairo-t.html#cairo-user-data-key-t"><span class="type">cairo_user_data_key_t</span></a> the user data was
+attached to
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the user data previously attached or <tt class="literal">NULL</tt>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2935499"></a><h3>
+<a name="cairo-surface-set-device-offset"></a>cairo_surface_set_device_offset ()</h3>
+<a class="indexterm" name="id2935510"></a><pre class="programlisting">void cairo_surface_set_device_offset (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x_offset,
+ double y_offset);</pre>
+<p>
+Sets an offset that is added to the device coordinates determined
+by the CTM when drawing to <i class="parameter"><tt>surface</tt></i>. One use case for this function
+is when we want to create a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> that redirects drawing
+for a portion of an onscreen surface to an offscreen surface in a
+way that is completely invisible to the user of the cairo
+API. Setting a transformation via <a href="cairo-cairo-t.html#cairo-translate"><tt class="function">cairo_translate()</tt></a> isn't
+sufficient to do this, since functions like
+<a href="cairo-cairo-t.html#cairo-device-to-user"><tt class="function">cairo_device_to_user()</tt></a> will expose the hidden offset.
+</p>
+<p>
+Note that the offset only affects drawing to the surface, not using
+the surface in a surface pattern.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x_offset</tt></i>&#160;:</span></td>
+<td> the offset in the X direction, in device units
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y_offset</tt></i>&#160;:</span></td>
+<td> the offset in the Y direction, in device units
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-cairo-t.html"><b>&lt;&lt;&#160;cairo_t</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-cairo-pattern-t.html"><b>cairo_pattern_t&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo-cairo-t.html b/doc/public/html/cairo-cairo-t.html
index 865aed7..36e28b6 100644
--- a/doc/public/html/cairo-cairo-t.html
+++ b/doc/public/html/cairo-cairo-t.html
@@ -1,35 +1,70 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>cairo_t</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="pt02.html" title="PartII.Reference"><link rel="previous" href="pt02.html" title="PartII.Reference"><link rel="next" href="cairo-cairo-surface-t.html" title="cairo_surface_t"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="pt02.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-cairo-surface-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry" lang="en"><a name="cairo-cairo-t"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle">cairo_t</span></h2><p>cairo_t &#8212; Drawing contexts.</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cairo_t</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="previous" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="next" href="cairo-cairo-surface-t.html" title="cairo_surface_t">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="pt02.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-cairo-surface-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="cairo-cairo-t"></a><div class="titlepage">
+<div></div>
+<div></div>
+</div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">cairo_t</span></h2>
+<p>cairo_t &#8212; Drawing contexts.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
typedef <a href="cairo-cairo-t.html#cairo-t">cairo_t</a>;
-<a href="cairo-cairo-t.html#cairo-t">cairo_t</a>* <a href="cairo-cairo-t.html#cairo-create">cairo_create</a> (void);
+<a href="cairo-cairo-t.html#cairo-t">cairo_t</a>* <a href="cairo-cairo-t.html#cairo-create">cairo_create</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *target);
void <a href="cairo-cairo-t.html#cairo-reference">cairo_reference</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
void <a href="cairo-cairo-t.html#cairo-destroy">cairo_destroy</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
void <a href="cairo-cairo-t.html#cairo-save">cairo_save</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
void <a href="cairo-cairo-t.html#cairo-restore">cairo_restore</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-void <a href="cairo-cairo-t.html#cairo-copy">cairo_copy</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *dest,
- <a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *src);
-void <a href="cairo-cairo-t.html#cairo-set-target-surface">cairo_set_target_surface</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);
enum <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a>;
-void <a href="cairo-cairo-t.html#cairo-set-target-image">cairo_set_target_image</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- char *data,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height,
- int stride);
enum <a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a>;
void <a href="cairo-cairo-t.html#cairo-set-operator">cairo_set_operator</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a> op);
-void <a href="cairo-cairo-t.html#cairo-set-rgb-color">cairo_set_rgb_color</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-set-source-rgb">cairo_set_source_rgb</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double red,
double green,
double blue);
-void <a href="cairo-cairo-t.html#cairo-set-pattern">cairo_set_pattern</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);
-void <a href="cairo-cairo-t.html#cairo-set-alpha">cairo_set_alpha</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-set-source-rgba">cairo_set_source_rgba</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double red,
+ double green,
+ double blue,
double alpha);
+void <a href="cairo-cairo-t.html#cairo-set-source">cairo_set_source</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *source);
+void <a href="cairo-cairo-t.html#cairo-set-source-surface">cairo_set_source_surface</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x,
+ double y);
void <a href="cairo-cairo-t.html#cairo-set-tolerance">cairo_set_tolerance</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double tolerance);
enum <a href="cairo-cairo-t.html#cairo-fill-rule-t">cairo_fill_rule_t</a>;
@@ -57,23 +92,21 @@ void <a href="cairo-cairo-t.html#cairo-scale">cairo_scale</a>
double sy);
void <a href="cairo-cairo-t.html#cairo-rotate">cairo_rotate</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double angle);
-void <a href="cairo-cairo-t.html#cairo-concat-matrix">cairo_concat_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
+void <a href="cairo-cairo-t.html#cairo-transform">cairo_transform</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
void <a href="cairo-cairo-t.html#cairo-set-matrix">cairo_set_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-void <a href="cairo-cairo-t.html#cairo-default-matrix">cairo_default_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
void <a href="cairo-cairo-t.html#cairo-identity-matrix">cairo_identity_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-void <a href="cairo-cairo-t.html#cairo-transform-point">cairo_transform_point</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-user-to-device">cairo_user_to_device</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x,
double *y);
-void <a href="cairo-cairo-t.html#cairo-transform-distance">cairo_transform_distance</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-user-to-device-distance">cairo_user_to_device_distance</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *dx,
double *dy);
-void <a href="cairo-cairo-t.html#cairo-inverse-transform-point">cairo_inverse_transform_point</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-device-to-user">cairo_device_to_user</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x,
double *y);
-void <a href="cairo-cairo-t.html#cairo-inverse-transform-distance">cairo_inverse_transform_distance</a>
- (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-device-to-user-distance">cairo_device_to_user_distance</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *dx,
double *dy);
void <a href="cairo-cairo-t.html#cairo-new-path">cairo_new_path</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
@@ -121,8 +154,19 @@ void <a href="cairo-cairo-t.html#cairo-rectangle">cairo_rectangle</a>
double width,
double height);
void <a href="cairo-cairo-t.html#cairo-close-path">cairo_close_path</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-paint">cairo_paint</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-paint-with-alpha">cairo_paint_with_alpha</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double alpha);
+void <a href="cairo-cairo-t.html#cairo-mask">cairo_mask</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);
+void <a href="cairo-cairo-t.html#cairo-mask-surface">cairo_mask_surface</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double surface_x,
+ double surface_y);
void <a href="cairo-cairo-t.html#cairo-stroke">cairo_stroke</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-stroke-preserve">cairo_stroke_preserve</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
void <a href="cairo-cairo-t.html#cairo-fill">cairo_fill</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-fill-preserve">cairo_fill_preserve</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
void <a href="cairo-cairo-t.html#cairo-copy-page">cairo_copy_page</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
void <a href="cairo-cairo-t.html#cairo-show-page">cairo_show_page</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
<a href="cairo-cairo-t.html#cairo-bool-t">cairo_bool_t</a> <a href="cairo-cairo-t.html#cairo-in-stroke">cairo_in_stroke</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
@@ -142,302 +186,628 @@ void <a href="cairo-cairo-t.html#cairo-fill-extents">cairo_fill_extents</
double *y1,
double *x2,
double *y2);
-void <a href="cairo-cairo-t.html#cairo-init-clip">cairo_init_clip</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
void <a href="cairo-cairo-t.html#cairo-clip">cairo_clip</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-typedef <a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>;
+void <a href="cairo-cairo-t.html#cairo-clip-preserve">cairo_clip_preserve</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-reset-clip">cairo_reset_clip</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
<a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a>;
- <a href="cairo-cairo-t.html#cairo-text-extents-t">cairo_text_extents_t</a>;
- <a href="cairo-cairo-t.html#cairo-font-extents-t">cairo_font_extents_t</a>;
enum <a href="cairo-cairo-t.html#cairo-font-slant-t">cairo_font_slant_t</a>;
enum <a href="cairo-cairo-t.html#cairo-font-weight-t">cairo_font_weight_t</a>;
-void <a href="cairo-cairo-t.html#cairo-select-font">cairo_select_font</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-select-font-face">cairo_select_font_face</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
const char *family,
<a href="cairo-cairo-t.html#cairo-font-slant-t">cairo_font_slant_t</a> slant,
<a href="cairo-cairo-t.html#cairo-font-weight-t">cairo_font_weight_t</a> weight);
-void <a href="cairo-cairo-t.html#cairo-scale-font">cairo_scale_font</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double scale);
-void <a href="cairo-cairo-t.html#cairo-transform-font">cairo_transform_font</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+void <a href="cairo-cairo-t.html#cairo-set-font-size">cairo_set_font_size</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double size);
+void <a href="cairo-cairo-t.html#cairo-set-font-matrix">cairo_set_font_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
+void <a href="cairo-cairo-t.html#cairo-get-font-matrix">cairo_get_font_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
void <a href="cairo-cairo-t.html#cairo-show-text">cairo_show_text</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- unsigned char *utf8);
+ const char *utf8);
void <a href="cairo-cairo-t.html#cairo-show-glyphs">cairo_show_glyphs</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
int num_glyphs);
-<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* <a href="cairo-cairo-t.html#cairo-current-font">cairo_current_font</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-void <a href="cairo-cairo-t.html#cairo-current-font-extents">cairo_current_font_extents</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);
-void <a href="cairo-cairo-t.html#cairo-set-font">cairo_set_font</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);
+<a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* <a href="cairo-cairo-t.html#cairo-get-font-face">cairo_get_font_face</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-font-extents">cairo_font_extents</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-Fonts.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);
+void <a href="cairo-cairo-t.html#cairo-set-font-face">cairo_set_font_face</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face);
void <a href="cairo-cairo-t.html#cairo-text-extents">cairo_text_extents</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- unsigned char *utf8,
- <a href="cairo-cairo-t.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);
+ const char *utf8,
+ <a href="cairo-Fonts.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);
void <a href="cairo-cairo-t.html#cairo-glyph-extents">cairo_glyph_extents</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
int num_glyphs,
- <a href="cairo-cairo-t.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);
+ <a href="cairo-Fonts.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);
void <a href="cairo-cairo-t.html#cairo-text-path">cairo_text_path</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- unsigned char *utf8);
+ const char *utf8);
void <a href="cairo-cairo-t.html#cairo-glyph-path">cairo_glyph_path</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
int num_glyphs);
-void <a href="cairo-cairo-t.html#cairo-font-reference">cairo_font_reference</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);
-void <a href="cairo-cairo-t.html#cairo-font-destroy">cairo_font_destroy</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);
-<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-t.html#cairo-font-extents">cairo_font_extents</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *font_matrix,
- <a href="cairo-cairo-t.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);
-void <a href="cairo-cairo-t.html#cairo-font-glyph-extents">cairo_font_glyph_extents</a> (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *font_matrix,
- <a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
- int num_glyphs,
- <a href="cairo-cairo-t.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);
-void <a href="cairo-cairo-t.html#cairo-show-surface">cairo_show_surface</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- int width,
- int height);
-<a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a> <a href="cairo-cairo-t.html#cairo-current-operator">cairo_current_operator</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-void <a href="cairo-cairo-t.html#cairo-current-rgb-color">cairo_current_rgb_color</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double *red,
- double *green,
- double *blue);
-<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* <a href="cairo-cairo-t.html#cairo-current-pattern">cairo_current_pattern</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-double <a href="cairo-cairo-t.html#cairo-current-alpha">cairo_current_alpha</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-double <a href="cairo-cairo-t.html#cairo-current-tolerance">cairo_current_tolerance</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-void <a href="cairo-cairo-t.html#cairo-current-point">cairo_current_point</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+<a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a> <a href="cairo-cairo-t.html#cairo-get-operator">cairo_get_operator</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+<a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* <a href="cairo-cairo-t.html#cairo-get-source">cairo_get_source</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+double <a href="cairo-cairo-t.html#cairo-get-tolerance">cairo_get_tolerance</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-get-current-point">cairo_get_current_point</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x,
double *y);
-<a href="cairo-cairo-t.html#cairo-fill-rule-t">cairo_fill_rule_t</a> <a href="cairo-cairo-t.html#cairo-current-fill-rule">cairo_current_fill_rule</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-double <a href="cairo-cairo-t.html#cairo-current-line-width">cairo_current_line_width</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-<a href="cairo-cairo-t.html#cairo-line-cap-t">cairo_line_cap_t</a> <a href="cairo-cairo-t.html#cairo-current-line-cap">cairo_current_line_cap</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-<a href="cairo-cairo-t.html#cairo-line-join-t">cairo_line_join_t</a> <a href="cairo-cairo-t.html#cairo-current-line-join">cairo_current_line_join</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-double <a href="cairo-cairo-t.html#cairo-current-miter-limit">cairo_current_miter_limit</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-void <a href="cairo-cairo-t.html#cairo-current-matrix">cairo_current_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+<a href="cairo-cairo-t.html#cairo-fill-rule-t">cairo_fill_rule_t</a> <a href="cairo-cairo-t.html#cairo-get-fill-rule">cairo_get_fill_rule</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+double <a href="cairo-cairo-t.html#cairo-get-line-width">cairo_get_line_width</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+<a href="cairo-cairo-t.html#cairo-line-cap-t">cairo_line_cap_t</a> <a href="cairo-cairo-t.html#cairo-get-line-cap">cairo_get_line_cap</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+<a href="cairo-cairo-t.html#cairo-line-join-t">cairo_line_join_t</a> <a href="cairo-cairo-t.html#cairo-get-line-join">cairo_get_line_join</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+double <a href="cairo-cairo-t.html#cairo-get-miter-limit">cairo_get_miter_limit</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-get-matrix">cairo_get_matrix</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);
-<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-cairo-t.html#cairo-current-target-surface">cairo_current_target_surface</a>
- (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-void <a href="cairo-cairo-t.html#cairo-current-path">cairo_current_path</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- cairo_move_to_func_t *move_to,
- cairo_line_to_func_t *line_to,
- cairo_curve_to_func_t *curve_to,
- cairo_close_path_func_t *close_path,
- void *closure);
-void <a href="cairo-cairo-t.html#cairo-current-path-flat">cairo_current_path_flat</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- cairo_move_to_func_t *move_to,
- cairo_line_to_func_t *line_to,
- cairo_close_path_func_t *close_path,
- void *closure);
+<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-cairo-t.html#cairo-get-target">cairo_get_target</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+<a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a>* <a href="cairo-cairo-t.html#cairo-copy-path">cairo_copy_path</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+<a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a>* <a href="cairo-cairo-t.html#cairo-copy-path-flat">cairo_copy_path_flat</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+void <a href="cairo-cairo-t.html#cairo-append-path">cairo_append_path</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a> *path);
+enum <a href="cairo-cairo-t.html#cairo-path-data-type-t">cairo_path_data_type_t</a>;
+ <a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a>;
+void <a href="cairo-cairo-t.html#cairo-path-destroy">cairo_path_destroy</a> (<a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a> *path);
enum <a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a>;
<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> <a href="cairo-cairo-t.html#cairo-status">cairo_status</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
-const char* <a href="cairo-cairo-t.html#cairo-status-string">cairo_status_string</a> (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);
+#define <a href="cairo-cairo-t.html#cairo-status-string">cairo_status_string</a>
+const char* <a href="cairo-cairo-t.html#cairo-status-to-string">cairo_status_to_string</a> (<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> status);
enum <a href="cairo-cairo-t.html#cairo-filter-t">cairo_filter_t</a>;
<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-cairo-t.html#cairo-image-surface-create">cairo_image_surface_create</a> (<a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
int width,
int height);
<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* <a href="cairo-cairo-t.html#cairo-image-surface-create-for-data">cairo_image_surface_create_for_data</a>
- (char *data,
+ (unsigned char *data,
<a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
int width,
int height,
int stride);
-
-</pre></div><div class="refsect1" lang="en"><a name="id2745724"></a><h2>Description</h2><p>
+int <a href="cairo-cairo-t.html#cairo-image-surface-get-width">cairo_image_surface_get_width</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);
+int <a href="cairo-cairo-t.html#cairo-image-surface-get-height">cairo_image_surface_get_height</a> (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);
+void (<a href="cairo-cairo-t.html#cairo-destroy-func-t">*cairo_destroy_func_t</a>) (void *data);
+ <a href="cairo-cairo-t.html#cairo-user-data-key-t">cairo_user_data_key_t</a>;
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> (<a href="cairo-cairo-t.html#cairo-read-func-t">*cairo_read_func_t</a>) (void *closure,
+ unsigned char *data,
+ unsigned int length);
+<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> (<a href="cairo-cairo-t.html#cairo-write-func-t">*cairo_write_func_t</a>) (void *closure,
+ unsigned char *data,
+ unsigned int length);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2983102"></a><h2>Description</h2>
+<p>
<a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> is the main object used when drawing with Cairo. To
draw with Cairo, you create a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>, set the target surface,
and drawing options for the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>, create shapes with
functions like <a href="cairo-cairo-t.html#cairo-move-to"><tt class="function">cairo_move_to()</tt></a> and <a href="cairo-cairo-t.html#cairo-line-to"><tt class="function">cairo_line_to()</tt></a>, and then
draw ships with <a href="cairo-cairo-t.html#cairo-stroke"><tt class="function">cairo_stroke()</tt></a> or <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a>.
- </p><p>
+ </p>
+<p>
<a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>'s can be pushed to a stack via <a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a>.
They may then safely be changed, without loosing the current state.
Use <a href="cairo-cairo-t.html#cairo-restore"><tt class="function">cairo_restore()</tt></a> to restore to the saved state.
- </p></div><div class="refsect1" lang="en"><a name="id2745817"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2745823"></a><h3><a name="cairo-t"></a>cairo_t</h3><a class="indexterm" name="id2745834"></a><pre class="programlisting">typedef struct _cairo cairo_t;
-</pre><p>
+ </p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2983209"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2983216"></a><h3>
+<a name="cairo-t"></a>cairo_t</h3>
+<a class="indexterm" name="id2983226"></a><pre class="programlisting">typedef struct _cairo cairo_t;
+</pre>
+<p>
A <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> contains the current state of the rendering device,
-including coordinates of yet to be drawn shapes.</p><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2745858"></a><h3><a name="cairo-create"></a>cairo_create ()</h3><a class="indexterm" name="id2745869"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-t">cairo_t</a>* cairo_create (void);</pre><p>
-Creates a new <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> with default values. The target
-surface must be set on the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> with <a href="cairo-cairo-t.html#cairo-set-target-surface"><tt class="function">cairo_set_target_surface()</tt></a>,
-or a backend-specific function like <a href="cairo-cairo-t.html#cairo-set-target-image"><tt class="function">cairo_set_target_image()</tt></a> before
-drawing with the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> a newly allocated <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> with a reference
+including coordinates of yet to be drawn shapes.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2983254"></a><h3>
+<a name="cairo-create"></a>cairo_create ()</h3>
+<a class="indexterm" name="id2983265"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-t">cairo_t</a>* cairo_create (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *target);</pre>
+<p>
+Creates a new <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> with all graphics state parameters set to
+default values and with <i class="parameter"><tt>target</tt></i> as a target surface. The target
+surface should be constructed with a backend-specific function such
+as cairo_image_surface_create (or any other
+cairo_&lt;backend&gt;_surface_create variant).
+</p>
+<p>
+This function references <i class="parameter"><tt>target</tt></i>, so you can immediately
+call <a href="cairo-cairo-surface-t.html#cairo-surface-destroy"><tt class="function">cairo_surface_destroy()</tt></a> on it if you don't need to
+maintain a separate reference to it.
+</p>
+<p>
+Note that there are restrictions on using the same surface in
+multiple contexts at the same time. If, after creating <i class="parameter"><tt>cr_a</tt></i> with
+<i class="parameter"><tt>surface</tt></i> you also create <i class="parameter"><tt>cr_b</tt></i> with the same surface, you must
+ensure that <i class="parameter"><tt>cr_b</tt></i> has finished using <i class="parameter"><tt>surface</tt></i> before resuming use
+of <i class="parameter"><tt>cr_a</tt></i>. Currently, the only way time at which this is guaranteed
+is when the the last reference to <i class="parameter"><tt>cr_b</tt></i> is released with
+<a href="cairo-cairo-t.html#cairo-destroy"><tt class="function">cairo_destroy()</tt></a>. (XXX: We need to add a <tt class="function">cairo_finish()</tt> call to
+provide a way to achieve this explicitly). See also the
+<tt class="literal">CAIRO_STATUS_BAD_NESTING</tt> status.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>target</tt></i>&#160;:</span></td>
+<td> target surface for the context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a newly allocated <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> with a reference
count of 1. The initial reference count should be released
with <a href="cairo-cairo-t.html#cairo-destroy"><tt class="function">cairo_destroy()</tt></a> when you are done using the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2745966"></a><h3><a name="cairo-reference"></a>cairo_reference ()</h3><a class="indexterm" name="id2745977"></a><pre class="programlisting">void cairo_reference (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
+ This function never returns <tt class="literal">NULL</tt>. If memory cannot be
+ allocated, a special <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> object will be returned on
+ which <a href="cairo-cairo-t.html#cairo-status"><tt class="function">cairo_status()</tt></a> returns <tt class="literal">CAIRO_STATUS_NO_MEMORY</tt>.
+ You can use this object normally, but no drawing will
+ be done.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2983498"></a><h3>
+<a name="cairo-reference"></a>cairo_reference ()</h3>
+<a class="indexterm" name="id2983509"></a><pre class="programlisting">void cairo_reference (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
Increases the reference count on <i class="parameter"><tt>cr</tt></i> by one. This prevents
<i class="parameter"><tt>cr</tt></i> from being destroyed until a matching call to <a href="cairo-cairo-t.html#cairo-destroy"><tt class="function">cairo_destroy()</tt></a>
-is made.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746043"></a><h3><a name="cairo-destroy"></a>cairo_destroy ()</h3><a class="indexterm" name="id2746054"></a><pre class="programlisting">void cairo_destroy (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
+is made.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2983588"></a><h3>
+<a name="cairo-destroy"></a>cairo_destroy ()</h3>
+<a class="indexterm" name="id2983599"></a><pre class="programlisting">void cairo_destroy (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
Decreases the reference count on <i class="parameter"><tt>cr</tt></i> by one. If the result
is zero, then <i class="parameter"><tt>cr</tt></i> and all associated resources are freed.
-See <a href="cairo-cairo-t.html#cairo-destroy"><tt class="function">cairo_destroy()</tt></a>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746120"></a><h3><a name="cairo-save"></a>cairo_save ()</h3><a class="indexterm" name="id2746130"></a><pre class="programlisting">void cairo_save (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
+See <a href="cairo-cairo-t.html#cairo-reference"><tt class="function">cairo_reference()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2983679"></a><h3>
+<a name="cairo-save"></a>cairo_save ()</h3>
+<a class="indexterm" name="id2983689"></a><pre class="programlisting">void cairo_save (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
Makes a copy of the current state of <i class="parameter"><tt>cr</tt></i> and saves it
on an internal stack of saved states for <i class="parameter"><tt>cr</tt></i>. When
<a href="cairo-cairo-t.html#cairo-restore"><tt class="function">cairo_restore()</tt></a> is called, <i class="parameter"><tt>cr</tt></i> will be restored to
the saved state. Multiple calls to <a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a> and
<a href="cairo-cairo-t.html#cairo-restore"><tt class="function">cairo_restore()</tt></a> can be nested; each call to <a href="cairo-cairo-t.html#cairo-restore"><tt class="function">cairo_restore()</tt></a>
restores the state from the matching paired <a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a>.
-</p><p>
+</p>
+<p>
It isn't necessary to clear all saved states before
a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> is freed. If the reference count of a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
drops to zero in response to a call to <a href="cairo-cairo-t.html#cairo-destroy"><tt class="function">cairo_destroy()</tt></a>,
-any saved states will be freed along with the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746266"></a><h3><a name="cairo-restore"></a>cairo_restore ()</h3><a class="indexterm" name="id2746277"></a><pre class="programlisting">void cairo_restore (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
+any saved states will be freed along with the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2983852"></a><h3>
+<a name="cairo-restore"></a>cairo_restore ()</h3>
+<a class="indexterm" name="id2983863"></a><pre class="programlisting">void cairo_restore (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
Restores <i class="parameter"><tt>cr</tt></i> to the state saved by a preceding call to
<a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a> and removes that state from the stack of
-saved states.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746339"></a><h3><a name="cairo-copy"></a>cairo_copy ()</h3><a class="indexterm" name="id2746350"></a><pre class="programlisting">void cairo_copy (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *dest,
- <a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *src);</pre><p>
-This function copies all current state information from src to
-dest. This includes the current point and path, the target surface,
-the transformation matrix, and so forth.
-</p><p>
-The stack of states saved with <a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a> is <span class="emphasis"><em>not</em></span>
-not copied; nor are any saved states on <i class="parameter"><tt>dest</tt></i> cleared. The
-operation only copies the current state of <i class="parameter"><tt>src</tt></i> to the current
-state of <i class="parameter"><tt>dest</tt></i>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>dest</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>src</tt></i>:</span></td><td> another <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746456"></a><h3><a name="cairo-set-target-surface"></a>cairo_set_target_surface ()</h3><a class="indexterm" name="id2746467"></a><pre class="programlisting">void cairo_set_target_surface (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre><p>
-Directs output for a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> to a given surface. The surface
-will be referenced by the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>, so you can immediately
-call <a href="cairo-cairo-surface-t.html#cairo-surface-destroy"><tt class="function">cairo_surface_destroy()</tt></a> on it if you don't need to
-keep a reference to it around.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a>
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746567"></a><h3><a name="cairo-format-t"></a>enum cairo_format_t</h3><a class="indexterm" name="id2746578"></a><pre class="programlisting">typedef enum cairo_format {
+saved states.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2983936"></a><h3>
+<a name="cairo-format-t"></a>enum cairo_format_t</h3>
+<a class="indexterm" name="id2983947"></a><pre class="programlisting">typedef enum cairo_format {
CAIRO_FORMAT_ARGB32,
CAIRO_FORMAT_RGB24,
CAIRO_FORMAT_A8,
CAIRO_FORMAT_A1
} cairo_format_t;
-</pre><p>
+</pre>
+<p>
<a href="cairo-cairo-t.html#cairo-format-t"><span class="type">cairo_format_t</span></a> is used to identify the memory format of
-image data.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><tt class="literal">CAIRO_FORMAT_ARGB32</tt></span></td><td> each pixel is a 32-bit quantity, with
+image data.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_FORMAT_ARGB32</tt></span></td>
+<td> each pixel is a 32-bit quantity, with
alpha in the upper 8 bits, then red, then green, then blue.
- The 32-bit quanties are stored native-endian. Pre-multiplied
+ The 32-bit quantities are stored native-endian. Pre-multiplied
alpha is used. (That is, 50% transparent red is 0x80800000,
not 0x80ff0000.)
-</td></tr><tr><td><span class="term"><tt class="literal">CAIRO_FORMAT_RGB24</tt></span></td><td> each pixel is a 32-bit quantity, with
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_FORMAT_RGB24</tt></span></td>
+<td> each pixel is a 32-bit quantity, with
the upper 8 bits unused. Red, Green, and Blue are stored
in the remaining 24 bits in that order.
-</td></tr><tr><td><span class="term"><tt class="literal">CAIRO_FORMAT_A8</tt></span></td><td> each pixel is a 8-bit quantity holding
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_FORMAT_A8</tt></span></td>
+<td> each pixel is a 8-bit quantity holding
an alpha value.
-</td></tr><tr><td><span class="term"><tt class="literal">CAIRO_FORMAT_A1</tt></span></td><td> each pixel is a 1-bit quantity holding
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_FORMAT_A1</tt></span></td>
+<td> each pixel is a 1-bit quantity holding
an alpha value. Pixels are packed together into 32-bit
quantities. The ordering of the bits matches the
endianess of the platform. On a big-endian machine, the
first pixel is in the uppermost bit, on a little-endian
machine the first pixel is in the least-significant bit.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746674"></a><h3><a name="cairo-set-target-image"></a>cairo_set_target_image ()</h3><a class="indexterm" name="id2746686"></a><pre class="programlisting">void cairo_set_target_image (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- char *data,
- <a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
- int width,
- int height,
- int stride);</pre><p>
-Directs output for a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> to an in-memory image. The output
-buffer must be kept around until the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> is destroyed or set
-to to have a different target. The initial contents of <i class="parameter"><tt>buffer</tt></i>
-will be used as the inital image contents; you must explicitely
-clear the buffer, using, for example, <a href="cairo-cairo-t.html#cairo-rectangle"><tt class="function">cairo_rectangle()</tt></a> and
-<a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a> if you want it cleared.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>data</tt></i>:</span></td><td> a pointer to a buffer supplied by the application
- in which to write contents.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td> the format of pixels in the buffer
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td> the width of the image to be stored in the buffer
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td> the eight of the image to be stored in the buffer
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>stride</tt></i>:</span></td><td> the number of bytes between the start of rows
- in the buffer. Having this be specified separate from <i class="parameter"><tt>width</tt></i>
- allows for padding at the end of rows, or for writing
- to a subportion of a larger image.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746877"></a><h3><a name="cairo-operator-t"></a>enum cairo_operator_t</h3><a class="indexterm" name="id2746888"></a><pre class="programlisting">typedef enum cairo_operator {
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984056"></a><h3>
+<a name="cairo-operator-t"></a>enum cairo_operator_t</h3>
+<a class="indexterm" name="id2984068"></a><pre class="programlisting">typedef enum cairo_operator {
CAIRO_OPERATOR_CLEAR,
- CAIRO_OPERATOR_SRC,
- CAIRO_OPERATOR_DST,
+
+ CAIRO_OPERATOR_SOURCE,
CAIRO_OPERATOR_OVER,
- CAIRO_OPERATOR_OVER_REVERSE,
CAIRO_OPERATOR_IN,
- CAIRO_OPERATOR_IN_REVERSE,
CAIRO_OPERATOR_OUT,
- CAIRO_OPERATOR_OUT_REVERSE,
CAIRO_OPERATOR_ATOP,
- CAIRO_OPERATOR_ATOP_REVERSE,
+
+ CAIRO_OPERATOR_DEST,
+ CAIRO_OPERATOR_DEST_OVER,
+ CAIRO_OPERATOR_DEST_IN,
+ CAIRO_OPERATOR_DEST_OUT,
+ CAIRO_OPERATOR_DEST_ATOP,
+
CAIRO_OPERATOR_XOR,
CAIRO_OPERATOR_ADD,
CAIRO_OPERATOR_SATURATE
} cairo_operator_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2746906"></a><h3><a name="cairo-set-operator"></a>cairo_set_operator ()</h3><a class="indexterm" name="id2746918"></a><pre class="programlisting">void cairo_set_operator (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a> op);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>op</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2746975"></a><h3><a name="cairo-set-rgb-color"></a>cairo_set_rgb_color ()</h3><a class="indexterm" name="id2746987"></a><pre class="programlisting">void cairo_set_rgb_color (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984090"></a><h3>
+<a name="cairo-set-operator"></a>cairo_set_operator ()</h3>
+<a class="indexterm" name="id2984102"></a><pre class="programlisting">void cairo_set_operator (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a> op);</pre>
+<p>
+Sets the compositing operator to be used for all drawing
+operations. See <a href="cairo-cairo-t.html#cairo-operator-t"><span class="type">cairo_operator_t</span></a> for details on the semantics of
+each available drawing operator.
+</p>
+<p>
+XXX: I'd also like to direct the reader's attention to some
+(not-yet-written) section on cairo's imaging model. How would I do
+that if such a section existed? (cworth).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>op</tt></i>&#160;:</span></td>
+<td> a compositing operator, specified as a <a href="cairo-cairo-t.html#cairo-operator-t"><span class="type">cairo_operator_t</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984203"></a><h3>
+<a name="cairo-set-source-rgb"></a>cairo_set_source_rgb ()</h3>
+<a class="indexterm" name="id2984214"></a><pre class="programlisting">void cairo_set_source_rgb (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double red,
+ double green,
+ double blue);</pre>
+<p>
+Sets the source pattern within <i class="parameter"><tt>cr</tt></i> to an opaque color. This opaque
+color will then be used for any subsequent drawing operation until
+a new source pattern is set.
+</p>
+<p>
+The color components are floating point numbers in the range 0 to
+1. If the values passed in are outside that range, they will be
+clamped.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>red</tt></i>&#160;:</span></td>
+<td> red component of color
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>green</tt></i>&#160;:</span></td>
+<td> green component of color
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>blue</tt></i>&#160;:</span></td>
+<td> blue component of color
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984342"></a><h3>
+<a name="cairo-set-source-rgba"></a>cairo_set_source_rgba ()</h3>
+<a class="indexterm" name="id2984353"></a><pre class="programlisting">void cairo_set_source_rgba (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double red,
double green,
- double blue);</pre><p>
-Sets a constant color for filling and stroking. This replaces any
-pattern set with <a href="cairo-cairo-t.html#cairo-set-pattern"><tt class="function">cairo_set_pattern()</tt></a>. The color components are
-floating point numbers in the range 0 to 1. If the values passed in
-are outside that range, they will be clamped.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>red</tt></i>:</span></td><td> red component of color
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>green</tt></i>:</span></td><td> green component of color
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>blue</tt></i>:</span></td><td> blue component of color
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747104"></a><h3><a name="cairo-set-pattern"></a>cairo_set_pattern ()</h3><a class="indexterm" name="id2747116"></a><pre class="programlisting">void cairo_set_pattern (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>pattern</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747173"></a><h3><a name="cairo-set-alpha"></a>cairo_set_alpha ()</h3><a class="indexterm" name="id2747184"></a><pre class="programlisting">void cairo_set_alpha (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double alpha);</pre><p>
-Sets an overall alpha value used for stroking and filling. This
-value is multiplied with any alpha value coming from a gradient or
-image pattern.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>alpha</tt></i>:</span></td><td> the alpha value. 0 is transparent, 1 fully opaque.
- if the value is outside the range 0 to 1, it will be
- clamped to that range.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747257"></a><h3><a name="cairo-set-tolerance"></a>cairo_set_tolerance ()</h3><a class="indexterm" name="id2747269"></a><pre class="programlisting">void cairo_set_tolerance (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double tolerance);</pre><p>
+ double blue,
+ double alpha);</pre>
+<p>
+Sets the source pattern within <i class="parameter"><tt>cr</tt></i> to a translucent color. This
+color will then be used for any subsequent drawing operation until
+a new source pattern is set.
+</p>
+<p>
+The color and alpha components are floating point numbers in the
+range 0 to 1. If the values passed in are outside that range, they
+will be clamped.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>red</tt></i>&#160;:</span></td>
+<td> red component of color
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>green</tt></i>&#160;:</span></td>
+<td> green component of color
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>blue</tt></i>&#160;:</span></td>
+<td> blue component of color
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>alpha</tt></i>&#160;:</span></td>
+<td> alpha component of color
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984503"></a><h3>
+<a name="cairo-set-source"></a>cairo_set_source ()</h3>
+<a class="indexterm" name="id2984513"></a><pre class="programlisting">void cairo_set_source (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *source);</pre>
+<p>
+Sets the source pattern within <i class="parameter"><tt>cr</tt></i> to <i class="parameter"><tt>source</tt></i>. This pattern
+will then be used for any subsequent drawing operation until a new
+source pattern is set.
+</p>
+<p>
+XXX: I'd also like to direct the reader's attention to some
+(not-yet-written) section on cairo's imaging model. How would I do
+that if such a section existed? (cworth).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>source</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-pattern-t.html#cairo-pattern-t"><span class="type">cairo_pattern_t</span></a> to be used as the source for
+subsequent drawing operations.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984613"></a><h3>
+<a name="cairo-set-source-surface"></a>cairo_set_source_surface ()</h3>
+<a class="indexterm" name="id2984624"></a><pre class="programlisting">void cairo_set_source_surface (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double x,
+ double y);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984733"></a><h3>
+<a name="cairo-set-tolerance"></a>cairo_set_tolerance ()</h3>
+<a class="indexterm" name="id2984744"></a><pre class="programlisting">void cairo_set_tolerance (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double tolerance);</pre>
+<p>
Sets the tolerance used when converting paths into trapezoids.
Curved segments of the path will be subdivided until the maximum
deviation between the original path and the polygonal approximation
is less than <i class="parameter"><tt>tolerance</tt></i>. The default value is 0.1. A larger
value will give better performance, a smaller value, better
appearance. (Reducing the value from the default value of 0.1
-is unlikely to improve appearance significantly.)</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>tolerance</tt></i>:</span></td><td> the tolerance, in device units (typically pixels)
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747348"></a><h3><a name="cairo-fill-rule-t"></a>enum cairo_fill_rule_t</h3><a class="indexterm" name="id2747359"></a><pre class="programlisting">typedef enum cairo_fill_rule {
+is unlikely to improve appearance significantly.)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>tolerance</tt></i>&#160;:</span></td>
+<td> the tolerance, in device units (typically pixels)
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984835"></a><h3>
+<a name="cairo-fill-rule-t"></a>enum cairo_fill_rule_t</h3>
+<a class="indexterm" name="id2984846"></a><pre class="programlisting">typedef enum cairo_fill_rule {
CAIRO_FILL_RULE_WINDING,
CAIRO_FILL_RULE_EVEN_ODD
} cairo_fill_rule_t;
-</pre><p>
+</pre>
+<p>
<a href="cairo-cairo-t.html#cairo-fill-rule-t"><span class="type">cairo_fill_rule_t</span></a> is used to select how paths are filled. For both
fill rules, whether or not a point is included in the fill is
determined by taking a ray from that point to infinity and looking
@@ -445,213 +815,822 @@ at intersections with the path. The ray can be in any direction,
as long as it doesn't pass through the end point of a segment
or have a tricky intersection such as intersecting tangent to the path.
(Note that filling is not actually implemented in this way. This
-is just a description of the rule that is applied.)</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><tt class="literal">CAIRO_FILL_RULE_WINDING</tt></span></td><td> If the path crosses the ray from
+is just a description of the rule that is applied.)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_FILL_RULE_WINDING</tt></span></td>
+<td> If the path crosses the ray from
left-to-right, counts +1. If the path crosses the ray
from right to left, counts -1. (Left and right are determined
from the perspective of looking along the ray from the starting
point.) If the total count is non-zero, the point will be filled.
-</td></tr><tr><td><span class="term"><tt class="literal">CAIRO_FILL_RULE_EVEN_ODD</tt></span></td><td> Counts the total number of
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_FILL_RULE_EVEN_ODD</tt></span></td>
+<td> Counts the total number of
intersections, without regard to the orientation of the contour. If
the total number of intersections is odd, the point will be
filled.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747430"></a><h3><a name="cairo-set-fill-rule"></a>cairo_set_fill_rule ()</h3><a class="indexterm" name="id2747442"></a><pre class="programlisting">void cairo_set_fill_rule (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-fill-rule-t">cairo_fill_rule_t</a> fill_rule);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>fill_rule</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747499"></a><h3><a name="cairo-set-line-width"></a>cairo_set_line_width ()</h3><a class="indexterm" name="id2747511"></a><pre class="programlisting">void cairo_set_line_width (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double width);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747569"></a><h3><a name="cairo-line-cap-t"></a>enum cairo_line_cap_t</h3><a class="indexterm" name="id2747580"></a><pre class="programlisting">typedef enum cairo_line_cap {
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2984926"></a><h3>
+<a name="cairo-set-fill-rule"></a>cairo_set_fill_rule ()</h3>
+<a class="indexterm" name="id2984937"></a><pre class="programlisting">void cairo_set_fill_rule (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-t.html#cairo-fill-rule-t">cairo_fill_rule_t</a> fill_rule);</pre>
+<p>
+Set the current fill rule within the cairo context. The fill rule
+is used to determine which regions are inside or outside a complex
+(potentially self-intersecting) path. The current fill rule affects
+both cairo_fill and cairo_clip. See <a href="cairo-cairo-t.html#cairo-fill-rule-t"><span class="type">cairo_fill_rule_t</span></a> for details
+on the semantics of each available fill rule.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>fill_rule</tt></i>&#160;:</span></td>
+<td> a fill rule, specified as a <a href="cairo-cairo-t.html#cairo-fill-rule-t"><span class="type">cairo_fill_rule_t</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985035"></a><h3>
+<a name="cairo-set-line-width"></a>cairo_set_line_width ()</h3>
+<a class="indexterm" name="id2985046"></a><pre class="programlisting">void cairo_set_line_width (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double width);</pre>
+<p>
+Sets the current line width within the cairo context. The line
+width specifies the diameter of a pen that is circular in
+user-space.
+</p>
+<p>
+As with the other stroke parameters, the current line cap style is
+examined by <a href="cairo-cairo-t.html#cairo-stroke"><tt class="function">cairo_stroke()</tt></a>, <a href="cairo-cairo-t.html#cairo-stroke-extents"><tt class="function">cairo_stroke_extents()</tt></a>, and
+<tt class="function">cairo_stroke_to_path()</tt>, but does not have any effect during path
+construction.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> a line width, as a user-space value
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985161"></a><h3>
+<a name="cairo-line-cap-t"></a>enum cairo_line_cap_t</h3>
+<a class="indexterm" name="id2985172"></a><pre class="programlisting">typedef enum cairo_line_cap {
CAIRO_LINE_CAP_BUTT,
CAIRO_LINE_CAP_ROUND,
CAIRO_LINE_CAP_SQUARE
} cairo_line_cap_t;
-</pre><p>
-enumeration for style of line-endings</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><tt class="literal">CAIRO_LINE_CAP_BUTT</tt></span></td><td> start(stop) the line exactly at the start(end) point
-</td></tr><tr><td><span class="term"><tt class="literal">CAIRO_LINE_CAP_ROUND</tt></span></td><td> use a round ending, the center of the circle is the end point
-</td></tr><tr><td><span class="term"><tt class="literal">CAIRO_LINE_CAP_SQUARE</tt></span></td><td> use squared ending, the center of the square is the end point
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747645"></a><h3><a name="cairo-set-line-cap"></a>cairo_set_line_cap ()</h3><a class="indexterm" name="id2747657"></a><pre class="programlisting">void cairo_set_line_cap (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-line-cap-t">cairo_line_cap_t</a> line_cap);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>line_cap</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747714"></a><h3><a name="cairo-line-join-t"></a>enum cairo_line_join_t</h3><a class="indexterm" name="id2747726"></a><pre class="programlisting">typedef enum cairo_line_join {
+</pre>
+<p>
+enumeration for style of line-endings</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_LINE_CAP_BUTT</tt></span></td>
+<td> start(stop) the line exactly at the start(end) point
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_LINE_CAP_ROUND</tt></span></td>
+<td> use a round ending, the center of the circle is the end point
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_LINE_CAP_SQUARE</tt></span></td>
+<td> use squared ending, the center of the square is the end point
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985249"></a><h3>
+<a name="cairo-set-line-cap"></a>cairo_set_line_cap ()</h3>
+<a class="indexterm" name="id2985260"></a><pre class="programlisting">void cairo_set_line_cap (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-t.html#cairo-line-cap-t">cairo_line_cap_t</a> line_cap);</pre>
+<p>
+Sets the current line cap style within the cairo context. See
+<a href="cairo-cairo-t.html#cairo-line-cap-t"><span class="type">cairo_line_cap_t</span></a> for details about how the available line cap
+styles are drawn.
+</p>
+<p>
+As with the other stroke parameters, the current line cap style is
+examined by <a href="cairo-cairo-t.html#cairo-stroke"><tt class="function">cairo_stroke()</tt></a>, <a href="cairo-cairo-t.html#cairo-stroke-extents"><tt class="function">cairo_stroke_extents()</tt></a>, and
+<tt class="function">cairo_stroke_to_path()</tt>, but does not have any effect during path
+construction.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context, as a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>line_cap</tt></i>&#160;:</span></td>
+<td> a line cap style, as a <a href="cairo-cairo-t.html#cairo-line-cap-t"><span class="type">cairo_line_cap_t</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985390"></a><h3>
+<a name="cairo-line-join-t"></a>enum cairo_line_join_t</h3>
+<a class="indexterm" name="id2985401"></a><pre class="programlisting">typedef enum cairo_line_join {
CAIRO_LINE_JOIN_MITER,
CAIRO_LINE_JOIN_ROUND,
CAIRO_LINE_JOIN_BEVEL
} cairo_line_join_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2747739"></a><h3><a name="cairo-set-line-join"></a>cairo_set_line_join ()</h3><a class="indexterm" name="id2747750"></a><pre class="programlisting">void cairo_set_line_join (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-line-join-t">cairo_line_join_t</a> line_join);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>line_join</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747808"></a><h3><a name="cairo-set-dash"></a>cairo_set_dash ()</h3><a class="indexterm" name="id2747819"></a><pre class="programlisting">void cairo_set_dash (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985418"></a><h3>
+<a name="cairo-set-line-join"></a>cairo_set_line_join ()</h3>
+<a class="indexterm" name="id2985430"></a><pre class="programlisting">void cairo_set_line_join (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-t.html#cairo-line-join-t">cairo_line_join_t</a> line_join);</pre>
+<p>
+Sets the current line join style within the cairo context. See
+<a href="cairo-cairo-t.html#cairo-line-join-t"><span class="type">cairo_line_join_t</span></a> for details about how the available line join
+styles are drawn.
+</p>
+<p>
+As with the other stroke parameters, the current line join style is
+examined by <a href="cairo-cairo-t.html#cairo-stroke"><tt class="function">cairo_stroke()</tt></a>, <a href="cairo-cairo-t.html#cairo-stroke-extents"><tt class="function">cairo_stroke_extents()</tt></a>, and
+<tt class="function">cairo_stroke_to_path()</tt>, but does not have any effect during path
+construction.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context, as a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>line_join</tt></i>&#160;:</span></td>
+<td> a line joint style, as a <a href="cairo-cairo-t.html#cairo-line-join-t"><span class="type">cairo_line_join_t</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985559"></a><h3>
+<a name="cairo-set-dash"></a>cairo_set_dash ()</h3>
+<a class="indexterm" name="id2985570"></a><pre class="programlisting">void cairo_set_dash (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *dashes,
int ndash,
- double offset);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dashes</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>ndash</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>offset</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747914"></a><h3><a name="cairo-set-miter-limit"></a>cairo_set_miter_limit ()</h3><a class="indexterm" name="id2747926"></a><pre class="programlisting">void cairo_set_miter_limit (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double limit);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>limit</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2747983"></a><h3><a name="cairo-translate"></a>cairo_translate ()</h3><a class="indexterm" name="id2747994"></a><pre class="programlisting">void cairo_translate (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double offset);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dashes</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>ndash</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>offset</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985679"></a><h3>
+<a name="cairo-set-miter-limit"></a>cairo_set_miter_limit ()</h3>
+<a class="indexterm" name="id2985690"></a><pre class="programlisting">void cairo_set_miter_limit (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double limit);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>limit</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985757"></a><h3>
+<a name="cairo-translate"></a>cairo_translate ()</h3>
+<a class="indexterm" name="id2985768"></a><pre class="programlisting">void cairo_translate (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double tx,
- double ty);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>tx</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>ty</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748071"></a><h3><a name="cairo-scale"></a>cairo_scale ()</h3><a class="indexterm" name="id2748081"></a><pre class="programlisting">void cairo_scale (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double ty);</pre>
+<p>
+Modifies the current transformation matrix (CTM) by tanslating the
+user-space origin by (<i class="parameter"><tt>tx</tt></i>, <i class="parameter"><tt>ty</tt></i>). This offset is interpreted as a
+user-space coordinate according to the CTM in place before the new
+call to cairo_translate. In other words, the translation of the
+user-space origin takes place after any existing transformation.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>tx</tt></i>&#160;:</span></td>
+<td> amount to translate in the X direction
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>ty</tt></i>&#160;:</span></td>
+<td> amount to translate in the Y direction
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985877"></a><h3>
+<a name="cairo-scale"></a>cairo_scale ()</h3>
+<a class="indexterm" name="id2985888"></a><pre class="programlisting">void cairo_scale (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double sx,
- double sy);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>sx</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>sy</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748158"></a><h3><a name="cairo-rotate"></a>cairo_rotate ()</h3><a class="indexterm" name="id2748169"></a><pre class="programlisting">void cairo_rotate (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double angle);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>angle</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748227"></a><h3><a name="cairo-concat-matrix"></a>cairo_concat_matrix ()</h3><a class="indexterm" name="id2748238"></a><pre class="programlisting">void cairo_concat_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748296"></a><h3><a name="cairo-set-matrix"></a>cairo_set_matrix ()</h3><a class="indexterm" name="id2748307"></a><pre class="programlisting">void cairo_set_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748365"></a><h3><a name="cairo-default-matrix"></a>cairo_default_matrix ()</h3><a class="indexterm" name="id2748377"></a><pre class="programlisting">void cairo_default_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748416"></a><h3><a name="cairo-identity-matrix"></a>cairo_identity_matrix ()</h3><a class="indexterm" name="id2748428"></a><pre class="programlisting">void cairo_identity_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748467"></a><h3><a name="cairo-transform-point"></a>cairo_transform_point ()</h3><a class="indexterm" name="id2748478"></a><pre class="programlisting">void cairo_transform_point (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double sy);</pre>
+<p>
+Modifies the current transformation matrix (CTM) by scaling the X
+and Y user-space axes by <i class="parameter"><tt>sx</tt></i> and <i class="parameter"><tt>sy</tt></i> respectively. The scaling of
+the axes takes place after any existing transformation of user
+space.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>sx</tt></i>&#160;:</span></td>
+<td> scale factor for the X dimension
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>sy</tt></i>&#160;:</span></td>
+<td> scale factor for the Y dimension
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2985995"></a><h3>
+<a name="cairo-rotate"></a>cairo_rotate ()</h3>
+<a class="indexterm" name="id2986006"></a><pre class="programlisting">void cairo_rotate (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double angle);</pre>
+<p>
+Modifies the current transformation matrix (CTM) by rotating the
+user-space axes by <i class="parameter"><tt>angle</tt></i> radians. The rotation of the axes takes
+places after any existing transformation of user space. The
+rotation direction for positive angles is from the positive X axis
+toward the positive Y axis.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>angle</tt></i>&#160;:</span></td>
+<td> angle (in radians) by which the user-space axes will be
+rotated
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986088"></a><h3>
+<a name="cairo-transform"></a>cairo_transform ()</h3>
+<a class="indexterm" name="id2986099"></a><pre class="programlisting">void cairo_transform (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+Modifies the current transformation matrix (CTM) by applying
+<i class="parameter"><tt>matrix</tt></i> as an additional transformation. The new transformation of
+user space takes place after any existing transformation.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a transformation to be applied to the user-space axes
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986179"></a><h3>
+<a name="cairo-set-matrix"></a>cairo_set_matrix ()</h3>
+<a class="indexterm" name="id2986191"></a><pre class="programlisting">void cairo_set_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+Modifies the current transformation matrix (CTM) by setting it
+equal to <i class="parameter"><tt>matrix</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a transformation matrix from user space to device space
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986270"></a><h3>
+<a name="cairo-identity-matrix"></a>cairo_identity_matrix ()</h3>
+<a class="indexterm" name="id2986281"></a><pre class="programlisting">void cairo_identity_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Resets the current transformation matrix (CTM) by setting it equal
+to the identity matrix. That is, the user-space and device-space
+axes will be aligned and one user-space unit will transform to one
+device-space unit.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986334"></a><h3>
+<a name="cairo-user-to-device"></a>cairo_user_to_device ()</h3>
+<a class="indexterm" name="id2986345"></a><pre class="programlisting">void cairo_user_to_device (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x,
- double *y);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748555"></a><h3><a name="cairo-transform-distance"></a>cairo_transform_distance ()</h3><a class="indexterm" name="id2748566"></a><pre class="programlisting">void cairo_transform_distance (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double *y);</pre>
+<p>
+Transform a coordinate from user space to device space by
+multiplying the given point by the current transformation matrix
+(CTM).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td> X value of coordinate (in/out parameter)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td> Y value of coordinate (in/out parameter)
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986440"></a><h3>
+<a name="cairo-user-to-device-distance"></a>cairo_user_to_device_distance ()</h3>
+<a class="indexterm" name="id2986452"></a><pre class="programlisting">void cairo_user_to_device_distance (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *dx,
- double *dy);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748643"></a><h3><a name="cairo-inverse-transform-point"></a>cairo_inverse_transform_point ()</h3><a class="indexterm" name="id2748655"></a><pre class="programlisting">void cairo_inverse_transform_point (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double *dy);</pre>
+<p>
+Transform a distance vector from user space to device space. This
+function is similar to <a href="cairo-cairo-t.html#cairo-user-to-device"><tt class="function">cairo_user_to_device()</tt></a> except that the
+translation components of the CTM will be ignored when transforming
+(<i class="parameter"><tt>dx</tt></i>,<i class="parameter"><tt>dy</tt></i>).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx</tt></i>&#160;:</span></td>
+<td> X component of a distance vector (in/out parameter)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy</tt></i>&#160;:</span></td>
+<td> Y component of a distance vector (in/out parameter)
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986570"></a><h3>
+<a name="cairo-device-to-user"></a>cairo_device_to_user ()</h3>
+<a class="indexterm" name="id2986581"></a><pre class="programlisting">void cairo_device_to_user (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x,
- double *y);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748731"></a><h3><a name="cairo-inverse-transform-distance"></a>cairo_inverse_transform_distance ()</h3><a class="indexterm" name="id2748743"></a><pre class="programlisting">void cairo_inverse_transform_distance
- (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double *y);</pre>
+<p>
+Transform a coordinate from device space to user space by
+multiplying the given point by the inverse of the current
+transformation matrix (CTM).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td> X value of coordinate (in/out parameter)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td> Y value of coordinate (in/out parameter)
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986676"></a><h3>
+<a name="cairo-device-to-user-distance"></a>cairo_device_to_user_distance ()</h3>
+<a class="indexterm" name="id2986687"></a><pre class="programlisting">void cairo_device_to_user_distance (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *dx,
- double *dy);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748821"></a><h3><a name="cairo-new-path"></a>cairo_new_path ()</h3><a class="indexterm" name="id2748832"></a><pre class="programlisting">void cairo_new_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748871"></a><h3><a name="cairo-move-to"></a>cairo_move_to ()</h3><a class="indexterm" name="id2748882"></a><pre class="programlisting">void cairo_move_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double *dy);</pre>
+<p>
+Transform a distance vector from device space to user space. This
+function is similar to <a href="cairo-cairo-t.html#cairo-device-to-user"><tt class="function">cairo_device_to_user()</tt></a> except that the
+translation components of the inverse CTM will be ignored when
+transforming (<i class="parameter"><tt>dx</tt></i>,<i class="parameter"><tt>dy</tt></i>).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx</tt></i>&#160;:</span></td>
+<td> X component of a distance vector (in/out parameter)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy</tt></i>&#160;:</span></td>
+<td> Y component of a distance vector (in/out parameter)
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986805"></a><h3>
+<a name="cairo-new-path"></a>cairo_new_path ()</h3>
+<a class="indexterm" name="id2986816"></a><pre class="programlisting">void cairo_new_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986862"></a><h3>
+<a name="cairo-move-to"></a>cairo_move_to ()</h3>
+<a class="indexterm" name="id2986873"></a><pre class="programlisting">void cairo_move_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double x,
- double y);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2748959"></a><h3><a name="cairo-line-to"></a>cairo_line_to ()</h3><a class="indexterm" name="id2748970"></a><pre class="programlisting">void cairo_line_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double y);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2986960"></a><h3>
+<a name="cairo-line-to"></a>cairo_line_to ()</h3>
+<a class="indexterm" name="id2986971"></a><pre class="programlisting">void cairo_line_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double x,
- double y);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2749046"></a><h3><a name="cairo-curve-to"></a>cairo_curve_to ()</h3><a class="indexterm" name="id2749057"></a><pre class="programlisting">void cairo_curve_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double y);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2987059"></a><h3>
+<a name="cairo-curve-to"></a>cairo_curve_to ()</h3>
+<a class="indexterm" name="id2987069"></a><pre class="programlisting">void cairo_curve_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double x1,
double y1,
double x2,
double y2,
double x3,
- double y3);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x2</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y2</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x3</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y3</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2749208"></a><h3><a name="cairo-arc"></a>cairo_arc ()</h3><a class="indexterm" name="id2749219"></a><pre class="programlisting">void cairo_arc (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double y3);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x2</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y2</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x3</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y3</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2987241"></a><h3>
+<a name="cairo-arc"></a>cairo_arc ()</h3>
+<a class="indexterm" name="id2987251"></a><pre class="programlisting">void cairo_arc (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double xc,
double yc,
double radius,
double angle1,
- double angle2);</pre><p>
+ double angle2);</pre>
+<p>
Adds an arc from <i class="parameter"><tt>angle1</tt></i> to <i class="parameter"><tt>angle2</tt></i> to the current path. If there
is a current point, that point is connected to the start of the arc
by a straight line segment. Angles are measured in radians with an
@@ -662,200 +1641,931 @@ radians, use <tt class="literal">degrees * (M_PI / 180.)</tt>.) This
function gives the arc in the direction of increasing angle; see
<a href="cairo-cairo-t.html#cairo-arc-negative"><tt class="function">cairo_arc_negative()</tt></a> to get the arc in the direction of decreasing
angle.
-</p><p>
+</p>
+<p>
A full arc is drawn as a circle. To make an oval arc, you can scale
the current transformation matrix by different amounts in the X and
Y directions. For example, to draw a full oval in the box given
by <i class="parameter"><tt>x</tt></i>, <i class="parameter"><tt>y</tt></i>, <i class="parameter"><tt>width</tt></i>, <i class="parameter"><tt>height</tt></i>:
-</p><div class="informalexample"><pre class="programlisting">
+</p>
+<div class="informalexample"><pre class="programlisting">
cairo_save (cr);
cairo_translate (x + width / 2., y + height / 2.);
cairo_scale (1. / (height / 2.), 1. / (width / 2.));
cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI);
cairo_restore (cr);
-</pre></div><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a Cairo context
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>xc</tt></i>:</span></td><td> X position of the center of the arc
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>yc</tt></i>:</span></td><td> Y position of the center of the arc
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>radius</tt></i>:</span></td><td> the radius of the arc
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>angle1</tt></i>:</span></td><td> the start angle, in radians
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>angle2</tt></i>:</span></td><td> the end angle, in radians
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2749416"></a><h3><a name="cairo-arc-negative"></a>cairo_arc_negative ()</h3><a class="indexterm" name="id2749427"></a><pre class="programlisting">void cairo_arc_negative (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+</pre></div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>xc</tt></i>&#160;:</span></td>
+<td> X position of the center of the arc
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>yc</tt></i>&#160;:</span></td>
+<td> Y position of the center of the arc
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>radius</tt></i>&#160;:</span></td>
+<td> the radius of the arc
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>angle1</tt></i>&#160;:</span></td>
+<td> the start angle, in radians
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>angle2</tt></i>&#160;:</span></td>
+<td> the end angle, in radians
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2987489"></a><h3>
+<a name="cairo-arc-negative"></a>cairo_arc_negative ()</h3>
+<a class="indexterm" name="id2987501"></a><pre class="programlisting">void cairo_arc_negative (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double xc,
double yc,
double radius,
double angle1,
- double angle2);</pre><p>
+ double angle2);</pre>
+<p>
Adds an arc from <i class="parameter"><tt>angle1</tt></i> to <i class="parameter"><tt>angle2</tt></i> to the current path. The
function behaves identically to <a href="cairo-cairo-t.html#cairo-arc"><tt class="function">cairo_arc()</tt></a> except that instead of
giving the arc in the direction of increasing angle, it gives
-the arc in the direction of decreasing angle.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a Cairo context
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>xc</tt></i>:</span></td><td> X position of the center of the arc
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>yc</tt></i>:</span></td><td> Y position of the center of the arc
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>radius</tt></i>:</span></td><td> the radius of the arc
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>angle1</tt></i>:</span></td><td> the start angle, in radians
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>angle2</tt></i>:</span></td><td> the end angle, in radians
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2749583"></a><h3><a name="cairo-rel-move-to"></a>cairo_rel_move_to ()</h3><a class="indexterm" name="id2749594"></a><pre class="programlisting">void cairo_rel_move_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+the arc in the direction of decreasing angle.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>xc</tt></i>&#160;:</span></td>
+<td> X position of the center of the arc
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>yc</tt></i>&#160;:</span></td>
+<td> Y position of the center of the arc
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>radius</tt></i>&#160;:</span></td>
+<td> the radius of the arc
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>angle1</tt></i>&#160;:</span></td>
+<td> the start angle, in radians
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>angle2</tt></i>&#160;:</span></td>
+<td> the end angle, in radians
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2987681"></a><h3>
+<a name="cairo-rel-move-to"></a>cairo_rel_move_to ()</h3>
+<a class="indexterm" name="id2987692"></a><pre class="programlisting">void cairo_rel_move_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double dx,
- double dy);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2749670"></a><h3><a name="cairo-rel-line-to"></a>cairo_rel_line_to ()</h3><a class="indexterm" name="id2749682"></a><pre class="programlisting">void cairo_rel_line_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double dy);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2987780"></a><h3>
+<a name="cairo-rel-line-to"></a>cairo_rel_line_to ()</h3>
+<a class="indexterm" name="id2987791"></a><pre class="programlisting">void cairo_rel_line_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double dx,
- double dy);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2749758"></a><h3><a name="cairo-rel-curve-to"></a>cairo_rel_curve_to ()</h3><a class="indexterm" name="id2749769"></a><pre class="programlisting">void cairo_rel_curve_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double dy);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2987878"></a><h3>
+<a name="cairo-rel-curve-to"></a>cairo_rel_curve_to ()</h3>
+<a class="indexterm" name="id2987889"></a><pre class="programlisting">void cairo_rel_curve_to (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double dx1,
double dy1,
double dx2,
double dy2,
double dx3,
- double dy3);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx2</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy2</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dx3</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>dy3</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2749920"></a><h3><a name="cairo-rectangle"></a>cairo_rectangle ()</h3><a class="indexterm" name="id2749931"></a><pre class="programlisting">void cairo_rectangle (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double dy3);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx2</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy2</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dx3</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>dy3</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988060"></a><h3>
+<a name="cairo-rectangle"></a>cairo_rectangle ()</h3>
+<a class="indexterm" name="id2988071"></a><pre class="programlisting">void cairo_rectangle (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double x,
double y,
double width,
- double height);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750045"></a><h3><a name="cairo-close-path"></a>cairo_close_path ()</h3><a class="indexterm" name="id2750056"></a><pre class="programlisting">void cairo_close_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750095"></a><h3><a name="cairo-stroke"></a>cairo_stroke ()</h3><a class="indexterm" name="id2750106"></a><pre class="programlisting">void cairo_stroke (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750145"></a><h3><a name="cairo-fill"></a>cairo_fill ()</h3><a class="indexterm" name="id2750156"></a><pre class="programlisting">void cairo_fill (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750195"></a><h3><a name="cairo-copy-page"></a>cairo_copy_page ()</h3><a class="indexterm" name="id2750206"></a><pre class="programlisting">void cairo_copy_page (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750245"></a><h3><a name="cairo-show-page"></a>cairo_show_page ()</h3><a class="indexterm" name="id2750256"></a><pre class="programlisting">void cairo_show_page (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750295"></a><h3><a name="cairo-in-stroke"></a>cairo_in_stroke ()</h3><a class="indexterm" name="id2750306"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-bool-t">cairo_bool_t</a> cairo_in_stroke (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double height);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988201"></a><h3>
+<a name="cairo-close-path"></a>cairo_close_path ()</h3>
+<a class="indexterm" name="id2988212"></a><pre class="programlisting">void cairo_close_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988258"></a><h3>
+<a name="cairo-paint"></a>cairo_paint ()</h3>
+<a class="indexterm" name="id2988268"></a><pre class="programlisting">void cairo_paint (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+A drawing operator that paints the current source everywhere within
+the current clip region.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988319"></a><h3>
+<a name="cairo-paint-with-alpha"></a>cairo_paint_with_alpha ()</h3>
+<a class="indexterm" name="id2988330"></a><pre class="programlisting">void cairo_paint_with_alpha (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double alpha);</pre>
+<p>
+A drawing operator that paints the current source everywhere within
+the current clip region using a mask of constant alpha value
+<i class="parameter"><tt>alpha</tt></i>. The effect is similar to <a href="cairo-cairo-t.html#cairo-paint"><tt class="function">cairo_paint()</tt></a>, but the drawing
+is faded out using the alpha value.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>alpha</tt></i>&#160;:</span></td>
+<td> alpha value, between 0 (transparent) and 1 (opaque)
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988421"></a><h3>
+<a name="cairo-mask"></a>cairo_mask ()</h3>
+<a class="indexterm" name="id2988431"></a><pre class="programlisting">void cairo_mask (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a> *pattern);</pre>
+<p>
+A drawing operator that paints the current source
+using the alpha channel of <i class="parameter"><tt>pattern</tt></i> as a mask. (Opaque
+areas of <i class="parameter"><tt>mask</tt></i> are painted with the source, transparent
+areas are not painted.)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>pattern</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-pattern-t.html#cairo-pattern-t"><span class="type">cairo_pattern_t</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988524"></a><h3>
+<a name="cairo-mask-surface"></a>cairo_mask_surface ()</h3>
+<a class="indexterm" name="id2988535"></a><pre class="programlisting">void cairo_mask_surface (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
+ double surface_x,
+ double surface_y);</pre>
+<p>
+A drawing operator that paints the current source
+using the alpha channel of <i class="parameter"><tt>surface</tt></i> as a mask. (Opaque
+areas of <i class="parameter"><tt>surface</tt></i> are painted with the source, transparent
+areas are not painted.)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface_x</tt></i>&#160;:</span></td>
+<td> X coordinate at which to place the origin of <i class="parameter"><tt>surface</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface_y</tt></i>&#160;:</span></td>
+<td> Y coordinate at which to place the origin of <i class="parameter"><tt>surface</tt></i>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988683"></a><h3>
+<a name="cairo-stroke"></a>cairo_stroke ()</h3>
+<a class="indexterm" name="id2988694"></a><pre class="programlisting">void cairo_stroke (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+A drawing operator that strokes the current path according to the
+current line width, line join, line cap, and dash settings. After
+cairo_stroke, the current path will be cleared from the cairo
+context. See <a href="cairo-cairo-t.html#cairo-set-line-width"><tt class="function">cairo_set_line_width()</tt></a>, <a href="cairo-cairo-t.html#cairo-set-line-join"><tt class="function">cairo_set_line_join()</tt></a>,
+<a href="cairo-cairo-t.html#cairo-set-line-cap"><tt class="function">cairo_set_line_cap()</tt></a>, <a href="cairo-cairo-t.html#cairo-set-dash"><tt class="function">cairo_set_dash()</tt></a>, and
+<a href="cairo-cairo-t.html#cairo-stroke-preserve"><tt class="function">cairo_stroke_preserve()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988796"></a><h3>
+<a name="cairo-stroke-preserve"></a>cairo_stroke_preserve ()</h3>
+<a class="indexterm" name="id2988807"></a><pre class="programlisting">void cairo_stroke_preserve (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+A drawing operator that strokes the current path according to the
+current line width, line join, line cap, and dash settings. Unlike
+<a href="cairo-cairo-t.html#cairo-stroke"><tt class="function">cairo_stroke()</tt></a>, cairo_stroke_preserve preserves the path within the
+cairo context.
+</p>
+<p>
+See <a href="cairo-cairo-t.html#cairo-set-line-width"><tt class="function">cairo_set_line_width()</tt></a>, <a href="cairo-cairo-t.html#cairo-set-line-join"><tt class="function">cairo_set_line_join()</tt></a>,
+<a href="cairo-cairo-t.html#cairo-set-line-cap"><tt class="function">cairo_set_line_cap()</tt></a>, <a href="cairo-cairo-t.html#cairo-set-dash"><tt class="function">cairo_set_dash()</tt></a>, and
+<a href="cairo-cairo-t.html#cairo-stroke-preserve"><tt class="function">cairo_stroke_preserve()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2988922"></a><h3>
+<a name="cairo-fill"></a>cairo_fill ()</h3>
+<a class="indexterm" name="id2988933"></a><pre class="programlisting">void cairo_fill (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+A drawing operator that fills the current path according to the
+current fill rule. After cairo_fill, the current path will be
+cleared from the cairo context. See <a href="cairo-cairo-t.html#cairo-set-fill-rule"><tt class="function">cairo_set_fill_rule()</tt></a> and
+<a href="cairo-cairo-t.html#cairo-fill-preserve"><tt class="function">cairo_fill_preserve()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989004"></a><h3>
+<a name="cairo-fill-preserve"></a>cairo_fill_preserve ()</h3>
+<a class="indexterm" name="id2989015"></a><pre class="programlisting">void cairo_fill_preserve (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+A drawing operator that fills the current path according to the
+current fill rule. Unlike <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a>, cairo_fill_preserve
+preserves the path within the cairo context.
+</p>
+<p>
+See <a href="cairo-cairo-t.html#cairo-set-fill-rule"><tt class="function">cairo_set_fill_rule()</tt></a> and <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989099"></a><h3>
+<a name="cairo-copy-page"></a>cairo_copy_page ()</h3>
+<a class="indexterm" name="id2989110"></a><pre class="programlisting">void cairo_copy_page (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989156"></a><h3>
+<a name="cairo-show-page"></a>cairo_show_page ()</h3>
+<a class="indexterm" name="id2989167"></a><pre class="programlisting">void cairo_show_page (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989212"></a><h3>
+<a name="cairo-in-stroke"></a>cairo_in_stroke ()</h3>
+<a class="indexterm" name="id2989223"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-bool-t">cairo_bool_t</a> cairo_in_stroke (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double x,
- double y);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750393"></a><h3><a name="cairo-in-fill"></a>cairo_in_fill ()</h3><a class="indexterm" name="id2750404"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-bool-t">cairo_bool_t</a> cairo_in_fill (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double y);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989322"></a><h3>
+<a name="cairo-in-fill"></a>cairo_in_fill ()</h3>
+<a class="indexterm" name="id2989332"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-bool-t">cairo_bool_t</a> cairo_in_fill (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double x,
- double y);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750491"></a><h3><a name="cairo-bool-t"></a>cairo_bool_t</h3><a class="indexterm" name="id2750502"></a><pre class="programlisting">typedef int cairo_bool_t;
-</pre><p>
+ double y);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989431"></a><h3>
+<a name="cairo-bool-t"></a>cairo_bool_t</h3>
+<a class="indexterm" name="id2989442"></a><pre class="programlisting">typedef int cairo_bool_t;
+</pre>
+<p>
<a href="cairo-cairo-t.html#cairo-bool-t"><span class="type">cairo_bool_t</span></a> is used for boolean values. Returns of type
<a href="cairo-cairo-t.html#cairo-bool-t"><span class="type">cairo_bool_t</span></a> will always be either 0 or 1, but testing against
-these values explicitely is not encouraged; just use the
+these values explicitly is not encouraged; just use the
value as a boolean condition.
-</p><p>
-</p><div class="informalexample"><pre class="programlisting">
+</p>
+<p>
+</p>
+<div class="informalexample"><pre class="programlisting">
if (cairo_in_stroke (cr, x, y)) {
/* do something */
}
-</pre></div><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2750548"></a><h3><a name="cairo-stroke-extents"></a>cairo_stroke_extents ()</h3><a class="indexterm" name="id2750560"></a><pre class="programlisting">void cairo_stroke_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+</pre></div>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989494"></a><h3>
+<a name="cairo-stroke-extents"></a>cairo_stroke_extents ()</h3>
+<a class="indexterm" name="id2989505"></a><pre class="programlisting">void cairo_stroke_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x1,
double *y1,
double *x2,
- double *y2);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x2</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y2</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750674"></a><h3><a name="cairo-fill-extents"></a>cairo_fill_extents ()</h3><a class="indexterm" name="id2750685"></a><pre class="programlisting">void cairo_fill_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double *y2);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x2</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y2</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989635"></a><h3>
+<a name="cairo-fill-extents"></a>cairo_fill_extents ()</h3>
+<a class="indexterm" name="id2989646"></a><pre class="programlisting">void cairo_fill_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x1,
double *y1,
double *x2,
- double *y2);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y1</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x2</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y2</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750798"></a><h3><a name="cairo-init-clip"></a>cairo_init_clip ()</h3><a class="indexterm" name="id2750810"></a><pre class="programlisting">void cairo_init_clip (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750849"></a><h3><a name="cairo-clip"></a>cairo_clip ()</h3><a class="indexterm" name="id2750860"></a><pre class="programlisting">void cairo_clip (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2750898"></a><h3><a name="cairo-font-t"></a>cairo_font_t</h3><a class="indexterm" name="id2750909"></a><pre class="programlisting">typedef struct _cairo_font cairo_font_t;
-</pre><p>
-A <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> is a font scaled to a particular size and device
-resolution. A font can be set on a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> by using
-<a href="cairo-cairo-t.html#cairo-set-font"><tt class="function">cairo_set_font()</tt></a> assuming that the current transformation and
-target surface of the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> match that for which the
-<a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> was created. The effect of using a mismatched
-<a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> will be incorrect font metrics.</p><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2750972"></a><h3><a name="cairo-glyph-t"></a>cairo_glyph_t</h3><a class="indexterm" name="id2750984"></a><pre class="programlisting">typedef struct {
+ double *y2);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y1</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x2</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y2</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989776"></a><h3>
+<a name="cairo-clip"></a>cairo_clip ()</h3>
+<a class="indexterm" name="id2989786"></a><pre class="programlisting">void cairo_clip (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Establishes a new clip region by intersecting the current clip
+region with the current path as it would be filled by <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a>
+and according to the current fill rule (see <a href="cairo-cairo-t.html#cairo-set-fill-rule"><tt class="function">cairo_set_fill_rule()</tt></a>).
+</p>
+<p>
+After cairo_clip, the current path will be cleared from the cairo
+context.
+</p>
+<p>
+The current clip region affects all drawing operations by
+effectively masking out any changes to the surface that are outside
+the current clip region.
+</p>
+<p>
+Calling <a href="cairo-cairo-t.html#cairo-clip"><tt class="function">cairo_clip()</tt></a> can only make the clip region smaller, never
+larger. But the current clip is part of the graphics state, so a
+tempoarary restriction of the clip region can be achieved by
+calling <a href="cairo-cairo-t.html#cairo-clip"><tt class="function">cairo_clip()</tt></a> within a <a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a>/<a href="cairo-cairo-t.html#cairo-restore"><tt class="function">cairo_restore()</tt></a>
+pair. The only other means of increasing the size of the clip
+region is <a href="cairo-cairo-t.html#cairo-reset-clip"><tt class="function">cairo_reset_clip()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2989924"></a><h3>
+<a name="cairo-clip-preserve"></a>cairo_clip_preserve ()</h3>
+<a class="indexterm" name="id2989935"></a><pre class="programlisting">void cairo_clip_preserve (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Establishes a new clip region by intersecting the current clip
+region with the current path as it would be filled by <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a>
+and according to the current fill rule (see <a href="cairo-cairo-t.html#cairo-set-fill-rule"><tt class="function">cairo_set_fill_rule()</tt></a>).
+</p>
+<p>
+Unlike <a href="cairo-cairo-t.html#cairo-clip"><tt class="function">cairo_clip()</tt></a>, cairo_clip_preserve preserves the path within
+the cairo context.
+</p>
+<p>
+The current clip region affects all drawing operations by
+effectively masking out any changes to the surface that are outside
+the current clip region.
+</p>
+<p>
+Calling <a href="cairo-cairo-t.html#cairo-clip"><tt class="function">cairo_clip()</tt></a> can only make the clip region smaller, never
+larger. But the current clip is part of the graphics state, so a
+tempoarary restriction of the clip region can be achieved by
+calling <a href="cairo-cairo-t.html#cairo-clip"><tt class="function">cairo_clip()</tt></a> within a <a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a>/<a href="cairo-cairo-t.html#cairo-restore"><tt class="function">cairo_restore()</tt></a>
+pair. The only other means of increasing the size of the clip
+region is <a href="cairo-cairo-t.html#cairo-reset-clip"><tt class="function">cairo_reset_clip()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990082"></a><h3>
+<a name="cairo-reset-clip"></a>cairo_reset_clip ()</h3>
+<a class="indexterm" name="id2990092"></a><pre class="programlisting">void cairo_reset_clip (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Reset the current clip region to its original, unrestricted
+state. That is, set the clip region to an infinitely large shape
+containing the target surface. Equivalently, if infinity is too
+hard to grasp, one can imagine the clip region being reset to the
+exact bounds of the target surface.
+</p>
+<p>
+Note that code meant to be reusable should not call
+<a href="cairo-cairo-t.html#cairo-reset-clip"><tt class="function">cairo_reset_clip()</tt></a> as it will cause results unexpected by
+higher-level code which calls <a href="cairo-cairo-t.html#cairo-clip"><tt class="function">cairo_clip()</tt></a>. Consider using
+<a href="cairo-cairo-t.html#cairo-save"><tt class="function">cairo_save()</tt></a> and <a href="cairo-cairo-t.html#cairo-restore"><tt class="function">cairo_restore()</tt></a> around <a href="cairo-cairo-t.html#cairo-clip"><tt class="function">cairo_clip()</tt></a> as a more
+robust means of temporarily restricting the clip region.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990201"></a><h3>
+<a name="cairo-glyph-t"></a>cairo_glyph_t</h3>
+<a class="indexterm" name="id2990212"></a><pre class="programlisting">typedef struct {
unsigned long index;
double x;
double y;
} cairo_glyph_t;
-</pre><p>
+</pre>
+<p>
The <a href="cairo-cairo-t.html#cairo-glyph-t"><span class="type">cairo_glyph_t</span></a> structure holds information about a single glyph
when drawing or measuring text. A font is (in simple terms) a
collection of shapes used to draw text. A glyph is one of these
@@ -866,347 +2576,1083 @@ characters. Cairo doesn't expose any way of converting input text
into glyphs, so in order to use the Cairo interfaces that take
arrays of glyphs, you must directly access the appropriate
underlying font system.
-</p><p>
+</p>
+<p>
Note that the offsets given by <i class="parameter"><tt>x</tt></i> and <i class="parameter"><tt>y</tt></i> are not cumulative. When
drawing or measuring text, each glyph is individually positioned
-with respect to the overall origin</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term">unsignedlong<i class="structfield"><tt>index</tt></i>;</span></td><td> glyph index in the font. The exact interpretation of the
+with respect to the overall origin</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">unsigned&#160;long&#160;<i class="structfield"><tt>index</tt></i>;</span></td>
+<td> glyph index in the font. The exact interpretation of the
glyph index depends on the font technology being used.
-</td></tr><tr><td><span class="term">double<i class="structfield"><tt>x</tt></i>;</span></td><td> the offset in the X direction between the origin used for
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>x</tt></i>;</span></td>
+<td> the offset in the X direction between the origin used for
drawing or measuring the string and the origin of this glyph.
-</td></tr><tr><td><span class="term">double<i class="structfield"><tt>y</tt></i>;</span></td><td> the offset in the Y direction between the origin used for
+</td>
+</tr>
+<tr>
+<td>
+<span class="term">double&#160;<i class="structfield"><tt>y</tt></i>;</span></td>
+<td> the offset in the Y direction between the origin used for
drawing or measuring the string and the origin of this glyph.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751108"></a><h3><a name="cairo-text-extents-t"></a>cairo_text_extents_t</h3><a class="indexterm" name="id2751119"></a><pre class="programlisting">typedef struct {
- double x_bearing;
- double y_bearing;
- double width;
- double height;
- double x_advance;
- double y_advance;
-} cairo_text_extents_t;
-</pre><p>
-The <a href="cairo-cairo-t.html#cairo-text-extents-t"><span class="type">cairo_text_extents_t</span></a>&lt; structure stores the extents of a single
-glyph or a string of glyphs in user-space coordinates. Because text
-extents are in user-space coordinates, they don't scale along with
-the current transformation matrix. If you call
-<tt class="literal">cairo_scale(cr, 2.0, 2.0)</tt>, text will
-be drawn twice as big, but the reported text extents will not be
-doubled. They will change slightly due to hinting (so you can't
-assume that metrics are independent of the transformation matrix),
-but otherwise will remain unchanged.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term">double<i class="structfield"><tt>x_bearing</tt></i>;</span></td><td> the horizontal distance from the origin to the
- leftmost part of the glyphs as drawn. Positive if the
- glyphs lie entirely to the right of the origin.
-</td></tr><tr><td><span class="term">double<i class="structfield"><tt>y_bearing</tt></i>;</span></td><td> the vertical distance from the origin to the
- topmost part of the glyphs as drawn. Positive only if the
- glyphs lie completely below the origin; will usually be
- negative.
-</td></tr><tr><td><span class="term">double<i class="structfield"><tt>width</tt></i>;</span></td><td> width of the glyphs as drawn
-</td></tr><tr><td><span class="term">double<i class="structfield"><tt>height</tt></i>;</span></td><td> height of the glyphs as drawn
-</td></tr><tr><td><span class="term">double<i class="structfield"><tt>x_advance</tt></i>;</span></td><td>distance to advance in the X direction
- after drawing these glyphs
-</td></tr><tr><td><span class="term">double<i class="structfield"><tt>y_advance</tt></i>;</span></td><td> distance to advance in the Y direction
- after drawing these glyphs. Will typically be zero except
- for vertical text layout as found in East-Asian languages.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751294"></a><h3><a name="cairo-font-extents-t"></a>cairo_font_extents_t</h3><a class="indexterm" name="id2751306"></a><pre class="programlisting">typedef struct {
- double ascent;
- double descent;
- double height;
- double max_x_advance;
- double max_y_advance;
-} cairo_font_extents_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2751319"></a><h3><a name="cairo-font-slant-t"></a>enum cairo_font_slant_t</h3><a class="indexterm" name="id2751331"></a><pre class="programlisting">typedef enum cairo_font_slant {
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990345"></a><h3>
+<a name="cairo-font-slant-t"></a>enum cairo_font_slant_t</h3>
+<a class="indexterm" name="id2990357"></a><pre class="programlisting">typedef enum cairo_font_slant {
CAIRO_FONT_SLANT_NORMAL,
CAIRO_FONT_SLANT_ITALIC,
CAIRO_FONT_SLANT_OBLIQUE
} cairo_font_slant_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2751344"></a><h3><a name="cairo-font-weight-t"></a>enum cairo_font_weight_t</h3><a class="indexterm" name="id2751356"></a><pre class="programlisting">typedef enum cairo_font_weight {
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990374"></a><h3>
+<a name="cairo-font-weight-t"></a>enum cairo_font_weight_t</h3>
+<a class="indexterm" name="id2990385"></a><pre class="programlisting">typedef enum cairo_font_weight {
CAIRO_FONT_WEIGHT_NORMAL,
CAIRO_FONT_WEIGHT_BOLD
} cairo_font_weight_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2751368"></a><h3><a name="cairo-select-font"></a>cairo_select_font ()</h3><a class="indexterm" name="id2751380"></a><pre class="programlisting">void cairo_select_font (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990402"></a><h3>
+<a name="cairo-select-font-face"></a>cairo_select_font_face ()</h3>
+<a class="indexterm" name="id2990413"></a><pre class="programlisting">void cairo_select_font_face (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
const char *family,
<a href="cairo-cairo-t.html#cairo-font-slant-t">cairo_font_slant_t</a> slant,
- <a href="cairo-cairo-t.html#cairo-font-weight-t">cairo_font_weight_t</a> weight);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>family</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>slant</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>weight</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751475"></a><h3><a name="cairo-scale-font"></a>cairo_scale_font ()</h3><a class="indexterm" name="id2751486"></a><pre class="programlisting">void cairo_scale_font (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double scale);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>scale</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751544"></a><h3><a name="cairo-transform-font"></a>cairo_transform_font ()</h3><a class="indexterm" name="id2751556"></a><pre class="programlisting">void cairo_transform_font (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751614"></a><h3><a name="cairo-show-text"></a>cairo_show_text ()</h3><a class="indexterm" name="id2751625"></a><pre class="programlisting">void cairo_show_text (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- unsigned char *utf8);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>utf8</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751683"></a><h3><a name="cairo-show-glyphs"></a>cairo_show_glyphs ()</h3><a class="indexterm" name="id2751694"></a><pre class="programlisting">void cairo_show_glyphs (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-t.html#cairo-font-weight-t">cairo_font_weight_t</a> weight);</pre>
+<p>
+Selects a family and style of font from a simplified description as
+a family name, slant and weight. This function is meant to be used
+only for applications with simple font needs: Cairo doesn't provide
+for operations such as listing all available fonts on the system,
+and it is expected that most applications will need to use a more
+comprehensive font handling and text layout library in addition to
+Cairo.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>family</tt></i>&#160;:</span></td>
+<td> a font family name, encoded in UTF-8
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>slant</tt></i>&#160;:</span></td>
+<td> the slant for the font
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>weight</tt></i>&#160;:</span></td>
+<td> the weight for the font
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990542"></a><h3>
+<a name="cairo-set-font-size"></a>cairo_set_font_size ()</h3>
+<a class="indexterm" name="id2990553"></a><pre class="programlisting">void cairo_set_font_size (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ double size);</pre>
+<p>
+Sets the current font matrix to a scale by a factor of <i class="parameter"><tt>size</tt></i>, replacing
+any font matrix previously set with <a href="cairo-cairo-t.html#cairo-set-font-size"><tt class="function">cairo_set_font_size()</tt></a> or
+<a href="cairo-cairo-t.html#cairo-set-font-matrix"><tt class="function">cairo_set_font_matrix()</tt></a>. This results in a font size of <i class="parameter"><tt>size</tt></i> user space
+units. (More precisely, this matrix will result in the font's
+em-square being a <i class="parameter"><tt>size</tt></i> by <i class="parameter"><tt>size</tt></i> square in user space.)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>size</tt></i>&#160;:</span></td>
+<td> the new font size, in user space units
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990678"></a><h3>
+<a name="cairo-set-font-matrix"></a>cairo_set_font_matrix ()</h3>
+<a class="indexterm" name="id2990690"></a><pre class="programlisting">void cairo_set_font_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+Sets the current font matrix to <i class="parameter"><tt>matrix</tt></i>. The font matrix gives a
+transformation from the design space of the font (in this space,
+the em-square is 1 unit by 1 unit) to user space. Normally, a
+simple scale is used (see <a href="cairo-cairo-t.html#cairo-set-font-size"><tt class="function">cairo_set_font_size()</tt></a>), but a more
+complex font matrix can be used to shear the font
+or stretch it unequally along the two axes</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-matrix-t.html#cairo-matrix-t"><span class="type">cairo_matrix_t</span></a> describing a transform to be applied to
+the current font.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990797"></a><h3>
+<a name="cairo-get-font-matrix"></a>cairo_get_font_matrix ()</h3>
+<a class="indexterm" name="id2990808"></a><pre class="programlisting">void cairo_get_font_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+Stores the current font matrix into <i class="parameter"><tt>matrix</tt></i>. See
+<a href="cairo-cairo-t.html#cairo-set-font-matrix"><tt class="function">cairo_set_font_matrix()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> return value for the matrix
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990903"></a><h3>
+<a name="cairo-show-text"></a>cairo_show_text ()</h3>
+<a class="indexterm" name="id2990913"></a><pre class="programlisting">void cairo_show_text (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const char *utf8);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>utf8</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2990980"></a><h3>
+<a name="cairo-show-glyphs"></a>cairo_show_glyphs ()</h3>
+<a class="indexterm" name="id2990991"></a><pre class="programlisting">void cairo_show_glyphs (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
- int num_glyphs);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>glyphs</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>num_glyphs</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751771"></a><h3><a name="cairo-current-font"></a>cairo_current_font ()</h3><a class="indexterm" name="id2751782"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a>* cairo_current_font (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-Gets the current font object for a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>. If there is no current
-font object, because the font parameters, transform, or target
-surface has been changed since a font was last used, a font object
-will be created and stored in in the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> the current font object. Can return <tt class="literal">NULL</tt>
+ int num_glyphs);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>glyphs</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>num_glyphs</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991079"></a><h3>
+<a name="cairo-get-font-face"></a>cairo_get_font_face ()</h3>
+<a class="indexterm" name="id2991090"></a><pre class="programlisting"><a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a>* cairo_get_font_face (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current font face for a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current font object. Can return <tt class="literal">NULL</tt>
on out-of-memory or if the context is already in
- an error state. This object is owned by Cairo. To keep
- a reference to it, you must call <a href="cairo-cairo-t.html#cairo-font-reference"><tt class="function">cairo_font_reference()</tt></a>.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751874"></a><h3><a name="cairo-current-font-extents"></a>cairo_current_font_extents ()</h3><a class="indexterm" name="id2751887"></a><pre class="programlisting">void cairo_current_font_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>extents</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2751945"></a><h3><a name="cairo-set-font"></a>cairo_set_font ()</h3><a class="indexterm" name="id2751956"></a><pre class="programlisting">void cairo_set_font (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);</pre><p>
-Replaces the current <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> object in the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> with
-<i class="parameter"><tt>font</tt></i>. The replaced font in the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> will be destroyed if there
-are no other references to it. Since a <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a> is specific to
-a particular output device and size, changing the transformation,
-font transformation, or target surfaces of a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> will clear
-any previously set font. Setting the font using <a href="cairo-cairo-t.html#cairo-set-font"><tt class="function">cairo_set_font()</tt></a> is
-exclusive with the simple font selection API provided by
-<a href="cairo-cairo-t.html#cairo-select-font"><tt class="function">cairo_select_font()</tt></a>. The size and transformation set by
-<a href="cairo-cairo-t.html#cairo-scale-font"><tt class="function">cairo_scale_font()</tt></a> and <a href="cairo-cairo-t.html#cairo-transform-font"><tt class="function">cairo_transform_font()</tt></a> are ignored unless
-they were taken into account when creating <i class="parameter"><tt>font</tt></i>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a>, or <tt class="literal">NULL</tt> to unset any previously set font.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752116"></a><h3><a name="cairo-text-extents"></a>cairo_text_extents ()</h3><a class="indexterm" name="id2752127"></a><pre class="programlisting">void cairo_text_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- unsigned char *utf8,
- <a href="cairo-cairo-t.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>utf8</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>extents</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752204"></a><h3><a name="cairo-glyph-extents"></a>cairo_glyph_extents ()</h3><a class="indexterm" name="id2752216"></a><pre class="programlisting">void cairo_glyph_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ an error state. This object is owned by cairo. To keep
+ a reference to it, you must call <a href="cairo-Fonts.html#cairo-font-face-reference"><tt class="function">cairo_font_face_reference()</tt></a>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991184"></a><h3>
+<a name="cairo-font-extents"></a>cairo_font_extents ()</h3>
+<a class="indexterm" name="id2991195"></a><pre class="programlisting">void cairo_font_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-Fonts.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);</pre>
+<p>
+Gets the font extents for the currently selected font.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>extents</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-extents-t"><span class="type">cairo_font_extents_t</span></a> object into which the results
+will be stored.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991282"></a><h3>
+<a name="cairo-set-font-face"></a>cairo_set_font_face ()</h3>
+<a class="indexterm" name="id2991293"></a><pre class="programlisting">void cairo_set_font_face (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-Fonts.html#cairo-font-face-t">cairo_font_face_t</a> *font_face);</pre>
+<p>
+Replaces the current <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a> object in the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> with
+<i class="parameter"><tt>font_face</tt></i>. The replaced font face in the <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> will be
+destroyed if there are no other references to it.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>font_face</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-font-face-t"><span class="type">cairo_font_face_t</span></a>, or <tt class="literal">NULL</tt> to restore to the default font
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991414"></a><h3>
+<a name="cairo-text-extents"></a>cairo_text_extents ()</h3>
+<a class="indexterm" name="id2991425"></a><pre class="programlisting">void cairo_text_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const char *utf8,
+ <a href="cairo-Fonts.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);</pre>
+<p>
+Gets the extents for a string of text. The extents describe a
+user-space rectangle that encloses the "inked" portion of the text,
+(as it would be drawn by cairo_show_text). Additionally, the
+x_advance and y_advance values indicate the amount by which the
+current point would be advanced by cairo_show_text.
+</p>
+<p>
+Note that whitespace characters do not directly contribute to the
+size of the rectangle (extents.width and extents.height). They do
+contribute indirectly by changing the position of non-whitespace
+characters. In particular, trailing whitespace characters are
+likely to not affect the size of the rectangle, though they will
+affect the x_advance and y_advance values.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>utf8</tt></i>&#160;:</span></td>
+<td> a string of text, encoded in utf-8
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>extents</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-text-extents-t"><span class="type">cairo_text_extents_t</span></a> object into which the results
+will be stored.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991548"></a><h3>
+<a name="cairo-glyph-extents"></a>cairo_glyph_extents ()</h3>
+<a class="indexterm" name="id2991559"></a><pre class="programlisting">void cairo_glyph_extents (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
int num_glyphs,
- <a href="cairo-cairo-t.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>glyphs</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>num_glyphs</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>extents</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752312"></a><h3><a name="cairo-text-path"></a>cairo_text_path ()</h3><a class="indexterm" name="id2752324"></a><pre class="programlisting">void cairo_text_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- unsigned char *utf8);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>utf8</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752381"></a><h3><a name="cairo-glyph-path"></a>cairo_glyph_path ()</h3><a class="indexterm" name="id2752393"></a><pre class="programlisting">void cairo_glyph_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
- int num_glyphs);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>glyphs</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>num_glyphs</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752470"></a><h3><a name="cairo-font-reference"></a>cairo_font_reference ()</h3><a class="indexterm" name="id2752482"></a><pre class="programlisting">void cairo_font_reference (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752521"></a><h3><a name="cairo-font-destroy"></a>cairo_font_destroy ()</h3><a class="indexterm" name="id2752533"></a><pre class="programlisting">void cairo_font_destroy (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752572"></a><h3><a name="cairo-font-extents"></a>cairo_font_extents ()</h3><a class="indexterm" name="id2752583"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_font_extents (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *font_matrix,
- <a href="cairo-cairo-t.html#cairo-font-extents-t">cairo_font_extents_t</a> *extents);</pre><p>
-Gets the metrics for a <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a>.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>font_matrix</tt></i>:</span></td><td> the font transformation for which this font was
- created. (See <a href="cairo-cairo-t.html#cairo-transform-font"><tt class="function">cairo_transform_font()</tt></a>). This is needed
- properly convert the metrics from the font into user space.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>extents</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-font-extents-t"><span class="type">cairo_font_extents_t</span></a> which to store the retrieved extents.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> <tt class="literal">CAIRO_STATUS_SUCCESS</tt> on success. Otherwise, an
- error such as <tt class="literal">CAIRO_STATUS_NO_MEMORY</tt>.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752716"></a><h3><a name="cairo-font-glyph-extents"></a>cairo_font_glyph_extents ()</h3><a class="indexterm" name="id2752729"></a><pre class="programlisting">void cairo_font_glyph_extents (<a href="cairo-cairo-t.html#cairo-font-t">cairo_font_t</a> *font,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *font_matrix,
+ <a href="cairo-Fonts.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);</pre>
+<p>
+Gets the extents for an array of glyphs. The extents describe a
+user-space rectangle that encloses the "inked" portion of the
+glyphs, (as they would be drawn by cairo_show_glyphs).
+Additionally, the x_advance and y_advance values indicate the
+amount by which the current point would be advanced by
+cairo_show_glyphs.
+</p>
+<p>
+Note that whitespace glyphs do not contribute to the size of the
+rectangle (extents.width and extents.height).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>glyphs</tt></i>&#160;:</span></td>
+<td> an array of <a href="cairo-cairo-t.html#cairo-glyph-t"><span class="type">cairo_glyph_t</span></a> objects
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>num_glyphs</tt></i>&#160;:</span></td>
+<td> the number of elements in <i class="parameter"><tt>glyphs</tt></i>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>extents</tt></i>&#160;:</span></td>
+<td> a <a href="cairo-Fonts.html#cairo-text-extents-t"><span class="type">cairo_text_extents_t</span></a> object into which the results
+will be stored
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991712"></a><h3>
+<a name="cairo-text-path"></a>cairo_text_path ()</h3>
+<a class="indexterm" name="id2991723"></a><pre class="programlisting">void cairo_text_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ const char *utf8);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>utf8</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991790"></a><h3>
+<a name="cairo-glyph-path"></a>cairo_glyph_path ()</h3>
+<a class="indexterm" name="id2991801"></a><pre class="programlisting">void cairo_glyph_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
<a href="cairo-cairo-t.html#cairo-glyph-t">cairo_glyph_t</a> *glyphs,
- int num_glyphs,
- <a href="cairo-cairo-t.html#cairo-text-extents-t">cairo_text_extents_t</a> *extents);</pre><p>
-<a href="cairo-cairo-t.html#cairo-font-glyph-extents"><tt class="function">cairo_font_glyph_extents()</tt></a> gets the overall metrics for a string of
-glyphs. The X and Y offsets in <i class="parameter"><tt>glyphs</tt></i> are taken from an origin of 0,0.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>font</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-font-t"><span class="type">cairo_font_t</span></a>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>font_matrix</tt></i>:</span></td><td> the font transformation for which this font was
- created. (See <a href="cairo-cairo-t.html#cairo-transform-font"><tt class="function">cairo_transform_font()</tt></a>). This is needed
- properly convert the metrics from the font into user space.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>glyphs</tt></i>:</span></td><td> an array of glyph IDs with X and Y offsets.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>num_glyphs</tt></i>:</span></td><td> the number of glyphs in the <i class="parameter"><tt>glyphs</tt></i> array
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>extents</tt></i>:</span></td><td> a <a href="cairo-cairo-t.html#cairo-text-extents-t"><span class="type">cairo_text_extents_t</span></a> which to store the retrieved extents.
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752891"></a><h3><a name="cairo-show-surface"></a>cairo_show_surface ()</h3><a class="indexterm" name="id2752902"></a><pre class="programlisting">void cairo_show_surface (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface,
- int width,
- int height);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>surface</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2752998"></a><h3><a name="cairo-current-operator"></a>cairo_current_operator ()</h3><a class="indexterm" name="id2753009"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a> cairo_current_operator (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753059"></a><h3><a name="cairo-current-rgb-color"></a>cairo_current_rgb_color ()</h3><a class="indexterm" name="id2753071"></a><pre class="programlisting">void cairo_current_rgb_color (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- double *red,
- double *green,
- double *blue);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>red</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>green</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>blue</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753166"></a><h3><a name="cairo-current-pattern"></a>cairo_current_pattern ()</h3><a class="indexterm" name="id2753178"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_current_pattern (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753227"></a><h3><a name="cairo-current-alpha"></a>cairo_current_alpha ()</h3><a class="indexterm" name="id2753240"></a><pre class="programlisting">double cairo_current_alpha (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753289"></a><h3><a name="cairo-current-tolerance"></a>cairo_current_tolerance ()</h3><a class="indexterm" name="id2753300"></a><pre class="programlisting">double cairo_current_tolerance (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753350"></a><h3><a name="cairo-current-point"></a>cairo_current_point ()</h3><a class="indexterm" name="id2753362"></a><pre class="programlisting">void cairo_current_point (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ int num_glyphs);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>glyphs</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>num_glyphs</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991890"></a><h3>
+<a name="cairo-get-operator"></a>cairo_get_operator ()</h3>
+<a class="indexterm" name="id2991901"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-operator-t">cairo_operator_t</a> cairo_get_operator (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current compositing operator for a cairo context.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current compositing operator.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2991962"></a><h3>
+<a name="cairo-get-source"></a>cairo_get_source ()</h3>
+<a class="indexterm" name="id2991973"></a><pre class="programlisting"><a href="cairo-cairo-pattern-t.html#cairo-pattern-t">cairo_pattern_t</a>* cairo_get_source (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current source pattern for <i class="parameter"><tt>cr</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current source pattern. This object is owned by
+cairo. To keep a reference to it, you must call
+<a href="cairo-cairo-pattern-t.html#cairo-pattern-reference"><tt class="function">cairo_pattern_reference()</tt></a>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992051"></a><h3>
+<a name="cairo-get-tolerance"></a>cairo_get_tolerance ()</h3>
+<a class="indexterm" name="id2992063"></a><pre class="programlisting">double cairo_get_tolerance (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current tolerance value, as set by <a href="cairo-cairo-t.html#cairo-set-tolerance"><tt class="function">cairo_set_tolerance()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current tolerance value.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992133"></a><h3>
+<a name="cairo-get-current-point"></a>cairo_get_current_point ()</h3>
+<a class="indexterm" name="id2992144"></a><pre class="programlisting">void cairo_get_current_point (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
double *x,
- double *y);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>x</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>y</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753438"></a><h3><a name="cairo-current-fill-rule"></a>cairo_current_fill_rule ()</h3><a class="indexterm" name="id2753450"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-fill-rule-t">cairo_fill_rule_t</a> cairo_current_fill_rule (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753500"></a><h3><a name="cairo-current-line-width"></a>cairo_current_line_width ()</h3><a class="indexterm" name="id2753512"></a><pre class="programlisting">double cairo_current_line_width (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753561"></a><h3><a name="cairo-current-line-cap"></a>cairo_current_line_cap ()</h3><a class="indexterm" name="id2753573"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-line-cap-t">cairo_line_cap_t</a> cairo_current_line_cap (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753623"></a><h3><a name="cairo-current-line-join"></a>cairo_current_line_join ()</h3><a class="indexterm" name="id2753634"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-line-join-t">cairo_line_join_t</a> cairo_current_line_join (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753684"></a><h3><a name="cairo-current-miter-limit"></a>cairo_current_miter_limit ()</h3><a class="indexterm" name="id2753697"></a><pre class="programlisting">double cairo_current_miter_limit (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753746"></a><h3><a name="cairo-current-matrix"></a>cairo_current_matrix ()</h3><a class="indexterm" name="id2753758"></a><pre class="programlisting">void cairo_current_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>matrix</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753816"></a><h3><a name="cairo-current-target-surface"></a>cairo_current_target_surface ()</h3><a class="indexterm" name="id2753828"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_current_target_surface
- (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2753879"></a><h3><a name="cairo-current-path"></a>cairo_current_path ()</h3><a class="indexterm" name="id2753891"></a><pre class="programlisting">void cairo_current_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- cairo_move_to_func_t *move_to,
- cairo_line_to_func_t *line_to,
- cairo_curve_to_func_t *curve_to,
- cairo_close_path_func_t *close_path,
- void *closure);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>move_to</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>line_to</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>curve_to</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>close_path</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>closure</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2754026"></a><h3><a name="cairo-current-path-flat"></a>cairo_current_path_flat ()</h3><a class="indexterm" name="id2754037"></a><pre class="programlisting">void cairo_current_path_flat (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
- cairo_move_to_func_t *move_to,
- cairo_line_to_func_t *line_to,
- cairo_close_path_func_t *close_path,
- void *closure);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>move_to</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>line_to</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>close_path</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>closure</tt></i>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2754153"></a><h3><a name="cairo-status-t"></a>enum cairo_status_t</h3><a class="indexterm" name="id2754164"></a><pre class="programlisting">typedef enum cairo_status {
+ double *y);</pre>
+<p>
+Gets the current point of the current path, which is
+conceptually the final point reached by the path so far.
+</p>
+<p>
+The current point is returned in the user-space coordinate
+system. If there is no defined current point then <i class="parameter"><tt>x</tt></i> and <i class="parameter"><tt>y</tt></i> will
+both be set to 0.0.
+</p>
+<p>
+Most path construction functions alter the current point. See the
+following for details on how they affect the current point:
+</p>
+<p>
+<a href="cairo-cairo-t.html#cairo-new-path"><tt class="function">cairo_new_path()</tt></a>, <a href="cairo-cairo-t.html#cairo-move-to"><tt class="function">cairo_move_to()</tt></a>, <a href="cairo-cairo-t.html#cairo-line-to"><tt class="function">cairo_line_to()</tt></a>,
+<a href="cairo-cairo-t.html#cairo-curve-to"><tt class="function">cairo_curve_to()</tt></a>, <a href="cairo-cairo-t.html#cairo-arc"><tt class="function">cairo_arc()</tt></a>, <a href="cairo-cairo-t.html#cairo-rel-move-to"><tt class="function">cairo_rel_move_to()</tt></a>,
+<a href="cairo-cairo-t.html#cairo-rel-line-to"><tt class="function">cairo_rel_line_to()</tt></a>, <a href="cairo-cairo-t.html#cairo-rel-curve-to"><tt class="function">cairo_rel_curve_to()</tt></a>, <a href="cairo-cairo-t.html#cairo-arc"><tt class="function">cairo_arc()</tt></a>,
+<a href="cairo-cairo-t.html#cairo-text-path"><tt class="function">cairo_text_path()</tt></a>, <tt class="function">cairo_stroke_to_path()</tt></p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>x</tt></i>&#160;:</span></td>
+<td> return value for X coordinate of the current point
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>y</tt></i>&#160;:</span></td>
+<td> return value for Y coordinate of the current point
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992371"></a><h3>
+<a name="cairo-get-fill-rule"></a>cairo_get_fill_rule ()</h3>
+<a class="indexterm" name="id2992382"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-fill-rule-t">cairo_fill_rule_t</a> cairo_get_fill_rule (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current fill rule, as set by <a href="cairo-cairo-t.html#cairo-set-fill-rule"><tt class="function">cairo_set_fill_rule()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current fill rule.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992453"></a><h3>
+<a name="cairo-get-line-width"></a>cairo_get_line_width ()</h3>
+<a class="indexterm" name="id2992464"></a><pre class="programlisting">double cairo_get_line_width (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current line width, as set by <a href="cairo-cairo-t.html#cairo-set-line-width"><tt class="function">cairo_set_line_width()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current line width, in user-space units.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992535"></a><h3>
+<a name="cairo-get-line-cap"></a>cairo_get_line_cap ()</h3>
+<a class="indexterm" name="id2992547"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-line-cap-t">cairo_line_cap_t</a> cairo_get_line_cap (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current line cap style, as set by <a href="cairo-cairo-t.html#cairo-set-line-cap"><tt class="function">cairo_set_line_cap()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current line cap style.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992618"></a><h3>
+<a name="cairo-get-line-join"></a>cairo_get_line_join ()</h3>
+<a class="indexterm" name="id2992629"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-line-join-t">cairo_line_join_t</a> cairo_get_line_join (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current line join style, as set by <a href="cairo-cairo-t.html#cairo-set-line-join"><tt class="function">cairo_set_line_join()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current line join style.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992700"></a><h3>
+<a name="cairo-get-miter-limit"></a>cairo_get_miter_limit ()</h3>
+<a class="indexterm" name="id2992711"></a><pre class="programlisting">double cairo_get_miter_limit (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the current miter limit, as set by <a href="cairo-cairo-t.html#cairo-set-miter-limit"><tt class="function">cairo_set_miter_limit()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the current miter limit.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992782"></a><h3>
+<a name="cairo-get-matrix"></a>cairo_get_matrix ()</h3>
+<a class="indexterm" name="id2992793"></a><pre class="programlisting">void cairo_get_matrix (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-matrix-t.html#cairo-matrix-t">cairo_matrix_t</a> *matrix);</pre>
+<p>
+Stores the current transformation matrix (CTM) into <i class="parameter"><tt>matrix</tt></i>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>matrix</tt></i>&#160;:</span></td>
+<td> return value for the matrix
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992871"></a><h3>
+<a name="cairo-get-target"></a>cairo_get_target ()</h3>
+<a class="indexterm" name="id2992882"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_get_target (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets the target surface for the cairo context as passed to
+<a href="cairo-cairo-t.html#cairo-create"><tt class="function">cairo_create()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the target surface, (or NULL if <i class="parameter"><tt>cr</tt></i> is in an error
+state). This object is owned by cairo. To keep a reference to it,
+you must call <a href="cairo-cairo-surface-t.html#cairo-surface-reference"><tt class="function">cairo_surface_reference()</tt></a>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2992971"></a><h3>
+<a name="cairo-copy-path"></a>cairo_copy_path ()</h3>
+<a class="indexterm" name="id2992982"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a>* cairo_copy_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Creates a copy of the current path and returns it to the user as a
+<a href="cairo-cairo-t.html#cairo-path-t"><span class="type">cairo_path_t</span></a>. See <span class="type">cairo_path_data_t</span> for hints on how to iterate
+over the returned data structure.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the copy of the current path. The caller owns the
+returned object and should call <a href="cairo-cairo-t.html#cairo-path-destroy"><tt class="function">cairo_path_destroy()</tt></a> when finished
+with it.
+
+This function will always return a valid pointer, but the result
+will have no data, (data==NULL and num_data==0), if either of the
+following conditions hold:
+
+1) If there is insufficient memory to copy the path. In this case
+ path-&gt;status will be set to CAIRO_STATUS_NO_MEMORY.
+
+2) If <i class="parameter"><tt>cr</tt></i> is already in an error state. In this case path-&gt;status
+ will contain the same status that would be returned by
+ cairo_status(cr).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993083"></a><h3>
+<a name="cairo-copy-path-flat"></a>cairo_copy_path_flat ()</h3>
+<a class="indexterm" name="id2993094"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a>* cairo_copy_path_flat (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+Gets a flattened copy of the current path and returns it to the
+user as a <a href="cairo-cairo-t.html#cairo-path-t"><span class="type">cairo_path_t</span></a>. See <span class="type">cairo_path_data_t</span> for hints on
+how to iterate over the returned data structure.
+</p>
+<p>
+This function is like <a href="cairo-cairo-t.html#cairo-copy-path"><tt class="function">cairo_copy_path()</tt></a> except that any curves
+in the path will be approximated with piecewise-linear
+approximations, (accurate to within the current tolerance
+value). That is, the result is guaranteed to not have any elements
+of type CAIRO_PATH_CURVE_TO which will instead be replaced by a
+series of CAIRO_PATH_LINE_TO elements.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the copy of the current path. The caller owns the
+returned object and should call <a href="cairo-cairo-t.html#cairo-path-destroy"><tt class="function">cairo_path_destroy()</tt></a> when finished
+with it.
+
+This function will always return a valid pointer, but the result
+will have no data, (data==NULL and num_data==0), if either of the
+following conditions hold:
+
+1) If there is insufficient memory to copy the path. In this case
+ path-&gt;status will be set to CAIRO_STATUS_NO_MEMORY.
+
+2) If <i class="parameter"><tt>cr</tt></i> is already in an error state. In this case path-&gt;status
+ will contain the same status that would be returned by
+ cairo_status(cr).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993214"></a><h3>
+<a name="cairo-append-path"></a>cairo_append_path ()</h3>
+<a class="indexterm" name="id2993226"></a><pre class="programlisting">void cairo_append_path (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr,
+ <a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a> *path);</pre>
+<p>
+Append the <i class="parameter"><tt>path</tt></i> onto the current path. The <i class="parameter"><tt>path</tt></i> may be either the
+return value from one of <a href="cairo-cairo-t.html#cairo-copy-path"><tt class="function">cairo_copy_path()</tt></a> or
+<a href="cairo-cairo-t.html#cairo-copy-path-flat"><tt class="function">cairo_copy_path_flat()</tt></a> or it may be constructed manually. See
+<a href="cairo-cairo-t.html#cairo-path-t"><span class="type">cairo_path_t</span></a> for details on how the path data structure should be
+initialized, and note that path-&gt;status must be initialized to
+CAIRO_STATUS_SUCCESS.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td> a cairo context
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>path</tt></i>&#160;:</span></td>
+<td> path to be appended
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993339"></a><h3>
+<a name="cairo-path-data-type-t"></a>enum cairo_path_data_type_t</h3>
+<a class="indexterm" name="id2993351"></a><pre class="programlisting">typedef enum cairo_path_data_type {
+ CAIRO_PATH_MOVE_TO,
+ CAIRO_PATH_LINE_TO,
+ CAIRO_PATH_CURVE_TO,
+ CAIRO_PATH_CLOSE_PATH
+} cairo_path_data_type_t;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993369"></a><h3>
+<a name="cairo-path-t"></a>cairo_path_t</h3>
+<a class="indexterm" name="id2993380"></a><pre class="programlisting">typedef struct {
+ cairo_status_t status;
+ cairo_path_data_t *data;
+ int num_data;
+} cairo_path_t;
+</pre>
+<p>
+A data structure for holding a path. This data structure serves as
+the return value for <tt class="function">cairo_copy_path_data()</tt> and
+<tt class="function">cairo_copy_path_data_flat()</tt> as well the input value for
+<a href="cairo-cairo-t.html#cairo-append-path"><tt class="function">cairo_append_path()</tt></a>.
+</p>
+<p>
+See <span class="type">cairo_path_data_t</span> for hints on how to iterate over the
+actual data within the path.
+</p>
+<p>
+The num_data member gives the number of elements in the data
+array. This number is larger than the number of independent path
+portions (MOVE_TO, LINE_TO, CURVE_TO, CLOSE_PATH), since the data
+includes both headers and coordinates for each portion.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993452"></a><h3>
+<a name="cairo-path-destroy"></a>cairo_path_destroy ()</h3>
+<a class="indexterm" name="id2993463"></a><pre class="programlisting">void cairo_path_destroy (<a href="cairo-cairo-t.html#cairo-path-t">cairo_path_t</a> *path);</pre>
+<p>
+Immediately releases all memory associated with <i class="parameter"><tt>path</tt></i>. After a call
+to <a href="cairo-cairo-t.html#cairo-path-destroy"><tt class="function">cairo_path_destroy()</tt></a> the <i class="parameter"><tt>path</tt></i> pointer is no longer valid and
+should not be used further.
+</p>
+<p>
+NOTE: cairo_path_destroy function should only be called with a
+pointer to a <a href="cairo-cairo-t.html#cairo-path-t"><span class="type">cairo_path_t</span></a> returned by a cairo function. Any path
+that is created manually (ie. outside of cairo) should be destroyed
+manually as well.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>path</tt></i>&#160;:</span></td>
+<td> a path to destroy which was previously returned by either
+cairo_copy_path or cairo_copy_path_flat.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993552"></a><h3>
+<a name="cairo-status-t"></a>enum cairo_status_t</h3>
+<a class="indexterm" name="id2993562"></a><pre class="programlisting">typedef enum cairo_status {
CAIRO_STATUS_SUCCESS = 0,
CAIRO_STATUS_NO_MEMORY,
CAIRO_STATUS_INVALID_RESTORE,
@@ -1215,23 +3661,191 @@ glyphs. The X and Y offsets in <i class="parameter"><tt>glyphs</tt></i> are take
CAIRO_STATUS_INVALID_MATRIX,
CAIRO_STATUS_NO_TARGET_SURFACE,
CAIRO_STATUS_NULL_POINTER,
- CAIRO_STATUS_INVALID_STRING
+ CAIRO_STATUS_INVALID_STRING,
+ CAIRO_STATUS_INVALID_PATH_DATA,
+ CAIRO_STATUS_READ_ERROR,
+ CAIRO_STATUS_WRITE_ERROR,
+ CAIRO_STATUS_SURFACE_FINISHED,
+ CAIRO_STATUS_SURFACE_TYPE_MISMATCH,
+ CAIRO_STATUS_PATTERN_TYPE_MISMATCH
} cairo_status_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2754181"></a><h3><a name="cairo-status"></a>cairo_status ()</h3><a class="indexterm" name="id2754192"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_status (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2754242"></a><h3><a name="cairo-status-string"></a>cairo_status_string ()</h3><a class="indexterm" name="id2754254"></a><pre class="programlisting">const char* cairo_status_string (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>cr</tt></i>:</span></td><td>
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td>
-
-
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2754304"></a><h3><a name="cairo-filter-t"></a>enum cairo_filter_t</h3><a class="indexterm" name="id2754316"></a><pre class="programlisting">typedef enum {
+</pre>
+<p>
+<a href="cairo-cairo-t.html#cairo-status-t"><span class="type">cairo_status_t</span></a> is used to indicate errors that can occur when
+using Cairo. In some cases it is returned directly by functions.
+but when using <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a>, the last error, if any, is stored in
+the context and can be retrieved with <a href="cairo-cairo-t.html#cairo-status"><tt class="function">cairo_status()</tt></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_SUCCESS</tt></span></td>
+<td> no error has occurred
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_NO_MEMORY</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_INVALID_RESTORE</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_INVALID_POP_GROUP</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_NO_CURRENT_POINT</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_INVALID_MATRIX</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_NO_TARGET_SURFACE</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_NULL_POINTER</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_INVALID_STRING</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_INVALID_PATH_DATA</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_READ_ERROR</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_WRITE_ERROR</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_SURFACE_FINISHED</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_SURFACE_TYPE_MISMATCH</tt></span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><tt class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</tt></span></td>
+<td>
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993862"></a><h3>
+<a name="cairo-status"></a>cairo_status ()</h3>
+<a class="indexterm" name="id2993873"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> cairo_status (<a href="cairo-cairo-t.html#cairo-t">cairo_t</a> *cr);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>cr</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993930"></a><h3>
+<a name="cairo-status-string"></a>cairo_status_string</h3>
+<a class="indexterm" name="id2993941"></a><pre class="programlisting">#define cairo_status_string cairo_status_string_DEPRECATED_BY_cairo_status_AND_cairo_status_to_string
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2993958"></a><h3>
+<a name="cairo-status-to-string"></a>cairo_status_to_string ()</h3>
+<a class="indexterm" name="id2993969"></a><pre class="programlisting">const char* cairo_status_to_string (<a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> status);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>status</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994028"></a><h3>
+<a name="cairo-filter-t"></a>enum cairo_filter_t</h3>
+<a class="indexterm" name="id2994038"></a><pre class="programlisting">typedef enum {
CAIRO_FILTER_FAST,
CAIRO_FILTER_GOOD,
CAIRO_FILTER_BEST,
@@ -1239,43 +3853,327 @@ glyphs. The X and Y offsets in <i class="parameter"><tt>glyphs</tt></i> are take
CAIRO_FILTER_BILINEAR,
CAIRO_FILTER_GAUSSIAN
} cairo_filter_t;
-</pre><p>
-
-</p></div><hr><div class="refsect2" lang="en"><a name="id2754330"></a><h3><a name="cairo-image-surface-create"></a>cairo_image_surface_create ()</h3><a class="indexterm" name="id2754342"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_image_surface_create (<a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994057"></a><h3>
+<a name="cairo-image-surface-create"></a>cairo_image_surface_create ()</h3>
+<a class="indexterm" name="id2994069"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_image_surface_create (<a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
int width,
- int height);</pre><p>
+ int height);</pre>
+<p>
Creates an image surface of the specified format and
dimensions. The initial contents of the surface is undefined; you
must explicitely clear the buffer, using, for example,
-<a href="cairo-cairo-t.html#cairo-rectangle"><tt class="function">cairo_rectangle()</tt></a> and <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a> if you want it cleared.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td> format of pixels in the surface to create
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td> width of the surface, in pixels
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td> height of the surface, in pixels
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> the newly created surface, or <tt class="literal">NULL</tt> if it couldn't
+<a href="cairo-cairo-t.html#cairo-rectangle"><tt class="function">cairo_rectangle()</tt></a> and <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a> if you want it cleared.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>format</tt></i>&#160;:</span></td>
+<td> format of pixels in the surface to create
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> width of the surface, in pixels
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> height of the surface, in pixels
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the newly created surface, or <tt class="literal">NULL</tt> if it couldn't
be created because of lack of memory
-</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2754457"></a><h3><a name="cairo-image-surface-create-for-data"></a>cairo_image_surface_create_for_data ()</h3><a class="indexterm" name="id2754470"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_image_surface_create_for_data
- (char *data,
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994202"></a><h3>
+<a name="cairo-image-surface-create-for-data"></a>cairo_image_surface_create_for_data ()</h3>
+<a class="indexterm" name="id2994214"></a><pre class="programlisting"><a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a>* cairo_image_surface_create_for_data
+ (unsigned char *data,
<a href="cairo-cairo-t.html#cairo-format-t">cairo_format_t</a> format,
int width,
int height,
- int stride);</pre><p>
+ int stride);</pre>
+<p>
Creates an image surface for the provided pixel data. The output
buffer must be kept around until the <a href="cairo-cairo-surface-t.html#cairo-surface-t"><span class="type">cairo_surface_t</span></a> is destroyed
-or <tt class="function">cairo_surface_finish()</tt> is called on the surface. The initial
+or <a href="cairo-cairo-surface-t.html#cairo-surface-finish"><tt class="function">cairo_surface_finish()</tt></a> is called on the surface. The initial
contents of <i class="parameter"><tt>buffer</tt></i> will be used as the inital image contents; you
must explicitely clear the buffer, using, for example,
-<a href="cairo-cairo-t.html#cairo-rectangle"><tt class="function">cairo_rectangle()</tt></a> and <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a> if you want it cleared.</p><p>
-
-</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i class="parameter"><tt>data</tt></i>:</span></td><td> a pointer to a buffer supplied by the application
+<a href="cairo-cairo-t.html#cairo-rectangle"><tt class="function">cairo_rectangle()</tt></a> and <a href="cairo-cairo-t.html#cairo-fill"><tt class="function">cairo_fill()</tt></a> if you want it cleared.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>data</tt></i>&#160;:</span></td>
+<td> a pointer to a buffer supplied by the application
in which to write contents.
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>format</tt></i>:</span></td><td> the format of pixels in the buffer
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>width</tt></i>:</span></td><td> the width of the image to be stored in the buffer
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>height</tt></i>:</span></td><td> the height of the image to be stored in the buffer
-</td></tr><tr><td><span class="term"><i class="parameter"><tt>stride</tt></i>:</span></td><td> the number of bytes between the start of rows
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>format</tt></i>&#160;:</span></td>
+<td> the format of pixels in the buffer
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>width</tt></i>&#160;:</span></td>
+<td> the width of the image to be stored in the buffer
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>height</tt></i>&#160;:</span></td>
+<td> the height of the image to be stored in the buffer
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>stride</tt></i>&#160;:</span></td>
+<td> the number of bytes between the start of rows
in the buffer. Having this be specified separate from <i class="parameter"><tt>width</tt></i>
allows for padding at the end of rows, or for writing
to a subportion of a larger image.
-</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span>:</span></td><td> the newly created surface, or <tt class="literal">NULL</tt> if it couldn't
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the newly created surface, or <tt class="literal">NULL</tt> if it couldn't
be created because of lack of memory
-</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="pt02.html"><b>&lt;&lt;PartII.Reference</b></a></td><td align="right"><a accesskey="n" href="cairo-cairo-surface-t.html"><b>cairo_surface_t&gt;&gt;</b></a></td></tr></table></body></html>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994426"></a><h3>
+<a name="cairo-image-surface-get-width"></a>cairo_image_surface_get_width ()</h3>
+<a class="indexterm" name="id2994437"></a><pre class="programlisting">int cairo_image_surface_get_width (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre>
+<p>
+Get the width of the image surface in pixels.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <span class="type">cairo_image_surface_t</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the width of the surface in pixels.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994507"></a><h3>
+<a name="cairo-image-surface-get-height"></a>cairo_image_surface_get_height ()</h3>
+<a class="indexterm" name="id2994519"></a><pre class="programlisting">int cairo_image_surface_get_height (<a href="cairo-cairo-surface-t.html#cairo-surface-t">cairo_surface_t</a> *surface);</pre>
+<p>
+Get the height of the image surface in pixels.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>surface</tt></i>&#160;:</span></td>
+<td> a <span class="type">cairo_image_surface_t</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> the height of the surface in pixels.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994588"></a><h3>
+<a name="cairo-destroy-func-t"></a>cairo_destroy_func_t ()</h3>
+<a class="indexterm" name="id2994600"></a><pre class="programlisting">void (*cairo_destroy_func_t) (void *data);</pre>
+<p>
+<a href="cairo-cairo-t.html#cairo-destroy-func-t"><span class="type">cairo_destroy_func_t</span></a> the type of function which is called when a
+data element is destroyed. It is passed the pointer to the data
+element and should free any memory and resources allocated for it.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><i class="parameter"><tt>data</tt></i>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994660"></a><h3>
+<a name="cairo-user-data-key-t"></a>cairo_user_data_key_t</h3>
+<a class="indexterm" name="id2994671"></a><pre class="programlisting">typedef struct {
+ int unused;
+} cairo_user_data_key_t;
+</pre>
+<p>
+<a href="cairo-cairo-t.html#cairo-user-data-key-t"><span class="type">cairo_user_data_key_t</span></a> is used for attaching user data to cairo
+data structures. The actual contents of the struct is never used,
+and there is no need to initialize the object; only the unique
+address of a <span class="type">cairo_data_key_t</span> object is used. Typically, you
+would just use the address of a static <span class="type">cairo_data_key_t</span> object.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994718"></a><h3>
+<a name="cairo-read-func-t"></a>cairo_read_func_t ()</h3>
+<a class="indexterm" name="id2994729"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> (*cairo_read_func_t) (void *closure,
+ unsigned char *data,
+ unsigned int length);</pre>
+<p>
+<a href="cairo-cairo-t.html#cairo-read-func-t"><span class="type">cairo_read_func_t</span></a> is the type of function which is called when a
+backend needs to read data from an intput stream. It is passed the
+closure which was specified by the user at the time the read
+function was registered, the buffer to read the data into and the
+length of the data in bytes. The read function should return
+CAIRO_STATUS_SUCCESS if all the data was successfully written,
+CAIRO_STATUS_READ_ERROR otherwise.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>closure</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>data</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>length</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2994845"></a><h3>
+<a name="cairo-write-func-t"></a>cairo_write_func_t ()</h3>
+<a class="indexterm" name="id2994857"></a><pre class="programlisting"><a href="cairo-cairo-t.html#cairo-status-t">cairo_status_t</a> (*cairo_write_func_t) (void *closure,
+ unsigned char *data,
+ unsigned int length);</pre>
+<p>
+<a href="cairo-cairo-t.html#cairo-write-func-t"><span class="type">cairo_write_func_t</span></a> is the type of function which is called when a
+backend needs to write data to an output stream. It is passed the
+closure which was specified by the user at the time the write
+function was registered, the data to write and the length of the
+data in bytes. The write function should return
+CAIRO_STATUS_SUCCESS if all the data was successfully written,
+CAIRO_STATUS_WRITE_ERROR otherwise.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>closure</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>data</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><i class="parameter"><tt>length</tt></i>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="pt02.html"><b>&lt;&lt;&#160;Part&#160;II.&#160;Reference</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-cairo-surface-t.html"><b>cairo_surface_t&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/cairo.devhelp b/doc/public/html/cairo.devhelp
index 84563e3..48201b6 100644
--- a/doc/public/html/cairo.devhelp
+++ b/doc/public/html/cairo.devhelp
@@ -7,6 +7,7 @@
<sub name="cairo_surface_t" link="cairo-cairo-surface-t.html"/>
<sub name="cairo_pattern_t" link="cairo-cairo-pattern-t.html"/>
<sub name="cairo_matrix_t" link="cairo-cairo-matrix-t.html"/>
+ <sub name="Fonts" link="cairo-Fonts.html"/>
<sub name="ATSUI Fonts" link="cairo-ATSUI-Fonts.html"/>
<sub name="FreeType Fonts" link="cairo-FreeType-Fonts.html"/>
<sub name="Glitz backend" link="cairo-Glitz-backend.html"/>
@@ -18,6 +19,19 @@
<sub name="XCB Backend" link="cairo-XCB-Backend.html"/>
<sub name="XLib Backend" link="cairo-XLib-Backend.html"/>
</sub>
+ <sub name="Index" link="ix01.html"/>
+ <sub name="Creating a language binding for cairo" link="language-bindings.html">
+ <sub name="General considerations" link="language-bindings.html#bindings-general"/>
+ <sub name="Memory Management" link="bindings-memory.html"/>
+ <sub name="Multiple return values" link="bindings-return-values.html"/>
+ <sub name="Overloading and optional arguments" link="bindings-overloading.html"/>
+ <sub name="Streams and File I/O" link="bindings-streams.html"/>
+ <sub name="Error handling" link="bindings-errors.html"/>
+ <sub name="Patterns" link="bindings-patterns.html"/>
+ <sub name="Surfaces" link="bindings-surfaces.html"/>
+ <sub name="Fonts" link="bindings-fonts.html"/>
+ <sub name="cairo_path_t" link="bindings-path.html"/>
+ </sub>
</chapters>
<functions>
<function name="cairo_t" link="cairo-cairo-t.html#cairo-t"/>
@@ -26,15 +40,13 @@
<function name="cairo_destroy ()" link="cairo-cairo-t.html#cairo-destroy"/>
<function name="cairo_save ()" link="cairo-cairo-t.html#cairo-save"/>
<function name="cairo_restore ()" link="cairo-cairo-t.html#cairo-restore"/>
- <function name="cairo_copy ()" link="cairo-cairo-t.html#cairo-copy"/>
- <function name="cairo_set_target_surface ()" link="cairo-cairo-t.html#cairo-set-target-surface"/>
<function name="enum cairo_format_t" link="cairo-cairo-t.html#cairo-format-t"/>
- <function name="cairo_set_target_image ()" link="cairo-cairo-t.html#cairo-set-target-image"/>
<function name="enum cairo_operator_t" link="cairo-cairo-t.html#cairo-operator-t"/>
<function name="cairo_set_operator ()" link="cairo-cairo-t.html#cairo-set-operator"/>
- <function name="cairo_set_rgb_color ()" link="cairo-cairo-t.html#cairo-set-rgb-color"/>
- <function name="cairo_set_pattern ()" link="cairo-cairo-t.html#cairo-set-pattern"/>
- <function name="cairo_set_alpha ()" link="cairo-cairo-t.html#cairo-set-alpha"/>
+ <function name="cairo_set_source_rgb ()" link="cairo-cairo-t.html#cairo-set-source-rgb"/>
+ <function name="cairo_set_source_rgba ()" link="cairo-cairo-t.html#cairo-set-source-rgba"/>
+ <function name="cairo_set_source ()" link="cairo-cairo-t.html#cairo-set-source"/>
+ <function name="cairo_set_source_surface ()" link="cairo-cairo-t.html#cairo-set-source-surface"/>
<function name="cairo_set_tolerance ()" link="cairo-cairo-t.html#cairo-set-tolerance"/>
<function name="enum cairo_fill_rule_t" link="cairo-cairo-t.html#cairo-fill-rule-t"/>
<function name="cairo_set_fill_rule ()" link="cairo-cairo-t.html#cairo-set-fill-rule"/>
@@ -48,14 +60,13 @@
<function name="cairo_translate ()" link="cairo-cairo-t.html#cairo-translate"/>
<function name="cairo_scale ()" link="cairo-cairo-t.html#cairo-scale"/>
<function name="cairo_rotate ()" link="cairo-cairo-t.html#cairo-rotate"/>
- <function name="cairo_concat_matrix ()" link="cairo-cairo-t.html#cairo-concat-matrix"/>
+ <function name="cairo_transform ()" link="cairo-cairo-t.html#cairo-transform"/>
<function name="cairo_set_matrix ()" link="cairo-cairo-t.html#cairo-set-matrix"/>
- <function name="cairo_default_matrix ()" link="cairo-cairo-t.html#cairo-default-matrix"/>
<function name="cairo_identity_matrix ()" link="cairo-cairo-t.html#cairo-identity-matrix"/>
- <function name="cairo_transform_point ()" link="cairo-cairo-t.html#cairo-transform-point"/>
- <function name="cairo_transform_distance ()" link="cairo-cairo-t.html#cairo-transform-distance"/>
- <function name="cairo_inverse_transform_point ()" link="cairo-cairo-t.html#cairo-inverse-transform-point"/>
- <function name="cairo_inverse_transform_distance ()" link="cairo-cairo-t.html#cairo-inverse-transform-distance"/>
+ <function name="cairo_user_to_device ()" link="cairo-cairo-t.html#cairo-user-to-device"/>
+ <function name="cairo_user_to_device_distance ()" link="cairo-cairo-t.html#cairo-user-to-device-distance"/>
+ <function name="cairo_device_to_user ()" link="cairo-cairo-t.html#cairo-device-to-user"/>
+ <function name="cairo_device_to_user_distance ()" link="cairo-cairo-t.html#cairo-device-to-user-distance"/>
<function name="cairo_new_path ()" link="cairo-cairo-t.html#cairo-new-path"/>
<function name="cairo_move_to ()" link="cairo-cairo-t.html#cairo-move-to"/>
<function name="cairo_line_to ()" link="cairo-cairo-t.html#cairo-line-to"/>
@@ -67,8 +78,14 @@
<function name="cairo_rel_curve_to ()" link="cairo-cairo-t.html#cairo-rel-curve-to"/>
<function name="cairo_rectangle ()" link="cairo-cairo-t.html#cairo-rectangle"/>
<function name="cairo_close_path ()" link="cairo-cairo-t.html#cairo-close-path"/>
+ <function name="cairo_paint ()" link="cairo-cairo-t.html#cairo-paint"/>
+ <function name="cairo_paint_with_alpha ()" link="cairo-cairo-t.html#cairo-paint-with-alpha"/>
+ <function name="cairo_mask ()" link="cairo-cairo-t.html#cairo-mask"/>
+ <function name="cairo_mask_surface ()" link="cairo-cairo-t.html#cairo-mask-surface"/>
<function name="cairo_stroke ()" link="cairo-cairo-t.html#cairo-stroke"/>
+ <function name="cairo_stroke_preserve ()" link="cairo-cairo-t.html#cairo-stroke-preserve"/>
<function name="cairo_fill ()" link="cairo-cairo-t.html#cairo-fill"/>
+ <function name="cairo_fill_preserve ()" link="cairo-cairo-t.html#cairo-fill-preserve"/>
<function name="cairo_copy_page ()" link="cairo-cairo-t.html#cairo-copy-page"/>
<function name="cairo_show_page ()" link="cairo-cairo-t.html#cairo-show-page"/>
<function name="cairo_in_stroke ()" link="cairo-cairo-t.html#cairo-in-stroke"/>
@@ -76,69 +93,72 @@
<function name="cairo_bool_t" link="cairo-cairo-t.html#cairo-bool-t"/>
<function name="cairo_stroke_extents ()" link="cairo-cairo-t.html#cairo-stroke-extents"/>
<function name="cairo_fill_extents ()" link="cairo-cairo-t.html#cairo-fill-extents"/>
- <function name="cairo_init_clip ()" link="cairo-cairo-t.html#cairo-init-clip"/>
<function name="cairo_clip ()" link="cairo-cairo-t.html#cairo-clip"/>
- <function name="cairo_font_t" link="cairo-cairo-t.html#cairo-font-t"/>
+ <function name="cairo_clip_preserve ()" link="cairo-cairo-t.html#cairo-clip-preserve"/>
+ <function name="cairo_reset_clip ()" link="cairo-cairo-t.html#cairo-reset-clip"/>
<function name="cairo_glyph_t" link="cairo-cairo-t.html#cairo-glyph-t"/>
- <function name="cairo_text_extents_t" link="cairo-cairo-t.html#cairo-text-extents-t"/>
- <function name="cairo_font_extents_t" link="cairo-cairo-t.html#cairo-font-extents-t"/>
<function name="enum cairo_font_slant_t" link="cairo-cairo-t.html#cairo-font-slant-t"/>
<function name="enum cairo_font_weight_t" link="cairo-cairo-t.html#cairo-font-weight-t"/>
- <function name="cairo_select_font ()" link="cairo-cairo-t.html#cairo-select-font"/>
- <function name="cairo_scale_font ()" link="cairo-cairo-t.html#cairo-scale-font"/>
- <function name="cairo_transform_font ()" link="cairo-cairo-t.html#cairo-transform-font"/>
+ <function name="cairo_select_font_face ()" link="cairo-cairo-t.html#cairo-select-font-face"/>
+ <function name="cairo_set_font_size ()" link="cairo-cairo-t.html#cairo-set-font-size"/>
+ <function name="cairo_set_font_matrix ()" link="cairo-cairo-t.html#cairo-set-font-matrix"/>
+ <function name="cairo_get_font_matrix ()" link="cairo-cairo-t.html#cairo-get-font-matrix"/>
<function name="cairo_show_text ()" link="cairo-cairo-t.html#cairo-show-text"/>
<function name="cairo_show_glyphs ()" link="cairo-cairo-t.html#cairo-show-glyphs"/>
- <function name="cairo_current_font ()" link="cairo-cairo-t.html#cairo-current-font"/>
- <function name="cairo_current_font_extents ()" link="cairo-cairo-t.html#cairo-current-font-extents"/>
- <function name="cairo_set_font ()" link="cairo-cairo-t.html#cairo-set-font"/>
+ <function name="cairo_get_font_face ()" link="cairo-cairo-t.html#cairo-get-font-face"/>
+ <function name="cairo_font_extents ()" link="cairo-cairo-t.html#cairo-font-extents"/>
+ <function name="cairo_set_font_face ()" link="cairo-cairo-t.html#cairo-set-font-face"/>
<function name="cairo_text_extents ()" link="cairo-cairo-t.html#cairo-text-extents"/>
<function name="cairo_glyph_extents ()" link="cairo-cairo-t.html#cairo-glyph-extents"/>
<function name="cairo_text_path ()" link="cairo-cairo-t.html#cairo-text-path"/>
<function name="cairo_glyph_path ()" link="cairo-cairo-t.html#cairo-glyph-path"/>
- <function name="cairo_font_reference ()" link="cairo-cairo-t.html#cairo-font-reference"/>
- <function name="cairo_font_destroy ()" link="cairo-cairo-t.html#cairo-font-destroy"/>
- <function name="cairo_font_extents ()" link="cairo-cairo-t.html#cairo-font-extents"/>
- <function name="cairo_font_glyph_extents ()" link="cairo-cairo-t.html#cairo-font-glyph-extents"/>
- <function name="cairo_show_surface ()" link="cairo-cairo-t.html#cairo-show-surface"/>
- <function name="cairo_current_operator ()" link="cairo-cairo-t.html#cairo-current-operator"/>
- <function name="cairo_current_rgb_color ()" link="cairo-cairo-t.html#cairo-current-rgb-color"/>
- <function name="cairo_current_pattern ()" link="cairo-cairo-t.html#cairo-current-pattern"/>
- <function name="cairo_current_alpha ()" link="cairo-cairo-t.html#cairo-current-alpha"/>
- <function name="cairo_current_tolerance ()" link="cairo-cairo-t.html#cairo-current-tolerance"/>
- <function name="cairo_current_point ()" link="cairo-cairo-t.html#cairo-current-point"/>
- <function name="cairo_current_fill_rule ()" link="cairo-cairo-t.html#cairo-current-fill-rule"/>
- <function name="cairo_current_line_width ()" link="cairo-cairo-t.html#cairo-current-line-width"/>
- <function name="cairo_current_line_cap ()" link="cairo-cairo-t.html#cairo-current-line-cap"/>
- <function name="cairo_current_line_join ()" link="cairo-cairo-t.html#cairo-current-line-join"/>
- <function name="cairo_current_miter_limit ()" link="cairo-cairo-t.html#cairo-current-miter-limit"/>
- <function name="cairo_current_matrix ()" link="cairo-cairo-t.html#cairo-current-matrix"/>
- <function name="cairo_current_target_surface ()" link="cairo-cairo-t.html#cairo-current-target-surface"/>
- <function name="cairo_current_path ()" link="cairo-cairo-t.html#cairo-current-path"/>
- <function name="cairo_current_path_flat ()" link="cairo-cairo-t.html#cairo-current-path-flat"/>
+ <function name="cairo_get_operator ()" link="cairo-cairo-t.html#cairo-get-operator"/>
+ <function name="cairo_get_source ()" link="cairo-cairo-t.html#cairo-get-source"/>
+ <function name="cairo_get_tolerance ()" link="cairo-cairo-t.html#cairo-get-tolerance"/>
+ <function name="cairo_get_current_point ()" link="cairo-cairo-t.html#cairo-get-current-point"/>
+ <function name="cairo_get_fill_rule ()" link="cairo-cairo-t.html#cairo-get-fill-rule"/>
+ <function name="cairo_get_line_width ()" link="cairo-cairo-t.html#cairo-get-line-width"/>
+ <function name="cairo_get_line_cap ()" link="cairo-cairo-t.html#cairo-get-line-cap"/>
+ <function name="cairo_get_line_join ()" link="cairo-cairo-t.html#cairo-get-line-join"/>
+ <function name="cairo_get_miter_limit ()" link="cairo-cairo-t.html#cairo-get-miter-limit"/>
+ <function name="cairo_get_matrix ()" link="cairo-cairo-t.html#cairo-get-matrix"/>
+ <function name="cairo_get_target ()" link="cairo-cairo-t.html#cairo-get-target"/>
+ <function name="cairo_copy_path ()" link="cairo-cairo-t.html#cairo-copy-path"/>
+ <function name="cairo_copy_path_flat ()" link="cairo-cairo-t.html#cairo-copy-path-flat"/>
+ <function name="cairo_append_path ()" link="cairo-cairo-t.html#cairo-append-path"/>
+ <function name="enum cairo_path_data_type_t" link="cairo-cairo-t.html#cairo-path-data-type-t"/>
+ <function name="cairo_path_t" link="cairo-cairo-t.html#cairo-path-t"/>
+ <function name="cairo_path_destroy ()" link="cairo-cairo-t.html#cairo-path-destroy"/>
<function name="enum cairo_status_t" link="cairo-cairo-t.html#cairo-status-t"/>
<function name="cairo_status ()" link="cairo-cairo-t.html#cairo-status"/>
- <function name="cairo_status_string ()" link="cairo-cairo-t.html#cairo-status-string"/>
+ <function name="cairo_status_string" link="cairo-cairo-t.html#cairo-status-string"/>
+ <function name="cairo_status_to_string ()" link="cairo-cairo-t.html#cairo-status-to-string"/>
<function name="enum cairo_filter_t" link="cairo-cairo-t.html#cairo-filter-t"/>
<function name="cairo_image_surface_create ()" link="cairo-cairo-t.html#cairo-image-surface-create"/>
<function name="cairo_image_surface_create_for_data ()" link="cairo-cairo-t.html#cairo-image-surface-create-for-data"/>
+ <function name="cairo_image_surface_get_width ()" link="cairo-cairo-t.html#cairo-image-surface-get-width"/>
+ <function name="cairo_image_surface_get_height ()" link="cairo-cairo-t.html#cairo-image-surface-get-height"/>
+ <function name="cairo_destroy_func_t ()" link="cairo-cairo-t.html#cairo-destroy-func-t"/>
+ <function name="cairo_user_data_key_t" link="cairo-cairo-t.html#cairo-user-data-key-t"/>
+ <function name="cairo_read_func_t ()" link="cairo-cairo-t.html#cairo-read-func-t"/>
+ <function name="cairo_write_func_t ()" link="cairo-cairo-t.html#cairo-write-func-t"/>
<function name="cairo_surface_t" link="cairo-cairo-surface-t.html#cairo-surface-t"/>
- <function name="cairo_surface_create_for_image ()" link="cairo-cairo-surface-t.html#cairo-surface-create-for-image"/>
<function name="cairo_surface_create_similar ()" link="cairo-cairo-surface-t.html#cairo-surface-create-similar"/>
<function name="cairo_surface_reference ()" link="cairo-cairo-surface-t.html#cairo-surface-reference"/>
<function name="cairo_surface_destroy ()" link="cairo-cairo-surface-t.html#cairo-surface-destroy"/>
- <function name="cairo_surface_set_repeat ()" link="cairo-cairo-surface-t.html#cairo-surface-set-repeat"/>
- <function name="cairo_surface_set_matrix ()" link="cairo-cairo-surface-t.html#cairo-surface-set-matrix"/>
- <function name="cairo_surface_get_matrix ()" link="cairo-cairo-surface-t.html#cairo-surface-get-matrix"/>
- <function name="cairo_surface_set_filter ()" link="cairo-cairo-surface-t.html#cairo-surface-set-filter"/>
- <function name="cairo_surface_get_filter ()" link="cairo-cairo-surface-t.html#cairo-surface-get-filter"/>
+ <function name="cairo_surface_finish ()" link="cairo-cairo-surface-t.html#cairo-surface-finish"/>
+ <function name="cairo_surface_set_user_data ()" link="cairo-cairo-surface-t.html#cairo-surface-set-user-data"/>
+ <function name="cairo_surface_get_user_data ()" link="cairo-cairo-surface-t.html#cairo-surface-get-user-data"/>
+ <function name="cairo_surface_set_device_offset ()" link="cairo-cairo-surface-t.html#cairo-surface-set-device-offset"/>
<function name="cairo_pattern_t" link="cairo-cairo-pattern-t.html#cairo-pattern-t"/>
<function name="cairo_pattern_create_for_surface ()" link="cairo-cairo-pattern-t.html#cairo-pattern-create-for-surface"/>
<function name="cairo_pattern_create_linear ()" link="cairo-cairo-pattern-t.html#cairo-pattern-create-linear"/>
<function name="cairo_pattern_create_radial ()" link="cairo-cairo-pattern-t.html#cairo-pattern-create-radial"/>
<function name="cairo_pattern_reference ()" link="cairo-cairo-pattern-t.html#cairo-pattern-reference"/>
<function name="cairo_pattern_destroy ()" link="cairo-cairo-pattern-t.html#cairo-pattern-destroy"/>
- <function name="cairo_pattern_add_color_stop ()" link="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop"/>
+ <function name="cairo_pattern_status ()" link="cairo-cairo-pattern-t.html#cairo-pattern-status"/>
+ <function name="cairo_pattern_add_color_stop_rgb ()" link="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgb"/>
+ <function name="cairo_pattern_add_color_stop_rgba ()" link="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba"/>
<function name="cairo_pattern_set_matrix ()" link="cairo-cairo-pattern-t.html#cairo-pattern-set-matrix"/>
<function name="cairo_pattern_get_matrix ()" link="cairo-cairo-pattern-t.html#cairo-pattern-get-matrix"/>
<function name="enum cairo_extend_t" link="cairo-cairo-pattern-t.html#cairo-extend-t"/>
@@ -147,12 +167,11 @@
<function name="cairo_pattern_set_filter ()" link="cairo-cairo-pattern-t.html#cairo-pattern-set-filter"/>
<function name="cairo_pattern_get_filter ()" link="cairo-cairo-pattern-t.html#cairo-pattern-get-filter"/>
<function name="cairo_matrix_t" link="cairo-cairo-matrix-t.html#cairo-matrix-t"/>
- <function name="cairo_matrix_create ()" link="cairo-cairo-matrix-t.html#cairo-matrix-create"/>
- <function name="cairo_matrix_destroy ()" link="cairo-cairo-matrix-t.html#cairo-matrix-destroy"/>
- <function name="cairo_matrix_copy ()" link="cairo-cairo-matrix-t.html#cairo-matrix-copy"/>
- <function name="cairo_matrix_set_identity ()" link="cairo-cairo-matrix-t.html#cairo-matrix-set-identity"/>
- <function name="cairo_matrix_set_affine ()" link="cairo-cairo-matrix-t.html#cairo-matrix-set-affine"/>
- <function name="cairo_matrix_get_affine ()" link="cairo-cairo-matrix-t.html#cairo-matrix-get-affine"/>
+ <function name="cairo_matrix_init ()" link="cairo-cairo-matrix-t.html#cairo-matrix-init"/>
+ <function name="cairo_matrix_init_identity ()" link="cairo-cairo-matrix-t.html#cairo-matrix-init-identity"/>
+ <function name="cairo_matrix_init_translate ()" link="cairo-cairo-matrix-t.html#cairo-matrix-init-translate"/>
+ <function name="cairo_matrix_init_scale ()" link="cairo-cairo-matrix-t.html#cairo-matrix-init-scale"/>
+ <function name="cairo_matrix_init_rotate ()" link="cairo-cairo-matrix-t.html#cairo-matrix-init-rotate"/>
<function name="cairo_matrix_translate ()" link="cairo-cairo-matrix-t.html#cairo-matrix-translate"/>
<function name="cairo_matrix_scale ()" link="cairo-cairo-matrix-t.html#cairo-matrix-scale"/>
<function name="cairo_matrix_rotate ()" link="cairo-cairo-matrix-t.html#cairo-matrix-rotate"/>
@@ -160,30 +179,45 @@
<function name="cairo_matrix_multiply ()" link="cairo-cairo-matrix-t.html#cairo-matrix-multiply"/>
<function name="cairo_matrix_transform_distance ()" link="cairo-cairo-matrix-t.html#cairo-matrix-transform-distance"/>
<function name="cairo_matrix_transform_point ()" link="cairo-cairo-matrix-t.html#cairo-matrix-transform-point"/>
- <function name="cairo_atsui_font_create ()" link="cairo-ATSUI-Fonts.html#cairo-atsui-font-create"/>
- <function name="cairo_ft_font_create ()" link="cairo-FreeType-Fonts.html#cairo-ft-font-create"/>
- <function name="cairo_ft_font_create_for_ft_face ()" link="cairo-FreeType-Fonts.html#cairo-ft-font-create-for-ft-face"/>
- <function name="cairo_ft_font_lock_face ()" link="cairo-FreeType-Fonts.html#cairo-ft-font-lock-face"/>
- <function name="cairo_ft_font_unlock_face ()" link="cairo-FreeType-Fonts.html#cairo-ft-font-unlock-face"/>
- <function name="cairo_ft_font_get_pattern ()" link="cairo-FreeType-Fonts.html#cairo-ft-font-get-pattern"/>
- <function name="cairo_set_target_glitz ()" link="cairo-Glitz-backend.html#cairo-set-target-glitz"/>
+ <function name="cairo_font_face_t" link="cairo-Fonts.html#cairo-font-face-t"/>
+ <function name="cairo_scaled_font_t" link="cairo-Fonts.html#cairo-scaled-font-t"/>
+ <function name="cairo_font_face_reference ()" link="cairo-Fonts.html#cairo-font-face-reference"/>
+ <function name="cairo_font_face_destroy ()" link="cairo-Fonts.html#cairo-font-face-destroy"/>
+ <function name="cairo_font_face_get_user_data ()" link="cairo-Fonts.html#cairo-font-face-get-user-data"/>
+ <function name="cairo_font_face_set_user_data ()" link="cairo-Fonts.html#cairo-font-face-set-user-data"/>
+ <function name="cairo_scaled_font_create ()" link="cairo-Fonts.html#cairo-scaled-font-create"/>
+ <function name="cairo_scaled_font_reference ()" link="cairo-Fonts.html#cairo-scaled-font-reference"/>
+ <function name="cairo_scaled_font_destroy ()" link="cairo-Fonts.html#cairo-scaled-font-destroy"/>
+ <function name="cairo_font_extents_t" link="cairo-Fonts.html#cairo-font-extents-t"/>
+ <function name="cairo_scaled_font_extents ()" link="cairo-Fonts.html#cairo-scaled-font-extents"/>
+ <function name="cairo_text_extents_t" link="cairo-Fonts.html#cairo-text-extents-t"/>
+ <function name="cairo_scaled_font_glyph_extents ()" link="cairo-Fonts.html#cairo-scaled-font-glyph-extents"/>
+ <function name="cairo_ft_font_face_create_for_pattern ()" link="cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-pattern"/>
+ <function name="cairo_ft_font_face_create_for_ft_face ()" link="cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-ft-face"/>
+ <function name="cairo_ft_scaled_font_lock_face ()" link="cairo-FreeType-Fonts.html#cairo-ft-scaled-font-lock-face"/>
+ <function name="cairo_ft_scaled_font_unlock_face ()" link="cairo-FreeType-Fonts.html#cairo-ft-scaled-font-unlock-face"/>
<function name="cairo_glitz_surface_create ()" link="cairo-Glitz-backend.html#cairo-glitz-surface-create"/>
- <function name="cairo_set_target_pdf ()" link="cairo-PDF-Backend.html#cairo-set-target-pdf"/>
<function name="cairo_pdf_surface_create ()" link="cairo-PDF-Backend.html#cairo-pdf-surface-create"/>
- <function name="cairo_set_target_png ()" link="cairo-PNG-Backend.html#cairo-set-target-png"/>
- <function name="cairo_png_surface_create ()" link="cairo-PNG-Backend.html#cairo-png-surface-create"/>
- <function name="cairo_set_target_ps ()" link="cairo-PS-Backend.html#cairo-set-target-ps"/>
+ <function name="cairo_pdf_surface_create_for_stream ()" link="cairo-PDF-Backend.html#cairo-pdf-surface-create-for-stream"/>
+ <function name="cairo_pdf_surface_set_dpi ()" link="cairo-PDF-Backend.html#cairo-pdf-surface-set-dpi"/>
+ <function name="cairo_image_surface_create_from_png ()" link="cairo-PNG-Backend.html#cairo-image-surface-create-from-png"/>
+ <function name="cairo_image_surface_create_from_png_stream ()" link="cairo-PNG-Backend.html#cairo-image-surface-create-from-png-stream"/>
+ <function name="cairo_surface_write_to_png ()" link="cairo-PNG-Backend.html#cairo-surface-write-to-png"/>
+ <function name="cairo_surface_write_to_png_stream ()" link="cairo-PNG-Backend.html#cairo-surface-write-to-png-stream"/>
<function name="cairo_ps_surface_create ()" link="cairo-PS-Backend.html#cairo-ps-surface-create"/>
- <function name="cairo_set_target_quartz_context ()" link="cairo-Quartz-Backend.html#cairo-set-target-quartz-context"/>
+ <function name="cairo_ps_surface_create_for_stream ()" link="cairo-PS-Backend.html#cairo-ps-surface-create-for-stream"/>
+ <function name="cairo_ps_surface_set_dpi ()" link="cairo-PS-Backend.html#cairo-ps-surface-set-dpi"/>
<function name="cairo_quartz_surface_create ()" link="cairo-Quartz-Backend.html#cairo-quartz-surface-create"/>
- <function name="cairo_set_target_win32 ()" link="cairo-Microsoft-Windows-Backend.html#cairo-set-target-win32"/>
<function name="cairo_win32_surface_create ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-surface-create"/>
- <function name="cairo_win32_font_create_for_logfontw ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-create-for-logfontw"/>
- <function name="cairo_win32_font_select_font ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-select-font"/>
- <function name="cairo_win32_font_done_font ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-done-font"/>
- <function name="cairo_win32_font_get_scale_factor ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-get-scale-factor"/>
- <function name="cairo_set_target_xcb ()" link="cairo-XCB-Backend.html#cairo-set-target-xcb"/>
- <function name="cairo_set_target_drawable ()" link="cairo-XLib-Backend.html#cairo-set-target-drawable"/>
+ <function name="cairo_win32_font_face_create_for_logfontw ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-font-face-create-for-logfontw"/>
+ <function name="cairo_win32_scaled_font_select_font ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-select-font"/>
+ <function name="cairo_win32_scaled_font_done_font ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-done-font"/>
+ <function name="cairo_win32_scaled_font_get_metrics_factor ()" link="cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-get-metrics-factor"/>
+ <function name="cairo_xcb_surface_create ()" link="cairo-XCB-Backend.html#cairo-xcb-surface-create"/>
+ <function name="cairo_xcb_surface_create_for_bitmap ()" link="cairo-XCB-Backend.html#cairo-xcb-surface-create-for-bitmap"/>
+ <function name="cairo_xcb_surface_set_size ()" link="cairo-XCB-Backend.html#cairo-xcb-surface-set-size"/>
<function name="cairo_xlib_surface_create ()" link="cairo-XLib-Backend.html#cairo-xlib-surface-create"/>
+ <function name="cairo_xlib_surface_create_for_bitmap ()" link="cairo-XLib-Backend.html#cairo-xlib-surface-create-for-bitmap"/>
+ <function name="cairo_xlib_surface_set_size ()" link="cairo-XLib-Backend.html#cairo-xlib-surface-set-size"/>
</functions>
</book>
diff --git a/doc/public/html/index.html b/doc/public/html/index.html
index e189c00..cfd73de 100644
--- a/doc/public/html/index.html
+++ b/doc/public/html/index.html
@@ -1,2 +1,82 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Cairo: A Vector Graphics Library</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="next" href="pt01.html" title="PartI.Tutorial"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Cairo: A Vector Graphics Library</p></th></tr></table></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="pt01.html">I. Tutorial</a></span></dt><dt><span class="part"><a href="pt02.html">II. Reference</a></span></dt><dd><dl><dt><a href="cairo-cairo-t.html">cairo_t</a> - Drawing contexts.</dt><dt><a href="cairo-cairo-surface-t.html">cairo_surface_t</a> - </dt><dt><a href="cairo-cairo-pattern-t.html">cairo_pattern_t</a> - </dt><dt><a href="cairo-cairo-matrix-t.html">cairo_matrix_t</a> -
- Transformation matrices</dt><dt><a href="cairo-ATSUI-Fonts.html">ATSUI Fonts</a> - </dt><dt><a href="cairo-FreeType-Fonts.html">FreeType Fonts</a> - </dt><dt><a href="cairo-Glitz-backend.html">Glitz backend</a> - </dt><dt><a href="cairo-PDF-Backend.html">PDF Backend</a> - </dt><dt><a href="cairo-PNG-Backend.html">PNG Backend</a> - </dt><dt><a href="cairo-PS-Backend.html">PS Backend</a> - </dt><dt><a href="cairo-Quartz-Backend.html">Quartz Backend</a> - </dt><dt><a href="cairo-Microsoft-Windows-Backend.html">Microsoft Windows Backend</a> - </dt><dt><a href="cairo-XCB-Backend.html">XCB Backend</a> - </dt><dt><a href="cairo-XLib-Backend.html">XLib Backend</a> - </dt></dl></dd></dl></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"></td><td align="right"><a accesskey="n" href="pt01.html"><b>PartI.Tutorial&gt;&gt;</b></a></td></tr></table></body></html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Cairo: A Vector Graphics Library</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="next" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book" lang="en">
+<div class="titlepage">
+<div><div><table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Cairo: A Vector Graphics Library</p></th></tr></table></div></div>
+<div></div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="part"><a href="pt01.html">I. Tutorial</a></span></dt>
+<dt><span class="part"><a href="pt02.html">II. Reference</a></span></dt>
+<dd><dl>
+<dt>
+<a href="cairo-cairo-t.html">cairo_t</a> - Drawing contexts.</dt>
+<dt>
+<a href="cairo-cairo-surface-t.html">cairo_surface_t</a> - </dt>
+<dt>
+<a href="cairo-cairo-pattern-t.html">cairo_pattern_t</a> - </dt>
+<dt>
+<a href="cairo-cairo-matrix-t.html">cairo_matrix_t</a> -
+ Transformation matrices</dt>
+<dt>
+<a href="cairo-Fonts.html">Fonts</a> - Font Handling</dt>
+<dt>
+<a href="cairo-ATSUI-Fonts.html">ATSUI Fonts</a> - </dt>
+<dt>
+<a href="cairo-FreeType-Fonts.html">FreeType Fonts</a> - </dt>
+<dt>
+<a href="cairo-Glitz-backend.html">Glitz backend</a> - </dt>
+<dt>
+<a href="cairo-PDF-Backend.html">PDF Backend</a> - </dt>
+<dt>
+<a href="cairo-PNG-Backend.html">PNG Backend</a> - </dt>
+<dt>
+<a href="cairo-PS-Backend.html">PS Backend</a> - </dt>
+<dt>
+<a href="cairo-Quartz-Backend.html">Quartz Backend</a> - </dt>
+<dt>
+<a href="cairo-Microsoft-Windows-Backend.html">Microsoft Windows Backend</a> - </dt>
+<dt>
+<a href="cairo-XCB-Backend.html">XCB Backend</a> - </dt>
+<dt>
+<a href="cairo-XLib-Backend.html">XLib Backend</a> - </dt>
+</dl></dd>
+<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
+<dt><span class="appendix"><a href="language-bindings.html">A. Creating a language binding for cairo</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="language-bindings.html#bindings-general">General considerations</a></span></dt>
+<dt><span class="sect1"><a href="bindings-memory.html">Memory Management</a></span></dt>
+<dt><span class="sect1"><a href="bindings-return-values.html">Multiple return values</a></span></dt>
+<dt><span class="sect1"><a href="bindings-overloading.html">Overloading and optional arguments</a></span></dt>
+<dt><span class="sect1"><a href="bindings-streams.html">Streams and File I/O</a></span></dt>
+<dt><span class="sect1"><a href="bindings-errors.html">Error handling</a></span></dt>
+<dt><span class="sect1"><a href="bindings-patterns.html">Patterns</a></span></dt>
+<dt><span class="sect1"><a href="bindings-surfaces.html">Surfaces</a></span></dt>
+<dt><span class="sect1"><a href="bindings-fonts.html">Fonts</a></span></dt>
+<dt><span class="sect1"><a href="bindings-path.html">cairo_path_t</a></span></dt>
+</dl></dd>
+</dl>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"></td>
+<td align="right"><a accesskey="n" href="pt01.html"><b>Part&#160;I.&#160;Tutorial&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/index.sgml b/doc/public/html/index.sgml
index 81b09b9..43f3425 100644
--- a/doc/public/html/index.sgml
+++ b/doc/public/html/index.sgml
@@ -5,15 +5,13 @@
<ANCHOR id="cairo-destroy" href="cairo/cairo-cairo-t.html#cairo-destroy">
<ANCHOR id="cairo-save" href="cairo/cairo-cairo-t.html#cairo-save">
<ANCHOR id="cairo-restore" href="cairo/cairo-cairo-t.html#cairo-restore">
-<ANCHOR id="cairo-copy" href="cairo/cairo-cairo-t.html#cairo-copy">
-<ANCHOR id="cairo-set-target-surface" href="cairo/cairo-cairo-t.html#cairo-set-target-surface">
<ANCHOR id="cairo-format-t" href="cairo/cairo-cairo-t.html#cairo-format-t">
-<ANCHOR id="cairo-set-target-image" href="cairo/cairo-cairo-t.html#cairo-set-target-image">
<ANCHOR id="cairo-operator-t" href="cairo/cairo-cairo-t.html#cairo-operator-t">
<ANCHOR id="cairo-set-operator" href="cairo/cairo-cairo-t.html#cairo-set-operator">
-<ANCHOR id="cairo-set-rgb-color" href="cairo/cairo-cairo-t.html#cairo-set-rgb-color">
-<ANCHOR id="cairo-set-pattern" href="cairo/cairo-cairo-t.html#cairo-set-pattern">
-<ANCHOR id="cairo-set-alpha" href="cairo/cairo-cairo-t.html#cairo-set-alpha">
+<ANCHOR id="cairo-set-source-rgb" href="cairo/cairo-cairo-t.html#cairo-set-source-rgb">
+<ANCHOR id="cairo-set-source-rgba" href="cairo/cairo-cairo-t.html#cairo-set-source-rgba">
+<ANCHOR id="cairo-set-source" href="cairo/cairo-cairo-t.html#cairo-set-source">
+<ANCHOR id="cairo-set-source-surface" href="cairo/cairo-cairo-t.html#cairo-set-source-surface">
<ANCHOR id="cairo-set-tolerance" href="cairo/cairo-cairo-t.html#cairo-set-tolerance">
<ANCHOR id="cairo-fill-rule-t" href="cairo/cairo-cairo-t.html#cairo-fill-rule-t">
<ANCHOR id="cairo-set-fill-rule" href="cairo/cairo-cairo-t.html#cairo-set-fill-rule">
@@ -27,14 +25,13 @@
<ANCHOR id="cairo-translate" href="cairo/cairo-cairo-t.html#cairo-translate">
<ANCHOR id="cairo-scale" href="cairo/cairo-cairo-t.html#cairo-scale">
<ANCHOR id="cairo-rotate" href="cairo/cairo-cairo-t.html#cairo-rotate">
-<ANCHOR id="cairo-concat-matrix" href="cairo/cairo-cairo-t.html#cairo-concat-matrix">
+<ANCHOR id="cairo-transform" href="cairo/cairo-cairo-t.html#cairo-transform">
<ANCHOR id="cairo-set-matrix" href="cairo/cairo-cairo-t.html#cairo-set-matrix">
-<ANCHOR id="cairo-default-matrix" href="cairo/cairo-cairo-t.html#cairo-default-matrix">
<ANCHOR id="cairo-identity-matrix" href="cairo/cairo-cairo-t.html#cairo-identity-matrix">
-<ANCHOR id="cairo-transform-point" href="cairo/cairo-cairo-t.html#cairo-transform-point">
-<ANCHOR id="cairo-transform-distance" href="cairo/cairo-cairo-t.html#cairo-transform-distance">
-<ANCHOR id="cairo-inverse-transform-point" href="cairo/cairo-cairo-t.html#cairo-inverse-transform-point">
-<ANCHOR id="cairo-inverse-transform-distance" href="cairo/cairo-cairo-t.html#cairo-inverse-transform-distance">
+<ANCHOR id="cairo-user-to-device" href="cairo/cairo-cairo-t.html#cairo-user-to-device">
+<ANCHOR id="cairo-user-to-device-distance" href="cairo/cairo-cairo-t.html#cairo-user-to-device-distance">
+<ANCHOR id="cairo-device-to-user" href="cairo/cairo-cairo-t.html#cairo-device-to-user">
+<ANCHOR id="cairo-device-to-user-distance" href="cairo/cairo-cairo-t.html#cairo-device-to-user-distance">
<ANCHOR id="cairo-new-path" href="cairo/cairo-cairo-t.html#cairo-new-path">
<ANCHOR id="cairo-move-to" href="cairo/cairo-cairo-t.html#cairo-move-to">
<ANCHOR id="cairo-line-to" href="cairo/cairo-cairo-t.html#cairo-line-to">
@@ -46,8 +43,14 @@
<ANCHOR id="cairo-rel-curve-to" href="cairo/cairo-cairo-t.html#cairo-rel-curve-to">
<ANCHOR id="cairo-rectangle" href="cairo/cairo-cairo-t.html#cairo-rectangle">
<ANCHOR id="cairo-close-path" href="cairo/cairo-cairo-t.html#cairo-close-path">
+<ANCHOR id="cairo-paint" href="cairo/cairo-cairo-t.html#cairo-paint">
+<ANCHOR id="cairo-paint-with-alpha" href="cairo/cairo-cairo-t.html#cairo-paint-with-alpha">
+<ANCHOR id="cairo-mask" href="cairo/cairo-cairo-t.html#cairo-mask">
+<ANCHOR id="cairo-mask-surface" href="cairo/cairo-cairo-t.html#cairo-mask-surface">
<ANCHOR id="cairo-stroke" href="cairo/cairo-cairo-t.html#cairo-stroke">
+<ANCHOR id="cairo-stroke-preserve" href="cairo/cairo-cairo-t.html#cairo-stroke-preserve">
<ANCHOR id="cairo-fill" href="cairo/cairo-cairo-t.html#cairo-fill">
+<ANCHOR id="cairo-fill-preserve" href="cairo/cairo-cairo-t.html#cairo-fill-preserve">
<ANCHOR id="cairo-copy-page" href="cairo/cairo-cairo-t.html#cairo-copy-page">
<ANCHOR id="cairo-show-page" href="cairo/cairo-cairo-t.html#cairo-show-page">
<ANCHOR id="cairo-in-stroke" href="cairo/cairo-cairo-t.html#cairo-in-stroke">
@@ -55,63 +58,64 @@
<ANCHOR id="cairo-bool-t" href="cairo/cairo-cairo-t.html#cairo-bool-t">
<ANCHOR id="cairo-stroke-extents" href="cairo/cairo-cairo-t.html#cairo-stroke-extents">
<ANCHOR id="cairo-fill-extents" href="cairo/cairo-cairo-t.html#cairo-fill-extents">
-<ANCHOR id="cairo-init-clip" href="cairo/cairo-cairo-t.html#cairo-init-clip">
<ANCHOR id="cairo-clip" href="cairo/cairo-cairo-t.html#cairo-clip">
-<ANCHOR id="cairo-font-t" href="cairo/cairo-cairo-t.html#cairo-font-t">
+<ANCHOR id="cairo-clip-preserve" href="cairo/cairo-cairo-t.html#cairo-clip-preserve">
+<ANCHOR id="cairo-reset-clip" href="cairo/cairo-cairo-t.html#cairo-reset-clip">
<ANCHOR id="cairo-glyph-t" href="cairo/cairo-cairo-t.html#cairo-glyph-t">
-<ANCHOR id="cairo-text-extents-t" href="cairo/cairo-cairo-t.html#cairo-text-extents-t">
-<ANCHOR id="cairo-font-extents-t" href="cairo/cairo-cairo-t.html#cairo-font-extents-t">
<ANCHOR id="cairo-font-slant-t" href="cairo/cairo-cairo-t.html#cairo-font-slant-t">
<ANCHOR id="cairo-font-weight-t" href="cairo/cairo-cairo-t.html#cairo-font-weight-t">
-<ANCHOR id="cairo-select-font" href="cairo/cairo-cairo-t.html#cairo-select-font">
-<ANCHOR id="cairo-scale-font" href="cairo/cairo-cairo-t.html#cairo-scale-font">
-<ANCHOR id="cairo-transform-font" href="cairo/cairo-cairo-t.html#cairo-transform-font">
+<ANCHOR id="cairo-select-font-face" href="cairo/cairo-cairo-t.html#cairo-select-font-face">
+<ANCHOR id="cairo-set-font-size" href="cairo/cairo-cairo-t.html#cairo-set-font-size">
+<ANCHOR id="cairo-set-font-matrix" href="cairo/cairo-cairo-t.html#cairo-set-font-matrix">
+<ANCHOR id="cairo-get-font-matrix" href="cairo/cairo-cairo-t.html#cairo-get-font-matrix">
<ANCHOR id="cairo-show-text" href="cairo/cairo-cairo-t.html#cairo-show-text">
<ANCHOR id="cairo-show-glyphs" href="cairo/cairo-cairo-t.html#cairo-show-glyphs">
-<ANCHOR id="cairo-current-font" href="cairo/cairo-cairo-t.html#cairo-current-font">
-<ANCHOR id="cairo-current-font-extents" href="cairo/cairo-cairo-t.html#cairo-current-font-extents">
-<ANCHOR id="cairo-set-font" href="cairo/cairo-cairo-t.html#cairo-set-font">
+<ANCHOR id="cairo-get-font-face" href="cairo/cairo-cairo-t.html#cairo-get-font-face">
+<ANCHOR id="cairo-font-extents" href="cairo/cairo-cairo-t.html#cairo-font-extents">
+<ANCHOR id="cairo-set-font-face" href="cairo/cairo-cairo-t.html#cairo-set-font-face">
<ANCHOR id="cairo-text-extents" href="cairo/cairo-cairo-t.html#cairo-text-extents">
<ANCHOR id="cairo-glyph-extents" href="cairo/cairo-cairo-t.html#cairo-glyph-extents">
<ANCHOR id="cairo-text-path" href="cairo/cairo-cairo-t.html#cairo-text-path">
<ANCHOR id="cairo-glyph-path" href="cairo/cairo-cairo-t.html#cairo-glyph-path">
-<ANCHOR id="cairo-font-reference" href="cairo/cairo-cairo-t.html#cairo-font-reference">
-<ANCHOR id="cairo-font-destroy" href="cairo/cairo-cairo-t.html#cairo-font-destroy">
-<ANCHOR id="cairo-font-extents" href="cairo/cairo-cairo-t.html#cairo-font-extents">
-<ANCHOR id="cairo-font-glyph-extents" href="cairo/cairo-cairo-t.html#cairo-font-glyph-extents">
-<ANCHOR id="cairo-show-surface" href="cairo/cairo-cairo-t.html#cairo-show-surface">
-<ANCHOR id="cairo-current-operator" href="cairo/cairo-cairo-t.html#cairo-current-operator">
-<ANCHOR id="cairo-current-rgb-color" href="cairo/cairo-cairo-t.html#cairo-current-rgb-color">
-<ANCHOR id="cairo-current-pattern" href="cairo/cairo-cairo-t.html#cairo-current-pattern">
-<ANCHOR id="cairo-current-alpha" href="cairo/cairo-cairo-t.html#cairo-current-alpha">
-<ANCHOR id="cairo-current-tolerance" href="cairo/cairo-cairo-t.html#cairo-current-tolerance">
-<ANCHOR id="cairo-current-point" href="cairo/cairo-cairo-t.html#cairo-current-point">
-<ANCHOR id="cairo-current-fill-rule" href="cairo/cairo-cairo-t.html#cairo-current-fill-rule">
-<ANCHOR id="cairo-current-line-width" href="cairo/cairo-cairo-t.html#cairo-current-line-width">
-<ANCHOR id="cairo-current-line-cap" href="cairo/cairo-cairo-t.html#cairo-current-line-cap">
-<ANCHOR id="cairo-current-line-join" href="cairo/cairo-cairo-t.html#cairo-current-line-join">
-<ANCHOR id="cairo-current-miter-limit" href="cairo/cairo-cairo-t.html#cairo-current-miter-limit">
-<ANCHOR id="cairo-current-matrix" href="cairo/cairo-cairo-t.html#cairo-current-matrix">
-<ANCHOR id="cairo-current-target-surface" href="cairo/cairo-cairo-t.html#cairo-current-target-surface">
-<ANCHOR id="cairo-current-path" href="cairo/cairo-cairo-t.html#cairo-current-path">
-<ANCHOR id="cairo-current-path-flat" href="cairo/cairo-cairo-t.html#cairo-current-path-flat">
+<ANCHOR id="cairo-get-operator" href="cairo/cairo-cairo-t.html#cairo-get-operator">
+<ANCHOR id="cairo-get-source" href="cairo/cairo-cairo-t.html#cairo-get-source">
+<ANCHOR id="cairo-get-tolerance" href="cairo/cairo-cairo-t.html#cairo-get-tolerance">
+<ANCHOR id="cairo-get-current-point" href="cairo/cairo-cairo-t.html#cairo-get-current-point">
+<ANCHOR id="cairo-get-fill-rule" href="cairo/cairo-cairo-t.html#cairo-get-fill-rule">
+<ANCHOR id="cairo-get-line-width" href="cairo/cairo-cairo-t.html#cairo-get-line-width">
+<ANCHOR id="cairo-get-line-cap" href="cairo/cairo-cairo-t.html#cairo-get-line-cap">
+<ANCHOR id="cairo-get-line-join" href="cairo/cairo-cairo-t.html#cairo-get-line-join">
+<ANCHOR id="cairo-get-miter-limit" href="cairo/cairo-cairo-t.html#cairo-get-miter-limit">
+<ANCHOR id="cairo-get-matrix" href="cairo/cairo-cairo-t.html#cairo-get-matrix">
+<ANCHOR id="cairo-get-target" href="cairo/cairo-cairo-t.html#cairo-get-target">
+<ANCHOR id="cairo-copy-path" href="cairo/cairo-cairo-t.html#cairo-copy-path">
+<ANCHOR id="cairo-copy-path-flat" href="cairo/cairo-cairo-t.html#cairo-copy-path-flat">
+<ANCHOR id="cairo-append-path" href="cairo/cairo-cairo-t.html#cairo-append-path">
+<ANCHOR id="cairo-path-data-type-t" href="cairo/cairo-cairo-t.html#cairo-path-data-type-t">
+<ANCHOR id="cairo-path-t" href="cairo/cairo-cairo-t.html#cairo-path-t">
+<ANCHOR id="cairo-path-destroy" href="cairo/cairo-cairo-t.html#cairo-path-destroy">
<ANCHOR id="cairo-status-t" href="cairo/cairo-cairo-t.html#cairo-status-t">
<ANCHOR id="cairo-status" href="cairo/cairo-cairo-t.html#cairo-status">
<ANCHOR id="cairo-status-string" href="cairo/cairo-cairo-t.html#cairo-status-string">
+<ANCHOR id="cairo-status-to-string" href="cairo/cairo-cairo-t.html#cairo-status-to-string">
<ANCHOR id="cairo-filter-t" href="cairo/cairo-cairo-t.html#cairo-filter-t">
<ANCHOR id="cairo-image-surface-create" href="cairo/cairo-cairo-t.html#cairo-image-surface-create">
<ANCHOR id="cairo-image-surface-create-for-data" href="cairo/cairo-cairo-t.html#cairo-image-surface-create-for-data">
+<ANCHOR id="cairo-image-surface-get-width" href="cairo/cairo-cairo-t.html#cairo-image-surface-get-width">
+<ANCHOR id="cairo-image-surface-get-height" href="cairo/cairo-cairo-t.html#cairo-image-surface-get-height">
+<ANCHOR id="cairo-destroy-func-t" href="cairo/cairo-cairo-t.html#cairo-destroy-func-t">
+<ANCHOR id="cairo-user-data-key-t" href="cairo/cairo-cairo-t.html#cairo-user-data-key-t">
+<ANCHOR id="cairo-read-func-t" href="cairo/cairo-cairo-t.html#cairo-read-func-t">
+<ANCHOR id="cairo-write-func-t" href="cairo/cairo-cairo-t.html#cairo-write-func-t">
<ANCHOR id="cairo-cairo-surface-t" href="cairo/cairo-cairo-surface-t.html">
<ANCHOR id="cairo-surface-t" href="cairo/cairo-cairo-surface-t.html#cairo-surface-t">
-<ANCHOR id="cairo-surface-create-for-image" href="cairo/cairo-cairo-surface-t.html#cairo-surface-create-for-image">
<ANCHOR id="cairo-surface-create-similar" href="cairo/cairo-cairo-surface-t.html#cairo-surface-create-similar">
<ANCHOR id="cairo-surface-reference" href="cairo/cairo-cairo-surface-t.html#cairo-surface-reference">
<ANCHOR id="cairo-surface-destroy" href="cairo/cairo-cairo-surface-t.html#cairo-surface-destroy">
-<ANCHOR id="cairo-surface-set-repeat" href="cairo/cairo-cairo-surface-t.html#cairo-surface-set-repeat">
-<ANCHOR id="cairo-surface-set-matrix" href="cairo/cairo-cairo-surface-t.html#cairo-surface-set-matrix">
-<ANCHOR id="cairo-surface-get-matrix" href="cairo/cairo-cairo-surface-t.html#cairo-surface-get-matrix">
-<ANCHOR id="cairo-surface-set-filter" href="cairo/cairo-cairo-surface-t.html#cairo-surface-set-filter">
-<ANCHOR id="cairo-surface-get-filter" href="cairo/cairo-cairo-surface-t.html#cairo-surface-get-filter">
+<ANCHOR id="cairo-surface-finish" href="cairo/cairo-cairo-surface-t.html#cairo-surface-finish">
+<ANCHOR id="cairo-surface-set-user-data" href="cairo/cairo-cairo-surface-t.html#cairo-surface-set-user-data">
+<ANCHOR id="cairo-surface-get-user-data" href="cairo/cairo-cairo-surface-t.html#cairo-surface-get-user-data">
+<ANCHOR id="cairo-surface-set-device-offset" href="cairo/cairo-cairo-surface-t.html#cairo-surface-set-device-offset">
<ANCHOR id="cairo-cairo-pattern-t" href="cairo/cairo-cairo-pattern-t.html">
<ANCHOR id="cairo-pattern-t" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-t">
<ANCHOR id="cairo-pattern-create-for-surface" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-create-for-surface">
@@ -119,7 +123,9 @@
<ANCHOR id="cairo-pattern-create-radial" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-create-radial">
<ANCHOR id="cairo-pattern-reference" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-reference">
<ANCHOR id="cairo-pattern-destroy" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-destroy">
-<ANCHOR id="cairo-pattern-add-color-stop" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop">
+<ANCHOR id="cairo-pattern-status" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-status">
+<ANCHOR id="cairo-pattern-add-color-stop-rgb" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgb">
+<ANCHOR id="cairo-pattern-add-color-stop-rgba" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba">
<ANCHOR id="cairo-pattern-set-matrix" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-set-matrix">
<ANCHOR id="cairo-pattern-get-matrix" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-get-matrix">
<ANCHOR id="cairo-extend-t" href="cairo/cairo-cairo-pattern-t.html#cairo-extend-t">
@@ -129,12 +135,11 @@
<ANCHOR id="cairo-pattern-get-filter" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-get-filter">
<ANCHOR id="cairo-cairo-matrix-t" href="cairo/cairo-cairo-matrix-t.html">
<ANCHOR id="cairo-matrix-t" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-t">
-<ANCHOR id="cairo-matrix-create" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-create">
-<ANCHOR id="cairo-matrix-destroy" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-destroy">
-<ANCHOR id="cairo-matrix-copy" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-copy">
-<ANCHOR id="cairo-matrix-set-identity" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-set-identity">
-<ANCHOR id="cairo-matrix-set-affine" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-set-affine">
-<ANCHOR id="cairo-matrix-get-affine" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-get-affine">
+<ANCHOR id="cairo-matrix-init" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-init">
+<ANCHOR id="cairo-matrix-init-identity" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-init-identity">
+<ANCHOR id="cairo-matrix-init-translate" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-init-translate">
+<ANCHOR id="cairo-matrix-init-scale" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-init-scale">
+<ANCHOR id="cairo-matrix-init-rotate" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-init-rotate">
<ANCHOR id="cairo-matrix-translate" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-translate">
<ANCHOR id="cairo-matrix-scale" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-scale">
<ANCHOR id="cairo-matrix-rotate" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-rotate">
@@ -142,38 +147,54 @@
<ANCHOR id="cairo-matrix-multiply" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-multiply">
<ANCHOR id="cairo-matrix-transform-distance" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-transform-distance">
<ANCHOR id="cairo-matrix-transform-point" href="cairo/cairo-cairo-matrix-t.html#cairo-matrix-transform-point">
+<ANCHOR id="cairo-Fonts" href="cairo/cairo-Fonts.html">
+<ANCHOR id="cairo-font-face-t" href="cairo/cairo-Fonts.html#cairo-font-face-t">
+<ANCHOR id="cairo-scaled-font-t" href="cairo/cairo-Fonts.html#cairo-scaled-font-t">
+<ANCHOR id="cairo-font-face-reference" href="cairo/cairo-Fonts.html#cairo-font-face-reference">
+<ANCHOR id="cairo-font-face-destroy" href="cairo/cairo-Fonts.html#cairo-font-face-destroy">
+<ANCHOR id="cairo-font-face-get-user-data" href="cairo/cairo-Fonts.html#cairo-font-face-get-user-data">
+<ANCHOR id="cairo-font-face-set-user-data" href="cairo/cairo-Fonts.html#cairo-font-face-set-user-data">
+<ANCHOR id="cairo-scaled-font-create" href="cairo/cairo-Fonts.html#cairo-scaled-font-create">
+<ANCHOR id="cairo-scaled-font-reference" href="cairo/cairo-Fonts.html#cairo-scaled-font-reference">
+<ANCHOR id="cairo-scaled-font-destroy" href="cairo/cairo-Fonts.html#cairo-scaled-font-destroy">
+<ANCHOR id="cairo-font-extents-t" href="cairo/cairo-Fonts.html#cairo-font-extents-t">
+<ANCHOR id="cairo-scaled-font-extents" href="cairo/cairo-Fonts.html#cairo-scaled-font-extents">
+<ANCHOR id="cairo-text-extents-t" href="cairo/cairo-Fonts.html#cairo-text-extents-t">
+<ANCHOR id="cairo-scaled-font-glyph-extents" href="cairo/cairo-Fonts.html#cairo-scaled-font-glyph-extents">
<ANCHOR id="cairo-ATSUI-Fonts" href="cairo/cairo-ATSUI-Fonts.html">
-<ANCHOR id="cairo-atsui-font-create" href="cairo/cairo-ATSUI-Fonts.html#cairo-atsui-font-create">
<ANCHOR id="cairo-FreeType-Fonts" href="cairo/cairo-FreeType-Fonts.html">
-<ANCHOR id="cairo-ft-font-create" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-font-create">
-<ANCHOR id="cairo-ft-font-create-for-ft-face" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-font-create-for-ft-face">
-<ANCHOR id="cairo-ft-font-lock-face" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-font-lock-face">
-<ANCHOR id="cairo-ft-font-unlock-face" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-font-unlock-face">
-<ANCHOR id="cairo-ft-font-get-pattern" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-font-get-pattern">
+<ANCHOR id="cairo-ft-font-face-create-for-pattern" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-pattern">
+<ANCHOR id="cairo-ft-font-face-create-for-ft-face" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-font-face-create-for-ft-face">
+<ANCHOR id="cairo-ft-scaled-font-lock-face" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-scaled-font-lock-face">
+<ANCHOR id="cairo-ft-scaled-font-unlock-face" href="cairo/cairo-FreeType-Fonts.html#cairo-ft-scaled-font-unlock-face">
<ANCHOR id="cairo-Glitz-backend" href="cairo/cairo-Glitz-backend.html">
-<ANCHOR id="cairo-set-target-glitz" href="cairo/cairo-Glitz-backend.html#cairo-set-target-glitz">
<ANCHOR id="cairo-glitz-surface-create" href="cairo/cairo-Glitz-backend.html#cairo-glitz-surface-create">
<ANCHOR id="cairo-PDF-Backend" href="cairo/cairo-PDF-Backend.html">
-<ANCHOR id="cairo-set-target-pdf" href="cairo/cairo-PDF-Backend.html#cairo-set-target-pdf">
<ANCHOR id="cairo-pdf-surface-create" href="cairo/cairo-PDF-Backend.html#cairo-pdf-surface-create">
+<ANCHOR id="cairo-pdf-surface-create-for-stream" href="cairo/cairo-PDF-Backend.html#cairo-pdf-surface-create-for-stream">
+<ANCHOR id="cairo-pdf-surface-set-dpi" href="cairo/cairo-PDF-Backend.html#cairo-pdf-surface-set-dpi">
<ANCHOR id="cairo-PNG-Backend" href="cairo/cairo-PNG-Backend.html">
-<ANCHOR id="cairo-set-target-png" href="cairo/cairo-PNG-Backend.html#cairo-set-target-png">
-<ANCHOR id="cairo-png-surface-create" href="cairo/cairo-PNG-Backend.html#cairo-png-surface-create">
+<ANCHOR id="cairo-image-surface-create-from-png" href="cairo/cairo-PNG-Backend.html#cairo-image-surface-create-from-png">
+<ANCHOR id="cairo-image-surface-create-from-png-stream" href="cairo/cairo-PNG-Backend.html#cairo-image-surface-create-from-png-stream">
+<ANCHOR id="cairo-surface-write-to-png" href="cairo/cairo-PNG-Backend.html#cairo-surface-write-to-png">
+<ANCHOR id="cairo-surface-write-to-png-stream" href="cairo/cairo-PNG-Backend.html#cairo-surface-write-to-png-stream">
<ANCHOR id="cairo-PS-Backend" href="cairo/cairo-PS-Backend.html">
-<ANCHOR id="cairo-set-target-ps" href="cairo/cairo-PS-Backend.html#cairo-set-target-ps">
<ANCHOR id="cairo-ps-surface-create" href="cairo/cairo-PS-Backend.html#cairo-ps-surface-create">
+<ANCHOR id="cairo-ps-surface-create-for-stream" href="cairo/cairo-PS-Backend.html#cairo-ps-surface-create-for-stream">
+<ANCHOR id="cairo-ps-surface-set-dpi" href="cairo/cairo-PS-Backend.html#cairo-ps-surface-set-dpi">
<ANCHOR id="cairo-Quartz-Backend" href="cairo/cairo-Quartz-Backend.html">
-<ANCHOR id="cairo-set-target-quartz-context" href="cairo/cairo-Quartz-Backend.html#cairo-set-target-quartz-context">
<ANCHOR id="cairo-quartz-surface-create" href="cairo/cairo-Quartz-Backend.html#cairo-quartz-surface-create">
<ANCHOR id="cairo-Microsoft-Windows-Backend" href="cairo/cairo-Microsoft-Windows-Backend.html">
-<ANCHOR id="cairo-set-target-win32" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-set-target-win32">
<ANCHOR id="cairo-win32-surface-create" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-surface-create">
-<ANCHOR id="cairo-win32-font-create-for-logfontw" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-font-create-for-logfontw">
-<ANCHOR id="cairo-win32-font-select-font" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-font-select-font">
-<ANCHOR id="cairo-win32-font-done-font" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-font-done-font">
-<ANCHOR id="cairo-win32-font-get-scale-factor" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-font-get-scale-factor">
+<ANCHOR id="cairo-win32-font-face-create-for-logfontw" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-font-face-create-for-logfontw">
+<ANCHOR id="cairo-win32-scaled-font-select-font" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-select-font">
+<ANCHOR id="cairo-win32-scaled-font-done-font" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-done-font">
+<ANCHOR id="cairo-win32-scaled-font-get-metrics-factor" href="cairo/cairo-Microsoft-Windows-Backend.html#cairo-win32-scaled-font-get-metrics-factor">
<ANCHOR id="cairo-XCB-Backend" href="cairo/cairo-XCB-Backend.html">
-<ANCHOR id="cairo-set-target-xcb" href="cairo/cairo-XCB-Backend.html#cairo-set-target-xcb">
+<ANCHOR id="cairo-xcb-surface-create" href="cairo/cairo-XCB-Backend.html#cairo-xcb-surface-create">
+<ANCHOR id="cairo-xcb-surface-create-for-bitmap" href="cairo/cairo-XCB-Backend.html#cairo-xcb-surface-create-for-bitmap">
+<ANCHOR id="cairo-xcb-surface-set-size" href="cairo/cairo-XCB-Backend.html#cairo-xcb-surface-set-size">
<ANCHOR id="cairo-XLib-Backend" href="cairo/cairo-XLib-Backend.html">
-<ANCHOR id="cairo-set-target-drawable" href="cairo/cairo-XLib-Backend.html#cairo-set-target-drawable">
<ANCHOR id="cairo-xlib-surface-create" href="cairo/cairo-XLib-Backend.html#cairo-xlib-surface-create">
+<ANCHOR id="cairo-xlib-surface-create-for-bitmap" href="cairo/cairo-XLib-Backend.html#cairo-xlib-surface-create-for-bitmap">
+<ANCHOR id="cairo-xlib-surface-set-size" href="cairo/cairo-XLib-Backend.html#cairo-xlib-surface-set-size">
diff --git a/doc/public/html/ix01.html b/doc/public/html/ix01.html
new file mode 100644
index 0000000..e8018a3
--- /dev/null
+++ b/doc/public/html/ix01.html
@@ -0,0 +1,426 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="previous" href="cairo-XLib-Backend.html" title="XLib Backend">
+<link rel="next" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="cairo-XLib-Backend.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="language-bindings.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage">
+<div><div><h2 class="title">
+<a name="id2879289"></a>Index</h2></div></div>
+<div></div>
+</div>
+<div class="index">
+<div class="indexdiv">
+<h3></h3>
+<dl><dt>, <a href="cairo-cairo-matrix-t.html#id2938599">Description</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
+<h3>C</h3>
+<dl>
+<dt>cairo_append_path, <a href="cairo-cairo-t.html#id2993214">cairo_append_path ()</a>
+</dt>
+<dt>cairo_arc, <a href="cairo-cairo-t.html#id2987241">cairo_arc ()</a>
+</dt>
+<dt>cairo_arc_negative, <a href="cairo-cairo-t.html#id2987489">cairo_arc_negative ()</a>
+</dt>
+<dt>cairo_bool_t, <a href="cairo-cairo-t.html#id2989431">cairo_bool_t</a>
+</dt>
+<dt>cairo_clip, <a href="cairo-cairo-t.html#id2989776">cairo_clip ()</a>
+</dt>
+<dt>cairo_clip_preserve, <a href="cairo-cairo-t.html#id2989924">cairo_clip_preserve ()</a>
+</dt>
+<dt>cairo_close_path, <a href="cairo-cairo-t.html#id2988201">cairo_close_path ()</a>
+</dt>
+<dt>cairo_copy_page, <a href="cairo-cairo-t.html#id2989099">cairo_copy_page ()</a>
+</dt>
+<dt>cairo_copy_path, <a href="cairo-cairo-t.html#id2992971">cairo_copy_path ()</a>
+</dt>
+<dt>cairo_copy_path_flat, <a href="cairo-cairo-t.html#id2993083">cairo_copy_path_flat ()</a>
+</dt>
+<dt>cairo_create, <a href="cairo-cairo-t.html#id2983254">cairo_create ()</a>
+</dt>
+<dt>cairo_curve_to, <a href="cairo-cairo-t.html#id2987059">cairo_curve_to ()</a>
+</dt>
+<dt>cairo_destroy, <a href="cairo-cairo-t.html#id2983588">cairo_destroy ()</a>
+</dt>
+<dt>cairo_destroy_func_t, <a href="cairo-cairo-t.html#id2994588">cairo_destroy_func_t ()</a>
+</dt>
+<dt>cairo_device_to_user, <a href="cairo-cairo-t.html#id2986570">cairo_device_to_user ()</a>
+</dt>
+<dt>cairo_device_to_user_distance, <a href="cairo-cairo-t.html#id2986676">cairo_device_to_user_distance ()</a>
+</dt>
+<dt>cairo_extend_t, <a href="cairo-cairo-pattern-t.html#id2938213">enum cairo_extend_t</a>
+</dt>
+<dt>cairo_fill, <a href="cairo-cairo-t.html#id2988922">cairo_fill ()</a>
+</dt>
+<dt>cairo_fill_extents, <a href="cairo-cairo-t.html#id2989635">cairo_fill_extents ()</a>
+</dt>
+<dt>cairo_fill_preserve, <a href="cairo-cairo-t.html#id2989004">cairo_fill_preserve ()</a>
+</dt>
+<dt>cairo_fill_rule_t, <a href="cairo-cairo-t.html#id2984835">enum cairo_fill_rule_t</a>
+</dt>
+<dt>cairo_filter_t, <a href="cairo-cairo-t.html#id2994028">enum cairo_filter_t</a>
+</dt>
+<dt>cairo_font_extents, <a href="cairo-cairo-t.html#id2991184">cairo_font_extents ()</a>
+</dt>
+<dt>cairo_font_extents_t, <a href="cairo-Fonts.html#id2974404">cairo_font_extents_t</a>
+</dt>
+<dt>cairo_font_face_destroy, <a href="cairo-Fonts.html#id2931100">cairo_font_face_destroy ()</a>
+</dt>
+<dt>cairo_font_face_get_user_data, <a href="cairo-Fonts.html#id2931186">cairo_font_face_get_user_data ()</a>
+</dt>
+<dt>cairo_font_face_reference, <a href="cairo-Fonts.html#id2931013">cairo_font_face_reference ()</a>
+</dt>
+<dt>cairo_font_face_set_user_data, <a href="cairo-Fonts.html#id2931311">cairo_font_face_set_user_data ()</a>
+</dt>
+<dt>cairo_font_face_t, <a href="cairo-Fonts.html#id2954886">cairo_font_face_t</a>
+</dt>
+<dt>cairo_font_slant_t, <a href="cairo-cairo-t.html#id2990345">enum cairo_font_slant_t</a>
+</dt>
+<dt>cairo_font_weight_t, <a href="cairo-cairo-t.html#id2990374">enum cairo_font_weight_t</a>
+</dt>
+<dt>cairo_format_t, <a href="cairo-cairo-t.html#id2983936">enum cairo_format_t</a>
+</dt>
+<dt>cairo_ft_font_face_create_for_ft_face, <a href="cairo-FreeType-Fonts.html#id2930778">cairo_ft_font_face_create_for_ft_face ()</a>
+</dt>
+<dt>cairo_ft_font_face_create_for_pattern, <a href="cairo-FreeType-Fonts.html#id2936855">cairo_ft_font_face_create_for_pattern ()</a>
+</dt>
+<dt>cairo_ft_scaled_font_lock_face, <a href="cairo-FreeType-Fonts.html#id2944636">cairo_ft_scaled_font_lock_face ()</a>
+</dt>
+<dt>cairo_ft_scaled_font_unlock_face, <a href="cairo-FreeType-Fonts.html#id2973551">cairo_ft_scaled_font_unlock_face ()</a>
+</dt>
+<dt>cairo_get_current_point, <a href="cairo-cairo-t.html#id2992133">cairo_get_current_point ()</a>
+</dt>
+<dt>cairo_get_fill_rule, <a href="cairo-cairo-t.html#id2992371">cairo_get_fill_rule ()</a>
+</dt>
+<dt>cairo_get_font_face, <a href="cairo-cairo-t.html#id2991079">cairo_get_font_face ()</a>
+</dt>
+<dt>cairo_get_font_matrix, <a href="cairo-cairo-t.html#id2990797">cairo_get_font_matrix ()</a>
+</dt>
+<dt>cairo_get_line_cap, <a href="cairo-cairo-t.html#id2992535">cairo_get_line_cap ()</a>
+</dt>
+<dt>cairo_get_line_join, <a href="cairo-cairo-t.html#id2992618">cairo_get_line_join ()</a>
+</dt>
+<dt>cairo_get_line_width, <a href="cairo-cairo-t.html#id2992453">cairo_get_line_width ()</a>
+</dt>
+<dt>cairo_get_matrix, <a href="cairo-cairo-t.html#id2992782">cairo_get_matrix ()</a>
+</dt>
+<dt>cairo_get_miter_limit, <a href="cairo-cairo-t.html#id2992700">cairo_get_miter_limit ()</a>
+</dt>
+<dt>cairo_get_operator, <a href="cairo-cairo-t.html#id2991890">cairo_get_operator ()</a>
+</dt>
+<dt>cairo_get_source, <a href="cairo-cairo-t.html#id2991962">cairo_get_source ()</a>
+</dt>
+<dt>cairo_get_target, <a href="cairo-cairo-t.html#id2992871">cairo_get_target ()</a>
+</dt>
+<dt>cairo_get_tolerance, <a href="cairo-cairo-t.html#id2992051">cairo_get_tolerance ()</a>
+</dt>
+<dt>cairo_glitz_surface_create, <a href="cairo-Glitz-backend.html#id2975519">cairo_glitz_surface_create ()</a>
+</dt>
+<dt>cairo_glyph_extents, <a href="cairo-cairo-t.html#id2991548">cairo_glyph_extents ()</a>
+</dt>
+<dt>cairo_glyph_path, <a href="cairo-cairo-t.html#id2991790">cairo_glyph_path ()</a>
+</dt>
+<dt>cairo_glyph_t, <a href="cairo-cairo-t.html#id2990201">cairo_glyph_t</a>
+</dt>
+<dt>cairo_identity_matrix, <a href="cairo-cairo-t.html#id2986270">cairo_identity_matrix ()</a>
+</dt>
+<dt>cairo_image_surface_create, <a href="cairo-cairo-t.html#id2994057">cairo_image_surface_create ()</a>
+</dt>
+<dt>cairo_image_surface_create_for_data, <a href="cairo-cairo-t.html#id2994202">cairo_image_surface_create_for_data ()</a>
+</dt>
+<dt>cairo_image_surface_create_from_png, <a href="cairo-PNG-Backend.html#id2972242">cairo_image_surface_create_from_png ()</a>
+</dt>
+<dt>cairo_image_surface_create_from_png_stream, <a href="cairo-PNG-Backend.html#id2973862">cairo_image_surface_create_from_png_stream ()</a>
+</dt>
+<dt>cairo_image_surface_get_height, <a href="cairo-cairo-t.html#id2994507">cairo_image_surface_get_height ()</a>
+</dt>
+<dt>cairo_image_surface_get_width, <a href="cairo-cairo-t.html#id2994426">cairo_image_surface_get_width ()</a>
+</dt>
+<dt>cairo_in_fill, <a href="cairo-cairo-t.html#id2989322">cairo_in_fill ()</a>
+</dt>
+<dt>cairo_in_stroke, <a href="cairo-cairo-t.html#id2989212">cairo_in_stroke ()</a>
+</dt>
+<dt>cairo_line_cap_t, <a href="cairo-cairo-t.html#id2985161">enum cairo_line_cap_t</a>
+</dt>
+<dt>cairo_line_join_t, <a href="cairo-cairo-t.html#id2985390">enum cairo_line_join_t</a>
+</dt>
+<dt>cairo_line_to, <a href="cairo-cairo-t.html#id2986960">cairo_line_to ()</a>
+</dt>
+<dt>cairo_mask, <a href="cairo-cairo-t.html#id2988421">cairo_mask ()</a>
+</dt>
+<dt>cairo_mask_surface, <a href="cairo-cairo-t.html#id2988524">cairo_mask_surface ()</a>
+</dt>
+<dt>cairo_matrix_init, <a href="cairo-cairo-matrix-t.html#id2971462">cairo_matrix_init ()</a>
+</dt>
+<dt>cairo_matrix_init_identity, <a href="cairo-cairo-matrix-t.html#id2971695">cairo_matrix_init_identity ()</a>
+</dt>
+<dt>cairo_matrix_init_rotate, <a href="cairo-cairo-matrix-t.html#id2932034">cairo_matrix_init_rotate ()</a>
+</dt>
+<dt>cairo_matrix_init_scale, <a href="cairo-cairo-matrix-t.html#id2931915">cairo_matrix_init_scale ()</a>
+</dt>
+<dt>cairo_matrix_init_translate, <a href="cairo-cairo-matrix-t.html#id2931794">cairo_matrix_init_translate ()</a>
+</dt>
+<dt>cairo_matrix_invert, <a href="cairo-cairo-matrix-t.html#id2932516">cairo_matrix_invert ()</a>
+</dt>
+<dt>cairo_matrix_multiply, <a href="cairo-cairo-matrix-t.html#id2932631">cairo_matrix_multiply ()</a>
+</dt>
+<dt>cairo_matrix_rotate, <a href="cairo-cairo-matrix-t.html#id2932405">cairo_matrix_rotate ()</a>
+</dt>
+<dt>cairo_matrix_scale, <a href="cairo-cairo-matrix-t.html#id2932264">cairo_matrix_scale ()</a>
+</dt>
+<dt>cairo_matrix_t, <a href="cairo-cairo-matrix-t.html#id2938749">cairo_matrix_t</a>
+</dt>
+<dt>cairo_matrix_transform_distance, <a href="cairo-cairo-matrix-t.html#id2973056">cairo_matrix_transform_distance ()</a>
+</dt>
+<dt>cairo_matrix_transform_point, <a href="cairo-cairo-matrix-t.html#id2973295">cairo_matrix_transform_point ()</a>
+</dt>
+<dt>cairo_matrix_translate, <a href="cairo-cairo-matrix-t.html#id2932130">cairo_matrix_translate ()</a>
+</dt>
+<dt>cairo_move_to, <a href="cairo-cairo-t.html#id2986862">cairo_move_to ()</a>
+</dt>
+<dt>cairo_new_path, <a href="cairo-cairo-t.html#id2986805">cairo_new_path ()</a>
+</dt>
+<dt>cairo_operator_t, <a href="cairo-cairo-t.html#id2984056">enum cairo_operator_t</a>
+</dt>
+<dt>cairo_paint, <a href="cairo-cairo-t.html#id2988258">cairo_paint ()</a>
+</dt>
+<dt>cairo_paint_with_alpha, <a href="cairo-cairo-t.html#id2988319">cairo_paint_with_alpha ()</a>
+</dt>
+<dt>cairo_path_data_type_t, <a href="cairo-cairo-t.html#id2993339">enum cairo_path_data_type_t</a>
+</dt>
+<dt>cairo_path_destroy, <a href="cairo-cairo-t.html#id2993452">cairo_path_destroy ()</a>
+</dt>
+<dt>cairo_path_t, <a href="cairo-cairo-t.html#id2993369">cairo_path_t</a>
+</dt>
+<dt>cairo_pattern_add_color_stop_rgb, <a href="cairo-cairo-pattern-t.html#id2944950">cairo_pattern_add_color_stop_rgb ()</a>
+</dt>
+<dt>cairo_pattern_add_color_stop_rgba, <a href="cairo-cairo-pattern-t.html#id2945092">cairo_pattern_add_color_stop_rgba ()</a>
+</dt>
+<dt>cairo_pattern_create_for_surface, <a href="cairo-cairo-pattern-t.html#id2934264">cairo_pattern_create_for_surface ()</a>
+</dt>
+<dt>cairo_pattern_create_linear, <a href="cairo-cairo-pattern-t.html#id2934331">cairo_pattern_create_linear ()</a>
+</dt>
+<dt>cairo_pattern_create_radial, <a href="cairo-cairo-pattern-t.html#id2972519">cairo_pattern_create_radial ()</a>
+</dt>
+<dt>cairo_pattern_destroy, <a href="cairo-cairo-pattern-t.html#id2944809">cairo_pattern_destroy ()</a>
+</dt>
+<dt>cairo_pattern_get_extend, <a href="cairo-cairo-pattern-t.html#id2938316">cairo_pattern_get_extend ()</a>
+</dt>
+<dt>cairo_pattern_get_filter, <a href="cairo-cairo-pattern-t.html#id2938457">cairo_pattern_get_filter ()</a>
+</dt>
+<dt>cairo_pattern_get_matrix, <a href="cairo-cairo-pattern-t.html#id2938138">cairo_pattern_get_matrix ()</a>
+</dt>
+<dt>cairo_pattern_reference, <a href="cairo-cairo-pattern-t.html#id2972691">cairo_pattern_reference ()</a>
+</dt>
+<dt>cairo_pattern_set_extend, <a href="cairo-cairo-pattern-t.html#id2938241">cairo_pattern_set_extend ()</a>
+</dt>
+<dt>cairo_pattern_set_filter, <a href="cairo-cairo-pattern-t.html#id2938381">cairo_pattern_set_filter ()</a>
+</dt>
+<dt>cairo_pattern_set_matrix, <a href="cairo-cairo-pattern-t.html#id2938063">cairo_pattern_set_matrix ()</a>
+</dt>
+<dt>cairo_pattern_status, <a href="cairo-cairo-pattern-t.html#id2944862">cairo_pattern_status ()</a>
+</dt>
+<dt>cairo_pattern_t, <a href="cairo-cairo-pattern-t.html#id2934238">cairo_pattern_t</a>
+</dt>
+<dt>cairo_pdf_surface_create, <a href="cairo-PDF-Backend.html#id2975175">cairo_pdf_surface_create ()</a>
+</dt>
+<dt>cairo_pdf_surface_create_for_stream, <a href="cairo-PDF-Backend.html#id2944378">cairo_pdf_surface_create_for_stream ()</a>
+</dt>
+<dt>cairo_pdf_surface_set_dpi, <a href="cairo-PDF-Backend.html#id2973720">cairo_pdf_surface_set_dpi ()</a>
+</dt>
+<dt>cairo_ps_surface_create, <a href="cairo-PS-Backend.html#id2975378">cairo_ps_surface_create ()</a>
+</dt>
+<dt>cairo_ps_surface_create_for_stream, <a href="cairo-PS-Backend.html#id2975614">cairo_ps_surface_create_for_stream ()</a>
+</dt>
+<dt>cairo_ps_surface_set_dpi, <a href="cairo-PS-Backend.html#id2970062">cairo_ps_surface_set_dpi ()</a>
+</dt>
+<dt>cairo_quartz_surface_create, <a href="cairo-Quartz-Backend.html#id2969829">cairo_quartz_surface_create ()</a>
+</dt>
+<dt>cairo_read_func_t, <a href="cairo-cairo-t.html#id2994718">cairo_read_func_t ()</a>
+</dt>
+<dt>cairo_rectangle, <a href="cairo-cairo-t.html#id2988060">cairo_rectangle ()</a>
+</dt>
+<dt>cairo_reference, <a href="cairo-cairo-t.html#id2983498">cairo_reference ()</a>
+</dt>
+<dt>cairo_rel_curve_to, <a href="cairo-cairo-t.html#id2987878">cairo_rel_curve_to ()</a>
+</dt>
+<dt>cairo_rel_line_to, <a href="cairo-cairo-t.html#id2987780">cairo_rel_line_to ()</a>
+</dt>
+<dt>cairo_rel_move_to, <a href="cairo-cairo-t.html#id2987681">cairo_rel_move_to ()</a>
+</dt>
+<dt>cairo_reset_clip, <a href="cairo-cairo-t.html#id2990082">cairo_reset_clip ()</a>
+</dt>
+<dt>cairo_restore, <a href="cairo-cairo-t.html#id2983852">cairo_restore ()</a>
+</dt>
+<dt>cairo_rotate, <a href="cairo-cairo-t.html#id2985995">cairo_rotate ()</a>
+</dt>
+<dt>cairo_save, <a href="cairo-cairo-t.html#id2983679">cairo_save ()</a>
+</dt>
+<dt>cairo_scale, <a href="cairo-cairo-t.html#id2985877">cairo_scale ()</a>
+</dt>
+<dt>cairo_scaled_font_create, <a href="cairo-Fonts.html#id2974065">cairo_scaled_font_create ()</a>
+</dt>
+<dt>cairo_scaled_font_destroy, <a href="cairo-Fonts.html#id2974314">cairo_scaled_font_destroy ()</a>
+</dt>
+<dt>cairo_scaled_font_extents, <a href="cairo-Fonts.html#id2974621">cairo_scaled_font_extents ()</a>
+</dt>
+<dt>cairo_scaled_font_glyph_extents, <a href="cairo-Fonts.html#id2974934">cairo_scaled_font_glyph_extents ()</a>
+</dt>
+<dt>cairo_scaled_font_reference, <a href="cairo-Fonts.html#id2974225">cairo_scaled_font_reference ()</a>
+</dt>
+<dt>cairo_scaled_font_t, <a href="cairo-Fonts.html#id2930972">cairo_scaled_font_t</a>
+</dt>
+<dt>cairo_select_font_face, <a href="cairo-cairo-t.html#id2990402">cairo_select_font_face ()</a>
+</dt>
+<dt>cairo_set_dash, <a href="cairo-cairo-t.html#id2985559">cairo_set_dash ()</a>
+</dt>
+<dt>cairo_set_fill_rule, <a href="cairo-cairo-t.html#id2984926">cairo_set_fill_rule ()</a>
+</dt>
+<dt>cairo_set_font_face, <a href="cairo-cairo-t.html#id2991282">cairo_set_font_face ()</a>
+</dt>
+<dt>cairo_set_font_matrix, <a href="cairo-cairo-t.html#id2990678">cairo_set_font_matrix ()</a>
+</dt>
+<dt>cairo_set_font_size, <a href="cairo-cairo-t.html#id2990542">cairo_set_font_size ()</a>
+</dt>
+<dt>cairo_set_line_cap, <a href="cairo-cairo-t.html#id2985249">cairo_set_line_cap ()</a>
+</dt>
+<dt>cairo_set_line_join, <a href="cairo-cairo-t.html#id2985418">cairo_set_line_join ()</a>
+</dt>
+<dt>cairo_set_line_width, <a href="cairo-cairo-t.html#id2985035">cairo_set_line_width ()</a>
+</dt>
+<dt>cairo_set_matrix, <a href="cairo-cairo-t.html#id2986179">cairo_set_matrix ()</a>
+</dt>
+<dt>cairo_set_miter_limit, <a href="cairo-cairo-t.html#id2985679">cairo_set_miter_limit ()</a>
+</dt>
+<dt>cairo_set_operator, <a href="cairo-cairo-t.html#id2984090">cairo_set_operator ()</a>
+</dt>
+<dt>cairo_set_source, <a href="cairo-cairo-t.html#id2984503">cairo_set_source ()</a>
+</dt>
+<dt>cairo_set_source_rgb, <a href="cairo-cairo-t.html#id2984203">cairo_set_source_rgb ()</a>
+</dt>
+<dt>cairo_set_source_rgba, <a href="cairo-cairo-t.html#id2984342">cairo_set_source_rgba ()</a>
+</dt>
+<dt>cairo_set_source_surface, <a href="cairo-cairo-t.html#id2984613">cairo_set_source_surface ()</a>
+</dt>
+<dt>cairo_set_tolerance, <a href="cairo-cairo-t.html#id2984733">cairo_set_tolerance ()</a>
+</dt>
+<dt>cairo_show_glyphs, <a href="cairo-cairo-t.html#id2990980">cairo_show_glyphs ()</a>
+</dt>
+<dt>cairo_show_page, <a href="cairo-cairo-t.html#id2989156">cairo_show_page ()</a>
+</dt>
+<dt>cairo_show_text, <a href="cairo-cairo-t.html#id2990903">cairo_show_text ()</a>
+</dt>
+<dt>cairo_status, <a href="cairo-cairo-t.html#id2993862">cairo_status ()</a>
+</dt>
+<dt>cairo_status_string, <a href="cairo-cairo-t.html#id2993930">cairo_status_string</a>
+</dt>
+<dt>cairo_status_t, <a href="cairo-cairo-t.html#id2993552">enum cairo_status_t</a>
+</dt>
+<dt>cairo_status_to_string, <a href="cairo-cairo-t.html#id2993958">cairo_status_to_string ()</a>
+</dt>
+<dt>cairo_stroke, <a href="cairo-cairo-t.html#id2988683">cairo_stroke ()</a>
+</dt>
+<dt>cairo_stroke_extents, <a href="cairo-cairo-t.html#id2989494">cairo_stroke_extents ()</a>
+</dt>
+<dt>cairo_stroke_preserve, <a href="cairo-cairo-t.html#id2988796">cairo_stroke_preserve ()</a>
+</dt>
+<dt>cairo_surface_create_similar, <a href="cairo-cairo-surface-t.html#id2933393">cairo_surface_create_similar ()</a>
+</dt>
+<dt>cairo_surface_destroy, <a href="cairo-cairo-surface-t.html#id2969202">cairo_surface_destroy ()</a>
+</dt>
+<dt>cairo_surface_finish, <a href="cairo-cairo-surface-t.html#id2968003">cairo_surface_finish ()</a>
+</dt>
+<dt>cairo_surface_get_user_data, <a href="cairo-cairo-surface-t.html#id2935377">cairo_surface_get_user_data ()</a>
+</dt>
+<dt>cairo_surface_reference, <a href="cairo-cairo-surface-t.html#id2969148">cairo_surface_reference ()</a>
+</dt>
+<dt>cairo_surface_set_device_offset, <a href="cairo-cairo-surface-t.html#id2935499">cairo_surface_set_device_offset ()</a>
+</dt>
+<dt>cairo_surface_set_user_data, <a href="cairo-cairo-surface-t.html#id2968120">cairo_surface_set_user_data ()</a>
+</dt>
+<dt>cairo_surface_t, <a href="cairo-cairo-surface-t.html#id2933315">cairo_surface_t</a>
+</dt>
+<dt>cairo_surface_write_to_png, <a href="cairo-PNG-Backend.html#id2970718">cairo_surface_write_to_png ()</a>
+</dt>
+<dt>cairo_surface_write_to_png_stream, <a href="cairo-PNG-Backend.html#id2970831">cairo_surface_write_to_png_stream ()</a>
+</dt>
+<dt>cairo_t, <a href="cairo-cairo-t.html#id2983216">cairo_t</a>
+</dt>
+<dt>cairo_text_extents, <a href="cairo-cairo-t.html#id2991414">cairo_text_extents ()</a>
+</dt>
+<dt>cairo_text_extents_t, <a href="cairo-Fonts.html#id2974745">cairo_text_extents_t</a>
+</dt>
+<dt>cairo_text_path, <a href="cairo-cairo-t.html#id2991712">cairo_text_path ()</a>
+</dt>
+<dt>cairo_transform, <a href="cairo-cairo-t.html#id2986088">cairo_transform ()</a>
+</dt>
+<dt>cairo_translate, <a href="cairo-cairo-t.html#id2985757">cairo_translate ()</a>
+</dt>
+<dt>cairo_user_data_key_t, <a href="cairo-cairo-t.html#id2994660">cairo_user_data_key_t</a>
+</dt>
+<dt>cairo_user_to_device, <a href="cairo-cairo-t.html#id2986334">cairo_user_to_device ()</a>
+</dt>
+<dt>cairo_user_to_device_distance, <a href="cairo-cairo-t.html#id2986440">cairo_user_to_device_distance ()</a>
+</dt>
+<dt>cairo_win32_font_face_create_for_logfontw, <a href="cairo-Microsoft-Windows-Backend.html#id2943496">cairo_win32_font_face_create_for_logfontw ()</a>
+</dt>
+<dt>cairo_win32_scaled_font_done_font, <a href="cairo-Microsoft-Windows-Backend.html#id2926866">cairo_win32_scaled_font_done_font ()</a>
+</dt>
+<dt>cairo_win32_scaled_font_get_metrics_factor, <a href="cairo-Microsoft-Windows-Backend.html#id2970197">cairo_win32_scaled_font_get_metrics_factor ()</a>
+</dt>
+<dt>cairo_win32_scaled_font_select_font, <a href="cairo-Microsoft-Windows-Backend.html#id2926688">cairo_win32_scaled_font_select_font ()</a>
+</dt>
+<dt>cairo_win32_surface_create, <a href="cairo-Microsoft-Windows-Backend.html#id2937449">cairo_win32_surface_create ()</a>
+</dt>
+<dt>cairo_write_func_t, <a href="cairo-cairo-t.html#id2994845">cairo_write_func_t ()</a>
+</dt>
+<dt>cairo_xcb_surface_create, <a href="cairo-XCB-Backend.html#id2970385">cairo_xcb_surface_create ()</a>
+</dt>
+<dt>cairo_xcb_surface_create_for_bitmap, <a href="cairo-XCB-Backend.html#id2978879">cairo_xcb_surface_create_for_bitmap ()</a>
+</dt>
+<dt>cairo_xcb_surface_set_size, <a href="cairo-XCB-Backend.html#id2979025">cairo_xcb_surface_set_size ()</a>
+</dt>
+<dt>cairo_xlib_surface_create, <a href="cairo-XLib-Backend.html#id2979144">cairo_xlib_surface_create ()</a>
+</dt>
+<dt>cairo_xlib_surface_create_for_bitmap, <a href="cairo-XLib-Backend.html#id2927399">cairo_xlib_surface_create_for_bitmap ()</a>
+</dt>
+<dt>cairo_xlib_surface_set_size, <a href="cairo-XLib-Backend.html#id2926098">cairo_xlib_surface_set_size ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>T</h3>
+<dl>
+<dt>types</dt>
+<dd><dl><dt>cairo_matrix, <a href="cairo-cairo-matrix-t.html#id2938599">Description</a>
+</dt></dl></dd>
+</dl>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="cairo-XLib-Backend.html"><b>&lt;&lt;&#160;XLib Backend</b></a></td>
+<td align="right"><a accesskey="n" href="language-bindings.html"><b>Appendix&#160;A.&#160;Creating a language binding for cairo&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/language-bindings.html b/doc/public/html/language-bindings.html
new file mode 100644
index 0000000..04cd441
--- /dev/null
+++ b/doc/public/html/language-bindings.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix&#160;A.&#160;Creating a language binding for cairo</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="previous" href="ix01.html" title="Index">
+<link rel="next" href="bindings-memory.html" title="Memory Management">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ix01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="bindings-memory.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="appendix" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title">
+<a name="language-bindings"></a>Appendix&#160;A.&#160;Creating a language binding for cairo</h2></div></div>
+<div></div>
+</div>
+<p>
+ While cairo is implemented and C, and has a C API, it is expected
+ that many users of cairo will be using it from languages other
+ than C. The glue that connects the core cairo library to another
+ language is known as a <i class="firstterm">language
+ binding</i>. This appendix attempts to collect together
+ issues that come up when creating a language bindings for cairo
+ and present standardized solutions to promote consistency among
+ the different language bindings.
+ </p>
+<div class="sect1" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="bindings-general"></a>General considerations</h2></div></div>
+<div></div>
+</div>
+<p>
+ The naming of the central <a href="cairo-cairo-t.html#cairo-t"><span class="type">cairo_t</span></a> type is a
+ special exception. The object is &#8220;a cairo context&#8221; not &#8220;a
+ cairo&#8221;, and names such as <span class="type">cairo_t</span> rather than
+ <span class="type">cairo_context_t</span> and
+ <tt class="function">cairo_set_source()</tt> rather than
+ <tt class="function">cairo_context_set_source()</tt> are simply
+ abbreviations to make the C API more palatable. In languages
+ which have object-oriented syntax, this abbreviation is much
+ less useful. In fact, if &#8216;Cairo&#8217; is used as a namespace, then
+ in many languages, you'd end up with a ridiculous type name
+ like &#8216;Cairo.Cairo&#8217;. For this reason, and for inter-language
+ consistency all object-oriented languages should name this
+ type as if it were <span class="type">cairo_context_t</span>.
+ </p>
+<p>
+ The punctuation and casing of the type names and
+ method names of cairo should be changed to match the general
+ convention of the language. In Java, where type names are written
+ in StudlyCaps and method names in javaCaps, cairo_font_extents_t
+ will become FontExtents and
+ <tt class="literal">cairo_set_source(cr,source)</tt>,
+ <tt class="literal">cr.setSource(source)</tt>.
+ As compared to changing the punctuation, and casing, much
+ more reluctance should be used in changing the method names
+ themselves. Even if get is usually omitted from getters in
+ your language, you shouldn't bind cairo_get_source() as
+ cr.source().
+ </p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ix01.html"><b>&lt;&lt;&#160;Index</b></a></td>
+<td align="right"><a accesskey="n" href="bindings-memory.html"><b>Memory Management&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/pt01.html b/doc/public/html/pt01.html
index 37ed228..9bf43c6 100644
--- a/doc/public/html/pt01.html
+++ b/doc/public/html/pt01.html
@@ -1 +1,34 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PartI.Tutorial</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="previous" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="next" href="pt02.html" title="PartII.Reference"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="pt02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2677864"></a>Tutorial</h1></div></div><div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="index.html"><b>&lt;&lt;Cairo: A Vector Graphics Library</b></a></td><td align="right"><a accesskey="n" href="pt02.html"><b>PartII.Reference&gt;&gt;</b></a></td></tr></table></body></html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part&#160;I.&#160;Tutorial</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="previous" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="next" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="pt02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage">
+<div><div><h1 class="title">
+<a name="id2915378"></a>Tutorial</h1></div></div>
+<div></div>
+</div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="index.html"><b>&lt;&lt;&#160;Cairo: A Vector Graphics Library</b></a></td>
+<td align="right"><a accesskey="n" href="pt02.html"><b>Part&#160;II.&#160;Reference&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/html/pt02.html b/doc/public/html/pt02.html
index e906eef..e8a45cd 100644
--- a/doc/public/html/pt02.html
+++ b/doc/public/html/pt02.html
@@ -1 +1,34 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PartII.Reference</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="up" href="index.html" title="Cairo: A Vector Graphics Library"><link rel="previous" href="pt01.html" title="PartI.Tutorial"><link rel="next" href="cairo-cairo-t.html" title="cairo_t"><meta name="generator" content="GTK-Doc V1.3 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="pt01.html" title="PartI.Tutorial"><link rel="part" href="pt02.html" title="PartII.Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="pt01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Cairo: A Vector Graphics Library</th><td><a accesskey="n" href="cairo-cairo-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2618448"></a>Reference</h1></div></div><div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="pt01.html"><b>&lt;&lt;PartI.Tutorial</b></a></td><td align="right"><a accesskey="n" href="cairo-cairo-t.html"><b>cairo_t&gt;&gt;</b></a></td></tr></table></body></html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part&#160;II.&#160;Reference</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="previous" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="next" href="cairo-cairo-t.html" title="cairo_t">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="pt01.html" title="Part&#160;I.&#160;Tutorial">
+<link rel="part" href="pt02.html" title="Part&#160;II.&#160;Reference">
+<link rel="index" href="ix01.html" title="Index">
+<link rel="appendix" href="language-bindings.html" title="Appendix&#160;A.&#160;Creating a language binding for cairo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="pt01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Cairo: A Vector Graphics Library</th>
+<td><a accesskey="n" href="cairo-cairo-t.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage">
+<div><div><h1 class="title">
+<a name="id2915351"></a>Reference</h1></div></div>
+<div></div>
+</div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="pt01.html"><b>&lt;&lt;&#160;Part&#160;I.&#160;Tutorial</b></a></td>
+<td align="right"><a accesskey="n" href="cairo-cairo-t.html"><b>cairo_t&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>
diff --git a/doc/public/language-bindings.xml b/doc/public/language-bindings.xml
new file mode 100644
index 0000000..1b999d8
--- /dev/null
+++ b/doc/public/language-bindings.xml
@@ -0,0 +1,726 @@
+<appendix id="language-bindings">
+ <title>Creating a language binding for cairo</title>
+ <para>
+ While cairo is implemented and C, and has a C API, it is expected
+ that many users of cairo will be using it from languages other
+ than C. The glue that connects the core cairo library to another
+ language is known as a <firstterm>language
+ binding</firstterm>. This appendix attempts to collect together
+ issues that come up when creating a language bindings for cairo
+ and present standardized solutions to promote consistency among
+ the different language bindings.
+ </para>
+ <sect1 id="bindings-general">
+ <title>General considerations</title>
+ <para>
+ The naming of the central <link
+ linkend="cairo-t"><type>cairo_t</type></link> type is a
+ special exception. The object is “a cairo context” not “a
+ cairo”, and names such as <type>cairo_t</type> rather than
+ <type>cairo_context_t</type> and
+ <function>cairo_set_source()</function> rather than
+ <function>cairo_context_set_source()</function> are simply
+ abbreviations to make the C API more palatable. In languages
+ which have object-oriented syntax, this abbreviation is much
+ less useful. In fact, if ‘Cairo’ is used as a namespace, then
+ in many languages, you'd end up with a ridiculous type name
+ like ‘Cairo.Cairo’. For this reason, and for inter-language
+ consistency all object-oriented languages should name this
+ type as if it were <type>cairo_context_t</type>.
+ </para>
+ <para>
+ The punctuation and casing of the type names and
+ method names of cairo should be changed to match the general
+ convention of the language. In Java, where type names are written
+ in StudlyCaps and method names in javaCaps, cairo_font_extents_t
+ will become FontExtents and
+ <literal>cairo_set_source(cr,source)</literal>,
+ <literal>cr.setSource(source)</literal>.
+ As compared to changing the punctuation, and casing, much
+ more reluctance should be used in changing the method names
+ themselves. Even if get is usually omitted from getters in
+ your language, you shouldn't bind cairo_get_source() as
+ cr.source().
+ </para>
+ </sect1>
+ <sect1 id="bindings-memory">
+ <title>Memory Management</title>
+ <para>
+ The objects in cairo can roughly be divided into two types:
+ refcounted opaque types like
+ <link
+ linkend="cairo-surface-t"><type>cairo_surface_t</type></link>
+ and plain structures like
+ <link
+ linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link>.
+ <link
+ linkend="cairo-path-t"><type>cairo_path_t</type></link>
+ and
+ <link
+ linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link>
+ are special cases and are treated separately in this appendix.
+ </para>
+ <para>
+ Refcounted opaque types all have a
+ <function>..._reference()</function>
+ function to increase the refcount by one and a
+ <function>..._destroy()</function> to decrease the refcount
+ by one. These should not be exposed to the user of the language
+ binding, but rather used to implement memory management within
+ the language binding. The simplest way to do memory management
+ for a language binding is to treat the language binding object
+ as a simple handle to the cairo object. The language binding
+ object references the cairo object, and unreferences it when
+ finalized. This is the recommended method, though there are
+ a couple of caveats to be noted:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Equality won't work as expected. You can have two language
+ objects for the same cairo and they won't necessarily
+ compare equal. If the language allows customizing the
+ equality operation, then this is fixable by comparing
+ the underlying pointers. It also can be fixed by creating
+ at most one language object per cairo object, and
+ uniquifying via a <firstterm>pin table</firstterm> (a hash
+ table that goes from cairo object to language object).
+ For <type>cairo_surface_t</type> you can use also
+ <link
+ linkend="cairo-surface-set-user-data"><function>cairo_surface_set_user_data()</function></link>
+ instead of a separate pin table.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Derivation from the language object doesn't work because
+ you can lose the language object while keeping the Cairo
+ object. Code like:
+ </para>
+<programlisting>
+public class MySurface (ImageSurface) {
+ public MySurface (width, height) {
+ super (Format.ARGB32, width, height);
+ }
+ public int get42 () {
+ return 42;
+ }
+}
+
+ cr = Cairo(MySurface(width, height));
+ surface = cr.getTarget();
+</programlisting>
+ <para>
+ Can result in <varname>surface</varname> containing an
+ <classname>ImageSurface</classname> not a <classname>MySurface</classname>.
+ This is not easily fixable without creating memory leaks,
+ and it's probably best to simply forbid deriving from the
+ language objects.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ When a plain structure is used as a return value from cairo,
+ this is done by passing it as a “out parameter”.
+ </para>
+<programlisting>
+cairo_font_extents_t extents;
+
+cairo_font_extents (cr, &amp;extents);</programlisting>
+ <para>
+ In a language binding, this should typically be treated
+ as a return value:
+ </para>
+<programlisting>
+FontExtents extents = cr.fontExtents ();</programlisting>
+ <para>
+ A language binding has a choice in how it implements the
+ language objects for plain structures. It can use a pure
+ language object with fields corresponding to those of the C
+ structure, and convert from and to the C structure when calling
+ cairo functions or converting cairo return values. Or it
+ can keep a pointer to the C structure internally and wrap
+ it inside a language object much like occurs for refcounted
+ objects. The choice should be invisible to the user: they should
+ be able to imagine that it is implemented as a pure language
+ object.
+ </para>
+ </sect1>
+ <sect1 id="bindings-return-values">
+ <title>Multiple return values</title>
+ <para>
+ There are a number of functions in the cairo API that have
+ multiple <firstterm>out parameters</firstterm> or
+ <firstterm>in-out parameters</firstterm>. In some languages
+ these can be translated into multiple return values. In Python,
+ what is:
+ </para>
+ <programlisting>
+cairo_user_to_device (cr, &amp;x, &amp;y);</programlisting>
+ <para>
+ can by mapped to:
+ </para>
+ <programlisting>
+(x, y) = cr.user_to_device (cr, x, y);</programlisting>
+ <para>
+ but many languages don't have provisions for multiple return
+ values, so it is necessary to introduce auxiliary types.
+ Most of the functions that require the auxiliary types
+ require a type that would, in C, look like
+ </para>
+ <programlisting>
+typedef struct _cairo_point cairo_point_t;
+struct _cairo_point {
+ double x;
+ double y;
+}</programlisting>
+ <para>
+ The same type should be used both for functions that use a pair
+ of coordinates as an absolute position, and functions that use
+ a pair of coordinates as a displacement. While an argument could
+ be made that having a separate “distance” type is more correct,
+ it is more likely just to confuse users.
+ </para>
+ <programlisting>
+void
+cairo_user_to_device (cairo_t *cr, double *x, double *y);
+
+void
+cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy);
+
+void
+cairo_device_to_user (cairo_t *cr, double *x, double *y);
+
+void
+cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy);
+
+void
+cairo_matrix_transform_distance (cairo_matrix_t *matrix, double *dx, double *dy);
+
+void
+cairo_matrix_transform_point (cairo_matrix_t *matrix, double *x, double *y);
+
+void
+cairo_get_current_point (cairo_t *cr, double *x, double *y);
+ </programlisting>
+ <para>
+ There are also a couple of functions that return four values
+ representing a rectangle. These should be mapped to a
+ “rectangle” type that looks like:
+ </para>
+ <programlisting>
+typedef struct _cairo_rectangle cairo_rectangle_t;
+struct _cairo_rectangle {
+ double x;
+ double y;
+ double width;
+ double height;
+}</programlisting>
+ <para>
+ The C function returns the rectangle as a set of two points to
+ facilitate rounding to integral extents, but this isn't worth
+ adding a “box” type to go along with the more obvious
+ “rectangle” representation.
+ </para>
+ <remark>
+ Q: Would it make sense here to define a standard
+ <function>cairo_rectangle_round()</function> method
+ that language bindings should map?
+ </remark>
+ <programlisting>
+void
+cairo_stroke_extents (cairo_t *cr,
+ double *x1, double *y1,
+ double *x2, double *y2);
+
+void
+cairo_fill_extents (cairo_t *cr,
+ double *x1, double *y1,
+ double *x2, double *y2);
+ </programlisting>
+ </sect1>
+ <sect1 id="bindings-overloading">
+ <title>Overloading and optional arguments</title>
+ <para>
+ Function overloading (having a several variants of a function
+ with the same name and different arguments) is a language
+ feature available in many languages but not in C.
+ </para>
+ <para>
+ In general, language binding authors should use restraint in
+ combining functions in the cairo API via function
+ overloading. What may seem like an obvious overload now may
+ turn out to be strange with future additions to cairo.
+ It might seem logical to make
+ <link
+ linkend="cairo-set-source-rgb"><function>cairo_set_source_rgb()</function></link>
+ an overload of <function>cairo_set_source()</function>, but future plans to add
+ <function>cairo_set_source_rgb_premultiplied()</function>,
+ which will also take three doubles make this a bad idea. For
+ this reason, only the following pairs of functions should
+ be combined via overloading
+ </para>
+ <programlisting>
+void
+cairo_set_source (cairo_t *cr, cairo_pattern_t *source);
+
+void
+cairo_set_source_surface (cairo_t *cr,
+ cairo_surface_t *source,
+ double surface_x,
+ double surface_y);
+
+void
+cairo_mask (cairo_t *cr,
+ cairo_pattern_t *pattern);
+
+void
+cairo_mask_surface (cairo_t *cr,
+ cairo_surface_t *surface,
+ double surface_x,
+ double surface_y);
+
+cairo_surface_t *
+cairo_image_surface_create (cairo_format_t format,
+ int width,
+ int height);
+cairo_surface_t *
+cairo_image_surface_create_for_data (unsigned char *data,
+ cairo_format_t format,
+ int width,
+ int height,
+ int stride);
+
+cairo_status_t
+cairo_surface_write_to_png (cairo_surface_t *surface,
+ const char *filename);
+
+cairo_status_t
+cairo_surface_write_to_png_stream (cairo_surface_t *surface,
+ cairo_write_func_t write_func,
+ void *closure);
+
+cairo_surface_t *
+cairo_image_surface_create_from_png (const char *filename);
+
+cairo_surface_t *
+cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func,
+ void *closure);
+ </programlisting>
+ <para>
+ Note that there are cases where all constructors for a type
+ aren't overloaded together. For example
+ <link
+ linkend="cairo-image-surface-create-from-png"><function>cairo_image_surface_create_from_png()</function></link>
+ should <emphasis>not</emphasis> be overloaded together with
+ <link
+ linkend="cairo-image-surface-create"><function>cairo_image_surface_create()</function></link>.
+ In such cases, the remaining constructors will typically need to
+ be bound as static methods. In Java, for example, we might have:
+ </para>
+<programlisting>
+Surface surface1 = ImageSurface(Format.RGB24, 100, 100);
+Surface surface2 = ImageSurface.createFromPNG("camera.png");</programlisting>
+ <para>
+ Some other overloads that add combinations not found in C may be
+ convenient for users for language bindings that provide
+ <type>cairo_point_t</type> and <type>cairo_rectangle_t</type>
+ types, for example:
+ </para>
+ <programlisting>
+void
+cairo_move_to (cairo_t *cr,
+ cairo_point_t *point);
+void
+cairo_rectangle (cairo_t *cr,
+ cairo_rectangle_t *rectangle);
+ </programlisting>
+ </sect1>
+ <sect1 id="bindings-streams">
+ <title>Streams and File I/O</title>
+ <para>
+ Various places in the cairo API deal with reading and writing
+ data, whether from and to files, or to other sources and
+ destinations. In these cases, what is typically provided in the
+ C API is a simple version that just takes a filename, and a
+ complex version that takes a callback function.
+ An example is the PNG handling functions:
+ </para>
+<programlisting>
+cairo_surface_t *
+cairo_image_surface_create_from_png (const char *filename);
+
+cairo_surface_t *
+cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func,
+ void *closure);
+
+cairo_status_t
+cairo_surface_write_to_png (cairo_surface_t *surface,
+ const char *filename);
+
+cairo_status_t
+cairo_surface_write_to_png_stream (cairo_surface_t *surface,
+ cairo_write_func_t write_func,
+ void *closure);</programlisting>
+ <para>
+ The expectation is that the filename version will be mapped
+ literally in the language binding, but the callback version
+ will be mapped to a version that takes a language stream
+ object. For example, in Java, the four functions above
+ might be mapped to:
+ </para>
+<programlisting>
+static public ImageSurface createFromPNG (String filename) throws IOException;
+static public ImageSurface createFromPNG (InputStream stream) throws IOException;
+public void writeToPNG (String filename) throws IOException;
+public void writeToPNG (OutputStream stream) throws IOException;
+</programlisting>
+ <para>
+ In many cases, it will be better to
+ implement the filename version internally
+ using the stream version, rather than building it on top of the
+ filename version in C. The reason for this is that will
+ naturally give a more standard handling of file errors for
+ the language, as seen in the above Java example, where
+ <methodname>createFromPNG()</methodname> is marked as raising
+ an exception. Propagating exceptions from inside the callback
+ function to the caller will pose a challenge to the language
+ binding implementor, since an exception must not propagate
+ through the Cairo code. A technique that will be useful in
+ some cases is to catch the exception in the callback,
+ store the exception object inside a structure pointed to by
+ <parameter>closure</parameter>, and then rethrow it once
+ the function returns.
+ </para>
+ <remark>
+ I'm not sure how to handle this for
+ <link
+ linkend="cairo-pdf-surface-create-for-callback"><function>cairo_pdf_surface_create_for_callback()</function></link>.
+ Other than keep a “exception to rethrow” thread-specific
+ variable
+ that is checked after <emphasis>every</emphasis> call to a Cairo
+ function.
+ </remark>
+ </sect1>
+ <sect1 id="bindings-errors">
+ <title>Error handling</title>
+ <para>
+ The error handling approach in C for Cairo has multiple
+ elements:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ When a method on an object fails, the object is put into
+ an error state. Subsequent operations on the object do
+ nothing. The status of the object can be queried with
+ a function like <link
+ linkend="cairo-status"><function>status()</function></link>.
+ </para></listitem>
+ <listitem><para>
+ Constructors, rather than
+ returning<constant>NULL</constant> on out-of-memory failure,
+ return a special singleton object on which all
+ operations do nothing. Retrieving the status of the
+ singleton object returns <constant>CAIRO_STATUS_NO_MEMORY</constant>
+ </para>
+ <remark>
+ Is this going to apply to
+ <type>cairo_surface_t</type> as well?
+ </remark>
+ <remark>
+ What about cairo_copy_path_data()? It's probably going to
+ have to return <constant>NULL</constant>.
+ </remark>
+ </listitem>
+ <listitem><para>
+ Errors propagate from object to object. Setting a pattern
+ in an out-of-memory state as the source of a
+ <type>cairo_t</type> puts the type into an error state.
+ </para></listitem>
+ </itemizedlist>
+ <remark>Much of the above is not yet implemented at the time of
+ this writing</remark>
+ <para>
+ A language binding could copy the C approach, and for a
+ language without exceptions, this is likely the right thing
+ to do. However, for a language with exceptions, exposing
+ a completely different style of error handling for cairo
+ would be strange. So, instead, status should be checked
+ after every call to cairo, and exceptions thrown as necessary.
+ </para>
+ <para>
+ One problem that can arise with this, in languages
+ where handling exceptions is mandatory (like Java), is that almost
+ every cairo function can result in a status being set,
+ usually because of an out-of-memory condition. This could make
+ cairo hard to use. To resolve this problem, let's classify then
+ cairo status codes:
+ </para>
+<programlisting>
+/* Memory */
+CAIRO_STATUS_NO_MEMORY,
+
+/* Programmer error */
+CAIRO_STATUS_INVALID_RESTORE
+CAIRO_STATUS_INVALID_POP_GROUP
+CAIRO_STATUS_NO_CURRENT_POINT
+CAIRO_STATUS_INVALID_MATRIX
+CAIRO_STATUS_NO_TARGET_SURFACE
+CAIRO_STATUS_INVALID_STRING
+CAIRO_STATUS_SURFACE_FINISHED
+CAIRO_STATUS_BAD_NESTING
+
+/* Language binding implementation */
+CAIRO_STATUS_NULL_POINTER
+CAIRO_STATUS_INVALID_PATH_DATA
+CAIRO_STATUS_SURFACE_TYPE_MISMATCH
+
+/* Other */
+CAIRO_STATUS_READ_ERROR
+CAIRO_STATUS_WRITE_ERROR
+</programlisting>
+ <para>
+ If we look at these, the
+ <constant>CAIRO_STATUS_NO_MEMORY</constant>
+ should map to the native out-of-memory exception, which could
+ happen at any point in any case. Most of the others indicate
+ programmer error, and handling them in user code would be
+ silly. These should be mapped into whatever the language uses
+ for assertion failures, rather than errors that are normally
+ handled. (In Java, a subclass of Error rather than Exception,
+ perhaps.) And <constant>CAIRO_STATUS_READ_ERROR</constant>,
+ and <constant>CAIRO_STATUS_WRITE_ERROR</constant> can occur
+ only in very specific places. (In fact, as described
+ in <xref linkend="bindings-streams"/>, these errors may be
+ mapped into the language's native I/O error types.)
+ So, there really aren't exceptions that the programmer must
+ handle at most points in the Cairo API.
+ </para>
+ </sect1>
+ <sect1 id="bindings-patterns">
+ <title>Patterns</title>
+ <para>
+ The cairo C API allows for creating a number of different types
+ of patterns. All of these different types of patterns map to
+ <link
+ linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link>
+ in C, but in an object oriented language, there should instead
+ be a hierarchy of types. (The functions that should map to
+ constructors for the various types are listed after the type,
+ methods on that type are listed below)
+ </para>
+ <programlisting>
+cairo_pattern_t
+ <link linkend="cairo-pattern-set-matrix"><function>cairo_pattern_set_matrix()</function></link>
+ <link linkend="cairo-pattern-get-matrix"><function>cairo_pattern_get_matrix()</function></link>
+ cairo_solid_pattern_t
+ cairo_surface_pattern_t (<link linkend="cairo-pattern-create-for-surface"><function>cairo_pattern_create_for_surface()</function></link>)
+ <link linkend="cairo-pattern-set-extend"><function>cairo_pattern_set_extend()</function></link>
+ <link linkend="cairo-pattern-get-extend"><function>cairo_pattern_get_extend()</function></link>
+ <link linkend="cairo-pattern-set-filter"><function>cairo_pattern_set_filter()</function></link>
+ <link linkend="cairo-pattern-get-filter"><function>cairo_pattern_get_filter()</function></link>
+ cairo_gradient_t
+ <link linkend="cairo-pattern-add-color-stop-rgb"><function>cairo_pattern_add_color_stop_rgb()</function></link>
+ <link linkend="cairo-pattern-add-color-stop-rgba"><function>cairo_pattern_add_color_stop_rgba()</function></link>
+ cairo_linear_gradient_t (<link linkend="cairo-pattern-create-linear"><function>cairo_pattern_create_linear()</function></link>)
+ cairo_radial_gradient_t (<link linkend="cairo-pattern-create-radial"><function>cairo_pattern_create_radial()</function></link>)
+ </programlisting>
+ <para>
+ </para>
+ </sect1>
+ <sect1 id="bindings-surfaces">
+ <title>Surfaces</title>
+ <para>
+ Like patterns, surfaces, which use only the
+ <link
+ linkend="cairo-surface-t"><type>cairo_surface_t</type></link>
+ type in the C API should be broken up into a heirarchy of types
+ in a language binding.
+ </para>
+ <programlisting>
+cairo_surface_t
+ cairo_image_surface_t
+ cairo_atsui_surface_t
+ cairo_win32_surface_t
+ cairo_xlib_surface_t
+ </programlisting>
+ <para>
+ Unlike patterns, the constructors and methods on these types are
+ clearly named, and can be trivially associated with the
+ appropriate subtype. Many language bindings will want to avoid
+ binding the platform-specific subtypes at all, since the
+ methods on these types are not useful without passing in native
+ C types. Unless there is a language binding for Xlib available,
+ there is no way to represent a XLib <type>Display</type> * in
+ that language.
+ </para>
+ <para>
+ This doesn't mean that platform-specific surface types can't
+ be used in a language binding that doesn't bind the constructor.
+ A very common situation is to use a cairo language binding in
+ combination with a binding for a higher level system like
+ the <ulink url="http://www.gtk.org/">GTK+</ulink> widget
+ toolkit. In such a situation, the higher level toolkit provides
+ ways to get references to platform specific surfaces.
+ </para>
+ <para>
+ The <link
+ linkend="cairo-surface-set-user-data"><function>cairo_surface_set_user_data()</function></link>,
+ and <link
+ linkend="cairo-surface-get-user-data"><function>cairo_surface_get_user_data()</function></link>
+ methods are provided for use in language bindings, and should
+ not be directly exposed to applications. One example of the use
+ of these functions in a language binding is creating a binding for:
+ </para>
+<programlisting>
+cairo_surface_t *
+<link linkend="cairo-image-surface-create-for-data"><function>cairo_image_surface_create_for_data</function></link> (unsigned char *data,
+ cairo_format_t format,
+ int width,
+ int height,
+ int stride);
+</programlisting>
+ <para>
+ The memory block passed in for <parameter>data</parameter> must be
+ kept around until the surface is destroyed, so the language
+ binding must have some way of determining when that happens. The
+ way to do this is to use the <parameter>destroy</parameter>
+ argument to <function>cairo_surface_set_user_data()</function>.
+ </para>
+ <remark>
+ Some languages may not have a suitable “pointer to a block of
+ data” type to pass in for <parameter>data</parameter>. And even
+ where a language does have such a type, the user will be
+ frequently able to cause the backing store to be reallocated
+ to a different location or truncated. Should we recommend a
+ standard type name and binding for a buffer object here?
+ </remark>
+ </sect1>
+ <sect1 id="bindings-fonts">
+ <title>Fonts</title>
+ <para>
+ Fonts are once more an area where there is a hierarchy of types:
+ </para>
+<programlisting>
+cairo_font_face_t
+ cairo_ft_font_face_t
+ cairo_win32_font_face_t
+cairo_scaled_font_t
+ cairo_ft_scaled_font_t
+ cairo_win32_scaled_font_t
+</programlisting>
+ <para>
+ The methods on the subtypes are, however, not useful without
+ bindings for fontconfig and FreeType or for the Win32 GDI,
+ so most language bindings will choose not to bind these
+ types.
+ </para>
+ <para>
+ The <link
+ linkend="cairo-font-face-set-user-data"><function>cairo_font_face_set_user_data()</function></link>,
+ and <link
+ linkend="cairo-font-face-get-user-data"><function>cairo_font_face_get_user_data()</function></link>
+ methods are provided for use in language bindings, and should
+ not be directly exposed to applications.
+ </para>
+ </sect1>
+ <sect1 id="bindings-path">
+ <title>cairo_path_t</title>
+ <para>
+ The <link linkend="cairo-path-t"><type>cairo_path_t</type></link> type is one
+ area in which most language bindings will differ significantly
+ from the C API. The C API for <type>cairo_path_t</type> is
+ designed for efficiency and to avoid auxiliary objects that
+ would be have to be manually memory managed by the
+ application. However,
+ a language binding should not present <type>cairo_path_t</type> as an
+ array, but rather as an opaque that can be iterated
+ over. Different languages have quite different conventions for
+ how iterators work, so it is impossible to give an exact
+ specification for how this API should work, but the type names
+ and methods should be similar to the language's mapping of the following:
+ </para>
+ <programlisting>
+typedef struct cairo_path_iterator cairo_path_iterator_t;
+typedef struct cairo_path_element cairo_path_element_t;
+
+cairo_path_iterator_t *
+cairo_path_get_iterator (cairo_path_t *path);
+
+cairo_bool_t
+cairo_path_iterator_has_next (cairo_path_iterator_t *iterator);
+
+cairo_path_element_t *
+cairo_path_iterator_next (cairo_path_iterator_t *iterator);
+
+cairo_path_element_type_t
+cairo_path_element_get_type (cairo_path_element_t *element);
+
+void
+cairo_path_element_get_point (cairo_path_element_t *element,
+ int index,
+ double *x,
+ double *y);
+ </programlisting>
+ <para>
+ The above is written using the Java conventions for
+ iterators. To illustrate how the API for PathIterator might
+ depend on the native iteration conventions of the API, examine
+ three versions of the loop, first written in a hypothetical Java
+ binding:
+ </para>
+ <programlisting>
+PathIterator iter = cr.copyPath().iterator();
+while (cr.hasNext()) {
+ PathElement element = iter.next();
+ if (element.getType() == PathElementType.MOVE_TO) {
+ Point p = element.getPoint(0);
+ doMoveTo (p.x, p.y);
+ }
+}</programlisting>
+ <para>
+ And then in a hypothetical C++ binding:
+ </para>
+ <programlisting>
+Path path = cr.copyPath();
+for (PathIterator iter = path.begin(); iter != path.end(); iter++) {
+ PathElement element = *iter;
+ if (element.getType() == PathElementType.MOVE_TO) {
+ Point p = element.getPoint(0);
+ doMoveTo (p.x, p.y);
+ }
+}</programlisting>
+ <para>
+ And then finally in a Python binding:
+ </para>
+<programlisting>
+for element in cr.copy_path():
+ if element.getType == cairo.PATH_ELEMENT_MOVE_TO:
+ (x, y) = element.getPoint(0)
+ doMoveTo (x, y);</programlisting>
+ <para>
+ While many of the API elements stay the same in the three
+ examples, the exact iteration mechanism is quite different, to
+ match how users of the language would expect to iterate over
+ a container.
+ </para>
+ <para>
+ You should not present an API for mutating or for creating new
+ <type>cairo_path_t</type> objects. In the future, these
+ guidelines may be extended to present an API for creating a
+ <type>cairo_path_t</type> from scratch for use with
+ <link
+ linkend="cairo-append-path"><function>cairo_append_path()</function></link>
+ but the current expectation is that <function>cairo_append_path()</function> will
+ mostly be used with paths from
+ <link
+ linkend="cairo-append-path"><function>cairo_copy_path()</function></link>.
+ </para>
+ </sect1>
+</appendix>
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("cairo-docs.xml" "book" "book" "appendix")
+End:
+-->
diff --git a/doc/public/tmpl/cairo-atsui.sgml b/doc/public/tmpl/cairo-atsui.sgml
index 0d957ec..4a8b35a 100644
--- a/doc/public/tmpl/cairo-atsui.sgml
+++ b/doc/public/tmpl/cairo-atsui.sgml
@@ -14,12 +14,6 @@ ATSUI Fonts
</para>
-<!-- ##### FUNCTION cairo_atsui_font_create ##### -->
-<para>
-
-</para>
-
-@style:
-@Returns:
+<!-- ##### SECTION Stability_Level ##### -->
diff --git a/doc/public/tmpl/cairo-font.sgml b/doc/public/tmpl/cairo-font.sgml
new file mode 100644
index 0000000..d6c7043
--- /dev/null
+++ b/doc/public/tmpl/cairo-font.sgml
@@ -0,0 +1,140 @@
+<!-- ##### SECTION Title ##### -->
+Fonts
+
+<!-- ##### SECTION Short_Description ##### -->
+Font Handling
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### TYPEDEF cairo_font_face_t ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF cairo_scaled_font_t ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION cairo_font_face_reference ##### -->
+<para>
+
+</para>
+
+@font_face:
+
+
+<!-- ##### FUNCTION cairo_font_face_destroy ##### -->
+<para>
+
+</para>
+
+@font_face:
+
+
+<!-- ##### FUNCTION cairo_font_face_get_user_data ##### -->
+<para>
+
+</para>
+
+@font_face:
+@key:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_font_face_set_user_data ##### -->
+<para>
+
+</para>
+
+@font_face:
+@key:
+@user_data:
+@destroy:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_scaled_font_create ##### -->
+<para>
+
+</para>
+
+@font_face:
+@font_matrix:
+@ctm:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_scaled_font_reference ##### -->
+<para>
+
+</para>
+
+@scaled_font:
+
+
+<!-- ##### FUNCTION cairo_scaled_font_destroy ##### -->
+<para>
+
+</para>
+
+@scaled_font:
+
+
+<!-- ##### STRUCT cairo_font_extents_t ##### -->
+<para>
+
+</para>
+
+@ascent:
+@descent:
+@height:
+@max_x_advance:
+@max_y_advance:
+
+<!-- ##### FUNCTION cairo_scaled_font_extents ##### -->
+<para>
+
+</para>
+
+@scaled_font:
+@extents:
+@Returns:
+
+
+<!-- ##### STRUCT cairo_text_extents_t ##### -->
+<para>
+
+</para>
+
+@x_bearing:
+@y_bearing:
+@width:
+@height:
+@x_advance:
+@y_advance:
+
+<!-- ##### FUNCTION cairo_scaled_font_glyph_extents ##### -->
+<para>
+
+</para>
+
+@scaled_font:
+@glyphs:
+@num_glyphs:
+@extents:
+
+
diff --git a/doc/public/tmpl/cairo-ft.sgml b/doc/public/tmpl/cairo-ft.sgml
index bcf52ac..d9f7cbf 100644
--- a/doc/public/tmpl/cairo-ft.sgml
+++ b/doc/public/tmpl/cairo-ft.sgml
@@ -14,50 +14,42 @@ FreeType Fonts
</para>
-<!-- ##### FUNCTION cairo_ft_font_create ##### -->
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_ft_font_face_create_for_pattern ##### -->
<para>
</para>
@pattern:
-@scale:
@Returns:
-<!-- ##### FUNCTION cairo_ft_font_create_for_ft_face ##### -->
+<!-- ##### FUNCTION cairo_ft_font_face_create_for_ft_face ##### -->
<para>
</para>
@face:
@load_flags:
-@scale:
@Returns:
-<!-- ##### FUNCTION cairo_ft_font_lock_face ##### -->
+<!-- ##### FUNCTION cairo_ft_scaled_font_lock_face ##### -->
<para>
</para>
-@ft_font:
+@scaled_font:
@Returns:
-<!-- ##### FUNCTION cairo_ft_font_unlock_face ##### -->
+<!-- ##### FUNCTION cairo_ft_scaled_font_unlock_face ##### -->
<para>
</para>
-@ft_font:
-
-
-<!-- ##### FUNCTION cairo_ft_font_get_pattern ##### -->
-<para>
-
-</para>
-
-@ft_font:
-@Returns:
+@scaled_font:
diff --git a/doc/public/tmpl/cairo-glitz.sgml b/doc/public/tmpl/cairo-glitz.sgml
index 101eb9e..9594d87 100644
--- a/doc/public/tmpl/cairo-glitz.sgml
+++ b/doc/public/tmpl/cairo-glitz.sgml
@@ -14,13 +14,7 @@ Glitz backend
</para>
-<!-- ##### FUNCTION cairo_set_target_glitz ##### -->
-<para>
-
-</para>
-
-@cr:
-@surface:
+<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### FUNCTION cairo_glitz_surface_create ##### -->
diff --git a/doc/public/tmpl/cairo-matrix.sgml b/doc/public/tmpl/cairo-matrix.sgml
index dc24c57..d9549b4 100644
--- a/doc/public/tmpl/cairo-matrix.sgml
+++ b/doc/public/tmpl/cairo-matrix.sgml
@@ -38,77 +38,70 @@ cairo_matrix_t
</para>
-<!-- ##### TYPEDEF cairo_matrix_t ##### -->
-<para>
-
-</para>
+<!-- ##### SECTION Stability_Level ##### -->
-<!-- ##### FUNCTION cairo_matrix_create ##### -->
+<!-- ##### STRUCT cairo_matrix_t ##### -->
<para>
</para>
-@Returns:
-
+@xx:
+@yx:
+@xy:
+@yy:
+@x0:
+@y0:
-<!-- ##### FUNCTION cairo_matrix_destroy ##### -->
+<!-- ##### FUNCTION cairo_matrix_init ##### -->
<para>
</para>
@matrix:
+@xx:
+@yx:
+@xy:
+@yy:
+@x0:
+@y0:
-<!-- ##### FUNCTION cairo_matrix_copy ##### -->
+<!-- ##### FUNCTION cairo_matrix_init_identity ##### -->
<para>
</para>
@matrix:
-@other:
-@Returns:
-<!-- ##### FUNCTION cairo_matrix_set_identity ##### -->
+<!-- ##### FUNCTION cairo_matrix_init_translate ##### -->
<para>
</para>
@matrix:
-@Returns:
+@tx:
+@ty:
-<!-- ##### FUNCTION cairo_matrix_set_affine ##### -->
+<!-- ##### FUNCTION cairo_matrix_init_scale ##### -->
<para>
</para>
@matrix:
-@a:
-@b:
-@c:
-@d:
-@tx:
-@ty:
-@Returns:
-<!-- # Unused Parameters # -->
-@cr:
+@sx:
+@sy:
-<!-- ##### FUNCTION cairo_matrix_get_affine ##### -->
+<!-- ##### FUNCTION cairo_matrix_init_rotate ##### -->
<para>
</para>
@matrix:
-@a:
-@b:
-@c:
-@d:
-@tx:
-@ty:
-@Returns:
+@radians:
<!-- ##### FUNCTION cairo_matrix_translate ##### -->
@@ -119,7 +112,6 @@ cairo_matrix_t
@matrix:
@tx:
@ty:
-@Returns:
<!-- ##### FUNCTION cairo_matrix_scale ##### -->
@@ -130,7 +122,6 @@ cairo_matrix_t
@matrix:
@sx:
@sy:
-@Returns:
<!-- ##### FUNCTION cairo_matrix_rotate ##### -->
@@ -140,7 +131,6 @@ cairo_matrix_t
@matrix:
@radians:
-@Returns:
<!-- ##### FUNCTION cairo_matrix_invert ##### -->
@@ -160,7 +150,6 @@ cairo_matrix_t
@result:
@a:
@b:
-@Returns:
<!-- ##### FUNCTION cairo_matrix_transform_distance ##### -->
@@ -171,23 +160,15 @@ cairo_matrix_t
@matrix:
@dx:
@dy:
-@Returns:
<!-- ##### FUNCTION cairo_matrix_transform_point ##### -->
<para>
+
</para>
@matrix:
@x:
@y:
-@Returns:
-
-<!--
-Local variables:
-mode: sgml
-sgml-parent-document: ("../cairo-docs.xml" "book" "refsect2" "")
-End:
--->
diff --git a/doc/public/tmpl/cairo-pattern.sgml b/doc/public/tmpl/cairo-pattern.sgml
index 8472821..dadd787 100644
--- a/doc/public/tmpl/cairo-pattern.sgml
+++ b/doc/public/tmpl/cairo-pattern.sgml
@@ -14,6 +14,9 @@ cairo_pattern_t
</para>
+<!-- ##### SECTION Stability_Level ##### -->
+
+
<!-- ##### TYPEDEF cairo_pattern_t ##### -->
<para>
@@ -71,7 +74,28 @@ cairo_pattern_t
@pattern:
-<!-- ##### FUNCTION cairo_pattern_add_color_stop ##### -->
+<!-- ##### FUNCTION cairo_pattern_status ##### -->
+<para>
+
+</para>
+
+@pattern:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_pattern_add_color_stop_rgb ##### -->
+<para>
+
+</para>
+
+@pattern:
+@offset:
+@red:
+@green:
+@blue:
+
+
+<!-- ##### FUNCTION cairo_pattern_add_color_stop_rgba ##### -->
<para>
</para>
@@ -82,7 +106,6 @@ cairo_pattern_t
@green:
@blue:
@alpha:
-@Returns:
<!-- ##### FUNCTION cairo_pattern_set_matrix ##### -->
@@ -92,7 +115,6 @@ cairo_pattern_t
@pattern:
@matrix:
-@Returns:
<!-- ##### FUNCTION cairo_pattern_get_matrix ##### -->
@@ -102,6 +124,7 @@ cairo_pattern_t
@pattern:
@matrix:
+<!-- # Unused Parameters # -->
@Returns:
@@ -121,7 +144,6 @@ cairo_pattern_t
@pattern:
@extend:
-@Returns:
<!-- ##### FUNCTION cairo_pattern_get_extend ##### -->
@@ -140,7 +162,6 @@ cairo_pattern_t
@pattern:
@filter:
-@Returns:
<!-- ##### FUNCTION cairo_pattern_get_filter ##### -->
diff --git a/doc/public/tmpl/cairo-pdf.sgml b/doc/public/tmpl/cairo-pdf.sgml
index e627c23..d29ed0e 100644
--- a/doc/public/tmpl/cairo-pdf.sgml
+++ b/doc/public/tmpl/cairo-pdf.sgml
@@ -14,29 +14,39 @@ PDF Backend
</para>
-<!-- ##### FUNCTION cairo_set_target_pdf ##### -->
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_pdf_surface_create ##### -->
<para>
</para>
-@cr:
-@file:
-@width_inches:
-@height_inches:
-@x_pixels_per_inch:
-@y_pixels_per_inch:
+@filename:
+@width_in_points:
+@height_in_points:
+@Returns:
-<!-- ##### FUNCTION cairo_pdf_surface_create ##### -->
+<!-- ##### FUNCTION cairo_pdf_surface_create_for_stream ##### -->
<para>
</para>
-@file:
-@width_inches:
-@height_inches:
-@x_pixels_per_inch:
-@y_pixels_per_inch:
+@write_func:
+@closure:
+@width_in_points:
+@height_in_points:
@Returns:
+<!-- ##### FUNCTION cairo_pdf_surface_set_dpi ##### -->
+<para>
+
+</para>
+
+@surface:
+@x_dpi:
+@y_dpi:
+
+
diff --git a/doc/public/tmpl/cairo-png.sgml b/doc/public/tmpl/cairo-png.sgml
index d4d5a66..dd4486c 100644
--- a/doc/public/tmpl/cairo-png.sgml
+++ b/doc/public/tmpl/cairo-png.sgml
@@ -14,27 +14,46 @@ PNG Backend
</para>
-<!-- ##### FUNCTION cairo_set_target_png ##### -->
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_image_surface_create_from_png ##### -->
+<para>
+
+</para>
+
+@filename:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_image_surface_create_from_png_stream ##### -->
<para>
</para>
-@cr:
-@file:
-@format:
-@width:
-@height:
+@read_func:
+@closure:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_surface_write_to_png ##### -->
+<para>
+
+</para>
+
+@surface:
+@filename:
+@Returns:
-<!-- ##### FUNCTION cairo_png_surface_create ##### -->
+<!-- ##### FUNCTION cairo_surface_write_to_png_stream ##### -->
<para>
</para>
-@file:
-@format:
-@width:
-@height:
+@surface:
+@write_func:
+@closure:
@Returns:
diff --git a/doc/public/tmpl/cairo-ps.sgml b/doc/public/tmpl/cairo-ps.sgml
index 70b2e7e..4c5e8b3 100644
--- a/doc/public/tmpl/cairo-ps.sgml
+++ b/doc/public/tmpl/cairo-ps.sgml
@@ -14,29 +14,39 @@ PS Backend
</para>
-<!-- ##### FUNCTION cairo_set_target_ps ##### -->
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_ps_surface_create ##### -->
<para>
</para>
-@cr:
-@file:
-@width_inches:
-@height_inches:
-@x_pixels_per_inch:
-@y_pixels_per_inch:
+@filename:
+@width_in_points:
+@height_in_points:
+@Returns:
-<!-- ##### FUNCTION cairo_ps_surface_create ##### -->
+<!-- ##### FUNCTION cairo_ps_surface_create_for_stream ##### -->
<para>
</para>
-@file:
-@width_inches:
-@height_inches:
-@x_pixels_per_inch:
-@y_pixels_per_inch:
+@write_func:
+@closure:
+@width_in_points:
+@height_in_points:
@Returns:
+<!-- ##### FUNCTION cairo_ps_surface_set_dpi ##### -->
+<para>
+
+</para>
+
+@surface:
+@x_dpi:
+@y_dpi:
+
+
diff --git a/doc/public/tmpl/cairo-quartz.sgml b/doc/public/tmpl/cairo-quartz.sgml
index 04c9bc6..c83de6c 100644
--- a/doc/public/tmpl/cairo-quartz.sgml
+++ b/doc/public/tmpl/cairo-quartz.sgml
@@ -14,15 +14,7 @@ Quartz Backend
</para>
-<!-- ##### FUNCTION cairo_set_target_quartz_context ##### -->
-<para>
-
-</para>
-
-@cr:
-@context:
-@width:
-@height:
+<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### FUNCTION cairo_quartz_surface_create ##### -->
diff --git a/doc/public/tmpl/cairo-surface.sgml b/doc/public/tmpl/cairo-surface.sgml
index 2f8ad47..fab1306 100644
--- a/doc/public/tmpl/cairo-surface.sgml
+++ b/doc/public/tmpl/cairo-surface.sgml
@@ -14,24 +14,14 @@ cairo_surface_t
</para>
-<!-- ##### TYPEDEF cairo_surface_t ##### -->
-<para>
+<!-- ##### SECTION Stability_Level ##### -->
-</para>
-
-<!-- ##### FUNCTION cairo_surface_create_for_image ##### -->
+<!-- ##### TYPEDEF cairo_surface_t ##### -->
<para>
</para>
-@data:
-@format:
-@width:
-@height:
-@stride:
-@Returns:
-
<!-- ##### FUNCTION cairo_surface_create_similar ##### -->
<para>
@@ -61,52 +51,44 @@ cairo_surface_t
@surface:
-<!-- ##### FUNCTION cairo_surface_set_repeat ##### -->
+<!-- ##### FUNCTION cairo_surface_finish ##### -->
<para>
</para>
@surface:
-@repeat:
@Returns:
-<!-- ##### FUNCTION cairo_surface_set_matrix ##### -->
+<!-- ##### FUNCTION cairo_surface_set_user_data ##### -->
<para>
</para>
@surface:
-@matrix:
+@key:
+@user_data:
+@destroy:
@Returns:
-<!-- ##### FUNCTION cairo_surface_get_matrix ##### -->
+<!-- ##### FUNCTION cairo_surface_get_user_data ##### -->
<para>
</para>
@surface:
-@matrix:
+@key:
@Returns:
-<!-- ##### FUNCTION cairo_surface_set_filter ##### -->
+<!-- ##### FUNCTION cairo_surface_set_device_offset ##### -->
<para>
</para>
@surface:
-@filter:
-@Returns:
-
-
-<!-- ##### FUNCTION cairo_surface_get_filter ##### -->
-<para>
-
-</para>
-
-@surface:
-@Returns:
+@x_offset:
+@y_offset:
diff --git a/doc/public/tmpl/cairo-unused.sgml b/doc/public/tmpl/cairo-unused.sgml
new file mode 100644
index 0000000..ca3bc3e
--- /dev/null
+++ b/doc/public/tmpl/cairo-unused.sgml
@@ -0,0 +1,153 @@
+<!-- ##### SECTION ./tmpl/cairo-atsui.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/cairo-atsui.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/cairo-atsui.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/cairo-atsui.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/cairo-atsui.sgml:Title ##### -->
+ATSUI Fonts
+
+
+<!-- ##### MACRO cairo_copy ##### -->
+<para>
+
+</para>
+
+@dest:
+@src:
+
+<!-- ##### MACRO cairo_default_matrix ##### -->
+<para>
+
+</para>
+
+@cr:
+
+<!-- ##### USER_FUNCTION cairo_error_notify_func_t ##### -->
+<para>
+
+</para>
+
+@closure:
+@status:
+
+<!-- ##### MACRO cairo_get_path ##### -->
+<para>
+
+</para>
+
+@cr:
+@move_to:
+@line_to:
+@curve_to:
+@close_path:
+@closure:
+
+<!-- ##### MACRO cairo_get_path_flat ##### -->
+<para>
+
+</para>
+
+@cr:
+@move_to:
+@line_to:
+@close_path:
+@closure:
+
+<!-- ##### MACRO cairo_set_alpha ##### -->
+<para>
+
+</para>
+
+@cr:
+@alpha:
+
+<!-- ##### FUNCTION cairo_set_error_notify ##### -->
+<para>
+
+</para>
+
+@cr:
+@error_notify:
+@closure:
+
+<!-- ##### MACRO cairo_show_surface ##### -->
+<para>
+
+</para>
+
+@cr:
+@surface:
+@width:
+@height:
+
+<!-- ##### MACRO cairo_surface_create_for_image ##### -->
+<para>
+
+</para>
+
+@Returns:
+@data:
+@format:
+@width:
+@height:
+@stride:
+
+<!-- ##### MACRO cairo_surface_get_filter ##### -->
+<para>
+
+</para>
+
+@Returns:
+@surface:
+
+<!-- ##### MACRO cairo_surface_get_matrix ##### -->
+<para>
+
+</para>
+
+@Returns:
+@surface:
+@matrix:
+
+<!-- ##### MACRO cairo_surface_set_filter ##### -->
+<para>
+
+</para>
+
+@Returns:
+@surface:
+@filter:
+
+<!-- ##### MACRO cairo_surface_set_matrix ##### -->
+<para>
+
+</para>
+
+@Returns:
+@surface:
+@matrix:
+
+<!-- ##### MACRO cairo_surface_set_repeat ##### -->
+<para>
+
+</para>
+
+@Returns:
+@surface:
+@repeat:
+
diff --git a/doc/public/tmpl/cairo-win32.sgml b/doc/public/tmpl/cairo-win32.sgml
new file mode 100644
index 0000000..4976ea0
--- /dev/null
+++ b/doc/public/tmpl/cairo-win32.sgml
@@ -0,0 +1,64 @@
+<!-- ##### SECTION Title ##### -->
+Microsoft Windows Backend
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_win32_surface_create ##### -->
+<para>
+
+</para>
+
+@hdc:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_win32_font_face_create_for_logfontw ##### -->
+<para>
+
+</para>
+
+@logfont:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_win32_scaled_font_select_font ##### -->
+<para>
+
+</para>
+
+@scaled_font:
+@hdc:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_win32_scaled_font_done_font ##### -->
+<para>
+
+</para>
+
+@scaled_font:
+
+
+<!-- ##### FUNCTION cairo_win32_scaled_font_get_metrics_factor ##### -->
+<para>
+
+</para>
+
+@scaled_font:
+@Returns:
+
+
diff --git a/doc/public/tmpl/cairo-xcb-xrender.sgml b/doc/public/tmpl/cairo-xcb-xrender.sgml
new file mode 100644
index 0000000..892967e
--- /dev/null
+++ b/doc/public/tmpl/cairo-xcb-xrender.sgml
@@ -0,0 +1,32 @@
+<!-- ##### SECTION Title ##### -->
+XCB Backend
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_xcb_surface_create_with_xrender_format ##### -->
+<para>
+
+</para>
+
+@c:
+@drawable:
+@format:
+@width:
+@height:
+@Returns:
+
+
diff --git a/doc/public/tmpl/cairo-xcb.sgml b/doc/public/tmpl/cairo-xcb.sgml
index e5e1ee9..a58912c 100644
--- a/doc/public/tmpl/cairo-xcb.sgml
+++ b/doc/public/tmpl/cairo-xcb.sgml
@@ -14,15 +14,41 @@ XCB Backend
</para>
-<!-- ##### FUNCTION cairo_set_target_xcb ##### -->
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_xcb_surface_create ##### -->
<para>
</para>
-@cr:
-@dpy:
+@c:
@drawable:
@visual:
-@format:
+@width:
+@height:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_xcb_surface_create_for_bitmap ##### -->
+<para>
+
+</para>
+
+@c:
+@bitmap:
+@width:
+@height:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_xcb_surface_set_size ##### -->
+<para>
+
+</para>
+
+@surface:
+@width:
+@height:
diff --git a/doc/public/tmpl/cairo-xlib-xrender.sgml b/doc/public/tmpl/cairo-xlib-xrender.sgml
new file mode 100644
index 0000000..4ceab19
--- /dev/null
+++ b/doc/public/tmpl/cairo-xlib-xrender.sgml
@@ -0,0 +1,32 @@
+<!-- ##### SECTION Title ##### -->
+XLib/Xrender Backend
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_xlib_surface_create_with_xrender_format ##### -->
+<para>
+
+</para>
+
+@dpy:
+@drawable:
+@format:
+@width:
+@height:
+@Returns:
+
+
diff --git a/doc/public/tmpl/cairo-xlib.sgml b/doc/public/tmpl/cairo-xlib.sgml
index b18e76a..ae8bb78 100644
--- a/doc/public/tmpl/cairo-xlib.sgml
+++ b/doc/public/tmpl/cairo-xlib.sgml
@@ -14,26 +14,41 @@ XLib Backend
</para>
-<!-- ##### FUNCTION cairo_set_target_drawable ##### -->
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION cairo_xlib_surface_create ##### -->
<para>
</para>
-@cr:
@dpy:
@drawable:
+@visual:
+@width:
+@height:
+@Returns:
-<!-- ##### FUNCTION cairo_xlib_surface_create ##### -->
+<!-- ##### FUNCTION cairo_xlib_surface_create_for_bitmap ##### -->
<para>
</para>
@dpy:
-@drawable:
-@visual:
-@format:
-@colormap:
+@bitmap:
+@width:
+@height:
@Returns:
+<!-- ##### FUNCTION cairo_xlib_surface_set_size ##### -->
+<para>
+
+</para>
+
+@surface:
+@width:
+@height:
+
+
diff --git a/doc/public/tmpl/cairo.sgml b/doc/public/tmpl/cairo.sgml
index a9e195c..992ace5 100644
--- a/doc/public/tmpl/cairo.sgml
+++ b/doc/public/tmpl/cairo.sgml
@@ -24,6 +24,9 @@ Drawing contexts.
</para>
+<!-- ##### SECTION Stability_Level ##### -->
+
+
<!-- ##### TYPEDEF cairo_t ##### -->
<para>
@@ -35,6 +38,7 @@ Drawing contexts.
</para>
+@target:
@Returns:
@@ -70,24 +74,6 @@ Drawing contexts.
@cr:
-<!-- ##### FUNCTION cairo_copy ##### -->
-<para>
-
-</para>
-
-@dest:
-@src:
-
-
-<!-- ##### FUNCTION cairo_set_target_surface ##### -->
-<para>
-
-</para>
-
-@cr:
-@surface:
-
-
<!-- ##### ENUM cairo_format_t ##### -->
<para>
@@ -98,35 +84,22 @@ Drawing contexts.
@CAIRO_FORMAT_A8:
@CAIRO_FORMAT_A1:
-<!-- ##### FUNCTION cairo_set_target_image ##### -->
-<para>
-
-</para>
-
-@cr:
-@data:
-@format:
-@width:
-@height:
-@stride:
-
-
<!-- ##### ENUM cairo_operator_t ##### -->
<para>
</para>
@CAIRO_OPERATOR_CLEAR:
-@CAIRO_OPERATOR_SRC:
-@CAIRO_OPERATOR_DST:
+@CAIRO_OPERATOR_SOURCE:
@CAIRO_OPERATOR_OVER:
-@CAIRO_OPERATOR_OVER_REVERSE:
@CAIRO_OPERATOR_IN:
-@CAIRO_OPERATOR_IN_REVERSE:
@CAIRO_OPERATOR_OUT:
-@CAIRO_OPERATOR_OUT_REVERSE:
@CAIRO_OPERATOR_ATOP:
-@CAIRO_OPERATOR_ATOP_REVERSE:
+@CAIRO_OPERATOR_DEST:
+@CAIRO_OPERATOR_DEST_OVER:
+@CAIRO_OPERATOR_DEST_IN:
+@CAIRO_OPERATOR_DEST_OUT:
+@CAIRO_OPERATOR_DEST_ATOP:
@CAIRO_OPERATOR_XOR:
@CAIRO_OPERATOR_ADD:
@CAIRO_OPERATOR_SATURATE:
@@ -140,7 +113,7 @@ Drawing contexts.
@op:
-<!-- ##### FUNCTION cairo_set_rgb_color ##### -->
+<!-- ##### FUNCTION cairo_set_source_rgb ##### -->
<para>
</para>
@@ -151,22 +124,36 @@ Drawing contexts.
@blue:
-<!-- ##### FUNCTION cairo_set_pattern ##### -->
+<!-- ##### FUNCTION cairo_set_source_rgba ##### -->
<para>
</para>
@cr:
-@pattern:
+@red:
+@green:
+@blue:
+@alpha:
-<!-- ##### FUNCTION cairo_set_alpha ##### -->
+<!-- ##### FUNCTION cairo_set_source ##### -->
<para>
</para>
@cr:
-@alpha:
+@source:
+
+
+<!-- ##### FUNCTION cairo_set_source_surface ##### -->
+<para>
+
+</para>
+
+@cr:
+@surface:
+@x:
+@y:
<!-- ##### FUNCTION cairo_set_tolerance ##### -->
@@ -289,7 +276,7 @@ Drawing contexts.
@angle:
-<!-- ##### FUNCTION cairo_concat_matrix ##### -->
+<!-- ##### FUNCTION cairo_transform ##### -->
<para>
</para>
@@ -307,14 +294,6 @@ Drawing contexts.
@matrix:
-<!-- ##### FUNCTION cairo_default_matrix ##### -->
-<para>
-
-</para>
-
-@cr:
-
-
<!-- ##### FUNCTION cairo_identity_matrix ##### -->
<para>
@@ -323,7 +302,7 @@ Drawing contexts.
@cr:
-<!-- ##### FUNCTION cairo_transform_point ##### -->
+<!-- ##### FUNCTION cairo_user_to_device ##### -->
<para>
</para>
@@ -333,7 +312,7 @@ Drawing contexts.
@y:
-<!-- ##### FUNCTION cairo_transform_distance ##### -->
+<!-- ##### FUNCTION cairo_user_to_device_distance ##### -->
<para>
</para>
@@ -343,7 +322,7 @@ Drawing contexts.
@dy:
-<!-- ##### FUNCTION cairo_inverse_transform_point ##### -->
+<!-- ##### FUNCTION cairo_device_to_user ##### -->
<para>
</para>
@@ -353,7 +332,7 @@ Drawing contexts.
@y:
-<!-- ##### FUNCTION cairo_inverse_transform_distance ##### -->
+<!-- ##### FUNCTION cairo_device_to_user_distance ##### -->
<para>
</para>
@@ -485,6 +464,43 @@ Drawing contexts.
@cr:
+<!-- ##### FUNCTION cairo_paint ##### -->
+<para>
+
+</para>
+
+@cr:
+
+
+<!-- ##### FUNCTION cairo_paint_with_alpha ##### -->
+<para>
+
+</para>
+
+@cr:
+@alpha:
+
+
+<!-- ##### FUNCTION cairo_mask ##### -->
+<para>
+
+</para>
+
+@cr:
+@pattern:
+
+
+<!-- ##### FUNCTION cairo_mask_surface ##### -->
+<para>
+
+</para>
+
+@cr:
+@surface:
+@surface_x:
+@surface_y:
+
+
<!-- ##### FUNCTION cairo_stroke ##### -->
<para>
@@ -493,6 +509,14 @@ Drawing contexts.
@cr:
+<!-- ##### FUNCTION cairo_stroke_preserve ##### -->
+<para>
+
+</para>
+
+@cr:
+
+
<!-- ##### FUNCTION cairo_fill ##### -->
<para>
@@ -501,6 +525,14 @@ Drawing contexts.
@cr:
+<!-- ##### FUNCTION cairo_fill_preserve ##### -->
+<para>
+
+</para>
+
+@cr:
+
+
<!-- ##### FUNCTION cairo_copy_page ##### -->
<para>
@@ -569,7 +601,7 @@ Drawing contexts.
@y2:
-<!-- ##### FUNCTION cairo_init_clip ##### -->
+<!-- ##### FUNCTION cairo_clip ##### -->
<para>
</para>
@@ -577,7 +609,7 @@ Drawing contexts.
@cr:
-<!-- ##### FUNCTION cairo_clip ##### -->
+<!-- ##### FUNCTION cairo_clip_preserve ##### -->
<para>
</para>
@@ -585,11 +617,13 @@ Drawing contexts.
@cr:
-<!-- ##### TYPEDEF cairo_font_t ##### -->
+<!-- ##### FUNCTION cairo_reset_clip ##### -->
<para>
</para>
+@cr:
+
<!-- ##### STRUCT cairo_glyph_t ##### -->
<para>
@@ -600,29 +634,6 @@ Drawing contexts.
@x:
@y:
-<!-- ##### STRUCT cairo_text_extents_t ##### -->
-<para>
-
-</para>
-
-@x_bearing:
-@y_bearing:
-@width:
-@height:
-@x_advance:
-@y_advance:
-
-<!-- ##### STRUCT cairo_font_extents_t ##### -->
-<para>
-
-</para>
-
-@ascent:
-@descent:
-@height:
-@max_x_advance:
-@max_y_advance:
-
<!-- ##### ENUM cairo_font_slant_t ##### -->
<para>
@@ -640,7 +651,7 @@ Drawing contexts.
@CAIRO_FONT_WEIGHT_NORMAL:
@CAIRO_FONT_WEIGHT_BOLD:
-<!-- ##### FUNCTION cairo_select_font ##### -->
+<!-- ##### FUNCTION cairo_select_font_face ##### -->
<para>
</para>
@@ -651,16 +662,25 @@ Drawing contexts.
@weight:
-<!-- ##### FUNCTION cairo_scale_font ##### -->
+<!-- ##### FUNCTION cairo_set_font_size ##### -->
<para>
</para>
@cr:
-@scale:
+@size:
-<!-- ##### FUNCTION cairo_transform_font ##### -->
+<!-- ##### FUNCTION cairo_set_font_matrix ##### -->
+<para>
+
+</para>
+
+@cr:
+@matrix:
+
+
+<!-- ##### FUNCTION cairo_get_font_matrix ##### -->
<para>
</para>
@@ -688,7 +708,7 @@ Drawing contexts.
@num_glyphs:
-<!-- ##### FUNCTION cairo_current_font ##### -->
+<!-- ##### FUNCTION cairo_get_font_face ##### -->
<para>
</para>
@@ -697,7 +717,7 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_font_extents ##### -->
+<!-- ##### FUNCTION cairo_font_extents ##### -->
<para>
</para>
@@ -706,13 +726,13 @@ Drawing contexts.
@extents:
-<!-- ##### FUNCTION cairo_set_font ##### -->
+<!-- ##### FUNCTION cairo_set_font_face ##### -->
<para>
</para>
@cr:
-@font:
+@font_face:
<!-- ##### FUNCTION cairo_text_extents ##### -->
@@ -755,46 +775,25 @@ Drawing contexts.
@num_glyphs:
-<!-- ##### FUNCTION cairo_font_reference ##### -->
-<para>
-
-</para>
-
-@font:
-
-
-<!-- ##### FUNCTION cairo_font_destroy ##### -->
-<para>
-
-</para>
-
-@font:
-
-
-<!-- ##### FUNCTION cairo_font_glyph_extents ##### -->
+<!-- ##### FUNCTION cairo_get_operator ##### -->
<para>
</para>
-@font:
-@font_matrix:
-@glyphs:
-@num_glyphs:
-@extents:
+@cr:
+@Returns:
-<!-- ##### FUNCTION cairo_show_surface ##### -->
+<!-- ##### FUNCTION cairo_get_source ##### -->
<para>
</para>
@cr:
-@surface:
-@width:
-@height:
+@Returns:
-<!-- ##### FUNCTION cairo_current_operator ##### -->
+<!-- ##### FUNCTION cairo_get_tolerance ##### -->
<para>
</para>
@@ -803,18 +802,17 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_rgb_color ##### -->
+<!-- ##### FUNCTION cairo_get_current_point ##### -->
<para>
</para>
@cr:
-@red:
-@green:
-@blue:
+@x:
+@y:
-<!-- ##### FUNCTION cairo_current_pattern ##### -->
+<!-- ##### FUNCTION cairo_get_fill_rule ##### -->
<para>
</para>
@@ -823,7 +821,7 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_alpha ##### -->
+<!-- ##### FUNCTION cairo_get_line_width ##### -->
<para>
</para>
@@ -832,7 +830,7 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_tolerance ##### -->
+<!-- ##### FUNCTION cairo_get_line_cap ##### -->
<para>
</para>
@@ -841,17 +839,16 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_point ##### -->
+<!-- ##### FUNCTION cairo_get_line_join ##### -->
<para>
</para>
@cr:
-@x:
-@y:
+@Returns:
-<!-- ##### FUNCTION cairo_current_fill_rule ##### -->
+<!-- ##### FUNCTION cairo_get_miter_limit ##### -->
<para>
</para>
@@ -860,16 +857,18 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_line_width ##### -->
+<!-- ##### FUNCTION cairo_get_matrix ##### -->
<para>
</para>
@cr:
+@matrix:
+<!-- # Unused Parameters # -->
@Returns:
-<!-- ##### FUNCTION cairo_current_line_cap ##### -->
+<!-- ##### FUNCTION cairo_get_target ##### -->
<para>
</para>
@@ -878,7 +877,7 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_line_join ##### -->
+<!-- ##### FUNCTION cairo_copy_path ##### -->
<para>
</para>
@@ -887,7 +886,7 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_miter_limit ##### -->
+<!-- ##### FUNCTION cairo_copy_path_flat ##### -->
<para>
</para>
@@ -896,47 +895,40 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_current_matrix ##### -->
+<!-- ##### FUNCTION cairo_append_path ##### -->
<para>
</para>
@cr:
-@matrix:
+@path:
-<!-- ##### FUNCTION cairo_current_target_surface ##### -->
+<!-- ##### ENUM cairo_path_data_type_t ##### -->
<para>
</para>
-@cr:
-@Returns:
-
+@CAIRO_PATH_MOVE_TO:
+@CAIRO_PATH_LINE_TO:
+@CAIRO_PATH_CURVE_TO:
+@CAIRO_PATH_CLOSE_PATH:
-<!-- ##### FUNCTION cairo_current_path ##### -->
+<!-- ##### STRUCT cairo_path_t ##### -->
<para>
</para>
-@cr:
-@move_to:
-@line_to:
-@curve_to:
-@close_path:
-@closure:
-
+@status:
+@data:
+@num_data:
-<!-- ##### FUNCTION cairo_current_path_flat ##### -->
+<!-- ##### FUNCTION cairo_path_destroy ##### -->
<para>
</para>
-@cr:
-@move_to:
-@line_to:
-@close_path:
-@closure:
+@path:
<!-- ##### ENUM cairo_status_t ##### -->
@@ -953,6 +945,12 @@ Drawing contexts.
@CAIRO_STATUS_NO_TARGET_SURFACE:
@CAIRO_STATUS_NULL_POINTER:
@CAIRO_STATUS_INVALID_STRING:
+@CAIRO_STATUS_INVALID_PATH_DATA:
+@CAIRO_STATUS_READ_ERROR:
+@CAIRO_STATUS_WRITE_ERROR:
+@CAIRO_STATUS_SURFACE_FINISHED:
+@CAIRO_STATUS_SURFACE_TYPE_MISMATCH:
+@CAIRO_STATUS_PATTERN_TYPE_MISMATCH:
<!-- ##### FUNCTION cairo_status ##### -->
<para>
@@ -963,12 +961,19 @@ Drawing contexts.
@Returns:
-<!-- ##### FUNCTION cairo_status_string ##### -->
+<!-- ##### MACRO cairo_status_string ##### -->
<para>
</para>
-@cr:
+
+
+<!-- ##### FUNCTION cairo_status_to_string ##### -->
+<para>
+
+</para>
+
+@status:
@Returns:
@@ -1008,12 +1013,58 @@ Drawing contexts.
@Returns:
+<!-- ##### FUNCTION cairo_image_surface_get_width ##### -->
+<para>
+
+</para>
+
+@surface:
+@Returns:
+
+
+<!-- ##### FUNCTION cairo_image_surface_get_height ##### -->
+<para>
+
+</para>
+
+@surface:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION cairo_destroy_func_t ##### -->
+<para>
+
+</para>
+
+@data:
+
+
+<!-- ##### STRUCT cairo_user_data_key_t ##### -->
+<para>
+
+</para>
+
+@unused:
+
+<!-- ##### USER_FUNCTION cairo_read_func_t ##### -->
+<para>
+
+</para>
+
+@closure:
+@data:
+@length:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION cairo_write_func_t ##### -->
+<para>
+
+</para>
-<!--
-Local variables:
-mode: sgml
-sgml-parent-document: ("../cairo-docs.xml" "book" "refsect2" "")
-End:
--->
+@closure:
+@data:
+@length:
+@Returns:
diff --git a/doc/public/xml/cairo-atsui.xml b/doc/public/xml/cairo-atsui.xml
index 3186ba8..0a5461e 100644
--- a/doc/public/xml/cairo-atsui.xml
+++ b/doc/public/xml/cairo-atsui.xml
@@ -18,7 +18,6 @@
-<link linkend="cairo-font-t">cairo_font_t</link>* <link linkend="cairo-atsui-font-create">cairo_atsui_font_create</link> (<link linkend="ATSUStyle">ATSUStyle</link> style);
</synopsis>
</refsynopsisdiv>
@@ -39,20 +38,6 @@
<refsect1>
<title>Details</title>
-<refsect2>
-<title><anchor id="cairo-atsui-font-create"/>cairo_atsui_font_create ()</title>
-<indexterm><primary>cairo_atsui_font_create</primary></indexterm><programlisting><link linkend="cairo-font-t">cairo_font_t</link>* cairo_atsui_font_create (<link linkend="ATSUStyle">ATSUStyle</link> style);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>style</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
</refsect1>
diff --git a/doc/public/xml/cairo-font.xml b/doc/public/xml/cairo-font.xml
new file mode 100644
index 0000000..4435bcc
--- /dev/null
+++ b/doc/public/xml/cairo-font.xml
@@ -0,0 +1,419 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="cairo-Fonts">
+<refmeta>
+<refentrytitle>Fonts</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Fonts</refname><refpurpose>Font Handling</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+typedef <link linkend="cairo-font-face-t">cairo_font_face_t</link>;
+typedef <link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link>;
+<link linkend="void">void</link> <link linkend="cairo-font-face-reference">cairo_font_face_reference</link> (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face);
+<link linkend="void">void</link> <link linkend="cairo-font-face-destroy">cairo_font_face_destroy</link> (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face);
+<link linkend="void">void</link>* <link linkend="cairo-font-face-get-user-data">cairo_font_face_get_user_data</link> (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key);
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-font-face-set-user-data">cairo_font_face_set_user_data</link>
+ (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key,
+ <link linkend="void">void</link> *user_data,
+ <link linkend="cairo-destroy-func-t">cairo_destroy_func_t</link> destroy);
+<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link>* <link linkend="cairo-scaled-font-create">cairo_scaled_font_create</link>
+ (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *font_matrix,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *ctm);
+<link linkend="void">void</link> <link linkend="cairo-scaled-font-reference">cairo_scaled_font_reference</link> (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);
+<link linkend="void">void</link> <link linkend="cairo-scaled-font-destroy">cairo_scaled_font_destroy</link> (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);
+ <link linkend="cairo-font-extents-t">cairo_font_extents_t</link>;
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-scaled-font-extents">cairo_scaled_font_extents</link> (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font,
+ <link linkend="cairo-font-extents-t">cairo_font_extents_t</link> *extents);
+ <link linkend="cairo-text-extents-t">cairo_text_extents_t</link>;
+<link linkend="void">void</link> <link linkend="cairo-scaled-font-glyph-extents">cairo_scaled_font_glyph_extents</link> (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font,
+ <link linkend="cairo-glyph-t">cairo_glyph_t</link> *glyphs,
+ <link linkend="int">int</link> num_glyphs,
+ <link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="cairo-font-face-t"/>cairo_font_face_t</title>
+<indexterm><primary>cairo_font_face_t</primary></indexterm><programlisting>typedef struct _cairo_font_face cairo_font_face_t;
+</programlisting>
+<para>
+A <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> specifies all aspects of a font other
+than the size or font matrix (a font matrix is used to distort
+a font by sheering it or scaling it unequally in the two
+directions) . A font face can be set on a <link linkend="cairo-t"><type>cairo_t</type></link> by using
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link>; the size and font matrix are set with
+<link linkend="cairo-set-font-size"><function>cairo_set_font_size()</function></link> and <link linkend="cairo-set-font-matrix"><function>cairo_set_font_matrix()</function></link>.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="cairo-scaled-font-t"/>cairo_scaled_font_t</title>
+<indexterm><primary>cairo_scaled_font_t</primary></indexterm><programlisting>typedef struct _cairo_scaled_font cairo_scaled_font_t;
+</programlisting>
+<para>
+A <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> is a font scaled to a particular size and device
+resolution. A cairo_scaled_font_t is most useful for low-level font
+usage where a library or application wants to cache a reference
+to a scaled font to speed up the computation of metrics.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="cairo-font-face-reference"/>cairo_font_face_reference ()</title>
+<indexterm><primary>cairo_font_face_reference</primary></indexterm><programlisting><link linkend="void">void</link> cairo_font_face_reference (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face);</programlisting>
+<para>
+Increases the reference count on <parameter>font_face</parameter> by one. This prevents
+<parameter>font_face</parameter> from being destroyed until a matching call to
+<link linkend="cairo-font-face-destroy"><function>cairo_font_face_destroy()</function></link> is made.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>font_face</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>, (may be NULL in which case this
+function does nothing).
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-font-face-destroy"/>cairo_font_face_destroy ()</title>
+<indexterm><primary>cairo_font_face_destroy</primary></indexterm><programlisting><link linkend="void">void</link> cairo_font_face_destroy (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face);</programlisting>
+<para>
+Decreases the reference count on <parameter>font_face</parameter> by one. If the result
+is zero, then <parameter>font_face</parameter> and all associated resources are freed.
+See <link linkend="cairo-font-face-reference"><function>cairo_font_face_reference()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>font_face</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-font-face-get-user-data"/>cairo_font_face_get_user_data ()</title>
+<indexterm><primary>cairo_font_face_get_user_data</primary></indexterm><programlisting><link linkend="void">void</link>* cairo_font_face_get_user_data (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key);</programlisting>
+<para>
+Return user data previously attached to <parameter>font_face</parameter> using the specified
+key. If no user data has been attached with the given key this
+function returns <literal>NULL</literal>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>font_face</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>key</parameter>&nbsp;:</term>
+<listitem><simpara> the address of the <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> the user data was
+attached to
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the user data previously attached or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-font-face-set-user-data"/>cairo_font_face_set_user_data ()</title>
+<indexterm><primary>cairo_font_face_set_user_data</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_font_face_set_user_data
+ (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key,
+ <link linkend="void">void</link> *user_data,
+ <link linkend="cairo-destroy-func-t">cairo_destroy_func_t</link> destroy);</programlisting>
+<para>
+Attach user data to <parameter>font_face</parameter>. To remove user data from a font face,
+call this function with the key that was used to set it and <literal>NULL</literal>
+for <parameter>data</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>font_face</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>key</parameter>&nbsp;:</term>
+<listitem><simpara> the address of a <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> to attach the user data to
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter>&nbsp;:</term>
+<listitem><simpara> the user data to attach to the font face
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>destroy</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> which will be called when the
+font face is destroyed or when new user data is attached using the
+same key.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal> or <literal>CAIRO_STATUS_NO_MEMORY</literal> if a
+slot could not be allocated for the user data.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-scaled-font-create"/>cairo_scaled_font_create ()</title>
+<indexterm><primary>cairo_scaled_font_create</primary></indexterm><programlisting><link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link>* cairo_scaled_font_create
+ (<link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *font_matrix,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *ctm);</programlisting>
+<para>
+Creates a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> object from a font face and matrices that
+describe the size of the font and the environment in which it will
+be used.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>font_face</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>font_matrix</parameter>&nbsp;:</term>
+<listitem><simpara> font space to user space transformation matrix for the
+ font. In the simplest case of a N point font, this matrix is
+ just a scale by N, but it can also be used to shear the font
+ or stretch it unequally along the two axes. See
+ <link linkend="cairo-set-font-matrix"><function>cairo_set_font_matrix()</function></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ctm</parameter>&nbsp;:</term>
+<listitem><simpara> user to device transformation matrix with which the font will
+ be used.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>. Destroy with
+ <link linkend="cairo-scaled-font-destroy"><function>cairo_scaled_font_destroy()</function></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-scaled-font-reference"/>cairo_scaled_font_reference ()</title>
+<indexterm><primary>cairo_scaled_font_reference</primary></indexterm><programlisting><link linkend="void">void</link> cairo_scaled_font_reference (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);</programlisting>
+<para>
+Increases the reference count on <parameter>scaled_font</parameter> by one. This prevents
+<parameter>scaled_font</parameter> from being destroyed until a matching call to
+<link linkend="cairo-scaled-font-destroy"><function>cairo_scaled_font_destroy()</function></link> is made.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>, (may be NULL in which case
+this function does nothing)
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-scaled-font-destroy"/>cairo_scaled_font_destroy ()</title>
+<indexterm><primary>cairo_scaled_font_destroy</primary></indexterm><programlisting><link linkend="void">void</link> cairo_scaled_font_destroy (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);</programlisting>
+<para>
+Decreases the reference count on <parameter>font</parameter> by one. If the result
+is zero, then <parameter>font</parameter> and all associated resources are freed.
+See <link linkend="cairo-scaled-font-reference"><function>cairo_scaled_font_reference()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-font-extents-t"/>cairo_font_extents_t</title>
+<indexterm><primary>cairo_font_extents_t</primary></indexterm><programlisting>typedef struct {
+ double ascent;
+ double descent;
+ double height;
+ double max_x_advance;
+ double max_y_advance;
+} cairo_font_extents_t;
+</programlisting>
+<para>
+The <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> structure stores metric information for
+a font. Values are given in the current user-space coordinate
+system.
+</para>
+<para>
+Because font metrics are in user-space coordinates, they are
+mostly, but not entirely, independent of the current transformation
+matrix. If you call <literal>cairo_scale(cr, 2.0, 2.0)</literal>,
+text will be drawn twice as big, but the reported text extents will
+not be doubled. They will change slightly due to hinting (so you
+can't assume that metrics are independent of the transformation
+matrix), but otherwise will remain unchanged.</para>
+<para>
+
+</para><variablelist role="struct">
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>ascent</structfield>;</term>
+<listitem><simpara> the distance that the font extends above the baseline.
+ Note that this is not always exactly equal to the maximum
+ of the extents of all the glyphs in the font, but rather
+ is picked to express the font designer's intent as to
+ how the font should align with elements above it.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>descent</structfield>;</term>
+<listitem><simpara> the distance that the font extends below the baseline.
+ This value is positive for typical fonts that include
+ portions below the baseline. Note that this is not always
+ exactly equal to the maximum of the extents of all the
+ glyphs in the font, but rather is picked to express the
+ font designer's intent as to how the the font should
+ align with elements below it.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>height</structfield>;</term>
+<listitem><simpara> the recommended vertical distance between baselines when
+ setting consecutive lines of text with the font. This
+ is greater than <parameter>ascent</parameter>+<parameter>descent</parameter> by a
+ quantity known as the <firstterm>line spacing</firstterm>
+ or <firstterm>external leading</firstterm>. When space
+ is at a premium, most fonts can be set with only
+ a distance of <parameter>ascent</parameter>+<parameter>descent</parameter> between lines.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>max_x_advance</structfield>;</term>
+<listitem><simpara> the maximum distance in the X direction that
+ the the origin is advanced for any glyph in the font.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>max_y_advance</structfield>;</term>
+<listitem><simpara> the maximum distance in the Y direction that
+ the the origin is advanced for any glyph in the font.
+ this will be zero for normal fonts used for horizontal
+ writing. (The scripts of East Asia are sometimes written
+ vertically.)
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-scaled-font-extents"/>cairo_scaled_font_extents ()</title>
+<indexterm><primary>cairo_scaled_font_extents</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_scaled_font_extents (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font,
+ <link linkend="cairo-font-extents-t">cairo_font_extents_t</link> *extents);</programlisting>
+<para>
+Gets the metrics for a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>extents</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> which to store the retrieved extents.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal> on success. Otherwise, an
+ error such as <literal>CAIRO_STATUS_NO_MEMORY</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-text-extents-t"/>cairo_text_extents_t</title>
+<indexterm><primary>cairo_text_extents_t</primary></indexterm><programlisting>typedef struct {
+ double x_bearing;
+ double y_bearing;
+ double width;
+ double height;
+ double x_advance;
+ double y_advance;
+} cairo_text_extents_t;
+</programlisting>
+<para>
+The <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> structure stores the extents of a single
+glyph or a string of glyphs in user-space coordinates. Because text
+extents are in user-space coordinates, they are mostly, but not
+entirely, independent of the current transformation matrix. If you call
+<literal>cairo_scale(cr, 2.0, 2.0)</literal>, text will
+be drawn twice as big, but the reported text extents will not be
+doubled. They will change slightly due to hinting (so you can't
+assume that metrics are independent of the transformation matrix),
+but otherwise will remain unchanged.</para>
+<para>
+
+</para><variablelist role="struct">
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>x_bearing</structfield>;</term>
+<listitem><simpara> the horizontal distance from the origin to the
+ leftmost part of the glyphs as drawn. Positive if the
+ glyphs lie entirely to the right of the origin.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>y_bearing</structfield>;</term>
+<listitem><simpara> the vertical distance from the origin to the
+ topmost part of the glyphs as drawn. Positive only if the
+ glyphs lie completely below the origin; will usually be
+ negative.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>width</structfield>;</term>
+<listitem><simpara> width of the glyphs as drawn
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>height</structfield>;</term>
+<listitem><simpara> height of the glyphs as drawn
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>x_advance</structfield>;</term>
+<listitem><simpara>distance to advance in the X direction
+ after drawing these glyphs
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><link linkend="double">double</link>&nbsp;<structfield>y_advance</structfield>;</term>
+<listitem><simpara> distance to advance in the Y direction
+ after drawing these glyphs. Will typically be zero except
+ for vertical text layout as found in East-Asian languages.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-scaled-font-glyph-extents"/>cairo_scaled_font_glyph_extents ()</title>
+<indexterm><primary>cairo_scaled_font_glyph_extents</primary></indexterm><programlisting><link linkend="void">void</link> cairo_scaled_font_glyph_extents (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font,
+ <link linkend="cairo-glyph-t">cairo_glyph_t</link> *glyphs,
+ <link linkend="int">int</link> num_glyphs,
+ <link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>glyphs</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>num_glyphs</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>extents</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/public/xml/cairo-ft.xml b/doc/public/xml/cairo-ft.xml
index de92f34..8f9b45e 100644
--- a/doc/public/xml/cairo-ft.xml
+++ b/doc/public/xml/cairo-ft.xml
@@ -18,15 +18,14 @@
-<link linkend="cairo-font-t">cairo_font_t</link>* <link linkend="cairo-ft-font-create">cairo_ft_font_create</link> (<link linkend="FcPattern">FcPattern</link> *pattern,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);
-<link linkend="cairo-font-t">cairo_font_t</link>* <link linkend="cairo-ft-font-create-for-ft-face">cairo_ft_font_create_for_ft_face</link>
+<link linkend="cairo-font-face-t">cairo_font_face_t</link>* <link linkend="cairo-ft-font-face-create-for-pattern">cairo_ft_font_face_create_for_pattern</link>
+ (<link linkend="FcPattern">FcPattern</link> *pattern);
+<link linkend="cairo-font-face-t">cairo_font_face_t</link>* <link linkend="cairo-ft-font-face-create-for-ft-face">cairo_ft_font_face_create_for_ft_face</link>
(<link linkend="FT-Face">FT_Face</link> face,
- <link linkend="int">int</link> load_flags,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);
-<link linkend="FT-Face">FT_Face</link> <link linkend="cairo-ft-font-lock-face">cairo_ft_font_lock_face</link> (<link linkend="cairo-font-t">cairo_font_t</link> *ft_font);
-<link linkend="void">void</link> <link linkend="cairo-ft-font-unlock-face">cairo_ft_font_unlock_face</link> (<link linkend="cairo-font-t">cairo_font_t</link> *ft_font);
-<link linkend="FcPattern">FcPattern</link>* <link linkend="cairo-ft-font-get-pattern">cairo_ft_font_get_pattern</link> (<link linkend="cairo-font-t">cairo_font_t</link> *ft_font);
+ <link linkend="int">int</link> load_flags);
+<link linkend="FT-Face">FT_Face</link> <link linkend="cairo-ft-scaled-font-lock-face">cairo_ft_scaled_font_lock_face</link> (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);
+<link linkend="void">void</link> <link linkend="cairo-ft-scaled-font-unlock-face">cairo_ft_scaled_font_unlock_face</link>
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);
</synopsis>
</refsynopsisdiv>
@@ -48,14 +47,15 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-ft-font-create"/>cairo_ft_font_create ()</title>
-<indexterm><primary>cairo_ft_font_create</primary></indexterm><programlisting><link linkend="cairo-font-t">cairo_font_t</link>* cairo_ft_font_create (<link linkend="FcPattern">FcPattern</link> *pattern,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);</programlisting>
+<title><anchor id="cairo-ft-font-face-create-for-pattern"/>cairo_ft_font_face_create_for_pattern ()</title>
+<indexterm><primary>cairo_ft_font_face_create_for_pattern</primary></indexterm><programlisting><link linkend="cairo-font-face-t">cairo_font_face_t</link>* cairo_ft_font_face_create_for_pattern
+ (<link linkend="FcPattern">FcPattern</link> *pattern);</programlisting>
<para>
-Creates a new font for the FreeType font backend based on a
+Creates a new font face for the FreeType font backend based on a
fontconfig pattern. This font can then be used with
-<link linkend="cairo-set-font"><function>cairo_set_font()</function></link>, <link linkend="cairo-font-glyph-extents"><function>cairo_font_glyph_extents()</function></link>, or FreeType backend
-specific functions like <link linkend="cairo-ft-font-lock-face"><function>cairo_ft_font_lock_face()</function></link>.</para>
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-font-create"><function>cairo_font_create()</function></link>. The <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+returned from <link linkend="cairo-font-create"><function>cairo_font_create()</function></link> is also for the FreeType backend
+and can be used with functions such as <link linkend="cairo-ft-font-lock-face"><function>cairo_ft_font_lock_face()</function></link>.</para>
<para>
</para><variablelist role="params">
@@ -68,38 +68,31 @@ specific functions like <link linkend="cairo-ft-font-lock-face"><function>cairo_
release your reference to the pattern with <link linkend="FcPatternDestroy"><function>FcPatternDestroy()</function></link> if
you no longer need to access it.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>scale</parameter>&nbsp;:</term>
-<listitem><simpara> The scale at which this font will be used. The
- scale is given by multiplying the font matrix (see
- <link linkend="cairo-transform-font"><function>cairo_transform_font()</function></link>) by the current transformation matrix.
- The translation elements of the resulting matrix are ignored.
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-font-t"><type>cairo_font_t</type></link>. Free with
- <link linkend="cairo-font-destroy"><function>cairo_font_destroy()</function></link> when you are done using it.
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>. Free with
+ <link linkend="cairo-font-face-destroy"><function>cairo_font_face_destroy()</function></link> when you are done using it.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-ft-font-create-for-ft-face"/>cairo_ft_font_create_for_ft_face ()</title>
-<indexterm><primary>cairo_ft_font_create_for_ft_face</primary></indexterm><programlisting><link linkend="cairo-font-t">cairo_font_t</link>* cairo_ft_font_create_for_ft_face
+<title><anchor id="cairo-ft-font-face-create-for-ft-face"/>cairo_ft_font_face_create_for_ft_face ()</title>
+<indexterm><primary>cairo_ft_font_face_create_for_ft_face</primary></indexterm><programlisting><link linkend="cairo-font-face-t">cairo_font_face_t</link>* cairo_ft_font_face_create_for_ft_face
(<link linkend="FT-Face">FT_Face</link> face,
- <link linkend="int">int</link> load_flags,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);</programlisting>
+ <link linkend="int">int</link> load_flags);</programlisting>
<para>
-Creates a new font forthe FreeType font backend from a pre-opened
-FreeType face. This font can then be used with <link linkend="cairo-set-font"><function>cairo_set_font()</function></link>,
-<link linkend="cairo-font-glyph-extents"><function>cairo_font_glyph_extents()</function></link>, or FreeType backend specific
-functions like <link linkend="cairo-ft-font-lock-face"><function>cairo_ft_font_lock_face()</function></link> Cairo will determine the
-pixel size and transformation from the <parameter>scale</parameter> parameter and call
-<link linkend="FT-Set-Transform"><function>FT_Set_Transform()</function></link> and <link linkend="FT-Set-Pixel-Sizes"><function>FT_Set_Pixel_Sizes()</function></link>.</para>
+Creates a new font face for the FreeType font backend from a pre-opened
+FreeType face. This font can then be used with
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-font-create"><function>cairo_font_create()</function></link>. The <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+returned from <link linkend="cairo-font-create"><function>cairo_font_create()</function></link> is also for the FreeType backend
+and can be used with functions such as <link linkend="cairo-ft-font-lock-face"><function>cairo_ft_font_lock_face()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>face</parameter>&nbsp;:</term>
<listitem><simpara> A FreeType face object, already opened. This must
- be kept around until the font object's refcount drops to
- zero and it is freed. The font object can be kept alive by
- internal caching, so it's safest to keep the face object
- around forever.
+ be kept around until the face's refcount drops to
+ zero and it is freed. Since the face may be referenced
+ internally to Cairo, the best way to determine when it
+ is safe to free the face is to pass a
+ <link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> to <link linkend="cairo-font-face-set-user-data"><function>cairo_font_face_set_user_data()</function></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>load_flags</parameter>&nbsp;:</term>
<listitem><simpara> The flags to pass to FT_Load_Glyph when loading
@@ -107,25 +100,19 @@ pixel size and transformation from the <parameter>scale</parameter> parameter an
rendering such as hinting and antialiasing. See the FreeType
docs for full information.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>scale</parameter>&nbsp;:</term>
-<listitem><simpara> The scale at which this font will be used. The
- scale is given by multiplying the font matrix (see
- <link linkend="cairo-transform-font"><function>cairo_transform_font()</function></link>) by the current transformation matrix.
- The translation elements of the resulting matrix are ignored.
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-font-t"><type>cairo_font_t</type></link>. Free with
- <link linkend="cairo-font-destroy"><function>cairo_font_destroy()</function></link> when you are done using it.
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>. Free with
+ <link linkend="cairo-font-face-destroy"><function>cairo_font_face_destroy()</function></link> when you are done using it.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-ft-font-lock-face"/>cairo_ft_font_lock_face ()</title>
-<indexterm><primary>cairo_ft_font_lock_face</primary></indexterm><programlisting><link linkend="FT-Face">FT_Face</link> cairo_ft_font_lock_face (<link linkend="cairo-font-t">cairo_font_t</link> *ft_font);</programlisting>
+<title><anchor id="cairo-ft-scaled-font-lock-face"/>cairo_ft_scaled_font_lock_face ()</title>
+<indexterm><primary>cairo_ft_scaled_font_lock_face</primary></indexterm><programlisting><link linkend="FT-Face">FT_Face</link> cairo_ft_scaled_font_lock_face (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);</programlisting>
<para>
<link linkend="cairo-ft-font-lock-face"><function>cairo_ft_font_lock_face()</function></link> gets the <link linkend="FT-Face"><type>FT_Face</type></link> object from a FreeType
backend font and scales it appropriately for the font. You must
release the face with <link linkend="cairo-ft-font-unlock-face"><function>cairo_ft_font_unlock_face()</function></link>
when you are done using it. Since the <link linkend="FT-Face"><type>FT_Face</type></link> object can be
-shared between multiple <link linkend="cairo-font-t"><type>cairo_font_t</type></link> objects, you must not
+shared between multiple <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> objects, you must not
lock any other font objects until you unlock this one. A count is
kept of the number of times <link linkend="cairo-ft-font-lock-face"><function>cairo_ft_font_lock_face()</function></link> is
called. <link linkend="cairo-ft-font-unlock-face"><function>cairo_ft_font_unlock_face()</function></link> must be called the same number
@@ -142,59 +129,30 @@ threaded application.)</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>ft_font</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the FreeType font backend. Such an
- object can be created with <link linkend="cairo-ft-font-create"><function>cairo_ft_font_create()</function></link> or
- <link linkend="cairo-ft-font-create-for-ft-face"><function>cairo_ft_font_create_for_ft_face()</function></link>. On some platforms the font from
- <link linkend="cairo-current-font"><function>cairo_current_font()</function></link> will also be a FreeType font, but using this
- functionality with fonts you don't create yourself is not
- recommended.
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> from the FreeType font backend. Such an
+ object can be created by calling <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link> on a
+ FreeType backend font face (see <link linkend="cairo-ft-font-face-create-for-pattern"><function>cairo_ft_font_face_create_for_pattern()</function></link>,
+ <link linkend="cairo-ft-font-face-create-for-face"><function>cairo_ft_font_face_create_for_face()</function></link>).
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The <link linkend="FT-Face"><type>FT_Face</type></link> object for <parameter>font</parameter>, scaled appropriately.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-ft-font-unlock-face"/>cairo_ft_font_unlock_face ()</title>
-<indexterm><primary>cairo_ft_font_unlock_face</primary></indexterm><programlisting><link linkend="void">void</link> cairo_ft_font_unlock_face (<link linkend="cairo-font-t">cairo_font_t</link> *ft_font);</programlisting>
+<title><anchor id="cairo-ft-scaled-font-unlock-face"/>cairo_ft_scaled_font_unlock_face ()</title>
+<indexterm><primary>cairo_ft_scaled_font_unlock_face</primary></indexterm><programlisting><link linkend="void">void</link> cairo_ft_scaled_font_unlock_face
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);</programlisting>
<para>
Releases a face obtained with <link linkend="cairo-ft-font-lock-face"><function>cairo_ft_font_lock_face()</function></link>. See the
documentation for that function for full details.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>ft_font</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the FreeType font backend. Such an
- object can be created with <link linkend="cairo-ft-font-create"><function>cairo_ft_font_create()</function></link> or
- <link linkend="cairo-ft-font-create-for-ft-face"><function>cairo_ft_font_create_for_ft_face()</function></link>. On some platforms the font from
- <link linkend="cairo-current-font"><function>cairo_current_font()</function></link> will also be a FreeType font, but using this
- functionality with fonts you don't create yourself is not
- recommended.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-ft-font-get-pattern"/>cairo_ft_font_get_pattern ()</title>
-<indexterm><primary>cairo_ft_font_get_pattern</primary></indexterm><programlisting><link linkend="FcPattern">FcPattern</link>* cairo_ft_font_get_pattern (<link linkend="cairo-font-t">cairo_font_t</link> *ft_font);</programlisting>
-<para>
-<link linkend="cairo-ft-font-get-pattern"><function>cairo_ft_font_get_pattern()</function></link> gets the <link linkend="FcPattern"><type>FcPattern</type></link> for a FreeType
-backend font.
-</para>
-<para>
-Return value: The <link linkend="FcPattenr"><type>FcPattenr</type></link> for <parameter>font</parameter>. The return value is owned
- by the font, so you must not modify it, and must call
- <link linkend="FcPatternReference"><function>FcPatternReference()</function></link> to keep a persistant reference to the
- pattern. If the font was created with <link linkend="cairo-ft-font-create-for-ft-face"><function>cairo_ft_font_create_for_ft_face()</function></link></para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>ft_font</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the FreeType font backend. Such an
- object can be created with <link linkend="cairo-ft-font-create"><function>cairo_ft_font_create()</function></link> or
- <link linkend="cairo-ft-font-create-for-ft-face"><function>cairo_ft_font_create_for_ft_face()</function></link>. On some platforms the font from
- <link linkend="cairo-current-font"><function>cairo_current_font()</function></link> will also be a FreeType font, but using this
- functionality with fonts you don't create yourself is not
- recommended.
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara><literal>NULL</literal>.
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> from the FreeType font backend. Such an
+ object can be created by calling <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link> on a
+ FreeType backend font face (see <link linkend="cairo-ft-font-face-create-for-pattern"><function>cairo_ft_font_face_create_for_pattern()</function></link>,
+ <link linkend="cairo-ft-font-face-create-for-face"><function>cairo_ft_font_face_create_for_face()</function></link>).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
diff --git a/doc/public/xml/cairo-glitz.xml b/doc/public/xml/cairo-glitz.xml
index 48a6a72..14994ff 100644
--- a/doc/public/xml/cairo-glitz.xml
+++ b/doc/public/xml/cairo-glitz.xml
@@ -18,8 +18,6 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-glitz">cairo_set_target_glitz</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="glitz-surface-t">glitz_surface_t</link> *surface);
<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-glitz-surface-create">cairo_glitz_surface_create</link> (<link linkend="glitz-surface-t">glitz_surface_t</link> *surface);
</synopsis>
</refsynopsisdiv>
@@ -42,22 +40,6 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-glitz"/>cairo_set_target_glitz ()</title>
-<indexterm><primary>cairo_set_target_glitz</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_glitz (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="glitz-surface-t">glitz_surface_t</link> *surface);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
<title><anchor id="cairo-glitz-surface-create"/>cairo_glitz_surface_create ()</title>
<indexterm><primary>cairo_glitz_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_glitz_surface_create (<link linkend="glitz-surface-t">glitz_surface_t</link> *surface);</programlisting>
<para>
diff --git a/doc/public/xml/cairo-matrix.xml b/doc/public/xml/cairo-matrix.xml
index 8f22a40..e92b533 100644
--- a/doc/public/xml/cairo-matrix.xml
+++ b/doc/public/xml/cairo-matrix.xml
@@ -19,43 +19,39 @@
-typedef <link linkend="cairo-matrix-t">cairo_matrix_t</link>;
-<link linkend="cairo-matrix-t">cairo_matrix_t</link>* <link linkend="cairo-matrix-create">cairo_matrix_create</link> (void);
-<link linkend="void">void</link> <link linkend="cairo-matrix-destroy">cairo_matrix_destroy</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-copy">cairo_matrix_copy</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
- const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *other);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-set-identity">cairo_matrix_set_identity</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-set-affine">cairo_matrix_set_affine</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
- <link linkend="double">double</link> a,
- <link linkend="double">double</link> b,
- <link linkend="double">double</link> c,
- <link linkend="double">double</link> d,
+ <link linkend="cairo-matrix-t">cairo_matrix_t</link>;
+<link linkend="void">void</link> <link linkend="cairo-matrix-init">cairo_matrix_init</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+ <link linkend="double">double</link> xx,
+ <link linkend="double">double</link> yx,
+ <link linkend="double">double</link> xy,
+ <link linkend="double">double</link> yy,
+ <link linkend="double">double</link> x0,
+ <link linkend="double">double</link> y0);
+<link linkend="void">void</link> <link linkend="cairo-matrix-init-identity">cairo_matrix_init_identity</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
+<link linkend="void">void</link> <link linkend="cairo-matrix-init-translate">cairo_matrix_init_translate</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> tx,
<link linkend="double">double</link> ty);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-get-affine">cairo_matrix_get_affine</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
- <link linkend="double">double</link> *a,
- <link linkend="double">double</link> *b,
- <link linkend="double">double</link> *c,
- <link linkend="double">double</link> *d,
- <link linkend="double">double</link> *tx,
- <link linkend="double">double</link> *ty);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-translate">cairo_matrix_translate</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<link linkend="void">void</link> <link linkend="cairo-matrix-init-scale">cairo_matrix_init_scale</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+ <link linkend="double">double</link> sx,
+ <link linkend="double">double</link> sy);
+<link linkend="void">void</link> <link linkend="cairo-matrix-init-rotate">cairo_matrix_init_rotate</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+ <link linkend="double">double</link> radians);
+<link linkend="void">void</link> <link linkend="cairo-matrix-translate">cairo_matrix_translate</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> tx,
<link linkend="double">double</link> ty);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-scale">cairo_matrix_scale</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<link linkend="void">void</link> <link linkend="cairo-matrix-scale">cairo_matrix_scale</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> sx,
<link linkend="double">double</link> sy);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-rotate">cairo_matrix_rotate</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<link linkend="void">void</link> <link linkend="cairo-matrix-rotate">cairo_matrix_rotate</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> radians);
<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-invert">cairo_matrix_invert</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-multiply">cairo_matrix_multiply</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *result,
+<link linkend="void">void</link> <link linkend="cairo-matrix-multiply">cairo_matrix_multiply</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *result,
const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *a,
const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *b);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-transform-distance">cairo_matrix_transform_distance</link>
- (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<link linkend="void">void</link> <link linkend="cairo-matrix-transform-distance">cairo_matrix_transform_distance</link> (const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> *dx,
<link linkend="double">double</link> *dy);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-matrix-transform-point">cairo_matrix_transform_point</link> (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<link linkend="void">void</link> <link linkend="cairo-matrix-transform-point">cairo_matrix_transform_point</link> (const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> *x,
<link linkend="double">double</link> *y);
</synopsis>
@@ -103,7 +99,11 @@ typedef <link linkend="cairo-matrix-t">cairo_matrix_t</link>;
<title>Details</title>
<refsect2>
<title><anchor id="cairo-matrix-t"/>cairo_matrix_t</title>
-<indexterm><primary>cairo_matrix_t</primary></indexterm><programlisting>typedef struct _cairo_matrix cairo_matrix_t;
+<indexterm><primary>cairo_matrix_t</primary></indexterm><programlisting>typedef struct {
+ double xx; double yx;
+ double xy; double yy;
+ double x0; double y0;
+} cairo_matrix_t;
</programlisting>
<para>
A <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> holds an affine transformation, such as a scale,
@@ -112,50 +112,50 @@ rotation, or shear, or a combination of those.</para>
</para></refsect2>
<refsect2>
-<title><anchor id="cairo-matrix-create"/>cairo_matrix_create ()</title>
-<indexterm><primary>cairo_matrix_create</primary></indexterm><programlisting><link linkend="cairo-matrix-t">cairo_matrix_t</link>* cairo_matrix_create (void);</programlisting>
-<para>
-Creates a new identity matrix.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created matrix; free with <link linkend="cairo-matrix-destroy"><function>cairo_matrix_destroy()</function></link>,
- or <literal>NULL</literal> if memory couldn't be allocated.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-matrix-destroy"/>cairo_matrix_destroy ()</title>
-<indexterm><primary>cairo_matrix_destroy</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_destroy (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<title><anchor id="cairo-matrix-init"/>cairo_matrix_init ()</title>
+<indexterm><primary>cairo_matrix_init</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_init (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+ <link linkend="double">double</link> xx,
+ <link linkend="double">double</link> yx,
+ <link linkend="double">double</link> xy,
+ <link linkend="double">double</link> yy,
+ <link linkend="double">double</link> x0,
+ <link linkend="double">double</link> y0);</programlisting>
<para>
-Frees a matrix created with cairo_matrix_create.</para>
+Sets <parameter>matrix</parameter> to be the affine transformation given by
+<parameter>xx</parameter>, <parameter>yx</parameter>, <parameter>xy</parameter>, <parameter>yy</parameter>, <parameter>x0</parameter>, <parameter>y0</parameter>. The transformation is given
+by:
+<programlisting>
+ x_new = xx * x + xy * y + x0;
+ y_new = yx * x + yy * y + y0;
+</programlisting></para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link>
+<listitem><simpara> a cairo_matrix_t
</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-matrix-copy"/>cairo_matrix_copy ()</title>
-<indexterm><primary>cairo_matrix_copy</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_copy (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
- const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *other);</programlisting>
-<para>
-Modifies <parameter>matrix</parameter> to be identical to <parameter>other</parameter>.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link>
+<varlistentry><term><parameter>xx</parameter>&nbsp;:</term>
+<listitem><simpara> xx component of the affine transformation
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>other</parameter>&nbsp;:</term>
-<listitem><simpara> another <link linkend="cairo-"><type>cairo_</type></link>
+<varlistentry><term><parameter>yx</parameter>&nbsp;:</term>
+<listitem><simpara> yx component of the affine transformation
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
+<varlistentry><term><parameter>xy</parameter>&nbsp;:</term>
+<listitem><simpara> xy component of the affine transformation
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>yy</parameter>&nbsp;:</term>
+<listitem><simpara> yy component of the affine transformation
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>x0</parameter>&nbsp;:</term>
+<listitem><simpara> X translation component of the affine transformation
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>y0</parameter>&nbsp;:</term>
+<listitem><simpara> Y translation component of the affine transformation
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-matrix-set-identity"/>cairo_matrix_set_identity ()</title>
-<indexterm><primary>cairo_matrix_set_identity</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_set_identity (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<title><anchor id="cairo-matrix-init-identity"/>cairo_matrix_init_identity ()</title>
+<indexterm><primary>cairo_matrix_init_identity</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_init_identity (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
<para>
Modifies <parameter>matrix</parameter> to be an identity transformation.</para>
<para>
@@ -164,101 +164,79 @@ Modifies <parameter>matrix</parameter> to be an identity transformation.</para>
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link>
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
-</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-matrix-set-affine"/>cairo_matrix_set_affine ()</title>
-<indexterm><primary>cairo_matrix_set_affine</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_set_affine (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
- <link linkend="double">double</link> a,
- <link linkend="double">double</link> b,
- <link linkend="double">double</link> c,
- <link linkend="double">double</link> d,
+<title><anchor id="cairo-matrix-init-translate"/>cairo_matrix_init_translate ()</title>
+<indexterm><primary>cairo_matrix_init_translate</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_init_translate (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> tx,
<link linkend="double">double</link> ty);</programlisting>
<para>
-Sets <parameter>matrix</parameter> to be the affine transformation given by
-<parameter>a</parameter>, b, <parameter>c</parameter>, <parameter>d</parameter>, <parameter>tx</parameter>, <parameter>ty</parameter>. The transformation is given
-by:
-<programlisting>
- x_new = x * a + y * c + tx;
- y_new = x * b + y * d + ty;
-</programlisting></para>
+Initializes <parameter>matrix</parameter> to a transformation that translates by <parameter>tx</parameter> and
+<parameter>ty</parameter> in the X and Y dimensions, respectively.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> a cairo_matrix_t
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>a</parameter>&nbsp;:</term>
-<listitem><simpara> a component of the affine transformation
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>b</parameter>&nbsp;:</term>
-<listitem><simpara> b component of the affine transformation
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>c</parameter>&nbsp;:</term>
-<listitem><simpara> c component of the affine transformation
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>d</parameter>&nbsp;:</term>
-<listitem><simpara> d component of the affine transformation
-</simpara></listitem></varlistentry>
<varlistentry><term><parameter>tx</parameter>&nbsp;:</term>
-<listitem><simpara> X translation component of the affine transformation
+<listitem><simpara> amount to translate in the X direction
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>ty</parameter>&nbsp;:</term>
-<listitem><simpara> Y translation component of the affine transformation
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
+<listitem><simpara> amount to translate in the Y direction
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-matrix-get-affine"/>cairo_matrix_get_affine ()</title>
-<indexterm><primary>cairo_matrix_get_affine</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_get_affine (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
- <link linkend="double">double</link> *a,
- <link linkend="double">double</link> *b,
- <link linkend="double">double</link> *c,
- <link linkend="double">double</link> *d,
- <link linkend="double">double</link> *tx,
- <link linkend="double">double</link> *ty);</programlisting>
+<title><anchor id="cairo-matrix-init-scale"/>cairo_matrix_init_scale ()</title>
+<indexterm><primary>cairo_matrix_init_scale</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_init_scale (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+ <link linkend="double">double</link> sx,
+ <link linkend="double">double</link> sy);</programlisting>
<para>
-Gets the matrix values for the affine tranformation that <parameter>matrix</parameter> represents.
-See <link linkend="cairo-matrix-set-affine"><function>cairo_matrix_set_affine()</function></link>.</para>
+Initializes <parameter>matrix</parameter> to a transformation that scales by <parameter>sx</parameter> and <parameter>sy</parameter>
+in the X and Y dimensions, respectively.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara> a <parameter>cairo_matrix_t</parameter>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>a</parameter>&nbsp;:</term>
-<listitem><simpara> location to store a component of affine transformation, or <literal>NULL</literal>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>b</parameter>&nbsp;:</term>
-<listitem><simpara> location to store b component of affine transformation, or <literal>NULL</literal>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>c</parameter>&nbsp;:</term>
-<listitem><simpara> location to store c component of affine transformation, or <literal>NULL</literal>
+<listitem><simpara> a cairo_matrix_t
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>d</parameter>&nbsp;:</term>
-<listitem><simpara> location to store d component of affine transformation, or <literal>NULL</literal>
+<varlistentry><term><parameter>sx</parameter>&nbsp;:</term>
+<listitem><simpara> scale factor in the X direction
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>tx</parameter>&nbsp;:</term>
-<listitem><simpara> location to store X-translation component of affine transformation, or <literal>NULL</literal>
+<varlistentry><term><parameter>sy</parameter>&nbsp;:</term>
+<listitem><simpara> scale factor in the Y direction
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>ty</parameter>&nbsp;:</term>
-<listitem><simpara> location to store Y-translation component of affine transformation, or <literal>NULL</literal>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-matrix-init-rotate"/>cairo_matrix_init_rotate ()</title>
+<indexterm><primary>cairo_matrix_init_rotate</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_init_rotate (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+ <link linkend="double">double</link> radians);</programlisting>
+<para>
+Initialized <parameter>matrix</parameter> to a transformation that rotates by <parameter>radians</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo_matrix_t
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
+<varlistentry><term><parameter>radians</parameter>&nbsp;:</term>
+<listitem><simpara> angle of rotation, in radians. The direction of rotation
+is defined such that positive angles rotate in the direction from
+the positive X axis toward the positive Y axis. With the default
+axis orientation of cairo, positive angles rotate in a clockwise
+direction.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-matrix-translate"/>cairo_matrix_translate ()</title>
-<indexterm><primary>cairo_matrix_translate</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_translate (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<indexterm><primary>cairo_matrix_translate</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_translate (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> tx,
<link linkend="double">double</link> ty);</programlisting>
<para>
Applies a translation by <parameter>tx</parameter>, <parameter>ty</parameter> to the transformation in
-<parameter>matrix</parameter>. The new transformation is given by first translating by
-<parameter>tx</parameter>, <parameter>ty</parameter> then applying the original transformation</para>
+<parameter>matrix</parameter>. The effect of the new transformation is to first translate
+the coordinates by <parameter>tx</parameter> and <parameter>ty</parameter>, then apply the original transformation
+to the coordinates.</para>
<para>
</para><variablelist role="params">
@@ -266,23 +244,21 @@ Applies a translation by <parameter>tx</parameter>, <parameter>ty</parameter> to
<listitem><simpara> a cairo_matrix_t
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>tx</parameter>&nbsp;:</term>
-<listitem><simpara> amount to rotate in the X direction
+<listitem><simpara> amount to translate in the X direction
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>ty</parameter>&nbsp;:</term>
-<listitem><simpara> amount to rotate in the Y direction
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
+<listitem><simpara> amount to translate in the Y direction
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-matrix-scale"/>cairo_matrix_scale ()</title>
-<indexterm><primary>cairo_matrix_scale</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_scale (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<indexterm><primary>cairo_matrix_scale</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_scale (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> sx,
<link linkend="double">double</link> sy);</programlisting>
<para>
-Applies scaling by <parameter>tx</parameter>, <parameter>ty</parameter> to the transformation in
-<parameter>matrix</parameter>. The new transformation is given by first scaling by <parameter>sx</parameter>
-and <parameter>sy</parameter> then applying the original transformation</para>
+Applies scaling by <parameter>tx</parameter>, <parameter>ty</parameter> to the transformation in <parameter>matrix</parameter>. The
+effect of the new transformation is to first scale the coordinates
+by <parameter>sx</parameter> and <parameter>sy</parameter>, then apply the original transformation to the coordinates.</para>
<para>
</para><variablelist role="params">
@@ -290,22 +266,21 @@ and <parameter>sy</parameter> then applying the original transformation</para>
<listitem><simpara> a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sx</parameter>&nbsp;:</term>
-<listitem><simpara> Scale factor in the X direction
+<listitem><simpara> scale factor in the X direction
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sy</parameter>&nbsp;:</term>
-<listitem><simpara> Scale factor in the Y direction
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
+<listitem><simpara> scale factor in the Y direction
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-matrix-rotate"/>cairo_matrix_rotate ()</title>
-<indexterm><primary>cairo_matrix_rotate</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_rotate (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<indexterm><primary>cairo_matrix_rotate</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_rotate (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> radians);</programlisting>
<para>
Applies rotation by <parameter>radians</parameter> to the transformation in
-<parameter>matrix</parameter>. The new transformation is given by first rotating by
-<parameter>radians</parameter> then applying the original transformation</para>
+<parameter>matrix</parameter>. The effect of the new transformation is to first rotate the
+coordinates by <parameter>radians</parameter>, then apply the original transformation
+to the coordinates.</para>
<para>
</para><variablelist role="params">
@@ -313,13 +288,11 @@ Applies rotation by <parameter>radians</parameter> to the transformation in
<listitem><simpara> a <parameter>cairo_matrix_t</parameter>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>radians</parameter>&nbsp;:</term>
-<listitem><simpara> angle of rotation, in radians. Angles are defined
- so that an angle of 90 degrees (<literal>M_PI</literal> radians) rotates the
- positive X axis into the positive Y axis. With the default
- Cairo choice of axis orientation, positive rotations are
- clockwise.
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
+<listitem><simpara> angle of rotation, in radians. The direction of rotation
+is defined such that positive angles rotate in the direction from
+the positive X axis toward the positive Y axis. With the default
+axis orientation of cairo, positive angles rotate in a clockwise
+direction.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -345,14 +318,18 @@ Returns: If <parameter>matrix</parameter> has an inverse, modifies <parameter>ma
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-matrix-multiply"/>cairo_matrix_multiply ()</title>
-<indexterm><primary>cairo_matrix_multiply</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_multiply (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *result,
+<indexterm><primary>cairo_matrix_multiply</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_multiply (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *result,
const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *a,
const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *b);</programlisting>
<para>
Multiplies the affine transformations in <parameter>a</parameter> and <parameter>b</parameter> together
-and stores the result in <parameter>result</parameter>. The resulting transformation
-is given by first applying the transformation in <parameter>b</parameter> then
-applying the transformation in <parameter>a</parameter>.</para>
+and stores the result in <parameter>result</parameter>. The effect of the resulting
+transformation is to first apply the transformation in <parameter>a</parameter> to the
+coordinates and then apply the transformation in <parameter>b</parameter> to the
+coordinates.
+</para>
+<para>
+It is allowable for <parameter>result</parameter> to be identical to either <parameter>a</parameter> or <parameter>b</parameter>.</para>
<para>
</para><variablelist role="params">
@@ -365,18 +342,17 @@ applying the transformation in <parameter>a</parameter>.</para>
<varlistentry><term><parameter>b</parameter>&nbsp;:</term>
<listitem><simpara> a <parameter>cairo_matrix_t</parameter>
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
-</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-matrix-transform-distance"/>cairo_matrix_transform_distance ()</title>
-<indexterm><primary>cairo_matrix_transform_distance</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_transform_distance
- (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<indexterm><primary>cairo_matrix_transform_distance</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_transform_distance (const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> *dx,
<link linkend="double">double</link> *dy);</programlisting>
<para>
-Transforms the vector (<parameter>dx</parameter>,<parameter>dy</parameter>) by <parameter>matrix</parameter>. Translation is
-ignored. In terms of the components of the affine transformation:
+Transforms the distance vector (<parameter>dx</parameter>,<parameter>dy</parameter>) by <parameter>matrix</parameter>. This is
+similar to <link linkend="cairo-matrix-transform"><function>cairo_matrix_transform()</function></link> except that the translation
+components of the transformation are ignored. The calculation of
+the returned vector is as follows:
</para>
<para>
<programlisting>
@@ -396,22 +372,21 @@ to (<parameter>x2</parameter>,<parameter>y2</parameter>) then (<parameter>x1</pa
<listitem><simpara> a <parameter>cairo_matrix_t</parameter>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dx</parameter>&nbsp;:</term>
-<listitem><simpara> a distance in the X direction. An in/out parameter
+<listitem><simpara> X component of a distance vector. An in/out parameter
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dy</parameter>&nbsp;:</term>
-<listitem><simpara> a distance in the Y direction. An in/out parameter
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
+<listitem><simpara> Y component of a distance vector. An in/out parameter
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-matrix-transform-point"/>cairo_matrix_transform_point ()</title>
-<indexterm><primary>cairo_matrix_transform_point</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_matrix_transform_point (<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
+<indexterm><primary>cairo_matrix_transform_point</primary></indexterm><programlisting><link linkend="void">void</link> cairo_matrix_transform_point (const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix,
<link linkend="double">double</link> *x,
<link linkend="double">double</link> *y);</programlisting>
<para>
Transforms the point (<parameter>x</parameter>, <parameter>y</parameter>) by <parameter>matrix</parameter>.</para>
<para>
+
</para><variablelist role="params">
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara> a <parameter>cairo_matrix_t</parameter>
@@ -422,8 +397,6 @@ Transforms the point (<parameter>x</parameter>, <parameter>y</parameter>) by <pa
<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
<listitem><simpara> Y position. An in/out parameter
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal>, always.
-</simpara></listitem></varlistentry>
</variablelist></refsect2>
</refsect1>
diff --git a/doc/public/xml/cairo-pattern.xml b/doc/public/xml/cairo-pattern.xml
index 307dabd..95103d5 100644
--- a/doc/public/xml/cairo-pattern.xml
+++ b/doc/public/xml/cairo-pattern.xml
@@ -35,21 +35,29 @@ typedef <link linkend="cairo-pattern-t">cairo_pattern_t</link>;
<link linkend="double">double</link> radius1);
<link linkend="void">void</link> <link linkend="cairo-pattern-reference">cairo_pattern_reference</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);
<link linkend="void">void</link> <link linkend="cairo-pattern-destroy">cairo_pattern_destroy</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-pattern-add-color-stop">cairo_pattern_add_color_stop</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-pattern-status">cairo_pattern_status</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);
+<link linkend="void">void</link> <link linkend="cairo-pattern-add-color-stop-rgb">cairo_pattern_add_color_stop_rgb</link>
+ (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+ <link linkend="double">double</link> offset,
+ <link linkend="double">double</link> red,
+ <link linkend="double">double</link> green,
+ <link linkend="double">double</link> blue);
+<link linkend="void">void</link> <link linkend="cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</link>
+ (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="double">double</link> offset,
<link linkend="double">double</link> red,
<link linkend="double">double</link> green,
<link linkend="double">double</link> blue,
<link linkend="double">double</link> alpha);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-pattern-set-matrix">cairo_pattern_set_matrix</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-pattern-get-matrix">cairo_pattern_get_matrix</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<link linkend="void">void</link> <link linkend="cairo-pattern-set-matrix">cairo_pattern_set_matrix</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
+<link linkend="void">void</link> <link linkend="cairo-pattern-get-matrix">cairo_pattern_get_matrix</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-pattern-set-extend">cairo_pattern_set_extend</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<link linkend="void">void</link> <link linkend="cairo-pattern-set-extend">cairo_pattern_set_extend</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="cairo-extend-t">cairo_extend_t</link> extend);
<link linkend="cairo-extend-t">cairo_extend_t</link> <link linkend="cairo-pattern-get-extend">cairo_pattern_get_extend</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-pattern-set-filter">cairo_pattern_set_filter</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<link linkend="void">void</link> <link linkend="cairo-pattern-set-filter">cairo_pattern_set_filter</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="cairo-filter-t">cairo_filter_t</link> filter);
<link linkend="cairo-filter-t">cairo_filter_t</link> <link linkend="cairo-pattern-get-filter">cairo_pattern_get_filter</link> (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);
</synopsis>
@@ -181,8 +189,53 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-pattern-add-color-stop"/>cairo_pattern_add_color_stop ()</title>
-<indexterm><primary>cairo_pattern_add_color_stop</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_pattern_add_color_stop (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<title><anchor id="cairo-pattern-status"/>cairo_pattern_status ()</title>
+<indexterm><primary>cairo_pattern_status</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_pattern_status (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);</programlisting>
+<para>
+Checks whether an error has previously occurred for this
+pattern.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>pattern</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal> or <literal>CAIRO_STATUS_NO_MEMORY</literal>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-pattern-add-color-stop-rgb"/>cairo_pattern_add_color_stop_rgb ()</title>
+<indexterm><primary>cairo_pattern_add_color_stop_rgb</primary></indexterm><programlisting><link linkend="void">void</link> cairo_pattern_add_color_stop_rgb
+ (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+ <link linkend="double">double</link> offset,
+ <link linkend="double">double</link> red,
+ <link linkend="double">double</link> green,
+ <link linkend="double">double</link> blue);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>pattern</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>red</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>green</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>blue</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-pattern-add-color-stop-rgba"/>cairo_pattern_add_color_stop_rgba ()</title>
+<indexterm><primary>cairo_pattern_add_color_stop_rgba</primary></indexterm><programlisting><link linkend="void">void</link> cairo_pattern_add_color_stop_rgba
+ (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="double">double</link> offset,
<link linkend="double">double</link> red,
<link linkend="double">double</link> green,
@@ -208,16 +261,14 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>alpha</parameter>&nbsp;:</term>
<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-pattern-set-matrix"/>cairo_pattern_set_matrix ()</title>
-<indexterm><primary>cairo_pattern_set_matrix</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_pattern_set_matrix (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<indexterm><primary>cairo_pattern_set_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_pattern_set_matrix (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
<para>
</para><variablelist role="params">
@@ -226,15 +277,13 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-pattern-get-matrix"/>cairo_pattern_get_matrix ()</title>
-<indexterm><primary>cairo_pattern_get_matrix</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_pattern_get_matrix (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<indexterm><primary>cairo_pattern_get_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_pattern_get_matrix (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
<para>
@@ -245,10 +294,6 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-extend-t"/>enum cairo_extend_t</title>
@@ -263,7 +308,7 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
</para></refsect2>
<refsect2>
<title><anchor id="cairo-pattern-set-extend"/>cairo_pattern_set_extend ()</title>
-<indexterm><primary>cairo_pattern_set_extend</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_pattern_set_extend (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<indexterm><primary>cairo_pattern_set_extend</primary></indexterm><programlisting><link linkend="void">void</link> cairo_pattern_set_extend (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="cairo-extend-t">cairo_extend_t</link> extend);</programlisting>
<para>
@@ -273,8 +318,6 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>extend</parameter>&nbsp;:</term>
<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
@@ -295,7 +338,7 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-pattern-set-filter"/>cairo_pattern_set_filter ()</title>
-<indexterm><primary>cairo_pattern_set_filter</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_pattern_set_filter (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
+<indexterm><primary>cairo_pattern_set_filter</primary></indexterm><programlisting><link linkend="void">void</link> cairo_pattern_set_filter (<link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern,
<link linkend="cairo-filter-t">cairo_filter_t</link> filter);</programlisting>
<para>
@@ -305,8 +348,6 @@ enum <link linkend="cairo-extend-t">cairo_extend_t</link>;
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>filter</parameter>&nbsp;:</term>
<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
diff --git a/doc/public/xml/cairo-pdf.xml b/doc/public/xml/cairo-pdf.xml
index 6d5801a..7f775da 100644
--- a/doc/public/xml/cairo-pdf.xml
+++ b/doc/public/xml/cairo-pdf.xml
@@ -18,17 +18,17 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-pdf">cairo_set_target_pdf</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);
-<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-pdf-surface-create">cairo_pdf_surface_create</link> (<link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-pdf-surface-create">cairo_pdf_surface_create</link> (const <link linkend="char">char</link> *filename,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-pdf-surface-create-for-stream">cairo_pdf_surface_create_for_stream</link>
+ (<link linkend="cairo-write-func-t">cairo_write_func_t</link> write_func,
+ <link linkend="void">void</link> *closure,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);
+<link linkend="void">void</link> <link linkend="cairo-pdf-surface-set-dpi">cairo_pdf_surface_set_dpi</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x_dpi,
+ <link linkend="double">double</link> y_dpi);
</synopsis>
</refsynopsisdiv>
@@ -50,63 +50,70 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-pdf"/>cairo_set_target_pdf ()</title>
-<indexterm><primary>cairo_set_target_pdf</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_pdf (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);</programlisting>
+<title><anchor id="cairo-pdf-surface-create"/>cairo_pdf_surface_create ()</title>
+<indexterm><primary>cairo_pdf_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_pdf_surface_create (const <link linkend="char">char</link> *filename,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);</programlisting>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>file</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width_inches</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>width_in_points</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height_inches</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>height_in_points</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>x_pixels_per_inch</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>y_pixels_per_inch</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-pdf-surface-create"/>cairo_pdf_surface_create ()</title>
-<indexterm><primary>cairo_pdf_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_pdf_surface_create (<link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);</programlisting>
+<title><anchor id="cairo-pdf-surface-create-for-stream"/>cairo_pdf_surface_create_for_stream ()</title>
+<indexterm><primary>cairo_pdf_surface_create_for_stream</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_pdf_surface_create_for_stream
+ (<link linkend="cairo-write-func-t">cairo_write_func_t</link> write_func,
+ <link linkend="void">void</link> *closure,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);</programlisting>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>file</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>write_func</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width_inches</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height_inches</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>width_in_points</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>x_pixels_per_inch</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>height_in_points</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>y_pixels_per_inch</parameter>&nbsp;:</term>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-pdf-surface-set-dpi"/>cairo_pdf_surface_set_dpi ()</title>
+<indexterm><primary>cairo_pdf_surface_set_dpi</primary></indexterm><programlisting><link linkend="void">void</link> cairo_pdf_surface_set_dpi (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x_dpi,
+ <link linkend="double">double</link> y_dpi);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+<varlistentry><term><parameter>x_dpi</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>y_dpi</parameter>&nbsp;:</term>
+<listitem><simpara>
</simpara></listitem></varlistentry>
diff --git a/doc/public/xml/cairo-png.xml b/doc/public/xml/cairo-png.xml
index f4021b4..0de5dea 100644
--- a/doc/public/xml/cairo-png.xml
+++ b/doc/public/xml/cairo-png.xml
@@ -18,15 +18,17 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-png">cairo_set_target_png</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);
-<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-png-surface-create">cairo_png_surface_create</link> (<link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-image-surface-create-from-png">cairo_image_surface_create_from_png</link>
+ (const <link linkend="char">char</link> *filename);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-image-surface-create-from-png-stream">cairo_image_surface_create_from_png_stream</link>
+ (<link linkend="cairo-read-func-t">cairo_read_func_t</link> read_func,
+ <link linkend="void">void</link> *closure);
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-write-to-png">cairo_surface_write_to_png</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ const <link linkend="char">char</link> *filename);
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-write-to-png-stream">cairo_surface_write_to_png_stream</link>
+ (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="cairo-write-func-t">cairo_write_func_t</link> write_func,
+ <link linkend="void">void</link> *closure);
</synopsis>
</refsynopsisdiv>
@@ -48,57 +50,94 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-png"/>cairo_set_target_png ()</title>
-<indexterm><primary>cairo_set_target_png</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_png (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);</programlisting>
+<title><anchor id="cairo-image-surface-create-from-png"/>cairo_image_surface_create_from_png ()</title>
+<indexterm><primary>cairo_image_surface_create_from_png</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_image_surface_create_from_png
+ (const <link linkend="char">char</link> *filename);</programlisting>
+<para>
+Creates a new image surface and initializes the contents to the
+given PNG file.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> name of PNG file to load
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>file</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a new <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> initialized with the contents
+of the PNG file or <literal>NULL</literal> if the file is not a valid PNG file or
+memory could not be allocated for the operation.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
-<listitem><simpara>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-image-surface-create-from-png-stream"/>cairo_image_surface_create_from_png_stream ()</title>
+<indexterm><primary>cairo_image_surface_create_from_png_stream</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_image_surface_create_from_png_stream
+ (<link linkend="cairo-read-func-t">cairo_read_func_t</link> read_func,
+ <link linkend="void">void</link> *closure);</programlisting>
+<para>
+Creates a new image surface from PNG data read incrementally
+via the <parameter>read_func</parameter> function.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>read_func</parameter>&nbsp;:</term>
+<listitem><simpara> function called to read the data of the file
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
+<listitem><simpara> data to pass to <parameter>read_func</parameter>.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a new <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> initialized with the contents
+of the PNG file or <literal>NULL</literal> if the data read is not a valid PNG image or
+memory could not be allocated for the operation.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-png-surface-create"/>cairo_png_surface_create ()</title>
-<indexterm><primary>cairo_png_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_png_surface_create (<link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);</programlisting>
+<title><anchor id="cairo-surface-write-to-png"/>cairo_surface_write_to_png ()</title>
+<indexterm><primary>cairo_surface_write_to_png</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_write_to_png (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ const <link linkend="char">char</link> *filename);</programlisting>
+<para>
+Writes the contents of <parameter>surface</parameter> to a new file <parameter>filename</parameter> as a PNG
+image.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>file</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> with pixel contents
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> the name of a file to write to
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> CAIRO_STATUS_SUCCESS if the PNG file was written
+successfully. Otherwise, CAIRO_STATUS_NO_MEMORY if memory could not
+be allocated for the operation or
+CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have
+pixel contents, or CAIRO_STATUS_WRITE_ERROR if an I/O error occurs
+while attempting to write the file.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-surface-write-to-png-stream"/>cairo_surface_write_to_png_stream ()</title>
+<indexterm><primary>cairo_surface_write_to_png_stream</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_write_to_png_stream
+ (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="cairo-write-func-t">cairo_write_func_t</link> write_func,
+ <link linkend="void">void</link> *closure);</programlisting>
+<para>
+Writes the image surface to the write function.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> with pixel contents
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>write_func</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
+<listitem><simpara> closure data for the write function
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> CAIRO_STATUS_SUCCESS if the PNG file was written
+successfully. Otherwise, CAIRO_STATUS_NO_MEMORY is returned if
+memory could not be allocated for the operation,
+CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have
+pixel contents.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
diff --git a/doc/public/xml/cairo-ps.xml b/doc/public/xml/cairo-ps.xml
index 7d7219c..5c17f9f 100644
--- a/doc/public/xml/cairo-ps.xml
+++ b/doc/public/xml/cairo-ps.xml
@@ -18,17 +18,17 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-ps">cairo_set_target_ps</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);
-<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-ps-surface-create">cairo_ps_surface_create</link> (<link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-ps-surface-create">cairo_ps_surface_create</link> (const <link linkend="char">char</link> *filename,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-ps-surface-create-for-stream">cairo_ps_surface_create_for_stream</link>
+ (<link linkend="cairo-write-func-t">cairo_write_func_t</link> write_func,
+ <link linkend="void">void</link> *closure,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);
+<link linkend="void">void</link> <link linkend="cairo-ps-surface-set-dpi">cairo_ps_surface_set_dpi</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x_dpi,
+ <link linkend="double">double</link> y_dpi);
</synopsis>
</refsynopsisdiv>
@@ -50,68 +50,70 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-ps"/>cairo_set_target_ps ()</title>
-<indexterm><primary>cairo_set_target_ps</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_ps (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);</programlisting>
-<para>
-Directs output for a <link linkend="cairo-t"><type>cairo_t</type></link> to a postscript file. The file must
-be kept open until the <link linkend="cairo-t"><type>cairo_t</type></link> is destroyed or set to have a
-different target, and then must be closed by the application.</para>
+<title><anchor id="cairo-ps-surface-create"/>cairo_ps_surface_create ()</title>
+<indexterm><primary>cairo_ps_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_ps_surface_create (const <link linkend="char">char</link> *filename,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);</programlisting>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>file</parameter>&nbsp;:</term>
-<listitem><simpara> an open, writeable file
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width_inches</parameter>&nbsp;:</term>
-<listitem><simpara> width of the output page, in inches
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height_inches</parameter>&nbsp;:</term>
-<listitem><simpara> height of the output page, in inches
+<varlistentry><term><parameter>width_in_points</parameter>&nbsp;:</term>
+<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>x_pixels_per_inch</parameter>&nbsp;:</term>
-<listitem><simpara> X resolution to use for image fallbacks;
- not all Cairo drawing can be represented in a postscript
- file, so Cairo will write out images for some portions
- of the output.
+<varlistentry><term><parameter>height_in_points</parameter>&nbsp;:</term>
+<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>y_pixels_per_inch</parameter>&nbsp;:</term>
-<listitem><simpara> Y resolution to use for image fallbacks.
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-ps-surface-create"/>cairo_ps_surface_create ()</title>
-<indexterm><primary>cairo_ps_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_ps_surface_create (<link linkend="FILE:CAPS">FILE</link> *file,
- <link linkend="double">double</link> width_inches,
- <link linkend="double">double</link> height_inches,
- <link linkend="double">double</link> x_pixels_per_inch,
- <link linkend="double">double</link> y_pixels_per_inch);</programlisting>
+<title><anchor id="cairo-ps-surface-create-for-stream"/>cairo_ps_surface_create_for_stream ()</title>
+<indexterm><primary>cairo_ps_surface_create_for_stream</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_ps_surface_create_for_stream
+ (<link linkend="cairo-write-func-t">cairo_write_func_t</link> write_func,
+ <link linkend="void">void</link> *closure,
+ <link linkend="double">double</link> width_in_points,
+ <link linkend="double">double</link> height_in_points);</programlisting>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>file</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>write_func</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width_inches</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>width_in_points</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height_inches</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>height_in_points</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>x_pixels_per_inch</parameter>&nbsp;:</term>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-ps-surface-set-dpi"/>cairo_ps_surface_set_dpi ()</title>
+<indexterm><primary>cairo_ps_surface_set_dpi</primary></indexterm><programlisting><link linkend="void">void</link> cairo_ps_surface_set_dpi (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x_dpi,
+ <link linkend="double">double</link> y_dpi);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>y_pixels_per_inch</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>x_dpi</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+<varlistentry><term><parameter>y_dpi</parameter>&nbsp;:</term>
+<listitem><simpara>
</simpara></listitem></varlistentry>
diff --git a/doc/public/xml/cairo-quartz.xml b/doc/public/xml/cairo-quartz.xml
index eda822f..21c597c 100644
--- a/doc/public/xml/cairo-quartz.xml
+++ b/doc/public/xml/cairo-quartz.xml
@@ -18,10 +18,6 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-quartz-context">cairo_set_target_quartz_context</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="CGContextRef">CGContextRef</link> context,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);
<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-quartz-surface-create">cairo_quartz_surface_create</link>
(<link linkend="CGContextRef">CGContextRef</link> context,
<link linkend="int">int</link> width,
@@ -47,30 +43,6 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-quartz-context"/>cairo_set_target_quartz_context ()</title>
-<indexterm><primary>cairo_set_target_quartz_context</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_quartz_context (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="CGContextRef">CGContextRef</link> context,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>context</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
<title><anchor id="cairo-quartz-surface-create"/>cairo_quartz_surface_create ()</title>
<indexterm><primary>cairo_quartz_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_quartz_surface_create
(<link linkend="CGContextRef">CGContextRef</link> context,
diff --git a/doc/public/xml/cairo-surface.xml b/doc/public/xml/cairo-surface.xml
index a029810..931efe2 100644
--- a/doc/public/xml/cairo-surface.xml
+++ b/doc/public/xml/cairo-surface.xml
@@ -19,12 +19,6 @@
typedef <link linkend="cairo-surface-t">cairo_surface_t</link>;
-<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-surface-create-for-image">cairo_surface_create_for_image</link>
- (<link linkend="char">char</link> *data,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height,
- <link linkend="int">int</link> stride);
<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-surface-create-similar">cairo_surface_create_similar</link>
(<link linkend="cairo-surface-t">cairo_surface_t</link> *other,
<link linkend="cairo-format-t">cairo_format_t</link> format,
@@ -32,15 +26,16 @@ typedef <link linkend="cairo-surface-t">cairo_surface_t</link>;
<link linkend="int">int</link> height);
<link linkend="void">void</link> <link linkend="cairo-surface-reference">cairo_surface_reference</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);
<link linkend="void">void</link> <link linkend="cairo-surface-destroy">cairo_surface_destroy</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-set-repeat">cairo_surface_set_repeat</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="int">int</link> repeat);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-set-matrix">cairo_surface_set_matrix</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-get-matrix">cairo_surface_get_matrix</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-set-filter">cairo_surface_set_filter</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="cairo-filter-t">cairo_filter_t</link> filter);
-<link linkend="cairo-filter-t">cairo_filter_t</link> <link linkend="cairo-surface-get-filter">cairo_surface_get_filter</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-finish">cairo_surface_finish</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-surface-set-user-data">cairo_surface_set_user_data</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key,
+ <link linkend="void">void</link> *user_data,
+ <link linkend="cairo-destroy-func-t">cairo_destroy_func_t</link> destroy);
+<link linkend="void">void</link>* <link linkend="cairo-surface-get-user-data">cairo_surface_get_user_data</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key);
+<link linkend="void">void</link> <link linkend="cairo-surface-set-device-offset">cairo_surface_set_device_offset</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x_offset,
+ <link linkend="double">double</link> y_offset);
</synopsis>
</refsynopsisdiv>
@@ -79,37 +74,6 @@ Memory management of <link linkend="cairo-surface-t"><type>cairo_surface_t</type
</para></refsect2>
<refsect2>
-<title><anchor id="cairo-surface-create-for-image"/>cairo_surface_create_for_image ()</title>
-<indexterm><primary>cairo_surface_create_for_image</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_surface_create_for_image
- (<link linkend="char">char</link> *data,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height,
- <link linkend="int">int</link> stride);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>stride</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
<title><anchor id="cairo-surface-create-similar"/>cairo_surface_create_similar ()</title>
<indexterm><primary>cairo_surface_create_similar</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_surface_create_similar
(<link linkend="cairo-surface-t">cairo_surface_t</link> *other,
@@ -161,89 +125,115 @@ Memory management of <link linkend="cairo-surface-t"><type>cairo_surface_t</type
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-surface-set-repeat"/>cairo_surface_set_repeat ()</title>
-<indexterm><primary>cairo_surface_set_repeat</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_set_repeat (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="int">int</link> repeat);</programlisting>
+<title><anchor id="cairo-surface-finish"/>cairo_surface_finish ()</title>
+<indexterm><primary>cairo_surface_finish</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_finish (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);</programlisting>
+<para>
+This function finishes the surface and drops all references to
+external resources. For example, for the Xlib backend it means
+that cairo will no longer access the drawable, which can be freed.
+After calling <link linkend="cairo-surface-finish"><function>cairo_surface_finish()</function></link> the only valid operations on a
+surface are getting and setting user data and referencing and
+destroying it. Further drawing the the surface will not affect the
+surface but set the surface status to
+CAIRO_STATUS_SURFACE_FINISHED.
+</para>
+<para>
+When the last call to <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> decreases the
+reference count to zero, cairo will call <link linkend="cairo-surface-finish"><function>cairo_surface_finish()</function></link> if
+it hasn't been called already, before freeing the resources
+associated with the surface.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> the <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> to finish
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>repeat</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> CAIRO_STATUS_SUCCESS if the surface was finished
+successfully, otherwise CAIRO_STATUS_NO_MEMORY or
+CAIRO_STATUS_WRITE_ERROR.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-surface-set-matrix"/>cairo_surface_set_matrix ()</title>
-<indexterm><primary>cairo_surface_set_matrix</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_set_matrix (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<title><anchor id="cairo-surface-set-user-data"/>cairo_surface_set_user_data ()</title>
+<indexterm><primary>cairo_surface_set_user_data</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_set_user_data (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key,
+ <link linkend="void">void</link> *user_data,
+ <link linkend="cairo-destroy-func-t">cairo_destroy_func_t</link> destroy);</programlisting>
+<para>
+Attach user data to <parameter>surface</parameter>. To remove user data from a surface,
+call this function with the key that was used to set it and <literal>NULL</literal>
+for <parameter>data</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>key</parameter>&nbsp;:</term>
+<listitem><simpara> the address of a <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> to attach the user data to
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><parameter>user_data</parameter>&nbsp;:</term>
+<listitem><simpara> the user data to attach to the surface
</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-surface-get-matrix"/>cairo_surface_get_matrix ()</title>
-<indexterm><primary>cairo_surface_get_matrix</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_get_matrix (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>destroy</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> which will be called when the
+surface is destroyed or when new user data is attached using the
+same key.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal> or <literal>CAIRO_STATUS_NO_MEMORY</literal> if a
+slot could not be allocated for the user data.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-surface-set-filter"/>cairo_surface_set_filter ()</title>
-<indexterm><primary>cairo_surface_set_filter</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_surface_set_filter (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="cairo-filter-t">cairo_filter_t</link> filter);</programlisting>
+<title><anchor id="cairo-surface-get-user-data"/>cairo_surface_get_user_data ()</title>
+<indexterm><primary>cairo_surface_get_user_data</primary></indexterm><programlisting><link linkend="void">void</link>* cairo_surface_get_user_data (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ const <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link> *key);</programlisting>
+<para>
+Return user data previously attached to <parameter>surface</parameter> using the specified
+key. If no user data has been attached with the given key this
+function returns <literal>NULL</literal>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>filter</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>key</parameter>&nbsp;:</term>
+<listitem><simpara> the address of the <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> the user data was
+attached to
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the user data previously attached or <literal>NULL</literal>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-surface-get-filter"/>cairo_surface_get_filter ()</title>
-<indexterm><primary>cairo_surface_get_filter</primary></indexterm><programlisting><link linkend="cairo-filter-t">cairo_filter_t</link> cairo_surface_get_filter (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);</programlisting>
+<title><anchor id="cairo-surface-set-device-offset"/>cairo_surface_set_device_offset ()</title>
+<indexterm><primary>cairo_surface_set_device_offset</primary></indexterm><programlisting><link linkend="void">void</link> cairo_surface_set_device_offset (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x_offset,
+ <link linkend="double">double</link> y_offset);</programlisting>
+<para>
+Sets an offset that is added to the device coordinates determined
+by the CTM when drawing to <parameter>surface</parameter>. One use case for this function
+is when we want to create a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> that redirects drawing
+for a portion of an onscreen surface to an offscreen surface in a
+way that is completely invisible to the user of the cairo
+API. Setting a transformation via <link linkend="cairo-translate"><function>cairo_translate()</function></link> isn't
+sufficient to do this, since functions like
+<link linkend="cairo-device-to-user"><function>cairo_device_to_user()</function></link> will expose the hidden offset.
+</para>
+<para>
+Note that the offset only affects drawing to the surface, not using
+the surface in a surface pattern.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><parameter>x_offset</parameter>&nbsp;:</term>
+<listitem><simpara> the offset in the X direction, in device units
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>y_offset</parameter>&nbsp;:</term>
+<listitem><simpara> the offset in the Y direction, in device units
</simpara></listitem></varlistentry>
</variablelist></refsect2>
diff --git a/doc/public/xml/cairo-win3.xml b/doc/public/xml/cairo-win3.xml
deleted file mode 100644
index 91cbcd6..0000000
--- a/doc/public/xml/cairo-win3.xml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<refentry id="cairo-Microsoft-Windows-Backend">
-<refmeta>
-<refentrytitle>Microsoft Windows Backend</refentrytitle>
-<manvolnum>3</manvolnum>
-<refmiscinfo>CAIRO Library</refmiscinfo>
-</refmeta>
-
-<refnamediv>
-<refname>Microsoft Windows Backend</refname><refpurpose></refpurpose>
-</refnamediv>
-
-<refsynopsisdiv><title>Synopsis</title>
-
-<synopsis>
-
-
-
-<link linkend="void">void</link> <link linkend="cairo-set-target-win32">cairo_set_target_win32</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="HDC:CAPS">HDC</link> hdc);
-<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-win32-surface-create">cairo_win32_surface_create</link> (<link linkend="HDC:CAPS">HDC</link> hdc);
-<link linkend="cairo-font-t">cairo_font_t</link>* <link linkend="cairo-win32-font-create-for-logfontw">cairo_win32_font_create_for_logfontw</link>
- (<link linkend="LOGFONTW:CAPS">LOGFONTW</link> *logfont,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-win32-font-select-font">cairo_win32_font_select_font</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font,
- <link linkend="HDC:CAPS">HDC</link> hdc);
-<link linkend="void">void</link> <link linkend="cairo-win32-font-done-font">cairo_win32_font_done_font</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font);
-<link linkend="double">double</link> <link linkend="cairo-win32-font-get-scale-factor">cairo_win32_font_get_scale_factor</link>
- (<link linkend="cairo-font-t">cairo_font_t</link> *font);
-</synopsis>
-</refsynopsisdiv>
-
-
-
-
-
-
-
-
-
-<refsect1>
-<title>Description</title>
-<para>
-
-</para>
-</refsect1>
-
-<refsect1>
-<title>Details</title>
-<refsect2>
-<title><anchor id="cairo-set-target-win32"/>cairo_set_target_win32 ()</title>
-<indexterm><primary>cairo_set_target_win32</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_win32 (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="HDC:CAPS">HDC</link> hdc);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>hdc</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-win32-surface-create"/>cairo_win32_surface_create ()</title>
-<indexterm><primary>cairo_win32_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_win32_surface_create (<link linkend="HDC:CAPS">HDC</link> hdc);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>hdc</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-win32-font-create-for-logfontw"/>cairo_win32_font_create_for_logfontw ()</title>
-<indexterm><primary>cairo_win32_font_create_for_logfontw</primary></indexterm><programlisting><link linkend="cairo-font-t">cairo_font_t</link>* cairo_win32_font_create_for_logfontw
- (<link linkend="LOGFONTW:CAPS">LOGFONTW</link> *logfont,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);</programlisting>
-<para>
-Creates a new font for the Win32 font backend based on a
-<link linkend="LOGFONT:CAPS"><type>LOGFONT</type></link>. This font can then be used with
-<link linkend="cairo-set-font"><function>cairo_set_font()</function></link>, <link linkend="cairo-font-glyph-extents"><function>cairo_font_glyph_extents()</function></link>, or FreeType backend
-specific functions like <link linkend="cairo-win32-font-select-font"><function>cairo_win32_font_select_font()</function></link>.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>logfont</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="LOGFONTW:CAPS"><type>LOGFONTW</type></link> structure specifying the font to use.
- The lfHeight, lfWidth, lfOrientation and lfEscapement
- fields of this structure are ignored; information from
- <parameter>scale</parameter> will be used instead.
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>scale</parameter>&nbsp;:</term>
-<listitem><simpara> The scale at which this font will be used. The
- scale is given by multiplying the font matrix (see
- <link linkend="cairo-transform-font"><function>cairo_transform_font()</function></link>) by the current transformation matrix.
- The translation elements of the resulting matrix are ignored.
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-font-t"><type>cairo_font_t</type></link>. Free with
- <link linkend="cairo-font-destroy"><function>cairo_font_destroy()</function></link> when you are done using it.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-win32-font-select-font"/>cairo_win32_font_select_font ()</title>
-<indexterm><primary>cairo_win32_font_select_font</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_win32_font_select_font (<link linkend="cairo-font-t">cairo_font_t</link> *font,
- <link linkend="HDC:CAPS">HDC</link> hdc);</programlisting>
-<para>
-Selects the font into the given device context and changes the
-map mode and world transformation of the device context to match
-that of the font. This function is intended for use when using
-layout APIs such as Uniscribe to do text layout with the
-Cairo font. After finishing using the device context, you must call
-<link linkend="cairo-win32-font-done-font"><function>cairo_win32_font_done_font()</function></link> to release any resources allocated
-by this function.
-</para>
-<para>
-See <link linkend="cairo-win32-font-get-scale-factor"><function>cairo_win32_font_get_scale_factor()</function></link> for converting logical
-coordinates from the device context to font space.
-</para>
-<para>
-Normally, calls to <link linkend="SaveDC"><function>SaveDC()</function></link> and <link linkend="RestoreDC"><function>RestoreDC()</function></link> would be made around
-the use of this function to preserve the original graphics state.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the Win32 font backend. Such an
- object can be created with <link linkend="cairo-win32-font-create-for-logfontw"><function>cairo_win32_font_create_for_logfontw()</function></link>.
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>hdc</parameter>&nbsp;:</term>
-<listitem><simpara> a device context
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal> if the operation succeeded.
- otherwise an error such as <literal>CAIRO_STATUS_NO_MEMORY</literal> and
- the device context is unchanged.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-win32-font-done-font"/>cairo_win32_font_done_font ()</title>
-<indexterm><primary>cairo_win32_font_done_font</primary></indexterm><programlisting><link linkend="void">void</link> cairo_win32_font_done_font (<link linkend="cairo-font-t">cairo_font_t</link> *font);</programlisting>
-<para>
-Releases any resources allocated by <link linkend="cairo-win32-font-select-font"><function>cairo_win32_font_select_font()</function></link></para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the Win32 font backend.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-win32-font-get-scale-factor"/>cairo_win32_font_get_scale_factor ()</title>
-<indexterm><primary>cairo_win32_font_get_scale_factor</primary></indexterm><programlisting><link linkend="double">double</link> cairo_win32_font_get_scale_factor
- (<link linkend="cairo-font-t">cairo_font_t</link> *font);</programlisting>
-<para>
-Gets a scale factor between logical coordinates in the coordinate
-space used by <link linkend="cairo-win32-font-select-font"><function>cairo_win32_font_select_font()</function></link> and font space coordinates.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the Win32 font backend
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> factor to multiply logical units by to get font space
- coordinates.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-
-</refsect1>
-
-
-
-
-</refentry>
diff --git a/doc/public/xml/cairo-win32.xml b/doc/public/xml/cairo-win32.xml
index 4c31db5..222afd9 100644
--- a/doc/public/xml/cairo-win32.xml
+++ b/doc/public/xml/cairo-win32.xml
@@ -18,17 +18,16 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-win32">cairo_set_target_win32</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="HDC:CAPS">HDC</link> hdc);
<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-win32-surface-create">cairo_win32_surface_create</link> (<link linkend="HDC:CAPS">HDC</link> hdc);
-<link linkend="cairo-font-t">cairo_font_t</link>* <link linkend="cairo-win32-font-create-for-logfontw">cairo_win32_font_create_for_logfontw</link>
- (<link linkend="LOGFONTW:CAPS">LOGFONTW</link> *logfont,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-win32-font-select-font">cairo_win32_font_select_font</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font,
+<link linkend="cairo-font-face-t">cairo_font_face_t</link>* <link linkend="cairo-win32-font-face-create-for-logfontw">cairo_win32_font_face_create_for_logfontw</link>
+ (<link linkend="LOGFONTW:CAPS">LOGFONTW</link> *logfont);
+<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-win32-scaled-font-select-font">cairo_win32_scaled_font_select_font</link>
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font,
<link linkend="HDC:CAPS">HDC</link> hdc);
-<link linkend="void">void</link> <link linkend="cairo-win32-font-done-font">cairo_win32_font_done_font</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font);
-<link linkend="double">double</link> <link linkend="cairo-win32-font-get-scale-factor">cairo_win32_font_get_scale_factor</link>
- (<link linkend="cairo-font-t">cairo_font_t</link> *font);
+<link linkend="void">void</link> <link linkend="cairo-win32-scaled-font-done-font">cairo_win32_scaled_font_done_font</link>
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);
+<link linkend="double">double</link> <link linkend="cairo-win32-scaled-font-get-metrics-factor">cairo_win32_scaled_font_get_metrics_factor</link>
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);
</synopsis>
</refsynopsisdiv>
@@ -50,22 +49,6 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-win32"/>cairo_set_target_win32 ()</title>
-<indexterm><primary>cairo_set_target_win32</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_win32 (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="HDC:CAPS">HDC</link> hdc);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>hdc</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
<title><anchor id="cairo-win32-surface-create"/>cairo_win32_surface_create ()</title>
<indexterm><primary>cairo_win32_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_win32_surface_create (<link linkend="HDC:CAPS">HDC</link> hdc);</programlisting>
<para>
@@ -80,49 +63,43 @@
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-win32-font-create-for-logfontw"/>cairo_win32_font_create_for_logfontw ()</title>
-<indexterm><primary>cairo_win32_font_create_for_logfontw</primary></indexterm><programlisting><link linkend="cairo-font-t">cairo_font_t</link>* cairo_win32_font_create_for_logfontw
- (<link linkend="LOGFONTW:CAPS">LOGFONTW</link> *logfont,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *scale);</programlisting>
+<title><anchor id="cairo-win32-font-face-create-for-logfontw"/>cairo_win32_font_face_create_for_logfontw ()</title>
+<indexterm><primary>cairo_win32_font_face_create_for_logfontw</primary></indexterm><programlisting><link linkend="cairo-font-face-t">cairo_font_face_t</link>* cairo_win32_font_face_create_for_logfontw
+ (<link linkend="LOGFONTW:CAPS">LOGFONTW</link> *logfont);</programlisting>
<para>
Creates a new font for the Win32 font backend based on a
<link linkend="LOGFONT:CAPS"><type>LOGFONT</type></link>. This font can then be used with
-<link linkend="cairo-set-font"><function>cairo_set_font()</function></link>, <link linkend="cairo-font-glyph-extents"><function>cairo_font_glyph_extents()</function></link>, or FreeType backend
-specific functions like <link linkend="cairo-win32-font-select-font"><function>cairo_win32_font_select_font()</function></link>.</para>
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-font-create"><function>cairo_font_create()</function></link>. The <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+returned from <link linkend="cairo-font-create"><function>cairo_font_create()</function></link> is also for the Win32 backend
+and can be used with functions such as <link linkend="cairo-win32-scaled-font-select-font"><function>cairo_win32_scaled_font_select_font()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>logfont</parameter>&nbsp;:</term>
<listitem><simpara> A <link linkend="LOGFONTW:CAPS"><type>LOGFONTW</type></link> structure specifying the font to use.
The lfHeight, lfWidth, lfOrientation and lfEscapement
- fields of this structure are ignored; information from
- <parameter>scale</parameter> will be used instead.
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>scale</parameter>&nbsp;:</term>
-<listitem><simpara> The scale at which this font will be used. The
- scale is given by multiplying the font matrix (see
- <link linkend="cairo-transform-font"><function>cairo_transform_font()</function></link>) by the current transformation matrix.
- The translation elements of the resulting matrix are ignored.
+ fields of this structure are ignored.
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-font-t"><type>cairo_font_t</type></link>. Free with
- <link linkend="cairo-font-destroy"><function>cairo_font_destroy()</function></link> when you are done using it.
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly created <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>. Free with
+ <link linkend="cairo-font-face-destroy"><function>cairo_font_face_destroy()</function></link> when you are done using it.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-win32-font-select-font"/>cairo_win32_font_select_font ()</title>
-<indexterm><primary>cairo_win32_font_select_font</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_win32_font_select_font (<link linkend="cairo-font-t">cairo_font_t</link> *font,
+<title><anchor id="cairo-win32-scaled-font-select-font"/>cairo_win32_scaled_font_select_font ()</title>
+<indexterm><primary>cairo_win32_scaled_font_select_font</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_win32_scaled_font_select_font
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font,
<link linkend="HDC:CAPS">HDC</link> hdc);</programlisting>
<para>
Selects the font into the given device context and changes the
map mode and world transformation of the device context to match
that of the font. This function is intended for use when using
layout APIs such as Uniscribe to do text layout with the
-Cairo font. After finishing using the device context, you must call
-<link linkend="cairo-win32-font-done-font"><function>cairo_win32_font_done_font()</function></link> to release any resources allocated
+cairo font. After finishing using the device context, you must call
+<link linkend="cairo-win32-scaled-font-done-font"><function>cairo_win32_scaled_font_done_font()</function></link> to release any resources allocated
by this function.
</para>
<para>
-See <link linkend="cairo-win32-font-get-scale-factor"><function>cairo_win32_font_get_scale_factor()</function></link> for converting logical
+See <link linkend="cairo-win32-scaled-font-get-metrics-factor"><function>cairo_win32_scaled_font_get_metrics_factor()</function></link> for converting logical
coordinates from the device context to font space.
</para>
<para>
@@ -131,9 +108,9 @@ the use of this function to preserve the original graphics state.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the Win32 font backend. Such an
- object can be created with <link linkend="cairo-win32-font-create-for-logfontw"><function>cairo_win32_font_create_for_logfontw()</function></link>.
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> from the Win32 font backend. Such an
+ object can be created with <link linkend="cairo-win32-scaled-font-create-for-logfontw"><function>cairo_win32_scaled_font_create_for_logfontw()</function></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>hdc</parameter>&nbsp;:</term>
<listitem><simpara> a device context
@@ -144,29 +121,32 @@ the use of this function to preserve the original graphics state.</para>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-win32-font-done-font"/>cairo_win32_font_done_font ()</title>
-<indexterm><primary>cairo_win32_font_done_font</primary></indexterm><programlisting><link linkend="void">void</link> cairo_win32_font_done_font (<link linkend="cairo-font-t">cairo_font_t</link> *font);</programlisting>
+<title><anchor id="cairo-win32-scaled-font-done-font"/>cairo_win32_scaled_font_done_font ()</title>
+<indexterm><primary>cairo_win32_scaled_font_done_font</primary></indexterm><programlisting><link linkend="void">void</link> cairo_win32_scaled_font_done_font
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);</programlisting>
<para>
-Releases any resources allocated by <link linkend="cairo-win32-font-select-font"><function>cairo_win32_font_select_font()</function></link></para>
+Releases any resources allocated by <link linkend="cairo-win32-scaled-font-select-font"><function>cairo_win32_scaled_font_select_font()</function></link></para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the Win32 font backend.
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> from the Win32 font backend.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-win32-font-get-scale-factor"/>cairo_win32_font_get_scale_factor ()</title>
-<indexterm><primary>cairo_win32_font_get_scale_factor</primary></indexterm><programlisting><link linkend="double">double</link> cairo_win32_font_get_scale_factor
- (<link linkend="cairo-font-t">cairo_font_t</link> *font);</programlisting>
+<title><anchor id="cairo-win32-scaled-font-get-metrics-factor"/>cairo_win32_scaled_font_get_metrics_factor ()</title>
+<indexterm><primary>cairo_win32_scaled_font_get_metrics_factor</primary></indexterm><programlisting><link linkend="double">double</link> cairo_win32_scaled_font_get_metrics_factor
+ (<link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link> *scaled_font);</programlisting>
<para>
Gets a scale factor between logical coordinates in the coordinate
-space used by <link linkend="cairo-win32-font-select-font"><function>cairo_win32_font_select_font()</function></link> and font space coordinates.</para>
+space used by <link linkend="cairo-win32-scaled-font-select-font"><function>cairo_win32_scaled_font_select_font()</function></link> (that is, the
+coordinate system used by the Windows functions to return metrics) and
+font space coordinates.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-font-t"><type>cairo_font_t</type></link> from the Win32 font backend
+<varlistentry><term><parameter>scaled_font</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> from the Win32 font backend
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> factor to multiply logical units by to get font space
coordinates.
diff --git a/doc/public/xml/cairo-xcb-xrender.xml b/doc/public/xml/cairo-xcb-xrender.xml
new file mode 100644
index 0000000..de2356d
--- /dev/null
+++ b/doc/public/xml/cairo-xcb-xrender.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="cairo-XCB-Backend">
+<refmeta>
+<refentrytitle>XCB Backend</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>XCB Backend</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-xcb-surface-create-with-xrender-format">cairo_xcb_surface_create_with_xrender_format</link>
+ (<link linkend="XCBConnection">XCBConnection</link> *c,
+ <link linkend="XCBDRAWABLE:CAPS">XCBDRAWABLE</link> drawable,
+ <link linkend="XCBRenderPICTFORMINFO">XCBRenderPICTFORMINFO</link> *format,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="cairo-xcb-surface-create-with-xrender-format"/>cairo_xcb_surface_create_with_xrender_format ()</title>
+<indexterm><primary>cairo_xcb_surface_create_with_xrender_format</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_xcb_surface_create_with_xrender_format
+ (<link linkend="XCBConnection">XCBConnection</link> *c,
+ <link linkend="XCBDRAWABLE:CAPS">XCBDRAWABLE</link> drawable,
+ <link linkend="XCBRenderPICTFORMINFO">XCBRenderPICTFORMINFO</link> *format,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
+<para>
+Creates an XCB surface that draws to the given drawable.
+The way that colors are represented in the drawable is specified
+by the provided picture format.
+</para>
+<para>
+NOTE: If <parameter>drawable</parameter> is a Window, then the function
+cairo_xlib_surface_set_size must be called whenever the size of the
+window changes.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>c</parameter>&nbsp;:</term>
+<listitem><simpara> an XCB connection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>drawable</parameter>&nbsp;:</term>
+<listitem><simpara> an XCB drawable
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
+<listitem><simpara> the picture format to use for drawing to <parameter>drawable</parameter>. The
+ depth of <parameter>format</parameter> mush match the depth of the drawable.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the current width of <parameter>drawable</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the current height of <parameter>drawable</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the newly created surface.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/public/xml/cairo-xcb.xml b/doc/public/xml/cairo-xcb.xml
index 4f904d8..cb7a752 100644
--- a/doc/public/xml/cairo-xcb.xml
+++ b/doc/public/xml/cairo-xcb.xml
@@ -18,11 +18,19 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-xcb">cairo_set_target_xcb</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="XCBConnection">XCBConnection</link> *dpy,
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-xcb-surface-create">cairo_xcb_surface_create</link> (<link linkend="XCBConnection">XCBConnection</link> *c,
<link linkend="XCBDRAWABLE:CAPS">XCBDRAWABLE</link> drawable,
<link linkend="XCBVISUALTYPE:CAPS">XCBVISUALTYPE</link> *visual,
- <link linkend="cairo-format-t">cairo_format_t</link> format);
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-xcb-surface-create-for-bitmap">cairo_xcb_surface_create_for_bitmap</link>
+ (<link linkend="XCBConnection">XCBConnection</link> *c,
+ <link linkend="XCBPIXMAP:CAPS">XCBPIXMAP</link> bitmap,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
+<link linkend="void">void</link> <link linkend="cairo-xcb-surface-set-size">cairo_xcb_surface_set_size</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
</synopsis>
</refsynopsisdiv>
@@ -44,31 +52,99 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-xcb"/>cairo_set_target_xcb ()</title>
-<indexterm><primary>cairo_set_target_xcb</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_xcb (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="XCBConnection">XCBConnection</link> *dpy,
+<title><anchor id="cairo-xcb-surface-create"/>cairo_xcb_surface_create ()</title>
+<indexterm><primary>cairo_xcb_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_xcb_surface_create (<link linkend="XCBConnection">XCBConnection</link> *c,
<link linkend="XCBDRAWABLE:CAPS">XCBDRAWABLE</link> drawable,
<link linkend="XCBVISUALTYPE:CAPS">XCBVISUALTYPE</link> *visual,
- <link linkend="cairo-format-t">cairo_format_t</link> format);</programlisting>
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
+<para>
+Creates an XCB surface that draws to the given drawable.
+The way that colors are represented in the drawable is specified
+by the provided visual.
+</para>
+<para>
+NOTE: If <parameter>drawable</parameter> is a window, then the function
+cairo_xcb_surface_set_size must be called whenever the size of the
+window changes.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>dpy</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>c</parameter>&nbsp;:</term>
+<listitem><simpara> an XCB connection
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>drawable</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> an XCB drawable
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>visual</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> the visual to use for drawing to <parameter>drawable</parameter>. The depth
+ of the visual must match the depth of the drawable.
+ Currently, only TrueColor visuals are fully supported.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the current width of <parameter>drawable</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the current height of <parameter>drawable</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the newly created surface
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
-<listitem><simpara>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-xcb-surface-create-for-bitmap"/>cairo_xcb_surface_create_for_bitmap ()</title>
+<indexterm><primary>cairo_xcb_surface_create_for_bitmap</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_xcb_surface_create_for_bitmap
+ (<link linkend="XCBConnection">XCBConnection</link> *c,
+ <link linkend="XCBPIXMAP:CAPS">XCBPIXMAP</link> bitmap,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
+<para>
+Creates an XCB surface that draws to the given bitmap.
+This will be drawn to as a CAIRO_FORMAT_A1 object.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>c</parameter>&nbsp;:</term>
+<listitem><simpara> an XCB connection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>bitmap</parameter>&nbsp;:</term>
+<listitem><simpara> an XCB Pixmap (a depth-1 pixmap)
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the current width of <parameter>bitmap</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the current height of <parameter>bitmap</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the newly created surface
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-xcb-surface-set-size"/>cairo_xcb_surface_set_size ()</title>
+<indexterm><primary>cairo_xcb_surface_set_size</primary></indexterm><programlisting><link linkend="void">void</link> cairo_xcb_surface_set_size (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
+<para>
+Informs cairo of the new size of the XCB drawable underlying the
+surface. For a surface created for a window (rather than a pixmap),
+this function must be called each time the size of the window
+changes. (For a subwindow, you are normally resizing the window
+yourself, but for a toplevel window, it is necessary to listen for
+ConfigureNotify events.)
+</para>
+<para>
+A pixmap can never change size, so it is never necessary to call
+this function on a surface created for a pixmap.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> for the XCB backend
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the new width of the surface
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the new height of the surface
</simpara></listitem></varlistentry>
</variablelist></refsect2>
diff --git a/doc/public/xml/cairo-xlib-xrender.xml b/doc/public/xml/cairo-xlib-xrender.xml
new file mode 100644
index 0000000..c7bffc4
--- /dev/null
+++ b/doc/public/xml/cairo-xlib-xrender.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="cairo-XLib/Xrender-Backend">
+<refmeta>
+<refentrytitle>XLib/Xrender Backend</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>XLib/Xrender Backend</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-xlib-surface-create-with-xrender-format">cairo_xlib_surface_create_with_xrender_format</link>
+ (<link linkend="Display">Display</link> *dpy,
+ <link linkend="Drawable">Drawable</link> drawable,
+ <link linkend="XRenderPictFormat">XRenderPictFormat</link> *format,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="cairo-xlib-surface-create-with-xrender-format"/>cairo_xlib_surface_create_with_xrender_format ()</title>
+<indexterm><primary>cairo_xlib_surface_create_with_xrender_format</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_xlib_surface_create_with_xrender_format
+ (<link linkend="Display">Display</link> *dpy,
+ <link linkend="Drawable">Drawable</link> drawable,
+ <link linkend="XRenderPictFormat">XRenderPictFormat</link> *format,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
+<para>
+Creates an Xlib surface that draws to the given drawable.
+The way that colors are represented in the drawable is specified
+by the provided picture format.
+</para>
+<para>
+NOTE: If <parameter>drawable</parameter> is a Window, then the function
+cairo_xlib_surface_set_size must be called whenever the size of the
+window changes.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>dpy</parameter>&nbsp;:</term>
+<listitem><simpara> an X Display
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>drawable</parameter>&nbsp;:</term>
+<listitem><simpara> an X Drawable, (a Pixmap or a Window)
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
+<listitem><simpara> the picture format to use for drawing to <parameter>drawable</parameter>. The depth
+ of <parameter>format</parameter> must match the depth of the drawable.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the current width of <parameter>drawable</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the current height of <parameter>drawable</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the newly created surface
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/public/xml/cairo-xlib.xml b/doc/public/xml/cairo-xlib.xml
index dbb59a6..5ab5b4a 100644
--- a/doc/public/xml/cairo-xlib.xml
+++ b/doc/public/xml/cairo-xlib.xml
@@ -18,14 +18,19 @@
-<link linkend="void">void</link> <link linkend="cairo-set-target-drawable">cairo_set_target_drawable</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="Display">Display</link> *dpy,
- <link linkend="Drawable">Drawable</link> drawable);
<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-xlib-surface-create">cairo_xlib_surface_create</link> (<link linkend="Display">Display</link> *dpy,
<link linkend="Drawable">Drawable</link> drawable,
<link linkend="Visual">Visual</link> *visual,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="Colormap">Colormap</link> colormap);
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-xlib-surface-create-for-bitmap">cairo_xlib_surface_create_for_bitmap</link>
+ (<link linkend="Display">Display</link> *dpy,
+ <link linkend="Pixmap">Pixmap</link> bitmap,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
+<link linkend="void">void</link> <link linkend="cairo-xlib-surface-set-size">cairo_xlib_surface_set_size</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);
</synopsis>
</refsynopsisdiv>
@@ -47,61 +52,99 @@
<refsect1>
<title>Details</title>
<refsect2>
-<title><anchor id="cairo-set-target-drawable"/>cairo_set_target_drawable ()</title>
-<indexterm><primary>cairo_set_target_drawable</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_drawable (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="Display">Display</link> *dpy,
- <link linkend="Drawable">Drawable</link> drawable);</programlisting>
+<title><anchor id="cairo-xlib-surface-create"/>cairo_xlib_surface_create ()</title>
+<indexterm><primary>cairo_xlib_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_xlib_surface_create (<link linkend="Display">Display</link> *dpy,
+ <link linkend="Drawable">Drawable</link> drawable,
+ <link linkend="Visual">Visual</link> *visual,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
<para>
-Directs output for a <link linkend="cairo-t"><type>cairo_t</type></link> to an Xlib drawable. <parameter>drawable</parameter> must
-be a Window or Pixmap on the default screen of <parameter>dpy</parameter> using the
-default colormap and visual. Using this function is slow because
-the function must retrieve information about <parameter>drawable</parameter> from the X
-server.
-
-The combination of <link linkend="cairo-xlib-surface-create"><function>cairo_xlib_surface_create()</function></link> and
-<link linkend="cairo-set-target-surface"><function>cairo_set_target_surface()</function></link> is somewhat more flexible, although
-it still is slow.</para>
+Creates an Xlib surface that draws to the given drawable.
+The way that colors are represented in the drawable is specified
+by the provided visual.
+</para>
+<para>
+NOTE: If <parameter>drawable</parameter> is a Window, then the function
+cairo_xlib_surface_set_size must be called whenever the size of the
+window changes.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
-</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dpy</parameter>&nbsp;:</term>
-<listitem><simpara> an X display
+<listitem><simpara> an X Display
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>drawable</parameter>&nbsp;:</term>
-<listitem><simpara> a window or pixmap on the default screen of <parameter>dpy</parameter>
+<listitem><simpara> an X Drawable, (a Pixmap or a Window)
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>visual</parameter>&nbsp;:</term>
+<listitem><simpara> the visual to use for drawing to <parameter>drawable</parameter>. The depth
+ of the visual must match the depth of the drawable.
+ Currently, only TrueColor visuals are fully supported.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the current width of <parameter>drawable</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the current height of <parameter>drawable</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the newly created surface
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-xlib-surface-create"/>cairo_xlib_surface_create ()</title>
-<indexterm><primary>cairo_xlib_surface_create</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_xlib_surface_create (<link linkend="Display">Display</link> *dpy,
- <link linkend="Drawable">Drawable</link> drawable,
- <link linkend="Visual">Visual</link> *visual,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="Colormap">Colormap</link> colormap);</programlisting>
+<title><anchor id="cairo-xlib-surface-create-for-bitmap"/>cairo_xlib_surface_create_for_bitmap ()</title>
+<indexterm><primary>cairo_xlib_surface_create_for_bitmap</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_xlib_surface_create_for_bitmap
+ (<link linkend="Display">Display</link> *dpy,
+ <link linkend="Pixmap">Pixmap</link> bitmap,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
+<para>
+Creates an Xlib surface that draws to the given bitmap.
+This will be drawn to as a CAIRO_FORMAT_A1 object.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>dpy</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> an X Display
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>drawable</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>bitmap</parameter>&nbsp;:</term>
+<listitem><simpara> an X Drawable, (a depth-1 Pixmap)
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>visual</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the current width of <parameter>bitmap</parameter>.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the current height of <parameter>bitmap</parameter>.
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>colormap</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the newly created surface
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-xlib-surface-set-size"/>cairo_xlib_surface_set_size ()</title>
+<indexterm><primary>cairo_xlib_surface_set_size</primary></indexterm><programlisting><link linkend="void">void</link> cairo_xlib_surface_set_size (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="int">int</link> width,
+ <link linkend="int">int</link> height);</programlisting>
+<para>
+Informs cairo of the new size of the X Drawable underlying the
+surface. For a surface created for a Window (rather than a Pixmap),
+this function must be called each time the size of the window
+changes. (For a subwindow, you are normally resizing the window
+yourself, but for a toplevel window, it is necessary to listen for
+ConfigureNotify events.)
+</para>
+<para>
+A Pixmap can never change size, so it is never necessary to call
+this function on a surface created for a Pixmap.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> for the XLib backend
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
+<listitem><simpara> the new width of the surface
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
+<listitem><simpara> the new height of the surface
</simpara></listitem></varlistentry>
</variablelist></refsect2>
diff --git a/doc/public/xml/cairo.xml b/doc/public/xml/cairo.xml
index 8148cee..d848bca 100644
--- a/doc/public/xml/cairo.xml
+++ b/doc/public/xml/cairo.xml
@@ -19,33 +19,30 @@
typedef <link linkend="cairo-t">cairo_t</link>;
-<link linkend="cairo-t">cairo_t</link>* <link linkend="cairo-create">cairo_create</link> (void);
+<link linkend="cairo-t">cairo_t</link>* <link linkend="cairo-create">cairo_create</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *target);
<link linkend="void">void</link> <link linkend="cairo-reference">cairo_reference</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="void">void</link> <link linkend="cairo-destroy">cairo_destroy</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="void">void</link> <link linkend="cairo-save">cairo_save</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="void">void</link> <link linkend="cairo-restore">cairo_restore</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="void">void</link> <link linkend="cairo-copy">cairo_copy</link> (<link linkend="cairo-t">cairo_t</link> *dest,
- <link linkend="cairo-t">cairo_t</link> *src);
-<link linkend="void">void</link> <link linkend="cairo-set-target-surface">cairo_set_target_surface</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-surface-t">cairo_surface_t</link> *surface);
enum <link linkend="cairo-format-t">cairo_format_t</link>;
-<link linkend="void">void</link> <link linkend="cairo-set-target-image">cairo_set_target_image</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="char">char</link> *data,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height,
- <link linkend="int">int</link> stride);
enum <link linkend="cairo-operator-t">cairo_operator_t</link>;
<link linkend="void">void</link> <link linkend="cairo-set-operator">cairo_set_operator</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-operator-t">cairo_operator_t</link> op);
-<link linkend="void">void</link> <link linkend="cairo-set-rgb-color">cairo_set_rgb_color</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-set-source-rgb">cairo_set_source_rgb</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> red,
<link linkend="double">double</link> green,
<link linkend="double">double</link> blue);
-<link linkend="void">void</link> <link linkend="cairo-set-pattern">cairo_set_pattern</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);
-<link linkend="void">void</link> <link linkend="cairo-set-alpha">cairo_set_alpha</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-set-source-rgba">cairo_set_source_rgba</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="double">double</link> red,
+ <link linkend="double">double</link> green,
+ <link linkend="double">double</link> blue,
<link linkend="double">double</link> alpha);
+<link linkend="void">void</link> <link linkend="cairo-set-source">cairo_set_source</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-pattern-t">cairo_pattern_t</link> *source);
+<link linkend="void">void</link> <link linkend="cairo-set-source-surface">cairo_set_source_surface</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x,
+ <link linkend="double">double</link> y);
<link linkend="void">void</link> <link linkend="cairo-set-tolerance">cairo_set_tolerance</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> tolerance);
enum <link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link>;
@@ -73,23 +70,21 @@ enum <link linkend="cairo-line-join-t">cairo_line_join_t</link>;
<link linkend="double">double</link> sy);
<link linkend="void">void</link> <link linkend="cairo-rotate">cairo_rotate</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> angle);
-<link linkend="void">void</link> <link linkend="cairo-concat-matrix">cairo_concat_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
+<link linkend="void">void</link> <link linkend="cairo-transform">cairo_transform</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
<link linkend="void">void</link> <link linkend="cairo-set-matrix">cairo_set_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="void">void</link> <link linkend="cairo-default-matrix">cairo_default_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
<link linkend="void">void</link> <link linkend="cairo-identity-matrix">cairo_identity_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="void">void</link> <link linkend="cairo-transform-point">cairo_transform_point</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-user-to-device">cairo_user_to_device</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *x,
<link linkend="double">double</link> *y);
-<link linkend="void">void</link> <link linkend="cairo-transform-distance">cairo_transform_distance</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-user-to-device-distance">cairo_user_to_device_distance</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *dx,
<link linkend="double">double</link> *dy);
-<link linkend="void">void</link> <link linkend="cairo-inverse-transform-point">cairo_inverse_transform_point</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-device-to-user">cairo_device_to_user</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *x,
<link linkend="double">double</link> *y);
-<link linkend="void">void</link> <link linkend="cairo-inverse-transform-distance">cairo_inverse_transform_distance</link>
- (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-device-to-user-distance">cairo_device_to_user_distance</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *dx,
<link linkend="double">double</link> *dy);
<link linkend="void">void</link> <link linkend="cairo-new-path">cairo_new_path</link> (<link linkend="cairo-t">cairo_t</link> *cr);
@@ -137,8 +132,19 @@ enum <link linkend="cairo-line-join-t">cairo_line_join_t</link>;
<link linkend="double">double</link> width,
<link linkend="double">double</link> height);
<link linkend="void">void</link> <link linkend="cairo-close-path">cairo_close_path</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-paint">cairo_paint</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-paint-with-alpha">cairo_paint_with_alpha</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="double">double</link> alpha);
+<link linkend="void">void</link> <link linkend="cairo-mask">cairo_mask</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);
+<link linkend="void">void</link> <link linkend="cairo-mask-surface">cairo_mask_surface</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> surface_x,
+ <link linkend="double">double</link> surface_y);
<link linkend="void">void</link> <link linkend="cairo-stroke">cairo_stroke</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-stroke-preserve">cairo_stroke_preserve</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="void">void</link> <link linkend="cairo-fill">cairo_fill</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-fill-preserve">cairo_fill_preserve</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="void">void</link> <link linkend="cairo-copy-page">cairo_copy_page</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="void">void</link> <link linkend="cairo-show-page">cairo_show_page</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="cairo-bool-t">cairo_bool_t</link> <link linkend="cairo-in-stroke">cairo_in_stroke</link> (<link linkend="cairo-t">cairo_t</link> *cr,
@@ -158,102 +164,89 @@ typedef <link linkend="cairo-bool-t">cairo_bool_t</link>;
<link linkend="double">double</link> *y1,
<link linkend="double">double</link> *x2,
<link linkend="double">double</link> *y2);
-<link linkend="void">void</link> <link linkend="cairo-init-clip">cairo_init_clip</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="void">void</link> <link linkend="cairo-clip">cairo_clip</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-typedef <link linkend="cairo-font-t">cairo_font_t</link>;
+<link linkend="void">void</link> <link linkend="cairo-clip-preserve">cairo_clip_preserve</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-reset-clip">cairo_reset_clip</link> (<link linkend="cairo-t">cairo_t</link> *cr);
<link linkend="cairo-glyph-t">cairo_glyph_t</link>;
- <link linkend="cairo-text-extents-t">cairo_text_extents_t</link>;
- <link linkend="cairo-font-extents-t">cairo_font_extents_t</link>;
enum <link linkend="cairo-font-slant-t">cairo_font_slant_t</link>;
enum <link linkend="cairo-font-weight-t">cairo_font_weight_t</link>;
-<link linkend="void">void</link> <link linkend="cairo-select-font">cairo_select_font</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-select-font-face">cairo_select_font_face</link> (<link linkend="cairo-t">cairo_t</link> *cr,
const <link linkend="char">char</link> *family,
<link linkend="cairo-font-slant-t">cairo_font_slant_t</link> slant,
<link linkend="cairo-font-weight-t">cairo_font_weight_t</link> weight);
-<link linkend="void">void</link> <link linkend="cairo-scale-font">cairo_scale_font</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="double">double</link> scale);
-<link linkend="void">void</link> <link linkend="cairo-transform-font">cairo_transform_font</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="void">void</link> <link linkend="cairo-set-font-size">cairo_set_font_size</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="double">double</link> size);
+<link linkend="void">void</link> <link linkend="cairo-set-font-matrix">cairo_set_font_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
+<link linkend="void">void</link> <link linkend="cairo-get-font-matrix">cairo_get_font_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
<link linkend="void">void</link> <link linkend="cairo-show-text">cairo_show_text</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- unsigned <link linkend="char">char</link> *utf8);
+ const <link linkend="char">char</link> *utf8);
<link linkend="void">void</link> <link linkend="cairo-show-glyphs">cairo_show_glyphs</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-glyph-t">cairo_glyph_t</link> *glyphs,
<link linkend="int">int</link> num_glyphs);
-<link linkend="cairo-font-t">cairo_font_t</link>* <link linkend="cairo-current-font">cairo_current_font</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="void">void</link> <link linkend="cairo-current-font-extents">cairo_current_font_extents</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="cairo-font-face-t">cairo_font_face_t</link>* <link linkend="cairo-get-font-face">cairo_get_font_face</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-font-extents">cairo_font_extents</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-font-extents-t">cairo_font_extents_t</link> *extents);
-<link linkend="void">void</link> <link linkend="cairo-set-font">cairo_set_font</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-font-t">cairo_font_t</link> *font);
+<link linkend="void">void</link> <link linkend="cairo-set-font-face">cairo_set_font_face</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face);
<link linkend="void">void</link> <link linkend="cairo-text-extents">cairo_text_extents</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- unsigned <link linkend="char">char</link> *utf8,
+ const <link linkend="char">char</link> *utf8,
<link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);
<link linkend="void">void</link> <link linkend="cairo-glyph-extents">cairo_glyph_extents</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-glyph-t">cairo_glyph_t</link> *glyphs,
<link linkend="int">int</link> num_glyphs,
<link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);
<link linkend="void">void</link> <link linkend="cairo-text-path">cairo_text_path</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- unsigned <link linkend="char">char</link> *utf8);
+ const <link linkend="char">char</link> *utf8);
<link linkend="void">void</link> <link linkend="cairo-glyph-path">cairo_glyph_path</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-glyph-t">cairo_glyph_t</link> *glyphs,
<link linkend="int">int</link> num_glyphs);
-<link linkend="void">void</link> <link linkend="cairo-font-reference">cairo_font_reference</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font);
-<link linkend="void">void</link> <link linkend="cairo-font-destroy">cairo_font_destroy</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font);
-<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-font-extents">cairo_font_extents</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *font_matrix,
- <link linkend="cairo-font-extents-t">cairo_font_extents_t</link> *extents);
-<link linkend="void">void</link> <link linkend="cairo-font-glyph-extents">cairo_font_glyph_extents</link> (<link linkend="cairo-font-t">cairo_font_t</link> *font,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *font_matrix,
- <link linkend="cairo-glyph-t">cairo_glyph_t</link> *glyphs,
- <link linkend="int">int</link> num_glyphs,
- <link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);
-<link linkend="void">void</link> <link linkend="cairo-show-surface">cairo_show_surface</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);
-<link linkend="cairo-operator-t">cairo_operator_t</link> <link linkend="cairo-current-operator">cairo_current_operator</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="void">void</link> <link linkend="cairo-current-rgb-color">cairo_current_rgb_color</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="double">double</link> *red,
- <link linkend="double">double</link> *green,
- <link linkend="double">double</link> *blue);
-<link linkend="cairo-pattern-t">cairo_pattern_t</link>* <link linkend="cairo-current-pattern">cairo_current_pattern</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="double">double</link> <link linkend="cairo-current-alpha">cairo_current_alpha</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="double">double</link> <link linkend="cairo-current-tolerance">cairo_current_tolerance</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="void">void</link> <link linkend="cairo-current-point">cairo_current_point</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="cairo-operator-t">cairo_operator_t</link> <link linkend="cairo-get-operator">cairo_get_operator</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="cairo-pattern-t">cairo_pattern_t</link>* <link linkend="cairo-get-source">cairo_get_source</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="double">double</link> <link linkend="cairo-get-tolerance">cairo_get_tolerance</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-get-current-point">cairo_get_current_point</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *x,
<link linkend="double">double</link> *y);
-<link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link> <link linkend="cairo-current-fill-rule">cairo_current_fill_rule</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="double">double</link> <link linkend="cairo-current-line-width">cairo_current_line_width</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="cairo-line-cap-t">cairo_line_cap_t</link> <link linkend="cairo-current-line-cap">cairo_current_line_cap</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="cairo-line-join-t">cairo_line_join_t</link> <link linkend="cairo-current-line-join">cairo_current_line_join</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="double">double</link> <link linkend="cairo-current-miter-limit">cairo_current_miter_limit</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="void">void</link> <link linkend="cairo-current-matrix">cairo_current_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+<link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link> <link linkend="cairo-get-fill-rule">cairo_get_fill_rule</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="double">double</link> <link linkend="cairo-get-line-width">cairo_get_line_width</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="cairo-line-cap-t">cairo_line_cap_t</link> <link linkend="cairo-get-line-cap">cairo_get_line_cap</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="cairo-line-join-t">cairo_line_join_t</link> <link linkend="cairo-get-line-join">cairo_get_line_join</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="double">double</link> <link linkend="cairo-get-miter-limit">cairo_get_miter_limit</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-get-matrix">cairo_get_matrix</link> (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);
-<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-current-target-surface">cairo_current_target_surface</link>
- (<link linkend="cairo-t">cairo_t</link> *cr);
-<link linkend="void">void</link> <link linkend="cairo-current-path">cairo_current_path</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-move-to-func-t">cairo_move_to_func_t</link> *move_to,
- <link linkend="cairo-line-to-func-t">cairo_line_to_func_t</link> *line_to,
- <link linkend="cairo-curve-to-func-t">cairo_curve_to_func_t</link> *curve_to,
- <link linkend="cairo-close-path-func-t">cairo_close_path_func_t</link> *close_path,
- <link linkend="void">void</link> *closure);
-<link linkend="void">void</link> <link linkend="cairo-current-path-flat">cairo_current_path_flat</link> (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-move-to-func-t">cairo_move_to_func_t</link> *move_to,
- <link linkend="cairo-line-to-func-t">cairo_line_to_func_t</link> *line_to,
- <link linkend="cairo-close-path-func-t">cairo_close_path_func_t</link> *close_path,
- <link linkend="void">void</link> *closure);
+<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-get-target">cairo_get_target</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="cairo-path-t">cairo_path_t</link>* <link linkend="cairo-copy-path">cairo_copy_path</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="cairo-path-t">cairo_path_t</link>* <link linkend="cairo-copy-path-flat">cairo_copy_path_flat</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+<link linkend="void">void</link> <link linkend="cairo-append-path">cairo_append_path</link> (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-path-t">cairo_path_t</link> *path);
+enum <link linkend="cairo-path-data-type-t">cairo_path_data_type_t</link>;
+ <link linkend="cairo-path-t">cairo_path_t</link>;
+<link linkend="void">void</link> <link linkend="cairo-path-destroy">cairo_path_destroy</link> (<link linkend="cairo-path-t">cairo_path_t</link> *path);
enum <link linkend="cairo-status-t">cairo_status_t</link>;
<link linkend="cairo-status-t">cairo_status_t</link> <link linkend="cairo-status">cairo_status</link> (<link linkend="cairo-t">cairo_t</link> *cr);
-const <link linkend="char">char</link>* <link linkend="cairo-status-string">cairo_status_string</link> (<link linkend="cairo-t">cairo_t</link> *cr);
+#define <link linkend="cairo-status-string">cairo_status_string</link>
+const <link linkend="char">char</link>* <link linkend="cairo-status-to-string">cairo_status_to_string</link> (<link linkend="cairo-status-t">cairo_status_t</link> status);
enum <link linkend="cairo-filter-t">cairo_filter_t</link>;
<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-image-surface-create">cairo_image_surface_create</link> (<link linkend="cairo-format-t">cairo_format_t</link> format,
<link linkend="int">int</link> width,
<link linkend="int">int</link> height);
<link linkend="cairo-surface-t">cairo_surface_t</link>* <link linkend="cairo-image-surface-create-for-data">cairo_image_surface_create_for_data</link>
- (<link linkend="char">char</link> *data,
+ (unsigned <link linkend="char">char</link> *data,
<link linkend="cairo-format-t">cairo_format_t</link> format,
<link linkend="int">int</link> width,
<link linkend="int">int</link> height,
<link linkend="int">int</link> stride);
+<link linkend="int">int</link> <link linkend="cairo-image-surface-get-width">cairo_image_surface_get_width</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);
+<link linkend="int">int</link> <link linkend="cairo-image-surface-get-height">cairo_image_surface_get_height</link> (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);
+<link linkend="void">void</link> (<link linkend="cairo-destroy-func-t">*cairo_destroy_func_t</link>) (<link linkend="void">void</link> *data);
+ <link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link>;
+<link linkend="cairo-status-t">cairo_status_t</link> (<link linkend="cairo-read-func-t">*cairo_read_func_t</link>) (<link linkend="void">void</link> *closure,
+ unsigned <link linkend="char">char</link> *data,
+ unsigned <link linkend="int">int</link> length);
+<link linkend="cairo-status-t">cairo_status_t</link> (<link linkend="cairo-write-func-t">*cairo_write_func_t</link>) (<link linkend="void">void</link> *closure,
+ unsigned <link linkend="char">char</link> *data,
+ unsigned <link linkend="int">int</link> length);
</synopsis>
</refsynopsisdiv>
@@ -297,18 +290,43 @@ including coordinates of yet to be drawn shapes.</para>
</para></refsect2>
<refsect2>
<title><anchor id="cairo-create"/>cairo_create ()</title>
-<indexterm><primary>cairo_create</primary></indexterm><programlisting><link linkend="cairo-t">cairo_t</link>* cairo_create (void);</programlisting>
+<indexterm><primary>cairo_create</primary></indexterm><programlisting><link linkend="cairo-t">cairo_t</link>* cairo_create (<link linkend="cairo-surface-t">cairo_surface_t</link> *target);</programlisting>
+<para>
+Creates a new <link linkend="cairo-t"><type>cairo_t</type></link> with all graphics state parameters set to
+default values and with <parameter>target</parameter> as a target surface. The target
+surface should be constructed with a backend-specific function such
+as cairo_image_surface_create (or any other
+cairo_&lt;backend&gt;_surface_create variant).
+</para>
<para>
-Creates a new <link linkend="cairo-t"><type>cairo_t</type></link> with default values. The target
-surface must be set on the <link linkend="cairo-t"><type>cairo_t</type></link> with <link linkend="cairo-set-target-surface"><function>cairo_set_target_surface()</function></link>,
-or a backend-specific function like <link linkend="cairo-set-target-image"><function>cairo_set_target_image()</function></link> before
-drawing with the <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
+This function references <parameter>target</parameter>, so you can immediately
+call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> on it if you don't need to
+maintain a separate reference to it.
+</para>
+<para>
+Note that there are restrictions on using the same surface in
+multiple contexts at the same time. If, after creating <parameter>cr_a</parameter> with
+<parameter>surface</parameter> you also create <parameter>cr_b</parameter> with the same surface, you must
+ensure that <parameter>cr_b</parameter> has finished using <parameter>surface</parameter> before resuming use
+of <parameter>cr_a</parameter>. Currently, the only way time at which this is guaranteed
+is when the the last reference to <parameter>cr_b</parameter> is released with
+<link linkend="cairo-destroy"><function>cairo_destroy()</function></link>. (XXX: We need to add a <link linkend="cairo-finish"><function>cairo_finish()</function></link> call to
+provide a way to achieve this explicitly). See also the
+<literal>CAIRO_STATUS_BAD_NESTING</literal> status.</para>
<para>
</para><variablelist role="params">
+<varlistentry><term><parameter>target</parameter>&nbsp;:</term>
+<listitem><simpara> target surface for the context
+</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly allocated <link linkend="cairo-t"><type>cairo_t</type></link> with a reference
count of 1. The initial reference count should be released
with <link linkend="cairo-destroy"><function>cairo_destroy()</function></link> when you are done using the <link linkend="cairo-t"><type>cairo_t</type></link>.
+ This function never returns <literal>NULL</literal>. If memory cannot be
+ allocated, a special <link linkend="cairo-t"><type>cairo_t</type></link> object will be returned on
+ which <link linkend="cairo-status"><function>cairo_status()</function></link> returns <literal>CAIRO_STATUS_NO_MEMORY</literal>.
+ You can use this object normally, but no drawing will
+ be done.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -331,7 +349,7 @@ is made.</para>
<para>
Decreases the reference count on <parameter>cr</parameter> by one. If the result
is zero, then <parameter>cr</parameter> and all associated resources are freed.
-See <link linkend="cairo-destroy"><function>cairo_destroy()</function></link>.</para>
+See <link linkend="cairo-reference"><function>cairo_reference()</function></link>.</para>
<para>
</para><variablelist role="params">
@@ -377,49 +395,6 @@ saved states.</para>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-copy"/>cairo_copy ()</title>
-<indexterm><primary>cairo_copy</primary></indexterm><programlisting><link linkend="void">void</link> cairo_copy (<link linkend="cairo-t">cairo_t</link> *dest,
- <link linkend="cairo-t">cairo_t</link> *src);</programlisting>
-<para>
-This function copies all current state information from src to
-dest. This includes the current point and path, the target surface,
-the transformation matrix, and so forth.
-</para>
-<para>
-The stack of states saved with <link linkend="cairo-save"><function>cairo_save()</function></link> is <emphasis>not</emphasis>
-not copied; nor are any saved states on <parameter>dest</parameter> cleared. The
-operation only copies the current state of <parameter>src</parameter> to the current
-state of <parameter>dest</parameter>.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>dest</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>src</parameter>&nbsp;:</term>
-<listitem><simpara> another <link linkend="cairo-t"><type>cairo_t</type></link>
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-set-target-surface"/>cairo_set_target_surface ()</title>
-<indexterm><primary>cairo_set_target_surface</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_surface (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-surface-t">cairo_surface_t</link> *surface);</programlisting>
-<para>
-Directs output for a <link linkend="cairo-t"><type>cairo_t</type></link> to a given surface. The surface
-will be referenced by the <link linkend="cairo-t"><type>cairo_t</type></link>, so you can immediately
-call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> on it if you don't need to
-keep a reference to it around.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
<title><anchor id="cairo-format-t"/>enum cairo_format_t</title>
<indexterm><primary>cairo_format_t</primary></indexterm><programlisting>typedef enum cairo_format {
CAIRO_FORMAT_ARGB32,
@@ -438,7 +413,7 @@ image data.</para>
<term><literal>CAIRO_FORMAT_ARGB32</literal></term>
<listitem><simpara> each pixel is a 32-bit quantity, with
alpha in the upper 8 bits, then red, then green, then blue.
- The 32-bit quanties are stored native-endian. Pre-multiplied
+ The 32-bit quantities are stored native-endian. Pre-multiplied
alpha is used. (That is, 50% transparent red is 0x80800000,
not 0x80ff0000.)
</simpara></listitem>
@@ -468,60 +443,22 @@ image data.</para>
</varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-set-target-image"/>cairo_set_target_image ()</title>
-<indexterm><primary>cairo_set_target_image</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_target_image (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="char">char</link> *data,
- <link linkend="cairo-format-t">cairo_format_t</link> format,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height,
- <link linkend="int">int</link> stride);</programlisting>
-<para>
-Directs output for a <link linkend="cairo-t"><type>cairo_t</type></link> to an in-memory image. The output
-buffer must be kept around until the <link linkend="cairo-t"><type>cairo_t</type></link> is destroyed or set
-to to have a different target. The initial contents of <parameter>buffer</parameter>
-will be used as the inital image contents; you must explicitely
-clear the buffer, using, for example, <link linkend="cairo-rectangle"><function>cairo_rectangle()</function></link> and
-<link linkend="cairo-fill"><function>cairo_fill()</function></link> if you want it cleared.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
-<listitem><simpara> a pointer to a buffer supplied by the application
- in which to write contents.
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
-<listitem><simpara> the format of pixels in the buffer
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
-<listitem><simpara> the width of the image to be stored in the buffer
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
-<listitem><simpara> the eight of the image to be stored in the buffer
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>stride</parameter>&nbsp;:</term>
-<listitem><simpara> the number of bytes between the start of rows
- in the buffer. Having this be specified separate from <parameter>width</parameter>
- allows for padding at the end of rows, or for writing
- to a subportion of a larger image.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
<title><anchor id="cairo-operator-t"/>enum cairo_operator_t</title>
-<indexterm><primary>cairo_operator_t</primary></indexterm><programlisting>typedef enum cairo_operator {
+<indexterm><primary>cairo_operator_t</primary></indexterm><programlisting>typedef enum cairo_operator {
CAIRO_OPERATOR_CLEAR,
- CAIRO_OPERATOR_SRC,
- CAIRO_OPERATOR_DST,
+
+ CAIRO_OPERATOR_SOURCE,
CAIRO_OPERATOR_OVER,
- CAIRO_OPERATOR_OVER_REVERSE,
CAIRO_OPERATOR_IN,
- CAIRO_OPERATOR_IN_REVERSE,
CAIRO_OPERATOR_OUT,
- CAIRO_OPERATOR_OUT_REVERSE,
CAIRO_OPERATOR_ATOP,
- CAIRO_OPERATOR_ATOP_REVERSE,
+
+ CAIRO_OPERATOR_DEST,
+ CAIRO_OPERATOR_DEST_OVER,
+ CAIRO_OPERATOR_DEST_IN,
+ CAIRO_OPERATOR_DEST_OUT,
+ CAIRO_OPERATOR_DEST_ATOP,
+
CAIRO_OPERATOR_XOR,
CAIRO_OPERATOR_ADD,
CAIRO_OPERATOR_SATURATE
@@ -535,33 +472,44 @@ clear the buffer, using, for example, <link linkend="cairo-rectangle"><function>
<indexterm><primary>cairo_set_operator</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_operator (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-operator-t">cairo_operator_t</link> op);</programlisting>
<para>
+Sets the compositing operator to be used for all drawing
+operations. See <link linkend="cairo-operator-t"><type>cairo_operator_t</type></link> for details on the semantics of
+each available drawing operator.
+</para>
+<para>
+XXX: I'd also like to direct the reader's attention to some
+(not-yet-written) section on cairo's imaging model. How would I do
+that if such a section existed? (cworth).</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>op</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a compositing operator, specified as a <link linkend="cairo-operator-t"><type>cairo_operator_t</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-set-rgb-color"/>cairo_set_rgb_color ()</title>
-<indexterm><primary>cairo_set_rgb_color</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_rgb_color (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-set-source-rgb"/>cairo_set_source_rgb ()</title>
+<indexterm><primary>cairo_set_source_rgb</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_source_rgb (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> red,
<link linkend="double">double</link> green,
<link linkend="double">double</link> blue);</programlisting>
<para>
-Sets a constant color for filling and stroking. This replaces any
-pattern set with <link linkend="cairo-set-pattern"><function>cairo_set_pattern()</function></link>. The color components are
-floating point numbers in the range 0 to 1. If the values passed in
-are outside that range, they will be clamped.</para>
+Sets the source pattern within <parameter>cr</parameter> to an opaque color. This opaque
+color will then be used for any subsequent drawing operation until
+a new source pattern is set.
+</para>
+<para>
+The color components are floating point numbers in the range 0 to
+1. If the values passed in are outside that range, they will be
+clamped.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>red</parameter>&nbsp;:</term>
<listitem><simpara> red component of color
@@ -574,39 +522,86 @@ are outside that range, they will be clamped.</para>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-set-pattern"/>cairo_set_pattern ()</title>
-<indexterm><primary>cairo_set_pattern</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_pattern (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);</programlisting>
+<title><anchor id="cairo-set-source-rgba"/>cairo_set_source_rgba ()</title>
+<indexterm><primary>cairo_set_source_rgba</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_source_rgba (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="double">double</link> red,
+ <link linkend="double">double</link> green,
+ <link linkend="double">double</link> blue,
+ <link linkend="double">double</link> alpha);</programlisting>
+<para>
+Sets the source pattern within <parameter>cr</parameter> to a translucent color. This
+color will then be used for any subsequent drawing operation until
+a new source pattern is set.
+</para>
+<para>
+The color and alpha components are floating point numbers in the
+range 0 to 1. If the values passed in are outside that range, they
+will be clamped.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>pattern</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<varlistentry><term><parameter>red</parameter>&nbsp;:</term>
+<listitem><simpara> red component of color
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>green</parameter>&nbsp;:</term>
+<listitem><simpara> green component of color
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>blue</parameter>&nbsp;:</term>
+<listitem><simpara> blue component of color
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>alpha</parameter>&nbsp;:</term>
+<listitem><simpara> alpha component of color
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-set-alpha"/>cairo_set_alpha ()</title>
-<indexterm><primary>cairo_set_alpha</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_alpha (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="double">double</link> alpha);</programlisting>
+<title><anchor id="cairo-set-source"/>cairo_set_source ()</title>
+<indexterm><primary>cairo_set_source</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_source (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-pattern-t">cairo_pattern_t</link> *source);</programlisting>
+<para>
+Sets the source pattern within <parameter>cr</parameter> to <parameter>source</parameter>. This pattern
+will then be used for any subsequent drawing operation until a new
+source pattern is set.
+</para>
<para>
-Sets an overall alpha value used for stroking and filling. This
-value is multiplied with any alpha value coming from a gradient or
-image pattern.</para>
+XXX: I'd also like to direct the reader's attention to some
+(not-yet-written) section on cairo's imaging model. How would I do
+that if such a section existed? (cworth).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>alpha</parameter>&nbsp;:</term>
-<listitem><simpara> the alpha value. 0 is transparent, 1 fully opaque.
- if the value is outside the range 0 to 1, it will be
- clamped to that range.
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> to be used as the source for
+subsequent drawing operations.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-set-source-surface"/>cairo_set_source_surface ()</title>
+<indexterm><primary>cairo_set_source_surface</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_source_surface (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> x,
+ <link linkend="double">double</link> y);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -673,15 +668,19 @@ filled.
<indexterm><primary>cairo_set_fill_rule</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_fill_rule (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link> fill_rule);</programlisting>
<para>
+Set the current fill rule within the cairo context. The fill rule
+is used to determine which regions are inside or outside a complex
+(potentially self-intersecting) path. The current fill rule affects
+both cairo_fill and cairo_clip. See <link linkend="cairo-fill-rule-t"><type>cairo_fill_rule_t</type></link> for details
+on the semantics of each available fill rule.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>fill_rule</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a fill rule, specified as a <link linkend="cairo-fill-rule-t"><type>cairo_fill_rule_t</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -689,15 +688,23 @@ filled.
<indexterm><primary>cairo_set_line_width</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_line_width (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> width);</programlisting>
<para>
+Sets the current line width within the cairo context. The line
+width specifies the diameter of a pen that is circular in
+user-space.
+</para>
+<para>
+As with the other stroke parameters, the current line cap style is
+examined by <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>, <link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link>, and
+<link linkend="cairo-stroke-to-path"><function>cairo_stroke_to_path()</function></link>, but does not have any effect during path
+construction.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a line width, as a user-space value
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -734,15 +741,23 @@ enumeration for style of line-endings</para>
<indexterm><primary>cairo_set_line_cap</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_line_cap (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-line-cap-t">cairo_line_cap_t</link> line_cap);</programlisting>
<para>
+Sets the current line cap style within the cairo context. See
+<link linkend="cairo-line-cap-t"><type>cairo_line_cap_t</type></link> for details about how the available line cap
+styles are drawn.
+</para>
+<para>
+As with the other stroke parameters, the current line cap style is
+examined by <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>, <link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link>, and
+<link linkend="cairo-stroke-to-path"><function>cairo_stroke_to_path()</function></link>, but does not have any effect during path
+construction.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context, as a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>line_cap</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a line cap style, as a <link linkend="cairo-line-cap-t"><type>cairo_line_cap_t</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -761,15 +776,23 @@ enumeration for style of line-endings</para>
<indexterm><primary>cairo_set_line_join</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_line_join (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-line-join-t">cairo_line_join_t</link> line_join);</programlisting>
<para>
+Sets the current line join style within the cairo context. See
+<link linkend="cairo-line-join-t"><type>cairo_line_join_t</type></link> for details about how the available line join
+styles are drawn.
+</para>
+<para>
+As with the other stroke parameters, the current line join style is
+examined by <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>, <link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link>, and
+<link linkend="cairo-stroke-to-path"><function>cairo_stroke_to_path()</function></link>, but does not have any effect during path
+construction.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context, as a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>line_join</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a line joint style, as a <link linkend="cairo-line-join-t"><type>cairo_line_join_t</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -818,18 +841,22 @@ enumeration for style of line-endings</para>
<link linkend="double">double</link> tx,
<link linkend="double">double</link> ty);</programlisting>
<para>
+Modifies the current transformation matrix (CTM) by tanslating the
+user-space origin by (<parameter>tx</parameter>, <parameter>ty</parameter>). This offset is interpreted as a
+user-space coordinate according to the CTM in place before the new
+call to cairo_translate. In other words, the translation of the
+user-space origin takes place after any existing transformation.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>tx</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> amount to translate in the X direction
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>ty</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> amount to translate in the Y direction
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -838,18 +865,21 @@ enumeration for style of line-endings</para>
<link linkend="double">double</link> sx,
<link linkend="double">double</link> sy);</programlisting>
<para>
+Modifies the current transformation matrix (CTM) by scaling the X
+and Y user-space axes by <parameter>sx</parameter> and <parameter>sy</parameter> respectively. The scaling of
+the axes takes place after any existing transformation of user
+space.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sx</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> scale factor for the X dimension
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sy</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> scale factor for the Y dimension
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -857,152 +887,160 @@ enumeration for style of line-endings</para>
<indexterm><primary>cairo_rotate</primary></indexterm><programlisting><link linkend="void">void</link> cairo_rotate (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> angle);</programlisting>
<para>
+Modifies the current transformation matrix (CTM) by rotating the
+user-space axes by <parameter>angle</parameter> radians. The rotation of the axes takes
+places after any existing transformation of user space. The
+rotation direction for positive angles is from the positive X axis
+toward the positive Y axis.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>angle</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> angle (in radians) by which the user-space axes will be
+rotated
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-concat-matrix"/>cairo_concat_matrix ()</title>
-<indexterm><primary>cairo_concat_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_concat_matrix (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<title><anchor id="cairo-transform"/>cairo_transform ()</title>
+<indexterm><primary>cairo_transform</primary></indexterm><programlisting><link linkend="void">void</link> cairo_transform (<link linkend="cairo-t">cairo_t</link> *cr,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<para>
+Modifies the current transformation matrix (CTM) by applying
+<parameter>matrix</parameter> as an additional transformation. The new transformation of
+user space takes place after any existing transformation.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a transformation to be applied to the user-space axes
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-set-matrix"/>cairo_set_matrix ()</title>
<indexterm><primary>cairo_set_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_matrix (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<para>
+Modifies the current transformation matrix (CTM) by setting it
+equal to <parameter>matrix</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-default-matrix"/>cairo_default_matrix ()</title>
-<indexterm><primary>cairo_default_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_default_matrix (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a transformation matrix from user space to device space
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-identity-matrix"/>cairo_identity_matrix ()</title>
<indexterm><primary>cairo_identity_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_identity_matrix (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
<para>
+Resets the current transformation matrix (CTM) by setting it equal
+to the identity matrix. That is, the user-space and device-space
+axes will be aligned and one user-space unit will transform to one
+device-space unit.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-transform-point"/>cairo_transform_point ()</title>
-<indexterm><primary>cairo_transform_point</primary></indexterm><programlisting><link linkend="void">void</link> cairo_transform_point (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-user-to-device"/>cairo_user_to_device ()</title>
+<indexterm><primary>cairo_user_to_device</primary></indexterm><programlisting><link linkend="void">void</link> cairo_user_to_device (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *x,
<link linkend="double">double</link> *y);</programlisting>
<para>
+Transform a coordinate from user space to device space by
+multiplying the given point by the current transformation matrix
+(CTM).</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> X value of coordinate (in/out parameter)
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> Y value of coordinate (in/out parameter)
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-transform-distance"/>cairo_transform_distance ()</title>
-<indexterm><primary>cairo_transform_distance</primary></indexterm><programlisting><link linkend="void">void</link> cairo_transform_distance (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-user-to-device-distance"/>cairo_user_to_device_distance ()</title>
+<indexterm><primary>cairo_user_to_device_distance</primary></indexterm><programlisting><link linkend="void">void</link> cairo_user_to_device_distance (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *dx,
<link linkend="double">double</link> *dy);</programlisting>
<para>
+Transform a distance vector from user space to device space. This
+function is similar to <link linkend="cairo-user-to-device"><function>cairo_user_to_device()</function></link> except that the
+translation components of the CTM will be ignored when transforming
+(<parameter>dx</parameter>,<parameter>dy</parameter>).</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dx</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> X component of a distance vector (in/out parameter)
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dy</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> Y component of a distance vector (in/out parameter)
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-inverse-transform-point"/>cairo_inverse_transform_point ()</title>
-<indexterm><primary>cairo_inverse_transform_point</primary></indexterm><programlisting><link linkend="void">void</link> cairo_inverse_transform_point (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-device-to-user"/>cairo_device_to_user ()</title>
+<indexterm><primary>cairo_device_to_user</primary></indexterm><programlisting><link linkend="void">void</link> cairo_device_to_user (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *x,
<link linkend="double">double</link> *y);</programlisting>
<para>
+Transform a coordinate from device space to user space by
+multiplying the given point by the inverse of the current
+transformation matrix (CTM).</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> X value of coordinate (in/out parameter)
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> Y value of coordinate (in/out parameter)
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-inverse-transform-distance"/>cairo_inverse_transform_distance ()</title>
-<indexterm><primary>cairo_inverse_transform_distance</primary></indexterm><programlisting><link linkend="void">void</link> cairo_inverse_transform_distance
- (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-device-to-user-distance"/>cairo_device_to_user_distance ()</title>
+<indexterm><primary>cairo_device_to_user_distance</primary></indexterm><programlisting><link linkend="void">void</link> cairo_device_to_user_distance (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="double">double</link> *dx,
<link linkend="double">double</link> *dy);</programlisting>
<para>
+Transform a distance vector from device space to user space. This
+function is similar to <link linkend="cairo-device-to-user"><function>cairo_device_to_user()</function></link> except that the
+translation components of the inverse CTM will be ignored when
+transforming (<parameter>dx</parameter>,<parameter>dy</parameter>).</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dx</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> X component of a distance vector (in/out parameter)
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dy</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> Y component of a distance vector (in/out parameter)
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -1130,7 +1168,7 @@ cairo_restore (cr);
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a Cairo context
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>xc</parameter>&nbsp;:</term>
<listitem><simpara> X position of the center of the arc
@@ -1165,7 +1203,7 @@ the arc in the direction of decreasing angle.</para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara> a Cairo context
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>xc</parameter>&nbsp;:</term>
<listitem><simpara> X position of the center of the arc
@@ -1300,27 +1338,150 @@ the arc in the direction of decreasing angle.</para>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
+<title><anchor id="cairo-paint"/>cairo_paint ()</title>
+<indexterm><primary>cairo_paint</primary></indexterm><programlisting><link linkend="void">void</link> cairo_paint (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+A drawing operator that paints the current source everywhere within
+the current clip region.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-paint-with-alpha"/>cairo_paint_with_alpha ()</title>
+<indexterm><primary>cairo_paint_with_alpha</primary></indexterm><programlisting><link linkend="void">void</link> cairo_paint_with_alpha (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="double">double</link> alpha);</programlisting>
+<para>
+A drawing operator that paints the current source everywhere within
+the current clip region using a mask of constant alpha value
+<parameter>alpha</parameter>. The effect is similar to <link linkend="cairo-paint"><function>cairo_paint()</function></link>, but the drawing
+is faded out using the alpha value.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>alpha</parameter>&nbsp;:</term>
+<listitem><simpara> alpha value, between 0 (transparent) and 1 (opaque)
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-mask"/>cairo_mask ()</title>
+<indexterm><primary>cairo_mask</primary></indexterm><programlisting><link linkend="void">void</link> cairo_mask (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-pattern-t">cairo_pattern_t</link> *pattern);</programlisting>
+<para>
+A drawing operator that paints the current source
+using the alpha channel of <parameter>pattern</parameter> as a mask. (Opaque
+areas of <parameter>mask</parameter> are painted with the source, transparent
+areas are not painted.)</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>pattern</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-mask-surface"/>cairo_mask_surface ()</title>
+<indexterm><primary>cairo_mask_surface</primary></indexterm><programlisting><link linkend="void">void</link> cairo_mask_surface (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
+ <link linkend="double">double</link> surface_x,
+ <link linkend="double">double</link> surface_y);</programlisting>
+<para>
+A drawing operator that paints the current source
+using the alpha channel of <parameter>surface</parameter> as a mask. (Opaque
+areas of <parameter>surface</parameter> are painted with the source, transparent
+areas are not painted.)</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>surface_x</parameter>&nbsp;:</term>
+<listitem><simpara> X coordinate at which to place the origin of <parameter>surface</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>surface_y</parameter>&nbsp;:</term>
+<listitem><simpara> Y coordinate at which to place the origin of <parameter>surface</parameter>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
<title><anchor id="cairo-stroke"/>cairo_stroke ()</title>
<indexterm><primary>cairo_stroke</primary></indexterm><programlisting><link linkend="void">void</link> cairo_stroke (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
<para>
+A drawing operator that strokes the current path according to the
+current line width, line join, line cap, and dash settings. After
+cairo_stroke, the current path will be cleared from the cairo
+context. See <link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link>, <link linkend="cairo-set-line-join"><function>cairo_set_line_join()</function></link>,
+<link linkend="cairo-set-line-cap"><function>cairo_set_line_cap()</function></link>, <link linkend="cairo-set-dash"><function>cairo_set_dash()</function></link>, and
+<link linkend="cairo-stroke-preserve"><function>cairo_stroke_preserve()</function></link>.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-
+<listitem><simpara> a cairo context
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-stroke-preserve"/>cairo_stroke_preserve ()</title>
+<indexterm><primary>cairo_stroke_preserve</primary></indexterm><programlisting><link linkend="void">void</link> cairo_stroke_preserve (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+A drawing operator that strokes the current path according to the
+current line width, line join, line cap, and dash settings. Unlike
+<link linkend="cairo-stroke"><function>cairo_stroke()</function></link>, cairo_stroke_preserve preserves the path within the
+cairo context.
+</para>
+<para>
+See <link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link>, <link linkend="cairo-set-line-join"><function>cairo_set_line_join()</function></link>,
+<link linkend="cairo-set-line-cap"><function>cairo_set_line_cap()</function></link>, <link linkend="cairo-set-dash"><function>cairo_set_dash()</function></link>, and
+<link linkend="cairo-stroke-preserve"><function>cairo_stroke_preserve()</function></link>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-fill"/>cairo_fill ()</title>
<indexterm><primary>cairo_fill</primary></indexterm><programlisting><link linkend="void">void</link> cairo_fill (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
<para>
+A drawing operator that fills the current path according to the
+current fill rule. After cairo_fill, the current path will be
+cleared from the cairo context. See <link linkend="cairo-set-fill-rule"><function>cairo_set_fill_rule()</function></link> and
+<link linkend="cairo-fill-preserve"><function>cairo_fill_preserve()</function></link>.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-
+<listitem><simpara> a cairo context
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-fill-preserve"/>cairo_fill_preserve ()</title>
+<indexterm><primary>cairo_fill_preserve</primary></indexterm><programlisting><link linkend="void">void</link> cairo_fill_preserve (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+A drawing operator that fills the current path according to the
+current fill rule. Unlike <link linkend="cairo-fill"><function>cairo_fill()</function></link>, cairo_fill_preserve
+preserves the path within the cairo context.
+</para>
+<para>
+See <link linkend="cairo-set-fill-rule"><function>cairo_set_fill_rule()</function></link> and <link linkend="cairo-fill"><function>cairo_fill()</function></link>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -1398,7 +1559,7 @@ the arc in the direction of decreasing angle.</para>
<para>
<link linkend="cairo-bool-t"><type>cairo_bool_t</type></link> is used for boolean values. Returns of type
<link linkend="cairo-bool-t"><type>cairo_bool_t</type></link> will always be either 0 or 1, but testing against
-these values explicitely is not encouraged; just use the
+these values explicitly is not encouraged; just use the
value as a boolean condition.
</para>
<para>
@@ -1467,43 +1628,90 @@ value as a boolean condition.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-init-clip"/>cairo_init_clip ()</title>
-<indexterm><primary>cairo_init_clip</primary></indexterm><programlisting><link linkend="void">void</link> cairo_init_clip (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-clip"/>cairo_clip ()</title>
+<indexterm><primary>cairo_clip</primary></indexterm><programlisting><link linkend="void">void</link> cairo_clip (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Establishes a new clip region by intersecting the current clip
+region with the current path as it would be filled by <link linkend="cairo-fill"><function>cairo_fill()</function></link>
+and according to the current fill rule (see <link linkend="cairo-set-fill-rule"><function>cairo_set_fill_rule()</function></link>).
+</para>
+<para>
+After cairo_clip, the current path will be cleared from the cairo
+context.
+</para>
+<para>
+The current clip region affects all drawing operations by
+effectively masking out any changes to the surface that are outside
+the current clip region.
+</para>
+<para>
+Calling <link linkend="cairo-clip"><function>cairo_clip()</function></link> can only make the clip region smaller, never
+larger. But the current clip is part of the graphics state, so a
+tempoarary restriction of the clip region can be achieved by
+calling <link linkend="cairo-clip"><function>cairo_clip()</function></link> within a <link linkend="cairo-save"><function>cairo_save()</function></link>/<link linkend="cairo-restore"><function>cairo_restore()</function></link>
+pair. The only other means of increasing the size of the clip
+region is <link linkend="cairo-reset-clip"><function>cairo_reset_clip()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-clip"/>cairo_clip ()</title>
-<indexterm><primary>cairo_clip</primary></indexterm><programlisting><link linkend="void">void</link> cairo_clip (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-clip-preserve"/>cairo_clip_preserve ()</title>
+<indexterm><primary>cairo_clip_preserve</primary></indexterm><programlisting><link linkend="void">void</link> cairo_clip_preserve (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Establishes a new clip region by intersecting the current clip
+region with the current path as it would be filled by <link linkend="cairo-fill"><function>cairo_fill()</function></link>
+and according to the current fill rule (see <link linkend="cairo-set-fill-rule"><function>cairo_set_fill_rule()</function></link>).
+</para>
+<para>
+Unlike <link linkend="cairo-clip"><function>cairo_clip()</function></link>, cairo_clip_preserve preserves the path within
+the cairo context.
+</para>
+<para>
+The current clip region affects all drawing operations by
+effectively masking out any changes to the surface that are outside
+the current clip region.
+</para>
+<para>
+Calling <link linkend="cairo-clip"><function>cairo_clip()</function></link> can only make the clip region smaller, never
+larger. But the current clip is part of the graphics state, so a
+tempoarary restriction of the clip region can be achieved by
+calling <link linkend="cairo-clip"><function>cairo_clip()</function></link> within a <link linkend="cairo-save"><function>cairo_save()</function></link>/<link linkend="cairo-restore"><function>cairo_restore()</function></link>
+pair. The only other means of increasing the size of the clip
+region is <link linkend="cairo-reset-clip"><function>cairo_reset_clip()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-font-t"/>cairo_font_t</title>
-<indexterm><primary>cairo_font_t</primary></indexterm><programlisting>typedef struct _cairo_font cairo_font_t;
-</programlisting>
+<title><anchor id="cairo-reset-clip"/>cairo_reset_clip ()</title>
+<indexterm><primary>cairo_reset_clip</primary></indexterm><programlisting><link linkend="void">void</link> cairo_reset_clip (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Reset the current clip region to its original, unrestricted
+state. That is, set the clip region to an infinitely large shape
+containing the target surface. Equivalently, if infinity is too
+hard to grasp, one can imagine the clip region being reset to the
+exact bounds of the target surface.
+</para>
<para>
-A <link linkend="cairo-font-t"><type>cairo_font_t</type></link> is a font scaled to a particular size and device
-resolution. A font can be set on a <link linkend="cairo-t"><type>cairo_t</type></link> by using
-<link linkend="cairo-set-font"><function>cairo_set_font()</function></link> assuming that the current transformation and
-target surface of the <link linkend="cairo-t"><type>cairo_t</type></link> match that for which the
-<link linkend="cairo-font-t"><type>cairo_font_t</type></link> was created. The effect of using a mismatched
-<link linkend="cairo-font-t"><type>cairo_font_t</type></link> will be incorrect font metrics.</para>
+Note that code meant to be reusable should not call
+<link linkend="cairo-reset-clip"><function>cairo_reset_clip()</function></link> as it will cause results unexpected by
+higher-level code which calls <link linkend="cairo-clip"><function>cairo_clip()</function></link>. Consider using
+<link linkend="cairo-save"><function>cairo_save()</function></link> and <link linkend="cairo-restore"><function>cairo_restore()</function></link> around <link linkend="cairo-clip"><function>cairo_clip()</function></link> as a more
+robust means of temporarily restricting the clip region.</para>
<para>
-</para></refsect2>
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-glyph-t"/>cairo_glyph_t</title>
<indexterm><primary>cairo_glyph_t</primary></indexterm><programlisting>typedef struct {
@@ -1551,82 +1759,6 @@ with respect to the overall origin</para>
</varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-text-extents-t"/>cairo_text_extents_t</title>
-<indexterm><primary>cairo_text_extents_t</primary></indexterm><programlisting>typedef struct {
- double x_bearing;
- double y_bearing;
- double width;
- double height;
- double x_advance;
- double y_advance;
-} cairo_text_extents_t;
-</programlisting>
-<para>
-The <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link>&lt; structure stores the extents of a single
-glyph or a string of glyphs in user-space coordinates. Because text
-extents are in user-space coordinates, they don't scale along with
-the current transformation matrix. If you call
-<literal>cairo_scale(cr, 2.0, 2.0)</literal>, text will
-be drawn twice as big, but the reported text extents will not be
-doubled. They will change slightly due to hinting (so you can't
-assume that metrics are independent of the transformation matrix),
-but otherwise will remain unchanged.</para>
-<para>
-
-</para><variablelist role="struct">
-<varlistentry>
-<term><link linkend="double">double</link>&nbsp;<structfield>x_bearing</structfield>;</term>
-<listitem><simpara> the horizontal distance from the origin to the
- leftmost part of the glyphs as drawn. Positive if the
- glyphs lie entirely to the right of the origin.
-</simpara></listitem>
-</varlistentry>
-<varlistentry>
-<term><link linkend="double">double</link>&nbsp;<structfield>y_bearing</structfield>;</term>
-<listitem><simpara> the vertical distance from the origin to the
- topmost part of the glyphs as drawn. Positive only if the
- glyphs lie completely below the origin; will usually be
- negative.
-</simpara></listitem>
-</varlistentry>
-<varlistentry>
-<term><link linkend="double">double</link>&nbsp;<structfield>width</structfield>;</term>
-<listitem><simpara> width of the glyphs as drawn
-</simpara></listitem>
-</varlistentry>
-<varlistentry>
-<term><link linkend="double">double</link>&nbsp;<structfield>height</structfield>;</term>
-<listitem><simpara> height of the glyphs as drawn
-</simpara></listitem>
-</varlistentry>
-<varlistentry>
-<term><link linkend="double">double</link>&nbsp;<structfield>x_advance</structfield>;</term>
-<listitem><simpara>distance to advance in the X direction
- after drawing these glyphs
-</simpara></listitem>
-</varlistentry>
-<varlistentry>
-<term><link linkend="double">double</link>&nbsp;<structfield>y_advance</structfield>;</term>
-<listitem><simpara> distance to advance in the Y direction
- after drawing these glyphs. Will typically be zero except
- for vertical text layout as found in East-Asian languages.
-</simpara></listitem>
-</varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-font-extents-t"/>cairo_font_extents_t</title>
-<indexterm><primary>cairo_font_extents_t</primary></indexterm><programlisting>typedef struct {
- double ascent;
- double descent;
- double height;
- double max_x_advance;
- double max_y_advance;
-} cairo_font_extents_t;
-</programlisting>
-<para>
-
-</para></refsect2>
-<refsect2>
<title><anchor id="cairo-font-slant-t"/>enum cairo_font_slant_t</title>
<indexterm><primary>cairo_font_slant_t</primary></indexterm><programlisting>typedef enum cairo_font_slant {
CAIRO_FONT_SLANT_NORMAL,
@@ -1648,65 +1780,98 @@ but otherwise will remain unchanged.</para>
</para></refsect2>
<refsect2>
-<title><anchor id="cairo-select-font"/>cairo_select_font ()</title>
-<indexterm><primary>cairo_select_font</primary></indexterm><programlisting><link linkend="void">void</link> cairo_select_font (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-select-font-face"/>cairo_select_font_face ()</title>
+<indexterm><primary>cairo_select_font_face</primary></indexterm><programlisting><link linkend="void">void</link> cairo_select_font_face (<link linkend="cairo-t">cairo_t</link> *cr,
const <link linkend="char">char</link> *family,
<link linkend="cairo-font-slant-t">cairo_font_slant_t</link> slant,
<link linkend="cairo-font-weight-t">cairo_font_weight_t</link> weight);</programlisting>
<para>
+Selects a family and style of font from a simplified description as
+a family name, slant and weight. This function is meant to be used
+only for applications with simple font needs: Cairo doesn't provide
+for operations such as listing all available fonts on the system,
+and it is expected that most applications will need to use a more
+comprehensive font handling and text layout library in addition to
+Cairo.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>family</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a font family name, encoded in UTF-8
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>slant</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> the slant for the font
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>weight</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> the weight for the font
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-scale-font"/>cairo_scale_font ()</title>
-<indexterm><primary>cairo_scale_font</primary></indexterm><programlisting><link linkend="void">void</link> cairo_scale_font (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="double">double</link> scale);</programlisting>
+<title><anchor id="cairo-set-font-size"/>cairo_set_font_size ()</title>
+<indexterm><primary>cairo_set_font_size</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_font_size (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="double">double</link> size);</programlisting>
+<para>
+Sets the current font matrix to a scale by a factor of <parameter>size</parameter>, replacing
+any font matrix previously set with <link linkend="cairo-set-font-size"><function>cairo_set_font_size()</function></link> or
+<link linkend="cairo-set-font-matrix"><function>cairo_set_font_matrix()</function></link>. This results in a font size of <parameter>size</parameter> user space
+units. (More precisely, this matrix will result in the font's
+em-square being a <parameter>size</parameter> by <parameter>size</parameter> square in user space.)</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>scale</parameter>&nbsp;:</term>
-<listitem><simpara>
-
+<varlistentry><term><parameter>size</parameter>&nbsp;:</term>
+<listitem><simpara> the new font size, in user space units
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-set-font-matrix"/>cairo_set_font_matrix ()</title>
+<indexterm><primary>cairo_set_font_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_font_matrix (<link linkend="cairo-t">cairo_t</link> *cr,
+ const <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<para>
+Sets the current font matrix to <parameter>matrix</parameter>. The font matrix gives a
+transformation from the design space of the font (in this space,
+the em-square is 1 unit by 1 unit) to user space. Normally, a
+simple scale is used (see <link linkend="cairo-set-font-size"><function>cairo_set_font_size()</function></link>), but a more
+complex font matrix can be used to shear the font
+or stretch it unequally along the two axes</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> describing a transform to be applied to
+the current font.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-transform-font"/>cairo_transform_font ()</title>
-<indexterm><primary>cairo_transform_font</primary></indexterm><programlisting><link linkend="void">void</link> cairo_transform_font (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-get-font-matrix"/>cairo_get_font_matrix ()</title>
+<indexterm><primary>cairo_get_font_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_get_font_matrix (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
<para>
+Stores the current font matrix into <parameter>matrix</parameter>. See
+<link linkend="cairo-set-font-matrix"><function>cairo_set_font_matrix()</function></link>.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> return value for the matrix
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-show-text"/>cairo_show_text ()</title>
<indexterm><primary>cairo_show_text</primary></indexterm><programlisting><link linkend="void">void</link> cairo_show_text (<link linkend="cairo-t">cairo_t</link> *cr,
- unsigned <link linkend="char">char</link> *utf8);</programlisting>
+ const <link linkend="char">char</link> *utf8);</programlisting>
<para>
</para><variablelist role="params">
@@ -1740,13 +1905,10 @@ but otherwise will remain unchanged.</para>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-font"/>cairo_current_font ()</title>
-<indexterm><primary>cairo_current_font</primary></indexterm><programlisting><link linkend="cairo-font-t">cairo_font_t</link>* cairo_current_font (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-font-face"/>cairo_get_font_face ()</title>
+<indexterm><primary>cairo_get_font_face</primary></indexterm><programlisting><link linkend="cairo-font-face-t">cairo_font_face_t</link>* cairo_get_font_face (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
<para>
-Gets the current font object for a <link linkend="cairo-t"><type>cairo_t</type></link>. If there is no current
-font object, because the font parameters, transform, or target
-surface has been changed since a font was last used, a font object
-will be created and stored in in the <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
+Gets the current font face for a <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
<para>
</para><variablelist role="params">
@@ -1755,69 +1917,76 @@ will be created and stored in in the <link linkend="cairo-t"><type>cairo_t</type
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current font object. Can return <literal>NULL</literal>
on out-of-memory or if the context is already in
- an error state. This object is owned by Cairo. To keep
- a reference to it, you must call <link linkend="cairo-font-reference"><function>cairo_font_reference()</function></link>.
+ an error state. This object is owned by cairo. To keep
+ a reference to it, you must call <link linkend="cairo-font-face-reference"><function>cairo_font_face_reference()</function></link>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-font-extents"/>cairo_current_font_extents ()</title>
-<indexterm><primary>cairo_current_font_extents</primary></indexterm><programlisting><link linkend="void">void</link> cairo_current_font_extents (<link linkend="cairo-t">cairo_t</link> *cr,
+<title><anchor id="cairo-font-extents"/>cairo_font_extents ()</title>
+<indexterm><primary>cairo_font_extents</primary></indexterm><programlisting><link linkend="void">void</link> cairo_font_extents (<link linkend="cairo-t">cairo_t</link> *cr,
<link linkend="cairo-font-extents-t">cairo_font_extents_t</link> *extents);</programlisting>
<para>
+Gets the font extents for the currently selected font.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>extents</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a <link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> object into which the results
+will be stored.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-set-font"/>cairo_set_font ()</title>
-<indexterm><primary>cairo_set_font</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_font (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-font-t">cairo_font_t</link> *font);</programlisting>
+<title><anchor id="cairo-set-font-face"/>cairo_set_font_face ()</title>
+<indexterm><primary>cairo_set_font_face</primary></indexterm><programlisting><link linkend="void">void</link> cairo_set_font_face (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-font-face-t">cairo_font_face_t</link> *font_face);</programlisting>
<para>
-Replaces the current <link linkend="cairo-font-t"><type>cairo_font_t</type></link> object in the <link linkend="cairo-t"><type>cairo_t</type></link> with
-<parameter>font</parameter>. The replaced font in the <link linkend="cairo-t"><type>cairo_t</type></link> will be destroyed if there
-are no other references to it. Since a <link linkend="cairo-font-t"><type>cairo_font_t</type></link> is specific to
-a particular output device and size, changing the transformation,
-font transformation, or target surfaces of a <link linkend="cairo-t"><type>cairo_t</type></link> will clear
-any previously set font. Setting the font using <link linkend="cairo-set-font"><function>cairo_set_font()</function></link> is
-exclusive with the simple font selection API provided by
-<link linkend="cairo-select-font"><function>cairo_select_font()</function></link>. The size and transformation set by
-<link linkend="cairo-scale-font"><function>cairo_scale_font()</function></link> and <link linkend="cairo-transform-font"><function>cairo_transform_font()</function></link> are ignored unless
-they were taken into account when creating <parameter>font</parameter>.</para>
+Replaces the current <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> object in the <link linkend="cairo-t"><type>cairo_t</type></link> with
+<parameter>font_face</parameter>. The replaced font face in the <link linkend="cairo-t"><type>cairo_t</type></link> will be
+destroyed if there are no other references to it.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-font-t"><type>cairo_font_t</type></link>, or <literal>NULL</literal> to unset any previously set font.
+<varlistentry><term><parameter>font_face</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>, or <literal>NULL</literal> to restore to the default font
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-text-extents"/>cairo_text_extents ()</title>
<indexterm><primary>cairo_text_extents</primary></indexterm><programlisting><link linkend="void">void</link> cairo_text_extents (<link linkend="cairo-t">cairo_t</link> *cr,
- unsigned <link linkend="char">char</link> *utf8,
+ const <link linkend="char">char</link> *utf8,
<link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);</programlisting>
<para>
+Gets the extents for a string of text. The extents describe a
+user-space rectangle that encloses the "inked" portion of the text,
+(as it would be drawn by cairo_show_text). Additionally, the
+x_advance and y_advance values indicate the amount by which the
+current point would be advanced by cairo_show_text.
+</para>
+<para>
+Note that whitespace characters do not directly contribute to the
+size of the rectangle (extents.width and extents.height). They do
+contribute indirectly by changing the position of non-whitespace
+characters. In particular, trailing whitespace characters are
+likely to not affect the size of the rectangle, though they will
+affect the x_advance and y_advance values.</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>utf8</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a string of text, encoded in utf-8
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>extents</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> object into which the results
+will be stored.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -1827,27 +1996,37 @@ they were taken into account when creating <parameter>font</parameter>.</para>
<link linkend="int">int</link> num_glyphs,
<link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);</programlisting>
<para>
+Gets the extents for an array of glyphs. The extents describe a
+user-space rectangle that encloses the "inked" portion of the
+glyphs, (as they would be drawn by cairo_show_glyphs).
+Additionally, the x_advance and y_advance values indicate the
+amount by which the current point would be advanced by
+cairo_show_glyphs.
+</para>
+<para>
+Note that whitespace glyphs do not contribute to the size of the
+rectangle (extents.width and extents.height).</para>
+<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a <link linkend="cairo-t"><type>cairo_t</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>glyphs</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> an array of <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> objects
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>num_glyphs</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> the number of elements in <parameter>glyphs</parameter>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>extents</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<listitem><simpara> a <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> object into which the results
+will be stored
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-text-path"/>cairo_text_path ()</title>
<indexterm><primary>cairo_text_path</primary></indexterm><programlisting><link linkend="void">void</link> cairo_text_path (<link linkend="cairo-t">cairo_t</link> *cr,
- unsigned <link linkend="char">char</link> *utf8);</programlisting>
+ const <link linkend="char">char</link> *utf8);</programlisting>
<para>
</para><variablelist role="params">
@@ -1881,368 +2060,332 @@ they were taken into account when creating <parameter>font</parameter>.</para>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-font-reference"/>cairo_font_reference ()</title>
-<indexterm><primary>cairo_font_reference</primary></indexterm><programlisting><link linkend="void">void</link> cairo_font_reference (<link linkend="cairo-font-t">cairo_font_t</link> *font);</programlisting>
+<title><anchor id="cairo-get-operator"/>cairo_get_operator ()</title>
+<indexterm><primary>cairo_get_operator</primary></indexterm><programlisting><link linkend="cairo-operator-t">cairo_operator_t</link> cairo_get_operator (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-font-destroy"/>cairo_font_destroy ()</title>
-<indexterm><primary>cairo_font_destroy</primary></indexterm><programlisting><link linkend="void">void</link> cairo_font_destroy (<link linkend="cairo-font-t">cairo_font_t</link> *font);</programlisting>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-font-extents"/>cairo_font_extents ()</title>
-<indexterm><primary>cairo_font_extents</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_font_extents (<link linkend="cairo-font-t">cairo_font_t</link> *font,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *font_matrix,
- <link linkend="cairo-font-extents-t">cairo_font_extents_t</link> *extents);</programlisting>
-<para>
-Gets the metrics for a <link linkend="cairo-font-t"><type>cairo_font_t</type></link>.</para>
+Gets the current compositing operator for a cairo context.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-font-t"><type>cairo_font_t</type></link>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>font_matrix</parameter>&nbsp;:</term>
-<listitem><simpara> the font transformation for which this font was
- created. (See <link linkend="cairo-transform-font"><function>cairo_transform_font()</function></link>). This is needed
- properly convert the metrics from the font into user space.
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>extents</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> which to store the retrieved extents.
+<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>CAIRO_STATUS_SUCCESS</literal> on success. Otherwise, an
- error such as <literal>CAIRO_STATUS_NO_MEMORY</literal>.
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current compositing operator.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-font-glyph-extents"/>cairo_font_glyph_extents ()</title>
-<indexterm><primary>cairo_font_glyph_extents</primary></indexterm><programlisting><link linkend="void">void</link> cairo_font_glyph_extents (<link linkend="cairo-font-t">cairo_font_t</link> *font,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *font_matrix,
- <link linkend="cairo-glyph-t">cairo_glyph_t</link> *glyphs,
- <link linkend="int">int</link> num_glyphs,
- <link linkend="cairo-text-extents-t">cairo_text_extents_t</link> *extents);</programlisting>
+<title><anchor id="cairo-get-source"/>cairo_get_source ()</title>
+<indexterm><primary>cairo_get_source</primary></indexterm><programlisting><link linkend="cairo-pattern-t">cairo_pattern_t</link>* cairo_get_source (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
<para>
-<link linkend="cairo-font-glyph-extents"><function>cairo_font_glyph_extents()</function></link> gets the overall metrics for a string of
-glyphs. The X and Y offsets in <parameter>glyphs</parameter> are taken from an origin of 0,0.</para>
-<para>
-
-</para><variablelist role="params">
-<varlistentry><term><parameter>font</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-font-t"><type>cairo_font_t</type></link>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>font_matrix</parameter>&nbsp;:</term>
-<listitem><simpara> the font transformation for which this font was
- created. (See <link linkend="cairo-transform-font"><function>cairo_transform_font()</function></link>). This is needed
- properly convert the metrics from the font into user space.
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>glyphs</parameter>&nbsp;:</term>
-<listitem><simpara> an array of glyph IDs with X and Y offsets.
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>num_glyphs</parameter>&nbsp;:</term>
-<listitem><simpara> the number of glyphs in the <parameter>glyphs</parameter> array
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>extents</parameter>&nbsp;:</term>
-<listitem><simpara> a <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> which to store the retrieved extents.
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
-<refsect2>
-<title><anchor id="cairo-show-surface"/>cairo_show_surface ()</title>
-<indexterm><primary>cairo_show_surface</primary></indexterm><programlisting><link linkend="void">void</link> cairo_show_surface (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-surface-t">cairo_surface_t</link> *surface,
- <link linkend="int">int</link> width,
- <link linkend="int">int</link> height);</programlisting>
+Gets the current source pattern for <parameter>cr</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>width</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>height</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current source pattern. This object is owned by
+cairo. To keep a reference to it, you must call
+<link linkend="cairo-pattern-reference"><function>cairo_pattern_reference()</function></link>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-operator"/>cairo_current_operator ()</title>
-<indexterm><primary>cairo_current_operator</primary></indexterm><programlisting><link linkend="cairo-operator-t">cairo_operator_t</link> cairo_current_operator (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-tolerance"/>cairo_get_tolerance ()</title>
+<indexterm><primary>cairo_get_tolerance</primary></indexterm><programlisting><link linkend="double">double</link> cairo_get_tolerance (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets the current tolerance value, as set by <link linkend="cairo-set-tolerance"><function>cairo_set_tolerance()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current tolerance value.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-rgb-color"/>cairo_current_rgb_color ()</title>
-<indexterm><primary>cairo_current_rgb_color</primary></indexterm><programlisting><link linkend="void">void</link> cairo_current_rgb_color (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="double">double</link> *red,
- <link linkend="double">double</link> *green,
- <link linkend="double">double</link> *blue);</programlisting>
+<title><anchor id="cairo-get-current-point"/>cairo_get_current_point ()</title>
+<indexterm><primary>cairo_get_current_point</primary></indexterm><programlisting><link linkend="void">void</link> cairo_get_current_point (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="double">double</link> *x,
+ <link linkend="double">double</link> *y);</programlisting>
+<para>
+Gets the current point of the current path, which is
+conceptually the final point reached by the path so far.
+</para>
+<para>
+The current point is returned in the user-space coordinate
+system. If there is no defined current point then <parameter>x</parameter> and <parameter>y</parameter> will
+both be set to 0.0.
+</para>
+<para>
+Most path construction functions alter the current point. See the
+following for details on how they affect the current point:
+</para>
+<para>
+<link linkend="cairo-new-path"><function>cairo_new_path()</function></link>, <link linkend="cairo-move-to"><function>cairo_move_to()</function></link>, <link linkend="cairo-line-to"><function>cairo_line_to()</function></link>,
+<link linkend="cairo-curve-to"><function>cairo_curve_to()</function></link>, <link linkend="cairo-arc"><function>cairo_arc()</function></link>, <link linkend="cairo-rel-move-to"><function>cairo_rel_move_to()</function></link>,
+<link linkend="cairo-rel-line-to"><function>cairo_rel_line_to()</function></link>, <link linkend="cairo-rel-curve-to"><function>cairo_rel_curve_to()</function></link>, <link linkend="cairo-arc"><function>cairo_arc()</function></link>,
+<link linkend="cairo-text-path"><function>cairo_text_path()</function></link>, <link linkend="cairo-stroke-to-path"><function>cairo_stroke_to_path()</function></link></para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>red</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>green</parameter>&nbsp;:</term>
-<listitem><simpara>
+<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
+<listitem><simpara> return value for X coordinate of the current point
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>blue</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
+<listitem><simpara> return value for Y coordinate of the current point
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-pattern"/>cairo_current_pattern ()</title>
-<indexterm><primary>cairo_current_pattern</primary></indexterm><programlisting><link linkend="cairo-pattern-t">cairo_pattern_t</link>* cairo_current_pattern (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-fill-rule"/>cairo_get_fill_rule ()</title>
+<indexterm><primary>cairo_get_fill_rule</primary></indexterm><programlisting><link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link> cairo_get_fill_rule (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets the current fill rule, as set by <link linkend="cairo-set-fill-rule"><function>cairo_set_fill_rule()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current fill rule.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-alpha"/>cairo_current_alpha ()</title>
-<indexterm><primary>cairo_current_alpha</primary></indexterm><programlisting><link linkend="double">double</link> cairo_current_alpha (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-line-width"/>cairo_get_line_width ()</title>
+<indexterm><primary>cairo_get_line_width</primary></indexterm><programlisting><link linkend="double">double</link> cairo_get_line_width (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets the current line width, as set by <link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current line width, in user-space units.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-tolerance"/>cairo_current_tolerance ()</title>
-<indexterm><primary>cairo_current_tolerance</primary></indexterm><programlisting><link linkend="double">double</link> cairo_current_tolerance (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-line-cap"/>cairo_get_line_cap ()</title>
+<indexterm><primary>cairo_get_line_cap</primary></indexterm><programlisting><link linkend="cairo-line-cap-t">cairo_line_cap_t</link> cairo_get_line_cap (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets the current line cap style, as set by <link linkend="cairo-set-line-cap"><function>cairo_set_line_cap()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current line cap style.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-point"/>cairo_current_point ()</title>
-<indexterm><primary>cairo_current_point</primary></indexterm><programlisting><link linkend="void">void</link> cairo_current_point (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="double">double</link> *x,
- <link linkend="double">double</link> *y);</programlisting>
+<title><anchor id="cairo-get-line-join"/>cairo_get_line_join ()</title>
+<indexterm><primary>cairo_get_line_join</primary></indexterm><programlisting><link linkend="cairo-line-join-t">cairo_line_join_t</link> cairo_get_line_join (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets the current line join style, as set by <link linkend="cairo-set-line-join"><function>cairo_set_line_join()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>y</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current line join style.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-fill-rule"/>cairo_current_fill_rule ()</title>
-<indexterm><primary>cairo_current_fill_rule</primary></indexterm><programlisting><link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link> cairo_current_fill_rule (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-miter-limit"/>cairo_get_miter_limit ()</title>
+<indexterm><primary>cairo_get_miter_limit</primary></indexterm><programlisting><link linkend="double">double</link> cairo_get_miter_limit (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets the current miter limit, as set by <link linkend="cairo-set-miter-limit"><function>cairo_set_miter_limit()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the current miter limit.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-line-width"/>cairo_current_line_width ()</title>
-<indexterm><primary>cairo_current_line_width</primary></indexterm><programlisting><link linkend="double">double</link> cairo_current_line_width (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-matrix"/>cairo_get_matrix ()</title>
+<indexterm><primary>cairo_get_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_get_matrix (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<para>
+Stores the current transformation matrix (CTM) into <parameter>matrix</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
+<listitem><simpara> return value for the matrix
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-line-cap"/>cairo_current_line_cap ()</title>
-<indexterm><primary>cairo_current_line_cap</primary></indexterm><programlisting><link linkend="cairo-line-cap-t">cairo_line_cap_t</link> cairo_current_line_cap (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-get-target"/>cairo_get_target ()</title>
+<indexterm><primary>cairo_get_target</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_get_target (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets the target surface for the cairo context as passed to
+<link linkend="cairo-create"><function>cairo_create()</function></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the target surface, (or NULL if <parameter>cr</parameter> is in an error
+state). This object is owned by cairo. To keep a reference to it,
+you must call <link linkend="cairo-surface-reference"><function>cairo_surface_reference()</function></link>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-line-join"/>cairo_current_line_join ()</title>
-<indexterm><primary>cairo_current_line_join</primary></indexterm><programlisting><link linkend="cairo-line-join-t">cairo_line_join_t</link> cairo_current_line_join (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-copy-path"/>cairo_copy_path ()</title>
+<indexterm><primary>cairo_copy_path</primary></indexterm><programlisting><link linkend="cairo-path-t">cairo_path_t</link>* cairo_copy_path (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Creates a copy of the current path and returns it to the user as a
+<link linkend="cairo-path-t"><type>cairo_path_t</type></link>. See <link linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link> for hints on how to iterate
+over the returned data structure.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the copy of the current path. The caller owns the
+returned object and should call <link linkend="cairo-path-destroy"><function>cairo_path_destroy()</function></link> when finished
+with it.
+This function will always return a valid pointer, but the result
+will have no data, (data==NULL and num_data==0), if either of the
+following conditions hold:
+1) If there is insufficient memory to copy the path. In this case
+ path->status will be set to CAIRO_STATUS_NO_MEMORY.
+
+2) If <parameter>cr</parameter> is already in an error state. In this case path->status
+ will contain the same status that would be returned by
+ cairo_status(cr).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-miter-limit"/>cairo_current_miter_limit ()</title>
-<indexterm><primary>cairo_current_miter_limit</primary></indexterm><programlisting><link linkend="double">double</link> cairo_current_miter_limit (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-copy-path-flat"/>cairo_copy_path_flat ()</title>
+<indexterm><primary>cairo_copy_path_flat</primary></indexterm><programlisting><link linkend="cairo-path-t">cairo_path_t</link>* cairo_copy_path_flat (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<para>
+Gets a flattened copy of the current path and returns it to the
+user as a <link linkend="cairo-path-t"><type>cairo_path_t</type></link>. See <link linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link> for hints on
+how to iterate over the returned data structure.
+</para>
+<para>
+This function is like <link linkend="cairo-copy-path"><function>cairo_copy_path()</function></link> except that any curves
+in the path will be approximated with piecewise-linear
+approximations, (accurate to within the current tolerance
+value). That is, the result is guaranteed to not have any elements
+of type CAIRO_PATH_CURVE_TO which will instead be replaced by a
+series of CAIRO_PATH_LINE_TO elements.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the copy of the current path. The caller owns the
+returned object and should call <link linkend="cairo-path-destroy"><function>cairo_path_destroy()</function></link> when finished
+with it.
+This function will always return a valid pointer, but the result
+will have no data, (data==NULL and num_data==0), if either of the
+following conditions hold:
+1) If there is insufficient memory to copy the path. In this case
+ path->status will be set to CAIRO_STATUS_NO_MEMORY.
+
+2) If <parameter>cr</parameter> is already in an error state. In this case path->status
+ will contain the same status that would be returned by
+ cairo_status(cr).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-matrix"/>cairo_current_matrix ()</title>
-<indexterm><primary>cairo_current_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cairo_current_matrix (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-matrix-t">cairo_matrix_t</link> *matrix);</programlisting>
+<title><anchor id="cairo-append-path"/>cairo_append_path ()</title>
+<indexterm><primary>cairo_append_path</primary></indexterm><programlisting><link linkend="void">void</link> cairo_append_path (<link linkend="cairo-t">cairo_t</link> *cr,
+ <link linkend="cairo-path-t">cairo_path_t</link> *path);</programlisting>
+<para>
+Append the <parameter>path</parameter> onto the current path. The <parameter>path</parameter> may be either the
+return value from one of <link linkend="cairo-copy-path"><function>cairo_copy_path()</function></link> or
+<link linkend="cairo-copy-path-flat"><function>cairo_copy_path_flat()</function></link> or it may be constructed manually. See
+<link linkend="cairo-path-t"><type>cairo_path_t</type></link> for details on how the path data structure should be
+initialized, and note that path->status must be initialized to
+CAIRO_STATUS_SUCCESS.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
+<listitem><simpara> a cairo context
</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>matrix</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<varlistentry><term><parameter>path</parameter>&nbsp;:</term>
+<listitem><simpara> path to be appended
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-current-target-surface"/>cairo_current_target_surface ()</title>
-<indexterm><primary>cairo_current_target_surface</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_current_target_surface
- (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-path-data-type-t"/>enum cairo_path_data_type_t</title>
+<indexterm><primary>cairo_path_data_type_t</primary></indexterm><programlisting>typedef enum cairo_path_data_type {
+ CAIRO_PATH_MOVE_TO,
+ CAIRO_PATH_LINE_TO,
+ CAIRO_PATH_CURVE_TO,
+ CAIRO_PATH_CLOSE_PATH
+} cairo_path_data_type_t;
+</programlisting>
<para>
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
+</para></refsect2>
<refsect2>
-<title><anchor id="cairo-current-path"/>cairo_current_path ()</title>
-<indexterm><primary>cairo_current_path</primary></indexterm><programlisting><link linkend="void">void</link> cairo_current_path (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-move-to-func-t">cairo_move_to_func_t</link> *move_to,
- <link linkend="cairo-line-to-func-t">cairo_line_to_func_t</link> *line_to,
- <link linkend="cairo-curve-to-func-t">cairo_curve_to_func_t</link> *curve_to,
- <link linkend="cairo-close-path-func-t">cairo_close_path_func_t</link> *close_path,
- <link linkend="void">void</link> *closure);</programlisting>
+<title><anchor id="cairo-path-t"/>cairo_path_t</title>
+<indexterm><primary>cairo_path_t</primary></indexterm><programlisting>typedef struct {
+ cairo_status_t status;
+ cairo_path_data_t *data;
+ int num_data;
+} cairo_path_t;
+</programlisting>
+<para>
+A data structure for holding a path. This data structure serves as
+the return value for <link linkend="cairo-copy-path-data"><function>cairo_copy_path_data()</function></link> and
+<link linkend="cairo-copy-path-data-flat"><function>cairo_copy_path_data_flat()</function></link> as well the input value for
+<link linkend="cairo-append-path"><function>cairo_append_path()</function></link>.
+</para>
+<para>
+See <link linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link> for hints on how to iterate over the
+actual data within the path.
+</para>
+<para>
+The num_data member gives the number of elements in the data
+array. This number is larger than the number of independent path
+portions (MOVE_TO, LINE_TO, CURVE_TO, CLOSE_PATH), since the data
+includes both headers and coordinates for each portion.</para>
<para>
-</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>move_to</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>line_to</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>curve_to</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>close_path</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
-</simpara></listitem></varlistentry>
-</variablelist></refsect2>
+</para></refsect2>
<refsect2>
-<title><anchor id="cairo-current-path-flat"/>cairo_current_path_flat ()</title>
-<indexterm><primary>cairo_current_path_flat</primary></indexterm><programlisting><link linkend="void">void</link> cairo_current_path_flat (<link linkend="cairo-t">cairo_t</link> *cr,
- <link linkend="cairo-move-to-func-t">cairo_move_to_func_t</link> *move_to,
- <link linkend="cairo-line-to-func-t">cairo_line_to_func_t</link> *line_to,
- <link linkend="cairo-close-path-func-t">cairo_close_path_func_t</link> *close_path,
- <link linkend="void">void</link> *closure);</programlisting>
+<title><anchor id="cairo-path-destroy"/>cairo_path_destroy ()</title>
+<indexterm><primary>cairo_path_destroy</primary></indexterm><programlisting><link linkend="void">void</link> cairo_path_destroy (<link linkend="cairo-path-t">cairo_path_t</link> *path);</programlisting>
+<para>
+Immediately releases all memory associated with <parameter>path</parameter>. After a call
+to <link linkend="cairo-path-destroy"><function>cairo_path_destroy()</function></link> the <parameter>path</parameter> pointer is no longer valid and
+should not be used further.
+</para>
+<para>
+NOTE: cairo_path_destroy function should only be called with a
+pointer to a <link linkend="cairo-path-t"><type>cairo_path_t</type></link> returned by a cairo function. Any path
+that is created manually (ie. outside of cairo) should be destroyed
+manually as well.</para>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>move_to</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>line_to</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>close_path</parameter>&nbsp;:</term>
-<listitem><simpara>
-</simpara></listitem></varlistentry>
-<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
-<listitem><simpara>
-
-
+<varlistentry><term><parameter>path</parameter>&nbsp;:</term>
+<listitem><simpara> a path to destroy which was previously returned by either
+cairo_copy_path or cairo_copy_path_flat.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
@@ -2256,12 +2399,100 @@ glyphs. The X and Y offsets in <parameter>glyphs</parameter> are taken from an o
CAIRO_STATUS_INVALID_MATRIX,
CAIRO_STATUS_NO_TARGET_SURFACE,
CAIRO_STATUS_NULL_POINTER,
- CAIRO_STATUS_INVALID_STRING
+ CAIRO_STATUS_INVALID_STRING,
+ CAIRO_STATUS_INVALID_PATH_DATA,
+ CAIRO_STATUS_READ_ERROR,
+ CAIRO_STATUS_WRITE_ERROR,
+ CAIRO_STATUS_SURFACE_FINISHED,
+ CAIRO_STATUS_SURFACE_TYPE_MISMATCH,
+ CAIRO_STATUS_PATTERN_TYPE_MISMATCH
} cairo_status_t;
</programlisting>
<para>
+<link linkend="cairo-status-t"><type>cairo_status_t</type></link> is used to indicate errors that can occur when
+using Cairo. In some cases it is returned directly by functions.
+but when using <link linkend="cairo-t"><type>cairo_t</type></link>, the last error, if any, is stored in
+the context and can be retrieved with <link linkend="cairo-status"><function>cairo_status()</function></link>.</para>
+<para>
-</para></refsect2>
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>CAIRO_STATUS_SUCCESS</literal></term>
+<listitem><simpara> no error has occurred
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_NO_MEMORY</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_INVALID_RESTORE</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_INVALID_POP_GROUP</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_NO_CURRENT_POINT</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_INVALID_MATRIX</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_NO_TARGET_SURFACE</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_NULL_POINTER</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_INVALID_STRING</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_INVALID_PATH_DATA</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_READ_ERROR</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_WRITE_ERROR</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_SURFACE_FINISHED</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_SURFACE_TYPE_MISMATCH</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></term>
+<listitem><simpara>
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
<refsect2>
<title><anchor id="cairo-status"/>cairo_status ()</title>
<indexterm><primary>cairo_status</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> cairo_status (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
@@ -2277,12 +2508,19 @@ glyphs. The X and Y offsets in <parameter>glyphs</parameter> are taken from an o
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
-<title><anchor id="cairo-status-string"/>cairo_status_string ()</title>
-<indexterm><primary>cairo_status_string</primary></indexterm><programlisting>const <link linkend="char">char</link>* cairo_status_string (<link linkend="cairo-t">cairo_t</link> *cr);</programlisting>
+<title><anchor id="cairo-status-string"/>cairo_status_string</title>
+<indexterm><primary>cairo_status_string</primary></indexterm><programlisting>#define cairo_status_string cairo_status_string_DEPRECATED_BY_cairo_status_AND_cairo_status_to_string
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="cairo-status-to-string"/>cairo_status_to_string ()</title>
+<indexterm><primary>cairo_status_to_string</primary></indexterm><programlisting>const <link linkend="char">char</link>* cairo_status_to_string (<link linkend="cairo-status-t">cairo_status_t</link> status);</programlisting>
<para>
</para><variablelist role="params">
-<varlistentry><term><parameter>cr</parameter>&nbsp;:</term>
+<varlistentry><term><parameter>status</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
@@ -2333,7 +2571,7 @@ must explicitely clear the buffer, using, for example,
<refsect2>
<title><anchor id="cairo-image-surface-create-for-data"/>cairo_image_surface_create_for_data ()</title>
<indexterm><primary>cairo_image_surface_create_for_data</primary></indexterm><programlisting><link linkend="cairo-surface-t">cairo_surface_t</link>* cairo_image_surface_create_for_data
- (<link linkend="char">char</link> *data,
+ (unsigned <link linkend="char">char</link> *data,
<link linkend="cairo-format-t">cairo_format_t</link> format,
<link linkend="int">int</link> width,
<link linkend="int">int</link> height,
@@ -2371,6 +2609,125 @@ must explicitely clear the buffer, using, for example,
be created because of lack of memory
</simpara></listitem></varlistentry>
</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-image-surface-get-width"/>cairo_image_surface_get_width ()</title>
+<indexterm><primary>cairo_image_surface_get_width</primary></indexterm><programlisting><link linkend="int">int</link> cairo_image_surface_get_width (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);</programlisting>
+<para>
+Get the width of the image surface in pixels.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-image-surface-t"><type>cairo_image_surface_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the width of the surface in pixels.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-image-surface-get-height"/>cairo_image_surface_get_height ()</title>
+<indexterm><primary>cairo_image_surface_get_height</primary></indexterm><programlisting><link linkend="int">int</link> cairo_image_surface_get_height (<link linkend="cairo-surface-t">cairo_surface_t</link> *surface);</programlisting>
+<para>
+Get the height of the image surface in pixels.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>surface</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="cairo-image-surface-t"><type>cairo_image_surface_t</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the height of the surface in pixels.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-destroy-func-t"/>cairo_destroy_func_t ()</title>
+<indexterm><primary>cairo_destroy_func_t</primary></indexterm><programlisting><link linkend="void">void</link> (*cairo_destroy_func_t) (<link linkend="void">void</link> *data);</programlisting>
+<para>
+<link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> the type of function which is called when a
+data element is destroyed. It is passed the pointer to the data
+element and should free any memory and resources allocated for it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-user-data-key-t"/>cairo_user_data_key_t</title>
+<indexterm><primary>cairo_user_data_key_t</primary></indexterm><programlisting>typedef struct {
+ int unused;
+} cairo_user_data_key_t;
+</programlisting>
+<para>
+<link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> is used for attaching user data to cairo
+data structures. The actual contents of the struct is never used,
+and there is no need to initialize the object; only the unique
+address of a <link linkend="cairo-data-key-t"><type>cairo_data_key_t</type></link> object is used. Typically, you
+would just use the address of a static <link linkend="cairo-data-key-t"><type>cairo_data_key_t</type></link> object.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="cairo-read-func-t"/>cairo_read_func_t ()</title>
+<indexterm><primary>cairo_read_func_t</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> (*cairo_read_func_t) (<link linkend="void">void</link> *closure,
+ unsigned <link linkend="char">char</link> *data,
+ unsigned <link linkend="int">int</link> length);</programlisting>
+<para>
+<link linkend="cairo-read-func-t"><type>cairo_read_func_t</type></link> is the type of function which is called when a
+backend needs to read data from an intput stream. It is passed the
+closure which was specified by the user at the time the read
+function was registered, the buffer to read the data into and the
+length of the data in bytes. The read function should return
+CAIRO_STATUS_SUCCESS if all the data was successfully written,
+CAIRO_STATUS_READ_ERROR otherwise.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>length</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="cairo-write-func-t"/>cairo_write_func_t ()</title>
+<indexterm><primary>cairo_write_func_t</primary></indexterm><programlisting><link linkend="cairo-status-t">cairo_status_t</link> (*cairo_write_func_t) (<link linkend="void">void</link> *closure,
+ unsigned <link linkend="char">char</link> *data,
+ unsigned <link linkend="int">int</link> length);</programlisting>
+<para>
+<link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> is the type of function which is called when a
+backend needs to write data to an output stream. It is passed the
+closure which was specified by the user at the time the write
+function was registered, the data to write and the length of the
+data in bytes. The write function should return
+CAIRO_STATUS_SUCCESS if all the data was successfully written,
+CAIRO_STATUS_WRITE_ERROR otherwise.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>closure</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>length</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
</refsect1>